Tank Problem

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 Morgen,
    ich habe ein kleines Problem.
    Ich habe hier ein Tanksystem, der am Ende wenn das Fahrzeug vollgetankt ist, dass Geld von der Person abzieht.
    Da wird aber von einem Biz erwähnt, könnte es jemand so umschreiben, dass absolut kein Biz erwähnt wird, sondern einfach direkt 30 Dollar pro Liter einkassiert wird?


    Das ist es:


    Function Fillup()
    {
    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[i] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+1)
    {
    Gas[VID] += FillUp;
    FillUp = SBizzInfo[2][sbEntranceCost] * FillUp;
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt. (Preis pro Liter: $%d)",FillUp,SBizzInfo[2][sbEntranceCost]);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, - FillUp);
    SBizzInfo[2][sbTill] += FillUp/1;
    ExtortionSBiz(2, FillUp);
    Refueling[i] = 0;
    UnFreezePlayer(i);
    }
    else
    {
    format(string,sizeof(string),"* Du hast nicht genug Geld zum Tanken, Kosten: $%d / Liter.",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    }
    }
    }
    }
    return 1;
    }


    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Hier nochmal der Befehl /tanken, der steht aber eher im Hintergrund, da muss denke ich mal nichts dran gemacht werden??


    if(strcmp(cmd, "/tanken", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsAtGasStation(playerid))
    {
    if(IsANoTachoVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid,COLOR_YELLOW," Du kannst kein Fahrrad betanken!");
    }
    else
    {
    SetTimer("Fillup",RefuelWait,0);
    Refueling[playerid] = 1;
    FreezePlayer(playerid);
    SendClientMessage(playerid,COLOR_WHITE," Dein Fahrzeug wird betankt, Bitte warten....");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY," Du bist an keiner Tankstelle!");
    }
    }
    return 1;
    }


  • Function Fillup()
    {
    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[i] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+1)
    {
    Gas[VID] += FillUp;
    FillUp = SBizzInfo[2][sbEntranceCost] * FillUp;
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt. (Preis pro Liter: $%d)",FillUp,SBizzInfo[2][sbEntranceCost]);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, - FillUp);
    Refueling[i] = 0;
    UnFreezePlayer(i);
    }
    else
    {
    format(string,sizeof(string),"* Du hast nicht genug Geld zum Tanken, Kosten: $%d / Liter.",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    }
    }
    }
    }
    return 1;
    }




    Teste es bitte so :P

  • Da ist ja noch immer ein Biz Variable eingetragen...
    Wo ist außerdem der Preis je Liter eingetragen??
    Der Preis soll absolut nicht vom Server aus veränderbar sein, sondern vom Script aus.
    Je Tankliter soll nur 30 Dollar verrechnet werden, dieses Geld soll an KEINEM gehen, sondern nur abgezogen werden.

  • Function Fillup()
    {
    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[i] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+1)
    {
    Gas[VID] += FillUp;
    FillUp = 30 * FillUp;
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt. (Preis pro Liter: $30)",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, - FillUp);
    Refueling[i] = 0;
    UnFreezePlayer(i);
    }
    else
    {
    format(string,sizeof(string),"* Du hast nicht genug Geld zum Tanken, Kosten: $%d / Liter.",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    }
    }
    }
    }
    return 1;
    }





    Teste es mal so ^^

  • xD das ist doch bissle armselig das du dies nicht selbst hin bekommst
    FillUp = SBizzInfo[2][sbEntranceCost] * FillUp;
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt. (Preis pro Liter: $%d)",FillUp,SBizzInfo[2][sbEntranceCost]);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, - FillUp);


    schaus es dir an
    FillUp = SBizzInfo[2][sbEntranceCost] * FillUp;


    ist eine Rechnung


    FillUp = 30 * FillUp;


    hier wird der endpreis ausgegeben und der Preis pro liter welcher von den eintrittskosten kommt vom biz
    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt. (Preis pro Liter: $%d)",FillUp,SBizzInfo[2][sbEntranceCost]);

    format(string,sizeof(string),"* Fahrzeug für $%d aufgetankt. (Preis pro Liter: 30$)",FillUp);


    und mehr nicht zu dem teil


    den anderen kannst du mal selbst machen . Besser mal nachdenken und nicht bequem vor dem Rechner hocken und die arbeit andere
    machen lassen



  • Danke für deine Hilfe!
    Es kommt folgender Error:


    G:\Aktuelles Script\Berkanneu.pwn(10409) : error 033: array must be indexed (variable "Refueling")
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Damit meint er das hier


    if(Refueling == 1)