hey,
ich wollte mal fragen wie man es machen kann, das wenn ein spieler an position xyz steht, das er einen gametext bekommet.
also ich möchte gerne wissen wo man das reinscripten muss
hey,
ich wollte mal fragen wie man es machen kann, das wenn ein spieler an position xyz steht, das er einen gametext bekommet.
also ich möchte gerne wissen wo man das reinscripten muss
Hmm.. setz am besten einen Timer.
Machs z.B. so:
new timer;
public OnGameModeInit()
{
SetTimer("timer",1000,1);
//...
return 1;
}
public timer()
{
for(new playerid; playerid<GetMaxPlayers(); playerid++)
{
if(IsPlayerConnected(playerid))
{
if(IsPlayerInRangeOfPoint(...);
{
//... GameText
}
}
}
return 1;
}
@FireFan
Wieso nen Timer ?
Er kann doch auch nur mit if(IsPlayerInRangeOfPoint(playerid,X,Y,Z); und dann Gametext (KP)
machen oder nicht ? ist doch leichter als mit Timer
mhm... krieg ein warning:
bei
Zitatfor(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
heir das warning:
Zitat
C:\Users\Marco\Desktop\ Server\gamemodes\Server.pwn(2441) : warning 219: local variable "playerid" shadows a variable at a preceding level
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Warning.
Tausch < playerid > gegen < i > aus
Und das mit dem Timer stimmt schon.
mhm... klappt nicht der text erscheint gar nicht... habs genau so gemacht
Hm ich habs auch nach dem Prinzip gemacht, aber es funktioniert.
Achte darauf das der Timer sich wiederholt, aber wenn du es von Firefan rauskopiert hast sollte es ja funktionieren.
Dann schick bite nochmal alles was du im public timer hast.
Also Entweder als Pickup (schont deine Ressource) oder
mit nem Timer und dann:
public timer()
{
for(new i;i<MAX_PLAYERS;++)
{
if(IsPlayerInRangeOfPoint(playerid,X,Y,Z) return GameTextForPlayer(playerid, "Blubb", 3000, 1);
}
}
Alles anzeigenAlso Entweder als Pickup (schont deine Ressource) oder
mit nem Timer und dann:
public timer()
{
for(new i;i<MAX_PLAYERS;++)
{
if(IsPlayerInRangeOfPoint(playerid,X,Y,Z) return GameTextForPlayer(playerid, "Blubb", 3000, 1);
}
}
Nein, stadt playerid muss es i sein. Aber so sollte es hinhaun.
Alles anzeigen[quote='Killer_Kater','index.php?page=Thread&postID=693259#post693259']Also Entweder als Pickup (schont deine Ressource) oder
mit nem Timer und dann:
public timer()
{
for(new i;i<MAX_PLAYERS;++)
{
if(IsPlayerInRangeOfPoint(playerid,X,Y,Z) return GameTextForPlayer(playerid, "Blubb", 3000, 1);
}
}
ja klar, ich vergas
also richtig is so:
public timer()
{
for(new i;i<MAX_PLAYERS;++)
{
if(IsPlayerInRangeOfPoint(i,X,Y,Z) return GameTextForPlayer(playerid, "Blubb", 3000, 1);
}
}
Wobeiich es Trotzdem wärmstens Empfehle es über OnplayerPickup zu machen...
Ja, OnPlayerPickup wird aber wie der Name schon sagt nur aufgerufen, wenn das Pickup da ist.
So wird auch noch ein Pickup benötigt.
Kannst du sehen wie du willst. Nur ist der Timer immer noch Resourcenschonender als OnPlayerUpdate
ja aber wie gesagt
am Besten ist OnPlayerPickup weil selbst wenn du ein Pickup erstellen must, beim timer wird jede sekunde jeder spieler gechekt ob er da steht -.- bei 50spielern is da dann pickup schneller und sparsamer...
und onplayerupdate verwendet eh keiner des is der größte fail dens gibt...
alsi von der reihenfolge der sparsamkeit also der ressourcen nutzung;
1:OnPlayerPickupPickup
2:Timer(bei vielen usern schlecht)
3:OnPlayerUpdate(vergiss es!)
mfg
wie müsste das den unter onplayerpickup aussehen?
//edit: geht nicht... der gametext wird nicht angezeigt... habs so:
Zitatpublic dutytext(playerid)
{
if(IsPlayerInRangeOfPoint(playerid,25, 197.2105,168.9738,1003.0234))return GameTextForPlayer(playerid, "~b~/duty", 3000, 1);
return 1;
}
LG
so
if(IsPlayerInRangeOfPoint(playerid,Range, x,y,z))
{
GameTextForPlayer(playerid, "/duty", 5000, 4);
}
oder unter OnPlayerPickUpPickup
if(pickupid == (Hier dein Pickup name)
{
GameTextForPlayer(playerid, "/duty", 5000,4);
}
also ich glaub ich bin einfach zu dumm... bei mir wird nichts angezeigt... och hab das jetzt so:
Zitatif(pickupid == dutypoint)
{
GameTextForPlayer(playerid, "/duty", 5000,4);
SendClientMessage(playerid,COLOR_ROT,"Test");
}
aber selbst das sendclientmessage wird nicht angezeigt. dabei hab ich das pickup schon auf type 2