Einige Fehlermeldungen in der Server.exe

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Server.exe wiedergibt folgendes:


    [19:31:26] [debug] Run time error 4: "Array index out of bounds" [19:31:26] [debug] Accessing element at negative index -400 [19:31:26] [debug] AMX backtrace: [19:31:26] [debug] #0 00032210 in public TachoUpdaten () from xxxx.amx


    Das liegt glaub ich mit der Zeile zusammen:
    PlayerTextDrawSetString(i,Name[i],FahrzeugName[GetVehicleModel(GetPlayerVehicleID(i))-400]);


    So ist FahrzeugName definiert:
    new FahrzeugName[][40] ={


    Weitere Meldungen, bitte dazu wenigsten die Erklärung. Code weiß ich nicht womit das zusammenhängt...
    [21:50:56] [warning] client exceeded 'ackslimit' 127.0.0.1:64418 (26381) Limit: 3000/sec



    [22:13:03] [debug] #0 native fexist () [00405a40] from samp-server.exe
    [22:13:03] [debug] #1 native format () [00472d20] from samp-server.exe
    [22:13:03] [debug] #2 native fwrite () [004056e0] from samp-server.exe
    [22:13:03] [debug] #3 000010f8 in ?? (0x000612a8, 0x000618c4) from xxxx.amx
    [22:13:03] [debug] #4 00000910 in ?? (0x000618c4, 0x00061874, 0x000616e4) from xxxx.amx
    [22:13:03] [debug] #5 000309e8 in ?? (0x0000000d) from xxxx.amx
    [22:13:03] [debug] #6 0002adbc in ?? (0x00035b48) from xxxx.amx
    [22:13:03] [debug] #7 00011cbc in public OnRconCommand (0x00035b48) from xxxx.amx

  • Du überprüst anscheinend nicht ob [wiki]GetPlayerVehicleID[/wiki] 0 zurückgibt aka Spieler ist in keinem Fahrzeug. Die Datei funktionen crashen wenn diese keinen validen File handle erhalten.


    bsp:


    public OnRconCommand(cmd[])
    {
    File log = fopen(.....);
    fwrite(log,cmd); // Hier wird nicht geprüft ob log valide ist.
    }




    public OnRconCommand(cmd[])
    {
    File log = fopen(.....);
    if(!log) return 1; // Hier wird es geprüft.
    fwrite(log,cmd);
    }

  • Zwecks dem ersten Fehler:
    Das kannst du so gar nicht machen, da dein Array nur40 Namen beinhaltet.


    Nutze dieses Array mit den Fahrzeugnamen:
    http://forum.sa-mp.com/showthread.php?t=305314



    Dann kannst du den Code so schreiben:
    new model = GetVehicleModel(GetPlayerVehicleID(i));
    if(model != 0) PlayerTextDrawSetString(i,Name[i],vehNames[model-400]);
    else PlayerTextDrawSetString(i,Name[i],"-None-");



    Frage 2 ist ja bereits beantwortet worden.


    Zu Frage 3 kann ich noch hinzufügen, damit du die Fehlerstelle im Code findest:
    Erstelle in deinem /pawno/ Ordner eine Datei "pawn.cfg" und schreibe dort "-d3" rein (ohne Anführungszeichen). Dann speichere die Datei, und öffne die pawno.exe. Dann wähle deinen Code auf, über "Öffnen", und kompiliere ihn. Du bekommst dann eine mehrzeilige Meldung mit vielen Zahlen im Compiler. Dann starte den Server erneut, und poste nochmal den Log, bzw. lese dort die Zeile des Fehlers aus.


    Das "-d3" ist eine Compiler-Option und schält den Debug Modus an (daher die Meldung im Compiler).
    Für das Crashdetect Plugin bedeutet das, dass es genauere Informationen ausgeben kann, wie zum Beispiel die genaue Zeile des Errors, den es ausgibt.