Besser so:
if(!inputtext[0])
Das ist dasselbe wie
if(!strlen(inputtext))
Das will er aber nicht, er will den Inhalt des Inputtextes auf Leerzeichen überprüfen.
Besser so:
if(!inputtext[0])
Das ist dasselbe wie
if(!strlen(inputtext))
Das will er aber nicht, er will den Inhalt des Inputtextes auf Leerzeichen überprüfen.
dann muss der Inputtext aber erst neu deklariert werden z.B. so:
new input[16];
format(input,sizeof input,"%s",inputtext);
so würd ich es machen
Quatsch.
Alles anzeigenHabe versucht die neuste Version des Plugins zu installieren und prompt stellen sich mri 3 Probleme in den Weg:
Spoiler anzeigen Also gut, Datei heruntergeladen und in den Ordner gepackt... Weiter gehts
Spoiler anzeigen Seltsam, noch eine Datei.... Naja, heruntergeladen, in den Ordner gepackt, weiter:
Problem immer noch nicht gelöst, brauch Hilfe!
if(inputtext[0]==' ') // Erstes Zeichen ist ein Leerzeichen
Geht recht einfach wenn du dir mithilfe einer .bat-Datei alle Dateien in einem Ordner in eine Datei schreiben lässt,
diese kannst du dann auslesen, die Datei öffnen und das Geld auf 2000 o.ä. setzen.
Guten Tag,
Seltsamerweise crasht mein Server (allerdings nur manchmal), wenn Accounts gespeichert werden bzw.
wenn ein Spieler die Verbindung trennt.
Habe durch debugging herausgefunden, dass es wohl mit mysql_format zusammenhängt.
Dazu noch folgendes im Server Log: (Crashdetect-Plugin)
[14:22:42] [debug] Server crashed while executing lssf.amx[14:22:42] [debug] AMX backtrace:[14:22:42] [debug] #0 native mysql_format () [10008690] from mysql.DLL[14:22:42] [debug] #1 0019d2d0 in ?? () from lssf.amx[14:22:42] [debug] #2 00031294 in public JB_OnPlayerDisconnect () from lssf.amx[14:22:42] [debug] #3 native CallLocalFunction () [00471e90] from samp-server.exe[14:22:42] [debug] #4 0000fa5c in public Streamer_OnPlayerDisconnect () from lssf.amx[14:22:42] [debug] #5 native CallLocalFunction () [00471e90] from samp-server.exe[14:22:42] [debug] #6 000010b0 in public OnPlayerDisconnect () from lssf.amx[14:22:42] [debug] System backtrace:[14:22:42] [debug] #0 772735a7 in ?? () from C:\windows\SysWOW64\ntdll.dll[14:22:42] [debug] #1 77273492 in ?? () from C:\windows\SysWOW64\ntdll.dll[14:22:42] [debug] #2 768614dd in ?? () from C:\windows\syswow64\kernel32.dll[14:22:42] [debug] #3 690f3c1b in ?? () from C:\windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\MSVCR90.dll[14:22:42] [debug] #4 10008b56 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\mysql.DLL[14:22:42] [debug] #5 004010b6 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\samp-server.exe[14:22:42] [debug] #6 7004340a in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #7 70045aa6 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #8 7003d621 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #9 7004345a in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #10 0047219e in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\samp-server.exe[14:22:42] [debug] #11 004010b6 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\samp-server.exe[14:22:42] [debug] #12 7004340a in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #13 70045aa6 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #14 7003d621 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #15 7004345a in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #16 0047219e in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\samp-server.exe[14:22:42] [debug] #17 004010b6 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\samp-server.exe[14:22:42] [debug] #18 7004340a in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #19 70045aa6 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #20 7003d621 in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #21 7004345a in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\plugins\crashdetect.DLL[14:22:42] [debug] #22 0046c8cb in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\samp-server.exe[14:22:42] [debug] #23 00465e9e in ?? () from D:\Pille\Dokumente\Spiele\GTA\Scripting\03x\samp-server.exe[14:22:42] [debug] #24 7636149d in ?? () from C:\windows\syswow64\KERNELBASE.dll[14:22:42] [debug] #25 763614d0 in ?? () from C:\windows\syswow64\KERNELBASE.dll
Ich kann damit ehrlich gesagt nicht viel anfangen, deswegen bitte ich hier um Rat.
new Zeichen[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; // Wir benötigen nur Integer!
format(strings,sizeof(strings),"GER-%c%c-%i",Zeichen[random(25)],Zeichen[random(25)],kenzeichenzahl); // %c = Character ausgeben
Schau mal in die MySQL Debug (bzw. schalte mal den MySQL Debug an, falls du es noch nicht hast ) und lasse mal crashdetect drüber laufen & poste dann das Ergebnis hier.
LG
[16:21:48] >> mysql_query_callback( Connection handle: 1 )
[16:21:48] Passing query SELECT 1 | ii
[16:21:48] ProcessQueryThread(mysql_Test) - Query was successful. (SELECT 1)
[16:21:48] ProcessQueryThread(mysql_Test) - Data caching enabled.
[16:21:48] CMySQLHandler::StoreResult() - Result was stored.
[16:21:48] CMySQLHandler::FreeResult() - Result was successfully free'd.
[16:21:48] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[16:21:48] mysql_Test(ii) - Threaded function called.
[16:21:48] >> cache_get_data( Connection handle: 1 )
Fehlt eigentlich nur folgende Zeile: [16:41:22] ProcessTick() - The cache has been cleared.
MySQL kann auch nicht erraten von wo er 1 returnen soll.
Eigentlich schon, es gibt ja Standardquerys bei MySQL.
'SELECT 62+3" - 65
"SELECT SUM(62,3)" - 65
"SELECT NOW()" - 2013-02-24 16:26:37
Erstelle eine Variable für jedes Auto, stelle sie auf true, wenn jemand einsteigt und auf false, wenn jemand aussteigt (boolean).
Dann machst du einen Timer, der alle (500?) Millisekunden alle Fahrzeuge durchgeht (Nur die, die benutzt werden).
Dann checkst du die Position, errechnest die Distanz, addierst diese und speicherst sie in eine andere Fahrzeug-Variable.
Ich weiß genau wo du den Code herhast, ich war der Schöpfer
Ist relativ einfach: Für jedes Auto eine Variable erstellen (MAX_VEHICLES) und dann
dort alles hineinspeichern was du brauchst.
Warum stürzt der Server manchmal ab, wenn ich diesen Befehl ausführe?
if(strcmp(cmdtext,"/mysql",true)==0)
{
if(PlayerInfo[playerid][pAdmin]<1337) return 1;
mysql_function_query(cH,"SELECT 1",true,"mysql_Test","ii",playerid,tickcount());
return 1;
}
forward mysql_Test(playerid,tick);
public mysql_Test(playerid,tick)
{
new fields,rows;
cache_get_data(rows,fields);
if(!rows)
{
SendClientMessage(playerid,COLOR_GRAD1,"Fehlgeschlagen!");
return 1;
}
new string[50];
cache_get_row(0,0,string);
format(string,sizeof(string),"Ergebnis: %i (%i ms)",strval(string),tickcount()-tick);
SendClientMessage(playerid,COLOR_GRAD1,string);
return 1;
}
Also noch einfacher erklären, ging ja irgendwie nicht...und ich habe mir wirklich Mühe gegeben !
Zudem musst du ja nicht mit #emit anfangen und es eigentlich auch nicht nutzen, es dient lediglich zur Information, dass es existiert
Es geht nicht darum, ob du es einfach oder kompliziert erklärst.
Was fehlt sind die Grundlagen dieser Funktion, die Vorstellung der Möglichkeiten,
die Erklärung weshalb, warum, wieso...
Wenn du mir sagst: "Man kann #emit benutzen... Um Variablen zusammenzurechnen."
dann kann damit kein Schwein was anfangen.
Ich finde die ganze #emit-Sache bei dir leider schlecht erklärt.
Du kennst dich vielleicht davon etwas aus, aber für jeamden dem das neu ist,
der kann sich da schlecht was darunter vorstellen.
Du föngst nämlich gleich mit dem Hauptteil an und zeigst ein paar Beispiele.
Theorie ist auch, besonders bei solchen Sachen, wichtig.
So darfst du das auf keinen Fall machen
Der Server wird höllisch laggen, wenn jemand disconnected!
Versuch pro Spieler nur ein Update-Befehl zu machen und
verwende OnQueryFinish bzw. mysql_function_query!
Brauch ich ein Ordner wo sich die Autos speichern oder so?
Schau doch im Script nach
Er meint, das du es mit Sccanf Splitten sollst
Falsch, ich meine, dass du mit strfind die Positionen herausfinden kannst,
wo ein Parameter anfängt / endet, und du sie mit strmid dann speichern kannst.
Wenn du das selbst klug machst, arbeitet es schnelelr als sscanf oder cache.
strfind gibt die Position des gefundenen Zeichens zurück
Wenn du also den Output-Text nach '|' durchsuchst, müsste er 11 zurückgeben (Zähl mal an welcher Position das erste | steht ^^)
Als freiwilligen Parameter kannst du die Position angeben, bei der er anfangen soll zu suchen.
Um den zweiten Parameter herauszufinden musst du als Startposition die gefundene Position +1 angeben. Also 12.
Dann fängt er hier an zu suchen:
Nightstr3am|5|1337|123
Wenn er wieder ein | gefunden hat, gibt er die Position zurück. Die dürfte 13 sein.
Das machst du immer so weiter, bis du den ganzen String durchhast.
Strmid kannst du übrigens benutzen,
um den Teilstring in einen anderen zu speichern. Dazu gibst du die Start- und Endposition an.
Die findest du heraus, in dem du bei strfind die Werte die er zurückgibst,
logisch angibst
Du musst ein bisschen rumprobieren, das ist nicht schwer
Wenn du eine Tabelle wiefolgt anlegst:
Wenn du nun "SELECT * FROM Acconuts WHERE Name = 'Nightstr3am'" als query aussendest,
kommt folgender string raus: "Nightstr3am|5|1337|123"
Diesen kannst du jetzt splitten (strfind, strmid)
Zweite Möglichkeit:
mysql_format(connectionHandle,"SELECT * FROM Accounts WHERE Name= '%e",SpielerName(playerid));
mysql_function_query(cH,string,true,"LoadAccount","i",playerid);
forward LoadAccount(playerid);
public LoadAccount(playerid)
{
new rows,fields;
cache_get_data(rows,fields);
if(rows==0) return 1; // Account existiert nicht
new string[128];
cache_get_row(0,1,string);
PlayerInfo[playerid][Level]=strval(string); // etc.
}
Wenn du mir deinen Skype-Namen schickst, adde ich dich.