Замена «get_member» на «rg_player_relationship»

Сообщения
296
Реакции
15
Правильно ли я изменил код?

Код:
if(g_bAlive[iSender] && get_member(iReceiver, m_iTeam) == get_member(iSender, m_iTeam))
->

Код:
if(g_bAlive[iSender] && rg_player_relationship(iReceiver, iSender) == GR_TEAMMATE)
Я сделал то же самое в своем личном плагине повреждений:

Код:
get_member(pAttacker, m_iTeam) == get_member(pVictim, m_iTeam)
->

Код:
rg_player_relationship(pAttacker, pVictim) == GR_TEAMMATE
И еще один вопрос. Имеет ли значение порядок в скобках «rg_player_relationship»?
8 Май 2025
Что, если вместо «rg_player_relationship(pAttacker, pVictim) == GR_TEAMMATE» я укажу «rg_player_relationship(pVictim, pAttacker) == GR_TEAMMATE»?
 
Последнее редактирование:

Albertio

Уверенный пользователь ДИЛДО
Сообщения
344
Реакции
426
Помог
7 раз(а)
1) rg_player_relationship проверяет связь между одним энтити и другим. Будто это тиммейт, враг и прочее.
2) Именно в данном случае порядок не имеет разницы(если оба игроки), так как "От перестановки мест слагаемых сумма не меняется". Если один из энтити не игрок, то его нужно использовать вторым аргументом.

Ты сделал все правильно!
 
Последнее редактирование:
Сообщения
1,711
Реакции
1,519
Помог
26 раз(а)
Сообщения
296
Реакции
15
В плагине «bullet damage» проблем нет, но изменение кода в плагине «voice_control» вызвало множество ошибок

Код:
L 05/08/2025 - 12:05:49: [ReAPI] rg_player_relationship: player 5 is not connected
L 05/08/2025 - 12:05:49: [AMXX] Run time error 10 (plugin "voice_control.amxx") (native "rg_player_relationship") - debug not enabled!
L 05/08/2025 - 12:05:49: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 05/08/2025 - 12:05:49: [ReAPI] rg_player_relationship: player 5 is not connected
L 05/08/2025 - 12:05:49: [AMXX] Run time error 10 (plugin "voice_control.amxx") (native "rg_player_relationship") - debug not enabled!
L 05/08/2025 - 12:05:49: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 05/08/2025 - 12:05:49: [ReAPI] rg_player_relationship: player 5 is not connected
L 05/08/2025 - 12:05:49: [AMXX] Run time error 10 (plugin "voice_control.amxx") (native "rg_player_relationship") - debug not enabled!
L 05/08/2025 - 12:05:49: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 05/08/2025 - 12:05:50: [ReAPI] rg_player_relationship: player 5 is not connected
L 05/08/2025 - 12:05:50: [AMXX] Run time error 10 (plugin "voice_control.amxx") (native "rg_player_relationship") - debug not enabled!
L 05/08/2025 - 12:05:50: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 05/08/2025 - 12:05:50: [ReAPI] rg_player_relationship: player 5 is not connected
L 05/08/2025 - 12:05:50: [AMXX] Run time error 10 (plugin "voice_control.amxx") (native "rg_player_relationship") - debug not enabled!
L 05/08/2025 - 12:05:50: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 05/08/2025 - 12:05:50: [ReAPI] rg_player_relationship: player 5 is not connected
 
Сообщения
1,711
Реакции
1,519
Помог
26 раз(а)
pmadisson75, проверь подключенность игрока.
 

Albertio

Уверенный пользователь ДИЛДО
Сообщения
344
Реакции
426
Помог
7 раз(а)
Если энтити iSender не игрок
Код:
if(is_user_connected(iReceiver) && !is_nullent(iSender)) {
    if(rg_player_relationship(iReceiver, iSender) == GR_TEAMMATE) {
            //code
    }
}
Если энтити iSender игрок
Код:
if(is_user_connected(iReceiver) && is_user_connected(iSender)) {
    if(rg_player_relationship(iReceiver, iSender) == GR_TEAMMATE) {
            //code
    }
}
 
Сообщения
296
Реакции
15
Код:
                if(g_bAlive[iSender] && (is_user_connected(iSender) && is_user_connected(iReceiver) && rg_player_relationship(iSender, iReceiver) == GR_TEAMMATE))
                {
                    SetHookChainReturn(ATYPE_BOOL, true)
                    return HC_SUPERCEDE
                }
Its ok?
 
Последнее редактирование:
Сообщения
556
Реакции
99
Помог
6 раз(а)
pmadisson75, предполагаю, что в g_bAlive[iSender] уже имеется проверка - следовательно, is_user_connected(iSender) будет лишним
 
Сообщения
296
Реакции
15
Albertio fl0wer
Есть ли разница в производительности между этими двумя кодами?
Например, в плагине «damager» или «bullet damage»

Повлияет ли замена «get_member» на «relationship» на производительность кода?
 
Сообщения
1,711
Реакции
1,519
Помог
26 раз(а)
pmadisson75, rg_player_relationship производительнее, так как только 1 натив вызывается))
 
Сообщения
556
Реакции
99
Помог
6 раз(а)
Code_0xABC, ну тогда к чему тут булевая , если она отрабатывает «абы как», когда в is_user_alive уже имеется проверка на коннект)
 
Сообщения
296
Реакции
15
Какой вариант является лучшим решением?

1.
Код:
                if(is_user_connected(iReceiver) && is_user_connected(iSender)) {
                    if(g_bAlive[iSender] && rg_player_relationship(iReceiver, iSender) == GR_TEAMMATE) {
                        SetHookChainReturn(ATYPE_BOOL, true)
                        return HC_SUPERCEDE
                    }
                }
2.
Код:
                if(g_bAlive[iSender] && (is_user_connected(iSender) && is_user_connected(iReceiver) && rg_player_relationship(iSender, iReceiver) == GR_TEAMMATE))
                {
                    SetHookChainReturn(ATYPE_BOOL, true)
                    return HC_SUPERCEDE
                }
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
pmadisson75, они одинаковы, разница в том, что во втором варианте проверка на g_bAlive[iSender] выполняется позже
 

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

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