Couponsystem-HILFE

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
  • Hab mir gerade mal ein FS runtergeholt :D <.<


    Alles einwandfrei...nur ehm die Coupons werden nicht gespeichert/ich kann die nicht nach schlagen.... :S
    Kann mir einer sagen woran es liegt ? :S

    #include <a_samp>
    #include <dini>


    #define BLOCK_INTERVAL 3 // Sperrzeit nach mehrmaliger Falscheingabe des Codes (in Minuten)


    //COLORS
    #define COLOR_RED 0xFF0000FF
    #define COLOR_LYELLOW 0xFAF0CEFF
    #define COLOR_GREEN 0x33AA33AA


    //DIALOGE
    #define DIALOG_COUPONMENU 8123
    #define DIALOG_MONEY 8124
    #define DIALOG_SCORE 8125
    #define DIALOG_WANTEDS 8126
    #define DIALOG_WEAPONTYPE 8127
    #define DIALOG_WEAPONAMMO 8128
    #define DIALOG_ARMOUR 8129
    #define DIALOG_SKIN 8130
    #define DIALOG_CREATECOUPON 8131
    #define DIALOG_COUPON 8132


    forward Block(playerid);


    enum CouponEnum
    {
    Money,
    Score,
    Wanteds,
    Weapontype,
    Weaponammo,
    Armour,
    Skin
    };


    new Coupon[MAX_PLAYERS][CouponEnum];
    new CouponBlock[MAX_PLAYERS];


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Coupon-System by CoKeZ");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerDisconnect(playerid)
    {
    ResetCouponSettings(playerid);
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/createcoupon", cmdtext, true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");
    }
    else SendClientMessage(playerid, COLOR_RED, "Du bist kein Admin.");

    return 1;
    }

    if(strcmp("/coupon", cmdtext, true) == 0)
    {
    if(CouponBlock[playerid] != 2)
    {
    ShowPlayerDialog(playerid, DIALOG_COUPON, DIALOG_STYLE_INPUT, "Coupon einlösen", "Gib den Couponcode ein:", "Einlösen", "Abbrechen");
    }
    else SendClientMessage(playerid, COLOR_RED, "Du hast eine Couponsperre.");

    return 1;
    }

    return 0;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_COUPONMENU)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid, DIALOG_MONEY, DIALOG_STYLE_INPUT, "Geld hinzufügen", "Wie viel Geld möchtest du hinzufügen?", "Hinzufügen", "Zurück");
    }
    case 1:
    {
    ShowPlayerDialog(playerid, DIALOG_SCORE, DIALOG_STYLE_INPUT, "Score hinzufügen", "Wie viel Score möchtest du hinzufügen?", "Hinzufügen", "Zurück");
    }
    case 2:
    {
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_INPUT, "Wanteds hinzufügen", "Wie viele Wanteds sollen hinzugefügt werden?", "Hinzufügen", "Zurück");
    }
    case 3:
    {
    ShowPlayerDialog(playerid, DIALOG_WEAPONTYPE, DIALOG_STYLE_INPUT, "Waffentype auswählen", "Welche Waffe soll hinzugefügt werden? (ID)", "Weiter", "Zurück");
    }
    case 4:
    {
    ShowPlayerDialog(playerid, DIALOG_ARMOUR, DIALOG_STYLE_INPUT, "Rüstung hinzufügen", "Wie viel Rüstung soll hinzugefügt werden?", "Hinzufügen", "Zurück");
    }
    case 5:
    {
    ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_INPUT, "Skin hinzufügen", "Welcher Skin soll hinzugefügt werden?", "Hinzufügen", "Zurück");
    }
    case 6:
    {
    ShowPlayerDialog(playerid, DIALOG_CREATECOUPON, DIALOG_STYLE_INPUT, "Couponcode auswählen", "Wie soll der Couponcode lauten? (mind. 4 Zeichen)\n\nHinweis: Sollte kein Couponcode eingetragen werden, so wird ein zufälliger generiert.", "Erstellen", "Zurück");
    }


    }
    }
    else ResetCouponSettings(playerid);

    return 1;
    }

    if(dialogid == DIALOG_MONEY)
    {
    if(response)
    {
    if(strval(inputtext) == 0) return ShowPlayerDialog(playerid, DIALOG_MONEY, DIALOG_STYLE_INPUT, "Geld hinzufügen", "Wie viel Geld möchtest du hinzufügen?", "Hinzufügen", "Zurück");

    new msg[64];

    format(msg, sizeof(msg), "Dem Coupon wurden %i$ hinzugefügt.", strval(inputtext));
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    Coupon[playerid][Money] = strval(inputtext);
    }
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");

    return 1;
    }

    if(dialogid == DIALOG_SCORE)
    {
    if(response)
    {
    if(strval(inputtext) == 0) return ShowPlayerDialog(playerid, DIALOG_SCORE, DIALOG_STYLE_INPUT, "Score hinzufügen", "Wie viel Score möchtest du hinzufügen?", "Hinzufügen", "Zurück");

    new msg[64];


    format(msg, sizeof(msg), "Dem Coupon wurde %i Score hinzugefügt.", strval(inputtext));
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    Coupon[playerid][Score] = strval(inputtext);
    }
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");

    return 1;
    }

    if(dialogid == DIALOG_WANTEDS)
    {
    if(response)
    {
    if(strval(inputtext) == 0) return ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_INPUT, "Wanteds hinzufügen", "Wie viele Wanteds sollen hinzugefügt werden?", "Hinzufügen", "Zurück");


    new msg[64];


    if(strval(inputtext) == 1) format(msg, sizeof(msg), "Dem Coupon wurde 1 Wanted hinzugefügt.");
    else format(msg, sizeof(msg), "Dem Coupon wurden %i Wanteds hinzugefügt.", strval(inputtext));
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    Coupon[playerid][Wanteds] = strval(inputtext);


    }
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");

    return 1;
    }

    if(dialogid == DIALOG_WEAPONTYPE)
    {
    if(response)
    {
    new weaponid = strval(inputtext);


    if(weaponid > 0 && weaponid <= 46)
    {
    Coupon[playerid][Weapontype] = weaponid;
    ShowPlayerDialog(playerid, DIALOG_WEAPONAMMO, DIALOG_STYLE_INPUT, "Munition auswählen", "Wie viel Munition soll der Waffe hinzugefügt werden?", "Hinzufügen", "Zurück");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Ungültige Waffen ID.");
    ShowPlayerDialog(playerid, DIALOG_WEAPONTYPE, DIALOG_STYLE_INPUT, "Waffentype auswählen", "Welche Waffe soll hinzugefügt werden? (ID)", "Weiter", "Zurück");
    }
    }
    else
    {
    Coupon[playerid][Weapontype] = 0;
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");
    }

    return 1;
    }

    if(dialogid == DIALOG_WEAPONAMMO)
    {
    if(response)
    {
    if(strval(inputtext) == 0) return ShowPlayerDialog(playerid, DIALOG_WEAPONAMMO, DIALOG_STYLE_INPUT, "Munition auswählen", "Wie viel Munition soll der Waffe hinzugefügt werden?", "Hinzufügen", "Zurück");

    new msg[64];
    new weaponname[32];

    GetWeaponName(Coupon[playerid][Weapontype], weaponname, sizeof(weaponname));

    format(msg, sizeof(msg), "Dem Coupon wurde die Waffe %s mit %i Munition hinzugefügt,", weaponname, strval(inputtext));
    SendClientMessage(playerid, COLOR_LYELLOW, msg);

    Coupon[playerid][Weaponammo] = strval(inputtext);
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");
    }
    else ShowPlayerDialog(playerid, DIALOG_WEAPONTYPE, DIALOG_STYLE_INPUT, "Waffentype auswählen", "Welche Waffe soll hinzugefügt werden? (ID)", "Weiter", "Zurück");


    return 1;
    }

    if(dialogid == DIALOG_ARMOUR)
    {
    if(response)
    {
    if(strval(inputtext) == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_ARMOUR, DIALOG_STYLE_INPUT, "Rüstung hinzufügen", "Wie viel Rüstung soll hinzugefügt werden?", "Hinzufügen", "Zurück");


    return 1;
    }
    else
    {
    new msg[64];


    format(msg, sizeof(msg), "Dem Coupon wurde %i Rüstung hinzugefügt.", strval(inputtext));
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    Coupon[playerid][Armour] = strval(inputtext);
    }
    }
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");


    return 1;
    }

    if(dialogid == DIALOG_SKIN)
    {
    if(response)
    {
    if(strval(inputtext) < 0 || strval(inputtext) > 299)
    {
    SendClientMessage(playerid, COLOR_RED, "Ungültige ID.");
    ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_INPUT, "Skin hinzufügen", "Welcher Skin soll hinzugefügt werden?", "Hinzufügen", "Zurück");


    return 1;
    }
    else
    {
    new msg[64];


    format(msg, sizeof(msg), "Dem Coupon wurde der Skin %i hinzugefügt.", strval(inputtext));
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    Coupon[playerid][Skin] = strval(inputtext)+1;
    }
    }
    ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");


    return 1;
    }

    if(dialogid == DIALOG_CREATECOUPON)
    {
    if(response)
    {
    if(strlen(inputtext) != 0 && strlen(inputtext) < 4)
    {
    SendClientMessage(playerid, COLOR_RED, "Der Code muss mindestens 4 Zeichen lang sein.");
    ShowPlayerDialog(playerid, DIALOG_CREATECOUPON, DIALOG_STYLE_INPUT, "Couponcode auswählen", "Wie soll der Couponcode lauten? (mind. 4 Zeichen)\n\nHinweis: Sollte kein Couponcode eingetragen werden, so wird ein zufälliger generiert.", "Erstellen", "Zurück");


    return 1;
    }
    else
    {
    new coupondata[64];
    new couponname[16];
    new msg[64];


    if(strlen(inputtext) == 0)
    {
    couponname = GenerateCode();
    format(coupondata, sizeof(couponname), "/Coupons/%s.txt", couponname);

    while(fexist(coupondata))
    {
    couponname = GenerateCode();
    format(coupondata, sizeof(couponname), "/Coupons/%s.txt", couponname);
    }
    }
    else
    {
    format(couponname, sizeof(couponname), inputtext);
    format(coupondata, sizeof(couponname), "/Coupons/%s.txt", couponname);
    }


    dini_Create(coupondata);
    dini_IntSet(coupondata, "Geld", Coupon[playerid][Money]);
    dini_IntSet(coupondata, "Score", Coupon[playerid][Score]);
    dini_IntSet(coupondata, "Wanteds", Coupon[playerid][Wanteds]);
    dini_IntSet(coupondata, "Waffe", Coupon[playerid][Weapontype]);
    dini_IntSet(coupondata, "Munition", Coupon[playerid][Weaponammo]);
    dini_IntSet(coupondata, "Rüstung", Coupon[playerid][Armour]);
    dini_IntSet(coupondata, "Skin", Coupon[playerid][Skin]);


    format(msg, sizeof(msg), "Der Coupon %s wurde erfolgreich erstellt.", couponname);
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    ResetCouponSettings(playerid);
    }
    }
    else ShowPlayerDialog(playerid, DIALOG_COUPONMENU, DIALOG_STYLE_LIST, "Coupon erstellen", "Geld hinzufügen\nScore hinzufügen\nWanteds hinzufügen\nWaffe hinzufügen\nRüstung hinzufügen\nSkin hinzufügen\nCoupon erstellen", "Auswählen", "Abbrechen");

    return 1;
    }

    if(dialogid == DIALOG_COUPON)
    {
    if(response)
    {
    new coupondata[16];

    format(coupondata, sizeof(coupondata), "/Coupons/%s.txt", inputtext);


    if(fexist(coupondata))
    {
    new msg[128];
    new score = dini_Int(coupondata, "Score");
    new money = dini_Int(coupondata, "Geld");
    new wanteds = dini_Int(coupondata, "Wanteds");
    new weapontype = dini_Int(coupondata, "Waffe");
    new weaponammo = dini_Int(coupondata, "Munition");
    new Float:armour = dini_Int(coupondata, "Rüstung");
    new skin = dini_Int(coupondata, "Skin");

    format(msg, sizeof(msg), "-------- Coupon %s wurde eingelöst --------", inputtext);
    SendClientMessage(playerid, COLOR_GREEN, msg);

    if(score != 0)
    {
    SetPlayerScore(playerid, GetPlayerScore(playerid)+score);

    format(msg, sizeof(msg), "Du hast %i Score erhalten", score);
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    }


    if(money != 0)
    {
    GivePlayerMoney(playerid, money);

    format(msg, sizeof(msg), "Du hast %i$ erhalten.", money);
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    }

    if(wanteds != 0)
    {
    SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+wanteds);


    if(wanteds == 1) format(msg, sizeof(msg), "Du hast 1 Wanted erhalten.");
    else format(msg, sizeof(msg), "Du hast %i Wanteds erhalten.", wanteds);
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    }

    if(weapontype != 0)
    {
    new weaponname[32];

    GivePlayerWeapon(playerid, weapontype, weaponammo);

    GetWeaponName(weapontype, weaponname, sizeof(weaponname));
    format(msg, sizeof(msg), "Du hast die Waffe %s mit %i Munition erhalten.", weaponname, weaponammo);
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    }

    if(armour != 0)
    {
    new Float:curArmour;


    GetPlayerArmour(playerid, curArmour);
    SetPlayerArmour(playerid, curArmour+armour);

    format(msg, sizeof(msg), "Du hast %i Rüstung erhalten.", floatround(armour));
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    }

    if(skin != 0)
    {
    SetPlayerSkin(playerid, skin-1);

    format(msg, sizeof(msg), "Du hast den Skin %i erhalten.", skin-1);
    SendClientMessage(playerid, COLOR_LYELLOW, msg);
    }

    CouponBlock[playerid] = 0;
    fremove(coupondata);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Ungültiger Coupon.");
    CouponBlock[playerid]++;


    if(CouponBlock[playerid] == 3)
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast eine Couponsperre erhalten.");
    SetTimerEx("Block", 60000*BLOCK_INTERVAL, false, "i", playerid);
    }
    }
    }


    return 1;
    }


    return 1;
    }


    stock ResetCouponSettings(playerid)
    {
    Coupon[playerid][Money] = 0;
    Coupon[playerid][Score] = 0;
    Coupon[playerid][Wanteds] = 0;
    Coupon[playerid][Weapontype] = 0;
    Coupon[playerid][Weaponammo] = 0;
    Coupon[playerid][Armour] = 0;
    Coupon[playerid][Skin] = 0;
    }


    stock GenerateCode()
    {
    new zeichen[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
    new length = random(3) + 5;
    new index;
    new code[10];

    for(new i = 0; i < length; i++)
    {
    index = random(sizeof(zeichen)-1);
    code[i] = zeichen[index];
    }

    return code;
    }


    public Block(playerid)
    {
    CouponBlock[playerid] = 0;
    }