SetPlayerPos(pID, 10);
Du meinst sicher SetPlayerInterior, oder?
SetPlayerPos(pID, 10);
Du meinst sicher SetPlayerInterior, oder?
Gerne
Für so einen ähnlichen Beitrag habe ich mal einen Warn kassiert,
pass also auf, dass dir nicht dasselbe passiert
Filterscripts können Auslöser für sowas sein. Includes auch.
Seit 03x wurde an der Funktion Kick() und Ban() einiges geändert, sodass diese beiden wichtigen Befehle
höchste Priorität haben. Das hat einerseits Vorteile, wenn der Server laggt und der 'Cheater' muss gekickt werden,
andererseits werden allerdings keine Nachrichten mehr für den Clienten angezeigt.
GivePlayerMoney(pID, GetPlayerMoney(pID)+geld);
Die Funktion heißt GivePlayerMoney, nicht SetPlayerMoney!
GivePlayerMoney = Dem Spieler Geld geben (Du hast 10€ und ich gebe dir (GivePlayerMoney) 2€, also hast du 12€!)
SetPlayerMoney = Des Spielers Geld auf einen bestimmten Betrag setzen (Du hast 10€ und ich setze dein Geld auf 2€, also hast du 2€!)
SetPlayerMoney gibt es nicht, dafür müsstest du eine eigene Funktion bauen,
die aus einer Kombination zwischen GetPlayerMoney und GivePlayerMoney besteht.
Erläutere bitte dein Problem näher, so ist es schwer dir zu helfen...
Schau dir auf der Wiki diese Seite an, überprüfe deine Parameter mit den auf der Seite, dann kommst du bestimmt selber auf den Fehler
if(strcmp(cmdtext,"/aduty",true)==0)
{
if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,0xFF0063FF,"Du bist kein Adminstrator");
SetPlayerSkin(playerid,217);
GivePlayerWeapon(playerid,27,99999);
SetPlayerHealth(playerid,999999);
SetPlayerArmour(playerid,999999);
Create3DTextLabel("Admin",0xFF000099,0,0,0,50,-1,1);
return 1;
}
So müsste es gehen.
GivePlayerMoney(pID, GetPlayerMoney(pID)+geld);
Die Funktion heißt GivePlayerMoney, nicht SetPlayerMoney!
Bitte lies es dir nochmal aufmerksam durch.
Das kann ich nur zurückgeben.
Zitat:
Du hast in deinem Beispiel einen globalen Timer gemacht, in dem alle User durchgegangen werden.
So ist das okay, keine Frage..
Sinnlos wirds erst dann, wenn man für jeden Spieler unter OnPlayerConnect einen Timer startet,
wo jeder Spieler durchgegangen wird, wie in dem Beispiel von 'Keybinder'.
@Keybinder: Starte bei OnGameModeInit einen Timer, der jede Minute abläuft.
In diesem Timer erhöhst du die Variable eines Spielers, der online ist, um eins,
und wenn sie 60 ist, setzt du sie wieder auf 0 und gibst ihm den Payday.
if(GetPVarInt(playerid,"Adminlevel") >= 8)
du bist wohl kein Admin
Du brauchst das Auto nicht in die Schleife paken
Das ist schon sinnvoll, da ma dann nicht 50 Zeilen schreiben muss.
Zu deinen Fehlermeldungen:
Anscheinend stimmt etwas mit den Variablentypen nicht,
kannst du uns die Zeilen zeigen, wo du die Variablen erstellt hast?
Sicher geht das.
Möglich ist es, sinnvoll nicht.
Du hast in deinem Beispiel einen globalen Timer gemacht, in dem alle User durchgegangen werden.
So ist das okay, keine Frage..
Sinnlos wirds erst dann, wenn man für jeden Spieler unter OnPlayerConnect einen Timer startet,
wo jeder Spieler durchgegangen wird, wie in dem Beispiel von 'Keybinder'.
Möglich ist es - aber dann auch nur, wenn man es richtig programmiert.
Aber selbst dann ist es unlogisch und sinnlos.
forward paydaytimer(); // Ein Callback ohne Parameter
SetTimerEx("paydaytimer",1000*60,1,"i",playerid);
// Ein Timer mit Parameter zu dem Callback ohne Parameter
= sinnlos
Habe dir das mal neu geschrieben, weil ich zu faul war mir alls durchzulesen
Mach nicht den Fehler und kopier das in deinen Gamemode, die Hauptsache ist,
dass du deine Fehler verstehst und sie beim nächsten mal nichtmehr machst.
Deswegen: Vergleichen und draus lernen
PlayerInfo[plid][pGeld] == geld;
Das macht keinen Sinn, '==' ist ein Vergleichsoperator,
wenn du den Wert von pGeld verändern willst, verwende ein '=' in Verbindung mit einem '+'.