maxmoney counter

Сообщения
187
Реакции
319
Помог
1 раз(а)
Хочу, чтобы при убийстве если у игрока денег = mp_maxmoney, ему визуально зачислялось +300$

Пока имею такие баги:
-иногда при фраге -300 красным дает, но деньги прибавляет
-если денег 16000 то +300 вначале и становится 16300, а потом -300 и т.д.

Еще не понимаю как получить значение квара mp_maxmoney, чтоб проверять кол-во денег у игрока в соответствии с кваром и не слать мессагу каждый раз при убийстве.

C++:
#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define VERSION "0.3w"

#define MONEY_COUNT 300

new g_Money_id;

public plugin_init()
{
    register_plugin("money_count", VERSION, "perf & dev-cs.ru");
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
    g_Money_id = get_user_msgid("Money")
}

public CBasePlayer_Killed(const iVictim, iAttacker, iGib)
{
    if(iVictim == iAttacker)
    return HC_CONTINUE;

    if(get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
    return HC_CONTINUE;

    new money;
    money = (get_member(iAttacker, m_iAccount) + MONEY_COUNT);

    message_begin(MSG_ONE_UNRELIABLE, g_Money_id, _, iAttacker);
    write_long(money);
    write_byte(1);
    message_end();
    return HC_CONTINUE;
}
 

Вложения

d3m37r4

111111
Сообщения
1,449
Реакции
1,175
Помог
10 раз(а)
perforator, квар вроде так можно получить:
C++:
new g_iCvarMaxMoney, g_iMaxMoney;

public plugin_init()
{
    g_iCvarMaxMoney = get_cvar_pointer("mp_maxmoney");
    g_iMaxMoney     = get_pcvar_num(g_iMaxMoney);
}
 
Сообщения
187
Реакции
319
Помог
1 раз(а)
C++:
#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define VERSION "0.4"

#define MONEY_COUNT 300

new g_Money_id, g_cvarMaxmoney, g_iMaxmoney;

public plugin_init()
{
    register_plugin("money_count", VERSION, "perf & dev-cs.ru");
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
    g_Money_id = get_user_msgid("Money");
    g_cvarMaxmoney = get_cvar_pointer("mp_maxmoney");
    g_iMaxmoney = get_pcvar_num(g_cvarMaxmoney);
}

public CBasePlayer_Killed(const iVictim, iAttacker, iGib)
{
    if(iVictim == iAttacker)
    return HC_CONTINUE;

    if(get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
    return HC_CONTINUE;

    new iMoney;
    iMoney = get_member(iAttacker, m_iAccount)

    if(iMoney >= g_iMaxmoney)
    {
        new money;
        money = g_iMaxmoney + MONEY_COUNT;

        message_begin(MSG_ONE_UNRELIABLE, g_Money_id, _, iAttacker);
        write_long(money);
        write_byte(1);
        message_end();
    }
    return HC_CONTINUE;
}
Но как видно на видео дает то -300, то +300 и 16300 в итоге.
А еще падает сервер)
 

Вложения

Сообщения
584
Реакции
1,006
Помог
18 раз(а)
Код:
#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define VERSION "0.4"

#define MONEY_COUNT 300

new g_Money_id, g_cvarMaxmoney, g_iMaxmoney;

public plugin_init()
{
    register_plugin("money_count", VERSION, "perf & dev-cs.ru");
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
    g_Money_id = get_user_msgid("Money");
    g_cvarMaxmoney = get_cvar_pointer("mp_maxmoney");
    g_iMaxmoney = get_pcvar_num(g_cvarMaxmoney);
}

public CBasePlayer_Killed(const iVictim, iAttacker, iGib)
{
    if(iVictim == iAttacker)
    return HC_CONTINUE;

    if(get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
    return HC_CONTINUE;

    new iMoney;
    iMoney = get_member(iAttacker, m_iAccount)

-   if(iMoney >= g_iMaxmoney)
+   if(iMoney < g_iMaxmoney)
    {
        new money;
-        money = g_iMaxmoney + MONEY_COUNT;
+        money = min(iMoney + MONEY_COUNT, g_iMaxmoney);

        message_begin(MSG_ONE_UNRELIABLE, g_Money_id, _, iAttacker);
        write_long(money);
        write_byte(1);
        message_end();
    }
    return HC_CONTINUE;
}
 
Сообщения
187
Реакции
319
Помог
1 раз(а)
Mistrick, с твоим вариантом как на скрине, работает, но вот так "багает" ( mp_maxmoney 1337 )
20180108181648_1.jpg

Накостылил такой вариант, работает именно так, как я хочу:
C++:
#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define VERSION "0.6"

#define MONEY_COUNT 300

new g_Money_id, g_cvarMaxmoney, g_iMaxmoney;

public plugin_init()
{
    register_plugin("money_count", VERSION, "perf & dev-cs.ru");
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
    g_Money_id = get_user_msgid("Money");
    g_cvarMaxmoney = get_cvar_pointer("mp_maxmoney");
    g_iMaxmoney = get_pcvar_num(g_cvarMaxmoney);
}

public CBasePlayer_Killed(const iVictim, iAttacker, iGib)
{
    if(iVictim == iAttacker)
    return HC_CONTINUE;

    if(get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
    return HC_CONTINUE;

    new iMoney;
    iMoney = get_member(iAttacker, m_iAccount)

    if(iMoney >= g_iMaxmoney)
    {
        message_begin(MSG_ONE_UNRELIABLE, g_Money_id, _, iAttacker);
        write_long(g_iMaxmoney - MONEY_COUNT);
        write_byte(0);
        message_end();

        message_begin(MSG_ONE_UNRELIABLE, g_Money_id, _, iAttacker);
        write_long(g_iMaxmoney);
        write_byte(1);
        message_end();
    }
    return HC_CONTINUE;
}
 

Download all Attachments

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу