БАН
| |
Naykon
|
Дата: Вторник, 03.04.2012, 10:05:09 | Сообщение # 1 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code BanClient(x, 1, BANFLAG_AUTHID, "причина", "кик-сообщение");
Можно ли как нибудь сделать причину, время, сообщение динамическими чтоб по 20 раз не переписывать 1 строку. Т.е взять ее из меню.. например: Code BanClient(x, menu1, BANFLAG_AUTHID, menu3, menu5);
|
|
| |
_wS_
|
Дата: Вторник, 03.04.2012, 10:14:18 | Сообщение # 2 |
|
Не понимаю вопрос.. Создай меню с нужными параметрами, игрок выберет - запоминай, и потом используй их в BanClient.
|
|
| |
Naykon
|
Дата: Вторник, 03.04.2012, 10:25:10 | Сообщение # 3 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Все правильно. Дате наглядный пример или можно ли как сюда Code BanClient(x, menu1, BANFLAG_AUTHID, menu3, menu5);
На место меню1,3,5 добавить выбраные пункты в меню (пункты могут быть из разных меню)Добавлено (03.04.2012, 10:25:10) --------------------------------------------- Вот как "Запомнить" и применить потом .. =)
|
|
| |
_wS_
|
Дата: Вторник, 03.04.2012, 11:41:09 | Сообщение # 4 |
|
Хм, проходили ж уже глобальные переменные.
Code new String:reason[MAXPLAYERS+1][75], String:ban_time[MAXPLAYERS+1][5];
// получаешь причину GetMenuItem(menu1, option, reason[client], 75);
// время GetMenuItem(menu2, option, ban_time[client], 5);
// ну и потом вставляешь BanClient(ban_client, StringToInt(ban_time[client]), BANFLAG_AUTHID, reason[client]);
|
|
| |
Naykon
|
Дата: Вторник, 03.04.2012, 23:14:40 | Сообщение # 5 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code Menu_bp(admin) { bMenu1 = CreateMenu(bpSelect); SetMenuTitle(bMenu1, "За что?:\n \n"); AddMenuItem(bMenu1, "menu1", "Фрикил"); AddMenuItem(bMenu1, "menu2", "Читы"); AddMenuItem(bMenu1, "menu3", "Цензура"); SetMenuExitButton(bMenu1, true); DisplayMenu(bMenu1, admin, 0); }
Menu_bt(admin) { bMenu2 = CreateMenu(btSelect); SetMenuTitle(bMenu2, "На сколько:\n \n"); AddMenuItem(bMenu2, "menu1", "1"); AddMenuItem(bMenu2, "menu2", "2"); AddMenuItem(bMenu2, "menu3", "3"); SetMenuExitButton(bMenu2, true); DisplayMenu(bMenu2, admin, 0); }
public bpSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, option, reason[admin], 75); Menu_bt(admin); } else if (action == MenuAction_End) CloseHandle(menu); }
public btSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, option, ban_time[admin], 5); PrintToChatAll("\x04Игрок\x01 %N \x04забанен", x); BanClient(x, StringToInt(ban_time[admin]), BANFLAG_AUTHID, reason[admin]); } else if (action == MenuAction_End) CloseHandle(menu); }
public pSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, option, Info, sizeof(Info)); if (StrEqual(Info, "menu3")) { Menu_2(admin); CloseHandle(Menu_1); } if (StrEqual(Info, "menu1")) { Menu_3(admin); CloseHandle(Menu_1); } if (StrEqual(Info, "menu2")) { Menu_4(admin); CloseHandle(Menu_1); } else PrintToChatAll("Какашонок"); Menu_1(admin); } else if (action == MenuAction_End) CloseHandle(menu); }
Банит но:1) Под причиной я имел введу сообщение которое высветиться забаненому... сейчас оно - Dissconect: Kicked 2) Банил на 1 мин а забанилось на всегда ((((
как решить эти проблемы?Добавлено (03.04.2012, 23:14:40) ---------------------------------------------
Code public btSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, option, ban_time[admin], 5); PrintToChatAll("\x04Игрок\x01 %N \x04забанен", x); if (StrEqual(Info, "menu1")) { BanClient(x, 1, BANFLAG_AUTHID, reason[admin]); CloseHandle(Menu_1); } } else if (action == MenuAction_End) CloseHandle(menu); }[/code]
Так вообще не забанило))
|
|
| |
Scarface_slv
|
Дата: Четверг, 05.04.2012, 18:17:20 | Сообщение # 6 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
у меня получилось все) Code #include <sourcemod> new String:BanTimes[MAXPLAYERS+1]; new String:BanSteam[MAXPLAYERS+1][60]; new String:Reasons[MAXPLAYERS+1]; public OnPluginStart() { RegConsoleCmd("sm_menu", Command_Menu); } public Action:Command_Menu(i, args) { BanMenu(i); return Plugin_Handled; } BanMenu(i) { new Handle:h = CreateMenu(ActionMenu); SetMenuTitle(h, "Игроки:\n \n"); decl String:Name[MAX_NAME_LENGTH], s; decl String:Steam[44]; s = sizeof(Name); for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x) && !IsFakeClient(x)) { GetClientName(x, Name, s); GetClientAuthString(x, Steam, sizeof(Steam)); AddMenuItem(h, Steam, Name); } } DisplayMenu(h, i, 0); } public ActionMenu(Handle:menu, MenuAction:action, i, z) { if (action == MenuAction_End) { CloseHandle(menu); return; } if (action != MenuAction_Select) { return; } GetMenuItem(menu, z, BanSteam[i], 22); PrintToChat(i, "\x03Стим игрока: %s", BanSteam[i]); TimeMenu(i) } TimeMenu(client) { new Handle:menu = CreateMenu(BanTime); SetMenuTitle(menu, "Время:\n \n"); AddMenuItem(menu, "0", "Навсегда"); AddMenuItem(menu, "5", "5 Минут"); DisplayMenu(menu, client, MENU_TIME_FOREVER); } public BanTime(Handle:menu, MenuAction:action, i, z) { if (action == MenuAction_End) { CloseHandle(menu); } else if (action == MenuAction_Cancel) { CloseHandle(menu); } else if (action == MenuAction_Select) { GetMenuItem(menu, z, BanTimes[i], 75); PrintToChat(i, "\x03Время: %s", BanTimes[i]); ReasonMenu(i) } } ReasonMenu(client) { new Handle:menu = CreateMenu(BanReason); SetMenuTitle(menu, "Причина:\n \n"); AddMenuItem(menu, "Оскорбление", "Оскорбление"); AddMenuItem(menu, "Расизм", "Расизм"); DisplayMenu(menu, client, MENU_TIME_FOREVER); } public BanReason(Handle:menu, MenuAction:action, i, z) { if (action == MenuAction_End) { CloseHandle(menu); } else if (action == MenuAction_Cancel) { CloseHandle(menu); } else if (action == MenuAction_Select) { GetMenuItem(menu, z, Reasons[i], 60); decl String:f[75]; Format(f, sizeof(f), "%s", Reasons[i]); PrintToChat(i, "\x03Стим: %s Время: %s Причина: %s", BanSteam[i], BanTimes[i], f,"VBAC"); BanClient(i, BanTimes[i], BANFLAG_IP, Reasons[i], Reasons[i]); } } Добавлено (05.04.2012, 18:17:20) --------------------------------------------- тока это забыл удалить)
|
|
| |
Naykon
|
Дата: Суббота, 07.04.2012, 18:31:56 | Сообщение # 7 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Тоже кое как получилось... но Как можно сделать чтоб когда игрока забанили ему не писало Disconnect: Читерство, а присло так "Забанен! Читерство" .. чтоб небыло слова Disconnect ??
|
|
| |
sssw
|
Дата: Воскресенье, 08.04.2012, 09:27:40 | Сообщение # 8 |
|
Сообщений: 123
Репутация: 14 [ +/- ]
|
|
Так нельзя
|
|
| |
Naykon
|
Дата: Воскресенье, 08.04.2012, 15:15:16 | Сообщение # 9 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code #include <sourcemod> #include <cstrike> #include <sdktools> #include <sdktools_entoutput> #include <sdktools_functions>
new admin; new x; new Handle:bMenu; new Handle:pMenu; new Handle:bMenu2; new String:BanTimes[MAXPLAYERS+1]; new String:BanSteam[MAXPLAYERS+1][60]; new String:Reasons[MAXPLAYERS+1]; new String:StR_Id_b[15], String:StR_Name_b[MAX_NAME_LENGTH];
public OnPluginStart() { RegAdminCmd("sg", AdminSay, ADMFLAG_ROOT); }
public Action:AdminSay(admin, args) { Menu_1(admin) return Plugin_Handled; }
Menu_1(admin) { pMenu = CreateMenu(pSelect); SetMenuTitle(pMenu, "Админская панель:\n \n"); AddMenuItem(pMenu, "menu1", "Убить"); AddMenuItem(pMenu, "menu2", "Забанить"); SetMenuExitButton(pMenu, true); DisplayMenu(pMenu, admin, 0); }
public pSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, option, Info, sizeof(Info)); if (StrEqual(Info, "menu2")) { Menu_4(admin); CloseHandle(Menu_1); } else PrintToChatAll("Какашонок"); Menu_1(admin); } else if (action == MenuAction_End) CloseHandle(menu); }
Menu_4(admin) { bMenu = CreateMenu(bSelect); SetMenuTitle(bMenu, "Забанить:\n \n"); SetMenuExitButton(bMenu, true); new players = 0; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) { IntToString(GetClientUserId(i), StR_Id_b, sizeof(StR_Id_b)); GetClientName(i,StR_Name_b, sizeof(StR_Name_b)); AddMenuItem(bMenu, StR_Id_b, StR_Name_b); players += 1; } } DisplayMenu(bMenu, admin, 0); }
public bSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { GetMenuItem(menu, option, StR_Id_b, sizeof(StR_Id_b)); x = GetClientOfUserId(StringToInt(StR_Id_b)); PrintToChat(admin, "\x03Стим игрока: %N", x); if (x > 0) { PrintToChat(admin,"\x04Игрок\x01 %N", x); } else PrintToChatAll("Какашонок"); Menu_bp(admin); } else if (action == MenuAction_End) CloseHandle(menu); }
Menu_bp(admin) { new Handle:bMenu1 = CreateMenu(bpSelect); SetMenuTitle(bMenu1, "За что?:\n \n"); AddMenuItem(bMenu1, "Фрикил", "Фрикил"); AddMenuItem(bMenu1, "Читы", "Читы"); AddMenuItem(bMenu1, "Цензура", "Цензура"); SetMenuExitButton(bMenu1, true); DisplayMenu(bMenu1, admin, MENU_TIME_FOREVER); }
public bpSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { GetMenuItem(menu, option, Reasons[admin], 60); decl String:f[75]; Format(f, sizeof(f), "%s", Reasons[admin]); PrintToChat(admin, "\x03Причина: %s", f,"VBAC"); Menu_bt(admin); } }
Menu_bt(admin) { bMenu2 = CreateMenu(btSelect); SetMenuTitle(bMenu2, "На сколько:\n \n"); AddMenuItem(bMenu2, "1", "1 минута"); AddMenuItem(bMenu2, "60", "1 час"); SetMenuExitButton(bMenu2, true); DisplayMenu(bMenu2, admin, MENU_TIME_FOREVER); }
public btSelect(Handle:menu, MenuAction:action, admin, option) { if (action == MenuAction_Select) { GetMenuItem(menu, option, BanTimes[admin], 75); PrintToChat(admin, "\x03Время: %s", BanTimes[admin]); if (x > 0) { PrintToChatAll("\x04Игрок\x01 %N \x04ЗАБАНЕН", x); BanClient(x, BanTimes[admin], ADMFLAG_ROOT, Reasons[admin], Reasons[admin]); } else ForcePlayerSuicide(x); Menu_1(admin); } else if (action == MenuAction_End) CloseHandle(menu); }
ПОУЧМУ НЕ РАБОТАЕТ!???? НЕ БАНИТ ИГРОКА ПРОСТО ....
|
|
| |
Naykon
|
Дата: Воскресенье, 08.04.2012, 22:35:44 | Сообщение # 10 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
ОригиналДобавлено (08.04.2012, 15:36:34) --------------------------------------------- Нашел проблему. Заменил ADMFLAG_ROOT на BANFLAG_AUTO.. теперь игрока бенит и пишит причинуюю но не разбанивает.. почему????? Добавлено (08.04.2012, 15:40:16) --------------------------------------------- Вот это - Code PrintToChat(admin, "\x03Время: %s", BanTimes[admin]); подтвердило то что вот сюда - Code BanClient(x, BanTimes[admin], BANFLAG_AUTO, Reasons[admin], Reasons[admin]) а конкретно BanTimes[admin] содержит в себе правильное количество минут бана игрока X но его через Y секнд не разбанивает..Добавлено (08.04.2012, 22:35:44) --------------------------------------------- Людии почему не разбанивает через указанное время???
Гости не могут скачивать файлы
|
|
|
| |
_wS_
|
Дата: Воскресенье, 08.04.2012, 22:50:18 | Сообщение # 11 |
|
Потому что ты объявлять переменные не научился. Посмотри на new String:BanTimes[MAXPLAYERS+1];, BanTimes[admin], и подумай.. Да и в консоле сервера, я уверен, тебе выдает конкретную ошибку, но ты почему-то в него не смотришь.
MAXPLAYERS+1 - это кол-во строк в массиве, а их длину ты не указал.
|
|
| |
Naykon
|
Дата: Воскресенье, 08.04.2012, 22:55:31 | Сообщение # 12 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
ws поставте мне диагнос и напишите популярный урок для таких же ребят... на примерах желательно =) спасибо
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 08.04.2012, 22:59:30 | Сообщение # 13 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
он у меня скопировал) а я спешил толком не проверил)Добавлено (08.04.2012, 22:59:30) --------------------------------------------- что за "диагнос"?
|
|
| |
Naykon
|
Дата: Воскресенье, 08.04.2012, 23:13:33 | Сообщение # 14 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code new String:BanTimes[MAXPLAYERS+1][60]; Указал размер теперь pawnstudio указывает на ошибку в строке Code BanClient(x, BanTimes[admin], ADMFLAG_ROOT, Reasons[admin], Reasons[admin]); Добавлено (08.04.2012, 23:06:09) --------------------------------------------- скопировал?)) всмотрив в мой код внимательно)) некоторые материалы использовал. Добавлено (08.04.2012, 23:07:45) --------------------------------------------- "Диагнос" - общее представление о том как я умею обьявлять переменные... не сложно догадаться =) Добавлено (08.04.2012, 23:13:33) ---------------------------------------------
Code new String:BanTimes[60]; так компилируется но не разбанивается через указанное время((
|
|
| |
Scarface_slv
|
Дата: Понедельник, 09.04.2012, 05:24:56 | Сообщение # 15 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
а так? [code] new BanTimes[60]; ну и после MenuAction_Select decl String:xz[32]; GetMenuItem(menu, z, xz, sizeof(xz)); BanTimes[i] = StringToInt(xz);Добавлено (09.04.2012, 05:24:56) --------------------------------------------- и еще тут Code это: PrintToChat(admin, "\x03Время: %s", BanTimes[admin]); на это: PrintToChat(admin, "\x03Время: %d", BanTimes[admin]); у меня лично так все норм
|
|
| |
|