forward nextmessage(playerid);
SendClientMessage(playerid,COLOR,"Erste Message");
SetTimerEx("nextmessage",5000,0,"i",playerid);
public nextmessage(playerid)
{
SendClientMessage(playerid,COLOR,"Nach 5 Sekunden");
return 1;
}
forward nextmessage(playerid);
SendClientMessage(playerid,COLOR,"Erste Message");
SetTimerEx("nextmessage",5000,0,"i",playerid);
public nextmessage(playerid)
{
SendClientMessage(playerid,COLOR,"Nach 5 Sekunden");
return 1;
}
Vllt merkst du auch einfach nicht, dass was passiert, da der String nicht ausgegeben wird. Sicher, dass deine Spielerfarbe auch nicht geändert wird ?
Dann gehts du einfach nach der ersten Variante. Wenn der Spieler spawn - > OnPlayerSpawn(playerid)
Dann überprüfst du, ob der Spieler ein Haus hat. Sollte dies der Fall sein, setzt du ihn an die Position des Hauses. Ich kenn dein Haussystem jetzt nicht, jedoch ist denke ich jedes Haus in einer Variable mit x,y und z Koordinaten festgelegt. In der Spielerdatei, wird denke ich die ID des Hauses stehen, welche gleichzeitig als Index für die Koordinaten genommen werden kann.
Du hast die da erst erstellt. Benutzt (Abfragen o,ä) wird sie aber nicht, was aber auch nicht schlimm ist.
Wichtig ist, dass du oben new pickup; hast und dann auch unter OnFilterScriptInit auch pickup = machst. Weil wenn du oben unter die includes nicht new pickup , sondern new pfeil machst, dann kann er die Pickupid natürlich auch nicht in die Variable pickup schreiben, da diese nicht existiert.
Ich denke es wird nur folgendermaßen möglich sein. Die hast einen Timer, der alle 3 Sekunden oder so durchläuft (musste an die Geschwindigkeit des Ausschalten und der Performance anpassen).
Dieser Timer schaltet bei allen Autos die Licher aus, wenn eine bestimmte Variable (durch einen Befehl veränderbar) auf einem bestimmten Wert gesetzt wurde. Funktion: UpdateVehicleDamageStatus();
Läuft dann also folgendermaßen:
Wenn man /licht an eingibt, wird das Licht angeschaltet mit dem oben genannten Befehl und eine spielerspezifische Variable wird auf 1 gesetzt.
Die Funktion um immer ausschaltend er Lichter prüft jeden Spieler ob er in einem Fahrzeug sitzt und ob die Variable auf 0 steht. Sollte dies der Fall sein zerstört er die Lichter und das Licht geht aus. Da aber duch den Befehl die Variable auf 1 gesetzt wurde, gehen die Lichter nicht kaputt, sondern bleiben an.
PS: Das ganze dürfte aber nur Nachts Funktionieren.
Ach quatsch, dass bringt dir in dem Callback garnichts.
Entweder du setzt die Position des Spielers bei OnPlayerSpawn um mit SetPlayerPos();
oder du verwendest folgenden Befehl:
SetPlayerSpawnInfo()
In verbindung mit SpawnPlayer()
Mit einem Timer in einem bestimmten Interval:
forward waffentextdraw();
SetTimer("waffentextdraw",2000,1);
new pickup;
forward inhouse();
public OnFilterScriptInit(playerid)
{
pickup = CreatePickup(1318, 1318, 732.9096,-2704.9937,15.1482, -1);
SetTimer("inhouse",5000,1);
return 1;
}
public inhouse()
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i, 7.0, 1318, 732.9096,-2704.9937,15.1482))
{
SetPlayerInterior(i, 5);
SetPlayerPos(i, 1267.663208,-781.323242,1091.906250);
}
}
return 1;
}
Alle 5 Sekunden wird abgefragt, ob der der Spieler 1 an der Position ist und dann wird er geportet.
danach , praktisch im Millisekundenbereich
wird abgefragt, ob der der Spieler 2 an der Position ist und dann wird er geportet.
Wie und wie häufig wird denn der Public aufgerufen.
Das die Variable "playerid" heißt sollte eigentlich kein Problem darstellen.
Du kannst doch theoretisch ne Var für den aktuellen Gang einlegen und dann für jeden Gang die maximalgeschwindigkeit festlegen. Dann immer überprüfen ob der Spieler zu schnell fährt:
GetVehicleVelocity
und dann per SetVehicleVelocity die Geschwindigkeit auf den Maximalwert setzen.
Laut deinem Error nicht.
Die Frage ist, wo deklarierst du die Variable und wie und welche Zeile ist genau dein Fehler ?
Die Variable existiert nicht.
if(dm[playerid] == 1 )
{
new rand = random(sizeof(MinigunRandomSpawn));
SetPlayerInterior(playerid, 1);
SetPlayerPos(playerid, MinigunRandomSpawn[rand][0], MinigunRandomSpawn[rand][1], MinigunRandomSpawn[rand][2]);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,38,50000);
SetPlayerHealth(playerid,100);
else if(dm[playerid] == 2 )
{
new rand = random(sizeof(TankRandomSpawn));
SetPlayerInterior(playerid, 1);
SetPlayerPos(playerid, TankRandomSpawn[rand][0], TankRandomSpawn[rand][1], TankRandomSpawn[rand][2]);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,38,50000);
SetPlayerHealth(playerid,100);
}
}
dm[playerid] = 1; // Wenn er immer in Minugunspawnen soll
dm[playerid] = 2; // Wenn er immer in Panzer spawnen soll
Im Befehl wird die Position das erste mal gesetzt. Dort musst du natürlich dann die Variable auf den entsprechenden Wert setzten.
Genau daran liegts . Hier so sollte es funktionieren.
dcmd(nachricht,9,cmdtext);
dcmd_nachricht(playerid,params[])
{
new message[128];
if(Spieler[playerid][admin] < 1){
return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
}
if(sscanf(params,"s",message)){
return SendClientMessage(playerid,COLOR_RED,"[Benutzung]: /nachricht [TEXT]");
}
new name[MAX_PLAYER_NAME];
new string[128];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"%d Admin %s: %s" ,Spieler[playerid][admin],name,message);
SendClientMessageToAll(COLOR_BLUE,string);
return 1;
}
Setzt du deine Variable auch richtig.
if(dm[playerid] > 0 ) So kann das ja nicht bleiben
Dann musste das auch als String erstellen
Ich weiß jetzt net wie du die Variable deklarierst. Jedoch sollte es irgentwie so aussehen.
new GangzoneOwner[maxowners?][20];
//Dann kannste auch Strings drin speichern.
format(GangzoneOwner[0],sizeof(GangzoneOwner[0]),"%s",dini_Get("Gangzone.txt", "pz"));
Könnte durchaus sein, dass du in der samp.ban stehst. Lösch dort einfach die entsprechende Zeile und führe in der Konsole "reloadbans" aus.