new query[256];
zu:
new query[512];
Möglicherweise ist es einfach zu kurz.
new query[256];
zu:
new query[512];
Möglicherweise ist es einfach zu kurz.
if(SupAccept[playerid] == 1)
zu:
if(SupAccept[playerid] != -1)
Du musst eben, wenn das Ticket geschlossen wird SupAccept auf -1 setzen.
Das Query muss so aussehen:
format(query,sizeof(query),"INSERT INTO `autos` (`besitzer`,`model`,`x`,`y`,`z`,`r`,`tank`,`Kennzeichen`,`Spoiler`,`Hood`,`Roof`,`Sideskirt`,`Lamps`,`Nitro`,`Exhaust`,`Wheels`,`Stereo`,`Hydraulics`,`Front`,`Rear`,`Ventr`,`Ventl`) VALUES ('%i','%i','%f','%f','%f','%f','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d')",
Wenn du es in zwei Zeilen trennen willst:
format(query, sizeof(query), "INSERT INTO `autos` (`besitzer`,`model`,`x`,`y`,`z`,`r`,`tank`,`Kennzeichen`,`Spoiler`,`Hood`,`Roof`,`Sideskirt`,`Lamps`,`Nitro`,`Exhaust`,`Wheels`,`Stereo`,`Hydraulics`,`Front`,`Rear`,`Ventr`,`Ventl`) ");
format(query, sizeof(query), "%sVALUES ('%i','%i','%f','%f','%f','%f','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d')", query, /*...*/);
Wenn du es genau so schreibst wie ich es dir gegeben habe, dann steht er nur einmal drauf.

Da sollte der True Parameter raus
Das spielt in diesem Fall keine Rolle, da nicht zwei Spieler mit dem gleichen Namen, aber unterschiedlicher Groß-/Kleinschreibung, online sein können.
Schalte den MySQL Debug Modus an und poste was dann im MySQL Log steht, wenn die Fahrzeuge geladen werden sollen.
mysql_log(LOG_ALL);
Unter OnGameModeInit.
Hier stehen alle Einstellungsmöglichkeiten:
https://wiki.sa-mp.com/wiki/SetObjectMaterialText_DE
Mach das
return 99999;
aus OnPlayerCarsLoad weg.
new obj = CreateObject(7914, 1506.59973, -1768.28064, 28.48100, 0.00000, 0.00000, -90.00000);
SetObjectMaterial(obj, 0, 8419, "vgsbldng1", "black32", 0xFFFFFFFF);
SetObjectMaterialText(obj,"Truckerbase",0, OBJECT_MATERIAL_SIZE_256x128,"Arial", 28, 0, 0xFFFFFFFF, 0xFF000000, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
Ich sehe da jetzt aber keinen Fehler im Log.
Den Dialog zu:
if(dialogid==ShowReportDialog)
{
if(!response)return 1;
if(!strlen(SupportName[pID]))return 1;
new pID = ReturnPlayerID(SupportName[pID]);
SendClientMessage(pID, 0xFF0000FF, "Dein Report wurde geöffnet. Du kannst jetzt mit /sup schreiben.");
SupAccept[pID]=playerid;
SupAccept[playerid]=pID;
return 1;
}
Der Befehl im Ansatz:
ocmd:sup(playerid,params[])
{
if(SupAccept[playerid] == -1)return SendClientMessage(playerid,C_Error,"Du hast keinen offenen Supportchat!");
if(!params[0])return SendClientMessage(playerid,C_Error,"Info: /sup [Text]");
new string[145];
format(string, sizeof(string), "[Sup] %s", params);
new pID = SupAccept[playerid];
SendClientMessage(pID, 0xFF0000FF, string);
SendClientMessage(playerid, 0xFF0000FF, string);
return 1;
}
Und diese Funktion benötigst du:
stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerName(i, l_name, MAX_PLAYER_NAME);
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
return INVALID_PLAYER_ID;
}
Ist das alles was da drin steht?
Füge gegebenenfalls bei OnGameModeInit das ein:
mysql_log(LOG_ALL);
Dann poste erneut was im MySQL Log steht.
Möglicherweise hast du keine existierende Verbindung, oder die Tabelle heißt tatsächlich nicht so.
Dein Code verbraucht dann wohl zu viele Ressourcen.
Wie kannst du es verkürzen? Den Code optimieren.
Leere mal den MySQL Log (lösche ihn) und starte dann deinen Server neu.
Dann poste was alles in dem MySQL Log steht.
Dann wird dies halt Verwarnt?
Würde ich nicht machen. Zu viele Regeln, die im Grunde nicht wirklich Sinn ergeben, vergraulen nur die Nutzer. Man muss sich heutzutage eben damit abfinden, dass die Leute faul sind.
Prinzipiell kann man so einen Thread schon machen, nur müsste man sich erst mal überlegen was man aufnimmt und vor allem wie man es so erklärt, damit kein Thread danach aufgemacht wird. Und das ist relativ schwer, da die wenigsten Probleme auf dem Standard-Weg behoben werden können, bzw. man wahrscheinlich den Code sehen muss.
Ich rede von fixen Themen, die für das Erstellen des Themas essentielle Threads anzeigt.
Achso, dann hab ich dich missverstanden, sorry.
Wobei das ja prinzipiell die angepinnten Threads wären. Ich denke, 95% (oder mehr) aller Threadersteller werden sich das nicht durchlesen, weil es einfach länger dauert als mal eben kurz zu fragen. Traurige Wahrheit leider.
Wobei es mich persönlich nicht stört hin und wieder das gleiche zu erzählen. Das bin ich auch aus meinem Job gewohnt. ![]()
wo auf die häufigsten Scripting-Probleme eingegangen wird. Ob sich die User das durchlesen, ist ne andere Frage. Aber schaden könnte sowas auf jeden Fall nicht.
Klar, schaden wird es nicht.
@Jack_Bauer:
Gibt es schon:
if(strlen(SupportText[playerid]) >= 3) return SendClientMessage(playerid, 0xFF0000FF, "Error: Du hast bereits ein Ticket.");
Ich schließe mich Dog: an.
Es besteht ja die Regel, dass man zuvor suchen soll, aber das ist wie immer mit den Regeln. Du kannst auch nicht jeden sperren der nicht sucht, da könntest du 90% sperren. Gleich ist es mit den angepinnten Threads. Wenn das zu viele sind, bringt es sowieso nichts mehr.
Kones:
Das bringt relativ wenig, da die Leute ohnehin dann den Log posten und nachfragen, was sie darunter verstehen sollen.
Ich sehe ja was alles gefragt wird, da wiederholt sich alles mögliche. Wenn man das alles anpinnen will, dann hat man 30 angepinnte Threads, und die liest garantiert niemand durch.
Mehr oder weniger so:
if(dialogid==ShowReportDialog)
{
if(!response)return 1;
new pID = listitem;
if(!strlen(SupportName[pID]))return 1;
SendClientMessage(pID, 0xFF0000FF, "Hallo, du hast einen Report gesendet.");
//...
return 1;
}
Zumindest entnehme ich das dem obigen Befehl so.