Sobald ich aber nur die Fahrzeuge ausklammere, kann ich compilen und oben steht auch die 33..
In welchem Callback (public) steht der Code?
Poste gegebenenfalls bitte mal das ganze Callback.
Sobald ich aber nur die Fahrzeuge ausklammere, kann ich compilen und oben steht auch die 33..
In welchem Callback (public) steht der Code?
Poste gegebenenfalls bitte mal das ganze Callback.
Mach da mal noch
FVehicleTuning(fv);
zu:
FVehicleTuning(fid);
Der Rest sieht gut aus.
Wo ist jetzt noch das Problem? Bei den Häusern oder bei den Fahrzeugen? Oder beidem?
Hast du deine Lade-Funktion der Fahrzeuge geprüft? Falls nicht, poste diese bitte hier.
Ich nehme an, dass dort das gleiche Problem besteht, wie bei den Häusern.
Setze das Wetter zu ID 2.
SetWeather(2);
Ich nehme an dort befindet sich das gleiche Problem wie bei den Häusern, siehe Post #6.
Wahrscheinlich werden leere Zeilen beim Laden das Problem verursachen.
Absolut Falsch!
Der Syntax muss anders Lauten!
Nein.
Da er keine Haus-ID 0 hat ist das korrekt so.
Deine Variante würde nur funktionieren, wenn die Haus-ID (haus) 0 ist, das macht wenig Sinn.
Deshalb sollst du einen aktuellen Versuch machen, ob es nach wie vor auftritt, nach einem Neustart des Servers.
Wenn es wieder auftritt, poste bitte den aktuellen Log sowie einen Screenshot aus der Datenbank.
[14:59:33] [ERROR] error #1062 while executing query "INSERT INTO ML_properties (id) VALUES ('13')": Duplicate entry '13' for key 'PRIMARY' (C:\Users\Jerem\Desktop\Ml Server\Server\gamemodes\GeTmyselfmade.pwn:12811)
14:59 ist schon eine Weile her.
Hast du den Server auch mit dem aktuellen Code neu gestartet?
Was passiert, wenn du zwei neue Häuser erstellst?
Was hast du zuvor mit der ID 12 gemacht? Wo ist die hin?
Starte den Server nach der Installation neu.
Was passiert denn, wenn du das heruntergeladene Paket startest?
Starte es gegebenenfalls als Administrator.
Ah, sorry. Das "hid" hat noch in der Deklaration gefehlt.
new row = 0;
zu:
new row = 0, hid;
kann aber all in one runtimes nicht installieren auf win server
Warum?
Sofern das Query von der Syntax her passt, ja.
Installiere dieses All-In-One-Paket, es enthält alle im Normalfall notwendigen Runtimes:
http://www.chip.de/downloads/A…ne-Runtimes_37449838.html
Achte auch darauf, dass alle Plugins im Ordner /plugins/ liegen.
Das Problem hier ist, dass du die Zeilen Zeile für Zeile in das Array schreibst.
Fehlt dazwischen eine, dann wird das ignoriert, was dazu führt, dass sich die IDs verschieben/überschreiben.
Du musst die ID aus der Zeile (im Code nachfolgend "row") lesen und mit dieser ID (im Code nachfolgend "hid") in das Array schreiben.
Das sieht dann so aus:
case _SQL_HAUS_LOAD:
{
cache_get_row_count(rows);
new row = 0, hid;
if(rows)
{
while(row<rows)
{
cache_get_value_name(row,"id",result);
hid = strval(result);
HausInfo[hid][hauscreatet] = 1;
cache_get_value_name(row,"haus_besitzer",result); strmid(HausInfo[hid][haus_besitzer],result,0,strlen(result),24);
cache_get_value_name(row,"haus_Owned",result); HausInfo[hid][haus_Owned] = strval(result);
cache_get_value_name(row,"haus_innenraum",result); HausInfo[hid][haus_innenraum] = strval(result);
cache_get_value_name(row,"haus_miete",result); HausInfo[hid][haus_miete] = strval(result);
cache_get_value_name(row,"haus_beschreibung",result); strmid(HausInfo[hid][haus_beschreibung],result,0,strlen(result),150);
cache_get_value_name(row,"haus_locked",result); HausInfo[hid][haus_locked] = strval(result);
cache_get_value_name(row,"haus_slots",result); HausInfo[hid][haus_slots] = strval(result);
cache_get_value_name(row,"haus_eingemitetenzaehler",result); HausInfo[hid][haus_eingemitetenzaehler] = strval(result);
cache_get_value_name(row,"haus_x",result); HausInfo[hid][haus_x] = floatstr(result);
cache_get_value_name(row,"haus_y",result); HausInfo[hid][haus_y] = floatstr(result);
cache_get_value_name(row,"haus_z",result); HausInfo[hid][haus_z] = floatstr(result);
cache_get_value_name(row,"haus_preis",result); HausInfo[hid][haus_preis] = strval(result);
cache_get_value_name(row,"haus_level",result); HausInfo[hid][haus_level] = strval(result);
cache_get_value_name(row,"haus_geldkasse",result); HausInfo[hid][haus_geldkasse] = strval(result);
cache_get_value_name(row,"haus_Opium",result); HausInfo[hid][haus_Opium] = strval(result);
cache_get_value_name(row,"haus_c4",result); HausInfo[hid][haus_c4] = strval(result);
cache_get_value_name(row,"haus_Ganja",result); HausInfo[hid][haus_Ganja] = strval(result);
cache_get_value_name(row,"haus_Kokain",result); HausInfo[hid][haus_Kokain] = strval(result);
cache_get_value_name(row,"haus_materials",result); HausInfo[hid][haus_materials] = strval(result);
cache_get_value_name(row,"haus_heal",result); HausInfo[hid][haus_heal] = strval(result);
cache_get_value_name(row,"haus_armour",result); HausInfo[hid][haus_armour] = strval(result);
cache_get_value_name(row,"haus_hatheal",result); HausInfo[hid][haus_hatheal] = strval(result);
cache_get_value_name(row,"haus_hatarmour",result); HausInfo[hid][haus_hatarmour] = strval(result);
cache_get_value_name(row,"hausgundumper",result); HausInfo[hid][haus_waffenschrank] = strval(result);
new savestring[20];
for(new i=0;i<13;i++)
{
format(savestring,sizeof(savestring),"hausgun%i",i);
cache_get_value_name(row,savestring,result);
HausInfo[hid][haus_gun][i] = strval(result);
format(savestring,sizeof(savestring),"hausgunammo%i",i);
cache_get_value_name(row,savestring,result);
HausInfo[hid][haus_gunammo][i] = strval(result);
}
cache_get_value_name(row,"hausmull",result);
HausInfo[hid][hausmull] = strval(result);
cache_get_value_name(row,"haus_msg",result);
strmid(HausInfo[hid][haus_msg],result,0,strlen(result),150);
HausLabel[hid] = CreateDynamic3DTextLabel("LOAD",HAUSCOLOR,HausInfo[hid][haus_x],HausInfo[hid][haus_y],HausInfo[hid][haus_z] +1,20.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1,0);
CreateDynamicPickup(19198,1,Homestore[HausInfo[hid][haus_innenraum]][Hx],Homestore[HausInfo[hid][haus_innenraum]][Hy],Homestore[HausInfo[hid][haus_innenraum]][Hz],-1,-1);
if(HausInfo[hid][haus_Owned] == 1)
{
HausInfo[hid][haus_pickup] = CreateDynamicPickup(OWNEDHAUSPICKUP,1,HausInfo[hid][haus_x],HausInfo[hid][haus_y],HausInfo[hid][haus_z],0);
mysql_tquery(MySqlConnection,"SELECT * FROM accounts","OnQueryFinish","siii","SELECT * FROM accounts",_SQL_HAUSTIME_CHECK,hid,_:MySqlConnection);
}
else if(HausInfo[hid][haus_Owned] == 0)
{
HausInfo[hid][haus_pickup] = CreateDynamicPickup(NOTOWNEDHAUSPICKUP,1,HausInfo[hid][haus_x],HausInfo[hid][haus_y],HausInfo[hid][haus_z],0);
}
UpdateHausLabel(hid,HausInfo[hid][haus_Owned]+1);//funktion 1 wenn das haus ohne besitzer ist,funktion 2 wenn das biz mit besitzer ist
row++;
}
}
printf("- Häuser geladen %i/%i -",rows,MAX_HAUS);
print("- Aktivität der Hausbesitzer kontrolliert -");
return 1;
}
Wie sieht der Code zum Laden der Häuser aus der Datenbank aus?
tut der das drüber kopiren
Wo wird was drüber kopiert?
(My)SQL zu nutzen würde da natürlich am meisten Sinn machen.
Wenn du es aber ohne SQL machen willst, dann empfehle ich es aus Performancegründen so:
new numberFile[32];
format(numberFile, 32, "PhoneNumbers/%d.ini", number);
if(dini_Exists(numberFile))
{
return SendClientMessage(playerid, COLOR_GREY, "Fehler: Diese Nummer wird bereits genutzt.");
}
else
{
dini_Create(numberFile);
//Nummer vergeben
}
Sprich, du erstellst für jede existierende Nummer (sobald sie existiert) eine separate Datei im Ordner "PhoneNumbers".
In diese Datei kannst du dann auch Informationen zu dieser Nummer packen, zum Beispiel den Besitzer, das Guthaben, etc.
Den Besitzer würde ich auf jeden Fall eintragen, somit hast du immer die direkte Verbindung.
In die User-File des Besitzers schreibst du dann die Nummer rein, so kommst du immer von User zu Nummer und von Nummer zu User.