Versuche es mal wie in diesem Beispiel mit einem Timer: http://forum.sa-mp.com/showpost.php?p=1654745&postcount=6
Es kann sein, dass es diese kurze Verzögerung braucht, damit es klappt.
Beiträge von Jeffry
-
-
Hab ich dir doch in Post #6 schon gesagt, wie das geht.

maxVeh = Das was in Datei stehtEinfach dort wo du die Fahrzeuge erstellst:
if(PlayerInfo[playerid][pCarSlots] <= PlayerInfo[playerid][pCars]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Mehr Fahrzeuge gehen nicht.");
PlayerInfo[playerid][pCars]++;Übrigens: Lass bitte diese sinnlosen Zitate, schau dir den Post an, bevor du ihn abschickst. Entferne das mal, das sieht ja schrecklich aus.
-
sInfo[playerid][eingeloggt] = 1;
Füge das beim OnPlayerRegister vor savePlayer ein.Übrigens, 600 für das Query ist etwa knapp. Nimm lieber 1024.
-
Wähle die Datenbank in aus und klicke dann auf den Reiter "SQL". Füge den Code dort ein und drücke Ok.
Das geht soweit eigentlich immer. -
Poste bitte dein savePlayer.
-
1)
if(listitem == 5)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerInterior(playerid) != 0)
{
SendClientMessage(playerid, COLOR_GREY, " * Du bist in einem Interior, dort hast du keinen Empfang, geh auf die Straße.");
return 1;
}
if (!IsACop(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Cop!");
{
SendClientMessage(playerid, COLOR_GREY, " * Es ist kein Polizist im Dienst, bitte versuche es später noch einmal");
return 1;
}
new sendername[MAX_PLAYER_NAME]; //Zeile 53299
new string[256];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "[Leitstelle] %s hat einen Streifenwagen angefordert, Gib (/accept polizei) ein um den Auftrag anzunehmen.", sendername);
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1)
{
SendClientMessage(i, COLOR_LIGHTBLUE, string);
}
}
}
SendClientMessage(playerid, COLOR_LIGHTBLUE, " * Du hast einen Streifenwafen gerufen, warte auf eine Antwort.");
SetTimerEx("ServiceReset", 30000, false, "i", playerid);
JustService[playerid] = 1;
CopCall = playerid;
return 1;
}
}2)
Versuche es so:
dcmd_efa(playerid,params[])
{
if(GetPlayerAdmin(playerid) >= NEEDED_ADMINLEVEL)
{
new vehid,col1,col2,faction[5];
if(!sscanf(params,"ddddD(0)D(0)D(0)",vehid,col1,col2,faction[0],faction[1],faction[2],faction[3],faction[4]))
{
if(vehid < 400 || vehid > 611) return SendClientMessage(playerid,FACTION_COL_GREY,"Vehicle-ID nur von 400 bis 611.");
if(col1 < 0 || col1 > 255) return SendClientMessage(playerid,FACTION_COL_GREY,"Falsche Farbe(1)!");
if(col2 < 0 || col2 > 255) return SendClientMessage(playerid,FACTION_COL_GREY,"Falsche Farbe(2)!");
if(faction[0] && faction[0] <= MAX_FACTIONS)
{
for(new f;f<5;f++)
{
if(faction[f] <= 0 || faction[f] > MAX_FACTIONS)
{
faction[f] = -255;
}
}
for(new fc;fc<sizeof(FactionCars);fc++)
{
if(FactionCars[fc][fVehid] < 400 || FactionCars[fc][fVehid] > 611)
{
FactionCars[fc][fVehid] = vehid;
new Float:fX,Float:fY,Float:fZ,Float:fA;
GetPlayerPos(playerid,fX,fY,fZ),GetPlayerFacingAngle(playerid,fA);
FactionCars[fc][fPos][0] = fX;
FactionCars[fc][fPos][1] = fY;
FactionCars[fc][fPos][2] = fZ;
FactionCars[fc][fPos][3] = fA;
FactionCars[fc][fCol][0] = col1;
FactionCars[fc][fCol][1] = col2;
for(new f;f<5;f++)
{
FactionCars[fc][fFaction][f] = faction[f];
}
FactionCars[fc][fPrice] = 0;
for(new mood;mood<14;mood++)
FactionCars[fc][fTuning][mood] = 0;
FactionCars[fc][fCarid] = CreateVehicle(FactionCars[fc][fVehid],FactionCars[fc][fPos][0],FactionCars[fc][fPos][1],FactionCars[fc][fPos][2],FactionCars[fc][fPos][3],FactionCars[fc][fCol][0],FactionCars[fc][fCol][1],-255);
#if defined FACTION_CARS_LOCKABLE
FactionCars[fc][fLock] = true;
#endif
SendClientMessage(playerid,FACTION_COL_YELLOW,"Du hast das Fraktionsfahrzeug erfolgreich erstellt.");
SendClientMessage(playerid,FACTION_COL_YELLOW,"Vergesse es nicht mit '/fpark' umzuparken.");
PutPlayerInVehicle(playerid,FactionCars[fc][fCarid],0);
return true;
}
}
SendClientMessage(playerid,FACTION_COL_GREY,"Die Maximale Anzahl von Fraktionsfahrzeugen wurde bereits erreicht.");
}
else SendClientMessage(playerid,FACTION_COL_GREY,"Falsche Fraktion!");
}
else SendClientMessage(playerid,FACTION_COL_GREY,"Benutze: '/efa [Model] [Farbe(1)] [Farbe(2)] [Hauptfraktion]'.");
}
else SendClientMessage(playerid,FACTION_COL_GREY,"Du bist nicht berechtigt diesen Befehl anzuwenden.");
return true;
} -
pCars exisitiert bei mir nicht.
Schreibe es in das enum zu PlayerInfo.
pCars,Wie gucke ich wie viele Autos der User hat ?
PlayerInfo[playerid][pCarSlots] -> Anzahl die er haben darf
PlayerInfo[playerid][pCars] -> Anzahl die er hatDu kannst es genau gleich speichern wie die pCarSlots.
-
Mach das
,false
In den beiden Zeilen weg. -
Defines sind keine Variablen sondern Konstanten, diese kannst du nicht verändern.
-
Ja. Alles.
-
Nein, das geht nicht.
Mache es wie ich es dir gezeigt habe, das ist in Prinzip das was du meinst. -
Wie sieht die OnPlayerCarUpdate Funktion aus? Poste die bitte.
-
Einfach dort wo du die Fahrzeuge erstellst:
if(PlayerInfo[playerid][pCarSlots] <= PlayerInfo[playerid][pCars]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Mehr Fahrzeuge gehen nicht.");
PlayerInfo[playerid][pCars]++;pCars legst du auch im enum zu PlayerInfo an und speicherst es wie das Geld oder die Kills (etc).
MaxVeh setzt du im define auf den Wert, den ein Spieler maximal an Fahrzeugen haben kann.
-
Sofern nicht alle Fahrzeuge identisch sind, musst du die Farbe natürlich auch pro Slot speichern.
Schau dir doch mal die Codes an die ich dir gegeben habe und versuche das zu übernehmen.Ein Spieler hat 5 Fahrzeuge, jedes dieser Fahrzeuge hat eine Farbe, somit brauchst du auch dort Zugriff auf den Slot in dem sich das Fahrzeug befindet.
-
Überall dort wo du etwas für alles Slots ändern willst.
-
Die wäre dann weg, ja. Du müsstest es dann zum Beispiel mit dini in eine Datei speichern, wenn sich der Wert ändert, dann kannst du es beim Start des Servers wieder laden.
-
Dort muss die Variable hin, die du nutzt um die Anzahl der Tickets hochzuzählen.
Gegebenenfalls erstelle eine unter den Includes:
new tickets;Und dort wo eins erstellt wird:
tickets++; -
Das muss dir nicht peinlich sein, ist ja kein Problem, dafür ist das Forum ja da.
Den Besitzer und die Slots speicherst du ja schon, bzw. die Variable dafür wurde angelegt, daher die ganzen Fehler.Den Define dazu habe ich dir ja gegeben, das ist die zweite Dimension, das enum hat sich in die dritte verschoben. Genau MAX_CARS_PER_PLAYER ist damit die Slot Anzahl, sprich die Anzahl an Fahrzeugen, die ein Spieler haben kann.
Du musst jetzt überall wo sowas hier verwendet wird: (nur ein Beispiel)
Carlist[playerid][Farbe1]
den Slot hinzufügen. Machst du etwas für alle Slots, machst du es mit einer Schleife:
for(new s=0; s<MAX_CARS_PER_PLAYER; s++) Carlist[playerid][s][Farbe1] = -1;Machst du etwas nur für einen Slot, dann musst du es entweder über den Key machen, wenn du das aktive Fahrzeug nimmst, oder eben über den entsprechenden Slot.
Carlist[CarKey[playerid]][Farbe1] = -1;Das musst du so bei allen Vorkommnissen von Carlist machen, jeweils natürlich entsprechen für die jeweilige Funktion, da es nicht überall gleich ist. Je nach dem wie oft und wo das bei dir überall vorkommt, kann das ein ziemliches Geschäft sein, alles umzustellen, da du im Prinzip das ganze System umbaust.
-
Ja genau, probiere das aus.
-
Fabi.StaR: Das ist das zweite Problem das er hatte, das Passwort-Problem ist bereits behoben.

Ich warte aber noch immer auf das ganze OnPlayerSpawn, da ich eine einzige Zeile nicht debuggen kann, bzw. an der einzelnen Zeile nichts falsch ist.