Wie kann ich abfragen ob er nach 5 minuten immer noch die positions hat die er vor 5 Minuten auch hatte ?
Wie kann ich abfragen ob er nach 5 minuten immer noch die positions hat ?
- funy888
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Position abfragen, die Koords speichern, nach 5 Minuten nochmal die Position abfragen und die aktuellen mit den vorherigen Werten vergleichen.
Sind sie gleich hat er sich nicht bewegt.
-
allso so oder wie ?
new Float:x, Float:y, Float:z, Float:x1, Float:y1, Float:z1;
GetPlayerPos(playerid,x,y,z);
if(x==x1)
{
if(y==y2)
{
if(z==z2)
{
...........
}
}
} -
Oder einfach
IsPlayerInRangeOfPoint(...);
verwenden und den Radius kleinstellen -
GetPlayerPos(playerid, x,y,z);
IsPlayerInRangeOfPoint(playerid, 0.1,x,y,z);
So dann ? -
if(IsPlayerInRangeOfPoint(playerid, 5 ,x,y,z)
{
//sachen
} -
okay ich versuch es mal
-
Ich würde es anders machen,
außerdem musst du die Positionen für jeden spieler individuell speichern, mit normalen Variabeln kommste da nicht weit.
//Edit
Zeit im Timer stimmt nicht
So, korrigiert
//Ich nehm hier beispielsweise einen
// Timer der alle spieler druchgeht
//-------------------------------------
//Unter OnGameModeInit
SetTimer("PositionCheck",300000,1);
//
forward PositionCheck();
public PositionCheck()
{
new Float:x,Float:y,Float:z;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GetPVarInt(i,"PosCheck") == 0)//Ist es anfangs
{
GetPlayerPos(i,x,y,z);
SetPVarFloat(i,"XPos",x);
SetPVarFloat(i,"YPos",y);
SetPVarFloat(i,"ZPos",z);
SetPVarInt(i,"PosCheck",1);
}
else //Wenn es alles andere ist, also auch z.B. 1
{
SetPVarInt(i,"PosCheck",0);
//in den PVars stehen die von vor 5 minunten
if(IsPlayerInRangeOfPoint(i,1.0,GetPVarFloat(i,"XPos"),GetPVarFloat(i,"YPos"),GetPVarFloat(i,"ZPos")))
{
//was passieren soll
}
}
}
}
return 1;
} -
Kleiner Fehler du nimmst i als playerid aber nimmst trotzdem playerid.
-
Jo habs auch gerade gemerkt, hatte es ausm Kopf gechrieben
//Edit
Mensch da war so einiges falsch, hätte es doch erst kompilieren sollen xD -
breadfish.de
Hat das Thema geschlossen.