Hallo,
ist es momentan möglich (0.3e) abzufragen ob der Spieler sich in der Nähe eines gemappten Objektes befindet?
Beispiel:
Spieler X steht 5 Felder neben dem Tor und er wird gekickt.
Hallo,
ist es momentan möglich (0.3e) abzufragen ob der Spieler sich in der Nähe eines gemappten Objektes befindet?
Beispiel:
Spieler X steht 5 Felder neben dem Tor und er wird gekickt.
geht das nich mit dem IsPlayerInRangeOfObject oder wie das hei0t also dann die koordinaten des objectes nehmen ?
IsPlayerInRangeOfPoint abfragen wenn er an den Tor is lässt du ihn kicken
Angelo, ich möchte es möglich automatisch haben.
Also nicht jedes Objekt einzelnd als Zone makieren.
Zitat
geht das nich mit dem IsPlayerInRangeOfObject oder wie das hei0t also dann die koordinaten des objectes nehmen ?
Das hört sich schon besser an.
Im Wiki finde ich denn aber nicht.
GetObjectPos
IsPlayerInRangeOfPoint(Objektkoordinaten)
stock IsPlayerInRangeOfObject(playerid, objectid, Float:range)
{
if(IsObjectConnected(objectid))
{
new Float:x1, Float:y1, Float:z1;
GetObjectPos(objectid, x1, y1, z1);
return IsPlayerInSphere(playerid,x1,y1,z1,range);
}
return false;
}
Hab bisschen gesucht das ist dabei herausgekommen keine Ahnung ob du damit was anfangen kannst
Wie egsagt ich will nicht jeden Zaun einzelnd einfügen.
Dann musst du das Object Definieren
das sähe z.B. so aus
stock IsPlayerInRangeOfObject(playerid,Float:range,objectid)
{
new Float:Object_Pos[3],Float:Player_Pos[3];
GetPlayerPos(playerid,Player_Pos[0],Player_Pos[1],Player_Pos[2]);
GetObjectPos(objectid,Object_Pos[0],Object_Pos[1],Object_Pos[2]);
Player_Pos[0] -= Object_Pos[0];
Player_Pos[1] -= Object_Pos[1];
Player_Pos[2] -= Object_Pos[2];
return ((Player_Pos[0] * Player_Pos[0]) + (Player_Pos[1] * Player_Pos[1]) + (Player_Pos[2] * Player_Pos[2])) < (range * range);
}
MfG NicoAiko
Genau das will ich ja nicht
Ich meine mehr das sobald der Spieler neben diesem Objekt steht (Mehr als 50x auf der Map) soll eine Aktion ausgeführt werden.
Das gleiche was ich vorher geschrieben habe nur das du diese Object id von jeweiligen Object Definierst
// Und jedes Mal wenn er vor diesem Object mit der Definierten ID ist wird er Gekickt
Hab das in Google gefunden
IsPlayerInRangeOfObject(playerid, objectid, Float:range)
{
if(IsObjectConnected(objectid))
{
new Float:x1, Float:y1, Float:z1;
GetObjectPos(objectid, x1, y1, z1);
return IsPlayerInSphere(playerid,x1,y1,z1,range);
}
return false;
}
public OnPlayerUpdate(playerid)
{
if(IsPlayerInRangeOfASpecialObject(playerid)) { //Aktion }
return 0; //WICHTIG ist das du 0 RETURNST!!!
}
Oder mach nen Timer
Du könntest IsPlayerInArea nutzen,
dann musst du nicht jedes Objekt nehmen, sondern hast einen kompletten bereich
Na und?
Du brauchst doch nur 2 kordinaten oben recht und unten links
vllt. sowas in der art?
new zaun[55];
public checkzauntimer()
{
for(new i=0;i<MAX_PLAYERS;i++)
{if(!IsPlayerConnected(playerid))continue;
for(new z=0;z < 55;z++)
{
new Float:x, Float:y, Float:z;
GetObjectPos(z, x, y, z);
if(IsPlayerInRangeOfPoint(i, 5.0, x,y,z)) Kick(i);
}
}
return 1;
}