Помогите отследить любое изменение флагов игрока

Сообщения
4
Реакции
0
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Хочу написать функцию которая будет выполняться при условии что на сервере произошло любое изменение флагов игрока/игроков. Такое возможно?
 
Сообщения
74
Реакции
61
Помог
1 раз(а)
Такого форварда нет в amxmodx. Вот несколько вариантов решения задачи:
1. При каждом putInServer ты сохраняешь флаги игрока и в нужный тебе момент сравниваешь флаги, что были при putInServer
2.Если кровь из носа нужен форвард, можно сделать таймер которыйбудет проверять флаги каждую секунду. Старые и Новые флаги. Сохраняешь флаги в "Старые флаги", потом при следующей итерации проверяешьтекущие флаги с флагами что были итерацию ранее, если есть разница - вызываешь форвард и можно дополнительно написать какие флаги добавили/убавились
3. Если это специфичный плагин, связанный с флагами, лучше добавь форвард в плагин, который динамически каждый раз меняет флаги и лови этот форвард в другом нужном тебе плагине. Обычно флаги меняются в основном при PutInServer/Connect и дальше ничего не трогают.
4. Самый лучший вариант, это модификация самого Amxmodx под свои нужды
5. Написать свою кастомную систему флагов на уровне AMX-plugins
 
Сообщения
4
Реакции
0
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
g3cKpunTop, о, это пока сложно для меня, спасибо за такой ответ :)
 
Сообщения
256
Реакции
127
Помог
12 раз(а)
TVERDbINYA, если используешь gamecms API то там есть форвард OnAPIAdminConnected
 
Сообщения
4
Реакции
0
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
murlemur, спасибо, ознакомлюсь.
15 Сен 2024
CSBishop, да ничего такого, просто думал это будет проще

Можно закрывать!
 
Сообщения
75
Реакции
36
Помог
4 раз(а)
g3cKpunTop, есть ещё более мощный костыль :crazy: (не воспринимайте в серьёз...)

Код:
stock set_user_flags_fwd(const pPlayer, const iFlags = -1, const iGroup = 0) {

    static iFwdId = -1;
   
    if(iFwdId == -1)
    {
        iFwdId = CreateMultiForward("client_flagschanged", ET_STOP, FP_CELL, FP_CELL, FP_CELL);
    }
   
    new iRetValue;
   
    ExecuteForward(iFwdId, iRetValue, pPlayer, iFlags, iGroup);
   
    if(iRetValue == PLUGIN_CONTINUE)
    {
        set_user_flags(pPlayer, iFlags, iGroup);
    }
}
 

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

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