/fill was ist falsch?

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
  • Hallo. Ich habe ein Problemm bei meinen /fill befehl. Wenn ich dieses Eingebe Bleibt mann Gefreezt und es wird Nix aufgetankt.
    Was habe ich Falsch gemacht?


    if(strcmp(cmd, "/fill", true) == 0 || strcmp(cmd, "/fillcar", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new b = 0; b < sizeof(TankeInfo); b++)
    {
    if (IsPlayerInRangeOfPoint(playerid,10.0,1004.1221,-940.8615,41.9956))
    {
    if(IsANoTachoVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du kannst dein Fahrrad nicht Auftanken!");
    }
    else
    {
    SetTimer("Fillup",RefuelWait,0);
    Refueling[playerid] = 1;
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid,COLOR_WHITE,"Dein Fahrzeug wird betankt, bitte warten...");
    format(string, sizeof(string), "UserCMD: %s Tankt an einer Tankstelle auf (/fill).", PlayerName(playerid));
    ABroadCast(COLOR_LIGHTRED,string, 5);
    }
    }
    else
    {
    // SendClientMessage(playerid,COLOR_GREY,"Du bist an keiner Tankstelle!");
    // return 1;
    }
    }
    }
    return 1;


    Über eine Kleine Antwort würde ich mich freuen!


    mfg feni12


  • du freezt den spieler ja auch


    der Fillup public wäre noch ganz nützlich


    Ja ich freeze den Spieler dies ist mir Bewusst. Allerdings sollt er ja nach dem Tanken Unfreezed werden...


    Public:


    public Fillup()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new VID;
    new FillUp;
    //new FillUpRandom = random(250)+1;
    new string[256];
    VID = GetPlayerVehicleID(i);
    FillUp = GasMax - Gas[VID];
    for(new b = 0; b < sizeof(TankeInfo); b++)
    {
    if(IsPlayerInRangeOfPoint(i,5.0, TankeInfo[b][tEntranceX], TankeInfo[b][tEntranceY], TankeInfo[b][tEntranceZ]))
    {
    if(Refueling[i] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+4)
    {
    Gas[VID] += FillUp;
    FillUp = FillUp * TankeInfo[b][tEntranceCost];
    format(string,sizeof(string),"* Du hast dein Fahrzeug für $%d aufgetankt.",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    TogglePlayerControllable(i, 1);
    TogglePlayerControllable(i, 1);
    GivePlayerMoney(i, - FillUp);
    TankeInfo[b][tTill] += FillUp;
    /// TankeInfo[b][tTill] += FillUpRandom;
    TankeInfo[b][tExtortion] += FillUp;
    // TankeInfo[b][tExtortion] += FillUpRandom;
    Refueling[i] = 0;
    // SBizzInfo[3][sbTill] += FillUp; //inhaber
    // SBizzInfo[3][sbExtortion] += FillUpRandom; //mitinhaber
    }
    else
    {
    TogglePlayerControllable(i, 1);
    new cost = TankeInfo[b][tEntranceCost];
    format(string,sizeof(string),"* Nicht genug Geld zum Auffüllen, du benötigst $%d zum Auffüllen deines Autos.",cost);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    }
    }
    }
    }
    }
    }
    return 1;
    }

  • was ich nicht ganz verstehe ist diese schleife hier
    for(new b = 0; b < sizeof(TankeInfo); b++)
    da du "b" nicht einmal verwendest und auch kein return/break in deiner schleife hast wird z.b der timer so oft gestartet wie die größe von tankeinfo.. kapier ich nicht was das bringt

  • was ich nicht ganz verstehe ist diese schleife hier
    for(new b = 0; b < sizeof(TankeInfo); b++)
    da du "b" nicht einmal verwendest und auch kein return/break in deiner schleife hast wird z.b der timer so oft gestartet wie die größe von tankeinfo.. kapier ich nicht was das bringt


    Mir hatt ein freund das Erklärt bzw Geholfen. Was soll ich den Ändern und warum?

  • if(strcmp(cmd, "/fill", true) == 0 || strcmp(cmd, "/fillcar", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new b = 0; b < sizeof(TankeInfo); b++)//bedeutet alles was hier drunter in der klammer steht wird so oft ausgeführt wie die größe von tankeinfo
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,1004.1221,-940.8615,41.9956))
    {
    if(IsANoTachoVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid,COLOR_GRAD1,"Du kannst dein Fahrrad nicht Auftanken!");//wenn du also aufm fahrrad sitzt müsste die nachricht mehrmals kommen
    }
    else
    {
    SetTimer("Fillup",RefuelWait,0);//genauso wie der timer
    Refueling[playerid] = 1;
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(playerid,COLOR_WHITE,"Dein Fahrzeug wird betankt, bitte warten...");
    format(string, sizeof(string), "UserCMD: %s Tankt an einer Tankstelle auf (/fill).", PlayerName(playerid));
    ABroadCast(COLOR_LIGHTRED,string, 5);
    }
    }
    else
    {
    // SendClientMessage(playerid,COLOR_GREY,"Du bist an keiner Tankstelle!");
    // return 1;
    }
    }
    }
    return 1;
    }//ausserdem fehlt hier eine klammer


    also wenn die schleife keinen sinn macht einfach löschen.. oder zumindest sehe ich keinen sinn darin