Поиск Плагин ограничение денег.

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
685
Симпатии
195
Пол
Мужской
ВКонтакте
e1337ace
Анатолий, он говорит что за киллы ему также не дает.. но вот если его пушка сделает килл ... тогда деньга начисляется.. (или ты также на пушке пробовал??
на пушках не пробовал но суть в том что
register_message(get_user_msgid("Money") , "Message_Money")
Вызывается в момент +- денег у игрока и как не крути начислять выше лимита ему не должно. ну и яж писал что нужно плагин попробовать поставить выше или ниже в списке.
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
Попробуй этот плагин прописать ниже чем твой csdm или выше.
у себя я проверял ставил 10к денег и выше 10к при киллах и в новом раунде мне не давало. так что плагин рабочий.
C++:
#include <amxmodx>
#include <fakemeta>

const MAX_MONEY = 200000 /* Максимальная сумма денег у игрока. */

const mMoney = 102
#if cellbits == 32
    const m_iAccount = 115
#else
    const m_iAccount = 140
#endif
const linux_diff_player = 5

public plugin_init()
{
    register_message(get_user_msgid("Money") , "Message_Money")
}

public Message_Money(iMsgId, iMsgDest, id)
{
    if (is_user_connected(id))
    {
        if (fm_get_user_money(id) > MAX_MONEY)
            fm_set_user_money(id, MAX_MONEY)
    }
}

stock fm_get_user_money(client)
    return get_pdata_int(client, m_iAccount, linux_diff_player)

stock fm_set_user_money(client, money, flash = 1)
{
    set_pdata_int(client, m_iAccount, money, linux_diff_player)
    message_begin(MSG_ONE_UNRELIABLE, mMoney, {0, 0, 0}, client)
    write_long(money)
    write_byte(flash ? 1 : 0)
    message_end()
}
не, не хочет даже если себе накручивать деньги выходит выше 200 тыс
когда игрок против игрока то выше 200 не будет
когда пушка или мина против игрока то выходит за пределы)
 

fantom

Разработчик
Регистрация
11 Июн 2017
Сообщения
426
Симпатии
293
Пол
Мужской
на пушках не пробовал но суть в том что
register_message(get_user_msgid("Money") , "Message_Money")
Вызывается в момент +- денег
Ивент будет вызван только при случаях
1. Сообщение отправил геймдлл
2. Сообщение отправлено с помощью emessage_begin

Не видя пушек, даже не стоит пытаться что-либо адекватное сделать. Иначе все будет сводиться к think-ам как в том ужасном коде выше.
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
Для себя нашел такой способ ограничить. Плагин банка. Может кому-то подойдет как затычка на время =) Ограничение основного счета 200000$
Simple CS Bank GHW_Chronic:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define VERSION    "3.0"

new bank[33]
//new configfile[200]
new authid[33][32]
new pcvar

public plugin_init()
{
    register_plugin("Simple CS Bank",VERSION,"GHW_Chronic")
    pcvar = register_cvar("bank_save","0")

    //new configsdir[200]
    //get_configsdir(configsdir,199)
    //format(configfile,199,"%s/bank.ini",configsdir)

    register_dictionary("Bank.txt")
}

public client_putinserver(id)
{
    if(!is_user_bot(id)) set_task(5.0,"client_authorized2",id)
}

public client_authorized2(id)
{
    bank[id] = 0
    if(get_pcvar_num(pcvar))
        set_task(10.0,"read_file2",id)
    set_task(0.1,"cpt",id,"",0,"b")
}

public client_disconnect(id)
{
    if(!is_user_bot(id) && get_pcvar_num(pcvar))
        save_money(id)
}

public cpt(id)
{
    if(is_user_alive(id))
    {
        if(cs_get_user_money(id)>200000)
        {
            bank[id]+= cs_get_user_money(id) - 200000
            cs_set_user_money(id,200000)
        }
        if(cs_get_user_money(id)<10)
        {
            if(bank[id] < 10 - cs_get_user_money(id))
            {
                cs_set_user_money(id,cs_get_user_money(id)+bank[id])
                bank[id]=0
            }
            else
            {
                bank[id]-=  10 - cs_get_user_money(id)
                cs_set_user_money(id,10)
            }
        }
    //    set_hudmessage(0, 255, 0, 0.7, 0.87, 0, 6.0, 0.1, 0.1, 0.2, next_hudchannel(id) )
    //    show_hudmessage(id,"%L",id,"MSG_BANK",bank[id])
    }
}

