Всем привет. Столкнулся с проблемой на моём jail сервере. Если предпоследний зек умирает с помощью кнопок, то у последнего зека не работает меню последнего зека. Если-же предпоследний зек умирает по любым другим причинам, то всё нормально. Что делать?
Код меню последнего зека из jbe_core.sma:
Код меню последнего зека из jbe_core.sma:
Код:
Show_LastPrisonerMenu(id)
{
if(g_iDuelStatus || IsNotSetBit(g_iBitUserAlive, id) || id != g_iLastPnId) return PLUGIN_HANDLED;
new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\wПоследнее желание^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[1] \wОткрыть клетки^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[2] \wДеньги: \y$%d^n", g_iAllCvars[LAST_PRISONER_MODEY]);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[3] \wГолос на раунд^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[4] \wУбить охрану^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[5] \wВыбрать Дуэль^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[6] \wОсвобождение^n^n");
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[0] \wВыход");
return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<9), szMenu, -1, "Show_LastPrisonerMenu");
}
public Handle_LastPrisonerMenu(id, iKey)
{
if(g_iDuelStatus || IsNotSetBit(g_iBitUserAlive, id) || id != g_iLastPnId) return PLUGIN_HANDLED;
switch(iKey)
{
case 0:
{
jbe_open_doors();
}
case 1:
{
ExecuteHamB(Ham_Killed, id, id, 0);
jbe_set_user_money(id, g_iUserMoney[id] + g_iAllCvars[LAST_PRISONER_MODEY], 1);
remove_task(TASK_LAST_DIE);
new szName[32];
get_user_name(id, szName, charsmax(szName));
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_MONEY", szName);
}
case 2:
{
ExecuteHamB(Ham_Killed, id, id, 0);
SetBit(g_iBitUserVoiceNextRound, id);
remove_task(TASK_LAST_DIE);
new szName[32];
get_user_name(id, szName, charsmax(szName));
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_GOLOS", szName);
}
case 3:
{
if(g_iPlayersNum[2] > 0)
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(IsNotSetBit(g_iBitUserAlive, i) || g_iUserTeam[i] != 2) continue;
fm_strip_user_weapons(i, 1);
set_user_godmode(i, 0);
}
fm_give_item(id, "weapon_ak47");
fm_set_user_bpammo(id, CSW_AK47, 200);
g_iLastPnId = 0;
remove_task(TASK_LAST_DIE);
new szName[32];
get_user_name(id, szName, charsmax(szName));
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_WEAPONS_YES", szName);
set_task(1.0, "jbe_lastdie_count_down", TASK_LAST_DIE, _, _, "a", g_iLastDieCountDown = 50 + 1);
}
else if(g_iPlayersNum[2] < 1) UTIL_SayText(id, "%L %L", LANG_PLAYER, "JBE_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_WEAPONS_NO");
}
case 4: return Show_ChoicePrizeMenu(id);
case 5:
{
if(g_iPlayersNum[2] > 0)
{
ExecuteHamB(Ham_Killed, id, id, 0);
jbe_add_user_free_next_round(id);
remove_task(TASK_LAST_DIE);
new szName[32];
get_user_name(id, szName, charsmax(szName));
UTIL_SayText(0, "%L %L", LANG_PLAYER, "JBE_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_FD_YES", szName);
}
else if(g_iPlayersNum[2] < 1) UTIL_SayText(id, "%L %L", LANG_PLAYER, "JBE_PREFIX", LANG_PLAYER, "JBE_CHAT_ALL_FD_NO_KT");
}
}
return PLUGIN_HANDLED;
}