Geht es dir jetzt darum, dass du die Häuser beim Serverstart lädst (und dabei zwischendrin eine ID frei ist), oder darum, dass du Häuser speichern willst, und das dann jeweils in die erste freie ID machst?
Bei Fall 1: Mach einfach eine Schleife, die von 0 bis zur maximalen Hausanzahl läuft. Darin überprüfst du, ob die entsprechende .ini-Datei existiert. Wenn ja, lädst du die Daten, ansonsten eben nicht. Dabei ist es egal ob es bei 1 aufhört und erst bei 15 weitergeht oder von 1-50 alles existiert.
Bei Fall 2: Nutze meinen Code. i entspricht dann der ersten "nicht gespeicherten" ID.
Wenn keins von beiden zutrifft, erläutere mir bitte ein wenig genauer, was du denn haben willst. Dann hab ich dich nämlich missverstanden.
Beiträge von Padarom
-
-
if(strcmp(cmdtext,"/personalausweis",true)==0)
{
if(GetPVarInt(playerid,"Personalausweis") == 0)
{
SetPVarInt(playerid,"Personalausweis",1);
GivePlayerMoney(playerid,-175);
SendClientMessage(playerid,GRUEN,"Du hast dir ein Personalausweis gekauft!");
GameTextForPlayer(playerid,"~r~-175$",3000,1);
}
else SendClientMessage(playerid, GRUEN, "Du hast bereits einen Personalausweis.");
}Mit freundl. Grüßen
Padarom -
Ich persönlich finde das gut, solang' man auf Retro steht
Die Schriftart gefällt mir aber nicht so sehr, das fette am Anfang der einzelnen Wörter (und die Zahlen) ist nicht so mein Ding. Aber ansonsten wie gesagt finde ich es gut. -
new i = 0;
do {
i++;
format(path, 68, "/reports/%i.ini", i);
}
while(dini_Exists(path));
dini_Create(path);
// ... Weiterführend
So habe ich das bei meinem dynamicReport-System gelöst. Sollte das sein was du willst.
Ggf. noch an dein Dateisystem anpassen.Mit freundl. Grüßen
Padarom -
200g Mett zum Abendessen machen^^
-
Und denke am besten auch darüber nach, die Variable SelfStatus als Array zu erstellen (SelfStatus[MAX_PLAYERS]).
Ansonsten gibt es nämlich eine globale Abklingzeit für alle Spieler zusammen, was ja denke ich nicht wirklich ist, was du willst.
Dann dementsprechend den Timer auch bearbeiten (SetTimerEx("SAbkling", 180000, false, "i", playerid)) und natürlich im Timer-public selbst die SelfStatus[playerid] wieder auf 0 setzen.Mit freundl. Grüßen
Padarom -
Hast du auch das gemacht, was ich ins Kommentar geschrieben hab?
new bool:licht[MAX_VEHICLES];
Das muss da weg und global definiert werden. Ansonsten wird das ja auch nicht gespeichert. -
Laut Wiki haben KEY_SUBMISSION und KEY_LOOK_BEHIND den Wert 512. Wenn er eins von beiden auf + gelegt hat, stimmt das also.
-
Und was hast du geändert? Ich sehe absolut keinen Unterschied zwischen deinem und dem ursprünglichen Script^^
-
if ( newkeys == (512) )
{
new bool:licht[MAX_VEHICLES]; // Diese Variable global definieren, anstatt lokal.
//new engine,lights,alarm,doors,bonnet,boot,objective;
if(IsPlayerInAnyVehicle(playerid)) {
new vid = GetPlayerVehicleID(playerid);
if(!licht[vid]) {
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
licht[vid] = true;
}
else if(licht[vid]) {GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
licht[vid] = false;
}
}
So sollte es gehen.Mit freundl. Grüßen
Padarom -
Und das ist genau das, was warstar geschrieben hat. Das Crips[0] bzw. allgemein eine Variable muss man auch nur angeben, wenn das Fahrzeug später im Script weiter benötigt wird.
Und nur die Variable anzugeben ist falsch. Deswegen hat MezzowMix das geschrieben. -
Zitat
This function was added in SA-MP 0.3c and will not work in earlier versions!
Englisch besser lernen, bevor du es falsch interpretierst Da steht, dass die Funktion in 0.3c implementiert wurde und in vorigen Versionen nicht funktioniert. 0.3d ist aber neuer, also geht's da.
Ansonsten @Dynamic: Fahrzeuge müssen neu gespawnt werden, damit die Nummernschilder gesetzt werden können.edit: Ohh... Seit über 10 Minuten das Thema offen - MezzowMix war schneller^^
-
Die Antwort auf deine Frage ist: Ja.
Wie du es löst, bleibt aber dir überlassen, mache es doch einfach genauso wie dein Heiratssystem. Eine Pauschallösung kann dir da niemand bieten, da das bestimmt nicht allzu viele Server haben.Mit freundl. Grüßen
Padarom -
-
http://pastebin.com/kG8bC8z8
Ich hab jetzt mal so weit eingerückt wie ich konnte, nur für die letzte Klammer und return 1; hab ich keine Zugehörigkeit gesehen.Mit freundl. Grüßen
Padarom -
Du hast meine alte Version ausprobiert?
Dann geh mal in die Dini und setze das Banned von dir auf 0. Außerdem die samp.ban löschen, dadrin werden die Bans nämlich jetzt gespeichert. -
Douq: Yo, ist mir auch erst jetzt eingefallen. Habe ich aber schon vor deinem Post in der Pastebin editiert, wird jetzt richtig gesetzt.
edit: Wenn er Ban nutzt, dann braucht er sie aber eigentlich garnicht speichern lassen, da der Spieler garnicht bis zur Abfrage kommt wenn er den Server connected. Wie gesagt, meine Pastebin sollte eigentlich stimmen. -
Und seit wann werden PVars beim Verlassen des Servers gespeichert?
Hier ist dein Pastebin mit meiner Version: http://pastebin.com/0uqPu5pa
So sollte es eigentlich klappen. -
ocmd:timeban(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"Rang zu Niedrig.");
new pID, time, grund[128];
if(sscanf(params,"uis",pID,time,grund))return SendClientMessage(playerid,COLOR_RED,"/timeban [playerid] [zeit] [grund]");
if(IsPlayerConnected(pID))
{
if(time>0&&time<1000)
{
new string[128];
format(string,sizeof(string),"AdmCdm: %s wurde von %s für %i Minuten gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),time,grund);
SendClientMessageToAll(COLOR_RED,string);
new wert;
wert = gettime()+(60*time);
SetPVarInt(pID,"timeban",wert);
Kick(pID);
return 1;
}
SendClientMessage(playerid,COLOR_RED,"Ungültige Zeit.");
return 1;
}
SendClientMessage(playerid,COLOR_RED,"Spieler ist nicht online.");
return 1;
}
Jetzt müsst ihr nur noch sagen, in welcher Zeile das Warning 205 kommt. Die "Falsch eingerückt" Warnings sollten jetzt weg sein.
Wenn ihr schon deutsche Warnings habt, wieso lest ihr es nicht? Falsch eingerückt heißt, dass ihr die Tabstops richtig setzen müsst.Mit freundl. Grüßen
Padarom -
@FrostWolf: Wieso sollte es? Die PVar hat mit dem Bannen nichts zu tun.
Die Funktion die danach aufgerufen wird ist Kick, nicht Ban. Deswegen wird der Spieler nur gekickt.