Hast du in der MySQL Datenbank die Spalte id als Primary Key und Auto_Increment eingestellt?
Gerne mal die Tabellenstruktur zeigen ![]()
Hast du in der MySQL Datenbank die Spalte id als Primary Key und Auto_Increment eingestellt?
Gerne mal die Tabellenstruktur zeigen ![]()
Ah, wie sieht denn OnHausCreated aus?
Nabend,
was kann es sein das ich in einen script mit warnings bekomme und in ein anderen script nicht
pawno bug ? oder was ist das....
1. Der Editor heißt Pawno, die Sprache nur Pawn
Wenn wäre es ein Pawn Bug, aber ich sage mal so, das wäre sehr unwahrscheinlich xD
2. Was ist denn der Warning...wie ist das Enum definiert...paar mehr Infos bitte ![]()
Nur wie gesagt kommt der nicht zum Einsatz.
Gesagt wurde das nicht, aber ok.
Ja, ich glaube ich verstehe was du sagen wolltest.
Geh mal unter OnGameModeInit und füge das hier da ganz oben ein:
Das Problem ist nämlich, dass die IDs von CreatePickup und Create3DTextLabel bei 0 starten und das der Standard Wert von den Icons ist.
Damit umgehst du quasi diesen "ID 0 BUG" ![]()
jedoch ist es weiterhin in der Datenbank vorhanden.
Dann liegt das Problem vermutlich im Lösch Befehl des Hauses ![]()
Also diesen gerne mal posten gerade das Query.
Vermutlich schlägt auch einfach das Query fehl, über den mysql_log können solche Fehler sehr gut erkannt werden ![]()
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..