Da stellt sich erst mal die Frage:
Können Teleports gelöscht werden, und wenn ja, sollen die freien IDs aufgefüllt werden, oder ist das egal?
Beiträge von Jeffry
-
-
Stats(playerid,giveplayerid);
Zu
Stats(giveplayerid, playerid); -
Nein, da es Indizes von 0 bis 14 gibt. Fängst du die 1 ab, kannst du nur ein Fahrzeug erstellen, nämlich das mit dem Index 0.
-
Mache das return 1 am Ende zu return -1, dann kannst du es abfangen, falls kein Platz mehr frei ist, genau dann wenn die Funktion -1 zurück gibt.
-
Poste diese Errors bitte.
-
>=
Zu
>
In der Abfrage.
-
Sprunk Automaten
Du könntest es dir hier abschauen: http://forum.sa-mp.com/showthread.php?t=314058
-
ich sitze in der zwickmühle
Das ist keine kleine Scripting Frage, das siehst du schon an der Länge des Codes. Erstelle bitte einen Thread und poste dort auch die Informationen, wie du die gespeicherten Werte aus der Datenbank ausliest, um sie zu verwenden, davon hängt nämlich ab, wie man das machen muss.
-
Du musst das bei OnGameModeInit einfügen.
-
Wo fügst du das ein?
-
Das kannst du bei der jeweiligen Speicherung der Fahrzeuge so machen:
Cnew query[256]; format(query, sizeof(query), "UPDATE FracVehicles SET tuning0 = %d", GetVehicleComponentInSlot(fracVehicle[i][e_vID] , 0)); for(new s=1; s<14; s++) { format(query, sizeof(query), "%s, tuning%d = %d ", query, s, GetVehicleComponentInSlot(fracVehicle[i][e_vID] , s)); } format(query, sizeof(query), "%sWHERE ID = %d", query, i); mysql_pquery(db, query);In der Tabelle musst du dann die Attribute tuning0, tuning1, ... tuning13 anlegen.
-
Das darf ich auch meine Kappe nehmen, da ich dir den Code ja so gegeben habe.
So dürfte es passen:C
Alles anzeigenforward SaveAllFracVehs(); public SaveAllFracVehs() { new query[256]; for(new i=0; i<MAX_FRAC_VEHICLES; i++) { if(fracVehicle[i][e_modelID] >= 400 && fracVehicle[i][e_modelID] <= 611) { GetVehiclePos(fracVehicle[i][e_vID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z]); GetVehicleZAngle(fracVehicle[i][e_vID], fracVehicle[i][e_a]); format(query, sizeof(query), "UPDATE FracVehicles SET ModelID = '%d', Color1 = '%d', Color2 = '%d', FracID = '%d', Rang = '%d' WHERE ID = '%d'", fracVehicle[i][e_modelID],fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID], fracVehicle[i][e_rang],i); mysql_tquery(dbhandle, query); format(query, sizeof(query), "UPDATE FracVehicles SET tuning0 = %d", GetVehicleComponentInSlot(fracVehicle[i][e_vID] , 0)); for(new s=1; s<14; s++) { format(query, sizeof(query), "%s, tuning%d = %d ", query, s, GetVehicleComponentInSlot(fracVehicle[i][e_vID] , s)); } format(query, sizeof(query), "%sWHERE ID = %d", query, i); mysql_pquery(dbhandle, query); } } return 1; } -
Was sagt der MySQL Log, wenn du diesen Code ausführst?
-
-
-
Also vom Code her passt das.
Debugge es bitte mal so:
C
Alles anzeigenocmd:exit(playerid,params[]) { new i = GetPlayerVirtualWorld(playerid); printf("i: %d"); if(i < 1 || i >= sizeof(bInfo)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Hier ist kein Haus."); printf("Koords: %f / %f / %f => %d", bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz], IsPlayerInRangeOfPoint(playerid,2,bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz])); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); printf("Player: %f / %f / %f", x, y, z); if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[i][b_ix],bInfo[i][b_iy],bInfo[i][b_iz])) return SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist nicht in der Nähe des Ausgangs."); printf("Setze Positon."); SetPlayerPos(playerid,bInfo[i][b_x],bInfo[i][b_y],bInfo[i][b_z]); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,0); return 1; }
Was wird dir so im Server Log ausgegeben, wenn du /exit eingibst? -
Und der Code für die Befehle? Den solltest du auch posten.
-
Wie sieht dein Code und das enum aus?
-
Gut, dann kannst du es relativ einfach machen, und du brauchst es nichtmal zu speichern, da es ja an die ID gebunden ist.
Beim Erstellen:CPlayerAuto[i][id_x] = CreateVehicle(PlayerAuto[i][vmodel],PlayerAuto[i][v_xc],PlayerAuto[i][v_yc],PlayerAuto[i][v_zc],PlayerAuto[i][v_ac],PlayerAuto[i][vfarbe1],PlayerAuto[i][vfarbe2],-1);zu:
-
Ok.
Jetzt die Frage wie du die Nummer, die auf der Nummerntafel angezeigt wird, vergibst. Wie machst du das?
Bekommt jedes dieser PlayerAuto's die Nummer für das Nummernschild?
Wenn ja, könnte man einfach die Nummer nehmen, mit der es in der Datei steht (auto_xxx)?
Wenn nein, welche Nummer bekommt es dann, und woher/wie?