Heyho ,
ich möchte ein Gang Zonen System erstellen.
Ich möchte unter dem public OnPlayerDeath(playerid, killerid, reason)
abfragen ob ein Spieler zwischen der Position X.Y, X.Y gestorben ist, wie mache ich das denn?
Liebe Grüße David
Heyho ,
ich möchte ein Gang Zonen System erstellen.
Ich möchte unter dem public OnPlayerDeath(playerid, killerid, reason)
abfragen ob ein Spieler zwischen der Position X.Y, X.Y gestorben ist, wie mache ich das denn?
Liebe Grüße David
Reicht das, wenn das ein Umkreis von paar Metern ist, oder soll das eine bestimmte Zone sein?
Bei einem Umkreis von paar Metern kannst du das nehmen:
[wiki]IsPlayerInRangeOfPoint[/wiki]
Ansonsten, wenn das in eine bestimmte Zone sein soll, dann diese Funktion:
Danke für die Antwort Marvin.
Der Umkreis reicht nicht aus, es soll für ein Gang Zonen System sein mit einnehmbaren Zonen.
Danke für den Code, wie und wo Füge ich meine Koordinaten hin, ein Beispiel wäre nett.
Die Signatur deiner ersten "IsPlayerInArea" Funktion akzeptiert als Parameter MinX, MinY, MaxX und MaxY gibst beim zweiten Beispiel aber auch die Z-Koordinate an.
Danke, hatte selber mal eine andere Funktion mit der ich das auch nach oben hin machen konnte ^^. Hab es ausgebessert!
Ich habe es mal so versucht doch ich bekomme Fehler,
IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186);
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
{
SendClientMessage(playerid,BLAU,"tot?");
return 1;
}
return 0;
}
Die Errors sind:
(3122) : error 017: undefined symbol "IsPlayerInArea"
(3126) : error 017: undefined symbol "MinX"
(3226) : warning 225: unreachable code
2 Errors. 1 Warning
Beispielsweise :
public IsPlayerInArea.....
// Fail
Willst du das in nen Befehl einbauen?
Ich möchte es bei
public OnPlayerDeath(playerid, killerid, reason)
einbauen, es ist für ein gangwar script.
So kannst du das auch nicht verwenden! Das hier:
stock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
return 1;
}
return 0;
}
kopierst du und fügst du ganz unten in dein Script ein. Verwenden tust du es Beispielsweise so:
Es klappt alles einwandfrei
Danke an _Marvin und an Simon2202 und an alle anderen die versucht haben mir zu helfen
Liebe Grüße David
Alles anzeigenIch habe es mal so versucht doch ich bekomme Fehler,
IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186);{new Float:X, Float:Y, Float:Z;GetPlayerPos(playerid, X, Y, Z);if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY){SendClientMessage(playerid,BLAU,"tot?");return 1;}return 0;}
Die Errors sind:
(3122) : error 017: undefined symbol "IsPlayerInArea"
(3126) : error 017: undefined symbol "MinX"
(3226) : warning 225: unreachable code
2 Errors. 1 Warning
Nur zur Klärung damit du es demnächst besser machst:
IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186);
muss zu
IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186)
Ebenfalls nur zur Erklärung:
IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186)
Das ist so nicht richtig, weil minY (-1446.6949) nicht kleiner ist als maxY (-1732.3186).
-1732.3186 ist kleiner als -1446.6949 und somit sind die Werte vertauscht.
-1€ sind mehr (größer) als -50€, macht es vllt verständlicher.
Das habe ich im nachhinein verstanden, minX, minY, maxX, maxY
trotzdem danke nochmal
gibt es fertige konverter die mir das automatisch konvertieren können?
Ansonsten mache ich es per hand