hey leute,
weis nicht genau wie ich es bennenen sollte und habe es dan einfahc mal so benannt.
Undzwa Frage ich mich, wie man es machen kann, das wen ein spieler ein bestimmtes area verlässt das ihm iwas passiert oder er eine nachricht bekommt
Frage zu Area
- Fiedel
- 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
-
-
PlayerInZone(playerid,Float:maxX,Float:minX,Float:maxY,Float:minY)
{
new Float:jx,Float:jy,Float:jz;
GetPlayerPos(playerid,jx,jy,jz);
if(jx < maxX && jx > minX && jy < maxY && jy > minY){return true;}else{return false;}
}Dann per Timer:
forward myclass();
public myclass()
{
if(PlayerInZone(playerid,Float:maxX,Float:minX,Float:maxY,Float:minY))
{
// aktion
}
return 1;
} -
ich versteh das garnicht was du da meindest.
Der 2te timmer wird doch nirgenzwo befragt oder so..
und bei dem ersten passiert garnichts..
ich wil nur das wen du z.b im puff bist das da steht du bist im puff.. und das wen du da weg gehst da steht du hast den ka verrlassen -
Meinste jetzt wenn der Spieler in einem Interior ist ? also in einem Bestimmten Raum
-
ne sonst hätte ich es ja bei dem porter mit beimachen können oder so.
einfach wen er an einem punkt ist... oder er ihn verläst etwas passiert -
PlayerToPoint ?
forward PlayerToPoint(Float:radi, playerid, Float:xs, Float:ys, Float:zs);
public PlayerToPoint(Float:radi, playerid, Float:xs, Float:ys, Float:zs)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -xs);
tempposy = (oldposy -ys);
tempposz = (oldposz -zs);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}Bei OnGameModeInit:
SetTimer("ptpclass",1000,1);
new send[MAX_PLAYERS];
forward ptpclass();
public ptpclass()
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(PlayerToPoint(Radius,playerid,x,y,z))
{
if(send[playerid] == 0)
{
send[playerid] = 1;
SendClientMessage(playerid,Farbe,"Du bist iwo.");
}
}
else
{
send[playerid] = 0;
}
}
} -
und wo steht wass passieren soll wen er den punkt verlässt ?
-
new send[MAX_PLAYERS];
new verlassen[MAX_PLAYERS];
forward ptpclass();public ptpclass()
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(PlayerToPoint(Radius,playerid,x,y,z))
{
if(send[playerid] == 0)
{
send[playerid] = 1;
SendClientMessage(playerid,Farbe,"Du bist iwo.");
verlassen[playerid] = 0;
}
}
else
{
send[playerid] = 0;
if(verlassen[playerid] == 0)
{
SendClientMessage(playerid,farbe,"verlassen");
verlassen[playerid] = 1;
}
}
}
} -
er hat mir immer gesagt undefine symbol playerid.. dan habe ich es so gemacht.
public ptpclass()
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(PlayerToPoint(20.0,i,311.4324,-9.3529,26.7422))
{
if(send[i] == 0)
{
send[i] = 1;
SendClientMessage(i,COLOR_ORANGE,"Du bist in der bank.");
verlassen[i] = 0;
}
}
else
{
send[i] = 0;
if(verlassen[i] == 0)
{
SendClientMessage(i,COLOR_ORANGE,"Du hast die Bank Verlassen");
verlassen[i] = 1;
}
}
}
}aber leider passiert nichts
-
bitte helfen es geht nit
-
Ich habe es mal so aufgebaut , wie du es in ICQ wolltest
Für alle die die Lösung haben wollen,
Fiedel hat die 2te Methode genommen!Erste Methode:
Ganz unten im Script!
stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
{
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
else return 0;
}bei OnPlayerDeath:
if(IsPlayerInArea(playerid,Die Cordinaten von Der Zone))
{
// Nichts Passiert
}
else // wenn er aus der zone rausgeht
{
// das was passieren soll
}Hier eine Zweite Methode mit PlayerToPoint:
Bei OnPlayerDeath: & Exit:
if (PlayerToPoint(20.0, playerid,2305.6890,-16.0881,26.7496))
{
if(ausrauben == 1)
{
new s[100];//, name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
ausrauben = 0;
format(s,sizeof(s),"%s wurde GETÖTET. Der Bankraub ist fehlgeschlagen!!!",name);
SendClientMessageToAll(COLOR_LIGHTBLUE,s);
}
} -
die lösung hast du halb von mir :P... habs ja dan hinbekommen und dir geschickt..
habe es bei /exit mit playertopoint gemacht und bei onplayerdeath genauso -
Fat_Joe du alter Stealer O_o (scherz)
Nice Dickerchen :> -
breadfish.de
Hat das Thema geschlossen.