Per Schleife.
for(new i = 0; i<ANZAHL; i++) TextDrawShowForPlayer(playerid,TextdrawLoginRegister[i]);
Beiträge von Jeffry
-
-
TextDrawShowForPlayer(playerid,TextdrawLoginRegister[26]);
Zu
for(new i = 0; i<27; i++) TextDrawShowForPlayer(playerid,TextdrawLoginRegister[i]); -
Hmm, ich sehe keinen Fehler.
Wird denn die Datei für das Fahrzeug erstellt, wenn du es mit dem Gutschein einlöst? -
Die Geschwindigkeit ist zu klein, wenn du die Position bewegst. Versuche es so:
MoveObject(Baeume[i][baumid_x],Baeume[i][baum_x],Baeume[i][baum_y],Baeume[i][baum_mz],0.5,0.0,0.0,0.0); -
Ich hab halt lieber weniger escaping bzw. Textverarbeitung.
Geht mir genau so, wahrscheinlich uns allen
Mit Strings zu arbeiten ist in keiner Sprache wirklich toll, wenn man IDs als Alternative hat.Nur, beim Login geht es eben nicht anders, man muss irgendwie vom Name auf die ID schließen.
Cheevy.Shakur:
Zum Login kannst, bzw. musst du es dann mit Name und Passwort abfragen:
mysql_format(MySQL,query,sizeof(query),"SELECT * FROM `"#SERVERTAG"_accounts` WHERE `Name` = '%e' AND `password` = '%e'",GetName(playerid), inputtext); -
Nunja, du hast auch weniger Probleme mit einer SQL Injection ;D
Du kannst den String ja escapen. Daran sollte es nicht scheitern.
Cheevy.Shakur: Ja. Wenn du den Escape noch einbaust, sieht es so aus:
mysql_format(MySQL,query,sizeof(query),"SELECT * FROM `"#SERVERTAG"_accounts` WHERE `Name` = '%e'",GetName(playerid));
%e in mysql_format = escaped string, geht nur in mysql_format, nicht in format. -
In LoginRegisterQuery lädst du ja die Daten aus dem Cache (Geld, ...). Dort lädst du auch die ID.
Sprich, du greifst nur beim Login über den Namen auf den Datensatz zu, bei allem anderem über die ID. -
mysql_format(MySQL,query,sizeof(query),"SELECT * FROM `"#SERVERTAG"_accounts` WHERE `name` = '%e'",SpielerName(playerid));
oder, falls nach Großbuchstaben unterschieden werden soll:
mysql_format(MySQL,query,sizeof(query),"SELECT * FROM `"#SERVERTAG"_accounts` WHERE BINARY `name` = '%e'",SpielerName(playerid)); -
Nein, beim Login musst du nach Name selektieren, da du ja nicht weißt welche ID zu dem Name gehört (außer du selektierst das zuvor extra, aber das macht keinen Sinn).
Erst beim Auslesen des Caches lädst du die ID und kannst ab dann mit der ID arbeiten. -
Wenn du es über IDs machen willst, ja.
Zum Punkt von Beavis:
Genau, deshalb nimmt man eigentlich für alles IDs als Primary Key. Außerdem ist ein Primary Key dafür da, dass man ihn nicht ändert. Eine ID musst du nicht ändern, den Name vielleicht schon irgendwann mal.
Die Empfehlung ist natürlich IDs zu verwenden, aber in der Abfrage macht es keinen Unterschied. -
Es wird minimal schneller sein, da Zahlen schneller verglichen sind als Strings.
Ansonsten macht es keinen Unterschied. -
Zwecks dem Format: Das liegt daran, dass du den Editor verwendest (über der Schriftart). Wähle dort den Quellcode, dann geht es.
Zum Code:
new tode=dini_Int(string,"Tode");
new morde=dini_Int(string,"Morde");
if(morde == 0) morde = 1; //Man kann nicht nur 0 teilen
new Float:KD;
KD = float(tode) / float(morde);
format(string,sizeof(string),"%s{00B9FF}Gesamt: \t{FFFFFF}%i$ \t{00B9FF}K/D: \t{FFFFFF}%0.2f\n",string,money,KD);So dürfte es dann passen. Es ist natürlich die Frage, ob es Sinn macht, das aus der Datei auslesen zu lassen.
-
Poste bitte deinen Code.
-
Du musst in den Codes nachschauen, die von mysql_tquery bzw mysql_pquery aufgerufen werden, aus OnGameModeInit heraus.
-
Dann poste doch bitte die entsprechenden Codes, von Beginn an (also Dialog -> Auswahl -> Funktionen die aufgerufen werden).
Dann können wir das debuggen. Mit den alten Codes kann ich dir das nicht machen. -
else format(string, sizeof(string), "* Du hast den %dten Auto-Schlüssel ausgewählt. (%s)", CarKey[playerid]+1,Kaufliste[index][Name]); //<--- Hier bei (%s)
zu:
else format(string, sizeof(string), "* Du hast den %dten Auto-Schlüssel ausgewählt. (%s)", CarKey[playerid]+1,VehicleNames[Carlist[playerid][CarKey[playerid]][Typ]-400]); //<--- Hier bei (%s)Mit dem VehicleNames-Array von hier: http://pastebin.com/GqkjeAkV
Was du mit der anderen Frage meinst weiß ich nicht.
-
Wie übergibst du denn das houseowner? Also wo setzt du dem einen Wert? Weil im Befehl speicherst du keinen Wert.
Zwecks der anderen Frage:
mysql_format(Handle,query,sizeof(query),"UPDATE user SET Geld='%i',KontoMoney='%i',Level='%i',ALevel='%i',Skin='%i',Sex='%i',Fraktion='%i',OwnHouse='%i',HouseID='%i',Spawn='%i' WHERE BINARY username='%e'",
GetPlayerMoney(playerid),SpielerInfo[playerid][pKonto],GetPlayerScore(playerid),SpielerInfo[playerid][pGender],SpielerInfo[playerid][pALevel],GetPlayerSkin(playerid),SpielerInfo[playerid][pFrak],
SpielerInfo[playerid][pOwnHouse],SpielerInfo[playerid][pHouseID],SpielerInfo[playerid][pSpawn],getPlayerName(playerid));
So reicht es in diesem Fall schon.EDIT: (Post unten)
CaZe: Dankeschön, das wünsche ich dir auch!
-
public CreateTunedCar(playerid, s)
{
if(IsPlayerConnected(playerid) && Carlist[playerid][s][Typ]!=-1)
{
new carid=CreateVehicle(Kaufliste[Carlist[playerid][s][Typ]][Modelid],Carlist[playerid][s][X],Carlist[playerid][s][Y],Carlist[playerid][s][Z],Carlist[playerid][s][Rotation],-1,-1,-1);
if(Carlist[playerid][s][Lock]==1)
{
SetVehicleParamsForAll(carid,0,1);
SetVehicleParamsForPlayer(carid,playerid,0,0);
}
if(Carlist[playerid][s][mod1]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod1]); }
if(Carlist[playerid][s][mod2]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod2]); }
if(Carlist[playerid][s][mod3]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod3]); }
if(Carlist[playerid][s][mod4]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod4]); }
if(Carlist[playerid][s][mod5]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod5]); }
if(Carlist[playerid][s][mod6]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod6]); }
if(Carlist[playerid][s][mod7]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod7]); }
if(Carlist[playerid][s][mod8]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod8]); }
if(Carlist[playerid][s][mod9]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod9]); }
if(Carlist[playerid][s][mod10]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod10]); }
if(Carlist[playerid][s][mod11]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod11]); }
if(Carlist[playerid][s][mod12]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod12]); }
if(Carlist[playerid][s][mod13]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod13]); }
if(Carlist[playerid][s][mod14]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod14]); }
if(Carlist[playerid][s][mod15]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod15]); }
if(Carlist[playerid][s][mod16]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod16]); }
if(Carlist[playerid][s][mod17]!=-1) { AddVehicleComponent(carid,Carlist[playerid][s][mod17]); }
if(Carlist[playerid][s][Paintjob]!=-1) { ChangeVehiclePaintjob(carid,Carlist[playerid][s][Paintjob]); }
if(Carlist[playerid][s][Farbe1]!=-1) { ChangeVehicleColor(carid,Carlist[playerid][s][Farbe1],Carlist[playerid][s][Farbe2]); }
return carid;
}
return 1;
}und
Carlist[playerid][s][Carid]=CreateTunedCar(playerid);
zu:
Carlist[playerid][s][Carid]=CreateTunedCar(playerid,s); -
es ist drin mit user
Heißt es hat geklappt?Zwecks dem Cache auslesen: Nein, das muss ein Code sein, der durch OnGameModeInit aufgerufen wird, da es die gleiche Zeit hat.
-
Kannst du bitte die Zeilen mit
nummerieren?EDIT:
Danke.
CaZe:
Dann ist houseowner -1. Schau mal wie du dem einen Wert zuweist, vielleicht hast du da etwas vergessen.