Da ist nix Definirt
Doch natürlich, es gibt doch ein enum, wo so Dinge wie pFschein etc definiert sind
Da ist nix Definirt
Doch natürlich, es gibt doch ein enum, wo so Dinge wie pFschein etc definiert sind
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)