Selbst gemappte Getränkeautomaten

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
  • Ich weiß, dass es bereits Threads zu diesem Thema gibt, jedoch fand ich leider keinen durch Google sowie die SuFu.
    Wie könnte man es am Besten realisieren, dass die Automaten funktionieren?

    Beispiel :
    Du erstellst ein Enum das extra dafür gemacht wurde.
    Du gibst die x,y,z cordinaten von jedem selbst gemappten ein.


    Danach machst du zmb den Command


    /buy
    und dann bei IsPlayInRageOfPoint anstadt cordinaten zmb [al_x] , [al_y] , [al_z]

  • Danke euch, genau das wollte ich wissen.
    Gibt es irgendetwas zu beachten? zB. kann der Spieler während der Animation mehrmals die Enter-Taste drücken?


    Ja, solange du nichts dagegen scriptest schon. Du kannst auch die Animation mithilfe anderer Animationen beenden (aber nur wenn dies nicht per Script verhindert wird)

  • Du könntest eventuell beim Start der Animation einen Timer stellen. Z.b. nach 3sek. Ist die animation vorbei und erst dann kann er nochmal sich healen.


    Und eventuell eine Abfrage, ob die Lebensanzeige voll ist, und dann den Kauf verhindert. Wäre auch noch eine Idee.


  • Und eventuell eine Abfrage, ob die Lebensanzeige voll ist, und dann den Kauf verhindert. Wäre auch noch eine Idee.

    Genau, das habe ich vergessen. Danke dir.


    Nun teile ich das Ding ^^

    new Sprunking[MAX_PLAYERS] = 0;
    new Float:Sprunk[][] = {
    {1192.3206, -912.9593, 48.0625},
    {1194.2985, -912.8788, 48.0625}
    };


    forward TIMER_SPRUNKEND(playerid);
    public TIMER_SPRUNKEND(playerid)
    {
    ApplyAnimation(playerid, "VENDING", "VEND_Drink_P", 3.0, 0, 0, 0, 0, 0);
    TogglePlayerControllable(playerid, true);
    new Float:health;
    GetPlayerHealth(playerid, health);
    SetPlayerHealth(playerid, health+10);
    Sprunking[playerid] = 0;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    new Float:health;
    GetPlayerHealth(playerid, health);
    if(IsPlayerAtSprunk(playerid) && newkeys == 16 && GetPlayerState(playerid == PLAYER_STATE_ONFOOT) && health < 100)
    {
    if(SpielerInfo[playerid][pMoney] >= 1 && Sprunking[playerid] == 0)
    {
    Sprunking[playerid] = 1;
    TogglePlayerControllable(playerid, false);
    ApplyAnimation(playerid, "VENDING", "VEND_Use", 3.0, 0, 0, 0, 0, 0);
    PlayerPlaySound(playerid, 42600, 0, 0, 0);
    SetTimerEx("TIMER_SPRUNKEND", 3000, false, "i", playerid);
    SpielerInfo[playerid][pMoney] -= 1;
    GivePlayerMoney(playerid, -1);
    }
    else
    {
    PlayerPlaySound(playerid, 1053, 0, 0, 0);
    }
    }
    return 1;
    }


    Edit:
    habe die Funktion für die Abfrage vergessen:
    stock IsPlayerAtSprunk(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i < sizeof(Sprunk); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 1.0, Sprunk[i][0], Sprunk[i][1], Sprunk[i][2]))
    {
    return true;
    }
    }
    }
    return false;
    }
    Falls Errors auftreten, kann es sein, dass ich was vergessen habe.


    // Lebensabfrage eingefügt.

  • Position abfragen (ob der Spieler direkt vor dem gemappten automaten steht)
    - Animation ausführen
    - Geld abziehen
    - Heilen.


    Also ich würde sagen
    -abfragen ob der spieler genug + geld hat.
    -Geld abziehen
    -Animation
    -Heilen




    Das mit der abfrage ob der jenige genug geld hat , halt xD
    Oder halt mit IsPlayerAtSprunk das wohl das beste ist xD

    Mit freundlichen Grüßen
    [color=#696969][i][b]Maxi
    [tabmenu]
    [tab='Signatur!']

    [tab='Mein Computer System']

    • Gehäuse Delux SH891 Midi-Tower (ATX) schwarz
    • Netzteil 650 Watt Corsair VS650
    • Festplatte 1000GB SATA III 7200upm
    • Mainboard AM3 Gigabyte GA-970A-UD3P (Chipsatz:AMD 970/SB950/ATX)
    • NVIDIA Geforce GTX 770 Gainward Phantom
    • 8192MB DDR3 Single Channel 1600MHz
    • Prozessor AM3+ (FX-Serie) AMD FX-8350 8x 4.0 GHz


    [tab='Meine Handys']

    • HTC ONE M8
    • Samsung S3 mini
    • Vll bald HTC ONE M7


    [tab='Mein Steam Account = 1']