Hier hast du ein Tutorial, welches genau deine Fragen erklärt:
http://forum.sa-mp.com/showthread.php?t=186495
An der einen oder anderen Stelle musst du den Code natürlich an deinen Code anpassen (zum Beispiel die Variablen).
Hier hast du ein Tutorial, welches genau deine Fragen erklärt:
http://forum.sa-mp.com/showthread.php?t=186495
An der einen oder anderen Stelle musst du den Code natürlich an deinen Code anpassen (zum Beispiel die Variablen).
Das query wird gar nicht gesendet.
Wie sieht denn dein Code aus, was hast du gemacht? Du hast bestimmt das mysql_query weg gemacht.
Suche eine Banane oder etwas das so ähnlich ausschaut.
Ein solches Objekt gibt es leider nicht.
Du könntest höchstens einen der Dildo's per SetObjectMaterial gelb machen. Da wird sich 321 wohl am besten eignen.
format(string,sizeof(string),"INSERT INTO gangwar (id,owner,maxX,maxY,minX,minY,flaggeX,flaggeY,flaggeZ,erstellt) VALUES (%d,'%s','%f','%f','%f','%f','%f','%f','%f','%s')",
i,GZ[i][owner],GZ[i][max_x],GZ[i][max_y],GZ[i][min_x],GZ[i][min_y],GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],GZ[i][erstellt]);
format(string,sizeof(string),"%s ON DUPLICATE KEY UPDATE `owner`='%s',`maxX`=%f,`maxY`=%f,`minX`=%f,`minY`=%f,`flaggeX`=%f,`flaggeY`=%f,`flaggeZ`=%f,`erstellt`='%s';",
string, GZ[i][owner],GZ[i][max_x],GZ[i][max_y],GZ[i][min_x],GZ[i][min_y],GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],GZ[i][erstellt]);
Deshalb einfach
GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
bei OnPlayerConnect hinsetzen. Dann hast du den Namen in dieser Variable, und das auslesen aus der Datei sparst du dir auch, ebenso wie das speichern.
Schneller ist es aus der ini keineswegs, wenn du einfach die eine Zeile bei OnPlayerConnect hinmachst, und dann die Variable nutzt.
Naja, falls du das nicht hast, bei OnPlayerConnect:
GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
Speichern:
format(var, 32, "pName=%s\n",PlayerInfo[playerid][pName]);fwrite(hFile, var);
Auslesen:
if( strcmp( key , "pName" , true ) == 0 ) { val = ini_GetValue( Data ); format(PlayerInfo[playerid][pName], MAX_PLAYER_NAME, val); }
Also da hast du garantiert bei der Aufnahme einen Fehler gemacht. Normalerweise haben die NPCs mehrere 100 Kilobyte, deine Datei hat gerade mal 80 Bytes.
Nehme den NPC nochmals neu auf.
=> Gehe an die Position an der du starten willst
=> /ofrecord Joe
=> Laufe deine Strecke ab
=> /stoprecord
Dann sollte es passen.
Hast du diese pwn kompiliert?
Hast du die rec Datei bei den npcmodes drin?
Falls beides ja, lade die rec Datei hier mal als Anhang hoch.
Kannst ja mal posten.
Hast du den Bot als im Fahrzeug oder als zu Fuß aufgenommen?
Hast du andere NPCs ingame, bei denen es klappt?
Hast du denn in deiner Datenbank schon eine Zeile stehen, also die Daten von der ersten GangZone?
Wenn nein, dann musst du das auch erst machen, nicht mit UPDATE aber mit INSERT.
Du könntest auch, um zwei verschiedene Strings zu vermeiden (einmal UPDATE und einmal INSERT) folgendes nutzen:
http://dev.mysql.com/doc/refma…/insert-on-duplicate.html
Verbindet sich der NPC überhaupt auf den Server?
Hast du den NPC auch richtig aufgenommen?
Klappt es, wenn du bei OnPlayerConnect:
if(IsPlayerNPC(playerid)) SpawnPlayer(playerid);
setzt?
Hast du NPCs ingame, bei denen es klappt?
SpawnPlayer bei OnPlayerSpawn ist eine schlechte Idee.
if(IsPlayerNPC(playerid)){
printf("Name = %s", getName(playerid));
if(!strcmp(getName(playerid), "Joe", true)){
printf("Skin 33 zu ID %d", playerid);
RepairAnims(playerid);
SetPlayerSkin(playerid, 33);
ApplyAnimation(playerid, "SMOKING", "M_smklean_loop", 4.0, 1, 0, 0, 0, 0, 0);
}
return 1;
}
Was wird geprintet, wenn du es so laufen lässt?
if(!strcmp(key,dini_Get(SpielerDatei,"Passwort"),false))
zu:
if(!strcmp(key,dini_Get(SpielerDatei,"Passwort"),false) && strlen(key) > 0)
Nein, nicht den Befehl, den Code den du unter "Numpad 4" stehen hast, um den Motor zu starten.
Wenn du den Befehl eingibst klappt es doch, oder?
stock Login(playerid,key[])
{
new SpielerDatei[256], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(SpielerDatei,sizeof(SpielerDatei),"/Accounts/%s.ini",name);
if(!strcmp(key,dini_Get(SpielerDatei,"Passwort"),false))
{
SendClientMessage(playerid,COLOR_RED,"Du hast dich erfolgreich eingeloggt!");
return 1;
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Bitte logge dich mit deinem Passwort in deinem Account ein!","Okay","Abbrechen");
return 1;
}
}
Zudem ist das ganze in dcmd / ocmd / strcmp
Könnte das eventuell Jemand in nur einer einzigen Definition machen ?
Das zu ändern ist nicht schwer, du kopierst das Zeug unter ocmd einfach unter dcmd, der Rest bleibt gleich. Nur bei strcmp zu ändern wird es kompliziert.
Entweder du nutzt strcmp und eines der anderen gleichzeitig, oder du musst den strcmp Befehl eben umschreiben.
Am besten du versuchst dich daran mal, und wenn Fragen auftreten erstellst du einen Thread und erklärst dein Problem.
Dann hast du es nicht richtig gemacht.
Oder du öffnest die pawno.exe über eine Verknüpfung, die auf eine alte Version verlinkt ist.
Starte mal die pawno.exe direkt in deinem Server/pawno/pawno.exe und öffne damit deinen Gamemode. Wenn du die aktuellen Includes hast, muss es klappen.
Und wenn es dann immer noch nicht klappt ist das wahrscheinlich ein SA:MP Bug, oder?
Eigentlich nicht, sonst würde es bei mir auch nicht klappen.
Dann liegt es vielleicht an deinem Spiel, außer es klappt bei dem anderen Spieler auch nicht.
Ich kann es mir aber ehrlich gesagt nicht vorstellen.