Server kakt ab sobald...

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Server kakt ab sobald...

    Hallu,

    ich hab ein Problem,

    wen ich irgendwas mit /tanken mache oder /tankeauffüllen mache , kakt der Server ab!

    Code:

    [pwn] if(strcmp("/tankeauffüllen",cmdtext, true,10) == 0)
    {
    Benzin += 100;
    Diesel += 100;
    SuperPlus += 100;
    SuperBenzin += 100;

    }[/pwn]

    [pwn]new Benzin;
    new Diesel;
    new SuperBenzin;
    new SuperPlus;[/pwn]

    Timer:

    [pwn]Function Tanke()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"/Tank/Tankarten.txt");
    if(fexist(pfad))
    {
    dini_IntSet(pfad,"Benzin",Benzin);
    dini_IntSet(pfad,"Diesel",Diesel);
    dini_IntSet(pfad,"SuperBenzin",SuperBenzin);
    dini_IntSet(pfad,"SuperPlus",SuperPlus);
    }
    return 1;
    }[/pwn]

    OnGamemodeinit:

    [pwn] new pfad[18];
    format(pfad,sizeof(pfad),"/Tank/Tankarten.txt");
    if(!fexist(pfad))
    {
    dini_Create(pfad);
    dini_IntSet(pfad,"Benzin",0);
    dini_IntSet(pfad,"Diesel",0);
    dini_IntSet(pfad,"SuperBenzin",0); // eben anpassen auf deine Arten
    dini_IntSet(pfad,"SuperPlus",0); // eben anpassen auf deine Arten
    }
    else if(fexist(pfad))
    {
    Benzin = dini_Int(pfad, "Benzin");
    Diesel = dini_Int(pfad, "Diesel");
    SuperBenzin = dini_Int(pfad, "SuperBenzin");
    SuperPlus = dini_Int(pfad, "SuperPlus");
    }[/pwn]

    [pwn]if(dialogid == 2578)
    {
    if(response)
    {
    new tank = GetPlayerVehicleTypeForFill(GetPlayerVehicleID(playerid));
    if(listitem == 0) //Diesel
    {
    if(Diesel >= 1)
    {
    if(tank == 1)
    {
    new Float: tankfuel;
    tankfuel = spawncar_maxgas[GetPlayerVehicleID(playerid)]-spawncar_gas[GetPlayerVehicleID(playerid)];
    GettingFuel[playerid] = tankfuel;
    GettingType[playerid] = 1;
    Refueling[playerid] = 1;
    GameTextForPlayer(playerid, "~y~Tanken!", 5000, 1);
    filling[playerid] = SetTimerEx("FuelCarD", 3000, false, "i", playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Kraftstoff nicht tanken.");
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }
    else
    {
    TogglePlayerControllable(playerid, 1);
    SendClientMessage(playerid, COLOR_GRAD2, "Wir haben kein Diesel mehr... Komm später nochmal!");
    return 1;
    }

    }
    if(listitem == 1) //Benzin
    {
    if(tank == 2)
    {
    new Float: tankfuel;
    tankfuel = spawncar_maxgas[GetPlayerVehicleID(playerid)]-spawncar_gas[GetPlayerVehicleID(playerid)];
    GettingFuel[playerid] = tankfuel;
    GettingType[playerid] = 2;
    Refueling[playerid] = 1;
    GameTextForPlayer(playerid, "~y~Tanken!", 5000, 1);
    filling[playerid] = SetTimerEx("FuelCar", 3000, false, "i", playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Kraftstoff nicht tanken.");
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }
    if(listitem == 2) //Super Plus
    {
    if(tank == 3)
    {
    new Float: tankfuel;
    tankfuel = spawncar_maxgas[GetPlayerVehicleID(playerid)]-spawncar_gas[GetPlayerVehicleID(playerid)];
    GettingFuel[playerid] = tankfuel;
    GettingType[playerid] = 3;
    Refueling[playerid] = 1;
    GameTextForPlayer(playerid, "~y~Fahrzeug wird betankt", 5000, 1);
    filling[playerid] = SetTimerEx("FuelCar", 3000, false, "i", playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Kraftstoff nicht tanken.");
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }
    if(listitem == 3) //Super Benzin
    {
    if(tank == 4)
    {
    new Float: tankfuel;
    tankfuel = spawncar_maxgas[GetPlayerVehicleID(playerid)]-spawncar_gas[GetPlayerVehicleID(playerid)];
    GettingFuel[playerid] = tankfuel;
    GettingType[playerid] = 4;
    Refueling[playerid] = 1;
    GameTextForPlayer(playerid, "~y~Tanken!", 5000, 1);
    filling[playerid] = SetTimerEx("FuelCar", 3000, false, "i", playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Kraftstoff nicht tanken.");
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }
    if(listitem == 4) //Kerosin
    {
    if(tank == 5)
    {
    new Float: tankfuel;
    tankfuel = spawncar_maxgas[GetPlayerVehicleID(playerid)]-spawncar_gas[GetPlayerVehicleID(playerid)];
    GettingFuel[playerid] = tankfuel;
    GettingType[playerid] = 5;
    Refueling[playerid] = 1;
    GameTextForPlayer(playerid, "~y~Tanken!", 5000, 1);
    filling[playerid] = SetTimerEx("FuelCar", 3000, false, "i", playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Kraftstoff nicht tanken.");
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }
    }
    else { TogglePlayerControllable(playerid, 1); }
    }[/pwn]

    [pwn]forward FillCar(playerid);
    public FillCar(playerid)
    {
    new string[128];
    if(Refueling[playerid] == 0)
    {
    if(IsAtGasStation(playerid))
    {
    if(IsPlayerConnected(playerid))
    {
    format(string, sizeof(string), "Diesel \nBenzin \nSuper Plus \nSuper Benzin \nKerosin");
    ShowPlayerDialog(playerid, 2578, DIALOG_STYLE_LIST, "Tankstelle", string, "Tanken", "Abbrechen");
    }
    }
    }
    }[/pwn]

    [pwn]forward FuelCarD(playerid);
    public FuelCarD(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new VID;
    new FillUp;
    new string [128];
    VID = GetPlayerVehicleID(i);
    FillUp = GetGasMax(GetVehicleModel(VID)) - Gas[VID];
    if(Refueling[playerid] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+1)
    {
    Gas[VID] += FillUp;
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt.",FillUp);
    SendClientMessage(i,COLOR_BLUE,string);
    Diesel -= FillUp;
    GivePlayerMoney(i, - FillUp);
    SBizzInfo[3][sbTill] += FillUp;
    ExtortionSBiz(3, FillUp);
    Refueling = 0;
    UnFreezePlayer(i);
    }
    else
    {
    format(string,sizeof(string),"* Dir fehlen $%d, hol dir Geld am Automaten...",FillUp);
    SendClientMessage(i,COLOR_RED,string);
    Refueling[i] = 0;
    UnFreezePlayer(i);
    }
    }
    }
    }
    return 1;
    }
    forward FuelCar(playerid);
    public FuelCar(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new VID;
    new FillUp;
    new string[256];
    VID = GetPlayerVehicleID(i);
    FillUp = GetGasMax(GetVehicleModel(VID)) - Gas[VID];
    if(Refueling[playerid] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+1)
    {
    Gas[VID] += FillUp;
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt.",FillUp);
    SendClientMessage(i,COLOR_BLUE,string);
    GivePlayerMoney(i, - FillUp);
    SBizzInfo[3][sbTill] += FillUp;
    ExtortionSBiz(3, FillUp);
    Refueling[i] = 0;
    UnFreezePlayer(i);
    }
    else
    {
    format(string,sizeof(string),"* Dir fehlen $%d, hol dir Geld am Automaten...",FillUp);
    SendClientMessage(i,COLOR_RED,string);
    Refueling[i] = 0;
    UnFreezePlayer(i);
    }
    }
    }
    }
    return 1;
    }[/pwn]
  • [pwn]new pfad[18];
    format(pfad,sizeof(pfad),"/Tank/Tankarten.txt");
    if(!fexist(pfad))
    {
    dini_Create(pfad);
    dini_IntSet(pfad,"Benzin",0);
    dini_IntSet(pfad,"Diesel",0);
    dini_IntSet(pfad,"SuperBenzin",0); // eben anpassen auf deine Arten
    dini_IntSet(pfad,"SuperPlus",0); // eben anpassen auf deine Arten
    }
    else if(fexist(pfad))
    {
    Benzin = dini_Int(pfad, "Benzin");
    Diesel = dini_Int(pfad, "Diesel");
    SuperBenzin = dini_Int(pfad, "SuperBenzin");
    SuperPlus = dini_Int(pfad, "SuperPlus");
    }[/pwn]
  • Moritz schrieb:

    [pwn]new pfad[18];
    format(pfad,sizeof(pfad),"/Tank/Tankarten.txt");
    if(!fexist(pfad))
    {
    //...[/pwn]

    Du erstellst den String 'pfad' mit einer maximalen Größe von 18 Elementen.
    '/Tank/Tankarten.txt' ergibt aber 19 Zeichen (d.h. 'pfad' muss mindestens eine Größe von 20 Elementen haben).

    Da du aber eh keine Formatierungen verwendest, kannst du die Variable 'pfad' und die Funktion 'format' komplett weglassen
    und beim Funktionsaufruf von fexist den Pfad direkt als String angeben statt auf eine Variable zu verweisen:
    [pwn]if(!fexist("/Tank/Tankarten.txt"))[/pwn]

    MfG
  • Wieso sinnlos (wenn es tatsächlich so sinnlos für dich erscheint, dann erhöh die Größe von Pfad auf mind. 20)?

    Auf diese Weise (ohne die Variable und format) kann man u.U. Speicher und Perfomance sparen (wenn auch eher minimal) und
    vereinfacht das ganze eigentlich nur.

    Probier einfach mal einen von meinen beiden Vorschlägen oben aus und schau, ob der Server immer noch
    abstürzt (sprich ob es noch einen weiteren Fehler gibt).