Ich zeige euch hier wie ihr einen Individuellen Payday scriptet der für jeden Spieler einzeln läuft.
Als erstes erstellen wir den Public oben bei den Forwards und den Timer.
forward pimer(playerid);
new pimerday[MAX_PLAYERS]; // MAX_PLAYERS ist die Anzahl da für jeden eines erstellt wird.
pSincePayday[MAX_PLAYERS];
new pPlaytime[MAX_PLAYERS];
dann starten wir den Timer am besten unter "Onplayerconnect "oder bei Godfather empfehlenswert bei "Onplayerlogin".
pimerday[playerid] = SetTimerEx("pimer",60000,1,"i",playerid);
// pimerday[playerid] ist der Timername
// pimer der Public er am Ende des Timers ausgelöst wird
// 60000 die ZEit in Millisekunden bis der Public ausgelöst wird.
// die "1" ob der TImer wiederholt werden soll
// "i" steht für Integer eine Zahl ohne Komma ist entscheinend für Playerid da das die VAriable ist die übergeben wird.
danach killen wir den Timer bei OnPlayerDisconnect
KillTimer(pimerday[playerid]);
dann fehlt natürlich nur noch der Public
public pimer(playerid)
{
pPlaytime[playerid]++; // ++ ist wie +1 also wird es alle 60000 milliskunden um 1 erhöht soll die Spielzeit sein
if(pSincePayday[playerid] >= 60) // wenn Zeitseitpayday 60 oder über 6o ist wird das in der Klammer ausgelöst
{
pSincePayday[playerid] = 0; // ZeitseitPayday wird wieder auf 0 gesetzt da er den Payday hatte.
GivePlayerMoney(playerid, 2000); // der ID "Playerid" werden 2000$ gegeben
}
else
{
pSincePayday[playerid]++; // ZEit seit Payday wird um 1 erhöht
}
return 1;
}
EDIT:
So jetzt speichern wir das noc hdass er zwischendurch auch OFfline gehen kann ich verwende dazu Dini.
bei "OnplayerConnect "kommt das hier rein:
new playername[16],string[32];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"%s.ini",playername); // %s steht für einen String. In unserem Fall playername also dem NAmen vom SPieler also würde der STring bei mir heiße Tirus.ini
if(dini_Exists(string)) // Fragt ab ob die Datei string existiert string ist in unserem FAll : "[namevomspieler].ini"
{
new paydayzeit = dini_Int(string, "zeitseitpayday"); // Lädt in der Datei des Spielers das was unter zeitseitpayday gespeichert ist und speichert es in der Variable paydayzeit.
new spielzeitinsgesamt = dini_Int(string, "spielzeit"); // Lädt in der Datei des Spielers das was unter spielzeit gespeichert ist und speichert es in der Variable spielzeitinsgesamt.
pSincePayday[playerid] = paydayzeit; // ändert die pSincePAyday variable um zu dem was wir gespeichert haben (bzw. erst noch kommt im Tut)
pPlaytime[playerid] = spielzeitinsgesamt; // Das gleiche wie darüber nur mit anderen Variablen
}
else // die Datei existiert nicht
{
dini_Create(string);// Erstellt die Datei mit dem Namen "[namevomspieler].ini"
}
Da wir natürlich nichts laden können was nicht erstellt wurde müssen wir es beim Verlassen des Spielers vom Server noch hinzufügen also bei "Onplayerdisconnect"
new playername[16],string[32];
GetPlayerName(playerid,playername,sizeof(playername));// Das gleiche wie oben wir müssen erstmal den Namen des SPielers herausfinden um die Richtige Ini zu finden
format(string,sizeof(string),"%s.ini",playername);
dini_IntSet(string, "zeitseitpayday", pSincePayday[playerid]);// setzt in der Datei des Spielers zeitseitpayday auf das gleiche wie pSincePayday.
dini_IntSet(string, "spielzeit", pPlaytime[playerid]);// setzt in der Datei des Spielers Spielzeit auf das gleiche wie pPlaytime.
Die Spieler sollten das natürlich auch i-wie abrufen können dazu erstelle ich einen Command unter "OnPlayerCommandtext"
if (strcmp("/payday", cmdtext, true, 10) == 0)
{
new string[128];
new zeitrechnen = pSincePayday[playerid]-60;
format(string, sizeof(string), "Zeit seit Payday: %d Spielzeit insgesamt:%d ",pSincePayday[playerid],pPlaytime[playerid] );
SendClientMessage(playerid, 0xFFFFFFAA,string);// sendet Playerid in der Farbe Weiß String das ist das was wir eine ZEile obendrüber definiert haben.
return 1;
}