- Код: Выделить всё
public cmd_box(id, iType, On)
{
if(g_iGameMode > 0 || IsNotSetBit(g_Simon, id)) return PLUGIN_HANDLED
new iPlayers[32], iNum, player
get_players(iPlayers, iNum)
switch(On)
{
case 1:
{
if(g_TeamAlive[CS_TEAM_T] > 1)
{
switch(iType)
{
case 0: for(new i; i < iNum+1; i++)
{
player = iPlayers[i]
if(IsSetBit(g_PlayerAlive, player) && cs_get_user_team(player) == CS_TEAM_T) fm_set_user_health(player, 100)
}
case 1:
{
for(new i; i < iNum+1; i++)
{
player = iPlayers[i]
if(IsSetBit(g_PlayerAlive, player) && cs_get_user_team(player) == CS_TEAM_T && (IsNotSetBit(g_PlayerWanted, player) || IsNotSetBit(g_PlayerRevolt, player)))
{
SetBit(g_PlayerBoxer, i)
fm_set_user_health(i, 100)
for(new i; i < sizeof use_button; i++) EnableHamForward(use_button[i])
}
}
}
}
player_hudmessage(0, 1, 3.0, _, "Начался %s бокс!", iType ? "честный" : "нечестный")
ChatColor(0, "!g[JBE] !yНачался %s бокс!", iType ? "честный" : "нечестный")
set_cvar_num("mp_tkpunish", 0)
set_cvar_num("mp_friendlyfire", 1)
g_BoxStarted = 1
}
else ChatColor(id, "!g[JBE] !yНевозможно начать бокс, так как слишком мало зеков.")
}
case 0:
{
for(new i; i < iNum+1; i++)
{
player = iPlayers[i]
if(IsSetBit(g_PlayerBoxer, player)) ClearBit(g_PlayerBoxer, player)
}
set_cvar_num("mp_tkpunish", 1)
set_cvar_num("mp_friendlyfire", 0)
g_BoxStarted = 0
for(new i; i < sizeof use_button; i++) DisableHamForward(use_button[i])
player_hudmessage(0, 1, 3.0, _, "Бокс был окончен!")
ChatColor(0, "!g[JBE] !yБокс был окончен")
}
}
return PLUGIN_HANDLED
}
С помощью функции:
- Код: Выделить всё
public cmd_targetbit(id)
{
new iEnt, iBody
get_user_aiming(id, iEnt, iBody)
client_print(id, print_chat, "id %d, bit %d", iEnt, IsSetBit(g_PlayerBoxer, iEnt))
}
Пробежался по всем игрокам и понял, что не всем выдаётся значение больше 1, а цикл проходит по всем игрокам, и условиям они соответствуют. В чем может быть загвоздка?