Доступ к категории админ меню
| |
nikola31rus
|
Дата: Среда, 15.08.2012, 23:43:51 | Сообщение # 1 |
|
Сообщений: 37
Репутация: 4 [ +/- ]
|
|
Привет всем, мне нужна ваша помощ. Вот весь плагин. Code new String:AdminAction[MAXPLAYERS+1][15]; new MyTarget[MAXPLAYERS+1]; new bool:ChatWaitMe[MAXPLAYERS+1];
CreateAdminPanel() { AdminPanel = CreatePanel(); SetPanelTitle(AdminPanel, "Админ меню\n \n"); DrawPanelItem(AdminPanel, "Меню достройки"); DrawPanelItem(AdminPanel, "Установить бонусы"); DrawPanelItem(AdminPanel, "Удалить предметы игрока\n \n"); SetPanelCurrentKey(AdminPanel, 10); DrawPanelItem(AdminPanel, "Выход"); }
public Action:padmin_cmd(client, args) { if (args < 1) { ChatWaitMe[client] = false; SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0); } return Plugin_Handled; }
public Select_AdminPanel(Handle:panel, MenuAction:action, client, option) { if (action != MenuAction_Select || option > 3) return; if (option == 1) { PlayerUseAdminPropsMenu[client] = true; DisplayMenu(PropsMenu, client, 0); } else { strcopy(AdminAction[client], 15, option == 2 ? "set_bonus" : "del_props"); ShowUsersMenu(client); } }
ShowUsersMenu(client, item = 0) { new Handle:menu = CreateMenu(Select_UsersMenu); SetMenuTitle(menu, "Выберите Игрока:\n \n"); SetMenuExitBackButton(menu, true); decl String:userid[15], String:name[32]; name[0] = '\0'; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && !IsFakeClient(i)) { if (i != client && AdminAccess[i]) continue; IntToString(GetClientUserId(i), userid, 15); GetClientName(i, name, 32); AddMenuItem(menu, userid, name); } } DisplayMenuAtItem(menu, client, item, 0); }
public Select_UsersMenu(Handle:menu, MenuAction:action, client, option) { if (action == MenuAction_End) CloseHandle(menu); else if (action == MenuAction_Cancel && option == MenuCancel_ExitBack) { SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0); } else if (action == MenuAction_Select && AdminAccess[client]) { decl String:info[15]; GetMenuItem(menu, option, info, 15); new userid = StringToInt(info); new target = GetClientOfUserId(userid); if (target < 1) { PrintToChat(client, "Игрок не найден"); ShowUsersMenu(client); return; } if (StrEqual(AdminAction[client], "del_props")) { new props_n = MyPropsNum[target]; if (props_n > 0) { decl String:text[75]; Format(text, 75, "wS_Prop_%d,Kill,,0,-1", target); DispatchKeyValue(client, "OnUser1", text); AcceptEntityInput(client, "FireUser1");
PROPS_NUM -= props_n; MyPropsNum[target] = 0; PrintToChat(client, "\x01Предметы игрока \x04%N \x01удалены (\x04%d\x01)", target, props_n); } else PrintToChat(client, "На карте нет его предметов"); ShowUsersMenu(client, GetMenuSelectionPosition()); } else if (StrEqual(AdminAction[client], "set_bonus")) { MyTarget[client] = userid; ChatWaitMe[client] = true; PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]); PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit"); } } }
public Action:PlayerSay(client, const String:command[], args) { if (ChatWaitMe[client] && client > 0 && args > 0) { ChatWaitMe[client] = false; if (!AdminAccess[client]) return Plugin_Continue;
if (StrEqual(AdminAction[client], "set_bonus")) { decl String:arg1[25]; GetCmdArg(1, arg1, 25); if (StrEqual(arg1, "exit")) { SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0); return Plugin_Handled; } new max_symbols = strlen(arg1); for (new i = 0; i < max_symbols; i++) { if (!IsCharNumeric(arg1[i])) { PrintToChat(client, "Введено неверное значение.. [ нужно число или exit ]"); ChatWaitMe[client] = true; return Plugin_Handled; } } new target = GetClientOfUserId(MyTarget[client]); if (target < 1) { PrintToChat(client, "Игрок не найден"); SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0); return Plugin_Handled; } new bonus = StringToInt(arg1); if (bonus != MyPoints[target]) { MyPoints[target] = bonus; if (client == target) PrintToChat(client, "\x04Ваши бонусы обновлены: %d", bonus); else PrintToChatAll("\x01\x04%N \x01установил игроку \x04%N \x01бонусы: %d", client, target, bonus); SQL_SavClientPoints(target); } SendPanelToClient(AdminPanel, client, Select_AdminPanel, 0); return Plugin_Handled; } } return Plugin_Continue; }
У меня не получается сделать так, чтобы вот эта функция работала у админа только если у него есть флаг доступа t, если нету этого флага то она не должна работать Пробовал разные варианты, ничего не выходит, сюда выкладывать не стал, т.к удалил и там полный бред. Code } else if (StrEqual(AdminAction[client], "set_bonus")) { MyTarget[client] = userid; ChatWaitMe[client] = true; PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]); PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit"); } } }
|
|
| |
Scarface_slv
|
Дата: Четверг, 16.08.2012, 11:15:35 | Сообщение # 2 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Создай проверку на этот флаг=) Code new flags = GetUserFlagBits(client); if (flags & CUSTOM6) PrintToChat(client, "Игрок с флагом Т"); else PrintToChat(client, "У игрока отсутствует флаг Т");
|
|
| |
nikola31rus
|
Дата: Четверг, 16.08.2012, 18:06:44 | Сообщение # 3 |
|
Сообщений: 37
Репутация: 4 [ +/- ]
|
|
Cпасибо большое, выручил) Вот что получилось: Code if (StrEqual(AdminAction[client], "set_bonus")) { new flags = GetUserFlagBits(client); MyTarget[client] = userid; ChatWaitMe[client] = true; if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]); if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit"); else PrintToChat(client, "\x01\x03.:Team-A:. \x01Вы не можете устанавливать бонусы"); } } }
Сообщение отредактировал nikola31rus - Четверг, 16.08.2012, 21:26:42 |
|
| |
Scarface_slv
|
Дата: Пятница, 17.08.2012, 14:39:28 | Сообщение # 4 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
тока вот что Code if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]); if (flags & ADMFLAG_CUSTOM6) PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit"); [/color] else PrintToChat(client, "\x01\x03.:Team-A:. \x01Вы не можете устанавливать бонусы"); зачем два раза создавать проверку на флаг if (flags & ADMFLAG_CUSTOM6) стоило сделать так, хотя без разницы твой вариант тоже будет работать это я так поправляю чтоб те легче было в будущем) Code if (StrEqual(AdminAction[client], "set_bonus")) { new flags = GetUserFlagBits(client); MyTarget[client] = userid; ChatWaitMe[client] = true; if (flags & ADMFLAG_CUSTOM6) { PrintToChat(client, "\x01Текущие бонусы игрока \x04%N: \x01%d", target, MyPoints[target]); PrintToChat(client, "\x01Введите в чат \x04новое значение \x01или \x04exit"); } else PrintToChat(client, "\x03.:Team-A:. \x01Вы не можете устанавливать бонусы"); }
Сообщение отредактировал Scarface_slv - Пятница, 17.08.2012, 14:43:58 |
|
| |
nikola31rus
|
Дата: Пятница, 17.08.2012, 18:40:46 | Сообщение # 5 |
|
Сообщений: 37
Репутация: 4 [ +/- ]
|
|
ну как умел так сделал)
|
|
| |
|