public read_file2(id)
{
    if(is_user_connected(id) )
    {
        get_user_authid(id,authid[id],31)
        new read[32]
        //new filepointer = fopen(configfile,"r")
        //while(fgets(filepointer,read,31))
        {
            replace(read,31,"^n","")
            if(equali(read,authid[id]))
            {
                //fgets(filepointer,read,31)
                if(cs_get_user_money(id)<10)
                {
                    if(cs_get_user_money(id) + str_to_num(read)<=10)
                    {
                        cs_set_user_money(id,cs_get_user_money(id) + str_to_num(read))
                    }
                    if(cs_get_user_money(id) + str_to_num(read)>10)
                    {
                        bank[id] += (str_to_num(read) + cs_get_user_money(id)) - 10
                        cs_set_user_money(id,10)
                    }
                }
                else
                {
                    bank[id] += str_to_num(read)
                }
                return;
                
            }
        }
        //fclose(filepointer)
    }
}

public save_money(id)
{
    new string[32]
    format(string,31,"%d",bank[id])
    new i, line
    //new filepointer = fopen(configfile,"r")
    //if(filepointer)
    {
        new read[32]
        //while(fgets(filepointer,read,31))
        {
            replace(read,31,"^n","")
            server_print("%d. %s",i,read)
            if(equali(read,authid[id]))
            {
                line=1
                return;
            }
            i++
        }
    }
    //fclose(filepointer)
    //if(!line) write_file(configfile,authid[id],i)
    //write_file(configfile,string,i+1)
}
 

NeTvoyKenji

Пользователь
Регистрация
27 Мар 2019
Сообщения
423
Симпатии
47
Не видя пушек, даже не стоит пытаться что-либо адекватное сделать.
Даже нет смысла смотреть пушки, там и так всё понятно.
Привожу пример, который у моего знакомого:

говнокод уровня Анатолия:
    if (equal (sClassname, "sentry") || equal (sClassname, "sentrybase"))
    {
        new iOwner = GetSentryPeople (ent, OWNER)
            
        if (!is_user_connected (iOwner) || !is_valid_player (iOwner) || !is_user_connected (idattacker) || !is_valid_player (idattacker))
           return HAM_IGNORED
    
        if (cs_get_user_team (iOwner) == cs_get_user_team (idattacker) && idattacker != iOwner)
           return HAM_SUPERCEDE
            
            
        if(GetSentryLevel(ent) == SENTRY_LEVEL_1)
        {
            cs_set_user_money (idattacker, min (cs_get_user_money (idattacker) + get_pcvar_num(g_Cvar_uron[0]), 50000))
        }
        else
        if(GetSentryLevel(ent) == SENTRY_LEVEL_2)
        {
            cs_set_user_money (idattacker, min (cs_get_user_money (idattacker) + get_pcvar_num(g_Cvar_uron[1]), 50000))
        }
        else
        if(GetSentryLevel(ent) == SENTRY_LEVEL_3)
        {
            cs_set_user_money (idattacker, min (cs_get_user_money (idattacker) + get_pcvar_num(g_Cvar_uron[2]), 50000))
        }
        else
        if(GetSentryLevel(ent) == SENTRY_LEVEL_4)
        {
            cs_set_user_money (idattacker, min (cs_get_user_money (idattacker) + get_pcvar_num(g_Cvar_uron[3]), 50000))
        }
Тарас, думаю ты сам всё понял.
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
Мне такая затычка понравилась, но так как я не очень сильно в этом шарю. Есть ли там какая либо нагрузка или еще чего.
Все что я понял, то что сделал ограничение в 200к, все свыше 200к идет якобы в банк, который не отображается и не сохраняется при смене карты и переподключению к серверу. Немного упрощает тем что не надо ставить ограничение в каждый плагин типа пушек, лазеров и т.д т.п. Сервер не падает, работает нормально! Но заметил такую особенность у меня для тестов под виндой rehlds полностью обновленный и не стыкуются с плагином который дает деньги за определенное время игры, слетает в 16к(скорее всего в плагине есть ограничение на 16к). На основном сервере тоже ReHlds но, не последней версии норм работает и не слетает.Просто включил логику если оно снимает деньги и ограничивает счет то почему бы не сделать, что бы сохраняло но не выдавало обратно(точнее выдает 10$ если на основном счете меньше 10$)Ну и разница в том что если ограничить пушку, то тогда не происходит постоянного +- основного счета.
 

NeTvoyKenji

Пользователь
Регистрация
27 Мар 2019
Сообщения
423
Симпатии
47
Учись пользоваться функциями форума.
Мне не нравится, что из-за тебя люди могут подумать, мол я задаю настолько тупые вопросы.
 

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
685
Симпатии
195
Пол
Мужской
ВКонтакте
e1337ace
Учись пользоваться функциями форума.
Мне не нравится, что из-за тебя люди могут подумать, мол я задаю настолько тупые вопросы.
Хаха так ты и не понимаешь ниуя)) смирись! Ты просто затычка в каждой теме и правокатор! И не более того!
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
тип ограничение:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define PLUGIN "MoneyLimit"
#define VERSION "1.0"
#define AUTHOR "edit TrojanRanson"

