Проверенный
Участник
Пользователь
d3m37r4
111111
- Сообщения
- 1,449
- Реакции
- 1,175
- Помог
- 10 раз(а)
Доброго времени суток. Возник вопрос, связанный с выдачей бонусов за победу одной команде, и отниманием тех-же бонусов у другой за поражение.
Имеется следующий код:
И имеется второй вариант:
Всё сводится к получению индексов игроков из двух команд, с последующим перебором в цикле и выдачей бонусов.
Какой из приведенных вариантов рациональней использовать, либо есть-ли другие способы, как реализовать задумку?
p.s. второй вариант еще не проверял на работоспособность.
Имеется следующий код:
Код:
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. второй вариант еще не проверял на работоспособность.