Лимит для выдачи денег

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
339
Симпатии
12
Пол
Мужской
Как сделать лимит денег с оповещением в чате (типа у игрока перевышен лимит денег ) и нельзя ему выдать деньги, и как убрать себя из списка ??
подскажите пожалуйста


Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif   

#define PLUGIN "give_hp_player"
#define VERSION "1.0"
#define AUTHOR "3Be3Da"

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("amx_money", "get_money", ADMIN_RCON)
}

new g_Money

public get_money(id)
{
    new menu = menu_create("\yМеню выдачи денег:", "give_money")
    menu_additem(menu, "Выдать \r1000$", "1")
    menu_additem(menu, "Выдать \r3000$", "2")
    menu_additem(menu, "Выдать \r5000$", "3")
    menu_additem(menu, "Выдать \r10000$", "4")
    menu_additem(menu, "Выдать \r16000$", "5")
    menu_additem(menu, "Выдать \r25000$", "6")
    
    menu_setprop(menu, MPROP_EXIT, "Закрыть")
    menu_display(id, menu, 0)
}

public give_money(id, menu, iItem)
{
    if(!is_user_connected(id))
    return;
    
    if(iItem == MENU_EXIT)
    return;
    
    switch(iItem)
    {
        case 0: g_Money = 1000
        case 1: g_Money = 3000
        case 2: g_Money = 5000
        case 3: g_Money = 10000
        case 4: g_Money = 16000
        case 5: g_Money = 25000
    }
    
    My_Menu(id)
}

public My_Menu(id)
{
    new i_Menu = menu_create("\yМеню выбора игрока:\w", "menu_handler")

    new s_Players[32], i_Num, i_Player

    new s_Name[32], s_Player[10]

    get_players(s_Players, i_Num)

    for (new i; i < i_Num; i++)
    {
        i_Player = s_Players[i]

        get_user_name(i_Player, s_Name, charsmax(s_Name))
        num_to_str(i_Player, s_Player, charsmax(s_Player))

        menu_additem(i_Menu, s_Name, s_Player, 0)

    }

    menu_display(id, i_Menu, 0)
}
 
public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

    // Получаем ID игрока, который был выбран в меню
    new i_Player = str_to_num(s_Data)
    new nameID[32], namei_Player[32]
    get_user_name(id, nameID, 31)
    get_user_name(i_Player, namei_Player, 31)

    cs_set_user_money(i_Player, cs_get_user_money(i_Player) + g_Money)
    client_print_color(0, print_chat, "^1[^4Money_menu^1] ^3Администратор^4 %s ^1выдал^4 %d$ ^3игроку^4 %s", nameID, g_Money, namei_Player)
 
    menu_destroy(menu)
    return PLUGIN_HANDLED
 }
 

Mandar1n

theRoone
Пользователь
Регистрация
13 Янв 2018
Сообщения
394
Симпатии
71
Пол
Мужской
gesk1995, лимит на какую-то сумму или лимит, если у игрока есть какая-то сумма?
 

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
339
Симпатии
12
Пол
Мужской
Mandar1n, Что бы было не больше 25000$
 

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
339
Симпатии
12
Пол
Мужской
Mandar1n, Сейчас проверю)
А как убрать себя из списка ??[DOUBLEPOST=1523911780][/DOUBLEPOST]Mandar1n,
 

Вложения

paffgame

D0L64E6
Разработчик
Регистрация
9 Июн 2017
Сообщения
154
Симпатии
84
Пол
Мужской
Telegram
@paffgame
PHP:
#include < amxmodx >
#include < cstrike >

#if AMXX_VERSION_NUM < 183
    #include < colorchat >
#endif  

#pragma tabsize 4        //a xule, ya skopipastil svoy je code (https://neugomon.ru/threads/2479/#post-29344)

new gPlayer[33], sMenuMoney;
new const sMoneys[][] = {"1000", "3000", "5000", "10000", "16000", "25000"};    //В меню пунктики
const sLimitMoney = 25000;                                    //Лимит денег

public plugin_init(){
    register_plugin("GiveMoney", "1.3.3.7", "paffgame");
    register_clcmd("amx_money", "clcmd");
   
    sMenuMoney = menu_create("Выберите кол-во денег", "handler2");
    for(new i, item[64]; i < sizeof sMoneys; i ++){
        format(item, charsmax(item), "Выдать\r %s$", sMoneys[i]);
        menu_additem(sMenuMoney, item, sMoneys[i]);
    }
    menu_setprop(sMenuMoney, MPROP_NEXTNAME, "Дальше");
    menu_setprop(sMenuMoney, MPROP_BACKNAME, "Назад");
    menu_setprop(sMenuMoney, MPROP_EXITNAME, "\rВыход");  
}

public clcmd(id){
    if(~get_user_flags(id) & ADMIN_RCON)
        return;
       
    money(id);
}
   
public money(id){
    new pl[32], cnt;
    get_players(pl, cnt, "ch");
   
    new menu = menu_create("Выберите игрока", "handler");
       
    for(new i,name[32], temp[4]; i < cnt; i ++){        //player = pl[i] ? ? ? (no)
        if(pl[i] == id)    continue;
           
        get_user_name(pl[i], name, charsmax(name));
        num_to_str(pl[i], temp, charsmax(temp));
        menu_additem(menu, name, temp);
    }
       
    menu_setprop(menu, MPROP_NEXTNAME, "Дальше");
    menu_setprop(menu, MPROP_BACKNAME, "Назад");
    menu_setprop(menu, MPROP_EXITNAME, "\rВыход");
   
    menu_display(id, menu);
}

