Waffenladen mit dcmd/sscanf

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 Breadfisher,


    Ich hätte gerne einen Waffenladen mit dcmd bzw sscanf.


    Die Koordinaten, wo der command ausgeführt werden kann, editiere ich später selber in den cmd rein.


    Es sollte etwa so sein:


    /waffe [Name] [Anzahl]
    Wenn in einem der beiden oder auch in beiden Parametern nichts angegeben wird, soll eine Liste mit den möglichen Waffen returnt werden.
    Man soll die Waffen über den Namen der Waffe kaufen können also nicht:

    Zitat

    /waffe 31 999


    sondern

    Zitat

    /waffe m4 999


    Es soll ein Grundpreis pro Waffe berechnet werden + einen Preis für die Anzahl
    sprich:


    Beispiel M4: Grundpreis ( steht in der liste, die returnt wird s.o) + Anzahl*Anzahlpreis
    Beispiel M4: 200 + anzahl*2


    Wäre echt super, wenn ihr mir so ein cmd machen könntet, da ich momentan nicht so ganz dahinter steige.


    MFG
    Hagi

  • Hat etwas gedauert, bin unterm schreiben eingeschlafen.
    Sollte so funktionieren :sleeping:

    Syntax:
    /buygun <waffenid/waffenname> <munitionsmenge>



    enum Waffenshop
    {
    Waffenname[50],
    Waffenid,
    Waffenpreis,
    Waffenmunitionspreis,
    };


    new WaffenAuswahl[1][Waffenshop] = {
    { "M4" ,31, 300, 20 }
    };


    dcmd_waffe(playerid, params[])
    {
    new
    waffe,
    muni,
    if (sscanf(params, "su", waffe, muni)) SendClientMessage(playerid, 0xFF0000AA, "Benutzung: \"/Waffe <waffenid/waffenname><munitionsmenge>\"");
    else if (waffe != WaffenAuswahl[1][Waffenid] || waffe != WaffenAuswahl[1][Waffenname]) SendClientMessage(playerid, 0xFF0000AA, "Waffenid/Waffenname nicht gefunden!");
    else if (muni > 999) SendClientMessage(playerid, 0xFF0000AA, "Maximal 999 Munition gleichzeitig kaufbar");
    else
    {
    muni = WaffenAuswahl[1][Waffenid]; /* falls der string eingegeben wurde*/
    if(GetPlayerMoney(playerid) > WaffenAuswahl[1][Waffenidpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni)
    {
    GivePlayerWeapon(playerid, waffe, muni);
    GivePlayerMoney(playerid, -WaffenAuswahl[1][Waffenidpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni);
    SendClientMessage(playerid, 0x00FF00AA, "Waffen gekauft");
    }
    else
    {
    SendClientMessage(playerid, 0x00FF00AA, "Du hast nicht genug Geld!");
    }
    }
    return 1;
    }


    /*Unter OnCommandText*/


    dcmd(waffe, 5, cmdtext);

    [align=center]
    Mta Script Editor - Work in Progress

  • Hab das jetzt mal ein bisschen ordentlicher aufgeschreiben, allerdings funktioniert der command nicht.
    Er sagt immer Waffe ausverkauft


    dcmd_waffe(playerid, params[])
    {
    new waffe;
    new muni;


    if (sscanf(params, "su", waffe, muni))
    {
    return SendClientMessage(playerid, weiß, "Benutzung: /waffe [Name] [Anzahl]");
    }


    if(waffe != WaffenAuswahl[6][Waffenid] || waffe != WaffenAuswahl[6][Waffenname])
    {
    SendClientMessage(playerid, 0xFF0000AA, "Waffenid/Waffenname ausverkauft!");
    }
    else if (muni > 999)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Maximal 999 Munition gleichzeitig kaufbar");
    }
    else
    {
    muni = WaffenAuswahl[1][Waffenid];


    if(GetPlayerMoney(playerid) > WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni)
    {
    GivePlayerWeapon(playerid, waffe, muni);
    GivePlayerMoney(playerid, -WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni);
    SendClientMessage(playerid, 0x00FF00AA, "Waffen gekauft");
    }
    else
    {
    SendClientMessage(playerid, 0x00FF00AA, "Du hast nicht genug Geld!");
    }
    }
    return 1;
    }


    enum Waffenshop
    {
    Waffenname[50],
    Waffenid,
    Waffenpreis,
    Waffenmunitionspreis,
    };


    new WaffenAuswahl[7][Waffenshop] =
    {
    { "M4" ,31, 1, 1 },
    { "ak47",30,1,1 },
    { "mp5",29,1,1},
    { "9mm",22,1,1},
    { "deagle",24,1,1},
    { "messer",4,1,1},
    { "schlagstock",3,1,1}
    };

  • Bitte, ich hab kein Plan, was ich machen muss.


    Ich versteh nur was mit Schleife nur was soll die durchgehn ?
    Help pls


    @dit:


    Es reicht auch, wenn ihr mir eine Anregung gebt, die ich verstehe


    @dit:


    Also ich bekomm das nicht hin, kann mir nicht jemand den Code geben ?


    @dit:


    Also ich habe das jetzt so probiert :
    Es funktioniert aber immer noch nicht. Gleiches Problem: Diese Waffe verkaufen wir nicht


    enum Waffenshop
    {
    Waffenname[50],
    Waffenid,
    Waffenpreis,
    Waffenmunitionspreis,
    };


    new WaffenAuswahl[][Waffenshop] =
    {
    {"M4" ,31, 1, 1},
    {"AK47",30,1,1},
    {"MP5",29,1,1},
    {"9mm",22,1,1},
    {"Deagle",24,1,1},
    {"Messer",4,1,1},
    {"Schlagstock",3,1,1},
    {"Shotgun",25,1,1},
    {"Spray",41,1,1}
    };


    dcmd_waffe(playerid, params[])
    {
    new waffe;
    new muni;


    if (sscanf(params, "su", waffe, muni))
    {
    return SendClientMessage(playerid, weiß, "Benutzung: /waffe [Name] [Anzahl]");
    }


    if(IsPlayerInRangeOfPoint(playerid,2.0,-2029.8009,157.5401,28.8359))
    {
    for(new i = 0;i<sizeof(WaffenAuswahl)+1;i++)
    if(waffe != WaffenAuswahl[i][Waffenid] || waffe != WaffenAuswahl[i][Waffenname])
    {
    SendClientMessage(playerid, rot, "Fehler: Diese Waffe verkaufen wir nicht");
    }
    else if (muni > 999)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Maximal 999 Munition gleichzeitig kaufbar");
    }
    else
    {
    muni = WaffenAuswahl[1][Waffenid];


    if(GetPlayerMoney(playerid) > WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni)
    {
    GivePlayerWeapon(playerid, waffe, muni);
    GivePlayerMoney(playerid, -WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni);
    SendClientMessage(playerid, 0x00FF00AA, "Waffen gekauft");
    }
    else
    {
    SendClientMessage(playerid, 0x00FF00AA, "Du hast nicht genug Geld!");
    }
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Fehler: Du bist nicht am Waffenladen im Doherty");
    return 1;
    }
    }

    3 Mal editiert, zuletzt von Hagi ()