Server crasht beim mehrmaligen eingeben eines Commands

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
  • Hi Community,
    mein Server crasht sobald ich doppelt ein Command eingebe.
    Beim Crashdetect kam folgendes herraus:


    Command:
    ocmd:race(playerid, params[])
    {
    modus[playerid] = 2;
    SetPlayerVirtualWorld(playerid, 2);
    //TogglePlayerControllable(playerid, 0);
    //new Float:x, Float:y, Float:z;
    //GetPlayerPos(playerid, x, y, z);
    //SetPlayerPos(playerid, x-10, y-10, z-10);
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if (IsPlayerConnected(i) && modus[i] == 2)
    {
    if (alive[i] == 0)
    {
    LoadRandomMap();
    StartRace(playerid, 5000);
    }
    else
    {
    //Wenn noch welche Fahren
    new vID = GetPlayerVehicleID(i);
    PlayerSpectateVehicle(playerid, vID);
    specid[playerid] = i;
    }
    return 1;
    }
    }
    new string[128];
    format(string, 128, "Modus: %i", modus[playerid]);
    SendClientMessage(playerid, -1, string);
    return 1;
    }



    IPrototypeI:

    2 Mal editiert, zuletzt von Pascal. ()

  • Sie ist aus dem Include:


    stock LoadRandomMap(Float:offZ = 0.0)
    {
    new rand;
    do
    {
    rand = random((LoadData[lMaxMaps]-10000000))+10000000;
    }
    while(LoadData[lLastMap] == rand);
    new loadstr[100];
    if(!existproperty(0, "", rand))return print("Es konnte keine Map geladen werden!"),0;
    getproperty(0, "", rand, loadstr);
    strunpack(loadstr, loadstr, sizeof(loadstr));
    strins(loadstr,"/Racemaps/",0);
    strcat(loadstr,"/objects.map");
    return LoadMap(loadstr,offZ);
    }


    stock LoadMap(path[], Float:offZ = 0.0)
    {
    if(UnloadMap())
    {
    new loadstr[400],mapValues[mapData],count;
    if(!fexist(path))return 0;
    new File:fhandle = fopen(path,io_read);
    while(fread(fhandle, loadstr))
    {
    if(!loadstr[0])continue;
    if(!sscanf(loadstr, "p<">'object''model='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    CreateDynamicObject(mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ, mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ],-1,-1,-1,300.0,300.0);
    }
    else if(!sscanf(loadstr, "p<">'racepickup''type='s[30]'vehicle='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMtype],mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    if(strcmp(mapValues[pMtype],"nitro") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,1);
    else if(strcmp(mapValues[pMtype],"repair") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,2);
    else if(strcmp(mapValues[pMtype],"vehiclechange") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,3,mapValues[pMmodelid]);
    }
    else if(!sscanf(loadstr, "p<">'spawnpoint''vehicle='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    ++count;
    CreateRaceSpawn(mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ, mapValues[pMRZ],count);
    }
    else if(!sscanf(loadstr, "p<">'marker''color='s[10]'posX='f'posY='f'posZ='f",mapValues[pMtype],mapValues[pMX], mapValues[pMY], mapValues[pMZ]))
    {
    mapValues[pMmodelid] = CreateDynamicObject(1559,mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,0.0,0.0,0.0,-1,-1,-1,400.0,400.0);
    mapValues[pMcolorID] = ConvertStringToHex(mapValues[pMtype]);
    SetDynamicObjectMaterial(mapValues[pMmodelid], 0, 1231, "dynsigns", "white64", mapValues[pMcolorID]);
    }
    else if(!sscanf(loadstr, "p<">'speedboost''posX='f'posY='f'posZ='f'veloX='f'veloY='f'veloZ='f", mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,4, 0 ,mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]);
    }
    else if(!sscanf(loadstr, "p<">'teleport''posX='f'posY='f'posZ='f'nposX='f'nposY='f'nposZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ],mapValues[pNMRZ],mapValues[pNMRZ],mapValues[pNMRZ]))
    {
    CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,5 , 0 ,mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]+offZ,mapValues[pNMRZ]);
    }
    }
    fclose(fhandle);
    if(!count)return print("Map konnte nicht geladen werden"),0;
    print("Map wurde geladen");
    strdel(path,strfind(path,"objects.map"),strlen(path));
    strdel(loadstr,0,sizeof(loadstr));
    format(loadstr,40,"%smeta.xml",path);
    LoadFromMeta(loadstr);
    }
    return 1;
    }

  • Erstelle in dem /pawno/ Ordner neben der pawno.exe eine "pawn.cfg" Datei und schreibe dort "-d3" rein (ohne die Anführungszeichen). Anschließend öffne die pawno.exe und wähle deinen Code aus, dann kompiliere ihn neu.
    Dann poste nochmal was das crashdetect Plugin ausgibt.


    Poste außerdem die LoadFromMeta Funktion dazu.

  • Habe da was gesehen mit der Zeile 3281, das war die Funktion "StartRace".



    stock StartRace(playerid, time)
    {
    if(InitializeRace(playerid))
    {
    setproperty(.name = "CountdownTime", .value = time);
    return LoadData[lTimerID] = SetTimerEx("@Countdown",1000,false,"ii",playerid, time);
    }
    return 1;
    }


    stock static LoadFromMeta(path[])
    {
    if(!fexist(path))return 0;
    new File:fhandle = fopen(path,io_read),loadstr[400];
    while(fread(fhandle, loadstr))
    {
    if(strfind(loadstr,"#weather") != -1)
    {
    strmid(loadstr, loadstr, strfind(loadstr,"[")+1, strfind(loadstr,"]"));
    SetWeather(strval(loadstr));
    printf("meta.xml geladen");
    break;
    }
    }
    fclose(fhandle);
    return 1;
    }

  • Funktioniert nun, Danke :)
    Aber ein kleines Problem hab ich noch, kriege jetzt so ein Warning im Log:


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen