Wie sieht der Code zum Parken aus?
Beiträge von Jeffry
-
-
saveCarToDB(playerid,carid)
{
new query[256],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),"INSERT INTO autos (modelx,y,z,r) VALUES ('%i','%f','%f','%f','%f')",cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
mysql_tquery(Handle, query, "OnVehicleAdded", "d", carid)
return 1;
}forward OnVehicleAdded(carid);
public OnVehicleAdded(carid)
{
cInfo[i][db_id] = cache_insert_id();
return 1;
} -
Mit welchem Code aktualisierst du denn das 3D Label? Hast du da einen Timer dafür?
Wenn nicht, dann musst du einen Timer erstellen, der in entsprechenden Zeitabständen aufgerufen wird und eine Schleife durch alle deine Drogen geht (SetTimer & for-Schleife). -
Dann denke ich, wenn du mein Tutorial wirklich gewissenhaft und gut durcharbeitest, wirst du auf jeden Fall mehr als die 0% verstehen, ich denke sogar, dass du es danach ziemlich gut verstehst, wie das ganze funktioniert.
Nimm dir dafür einfach ein paar Stunden/Tage Zeit und arbeite es Stück für Stück durch. Du wirst bald merken, dass es gar nicht so schwer ist wie es aussieht. Ich glaube, dass es jedem von uns einmal so ging, aller Anfang ist schwer. -
Ein Fahrzeug-System auf Dini basierend zu machen ist keine wirklich gute Idee, da es einfach zu viele Daten sind auf die zum Teil gleichzeitig zugegriffen werden müssen, das dauert zu lange. MySQL eignet sich da besser.
Oder du erstellst ein eigenes, besseres, Datenverwaltungssystem mit Dateien, aber da wird es wahrscheinlich einfacher sein, wenn du dich an MySQL versuchst. Das ist zwar am Anfang kompliziert, geht aber recht schnell bis man sich da zu Recht findet.Ich würde dir da MySQL raten, sofern du kein eigenes Datenverwaltungssystem schreiben willst.
-
Genau gleich, nur dass du nicht %d nimmst, sondern %s beim Speichern, und cache_get_field_content anstatt cache_get_field_content_int beim Laden.
-
Das müsste trotzdem funktionieren.
Was meinst du mit "in der Datei passiert nichts"?
Der Debug Log in dem Server Log sollte trotzdem kommen, nur dass er jetzt etwas anders aussieht. -
Wo wird dir denn welcher Fehler angezeigt?
-
Versuch es so:
ocmd:vehiclelock(playerid,params[])
{
new veh = GetOwnVehicle(playerid);
if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,!"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
new engine,lights,alarm,bonnet,boot,objective;
GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
PlaySoundForPlayer(playerid,1147);
SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
if(vehdoor!=0) vehdoor = 1;
else vehdoor = 0;
SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
for(new i; i<MAX_PLAYERS; i++) SetVehicleParamsForPlayer(veh,i,0,vehdoor);
return 1;
} -
OnUserCheck wird auch nirgendswo aufgerufen.
Schau mal in Zeile 51. -
Heißt das, dass der Benutzer "root" mehr/andere Rechte hat, als der Benutzer "samp", obwohl ich dort beim Erstellen des Benutzers ALLE Rechte zugewiesen/angekreuzt habe?
Ja, genau.Das Problem haben aber viele, von daher ist das normal. Letztendlich ist es ja egal wie der User heißt, wenn du es eh nur lokal verwendest.
-
Nimm den root Benutzer ohne Passwort:
#define db_host "127.0.0.1"
#define db_user "root"
#define db_pass ""
#define db_db "dystopia"Das ist in 99% aller Fälle standardmäßig so eingestellt.
Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben. -
PlayerCar[playerid][i][CarOwner]
Wobei i der Fahrzeug-Index (also die Fahrzeugnummer des Spielers (z.B. sein 2. Fahrzeug)) ist.
-
Kannst du bitte deine Zeile 100 mir mal schicken?
Und warum ist das bei dir Zeile 100? Hast du was geändert? -
if(!strcmp(AutoInfo[i] [Besitzer], SpielerName(playerid))
zu:
if(!strcmp(AutoInfo[i] [Besitzer], SpielerName(playerid)))Ich hatte dir es aber zuvor richtig gegeben.
-
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
return name;
}Ganz unten im Gamemode einfügen.
-
if(!strcmp(AutoInfo[i] [Besitzer],MAX_PLAYER_NAME(playerid));
zu:
if(!strcmp(AutoInfo[i] [Besitzer],SpielerName(playerid))) -
Deshalb sagte ich ja:
Den Fraktions-Teil kannst du ja weg lassen, falls du das nicht brauchst.
Das System ist an sich fast identisch, nur dass du eben die Fraktion weg lässt und den Code unter OnPlayerEnterVehicle. Der Rest ist gleich. 95% kannst du 1:1 übernehmen.
-
Schau dir mein Tutorial an:
[ SCRIPTING ] [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2Da habe ich das alles erklärt. Den Fraktions-Teil kannst du ja weg lassen, falls du das nicht brauchst.
-
Da lege ich dir mein Tutorial ans Herz:
[ SCRIPTING ] [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2Das ist zwar für ein Fraktions-Fahrzeuge System, allerdings kannst du das fast 1:1 auch für ein Autohaus-Fahrzeuge System übernehmen.