GF Tankstellensystem verändern

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
  • Grüßt euch.


    Ich möchte das Tankstellenbiz im GF ändern.
    Wie jeder weiß gibt es im GF von haus aus schon ein sbizz für die Tankstellen. und dem sind alle Tankenstellenzugeordnet.
    Ich hab nun in der sbizz.cfg neue Tabkstellen reingeschrieben.


    und im Script bei:
    new SBizzInfo[12][sbInfo];
    die 12 um die neuen Tankestellen erhöt


    Die Pickups der neuen Tankstellen werden auch angezeigt. Bis auf 1-2 sachen funktioniert es auch.
    Was nicht funktioniert ist wenn man an der entsprechenden Tankstelle tankt, bekommt der Inhaber kein Geld.
    Ebenfalls werden dieser Tankstelle keine Produckte (Benzin) abgezogen. Was ich ja haben möchte.


    Vom Lösungsweg her müsste ich dem ersten sbizz nur eine Tankstelle zu ordnen, da der alle Tankstellen zugeordnet sind.
    Und jedem weiteren sbizz jeweils eine andere Tankstelle zuordnen.


    Meine frage nun: Wie muss ich das im script ändern/hinzufügen?
    Bei der Tankstellenzuordnung reicht mir ein beispiel mit 2 unterschiedlichen Tankstellen.
    Auch für das abziehen der Produckte (Benzin) bräuchte ich ein Script beispiel.


    Gruß Vandigra

    Goth's:

    • Don't always wear black
    • Don't workship satan
    • Are not evil
    • Do not hate everybody
    • Are not always depressed
    • Can be happy too
    • Are usually nice people
    • Are normal, just like you
  • Oh...Vandigra will auch Scripten lernen :D Na dann kannste Little_Jon ja behilflich sein.


    Poste dochmal bitte den Tank befehl.Dann können wir dir weiterhelfen ;)

    Sie brauchen Hilfe bei Linux oder Windows Servern? Wissen nicht, wie man am besten ein Forum o. a. installiert? Dann schreiben Sie mir eine PN und ich versuche Ihnen zu helfen!

  • Oh...Vandigra will auch Scripten lernen :D Na dann kannste Little_Jon ja behilflich sein.


    Poste dochmal bitte den Tank befehl.Dann können wir dir weiterhelfen ;)


    Ich glaube Little_Jon scripter eher alleine :D

    So ist es, ich möchte auch scripten lernen. Allerdings nicht um Little_John zu unterstützen. Hab vor irgendwann nen eigenen Server zu machen. Und möchte daher mehr vom scripten wissen als DeeJay.
    Aber nun back to Topic.


    @Boomer für dich extra viel Code


    Hier wird deklariert was alles Tankstellen sind bzw wo sie sind:
    public IsAtGasStation(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerToPoint(6.0,playerid,1004.0070,-939.3102,42.1797) || PlayerToPoint(6.0,playerid,1944.3260,-1772.9254,13.3906))
    {//LS
    return 1;
    }
    else if(PlayerToPoint(6.0,playerid,-90.5515,-1169.4578,2.4079) || PlayerToPoint(6.0,playerid,-1609.7958,-2718.2048,48.5391))
    {//LS
    return 1;
    }
    else if(PlayerToPoint(6.0,playerid,-2029.4968,156.4366,28.9498) || PlayerToPoint(8.0,playerid,-2408.7590,976.0934,45.4175))
    {//SF
    return 1;
    }
    else if(PlayerToPoint(5.0,playerid,-2243.9629,-2560.6477,31.8841) || PlayerToPoint(8.0,playerid,-1676.6323,414.0262,6.9484))
    {//Between LS and SF
    return 1;
    }
    else if(PlayerToPoint(6.0,playerid,2202.2349,2474.3494,10.5258) || PlayerToPoint(10.0,playerid,614.9333,1689.7418,6.6968))
    {//LV
    return 1;
    }
    else if(PlayerToPoint(8.0,playerid,-1328.8250,2677.2173,49.7665) || PlayerToPoint(6.0,playerid,70.3882,1218.6783,18.5165))
    {//LV
    return 1;
    }
    else if(PlayerToPoint(8.0,playerid,2113.7390,920.1079,10.5255) || PlayerToPoint(6.0,playerid,-1327.7218,2678.8723,50.0625))
    {//LV
    return 1;
    }
    }
    return 0;
    }


    Der Tankvorgang:
    public Fillup()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new VID;
    new FillUp;
    new string[256];
    VID = GetPlayerVehicleID(i);
    FillUp = GasMax - Gas[VID];
    if(Refueling[i] == 1)
    {
    if(GetPlayerMoney(i) >= FillUp+4)
    {
    Gas[VID] += FillUp;
    FillUp = FillUp * SBizzInfo[3][sbEntranceCost];
    format(string,sizeof(string),"* Vehicle filled up, for: $%d.",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    GivePlayerMoney(i, - FillUp);
    SBizzInfo[3][sbTill] += FillUp;
    ExtortionSBiz(3, FillUp);
    Refueling[i] = 0;
    }
    else
    {
    format(string,sizeof(string),"* Not enough Money to refill, it costs $%d to fill your Vehicle.",FillUp);
    SendClientMessage(i,COLOR_LIGHTBLUE,string);
    }
    }
    }
    }
    return 1;
    }
    sbizzInfo[3] müsste die erste Tankstelle in der sbizz.cfg sein. Zeile 4


    Der Tankbefehl:
    if(strcmp(cmd, "/fill", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsAtGasStation(playerid))
    {
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Re-Fueling Vehicle, please wait",2000,3);
    SetTimer("Fillup",RefuelWait,0);
    Refueling[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY," You're not at a Gas Station!");
    }
    }
    return 1;
    }


    Auszug aus der sbizz.cfg:
    0|The State|~w~Car Renting 1|No-one|562.405029|-1289.995483|17.248199|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~Wang Cars|No-one|-1968.559814|296.269592|35.171901|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~Phone Company|No-one|-2016.381469|-37.667701|35.295700|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~Gas Company|No-one|-1722.235595|-118.215698|3.548898|5|5000000|20|91|1|0|5000|5000|100
    0|The State|~w~Electricity Company|No-one|-2521.005859|-623.331176|132.768997|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~Car Delivery|No-one|1702.400024|-1471.300048|13.546898|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~House Upgrade|No-one|2350.000000|-1411.800048|23.992300|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~CNN Studio|No-one|844.656005|-1045.555664|25.430099|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~Tow Car Service|No-one|2510.600097|-1468.199951|24.023899|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~General Store|No-one|1205.971557|-1459.673706|13.385998|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~Paintball Arena|No-one|1310.126586|-1367.812255|13.540800|5|5000000|0|0|1|0|100|100|100
    0|The State|~w~Kart Track|No-one|2281.909179|-2364.279052|13.546898|5|5000000|0|0|1|0|100|100|100
    1|Vandigra|~w~Gas Station 1|No-one|1004.007019|-939.310180|42.179698|5|5000000|20|91|1|0|5000|5000|30
    0|The State|~w~Gas Station 2|No-one|1944.326049|-1772.925415|13.390600|5|5000000|20|91|1|0|5000|5000|15
    0|The State|~w~Gas Station 3|No-one|-90.551498|-1169.457763|2.407900|5|5000000|20|91|1|0|5000|5000|15
    Die Tankstellen hier sind in Zeile 4, 13, 14, 15

    Goth's:

    • Don't always wear black
    • Don't workship satan
    • Are not evil
    • Do not hate everybody
    • Are not always depressed
    • Can be happy too
    • Are usually nice people
    • Are normal, just like you
  • Eine Idee hätte ich um jeder Tankstelle in der sbizz.cfg einen eigenen Tankstellenbereich zuzuordnen.
    Würde es was bringen wenn ich für jede Tankstelle eine eigene public mache.
    Sprich:
    public IsAtGasStation1(playerid)
    {
    if (IsPlayerConnected(playerid))
    {
    If (PlayerToPoint(6.0,playerid,1004.0070,-939.3102,42.1797) || PlayerToPoint(6.0,playerid,1944.3260,-1772.9254,13.3906))
    {
    return 1;
    }
    }
    return 0;
    }


    public IsAtGasStation2(playerid)
    {
    if (IsPlayerConnected(playerid))
    {
    if (PlayerToPoint(6.0,playerid,-90.5515,-1169.4578,2.4079) || PlayerToPoint(6.0,playerid,-1609.7958,-2718.2048,48.5391))
    {
    return 1;
    }
    }
    return 0;
    }
    usw...


    Den Tankbefehl so abänder:
    if(strcmp(cmd, "/fill", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsAtGasStation1(playerid))
    {
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Re-Fueling Vehicle, please wait",2000,3);
    SetTimer("Fillup1",RefuelWait,0);
    Refueling[playerid] = 1;
    }
    else if(IsAtGasStation2(playerid))
    {
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Re-Fueling Vehicle, please wait",2000,3);
    SetTimer("Fillup2",RefuelWait,0);
    Refueling[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY," You're not at a Gas Station!");
    }
    }
    return 1;
    }


    Dann die public Fillup für jede Tankstelle klone und dann an dem Fillup jeweils eine andere nummer setze.
    danach bei SbizzInfo[3] nur die zahl entsprechend der zeilen in der sbizz.cfg abändere


    Wenn das so funktioniert, bliebe mir nur noch die frage wie ich es machen kann das die Tankstellen bei jedem Tanken Produckte (Benzin) verlieren.



    Edit:
    Das mit dem Zuordnen von dem Tankstellenberreichen hab ich gerade mal ausprobiert.
    Das Funktioniert. Wobei ich denke das es da bessere lösungen gibt.


    Jetzt müsste man mir erklähren wie ich das schaffe das das Benzin das dort getankt wird, von der verfügbaren menge abgezogen wird.

    Goth's:

    • Don't always wear black
    • Don't workship satan
    • Are not evil
    • Do not hate everybody
    • Are not always depressed
    • Can be happy too
    • Are usually nice people
    • Are normal, just like you

    Einmal editiert, zuletzt von Vandigra ()