последовательность проверок

Статус
В этой теме нельзя размещать новые ответы.

AUF

Сообщения
91
Реакции
8
Как бы мне грамотно сделать проверки что бы они работали с кваром вместе и последовательность этих проверок
мне нужно что бы плагин понимал ffa режим а точнее от квара зависило это) как грамотно юзать stock bool:IsValidKill ?
Где-то читал что killer == victim && (get_user_team(killer) == get_user_team(victim) не всегда работает или как то нитак)
Про (rg_player_relationship(victim, killer) == GR_TEAMMATE) знаю) но чет в последних билдах нету плагины не компилит.
мне важна последовательность проверок и что бы оно работало с кваром подскажите кто чем может
C++:
if (!(0 < killer <= MaxClients) || !IsValidKill(killer, victim))
    return

stock bool:IsValidKill(killer, victim)
{
    // Проверка паузу статы
    if (is_stats_paused())
        return false

    // Проверка на подключение
    if (!is_user_connected(killer) || !is_user_connected(victim))
        return false

    // Проверка на ffa
    if (!CVAR_FFA && killer == victim && (get_user_team(killer) == get_user_team(victim)))
        return false

    return true
}
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
AUF, а зачем тут &&?
Код:
if (!CVAR_FFA && killer == victim && (get_user_team(killer) == get_user_team(victim)))
        return false
, чтобы сработала проверка и вернуло false, нужно чтобы все условия совпали.
И можно поподробнее про rg_player_relationship(victim, killer) == GR_TEAMMATE ?
 
Последнее редактирование:

AUF

Сообщения
91
Реакции
8
Code_0xABC, я разьве просил вопросы задавать??
вот взял строчку из форка aes)

C++:
    if(!get_pcvar_num(cvar[CVAR_XP_FFA]) && (get_member(killer, m_iTeam) == get_member(victim, m_iTeam)))
        return;
зачем там это? && и никто же не напишет этим ребятам... serfreeman1337/sonyx
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
AUF, ты читай ниже что написано, я конкретно черным по белому написал, что бы сработал код в теле проверки, нужно что бы все условия проверки были верными, что тебе не ясно то? Что бы не задавать такие непонятные вопросы, есть логи или консоль, выведи все значения туда
 
Последнее редактирование:

AUF

Сообщения
91
Реакции
8
Code_0xABC, возможно строчка должна быть такой
C++:
if (!CVAR_FFA && killer == victim || (get_user_team(killer) == get_user_team(victim)))
        return false
но я не уверен) поэтому и спросил тех кто шарит.

из reapi_gamedll.inc
Код:
/*
* Checks a player relationship with another reference
*
* @param player     Player index
* @param target     Target index
*
* @return           Match player relationship, see GR_* constants in cssdk_const.inc
*/
native rg_player_relationship(const player, const target);
на github это есть но если качать ласт билд то там нету(
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
AUF, проверь каждое условие, например так и потом поймешь
server_print("%i, %i, %i", !CVAR_FFA, killer == victim, get_user_team(killer) == get_user_team(victim));
21 Май 2024
AUF, если можно дай ссылку на гитхабе
 

AUF

Сообщения
91
Реакции
8
Code_0xABC, да загугли просто rg_player_relationship у меня их всего 3 ссылки показывает
 

AUF

Сообщения
91
Реакции
8
Разобрался. Можно закрывать.

Если кому надо вдруг.
C++:
new const FFA_MODE = 0     /* Поддержка CSDM Free For All. (0 - Off, 1 - ON.) */

В DeathMsg...
if (!(0 < killer <= MaxClients) || !IsValidKill(killer, victim))
    return

stock bool:is_tk(killer, victim)
{
    if (killer == victim)
        return true

    if (get_user_team(killer) == get_user_team(victim))
        return true

    return false
}

stock bool:IsValidKill(killer, victim)
{
    if (!is_user_connected(killer) || !is_user_connected(victim))
        return false

    if (!FFA_MODE && is_tk(killer, victim))
        return false

    return true
}
 
Статус
В этой теме нельзя размещать новые ответы.

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

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