Bevor man mit MySQL arbeitet,sollte man sich vielleicht die Grundlagen aneigenen.
http://www.w3schools.com/sql/sql_select.asp
Beiträge von Goldkiller
-
-
Wunderbare Copy&Paste Lösung.
- Ich besitze die Funktion isPlayerAnAdmin nicht
- Die Variable cmd ist bei mir nicht deklariert
- Die Funktion strtok besitze ich nicht
Die Farben jetzt mal ausgelassen. -
Zitat
stock GIP(playerid)
{
new playersip[50];
GetPlayerIp(playerid, playersip, sizeof(playersip));
}
Was macht diese Funktion ?//Goldkiller: Folgendes ist/war gemeint:
http://forum.sa-mp.de/san-andr…einfacherung/#post1537883 -
http://wiki.sa-mp.com/wiki/SetVehicleNumberPlate
ZitatThis function has no internal error checking. Do not assign custom number plates to vehicles without plates (boats etc) as this will result in some unneeded processing time on the client.
The vehicle must be respawned or restreamed for the changes to take effect.
There's a limit of 32 characters on each numberplate (including embedded colors).
This function only works in versions 0.2.1, 0.2.2, 0.2x and 0.3c (and beyond). -
Der Zeilenumbruch ist nun mal ein besonders Sonderzeichen (?) . Alleine schon beim auslesen wirst du hier Schwierigkeiten haben, denn der Zeilenumbruch "stört".
Du kannst es ja auch mal mit \0 probieren, da wirst du auch nur Probleme mit haben.
Es gibt vielleicht auch bessere / einfachere Lösungen, jedenfalls kenne ich keine. Ich weiss aber nun mal auch nicht alles ;). -
Ich hatte das Problem auch mal, hab es wie folgt gelößt.Der Tipp von XeroX ist eigentlich ganz gut.
Anstatt "\n" habe ich als Kennzeichnung für eine Neue Zeile "~n~" benutzt und trage es auch so in die Datenbank ein.
Beim Auslesen gibt es dann zunächst keine Problem. Nun muss man aber beim Anzeigen im Dialog ( zB ) aus dem "~n~" wieder ein "\n" machen.
Dabei ist aber zu beachten, dass man \n als CHAR einfügen muss ( Zumindest kenn Ich keine bessere Lösung ). Es klappt nicht,wenn du "~n~" mit "\n" ersetzt. Du brauchst \n als Character.Kleiner Pseudocode:
text = Hallo,ich bin der Text~n~aus der Datenbank~n~~n~Ciao.
text = replace("~n~","%c",text) // - Ja, %c
format( text , size , text , '\n' ) // %c mit '\c' ersetzten
text // fertigNur zum Anzeigen wandel ich das ~n~ in \n um. In die Datenbank schreibe ich es immer mit ~n~.
-
-
Wozu brauch man die Teamviewer Daten,wenn doch das Erste
dochProblem ersichtlich ist.stock create_player_car(playerid,Float:pX,Float:pY,Float:pZ,Float:pA,c1,c2) {
new query[128], name[MAX_PLAYER_NAME]; // <- Der String ist definitiv zu klein. 200 sollte reichen
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(query,128,"INSERT INTO `usercars` (`Besitzer`,`CarID`,`PosX`,`PosY`,`PosZ`,`PosA`,`Farbe1`,`Farbe2`) VALUES ('%s','%f','%f','%f','%f','%i','%i')", name,pX,pY,pZ,pA,c1,c2); // <- 128 anpassen UND du hast CarID nicht beachtet
mysql_query(query);
return 1;
}
Für den Fall CarID ist mit auto-increment versehen, dann solltest du dennoch als Wert NULL dafür angeben.ZitatCMySQLHandler::Query(SELECT `80` FROM `117` WHERE `Besitzer` = 'Fabi.StaR') - An error has occured. (Error ID: 1146, Table 'autohaustest.117' doesn't exist)
Wieso heißt die Tabelle bei dir 117 und die Spalte 80 ? Falsch formatiert ? Das würde nämlich nicht mal mit der Fehlermeldung übereinstimmen.//Edit: Grammatik .
-
Die Lösung von Kaliber ist mal mehr als hässlich.
random(9000) + 1000ZitatSagen wir ich benutze es als zufällig generierte Telefonnummer wenn man den Server betritt, wie kann ich dann verhindern, dass Personen die gleiche Nummer erhalten ?
Eine Liste führen wäre das Einfachste. Die Liste wäre aber rekativ schnell voll, wenn du nur 4-Stellige Zahlen erlaubst. -
Ich schon,
new rows; // <-- 0
new fv = 0; // <-- 0
new str[200];
if(rows) // <-- 0 , "false"
{
while(fv<rows) // 0 < 0
Du musst "rows" auch irgendwann mal anpassen. -
Rechne doch mal durch,was für ein Ergebnis du hättest wenn SpielerInfo[playerid][pBank] den Wert 100 hat.
Dann sollte dir der Fehler auffallen. -
Was für eine Antwort erwartest du jetzt von mir ? Es kann "vorher" nicht funktioniert haben,wenn es genau so war wie du es gepostet hast.
Du musst etwas geändert haben, da gibts keine Andere Möglichkeit.Und Nein,so funktioniert es auch nicht.
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(playerid, aname, sizeof(aname)); // <-- 2x mit playerid arbeiten ?
new string[128], string2[128];
if(sscanf(params,"ud",pID,Adminrank)) // <- Erst hier hat pID einen gültigen Wert, also kannst du erst DANACH auslesen lassen. -
Du ließt ja auch nie den Namen mit GetPlayerName aus.
-
Hiermit bekommste den Vehicle Speed raus
GetVehicleSpeed(vehicleid)
{
new Float:Vx, Float:Vy, Float:Vz;
GetVehicleVelocity(vehicleid, Vx, Vy, Vz);
new Float:rtn;
rtn = floatsqroot(floatpower(Vx*100,2) + floatpower(Vy*100,2));
rtn = floatsqroot(floatpower(rtn,2) + floatpower(Vz*100,2));
return floatround(rtn);
}
Wo hast denn diese Funktion her ?
rtn = floatsqroot(floatpower(rtn,2) /* + floatpower(Vz*100,2))*/ ;
Warum quadriere ich etwas, um danach wieder die Wurzel zu ziehen ?
Spoiler anzeigen rtn ist doch sowieso positiv,falls hier ein Schlaumeier damit um die Ecke kommen willStatt dem Timer OnPlayerUpdate verwenden, und am besten einen stock schreiben...
Was bewirkt denn so ein "stock" ?
Ich würde das Interval zum aktualisieren des Tachos niedriger setzen. Bloß nicht OnPlayerUpdate nutzen.
-
"Free Palastine, nieder mit IsraHell" ist die Meinung die ich dazu vertrete um das mal aufzuklären. Und das Sachliche ist auf die Diskussion bezogen
Dann solltest du zumindest einen Absatz zwischen diesen Beiden Aussagen lassen, denn so wirkt es zusammenhängend. Dein "Bitte sachlich Diskutieren" ist für mich daher mehr als lächerlich.ZitatNieder mit Palästina. Bitte unterlasst provokative Aussagen.
So eine Aussage sollte dann zumindest dich nicht stören . Es ist im übrigen aber auch nicht meine Meinung zu diesem Thema.Anonymous bleibt für mich auch weiterhin ein Troll-Verein.
-
Free Palastine, nieder mit IsraHell ! ! ! Bitte sachlich Diskutieren
Du bleibst aber auch selber ziemlich sachlich . -
Das ist definitiv der falsche Punkt um bei einer Optimierung anzusetzen. Wer if/else/else if gegen switch/case vergleicht um es "ressourcensparender" zu machen, hat absolut keine Ahnung.
-
Video-Sammelthread oder gar nicht posten.
-
Aus diesem Grund haben Wettbewerbe meist ein Thema bzw eine konkrete Aufgabe, an denen die Kontrahenten gegeneinander bewertet werden.
-
Dann wäre es von Vorteil,du ließt dich in SQL ein.
Du findest sehr viele Beispiele über Google.
http://dev.mysql.com/doc/refma…rder-by-optimization.html
http://dev.mysql.com/doc/refma…e/limit-optimization.html
oder eine Allgemeine Anleitung zu SQL
http://www.w3schools.com/sql/
bzw http://www.w3schools.com/sql/sql_intro.asp