Меню выбора команды, возрождение, но..., Все внутри. Если сделаете, цены вам не будет. |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
Меню выбора команды, возрождение, но..., Все внутри. Если сделаете, цены вам не будет. |
explosiondj
|
4.7.2014, 23:58
Сообщение
|
|
|
Всем доброго времени суток. Пробывал сам, но знаний не хватило.
Есть плагин с нужным меню https://c-s.net.ua/forum/topic64411.html Есть плагин где игрока возрождает сразу https://c-s.net.ua/forum/topic64267.html (но меню не то) А есть моя какашка, где копи паст, но баги остались. Соль то в чем? А вот в чем: Игрока убили - смена команды - возрождение без прицела и ножа - смена команды (опять же, обратно) - возрождение вообще ни с чем, в народе говорят с х*ем остался Прошу у вас помощи в чем? Запретите возрождение: когда игрок мертв (уже играет на сервере, а не только зашел), когда игрок хочет живым перейти в другую команду (тупо слэй дэфолтный и сиди жди) Иными словами, хочу что бы игрок моментально возродился когда зашел на сервер (хз, фикс от "убили-зашел-снова живой" - это антиреконект на минуту, а то и две) и все, основное правило "никогда не возрождать игрока, только лишь когда зашел на сервер" Моя какашка: Код Часть кода с обходом лимита предоставил Freedo.m, за что ему спасибо */ #include <amxmodx> #include <cstrike> #include <fakemeta> #include <hamsandwich> #pragma semicolon 1 new g_MapName[32], bool:g_VIPMap = false; public plugin_init() { register_plugin("Change Team", "1.1", "neygomon"); register_clcmd("chooseteam", "ShowMenu"); register_menucmd(register_menuid("Team Menu"), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_5|MENU_KEY_6|MENU_KEY_0, "HandleMenu"); register_message(96, "MessageShowMenu"); register_message(114, "MessageVGUIMenu"); get_mapname(g_MapName, charsmax(g_MapName)); if(containi(g_MapName, "as_") != -1) g_VIPMap = true; } public ShowMenu(id) { new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\yВыбор команды:^n^n"), iKeys = MENU_KEY_0; new iNumTe = get_teamplayersnum(CS_TEAM_T), iNumCt = get_teamplayersnum(CS_TEAM_CT), CsTeams:iTeam = cs_get_user_team(id); if(iNumTe > iNumCt) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \dТеррористы^n"); else { iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \wТеррористы^n"); iKeys |= MENU_KEY_1; } if(iNumCt > iNumTe) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y2. \dКонтр-террористы^n^n"); else { iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y2. \wКонтр-террористы^n^n"); iKeys |= MENU_KEY_2; } if(g_VIPMap) { if(iTeam != CS_TEAM_CT) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y3. \dСтать VIP^n^n"); else { iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y3. \wСтать VIP^n^n"); iKeys |= MENU_KEY_3; } } if(CS_TEAM_UNASSIGNED < iTeam < CS_TEAM_SPECTATOR) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y5. \dСлучайный выбор^n"); else { iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y5. \wСлучайный выбор^n"); iKeys |= MENU_KEY_5; } if(iTeam == CS_TEAM_SPECTATOR) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y6. \dНаблюдение^n^n^n"); else { iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y6. \wНаблюдение^n^n^n"); iKeys |= MENU_KEY_6; } formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y0. \wВыход"); return show_menu(id, iKeys, szMenu, -1, "Team Menu"); } public HandleMenu(id, iKey) { switch(iKey) { case 0: { set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8)); engclient_cmd(id, "jointeam", "1"); set_task(2.0, "SpawnPlayer", id); } case 1: { set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8)); engclient_cmd(id, "jointeam", "2"); set_task(2.0, "SpawnPlayer", id); } case 2: { set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8)); engclient_cmd(id, "jointeam", "3"); set_task(2.0, "SpawnPlayer", id); } case 4: { set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8)); engclient_cmd(id, "jointeam", "5"); set_task(2.0, "SpawnPlayer", id); } case 5: { user_kill(id, 1); engclient_cmd(id, "jointeam", "6"); set_task(2.0, "SpawnPlayer", id); } } return PLUGIN_HANDLED; } public MessageShowMenu(iMsgId, iMsgDest, iReceiver) { static szArg4[20]; get_msg_arg_string(4, szArg4, charsmax(szArg4)); if(equal(szArg4, "#Team_Select", 12) || equal(szArg4, "#IG_Team_Select", 15) || equal(szArg4, "#IG_VIP_Team_Select", 19)) { set_pdata_int(iReceiver, 205, 0); return ShowMenu(iReceiver); } return PLUGIN_CONTINUE; } public MessageVGUIMenu(iMsgId, iMsgDest, iReceiver) { if(get_msg_arg_int(1) == 2) { set_pdata_int(iReceiver, 205, 0); return ShowMenu(iReceiver); } return PLUGIN_CONTINUE; } get_teamplayersnum(const CsTeams:iTeam) { static players[32], iNum; get_players(players, iNum, "che", iTeam == CS_TEAM_T ? "TERRORIST" : "CT"); return iNum; } public SpawnPlayer(id) { if(is_user_alive(id)) return; switch(get_pdata_int(id, 114)) { case 1, 2: ExecuteHamB(Ham_Spawn, id); } } Мне кажется надо сделать через is_user_connected и дело с концом, но сомневаюсь. Товарищ ставит на счетчик спавнов ( одно возрождение на один steam id ) так то же можно, но id_lan сможет когда угодно перезаходить туда сюда и сами понимаете. Только от вас помощи и ждем)
Отредактировал: explosiondj, - 5.7.2014, 0:12
|
|
|
|
Esecman
|
5.7.2014, 3:00
Сообщение
|
|
|
Код:
is_user_connected(id)не поможет, нужно отловить выбор команды игроком, потом спавнить
Отредактировал: Esecman, - 5.7.2014, 3:00
|
|
|
|
![]() ![]() |