Hey Leute,
ich möchte, wenn ich /bomb eingebe, dass jeder Spieler in der Nähe die Nachricht "%s platziert eine Bombe!" erhält. (%s = name).
Wie kann ich es machen, dass nur Spieler in der Nähe (z.B. 5 Metern) diese Nachricht lesen können? :O
Hey Leute,
ich möchte, wenn ich /bomb eingebe, dass jeder Spieler in der Nähe die Nachricht "%s platziert eine Bombe!" erhält. (%s = name).
Wie kann ich es machen, dass nur Spieler in der Nähe (z.B. 5 Metern) diese Nachricht lesen können? :O
also du möchtest eine Nachricht an alle Spieler in der näche eines anderen Spielers senden?
new Float:x, Float:y, Float:z; // Fließkommavariablen definieren
GetPlayerPos(playerid, x, y, z); // Position des Jenigen in diesen Variablen speichern, der den Befehl ausführt
for(new i=0; i<MAX_PLAYERS; i++){ //Schleife, welche in der Anzahl aller möglichen Spieler durchläuft
if(IsPlayerInRangeOfPoint(playerid, 5, x, y, z)){ //Abfragen, ob der Spieler mit der ID, die gerade von der Schleife durchlaufen wird, in der Nähe des Spielers playerid befindet
//Nachricht an i senden
}
}
also du möchtest eine Nachricht an alle Spieler in der näche eines anderen Spielers senden?
Ja genau!
Sprich der Spieler X gibt dem Befehl /bomb ein und Spieler Y steht neben Spieler X und sieht deswegen auch im Chat, dass Spieler X eine Bombee platziert.
Spieler Z hingegen befindet sich ganz wo anders und bekommt daher nicht mit, dass Spieler X eine Bombe platziert!
new i; Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(; i < MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i)) continue;
if(IsPlayerInRangeOfPoint(i,RANGE,Pos[0],Pos[1],Pos[2])) SendClientMessage(i,-1,"Text");
}
Ja genau!
Siehe mein Post zuvor.
stock SendMessageNearPlayer(playerid,Float:range,color, string[])
{
Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i,range,Pos[0],Pos[1],Pos[2]))
{
SendClientMessage(i, color, string);
}
}
return 1;
}
nutzbar mit SendMessageNearPlayer(playerid,15.0,COLOR_BLUE,string);
Dankeschön Leute!
Ich habe jetzt den stock von [DT]Sniper genommen und ansich funktioniert auch alles.
Sobald ich aber den Stock benutze, kommen folgende Fehler :
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5032) : warning 221: label name "Float" shadows tag name
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5032) : error 017: undefined symbol "Pos"
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5032) : warning 215: expression has no effect
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5032) : error 001: expected token: ";", but found "]"
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5032) : error 029: invalid expression, assumed zero
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5032) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Die Zeilen:
stock SendMessageNearPlayer(playerid,Float:range,color, string[])
{
Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i,range,Pos[0],Pos[1],Pos[2]))
{
SendClientMessage(i, color, string);
}
}
return 1;
}
Wenn ich komischerweise den stock nicht Benutze (sprich SendMessageNearPlayer auskommentiere) kommen keine Fehler, keine Warnings und alles läuft! :o
new Float:Pos[3];
So ist es korrekt, sie wurde ja noch nicht definiert.
//E:
ZitatWenn ich komischerweise den stock nicht Benutze (sprich SendMessageNearPlayer auskommentiere) kommen keine Fehler,
Das ist nicht komisch, sondern normal, denn es gibt keine "Stocks", sondern nur Funktionen. Das Keyword "Stock" definiert nur, dass die Funktion nicht vom Compiler beachtet wird, wenn sie nie aufgerufen wird. Ergo: Es erscheinen keine Errors.
Nun kommen folgende Errors
Fehler:
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5033) : warning 221: label name "Float" shadows tag name
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5033) : error 032: array index out of bounds (variable "Pos")
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5033) : warning 215: expression has no effect
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5033) : warning 203: symbol is never used: "Float"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Der komplette Stock:
stock SendMessageNearPlayer(playerid,Float:range,color, string[])
{
new Float:Pos[3];
Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i,range,Pos[0],Pos[1],Pos[2]))
{
SendClientMessage(i, color, string);
}
}
return 1;
}
Mit dem benutzen meinte ich das hier:
...
SendMessageNearPlayer(playerid,15.0,COLOR_PURPLE,string2);
...
Du solltest den Code von mir nicht einfach einfügen, sondern mit der Zeile
Float:pos[3]; ersetzen. :X
Du solltest den Code von mir nicht einfach einfügen, sondern mit der Zeile
Float:pos[3]; ersetzen. :X
Nun habe ich 1 Error & 1 Warning:
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5040) : error 036: empty statement
D:\Domi\Spiele\GTA San Andreas\Domi Server\gamemodes\own.pwn(5041) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Der Stock:
stock SendMessageNearPlayer(playerid,Float:range,color, string[])
{;
new Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i,range,Pos[0],Pos[1],Pos[2]))
{
SendClientMessage(i, color, string);
}
}
return 1;
}
stock SendMessageNearPlayer(playerid,Float:range,color, string[])
{;
Semikolon weg @DieChickenfighter:
Finde den Fehler.
stock SendMessageNearPlayer(playerid,Float:range,color, string[])
{; // Das ; hier entfernen ^^
new Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i,range,Pos[0],Pos[1],Pos[2]))
{
SendClientMessage(i, color, string);
}
}
return 1;
}
Vielen Dank!!!
Vor allem @Mr.Rreese, weil er sich mit meiner menschlichen Blödheit auseinander gesetzt hat
Es klappt jetzt alles !