RU
RU
UA
EN
PL
ГЛАВНАЯ
УСЛУГИ
ПЛАГИНЫ
КАРТЫ
REBUY
SCANMON
CASSA
SALE
ФОРУМ
МОНИТОР
HELP
КОНТАКТ
Главная
/
Plugins
/
ChangeTeamPlayer
ChangeTeamPlayer
Теги:
Скачать плагины csgo
Админские
Позволяет переместить игрока и команды, сделать автобаланс команд.
Компилятор: 1.9.0.6281
1104
Команды:
В админ меню > управление игроками
.sma / .sp
#include
#include
#undef REQUIRE_PLUGIN #include
#pragma semicolon 1 #pragma newdecls required public Plugin myinfo = {name = "ChangeTeamPlayer | Смена команды игроку", author = "Drumanid", version = "1.0", url = "http://vk.com/drumanid"} TopMenu g_hAdminMenu = null; int g_iTarget[MAXPLAYERS +1], g_hRE[MAXPLAYERS +1], g_hPD[MAXPLAYERS +1], g_iQueue[MAXPLAYERS +1], g_iTeam[MAXPLAYERS +1]; char g_sQueue[MAXPLAYERS +1][32], g_sTeam[MAXPLAYERS +1][32]; bool g_bSta, g_bAb; public void OnPluginStart() { HookEvent("player_death", EVENTS); HookEvent("round_end", EVENTS); for(int i = 1; i <= MaxClients; i++) { if(IsClientInGame(i)) DeleteInfo(i); } if(LibraryExists("adminmenu")) { TopMenu hTopMenu = GetAdminTopMenu(); if(hTopMenu != null) OnAdminMenuReady(hTopMenu); } } public void OnLibraryRemoved(const char[] name) { if(StrEqual(name, "adminmenu")) g_hAdminMenu = null; } public void OnAdminMenuReady(Handle aTopMenu) { TopMenu hTopMenu = TopMenu.FromHandle(aTopMenu); if(hTopMenu == g_hAdminMenu) return; g_hAdminMenu = hTopMenu; TopMenuObject hCategory = g_hAdminMenu.FindCategory("PlayerCommands"); if(hCategory != INVALID_TOPMENUOBJECT) { g_hAdminMenu.AddItem("ChangeTeamPlayerItem", hAdminMenuChangeTeam, hCategory, "ChangeTeamPlayer", ADMFLAG_KICK); g_hAdminMenu.AddItem("ChangeTeamPlayerAllItem", hAdminMenuChangeTeamAll, hCategory, "ChangeTeamPlayerAll", ADMFLAG_KICK); g_hAdminMenu.AddItem("AutoBalanceItem", hAdminMenuAutoBalance, hCategory, "AutoBalance", ADMFLAG_KICK); } } public void hAdminMenuChangeTeam(TopMenu hMenu, TopMenuAction action, TopMenuObject object_id, int iClient, char[] sBuffer, int maxlength) { switch(action) { case TopMenuAction_DisplayOption: FormatEx(sBuffer, maxlength, "Перевести игрока в другую команду"); case TopMenuAction_SelectOption: PlayerListMenu(iClient); } } public void hAdminMenuChangeTeamAll(TopMenu hMenu, TopMenuAction action, TopMenuObject object_id, int iClient, char[] sBuffer, int maxlength) { switch(action) { case TopMenuAction_DisplayOption: FormatEx(sBuffer, maxlength, "Поменять команды местами"); case TopMenuAction_SelectOption: { g_bSta = true; PrintToChatAll(" \x0BВ конце раунда команды поменяются местами!"); } } } public void hAdminMenuAutoBalance(TopMenu hMenu, TopMenuAction action, TopMenuObject object_id, int iClient, char[] sBuffer, int maxlength) { switch(action) { case TopMenuAction_DisplayOption: FormatEx(sBuffer, maxlength, "Произвести балансировку команд"); case TopMenuAction_SelectOption: { g_bAb = true; PrintToChatAll(" \x0BВ конце раунда будет произведена балансировка игроков!"); } } } public Action EVENTS(Event event, const char[] name, bool dbc) { if(name[0] == 'p') { int iClient = GetClientOfUserId(event.GetInt("userid")); if(g_hPD[iClient] > -1) CTP(iClient); } else { int i; if(g_bSta) { for(i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && !IsClientSourceTV(i)) { switch(GetClientTeam(i)) { case 2: CS_SwitchTeam(i, 3); case 3: CS_SwitchTeam(i, 2); } } } PrintToChatAll(" \x0BАдмин поменял команды местами!"); g_bSta = false; } if(g_bAb) { int tt, ct; for(i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && !IsClientSourceTV(i)) { switch(GetClientTeam(i)) { case 2: tt++; case 3: ct++; } } } if((tt = (tt - ct) / 2)) { if(0 < tt) { for(i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && GetClientTeam(i) == 2) { CS_SwitchTeam(i, 3); if(tt == 1) return; tt--; } } } else { for(i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && GetClientTeam(i) == 3) { CS_SwitchTeam(i, 2); if(tt == -1) return; tt++; } } } } PrintToChatAll(" \x0BКоманды были сбалансированы!"); g_bAb = false; } for(i = 1; i <= MaxClients; i++) { if(g_hRE[i] > -1) CTP(i); } } } void PlayerListMenu(int iClient) { Menu hMenu = new Menu(PlayerListMenuOptions); hMenu.ExitButton = true; hMenu.SetTitle("Выберите игрока: \n "); char id[16], name[32]; for(int i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && !IsClientSourceTV(i)) { IntToString(GetClientUserId(i), id, sizeof(id)); GetClientName(i, name, sizeof(name)); hMenu.AddItem(id, name); } } hMenu.Display(iClient, MENU_TIME_FOREVER); } public int PlayerListMenuOptions(Menu hMenu, MenuAction action, int iClient, int option) { switch(action) { case MenuAction_End: delete hMenu; case MenuAction_Select: { char id[16]; hMenu.GetItem(option, id, sizeof(id)); g_iTarget[iClient] = GetClientOfUserId(StringToInt(id)); if(g_iTarget[iClient] == g_hRE[g_iTarget[iClient]] || g_iTarget[iClient] == g_hPD[g_iTarget[iClient]]) { CheckTargetMenu(iClient); } else ChangeTargetMenu(iClient); } } } void ChangeTargetMenu(int iClient) { if(g_iTarget[iClient]) { Menu hMenu = new Menu(ChangeTargetMenuOptions); hMenu.ExitButton = true; hMenu.SetTitle("Выбранный игрок: %N\nКак переводить игрока?\n ", g_iTarget[iClient]); hMenu.AddItem("мгновенно", "Мгновенно"); hMenu.AddItem("в конце раунда", "В конце раунда"); hMenu.AddItem("после смерти", "После смерти"); hMenu.Display(iClient, MENU_TIME_FOREVER); } else PrintToChat(iClient, " \x07Игрока больше нет на сервере..."); } public int ChangeTargetMenuOptions(Menu hMenu, MenuAction action, int iClient, int option) { switch(action) { case MenuAction_End: delete hMenu; case MenuAction_Select: { if(g_iTarget[iClient]) { switch(option) { case 0: g_iQueue[g_iTarget[iClient]] = 1; case 1: { g_hRE[g_iTarget[iClient]] = g_iTarget[iClient]; g_iQueue[g_iTarget[iClient]] = 2; } case 2: { g_hPD[g_iTarget[iClient]] = g_iTarget[iClient]; g_iQueue[g_iTarget[iClient]] = 3; } } hMenu.GetItem(option, g_sQueue[g_iTarget[iClient]], sizeof(g_sQueue[])); switch(GetClientTeam(g_iTarget[iClient])) { case 1: g_sTeam[g_iTarget[iClient]] = "спекторы"; case 2: g_sTeam[g_iTarget[iClient]] = "террористы"; case 3: g_sTeam[g_iTarget[iClient]] = "контр-террористы"; } SelectionChangeMenu(iClient); } else PrintToChat(iClient, " \x07Игрока больше нет на сервере..."); } } } void SelectionChangeMenu(int iClient) { if(g_iTarget[iClient]) { Menu hMenu = new Menu(SelectionChangeMenuOptions); hMenu.ExitButton = true; hMenu.SetTitle("Выбранный игрок: %N\nРежим очереди: %s\nКоманда: %s\n ", g_iTarget[iClient], g_sQueue[g_iTarget[iClient]], g_sTeam[g_iTarget[iClient]]); hMenu.AddItem("спекторы", "За спекторы"); hMenu.AddItem("террористы", "За террористов"); hMenu.AddItem("контр-террористы", "За контр-террористов"); hMenu.Display(iClient, MENU_TIME_FOREVER); } else PrintToChat(iClient, " \x07Игрока больше нет на сервере..."); } public int SelectionChangeMenuOptions(Menu hMenu, MenuAction action, int iClient, int option) { switch(action) { case MenuAction_End: delete hMenu; case MenuAction_Select: { if(g_iTarget[iClient]) { switch(option) { case 0: g_iTeam[g_iTarget[iClient]] = 1; case 1: g_iTeam[g_iTarget[iClient]] = 2; case 2: g_iTeam[g_iTarget[iClient]] = 3; } hMenu.GetItem(option, g_sTeam[g_iTarget[iClient]], sizeof(g_sTeam[])); PrintToChat(iClient, " \x0BВы переместили игрока \x04%N", g_iTarget[iClient]); PrintToChat(iClient, " \x0BВ команду - \x07%s", g_sTeam[g_iTarget[iClient]]); PrintToChat(iClient, " \x0BРежим очереди - \x07%s", g_sQueue[g_iTarget[iClient]]); if(g_iQueue[g_iTarget[iClient]] == 1) CTP(g_iTarget[iClient]); } else PrintToChat(iClient, " \x07Игрока больше нет на сервере..."); } } } void CheckTargetMenu(int iClient) { if(g_iTarget[iClient]) { Menu hMenu = new Menu(CheckTargetMenuOptions); hMenu.ExitButton = true; hMenu.SetTitle("Выбранный игрок: %N\nРежим очереди: %s\nПеревод в команду: %s\n \nИгрок в процессе... Хотите изменить данные?\n ", g_iTarget[iClient], g_sQueue[g_iTarget[iClient]], g_sTeam[g_iTarget[iClient]]); hMenu.AddItem("", "Да"); hMenu.AddItem("", "Нет"); hMenu.Display(iClient, MENU_TIME_FOREVER); } else PrintToChat(iClient, " \x07Игрока больше нет на сервере..."); } public int CheckTargetMenuOptions(Menu hMenu, MenuAction action, int iClient, int option) { switch(action) { case MenuAction_End: delete hMenu; case MenuAction_Select: { switch(option) { case 0: ChangeTargetMenu(iClient); case 1: PrintToChat(iClient, " \x07Вы отменили ввод новых данных!"); } } } } void CTP(int iClient) { if(IsClientInGame(iClient)) { if(g_iQueue[iClient] == 1) { if(g_iTeam[iClient] == 1) { ChangeClientTeam(iClient, g_iTeam[iClient]); return; } int iWeapon = GetPlayerWeaponSlot(iClient, 4); if(iWeapon != -1) CS_DropWeapon(iClient, iWeapon, true, false); CS_SwitchTeam(iClient, g_iTeam[iClient]); if(IsPlayerAlive(iClient)) CS_RespawnPlayer(iClient); } else ChangeClientTeam(iClient, g_iTeam[iClient]); PrintToChat(iClient, " \x0BАдмин переместил вас в \x07%s \x0B%s", g_sTeam[iClient], g_sQueue[iClient]); DeleteInfo(iClient); } } void DeleteInfo(int iClient) { g_sQueue[iClient][0] = 0; g_sTeam[iClient][0] = 0; g_iTeam[iClient] = -1; g_iQueue[iClient] = -1; g_hPD[iClient] = -1; g_hRE[iClient] = -1; g_iTarget[iClient] = -1; } public void OnClientPostAdminCheck(int iClient) { DeleteInfo(iClient); }
Отправить
Загрузил
Ju4ka1371
2019-01-24 20:37:27
1
100
Установить на сервер
Скачать
Нет оплаченых серверов
Купить сервер CS 1.6
Купить сервер CS:GO
Купить сервер CSS v34
Подключить свой VDS к панели
здесь архив вообще не нужно было добавлять
root
2019-01-24 21:27:00
Данная иконка означает, что плагин был проверен администрацией хостинга на тестовом сервере, и проблем с ним не было выявлено. Рекомендуем ставить исключительно проверенные плагины.
Плагин загружен на сервер, но проверка еще не была проведена.
CSHOST.COM.UA 2012-2026 Хостинг игровых серверов