Tanksystem fast fertig nur 2 Problems

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
  • Heyho !
    Ich bin grad dabei mein eigenes Tanksystem zu basteln.Wie immer, ich habe keinen godfather ^^ ...


    Mein Problem ist wenn jemand tankt, muss ja sein Tank aufgefüllt werden, doch wie stell ich ein das das Fahrzeug vollgetankt wird?


    Fuel[veh] = 100;

    so sollte es ja richtig sein, doch wenn ich da veh reinschreibe, kommt der Fehler error 017: undefined symbol "veh" , sprich ich habe veh nicht angegeben. Wie gebe ich es an ? .... veh = ?


    Nun muss ich noch beim Tank cmd haben, dass er pro Liter tankt :( , was meiner Meinung nach schwer ist. Wie geb ich an, dass er Pro Liter 1 € abzieht?
    Derzeit muss ich es leider noch so machen, dass er volltankt aber immer volltankt^^.


    Giiive Help :(

  • Du kannst die Variable z.B. durch das
    new
    veh = GetPlayerVehicleID(playerid);
    bestimmen. Dadurch wird das Fahrzeug aufgetankt, in welchem der Spieler gerade sitzt.


    Zitat

    Nun muss ich noch beim Tank cmd haben, dass er pro Liter tankt :( , was meiner Meinung nach schwer ist. Wie geb ich an, dass er Pro Liter 1 € abzieht?
    Derzeit muss ich es leider noch so machen, dass er volltankt aber immer volltankt^^.

    Du musst einen Paramter benutzen, den der Spieler bestimmen muss, wie viel er tanken will.
    Mit dcmd und sscanf:
    dcmd_fuel(playerid,params[])
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    {
    // Spieler ist kein Fahrer
    return 1;
    }
    new
    fuel,
    carid = GetPlayerVehicleID(playerid);
    if(sscanf(params,"d", fuel))
    {
    // Spieler hat keinen Parameter angegeben
    return 1;
    }
    if(Fuel[carid]+fuel > 100) // 100 ist die maximale Menge
    {
    // Es passt nicht so viel Sprit in das Auto
    return 1;
    }
    Fuel[carid] += fuel;
    GivePlayerMoney(playerid,-fuel); // Da 1 Liter $1 kostet
    //[... Meldungen usw ...]
    return 1:
    }
    Ohne:
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    {
    // Spieler ist kein Fahrer
    return 1;
    }
    new
    string[128],
    fuel,
    carid = GetPlayerVehicleID(playerid),
    idx;
    string = strtok(cmdtext,idx);
    if(string[0] == 0)
    {
    // Spieler hat keinen Parameter angegeben
    return 1;
    }
    fuel = strval(string);
    if(Fuel[carid]+fuel > 100) // 100 ist die maximale Menge
    {
    // Es passt nicht so viel Sprit in das Auto
    return 1;
    }
    Fuel[carid] += fuel;
    GivePlayerMoney(playerid,-fuel); // Da 1 Liter $1 kostet
    //[... Meldungen usw ...]
    return 1:

  • Danke ist gut erklärt ich starte und hoffe mal ^.^[

    new veh;
    veh = GetPlayerVehicleID(playerid);
    new fuel;
    if(strcmp(cmdtext, "/tanken",true,5) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(PlayerToPoint(1.0, playerid, 1938.3669, -1773.0638, 13.3828))
    {
    if(Fuel[veh]+fuel > 100) // 100 ist die maximale Menge
    { // Es passt nicht so viel Sprit in das Auto
    return 1;
    }
    Fuel[veh] += fuel;
    GivePlayerMoney(playerid,-fuel); // Da 1 Liter $1 kostet
    return 1;
    }
    SendClientMessage(playerid, COLOR_ORANGE, "Du hast vollgetankt! ");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED, "Du bist an keiner Tankstelle");
    }
    return 1;
    }


    Habs jet so doch, es wird weder geld abgezogen noch voll getankt

  • Ehm, warum lässt du die wichtigesten Sachen aus meinem dir vorgeschlagenen Code weg. So wird es kaum funktionieren...
    Du musst doch die Variable (den Parameter) "fuel" definieren mit Hilfe von
    string = strtok(cmdtext,idx);
    string = strtok(cmdtext,idx);

    string = strtok(cmdtext,idx);
    if(string[0] == 0)
    {
    // Spieler hat keinen Parameter angegeben
    return 1;
    }
    fuel = strval(string);
    Außerdem solltest du noch ein paar SendClientMessage reinbauen zur Bestätigung

  • array sizes do not match, or destination array is too small
    warum sagt er mir das hier



    new string[128];
    new veh;
    veh = GetPlayerVehicleID(playerid);
    new fuel;
    if(strcmp(cmdtext, "/tanken",true,5) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(PlayerToPoint(1.0, playerid, 1938.3669, -1773.0638, 13.3828))
    {
    string = strtok(cmdtext,idx);
    if(string[0] == 0)
    {
    // Spieler hat keinen Parameter angegeben
    return 1;
    }
    fuel = strval(string);
    if(Fuel[veh]+fuel > 100) // 100 ist die maximale Menge
    } // Es passt nicht so viel Sprit in das Auto
    Fuel[veh] += fuel;
    GivePlayerMoney(playerid,-fuel); // Da 1 Liter $1 kostet
    }
    SendClientMessage(playerid, COLOR_ORANGE, "Du hast vollgetankt! ");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED, "Du bist an keiner Tankstelle");
    }
    return 1;
    }


    Versteh ich einfach nicht <.<
    Kannste mich mal ICQ adden dann können wirs auch da klären

  • Einrücken hilft, dann sieht man auch seine eigenen Klammerfehler:
    if(strcmp(cmdtext, "/tanken",true,5) == 0)
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    {
    return 1;
    }
    new
    veh = GetPlayerVehicleID(playerid),
    fuel;
    if(PlayerToPoint(5.0, playerid, 1938.3669, -1773.0638, 13.3828))
    {
    string = strtok(cmdtext,idx);
    if(string[0] == 0)
    {
    // Spieler hat keinen Parameter angegeben
    return 1;
    }
    fuel = strval(string);
    if(Fuel[veh]+fuel > 100)
    {
    SendClientMessage(playerid, COLOR_ORANGE, "Du kannst nicht mehr so viel tanken ");
    return 1;
    }
    Fuel[veh] += fuel;
    GivePlayerMoney(playerid,-fuel);
    SendClientMessage(playerid, COLOR_ORANGE, "Du hast vollgetankt! ");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED, "Du bist an keiner Tankstelle");
    }
    }

    Zitat

    array sizes do not match, or destination array is too small



    warum sagt er mir das hier

    Welche Zeile? Es heisst nur, dass du einen zu kleinen Array bestimmt hast...