public handler(id, menu, item){
    if(item == MENU_EXIT){
        menu_destroy(menu);
        return;
    }
       
    new data[30], name[64], callback, access;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);
   
    gPlayer[id] = str_to_num(data);
    menu_display(id, sMenuMoney);
}

public handler2(id, menu, item){
    if(item == MENU_EXIT)
        return;
       
    money(id);
    if(!is_user_connected(gPlayer[id])){
        client_print_color(id, false, "^1[^4Money_menu^1] Выбранный игрок вышел с сервера!");
        return;
    }
       
    new data[30], name[64], callback, access;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
   
    new mon = str_to_num(data), smoney = cs_get_user_money(gPlayer[id]) + mon, nameI[32], nameP[32];
    if(smoney > sLimitMoney)
        smoney = sLimitMoney;
   
    get_user_name(id, nameI, charsmax(nameI));
    get_user_name(gPlayer[id], nameP, charsmax(nameP));
    cs_set_user_money(gPlayer[id], smoney);
   
    client_print_color(false, false, "^1[^4Money_menu^1] ^4 %s ^1выдал^4 %d$ ^3игроку^4 %s", nameI, mon, nameP);  
}
 
Последнее редактирование:

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
339
Симпатии
12
Пол
Мужской
paffgame, у игрока 25000 но Админу пишит оповещения что ему выдаются деньги , хотя у него лимит 25000, можно как то сделать что когда лимит что бы игрок пропадал со списка ?
а то не понятно лимит у него или нет нигде не пишит:DD
 

Вложения

paffgame

D0L64E6
Разработчик
Регистрация
9 Июн 2017
Сообщения
154
Симпатии
84
Пол
Мужской
Telegram
@paffgame
Код:
if(pl[i] == id)    continue;
->
if(pl[i] == id || cs_get_user_money(pl[i]) >= sLimitMoney)    continue;
 

gesk1995

Пользователь
Регистрация
8 Июн 2017
Сообщения
339
Симпатии
12
Пол
Мужской
paffgame, ты походу ошибся
 

paffgame

D0L64E6
Разработчик
Регистрация
9 Июн 2017
Сообщения
154
Симпатии
84
Пол
Мужской
Telegram
@paffgame
PHP:
#include < amxmodx >
#include < cstrike >

#if AMXX_VERSION_NUM < 183
    #include < colorchat >
#endif  

#pragma tabsize 4        //a xule, ya skopipastil svoy je code (https://neugomon.ru/threads/2479/#post-29344)

new gPlayer[33], sMenuMoney;
new const sMoneys[][] = {"1000", "3000", "5000", "10000", "16000", "25000"};    //В меню пунктики
const sLimitMoney = 25000;                                    //Лимит денег

public plugin_init(){
    register_plugin("GiveMoney", "1.3.3.7", "paffgame");
    register_clcmd("amx_money", "clcmd");
   
    sMenuMoney = menu_create("Выберите кол-во денег", "handler2");
    for(new i, item[64]; i < sizeof sMoneys; i ++){
        format(item, charsmax(item), "Выдать\r %s$", sMoneys[i]);
        menu_additem(sMenuMoney, item, sMoneys[i]);
    }
    menu_setprop(sMenuMoney, MPROP_NEXTNAME, "Дальше");
    menu_setprop(sMenuMoney, MPROP_BACKNAME, "Назад");
    menu_setprop(sMenuMoney, MPROP_EXITNAME, "\rВыход");  
}

public clcmd(id){
    if(~get_user_flags(id) & ADMIN_RCON)
        return;
       
    money(id);
}
   
public money(id){
    new pl[32], cnt;
    get_players(pl, cnt, "h");
   
    new menu = menu_create("Выберите игрока", "handler");
       
    for(new i,name[32], temp[4]; i < cnt; i ++){        //player = pl[i] ? ? ? (no)
        if(pl[i] == id || cs_get_user_money(pl[i]) >= sLimitMoney)    continue;
           
        get_user_name(pl[i], name, charsmax(name));
        num_to_str(pl[i], temp, charsmax(temp));
        menu_additem(menu, name, temp);
    }
       
    menu_setprop(menu, MPROP_NEXTNAME, "Дальше");
    menu_setprop(menu, MPROP_BACKNAME, "Назад");
    menu_setprop(menu, MPROP_EXITNAME, "\rВыход");
   
    menu_display(id, menu);
}

public handler(id, menu, item){
    if(item == MENU_EXIT){
        menu_destroy(menu);
        return;
    }
       
    new data[30], name[64], callback, access;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
    menu_destroy(menu);
   
    gPlayer[id] = str_to_num(data);
    menu_display(id, sMenuMoney);
}

public handler2(id, menu, item){
    if(item == MENU_EXIT)
        return;
   
    if(!is_user_connected(gPlayer[id])){
        client_print_color(id, false, "^1[^4Money_menu^1] Выбранный игрок вышел с сервера!");
        money(id);
        return;
    }
       
    new data[30], name[64], callback, access;
    menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
   
    new mon = str_to_num(data), smoney = cs_get_user_money(gPlayer[id]) + mon, nameI[32], nameP[32];
    if(smoney > sLimitMoney)
        smoney = sLimitMoney;
   
    get_user_name(id, nameI, charsmax(nameI));
    get_user_name(gPlayer[id], nameP, charsmax(nameP));
    cs_set_user_money(gPlayer[id], smoney);
   
    client_print_color(false, false, "^1[^4Money_menu^1]^4 %s ^1выдал^4 %d$ ^3игроку^4 %s", nameI, mon, nameP);  
    money(id);
}
 
Сверху Снизу