Naykon
|
Дата: Суббота, 01.09.2012, 23:02:15 | Сообщение # 1 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Написал небольшую админку в несколькими функциями: Бан Кик Слей Смена Телепорт и т д.. Проблема заключается в том что когда 2 пользователя одновременно заходят в админку и выбирают вместе вот такие пункты: 1 пользователь: -Бан --Выберите игрока (Unnamed) - Нажал кнопку первым ---Укажите причину (Читерство) - Нажал кнопку первым ----Укажите время (На всегда) - нажал кнопку вторым и 2 пользователь -Бан --Выберите игрока (Torres) - нажал кнопку вторым ---Укажите причину (Оскорбления) - нажал кнопку вторым ----Укажите время (На 2 часа)- Нажал кнопку первым
Получается так что банит вот так: Torres Оскорбления На всегда
Хотя должно было забанить 2 игрока. Я понимаю что плагин учитывает последние записаные данные т.е кто нажал последним (вторым), но к сожалению не имею понятия как это можно исправить чтоб Админкой могли пользоваться X человек не мешая друг-другу(((
Сообщение отредактировал Naykon - Суббота, 01.09.2012, 23:03:14 |
|
| |
_wS_
|
Дата: Суббота, 01.09.2012, 23:27:49 | Сообщение # 2 |
|
Обычные массивы.
Code new MyTarget[MAXPLAYERS+1], MyTime[MAXPLAYERS+1];
MyTarget[admin_index] = 25; MyTime[admin_index] = 0;
|
|
| |
Naykon
|
Дата: Суббота, 01.09.2012, 23:56:10 | Сообщение # 3 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Приведите пожалуйста небольшой пример, не часто имею с ними дело
|
|
| |
_wS_
|
Дата: Воскресенье, 02.09.2012, 00:04:30 | Сообщение # 4 |
|
Ну когда админ (client) выбирает время, например, в меню, пусть оно равно x, то:
А когда уже админ будет банить игрока, то просто получи значения с этих массивов. MyTime[client] - время, MyTarget[client] - userid цели, кому бан даем.
|
|
| |
Naykon
|
Дата: Среда, 05.09.2012, 15:58:31 | Сообщение # 5 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Мучался -мучался вроде что-по получалось сначала, как закончил полная Ж вообще перестало банить и писать причину... я на всех глобальных переменных типа стинг ставил [MAXPLAYERS+1]... возможно я не до конца понял ... Не сочтите за наглость но ниже я написал пример на котором построена вся админка.. исправте пожалуйста ощибку о которой я говорил в 1 посте...((
Code #include <sourcemod> #include <cstrike> #include <sdktools> #include <sdktools_entoutput> #include <sdktools_functions>
new String:BanID[25]; new String:BanName[65]; new String:Reason[65]; new String:TT[25]; new String:Time[65]; new BanUser;
public OnPluginStart() { RegConsoleCmd("sm_admin2", Command_Menu); }
public Action:Command_Menu(admin, args) { AdminMenu(admin); return Plugin_Handled; }
AdminMenu(admin) { new Handle:Menu = CreateMenu(AdminMenuSelect); SetMenuTitle(Menu, "Админская панель SORCEGaming.RU!\n \n"); AddMenuItem(Menu, "1", "Забанить"); 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 Handle:Menu = CreateMenu(BanMenuClientSelect); SetMenuTitle(Menu, "Кого баним?:\n \n"); 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, "[АДМИН БАН] Игрок: %s", BanName); BanClientReason(admin); } } }
BanClientReason(admin) { new Handle:Menu = CreateMenu(BanClientReasonSelect); SetMenuTitle(Menu, "За что баним?\n \n"); AddMenuItem(Menu, "2", "Оскарбления"); AddMenuItem(Menu, "11", "Читерство"); 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, "[АДМИН БАН] Игрок: %s! Причина: %s!", BanName, Reason); BanClientTime(admin); } }
BanClientTime(admin) { new Handle:Menu = CreateMenu(BanClientTimeSelect); SetMenuTitle(Menu, "На сколько баним?\n \n"); AddMenuItem(Menu, "1", "Намек понял? (1 мин)"); AddMenuItem(Menu, "3", "3 минуты"); 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, TT, sizeof(TT), _, Time, sizeof(Time)); Realy(admin); PrintToChat(admin, "\x04[SG: \x01Админ-панель\x04] \x05Игрок: \x01%s. \x05Причина: \x01%s. \x05Время: \x01%s.", BanName, Reason, Time); } }
Realy(admin) { new Handle:Menu = CreateMenu(RealySelect); SetMenuTitle(Menu, "Вы уверены в правильности бана?\n \n"); AddMenuItem(Menu, "yes", "Да!") AddMenuItem(Menu, "no", "Нет!"); SetMenuExitButton(Menu, true); DisplayMenu(Menu, admin, 0); }
public RealySelect(Handle:menu, MenuAction:action, admin, i) { if (action == MenuAction_Select) { decl String:Info[25]; GetMenuItem(menu, i, Info, sizeof(Info)); if (StrEqual(Info, "yes")) { decl String:title[100]; Format(title, sizeof(title), "БАН. Время: %s. Причина: %s", Time, Reason); PrintToChatAll("\x04[SG: \x01Админ \x05%N\x04] \x05Забанил игрока: \x01%s. \x05Время: \x01%s. \x05Причина: \x01%s.", admin, BanName, Time, Reason); ServerCommand("banid %s %s", TT, BanID); ServerCommand("kickid %s %s", BanID, title); } else PrintToChat(admin, "\x04[SG: \x01Админ-панель\x04] \x05Запрос бана отменен."); } }
|
|
| |
_wS_
|
Дата: Среда, 05.09.2012, 16:11:31 | Сообщение # 6 |
|
Не буду исправлять, потому что ошибок полно.. Причем те же самые делаешь, научиться видимо не хочешь. Да и массивы не знаешь как работают, а они очень часто используются в плагинах.
|
|
| |
Scarface_slv
|
Дата: Среда, 05.09.2012, 17:16:57 | Сообщение # 8 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Почему ты по примеру не делаешь? Кидал ведь это: правда добавил массив как ws написал.
Гости не могут скачивать файлы
|
Сообщение отредактировал Scarface_slv - Среда, 05.09.2012, 17:33:20 |
|
| |