oky habe das von Jeffry genommen und das geht
habe jetzt ein anderes problem
und zwar wenn ich zumbeispiel /park
Gut.
Wie sieht dein /park Befehl aus?
oky habe das von Jeffry genommen und das geht
habe jetzt ein anderes problem
und zwar wenn ich zumbeispiel /park
Gut.
Wie sieht dein /park Befehl aus?
Achso, klar. Habe nicht auf den Befehl geschaut, sorry.
Mit "login" geht das nicht, da SendRconCommand keine playerid mit gibt.
Den Befehl muss man selbst manuell mit /rcon login eingeben.
Kannst du den Code bitte posten?
Wie zeigst du dem Spieler den Dialog an?
Den Dialog siehst du aber schon?
Es muss so aussehen, da inputtext ein String ist:
if(dialogid == 64)
{
if(response)
{
if(strlen(inputtext))
{
new str[64];
format(str, sizeof(str), "login %s", inputtext); //Achtung! Mit "login" geht SendRconCommand nicht!
SendRconCommand(str);
}
}
}
Edit: Achtung! Mit "login" geht SendRconCommand nicht!
format(query,sizeof(query),"INSERT INTO user username = '%s', passwort = '%s', level = '1' ",name,passwort);
mysql_function_query(dbhandle,query,false,"","");
Zu:
format(query,sizeof(query),"INSERT INTO user (username, passwort, level) VALUES ('%s', '%s', '1')",name,passwort);
mysql_function_query(dbhandle,query,false,"OnPlayerRegister","d",playerid);
Und das hier im Gamemode ganz unten hinzufügen:
forward OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
sInfo[playerid][db_id] = cache_insert_id();
return 1;
}
Gut, also nochmal:
Die Nutzung der Ticks ist nicht falsch.
Woher nehmt ihr bitte die Informationen, dass die Nutzung dafür falsch ist? Was BlackAce gesagt hat trifft meiner Meinung nach den Punkt überhaupt nicht, da er wie zuvor gesagt, sagt, dass die Nutzung falsch ist. Das ist sie nicht. Im Gegenteil.
Jony hatte ja zuvor einen Post aus einer Community verlinkt, in dem die Nutzung der Ticks als nicht empfehlenswert beschrieben wurde, allerdings nicht als falsch. Das mag des Posters Meinung sein, was ja auch völlig in Ordnung ist, aber das heißt nicht, dass niemand eine andere Meinung haben darf.
Hier ein paar Gegenbeispiele:
http://stackoverflow.com/quest…kticks-around-field-names
ZitatSo if you're using query generation features and automated re-writing of queries, backticks would make anything parsing your code less confused.
Die Nutzung der Backticks bei Spaltennamen macht eine eventuelle weitergehende automatische Verarbeitung der Queries leichter für den dazugehörigen Interpreter.
Dazu:
ZitatThe only problem with backticks is that they are not ANSI-SQL compliant, e.g. they don't work in SQL Server.
If there is a chance you would have to port your SQL to another database, use double quotes.
Heißt, wer sicher gehen will, kann anstatt den Backticks die Anführungszeichen (Doppeltick) nutzen. Wiederrum heißt das aber keineswegs, dass die Nutzung von Ticks (egal welche) falsch ist!
ZitatThere's no need, only recommendation. It is useful to represent them quoted to avoid ambiguity with SQL keywords if in future, an SQL keyword is added that shares your fields name. The only time you /need/ to quote is when a field does share a keyword name, for instance, select count from foo vs select "count" from foo will give very different results.
Wie ich auch sagte, es ist nicht notwendig. Der Poster hier gibt es selbst auch als Empfehlung aus. Hier haben wir also mehrmals das genaue Gegenteil zu dem was Jony verlinkt hat als Empfehlung.
Außerdem kann es Suchmöglichkeiten vereinfachen:
ZitatIt's a lot easier to search your code-base for something in backticks. Say you have a table named event. grep -r "event" * might return hundreds of results. grep -r "\`event\`" * will return anything probably referencing your database.
Grundsätzlich sind Empfehlungen immer vom jeweiligen Nutzer abzuwegen. Man darf nicht einfach einer Empfehlung folgen, ohne selbst nachzudenken, die Entscheidung ob man etwas macht obliegt einem immer noch selbst. Wenn mir empfohlen wird den Grand Canyon zu besuchen, ich aber Höhenangst habe, werde ich das wohl nicht machen. Ebenso werde ich den Grand Canyon aber besuchen, wenn mir jemand mit Höhenangst davon abrät, obwohl ich selbst keine Höhenangst habe.
Das Beispiel zeigt also, dass man Dinge so machen soll, wie sie für einen selbst passen.
So also hier. Man nutzt die Ticks so, wie man es für notwendig hält. Wenn man nie eine Portierung auf einen SQL Server durchführt (warum sollte man das mit SA-MP machen?!), dann spielt es absolut keine Rolle, ob man sie nutzt oder nicht - zumindest nicht dort, wo es Pflicht ist. Es kann aber nicht falsch sein!
Hierzu dann noch:
http://www.heidisql.com/forum.php?t=8781 (Letzter Post)
ZitatBack-ticks have more, maybe even more important additional values which are reason why use of them for schema identifiers is considered a good practice. But about that I can write even more..
Um jetzt die Meinungen abzuschließen, hier das Zitat von mysql.com aus der Dokumentation:
http://dev.mysql.com/doc/refman/5.7/en/identifiers.html
ZitatAn identifier may be quoted or unquoted. If an identifier contains special characters or is a reserved word, you must quote it whenever you refer to it. (Exception: A reserved word that follows a period in a qualified name must be an identifier, so it need not be quoted.)
Es steht also auch hier nirgends geschrieben, dass die Nutzung falsch ist, sondern nur, dass es nicht in jedem Fall notwendig ist.
Ich sehe daher keinen Grund warum hier das Gegenteil behauptet wird, ohne Quellen anzugeben.
Deshalb:
Wer sie nutzen will, soll sie nutzen. Wer nicht, der nicht. Meine Empfehlung, vor allem für Anfänger, ist nach wie vor die Ticks zu nutzen, um Fehler vorzubeugen. Diese Empfehlung wird auch so lange Bestand haben bis jemand einen Nachweis (keine Meinung in einem Forum!) bringt, dass die Nutzung falsch ist.
Nochmals als Fazit:
Die Nutzung der Ticks (welche Form auch immer) ist, sofern korrekt gesetzt, nicht falsch! Sie ist in manchen Fällen Pflicht, in den restlichen Fällen optional. Dies impliziert daher, dass die Nutzung an optionaler Stelle nie falsch sein kann. Sie mag nicht immer notwendig sein, aber sie ist keineswegs falsch.
___________________________________________________________
Damit zurück zum eigentlichen Thema - denn obige Diskussion hat damit rein gar nichts zu tun:
@Paddy89
Wie sieht denn dein Code momentan aus und was gibt das MySQL Plugin im MySQL Log aus, wenn du die beiden Fahrzeuge erstellst?
Kannst du das beides mal posten?
Um das neue Plugin nutzen zu können musst du den Code anpassen.
Wie du das machst ist in diesem Tutorial unter dem Punkt Converting erklärt:
http://forum.sa-mp.com/showthread.php?t=337810
Aber wenn ich das so mache dann geht es und ist doch richtig oder nicht oder bin ich Doof ?
So rum dürfte es auch klappen, ja. Dann musst du den else Teil eben nutzen, wenn etwas über die Nacht offen hat.
Ich will Mülltonnen spawnen, diese sollen sich aber nicht bewegen lassen via ein Fahrzeug/pushen.
Das geht leider nicht.
Du könntest höchstens unsichtbare feste Objekte drum herum setzen, das würde gehen.
Nein, weil um 22 Uhr zum Beispiel (was ja nicht zwischen 8 und 19 Uhr liegt) wäre das hier wahr:
h > bInfo[i][b_von]
Und somit die ganze Abfrage auch. Deshalb geht das so nicht.
Das liegt daran, dass ich den Code auf den Tageswechsel angepasst habe, wie in deinem Beispiel.
Mache es dann so, für Zeiten die nicht über den Tageswechsel gehen:
{-1,-1,1474.6481,-1827.2919,13.5459,0,961.0393,-1279.3260,999.9360,89.7999,0,1,19,0,8,0},//Stadthalle rein
if(h > bInfo[i][b_von] || h < bInfo[i][b_bis] || (h == bInfo[i][b_von] && m >= bInfo[i][b_von2]) || (h == bInfo[i][b_bis] && m < bInfo[i][b_bis2])) { }
else
{
//Darf rein
}
Ich habe es bewusst mit dem else hier gemacht und nicht mit einer kompletten Negation, um Verwechselungen auszuschließen.
Also praktisch:
Immer erst die späte Zeit, dann die frühe Zeit.
Wenn nachts erlaubt: if-Teil
Wenn tagsüber erlaubt: else-Teil
h > 22 && h < 8
h kann nie größer als 22 und gleichzeitig kleiner als 8 sein. ![]()
Das klappt wahrscheinlich nur momentan zufällig, weil du die Klammern bei den anderen beiden Abfragen weg gemacht hast.
Das versuche ich gerade herauszufinden.
Versuche es jetzt bitte mal damit:
Function serverNews()
{
SendClientMessageToAll(COLOR_WHITE, "{FFAF00}==================== [ {FFFFFF} TEST TEST TEST {FFAF00}] ====================");
SendClientMessageToAll(COLOR_WHITE, "");
return 1;
}
Stürzt es dann wieder ab?
Wenn ja, dann liegt es an der leeren Nachricht, dann kannst du es mal so versuchen:
Function serverNews()
{
SendClientMessageToAll(COLOR_WHITE, "{FFAF00}==================== [ {FFFFFF} TEST TEST TEST {FFAF00}] ====================");
SendClientMessageToAll(COLOR_WHITE, " ");
return 1;
}
Wenn das dann geht, dann kannst du das an deinem ursprünglichen serverNews so anpassen, also die leeren Nachrichten mit ein paar Leerzeichen füllen.
Dann kannst du es mal damit versuchen:
Function serverNews()
{
SendClientMessageToAll(COLOR_WHITE, "{FFAF00}==================== [ {FFFFFF} TEST TEST TEST {FFAF00}] ====================");
return 1;
}
Stürzt es dann wieder ab?
geht auch kürzer
Nein, denn wenn es z.B. 23:01 ist wird dein Code nicht funktionieren, da weder die erste noch die zweite Bedingung zutrifft. ![]()
Ich denke mal, daß es nicht daran liegt; wieso auch?
Ein solcher Fehler könnte über einen Hook verursacht werden.
Am besten warten wir einfach ab, was das Ergebnis des Tests ist.
Es geht hier um das falsche setzen von Backticks.
Das macht das korrekte optionale Setzen der Ticks im Umkehrschluss aber nicht falsch. ![]()
Dass falsch gesetzte (bzw. hier fehlende) Ticks falsch sind ist selbsterklärend.
klinke mich hier auch aus
Ebenso. Ich denke es wurde alles gesagt und jeder kann jetzt selbst entscheiden, ob er sie nutzt oder nicht.
und wie muss ich das dann abfrage ?
if(h > 22 || h < 8 || (h == 22 && m >= 30) || (h == 8 && m < 15))
{
//Zwischen 22:30 und 8:15
}
Die festen Werte die ich hier eingetragen habe ersetzt du dann durch deine Variablen.
Nein trotz das ich das Include und Plugin entfernt habe crasht der server ca nach 5 Minuten...
Ok, dann entferne den Timer bitte mal, und schaue ob es dann auch nach 10 Minuten abstürzt.
Doch, weil es desöfteren von My(SQL) Syntax Fehler auspucken kann.
Poste bitte mal ein Beispiel, bei dem ein vorhandener, optional gesetzter Tick, in MySQL, einen Fehler erzeugt.
Das dürfte ja kein Problem sein, wenn es so oft vorkommt.
Ansonsten solltest du von deiner Aussage, dass es falsch ist, Abstand nehmen. Falsch ist es in gepostetem Code ohnehin nicht.
Meiner Erfahrung nach kommt es fast immer zu Fehlern durch fehlende Ticks, daher wie gesagt die Empfehlung für Anfänger, die Ticks immer zu setzen. Das heißt ja im Umkehrschluss nicht, dass man ihnen nicht erklärt, dass sie optional sind. Es fängt nur nicht jeder als Profi an, daher gilt Anfangs erst mal, Fehler so gut wie möglich zu vermeiden. Das ist meine Meinung und Erfahrung.