Выдача/снятие бонусов у разных команд

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
Доброго времени суток. Возник вопрос, связанный с выдачей бонусов за победу одной команде, и отниманием тех-же бонусов у другой за поражение.
Имеется следующий код:
Код:
public EventHook_RoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
new iTtPlNum, iCtPlNum;
new iTtPlArr[32], iCtPlArr[32];

get_players(iTtPlArr, iTtPlNum, "ceh", "TERRORIST");
get_players(iCtPlArr, iCtPlNum, "ceh", "CT");

switch(status)
{
case WINSTATUS_CTS:
{
for(new iCtId; iCtId < iCtPlNum; iCtId++)
{
if(!user_has_maxlevel(iCtPlArr[iCtId]))
{
add_user_points(iCtPlArr[iCtId], POINTS_FOR_WIN, ADD);
client_print_color(iCtPlArr[iCtId], 0, "[Server] Вы получили +^4%d^1 очков за победу в этом раунде.", POINTS_FOR_WIN);
}
}

for(new iTtId; iTtId < iTtPlNum; iTtId++)
{
if(!user_has_maxlevel(iTtPlArr[iTtId]))
{
add_user_points(iTtPlArr[iTtId], POINTS_FOR_LOSE, REMOVE);
client_print_color(iTtPlArr[iTtId], 0, "[Server] Вы потеряли -^4%d^1 очков за поражение в этом раунде.", POINTS_FOR_LOSE);
}
}

}
case WINSTATUS_TERRORISTS:
{
for(new iTtId; iTtId < iTtPlNum; iTtId++)
{
if(!user_has_maxlevel(iTtPlArr[iTtId]))
{
add_user_points(iTtPlArr[iTtId], POINTS_FOR_WIN, ADD);
client_print_color(iTtPlArr[iTtId], 0, "[Server] Вы получили +^4%d^1 очков за победу в этом раунде.", POINTS_FOR_WIN);
}
}

for(new iCtId; iCtId < iCtPlNum; iCtId++)
{
if(!user_has_maxlevel(iCtPlArr[iCtId]))
{
add_user_points(iCtPlArr[iCtId], POINTS_FOR_LOSE, REMOVE);
client_print_color(iCtPlArr[iCtId], 0, "[Server] Вы потеряли -^4%d^1 очков за поражение в этом раунде.", POINTS_FOR_LOSE);
}
}
}
}

}

И имеется второй вариант:
Код:
public EventHook_RoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
new iPlArr[32], plnum;

get_players(iPlArr, plnum, "ch");

switch(status)
{
case WINSTATUS_CTS:
{
for(new i; i < plnum; i++)
{
if(user_has_maxlevel(iPlArr))
continue;

if(get_member(iPlArr, m_iTeam) == TEAM_CT)
{
add_user_points(iPlArr, POINTS_FOR_WIN, ADD);
client_print_color(iPlArr, 0, "[Server] Вы получили +^4%d^1 очков за победу в этом раунде.", POINTS_FOR_WIN);
}
if(get_member(iPlArr, m_iTeam) == TEAM_TERRORIST)
{
add_user_points(iPlArr, POINTS_FOR_LOSE, REMOVE);
client_print_color(iPlArr, 0, "[Server] Вы потеряли -^4%d^1 очков за поражение в этом раунде.", POINTS_FOR_LOSE);
}
}
}
case WINSTATUS_TERRORISTS:
{
for(new i; i < plnum; i++)
{
if(user_has_maxlevel(iPlArr))
continue;

if(get_member(iPlArr, m_iTeam) == TEAM_TERRORIST)
{
add_user_points(iPlArr, POINTS_FOR_WIN, ADD);
client_print_color(iPlArr, 0, "[Server] Вы получили +^4%d^1 очков за победу в этом раунде.", POINTS_FOR_WIN);
}
if(get_member(iPlArr, m_iTeam) == TEAM_CT)
{
add_user_points(iPlArr, POINTS_FOR_LOSE, REMOVE);
client_print_color(iPlArr, 0, "[Server] Вы потеряли -^4%d^1 очков за поражение в этом раунде.", POINTS_FOR_LOSE);
}
}
}
}
}


Всё сводится к получению индексов игроков из двух команд, с последующим перебором в цикле и выдачей бонусов.
Какой из приведенных вариантов рациональней использовать, либо есть-ли другие способы, как реализовать задумку?

p.s. второй вариант еще не проверял на работоспособность.
 

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

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