mach das h vor den HausDb im enum weg
Beiträge von Beavis
-
-
ok
Schreib mal im Enum das oben rein:
HausDB
dann das Laden so machen
stock LoadHouses()
{
new query[64],string[128];
mysql_query("SELECT * FROM `Houses`;");
mysql_store_result();
for(new i=0;i<mysql_num_rows();i++)
{
if(mysql_retrieve_row())
{
mysql_fetch_field_row(query,"Besitzer"); format(HausInfo[i][hBesitzer],64,"%s",query);
mysql_fetch_field_row(query,"Kaufpreis"); HausInfo[i][hKaufpreis] = strval(query);
mysql_fetch_field_row(query,"IconX"); HausInfo[i][hIconX] = floatstr(query);
mysql_fetch_field_row(query,"IconY"); HausInfo[i][hIconY] = floatstr(query);
mysql_fetch_field_row(query,"IconZ"); HausInfo[i][hIconZ] = floatstr(query);
mysql_fetch_field_row(query,"IconID"); HausInfo[i][hIconID] = strval(query);
mysql_fetch_field_row(query,"SpawnX"); HausInfo[i][hSpawnX] = floatstr(query);
mysql_fetch_field_row(query,"SpawnY"); HausInfo[i][hSpawnY] = floatstr(query);
mysql_fetch_field_row(query,"SpawnZ"); HausInfo[i][hSpawnZ] = floatstr(query);
mysql_fetch_field_row(query,"InteriorID"); HausInfo[i][hInteriorID] = strval(query);
mysql_fetch_field_row(query,"HausID"); HausInfo[i][HausDB] = strval(query);
format(string,sizeof(string),"--== Freistehendes Haus ==--\nDieses Haus steht zum Verkauf\nBenutze: /buyhouse\nKaufpreis: {FFCC00}$%d",HausInfo[i][hKaufpreis]);
Create3DTextLabel(string,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
CreatePickup(HausInfo[i][hIconID],1,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]);
}
}
mysql_free_result();
return 1;
}
löschen dann so:
format(query,128,"DELETE FROM `Houses` WHERE `HausID` = '%d'",HausInfo[i][HausDB]);//nachtrag
Alles was du beim haus updatest, musst du dann so mit der Hausid machen:
format(query,128,"..... WHERE `HausID` = '%d'",HausInfo[i][HausDB]);
Sonst updatet er dir nichts -
sende dir den query mal als nachicht
daran kannst du sehen ob das Haus gelöscht wurde oder nicht -
sicher?
Lösch auch das Pickup und das Label dann wirst du es sehen -
ersetzte AND durch ein ,
"UPDATE `Houses` SET `SpawnX`='302.180999' , SpawnY='300.722991' , SpawnZ='999.148437' WHERE `HausID` = '%d'"
-
Ja ich habs auf die schnelle gemacht
Da ich mit den Strickenkid plugin arbeite ist meine Vorgehensweise ja vollkommen anders
Schleife für alle Einträge damit auch die HausInfo IDs gesetzt werden
bei ner While müsste ich nen Intger immer ++ nehmen das brauch ich bei der schleife nicht mehr
-
Ja so löscht du es
Aber zu den Laden das könntest du auch so machen
stock LoadHouses()
{
new query[64],string[128];
mysql_query("SELECT * FROM `Houses`;");
mysql_store_result();
for(new i=0;i<mysql_num_rows();i++)
{
if(mysql_retrieve_row())
{
mysql_fetch_field_row(query,"Besitzer"); format(HausInfo[i][hBesitzer],64,"%s",query);
mysql_fetch_field_row(query,"Kaufpreis"); HausInfo[i][hKaufpreis] = strval(query);
mysql_fetch_field_row(query,"IconX"); HausInfo[i][hIconX] = floatstr(query);
mysql_fetch_field_row(query,"IconY"); HausInfo[i][hIconY] = floatstr(query);
mysql_fetch_field_row(query,"IconZ"); HausInfo[i][hIconZ] = floatstr(query);
mysql_fetch_field_row(query,"IconID"); HausInfo[i][hIconID] = strval(query);
mysql_fetch_field_row(query,"SpawnX"); HausInfo[i][hSpawnX] = floatstr(query);
mysql_fetch_field_row(query,"SpawnY"); HausInfo[i][hSpawnY] = floatstr(query);
mysql_fetch_field_row(query,"SpawnZ"); HausInfo[i][hSpawnZ] = floatstr(query);
mysql_fetch_field_row(query,"InteriorID"); HausInfo[i][hInteriorID] = strval(query);
format(string,sizeof(string),"--== Freistehendes Haus ==--\nDieses Haus steht zum Verkauf\nBenutze: /buyhouse\nKaufpreis: {FFCC00}$%d",HausInfo[i][hKaufpreis]);
Create3DTextLabel(string,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
CreatePickup(HausInfo[i][hIconID],1,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]);
}
}
mysql_free_result();
return 1;
} -
Gibts da unterschiede?
Ja einige darum frage ich immer da ich Blue G sein Plugin nicht mehr nutzeSchau mal mein alten Post an hab da was editiert
an den sscanf liegt es nicht -
das plugin von Blue G nutzt du oder?
Dann schreib ich es dir mal eben umTeste mal das hier
stock LoadHouses()
{
new query[512],string[128];
mysql_query("SELECT Besitzer,Kaufpreis,IconX,IconY,IconZ,IconID,SpawnX,SpawnY,SpawnZ,InteriorID FROM `Houses`");
mysql_store_result();
for(new i=0;i<mysql_num_rows();i++)
{
mysql_fetch_row_format(query);
sscanf(query,"p<|>s[24]ifffifffi",
HausInfo[i][hBesitzer],
HausInfo[i][hKaufpreis],
HausInfo[i][hIconX],
HausInfo[i][hIconY],
HausInfo[i][hIconZ],
HausInfo[i][hIconID],
HausInfo[i][hSpawnX],
HausInfo[i][hSpawnY],
HausInfo[i][hSpawnZ],
HausInfo[i][hInteriorID]);
format(string,sizeof(string),"--== Freistehendes Haus ==--\nDieses Haus steht zum Verkauf\nBenutze: /buyhouse\nKaufpreis: {FFCC00}$%d",HausInfo[i][hKaufpreis]);
Create3DTextLabel(string,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
CreatePickup(HausInfo[i][hIconID],1,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]);
}
mysql_free_result();
return 1;
} -
Ihr solltet euch mal das MySQL Referenzbuch durchlesen
Was ihr hier für ein Müll reinpostet kann man nicht fassenWozu 2 Querys?!
Einer reicht
stock LoadHouses()
{
new query[512],string[128];
mysql_query("SELECT Besitzer,Kaufpreis,IconX,IconY,IconZ,IconID,SpawnX,SpawnY,SpawnZ,InteriorID FROM `Houses`");
mysql_store_result();
for(new i=0;i<mysql_num_rows();i++)
{
mysql_fetch_row(query);
sscanf(query,"p<|>s[24]ifffifffi",
HausInfo[i][hBesitzer],
HausInfo[i][hKaufpreis],
HausInfo[i][hIconX],
HausInfo[i][hIconY],
HausInfo[i][hIconZ],
HausInfo[i][hIconID],
HausInfo[i][hSpawnX],
HausInfo[i][hSpawnY],
HausInfo[i][hSpawnZ],
HausInfo[i][hInteriorID]);
format(string,sizeof(string),"--== Freistehendes Haus ==--\nDieses Haus steht zum Verkauf\nBenutze: /buyhouse\nKaufpreis: {FFCC00}$%d",HausInfo[i][hKaufpreis]);
Create3DTextLabel(string,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
CreatePickup(HausInfo[i][hIconID],1,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ]);
}
mysql_free_result();
return 1;
} -
Enums sind immer besser
PVar lohnt sich meist wenn du vom Gamemode in ein Filterscript anwendest denn das geht damit (auch umgekehrt)
Wenn du es nicht benötigst dann nutz lieber Enums da die schneller sind
-
Preisdumping ist nun mal nicht alles!
Wenn man es nicht hin bekommt mit seinen Preisen entsprechenden Service zu bieten (darunter zähle ich auch Schutz und Maßnahmen gegen sowas), dann muss man eben die Preise anheben!Aber die dauernden Downtimes sind doch ein Witz.
-
SetTimerEx("TutorialTimer",20000,true,"i",playerid);
durch den ersetzen
SetTimerEx("TutorialTimer",20000,false,"i",playerid);
Du startest immer wieder ein Timer dadurch spammt er dich zu
mach die ganzen Timer statt true einfach aus false und das Problem ist nicht mehr vorhanden -
Du brichst die schleife immer ab
Wenn es die nummer nicht gibt hast du ein return gesetzt
Resultat ist das er den Code nicht weiter ausführtIch hab ihn dir mal umgeschrieben
ocmd:sms(playerid,params[])
{
if(mobiInfo[playerid][Handy]!=1) return SendClientMessage(playerid,Gelb,"Du besitzt kein Handy! Kaufe dir eins im 24/7!");
new cnumber,smstext[128],stringtop[128],bool:numb = false;
if(sscanf(params,"ds[128]",cnumber,smstext)) return SendClientMessage(playerid,Weiss,"Benutzung: /sms [Nummer] [Text]");
for(new i=0; i< MAX_PLAYERS; i++)
{
if(mobiInfo[i][Handynummer]!=cnumber) continue;
format(stringtop,sizeof(stringtop),"SMS an %d: %s",cnumber,smstext);
SendClientMessage(playerid,Hellgruen,stringtop);
format(stringtop,sizeof(stringtop),"SMS von %d: %s",mobiInfo[playerid][Handynummer],smstext);
SendClientMessage(i,Hellgruen,stringtop);
GivePlayerMoney(playerid,-15);
numb = true;
break;
}
if(!numb)SendClientMessage(playerid,Gelb,"Diese Nummer gibt es nicht!");
return 1;
}
Sollte so gehen -
Dann teste das hier mal
new query[128],bool:requireEmail = false,data[64],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
format(query, sizeof(query), "SELECT * FROM `User` WHERE `Name` = '%s' LIMIT 1;", playername);
mysql_query(query,-1,-1,connection);
mysql_store_result(connection);
if(mysql_num_rows(connection))
{
mysql_fetch_row_data(connection);
mysql_fetch_field("ID",data,connection); SetPVarInt(playerid,DBID_KEY,strval(data));
mysql_fetch_field("Admin",data,connection); SetPVarInt(playerid,ADMIN_KEY,strval(data));
mysql_fetch_field("Email",data,connection); SetPVarString(playerid,EMAIL_KEY,data);
if(!strcmp(data,"notset",true) && strlen(data) != 0){requireEmail = true;}
mysql_fetch_field("Kills",data,connection); SetPVarInt(playerid,KILLS_KEY,strval(data));
mysql_fetch_field("Tode",data,connection); SetPVarInt(playerid,TODE_KEY,strval(data));
mysql_fetch_field("Warn",data,connection); SetPVarInt(playerid,WARN_KEY,strval(data));
mysql_fetch_field("Prison",data,connection); SetPVarInt(playerid,PRISON_KEY,strval(data));
}
else
{
//Acc nicht vorhanden
}
mysql_free_result(connection);mysql_fetch_row_data(connection);
Das bewirkt das die Select werte zwischengespeichert werden damit fetch field die sauber auslesen kann
-
Der Fehler lag hier
gcInfo[code=c][i][gcID] = INI_ReadInt("ID");
gcInfo[code=c][i][gcID] = INI_ReadInt("Model");
gcInfo[code=c][i][gcID] = INI_ReadInt("Gang");
und noch an der Deklarierung -
Ok
Das problem scheint tiefer zu liegen^^
habt ihr TV? wenn ja lasst mir mal die daten zukommen -
lädt er garnichts bei meinen oder was?
Exestieren die Ordner?
Sind sie richtig benannt? -
Teste mal das hier
Ich hab es mal etwas kürzer und übersichtlicher geschrieben^^
LadeGangCars()
{
new path[60],count = 0;
for(new c=0;c<24;c++)
{
if((c==5) || (c==6) || (c==8) || (c==11) || (c==12) || (c==13) || (c==14) || (c==15) || (c==16) || (c==17) || (c==18) || (c==19) || (c==20) || (c==21) || (c==23))//jenachdem Anpassen
{
for(new i=0;i<MAX_GANG_CARS;i++)
{
format(path, sizeof path, "/GangCars/%d/%d.ini",c,i);
if(!fexist(path))continue;
if(INI_Open(path))
{
gcInfo[code=c][i][gcID] = INI_ReadInt("ID");
gcInfo[code=c][i][gcID] = INI_ReadInt("Model");
gcInfo[code=c][i][gcID] = INI_ReadInt("Gang");
gcInfo[code=c][i][gcX] = INI_ReadFloat("pX");
gcInfo[code=c][i][gcY] = INI_ReadFloat("pY");
gcInfo[code=c][i][gcZ] = INI_ReadFloat("pZ");
gcInfo[code=c][i][gcA] = INI_ReadFloat("Angle");
INI_Close();
gcInfo[code=c][i][gcCarID] = AddStaticVehicle(gcInfo[code=c][i][gcModel],gcInfo[code=c][i][gcX],gcInfo[code=c][i][gcY],gcInfo[code=c][i][gcZ],gcInfo[code=c][i][gcA],GetFrakCarColor(gcInfo[code=c][i][gcGang]),GetFrakCarColor(gcInfo[code=c][i][gcGang]));
count++;
}
}
}
}
return printf("%d Fraktionsautos wurden geladen",count);
} -