new money[33]
new pcvar
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    pcvar = register_cvar("MoneyLimit","200000")
}
public client_putinserver(id)
{
            set_task(5.0,"player_connect",id)
}                                                                
public player_connect(id)
{
    money[id] = 0
    set_task(0.1,"money_limit",id,"",0,"b")
}
public money_limit(id)
{
    if(is_user_alive(id))
    {
        if(cs_get_user_money(id)>get_pcvar_num(pcvar))      
        {
            money[id]== cs_get_user_money(id) - get_pcvar_num(pcvar)
            cs_set_user_money(id,get_pcvar_num(pcvar))
        }
    }
}
Анатолий, Так сойдет? Имею в веду не будет ли проблем.
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
Интересно, а можно ли сделать что бы когда 200000$ не было флуда +-300$?
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
тип ограничение:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define PLUGIN "MoneyLimit"
#define VERSION "1.0"
#define AUTHOR "edit TrojanRanson"

new pcvar
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    pcvar = register_cvar("MoneyLimit","200000")
}
public client_putinserver(id)
{
            set_task(5.0,"player_connect",id)
}                                                                 
public player_connect(id)
{
    set_task(0.1,"money_limit",id,"",0,"b")
}
public money_limit(id)
{
    if(is_user_alive(id))
    {
        if(cs_get_user_money(id) > get_pcvar_num(pcvar))   
            cs_set_user_money(id, get_pcvar_num(pcvar))
    }
}
 

NeTvoyKenji

Пользователь
Регистрация
27 Мар 2019
Сообщения
423
Симпатии
47
тип ограничение:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define PLUGIN "MoneyLimit"
#define VERSION "1.0"
#define AUTHOR "edit TrojanRanson"

new money[33]
new pcvar
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    pcvar = register_cvar("MoneyLimit","200000")
}
public client_putinserver(id)
{
            set_task(5.0,"player_connect",id)
}                                                               
public player_connect(id)
{
    money[id] = 0
    set_task(0.1,"money_limit",id,"",0,"b")
}
public money_limit(id)
{
    if(is_user_alive(id))
    {
        if(cs_get_user_money(id)>get_pcvar_num(pcvar))     
        {
            money[id]== cs_get_user_money(id) - get_pcvar_num(pcvar)
            cs_set_user_money(id,get_pcvar_num(pcvar))
        }
    }
}
Анатолий, Так сойдет? Имею в веду не будет ли проблем.
Что за колхоз? Да и зачем там таск?
У Толечки не учись.
 

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
685
Симпатии
195
Пол
Мужской
ВКонтакте
e1337ace
Что за колхоз? Да и зачем там таск?
У Толечки не учись.
Причём тут я выленок?
Я сюда скидывал только пример с
get_user_msgid("Money") без тасков. В этой теме я больше никак не участвовал.
Ну и хватит уже просто так в темах писать! Взял бы и помог человеку! Но тебе интересно лишь языком чесать в каждой теме! Ты затычка и провокатор!!!
 

NeTvoyKenji

Пользователь
Регистрация
27 Мар 2019
Сообщения
423
Симпатии
47
Анатолий, Достал, выучи ты уже другие слова. А то вечно от тебя только "провокатор", "затычка", и "чесать".
Лучше бы уроки делал, ума набрал б.
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
тип ограничение:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define PLUGIN "MoneyLimit"
#define VERSION "1.0"
#define AUTHOR "edit TrojanRanson"

new pcvar
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    pcvar = register_cvar("MoneyLimit","200000")
}
public client_putinserver(id)
{
            set_task(5.0,"player_connect",id)
}                                                                
public player_connect(id)
{
    set_task(0.1,"money_limit",id,"",0,"b")
}
public money_limit(id)
{
    if(is_user_alive(id))
    {
        if(cs_get_user_money(id) > get_pcvar_num(pcvar))  
            cs_set_user_money(id, get_pcvar_num(pcvar))
    }
}
Давайте вообще зинком будем пользоваться для таких целей, боже

Если уж совсем не можете ничего придума ь, создайте свой Натив выдачи денег и во всех плагинах используйте его, в нем и делайте проверку. Лучше будет чем это
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
Есть вариант просто добавить в дефолтный инклюд выдачу денег через emessage_begin и используйте мессагу денег
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
cpCTRL, а если я в каждом плагине буду использовать такое? Нормально будет? это я в пушки дописал JGHG 0.5.3 и выше 200 не подымает
PHP:
cs_set_user_money(i, min (cs_get_user_money(i) + moneyRewards[i], 200000))
 

trojanranson

Пользователь
Регистрация
2 Фев 2020
Сообщения
20
Симпатии
0
cpCTRL, а emessage_begin это тоже самое что и message_begin? Что бы почитать про него или это надо типа создавать в инклюиде новую функцию?
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
Сверху Снизу