SET besitzer '%s'
Muss SET besitzer='%s' heißen
updateHouse wäre interessant zu sehen, vermutlich wird da kein DestroyPickup aufgerufen
SET besitzer '%s'
Muss SET besitzer='%s' heißen
updateHouse wäre interessant zu sehen, vermutlich wird da kein DestroyPickup aufgerufen
Gerade mal in der Doku nachgeschaut:
You have to provide the size (max_len) by yourself if you use an enum-array as destination.
Also schreib es mal so und versuch es erneut:
OnHausesLoad wird so aufgerufen unter OnGameModeInit
Nur als Info, wenn du kein format nutzen musst, dann nutze es nicht Das spart dir viel Speicher & Zeit, kannst es einfach so schreiben:
das Public ist dieses:
Kannst es so schreiben:
public OnHausesLoad()
{
new rows;
cache_get_row_count(rows);
for(new i,id,string[128]; i<rows; i++)
{
id = getFreeHausID();
cache_get_value_name_float(i,"h_x", hInfo[id][h_x]);
cache_get_value_name_float(i,"h_y", hInfo[id][h_y]);
cache_get_value_name_float(i,"h_z", hInfo[id][h_z]);
cache_get_value_name_float(i,"ih_x", hInfo[id][ih_x]);
cache_get_value_name_float(i,"ih_y", hInfo[id][ih_y]);
cache_get_value_name_float(i,"ih_z", hInfo[id][ih_z]);
cache_get_value_name_int(i,"h_interior", hInfo[id][h_interior]);
cache_get_value_name(i,"besitzer", hInfo[id][h_besitzer]);
cache_get_value_name_int(i,"id", hInfo[id][h_id]);
cache_get_value_name_int(i,"h_preis", hInfo[id][h_preis]);
printf("Besitzer: %s\n",hInfo[id][h_besitzer]); //<< schau mal, was er hier dir im server_log ausgibt ;)
if(!hInfo[id][h_besitzer][0])
{
hInfo[id][h_pickup] = CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
format(string,sizeof(string),"Zu Verkaufen\nPreis: %i$\n/buyhouse",hInfo[id][h_preis]);
hInfo[id][h_text] = Create3DTextLabel(string, WEISS,hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
}
else
{
hInfo[id][h_pickup] = CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
format(string,sizeof(string),"Besitzer: %s\n/enter",hInfo[id][h_besitzer]);
hInfo[id][h_text] = Create3DTextLabel(string, WEISS,hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
}
}
return 1;
}
Alles anzeigen
und die Struktur meiner DB sieht so aus:
Jaaa, das ist auch gut zu wissen, mich würde nur viel Lieber interessieren, ob da wirklich Namen drinnen stehen.
Also was die Einträge in der Tabelle sind
Wie wird denn OnHausesLoad aufgerufen?
Und steht es in der DB richtig?
Hast du den Debug mysql log, wird denn alles richtig in der Datenbank gespeichert?
Was steht denn Schlussendlich im Label?
Mit print kannst du dir den Namen auch mal ausgeben lassen und validieren was drinnen steht
aber jetzt startet es nicht bei 0 sondern bei 3?
Ja, das ist auch richtig. Die ID ist immer fortlaufend und das ist auch gar nicht schlimm
Beispiel:
1
2
3
4
löscht du die 3, bleibt die Zahl danach ja auch erhalten und fügst du nun ein weiteres hinzu, wird es ID 5
new query[128];
Ich glaube dein Query ist einfach nur zu klein
Mach daraus mal ein new query[256];
Ändere mal in der Datenbank float zu double
Kannst du uns die Tabellenstruktur zeigen in Mysql?
#Handy
jedoch wird leider nichts in der DB gespeichert
Dafür empfiehlt es sich den mysql_log auf DEBUG zu setzen unter OnGameModeInit und anschließend den mysql.log mal anzuschauen
Kannst ihn gerne auch hier posten.
Du darfst dich von der Bezeichnung von Variablen nicht verwirren lassen
Es spielt in diesem Beispiel ja gar keine Rolle, wie du die Variable bezeichnest, alle besitzen den selben Wert von x und zwar 5.
Das mit dem pID wird nur oft gemacht, damit man in diesem Kontext weiß, dass die Variable den Wert von einer anderen Spielerid enthält.
Aber in diesem Fall erstellst du ja das Fahrzeug für playerid. Also brauchst du keine weitere Variable.
Wie du es zuvor gelöst hattest mit dem pID, da war der Wert immer auf 0, das hätte ja so oder so nicht funktioniert. Irgendwo muss der Wert für den Spieler ja herkommen
3x number of arguments does not match definition
Du rufst folgendes auf:
createPlayerCar(pID,vehid,color[0],color[1], Pos[0], Pos[1], Pos[2], Pos[3], -1);
definiert ist es aber:
createPlayerCar(playerid, modelid, Float:x,Float:y,Float:z,Float:r)
Wie du siehst, hast du color[0], color[1] und die -1 am Ende gar nicht in der Funktion oben angegeben.
createPlayerCar(playerid, modelid, c1,c2, Float:x,Float:y,Float:z,Float:r, respawn=-1)
{
for(new i=0; i <sizeof(carInfo); i++)
{
if(carInfo[i][id_x] !=0)continue;
format(carInfo[i][besitzer], MAX_PLAYER_NAME,"%s",SpielerName(playerid));
carInfo[i][c_x] = x;
carInfo[i][c_y] = y;
carInfo[i][c_z] = z;
carInfo[i][c_r] = r;
carInfo[i][c_x] = x;
carInfo[i][car_farbe] = c1;
carInfo[i][car_farbe2] = c2;
carInfo[i][model] = modelid;
carInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,c1,c2,respawn);
new string[128];
format(string,sizeof(string),"[ {FF3E00}AdminCMD{FFFFFF} ]: Du hast ein Fahrzeug für %s mit der (ID: %i) erstellt!",SpielerName(pID), i);
SCM(playerid,WEISS,string);
saveCarToDB(i);
return 1;
}
return 1;
}
Alles anzeigen
Sieht dann so aus.
Das respawn=-1 in der Parameterliste oben sorgt btw dafür, dass der default wert von der Respawn-Zeit bei -1 liegt.
Sprich du könntest es auch nur so aufrufen:
createPlayerCar(pID,vehid,color[0],color[1], Pos[0], Pos[1], Pos[2], Pos[3]);
und es würde funktionieren (da -1 default gesetzt wird)
Okay keine Ahnung irgendwas blockiert bei dir die Weitergabe der cmds an das Plugin.
Dann musst du halt ocmd und Lösung 2 verwenden...
Aber das ultra merkwürdig...kp was für Code du da sonst noch so nutzt..
Hmmm debugging wäre jetzt interessant...
füge das mal deinem Skript hinzu und gib nochmal einen Befehl ein:
public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
printf("%s|%d",cmd,flags); //Und dann schau mal im server log, ob das ausgegeben wird
return 1;
}
public PC_OnInit()
{
print("CMD Plugin loaded!");
return 1;
}
Alles anzeigen
Wenn nichts im Server Log steht, wird das Plugin bei dir nicht richtig geladen...
Und es passiert einfach nichts?!
Kann ich mir nicht erklären...noch nie erlebt.
Also du hast mehrere Befehle ausprobiert und keiner klappt mehr?
Und du bist sicher, dass du kein OnPlayerCommandText mehr nutzt...und keine andere CMD Prozessoren, wie ycmd, ocmd, zcmd...o.ä.?
Was für Includes nutzt du denn alles?
//Edit:
Achso ja, du musst noch einen Befehl eingeben und dann den Log zeigen xD
Aber bisher sieht alles unauffällig aus, sehr komisch...
Einfach den normalen server log, da werden die mit reingeschrieben
Nutze mal crashdetect und könntest du den server.log hier zeigen?
Kann mir sonst keinen Reim auf die Sache machen.