crashdetect

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
  • Guten Tag


    Ich benutze das crashdetect Plugin, da sich mein Script an einer bestimmten Stelle aufgehangen hat.


    Ich bekomme folgende Meldungungen:


    Run time error 3: "Stack/heap collision (insufficient stack size)"
    Run time error 7: "Stack underflow"


    Ich kann damit aber nicht viel anfangen :D


    Eventuell weiß ja einer was genau der Fehler ist.

  • Hängt es an einer bestimmten Stelle / wenn man etwas bestimmtes macht?

    Naja ich kann nicht so gut mit Checkpoints. Checkpoints haben keine eindeutige ID, zumindest wüsste ich das nicht das die sowas haben.
    Mit dem Streamerplugin ist es aber möglich Checkpoints eine eindeute ID zu geben und diese abzufragen. Es macht also einiges einfacher.
    Nun bin ich dabei meine Checkpoints dem Streamer anzupassen. ich möchte aber nicht direkt mehrere Checkpoints streamen, sondern einfach nur einen Checkpoint wie vorher erstellen, nur diesesmal mit einer ID. Da das auch wieder nicht so 100% hinhaut, weil Checkpoints numal keine ID haben wie Autos, Objekte, etc.


    Habe es dann so gemacht:


    tock p_CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0)
    {
    new cpid = -1;
    if(playerid == -1) p_DestroyAllDynamicCPs();
    else
    {
    if(!IsPlayerConnected(playerid) || !login[playerid] || IsPlayerNPC(playerid)) return -1;
    p_DestroyDynamicCP(playerid);
    }
    cpid = p_CreateDynamicCP(x, y, z, size, worldid, interiorid, playerid, streamdistance);
    return cpid;
    }


    stock p_DestroyAllDynamicCPs()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    testCP[i] = -1;
    normalCP[i] = -1;
    for(new t = 0; t < 5; t++) tutCP[i][t] = -1;
    }
    DestroyAllDynamicCPs();
    return 1;
    }


    stock p_DestroyDynamicCP(playerid)
    {
    testCP[playerid] = -1;
    normalCP[playerid] = -1;
    for(new t = 0; t < 5; t++) tutCP[playerid][t] = -1;
    DestroyDynamicCP(GetPlayerVisibleDynamicCP(playerid));
    return 1;
    }


    Erklärung: sobald ein Checkpoint für jemand createt wird, werden der vorherige gelöscht. Beim löschen sieht man das ich variablen auf -1 stelle. Hat den Grund das diese Variablen den Wer der Checkpointid haben, dieser Wert der Variablen bleibt aber soweit ich weiß wenn ich den Checkpoint mit dieser ID zerstöre. Deswegen resette ich die einmal und erstelle dann ein neuen Checkpoint.


    Wenn das totaler schwachsinn ist, dann bitte eine einfachere Methode nenen :D Wie gesagt: kann nicht so gut mit Checkpoints :S


    AUfjedenfall bleibt der Server hängen sobald ich ein Checkpoint erstelle. Jedoch erst seitdem ich folgende Zeilen hinzugefügt habe, vorher ging meine Methode wunderbar:


    for(new t = 0; t < 5; t++) tutCP[playerid][t] = -1;
    for(new t = 0; t < 5; t++) tutCP[i][t] = -1;


    Warum genau weiß ich nicht, wollte es mit dem crashdetect herausfinden, jedoch brauche ich mehr Informationen zu den Errormeldungen.

  • selbst damit nicht, habs sogar bis auf 100000 hochgesetzt. es kommt ja noch ein 2. error :S


    //edit: Ich Idiot :D


    Fehler gefunden:


    stock p_CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0)
    {
    new cpid = -1;
    if(playerid == -1) p_DestroyAllDynamicCPs();
    else
    {
    if(!IsPlayerConnected(playerid) || !login[playerid] || IsPlayerNPC(playerid)) return -1;
    p_DestroyDynamicCP(playerid);
    }
    cpid = p_CreateDynamicCP(x, y, z, size, worldid, interiorid, playerid, streamdistance); //gibt eine Endlosschleife :D :D


    return cpid;
    }

    Einmal editiert, zuletzt von Simon ()