БАН
| |
Scarface_slv
|
Дата: Суббота, 14.04.2012, 11:25:16 | Сообщение # 31 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Code #include <sourcemod>
new String:ip_2[75]; new String:name_2[75];
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]; decl String:ip[40]; for (new x = 1; x <= MaxClients; x++) { if (IsClientInGame(x) && !IsFakeClient(x)) { GetClientName(x, Name, sizeof(Name)); GetClientIP(x, ip, sizeof(ip)); AddMenuItem(h, ip, 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; } decl String:ip[40]; decl String:name[40]; GetMenuItem(menu, z, ip, sizeof(ip), _, name, sizeof(name)); ip_2 = ip; name_2 = name; Command(i); }
public Action:Command(i) { PrintToChat(i, "\x03IP игрока: \x04%s \x03Ник игрока: \x04%s", ip_2, name_2); } Добавлено (14.04.2012, 11:25:16) --------------------------------------------- такой пример те подойдет?
|
|
| |
Naykon
|
Дата: Четверг, 19.04.2012, 15:57:04 | Сообщение # 32 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code #include <sourcemod> #include <cstrike> #include <sdktools> #include <sdktools_entoutput> #include <sdktools_functions>
new admin;
new String:BanID[25]; new String:BanName[65];
new String:Reason[65]; //new String:Reason[MAXPLAYERS+1];
new Time[MAXPLAYERS+1]; new String:TimeName[65];
public OnPluginStart() { RegConsoleCmd("sm_sg", Command_Menu); }
public Action:Command_Menu(admin, args) { AdminMenu(admin); return Plugin_Handled; }
AdminMenu(admin) { new Menu = CreateMenu(AdminMenuSelect); SetMenuTitle(Menu, "Админская панель!\n \n"); AddMenuItem(Menu, "0", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED); AddMenuItem(Menu, "1", "Забанить"); AddMenuItem(Menu, "2", "Кикнуть"); AddMenuItem(Menu, "3", "Убить"); AddMenuItem(Menu, "4", "Возродить"); AddMenuItem(Menu, "5", "Шлепнуть"); AddMenuItem(Menu, "6", "ЗаМУТить"); AddMenuItem(Menu, "7", "Телепортировать"); SetMenuExitButton(Menu, true); DisplayMenu(Menu, admin, 0); }
public AdminMenuSelect(Handle:menu, MenuAction:action, admin, i) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, i, Info, sizeof(Info)); if (StrEqual(Info, "1")) { BanMenuClient(admin); } } }
BanMenuClient(admin) { new Menu = CreateMenu(BanMenuClientSelect); SetMenuTitle(Menu, "Збанить:\n \n"); AddMenuItem(Menu, "1", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED); decl String:SteamID[15] decl String:UserName[MAX_NAME_LENGTH]; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) { IntToString(GetClientUserId(i), SteamID, sizeof(SteamID)); GetClientName(i, UserName, sizeof(UserName)); AddMenuItem(Menu, SteamID, UserName); } } //AddMenuItem(Menu, "2", "Назад"); SetMenuExitButton(Menu, true); DisplayMenu(Menu, admin, 0); }
public BanMenuClientSelect(Handle:menu, MenuAction:action, admin, i) { if (action == MenuAction_Select) { GetMenuItem(menu, i, BanID, sizeof(BanID), _, BanName, sizeof(BanName)); new BanUser = GetClientOfUserId(StringToInt(BanID)); if (BanUser > 0) { GetMenuItem(menu, i, BanID, sizeof(BanID)); PrintToChat(admin, "\x03Баним: %s", BanName); BanClientReason(admin); } } }
BanClientReason(admin) { new Menu = CreateMenu(BanClientReasonSelect); SetMenuTitle(Menu, "Причина бана:\n \n"); AddMenuItem(Menu, "0", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED); AddMenuItem(Menu, "1", "Фрикилл"); AddMenuItem(Menu, "2", "Оскарбления"); AddMenuItem(Menu, "3", "Читерство"); AddMenuItem(Menu, "4", "Дибил!!!"); SetMenuExitButton(Menu, true); DisplayMenu(Menu, admin, 0); }
public BanClientReasonSelect(Handle:menu, MenuAction:action, admin, i) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, i, Info, sizeof(Info), _, Reason, sizeof(Reason)); PrintToChat(admin, "\x03Причина: %s", Reason); BanClientTime(admin); } }
BanClientTime(admin) { new Menu = CreateMenu(BanClientTimeSelect); SetMenuTitle(Menu, "Причина бана:\n \n"); AddMenuItem(Menu, "0", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED); AddMenuItem(Menu, "1", "1 минута"); AddMenuItem(Menu, "30", "30 минут"); AddMenuItem(Menu, "60", "1 час"); AddMenuItem(Menu, "120", "2 часа"); SetMenuExitButton(Menu, true); DisplayMenu(Menu, admin, 0); }
public BanClientTimeSelect(Handle:menu, MenuAction:action, admin, i) { if (action == MenuAction_Select) { GetMenuItem(menu, i, Time, sizeof(Time), _, TimeName, sizeof(TimeName)); PrintToChat(admin, "\x03Время: %s", TimeName); ServerCommand("banid %d %s kick", Time, BanID); } }
Почему не работает?? вроде все сделал правильно внимательно и по примерам((
|
|
| |
Scarface_slv
|
Дата: Четверг, 19.04.2012, 16:10:22 | Сообщение # 33 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
не правильно задаешь переменную для менюшки ты можешь вместо Code new Menu = CreateMenu(BanMenuClientSelect); это Code new Handle:Menu = CreateMenu(BanMenuClientSelect); и для остальных менюшекДобавлено (19.04.2012, 16:10:22) --------------------------------------------- вообщем ты Handle везде пропустил
|
|
| |
Naykon
|
Дата: Четверг, 19.04.2012, 17:03:49 | Сообщение # 34 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
хм.. странно а меню открывалось)))Добавлено (19.04.2012, 16:18:16) --------------------------------------------- А теперь еще и баниться))) спс Добавлено (19.04.2012, 17:03:49) ---------------------------------------------
Code public BanClientTimeSelect(Handle:menu, MenuAction:action, admin, i) { if (action == MenuAction_Select) { decl String:banTime[8]; GetMenuItem(menu, i, banTime, 8); Time[admin] = StringToInt(banTime); PrintToChat(admin, "Время: %d мин", Time[admin]); //GetMenuItem(menu, i, Time[admin], sizeof(Time), _, TimeName, sizeof(TimeName)); ServerCommand("banid %d %s", Time[admin], BanID); new Handle:player = BanID[25]; KickClient(player, "%s", Reason); } }
Сделал по совету wS но возникла ошибка видимо "new Handle:player = BanID[25];" неправильное сравнение строк.... просто сделать так - KickClient(BanID[25], "%s", Reason); нельзя... вопрос как можно правильно стравнить строки из String сделать Handle чтоб кикнуть забаненого с сообщением.
|
|
| |
Scarface_slv
|
Дата: Четверг, 19.04.2012, 17:44:50 | Сообщение # 35 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
ээээээ что за new Handle:player = BanID[25] зачем ты там Handle добавил, если там нужен String?
|
|
| |
Naykon
|
Дата: Четверг, 19.04.2012, 17:51:49 | Сообщение # 36 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
предложи как мне сделать у меня не получается
|
|
| |
Scarface_slv
|
Дата: Четверг, 19.04.2012, 18:12:00 | Сообщение # 37 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
как то так Code ServerCommand("banid %d %s", BanTimes, BanID); ServerCommand("sm_kick #%s %s", BanID, Reason);
|
|
| |
Naykon
|
Дата: Четверг, 19.04.2012, 18:18:10 | Сообщение # 38 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
ОтличненкьО) спс обьясни только какую роль играет вот это #
|
|
| |
Scarface_slv
|
Дата: Четверг, 19.04.2012, 18:25:08 | Сообщение # 39 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
ее sm_kick требует когда кикаешь по стим ид) если убрать вроде не должно кикнуть игрока
|
|
| |
Naykon
|
Дата: Четверг, 19.04.2012, 19:00:40 | Сообщение # 40 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Еще один скромный вопросик как сделать CreateMenu такого вида чтоб между SetMenuTitle и AddMenuItem можно было вписать текст.. Например: Code Кого баним? (SetMenuTitle) Ехал верблюд на (Просто текст) Толстом слоне (Просто текст) И претворился мертвым Просто текст) 1.Леху (AddMenuItem) 2.Тёму (AddMenuItem) 3.Катю(AddMenuItem) 4.Мишу(AddMenuItem)
Ну ты меня думаю понял =)
|
|
| |
Scarface_slv
|
Дата: Четверг, 19.04.2012, 19:16:53 | Сообщение # 41 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
эт уже не ко мне) я знаю с урока то что можно при создание такого меню Code SetPanelTitle(pMenu, "Кого баним?\n \n"); DrawPanelText(pMenu, "Ехал верблюд на.."); DrawPanelItem(pMenu, "1.Леху"); DrawPanelItem(pMenu, "2.Тёму"); DrawPanelText(pMenu, ">\n \n"); DrawPanelItem(pMenu, "Выход"); а с такой менюшкой которую ты хочешь с SetMenuTitle и AddMenuItem я незнаю как)
|
|
| |
Naykon
|
Дата: Четверг, 19.04.2012, 21:02:39 | Сообщение # 42 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
очнь жаль(((Добавлено (19.04.2012, 20:22:13) --------------------------------------------- wS подскажите как тут быть очень хочется избежать Panel (((( Добавлено (19.04.2012, 21:02:39) --------------------------------------------- Пытался решить проблему через Panel но я очень путаюсь((( Scarface_slv перепиши пожалуйста из вышесказанного мною меню код CreateMenu под Panel если это в твоих силах... я не хочу тебя напрягать, если будет хотя бы малейшее желание помочь буду очень признателен =) Зарание спасибо!
|
|
| |
Scarface_slv
|
Дата: Четверг, 19.04.2012, 23:18:43 | Сообщение # 43 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
делай с помощью ITEMDRAW_DISABLED если не хочешь делать с Панель, а так меню за тебя делать не охото есть же урок где о нем подробно объяснятьсяДобавлено (19.04.2012, 23:18:43) --------------------------------------------- кстати о панель если Леха, Тема... это игроки которые в данный момент на сервере я без понятий как стим сохранить, а ники показать в менюшки) помоему так нельзя, незнаю понял ли ты меня))
|
|
| |
Naykon
|
Дата: Пятница, 20.04.2012, 00:28:14 | Сообщение # 44 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
думаю понял =)Добавлено (20.04.2012, 00:28:14) --------------------------------------------- wS подтвердите что выше обсуждаемую проблему можно решить только использывая Panel ?? Для уверенности что стоит переписывать все на Panel.
Еще один вопросик: Нужно засунуть в строку ReasonFace еще 2 строки.... т.е хочу сделать так чтоб при вылете забаненого игрока ему писало на сколько и за что забанили его! Code new String:ReasonFace[] = "[ЗАБАНЕН] Причина: %s, Срок: %s "; ServerCommand("kickid %s %s", BanID, ReasonFace);
Типа такого, если что ("Причина: %s, Срок: %s", Reason, Time[admin])
Подобного урока нигде не видел... как решить этот вопрос и решение добавте в "Разные типы переменных" =)
|
|
| |
Scarface_slv
|
Дата: Пятница, 20.04.2012, 05:25:17 | Сообщение # 45 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
так Format(f, sizeof(f), "Причина: %s, Срок: %d ", Reason, BanTimes); можно
|
|
| |
|