Member
|
08-20-2012
, 19:52
Easy problem with flags, Owner,Headadmin,Admin,VIP
|
#1
|
HII guys i have problem with the plugins
i want to admin but wen i add admin all is Owner the problem is here
Owner : how to add Owner
HeadAdmin : how to add Headadmin
Admin : how to add admin
VIP : how to add VIP
what flagg want för that any help
PHP Code:
#include <amxmodx> #include <amxmisc> #include <string_stocks> #include <colorchat> #include <cstrike> #include <fakemeta> #include <hamsandwich>
#define PLUGIN "Admin Menu" #define VERSION "1.2" #define AUTHOR "Ricardo"
#define TAG_Chat "^4[SWE-KUNG Menu]^1" #define TAG_Menu "\d[\rSWE-KUNG Menu\d]\w" #define EXIT_Name "\yExit - By Ricardo KAKA"
/* Awesome: - Items */ enum _:enumItems { Kick, // 0 Ban, // 1 Slay, // 2 Slap, // 3 Mute, // 4 Respawn, // 5 Transfer, // 6 Changemap, // 7 WriteNote, // 8 VoteKick, // 9 VoteBan, // 10 VoteMap, // 11 Vote // 12 } new const Item_Names[enumItems][] = { "Kick", "Ban", "Slay", "Slap", "Mute", "Respawn", "Transfer", "Changemap", "Write Note", "Vote Kick", "Vote Ban", "Vote Map", "Vote" }
/* Awesome: - Ranks */ enum _:enumRank { Owner, HeadAdmin, Admin, VIP } new const Rank_Names[enumRank][] = { "Owner", "HeadAdmin", "Admin", "VIP" } new const Rank_Flags[enumRank] = { ADMIN_BAN, ADMIN_KICK, ADMIN_SLAY, ADMIN_MAP } new const Rank_Items[enumRank][] = { " 0 1 2 3 4 5 6 7 ", " 0 1 2 3 4 5 6 7 ", " 0 1 2 3 4 6 7 ", " 0 2 3 " } new const Rank_Tags[enumRank][] = { "[Owner]", "[HeadAdmin]", "[Admin]", "[VIP]" }
/* Awesome: - Others */ new playerKey[33], playerTarget[33], playerReason[33], playerInfo[33][2], bool:playerMuted[33] new bool:Vote_Running, iVote[2] new cAdvancedBans, cBanTime new iMaxPlayers
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) // Register: Clcmd register_clcmd("say /menu", "Cmd_AwesomeMenu") register_clcmd ("say", "handle_say") register_clcmd ("say_team", "handle_teamsay") register_clcmd("Awesome_String", "Cmd_String") // Register: Cvars cAdvancedBans = register_cvar("awesomemenu_advancedbans", "1"); cBanTime = register_cvar("awesomemenu_bantime", "120"); // Register: Forward register_forward(FM_Voice_SetClientListening, "Fwd_Voice")
// Others iMaxPlayers = get_maxplayers() } /* Awesome: - Menu's */ public Cmd_AwesomeMenu(id) { new szTemp[100], key[6] formatex(szTemp, charsmax(szTemp), "%s Main Menu", TAG_Menu) new menu = menu_create(szTemp, "Handler_AwesomeMenu") for(new i = 0; i < enumRank; i++) { formatex(szTemp, charsmax(szTemp), "%s%s", (get_user_flags(id) & Rank_Flags[i]) ? "\r" : "\d", Rank_Names[i]) num_to_str(i, key, charsmax(key)) menu_additem(menu, szTemp, key) } menu_setprop(menu, MPROP_EXITNAME, EXIT_Name) menu_display(id, menu) } public Handler_AwesomeMenu(id, menu, item) { if(item == MENU_EXIT) menu_destroy(menu) else { new key = MenuKey(menu, item) menu_destroy(menu) if(~get_user_flags(id) & Rank_Flags[key]) { ColorChat(id, GREY, "%s You don't got access for the^3 %s^1 menu.", TAG_Chat, Rank_Names[key]) Cmd_AwesomeMenu(id) } else Show_ItemsMenu(id, key) } } public Show_ItemsMenu(id, key) { new szTemp[100], results, num[6] formatex(szTemp, charsmax(szTemp), "%s Items Menu", TAG_Menu) new menu = menu_create(szTemp, "Handler_ItemsMenu") copy(szTemp, charsmax(szTemp), Rank_Items[key]) results = str_substr_count(szTemp, " ") for(new i = 0; i < results; i++) { strbreak(szTemp, num, sizeof(num) - 1, szTemp, charsmax(szTemp)); menu_additem(menu, Item_Names[ str_to_num(num) ], num) } menu_setprop(menu, MPROP_EXITNAME, EXIT_Name) menu_display(id, menu) } public Handler_ItemsMenu(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) Cmd_AwesomeMenu(id) } else { playerKey[id] = MenuKey(menu, item) menu_destroy(menu)
if( playerKey[id] == Changemap || playerKey[id] == WriteNote || playerKey[id] == VoteMap || playerKey[id] == Vote) client_cmd(id, "messagemode Awesome_String") else if( playerKey[id] == Transfer ) Show_TransferMenu(id) else Show_PlayerMenu(id) } } public Show_PlayerMenu(id) { new szTemp[100], key[6], szName[32] formatex(szTemp, charsmax(szTemp), "%s Playerlist Menu", TAG_Menu) new menu = menu_create(szTemp, "Handler_PlayerMenu") for(new i = 1; i <= iMaxPlayers; i++) { if(is_user_connected(i)) { get_user_name(i, szName, charsmax(szName)) num_to_str(i, key, charsmax(key)) menu_additem(menu, szName, key) } } menu_setprop(menu, MPROP_EXITNAME, EXIT_Name) menu_display(id, menu) } public Handler_PlayerMenu(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) Cmd_AwesomeMenu(id) } else { playerTarget[id] = MenuKey(menu, item) menu_destroy(menu) client_cmd(id, "messagemode Awesome_String") } }
public Show_VoteMenu(id, reason[]) { new szTemp[200], szName[2][32] get_user_name(id, szName[0], 31) get_user_name(playerTarget[id], szName[1], 31) if(playerKey[id] == VoteKick) formatex(szTemp, charsmax(szTemp), "%s Vote Menu^n\r%s\w wants to kick\r %s\w for\r %s\w.", TAG_Menu, szName[0], szName[1], reason) else if(playerKey[id] == VoteBan) formatex(szTemp, charsmax(szTemp), "%s Vote Menu^n\r%s\w wants to ban\r %s\w for\r %s\w.", TAG_Menu, szName[0], szName[1], reason) else if(playerKey[id] == VoteMap) formatex(szTemp, charsmax(szTemp), "%s Vote Menu^n\r%s\w wants to change map to\r %s\w.", TAG_Menu, szName[0], reason) else if(playerKey[id] == Vote) formatex(szTemp, charsmax(szTemp), "%s Vote Menu^n\dVote:\r %s\d by\y %s.", TAG_Menu, reason, szName[0]) else return Vote_Running = true iVote[0] = 0 iVote[1] = 0 new menu = menu_create(szTemp, "Handler_VoteMenu") menu_additem(menu, "\wYes", "1") menu_setprop(menu, MPROP_EXITNAME, "\yNo!") for(new i = 1; i <= iMaxPlayers; i++) if(is_user_connected(i)) menu_display(i, menu) set_task(7.0, "Task_VoteResult", id) } public Handler_VoteMenu(id, menu, item) { if(Vote_Running) { if(item == MENU_EXIT) iVote[1]++ else iVote[0]++ } }
public Show_TransferMenu(id) { new szTemp[100] formatex(szTemp, charsmax(szTemp), "%s Transfer Menu", TAG_Menu) new menu = menu_create(szTemp, "TransferMenu") switch(playerInfo[id][0]) { case 0: menu_additem(menu, "\rTerrorist^n", "0", 0); case 1: menu_additem(menu, "\rCounter Terrorist^n", "0", 0); case 2: menu_additem(menu, "\rSpectator^n", "0", 0); } new szName[32], key[6] for(new i = 1; i <= iMaxPlayers; i++) { if(!is_user_connected(i)) continue if(get_user_team(i) != playerInfo[id][0]+1) continue get_user_name(i, szName, charsmax(szName)) num_to_str(i, key, charsmax(key)) menu_additem(menu, szName, key) } menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_setprop(menu, MPROP_EXITNAME, EXIT_Name) menu_display(id, menu) } public TransferMenu(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); Cmd_AwesomeMenu(id) return PLUGIN_HANDLED; } new player = MenuKey(menu, item) menu_destroy(menu) if(!player) { switch(playerInfo[id][0]) { case 2: playerInfo[id][0]=0 default: playerInfo[id][0]++ } Show_TransferMenu(id) } else { new name[2][32] get_user_name(player,name[1],31) get_user_name(id,name[0],31) cs_set_user_team(player, CsTeams:playerInfo[id][0] ) user_silentkill(player) ColorChat(0, GREY, "%s^3 %s^1 transfered^3 %s^1 to the^3 %s^1.", TAG_Chat, name[0], name[1], (playerInfo[id][0] == 1) ? "Counter-Terrorists" : (playerInfo[id][0] == 0) ? "Terrorists" : "Spectators") } Show_TransferMenu(id) return PLUGIN_CONTINUE; } /* Awesome: - Voice */ public Fwd_Voice(iReceiver, iSender, iListen) { if(iReceiver == iSender) return FMRES_IGNORED if(playerMuted[iSender]) { engfunc(EngFunc_SetClientListening, iReceiver, iSender, 0) return FMRES_SUPERCEDE } return FMRES_IGNORED }
/* Awesome: - Cmd's */ public Cmd_String(id) { static arg[32]; read_argv(1, arg, charsmax(arg)); if ( !strlen(arg) ) client_cmd(id, "messagemode Awesome_String") else Action(id, playerKey[id], arg) }
/* Awesome: - */ public client_disconnect(id) playerMuted[id] = false
/* Awesome: - Action */ public Action(id, key, reason[]) { if(is_user_connected(id)) { new szName[2][32] get_user_name(id, szName[0], 31) get_user_name(playerTarget[id], szName[1], 31) switch(key) { case Kick: { ColorChat(0, GREY, "%s^3 %s^1 kicked^3 %s^1 for^3 %s^1.", TAG_Chat, szName[0], szName[1], reason) server_cmd("kick #%d ^"%s^"", get_user_userid(playerTarget[id]), reason) } case Ban: { ColorChat(0, GREY, "%s^3 %s^1 banned^3 %s^1 for^3 %s^1.", TAG_Chat, szName[0], szName[1], reason) if( get_pcvar_num(cAdvancedBans) ) // Advanced bans server_cmd ("amx_ban ^"%s^" %d ^"%s^"", szName[1], get_pcvar_num(cBanTime), reason) else { server_cmd("banid %d #%d;wait;writeid", get_pcvar_num(cBanTime), get_user_userid(playerTarget[id])) server_cmd("kick #%i ^"By: %s - Reason: %s - BanTime: %i^"", get_user_userid(playerTarget[id]), szName[0], reason, get_pcvar_num(cBanTime));
if (!(get_user_flags(id) & ADMIN_LEVEL_A) ) { console_print(id, "[EnvyCS] You have not access to this command.") return PLUGIN_HANDLED; } } } case Slay: { if(is_user_alive(playerTarget[id])) { ColorChat(0, GREY, "%s^3 %s^1 slayed^3 %s^1 for^3 %s^1.", TAG_Chat, szName[0], szName[1], reason) user_silentkill(playerTarget[id]) make_deathmsg(id, playerTarget[id], 1, "deagle") } else ColorChat(id, GREY, "%s You can't do this command on a dead body.", TAG_Chat) return 0; } case Slap: { if(is_user_alive(playerTarget[id])) { ColorChat(0, GREY, "%s^3 %s^1 slapped^3 %s^1 for^3 %s^1.", TAG_Chat, szName[0], szName[1], reason) user_slap(playerTarget[id], 0) user_slap(playerTarget[id], 0) } else ColorChat(id, GREY, "%s You can't do this command on a dead body.", TAG_Chat) return 0; } case Mute: { playerMuted[playerTarget[id]] = !playerMuted[playerTarget[id]] ColorChat(0, GREY, "%s^3 %s^1 %s^3 %s^^1.", TAG_Chat, szName[0], playerMuted[playerTarget[id]] ? "muted" : "unmuted", szName[1]) } case Respawn: { ExecuteHamB(Ham_CS_RoundRespawn, playerTarget[id]) ColorChat(0, GREY, "%s^3 %s^1 respawned^3 %s^1.", TAG_Chat, szName[0], szName[1]) } case Changemap: { if(!is_map_valid(reason)) { ColorChat(id, GREY, "%s Map^3 %s^1 doesn't excist on the server.", TAG_Chat, reason) client_cmd(id, "messagemode Awesome_String") } else { ColorChat(0, GREY, "%s^3 %s^1 changes map to^3 %s^1.", TAG_Chat, szName[0], reason) copy(playerReason[id], 31, reason) set_task(1.0, "Task_Changemap", id) } } case WriteNote: { set_hudmessage(255, 255, 255, -1.0, 0.20, 0, 6.0, 12.0) show_hudmessage(0, "%s: '%s'", szName[0], reason) } case VoteKick, VoteBan, VoteMap: { if(Vote_Running) ColorChat(id, GREY, "%s There is already a vote running.", TAG_Chat) else if(playerKey[id] == VoteMap && !is_map_valid(reason)) { ColorChat(id, GREY, "%s Map^3 %s^1 doesn't excist on the server.", TAG_Chat, reason) client_cmd(id, "messagemode Awesome_String") } else { copy(playerReason[id], 31, reason) Show_VoteMenu(id, reason) } } } } return 1; }
/* Awesome: - Tasks */ public Task_Changemap(id) { if(is_map_valid(playerReason[id])) { new data[85]; formatex(data, 84, "changelevel %s", playerReason[id]) server_cmd(data) } } public Task_VoteResult(id) { ColorChat(0, GREY, "^4[%s]^1 Vote:^3 %s^1, result^3 %s^1.", TAG_Chat, playerReason[id], (iVote[0] > iVote[1]) ? "Yes" : (iVote[0] == iVote[1]) ? "Tie" : "No") Vote_Running=false if(iVote[0] > iVote[1] && playerKey[id] != Vote) Action(id, playerKey[id], playerReason[id]) }
stock is_awesome_admin(id) { static flags flags = get_user_flags(id) for(new i = 0; i < enumRank; i++) if(flags & Rank_Flags[i]) return i+1 return 0 }
/* Awesome: - Color Say */ public handle_say(id) { new Message[192]; read_args (Message, charsmax(Message)) remove_quotes(Message)
new Number = is_awesome_admin(id) if(equal(Message, "") || equal(Message, "[") || Message[0] == '@' || Message[0] == '/' || !Number) return PLUGIN_CONTINUE new tempTag[50], strName[154], Color:Team; formatex(tempTag, charsmax(tempTag), "^4%s ", Rank_Tags[Number-1]) Team = (get_user_team(id) == 1) ? RED : (get_user_team(id) == 2) ? BLUE : GREY
ColorTag(id, tempTag, strName, charsmax(strName), "^3", " ")
for(new i = 1; i < iMaxPlayers; i++) { if(is_user_connected(i)) { ColorChat(i, Team, "%s^1 : %s", strName, Message); } } remove_colors(strName, charsmax(strName)) remove_colors(Message, charsmax(Message)) server_print("%s : %s", strName, Message) return PLUGIN_HANDLED } public handle_teamsay(id) { new Message[192]; read_args (Message, charsmax(Message)) remove_quotes(Message)
new Number = is_awesome_admin(id) if(equal(Message, "") || equal(Message, "[") || Message[0] == '@' || Message[0] == '/' || !Number) return PLUGIN_CONTINUE
new tempTag[50], strName[154] formatex(tempTag, charsmax(tempTag), "^4%s ", Rank_Tags[Number-1]) ColorTag(id, tempTag, strName, charsmax(strName), "^3", (get_user_team(id) == 1) ? "(Terrorists) " : (get_user_team(id) == 2) ? "(Counter-Terrorists) " : "(Spectator) "); for(new i = 1; i < iMaxPlayers; i++) { if(is_user_connected(i) && cs_get_user_team(i) == cs_get_user_team(id) ) { ColorChat(i, TEAM_COLOR, "%s^1 : %s", strName, Message) } } remove_colors(strName, charsmax(strName)) remove_colors(Message, charsmax(Message)) server_print("%s : %s", strName, Message) return PLUGIN_HANDLED } stock ColorTag(id, PlayerTag[], StringName[], StringLen, NameColor[], TeamTag[]) { new szName[32]; get_user_name(id, szName, charsmax(szName)); new Status[11]; copy(Status, charsmax(Status), (get_user_team(id) == 3) ? "^x01*SPEC*" : is_user_alive(id) ? "^x01" : "^x01*DEAD* ")
formatex(StringName, StringLen, "%s%s%s%s%s", PlayerTag, Status, TeamTag, NameColor, szName) } stock remove_colors(string[], len) { replace_all(string, len, "^x01", "") replace_all(string, len, "^x03", "") replace_all(string, len, "^x04", "") }
/* Awesome: - Stocks */ stock MenuKey(menu, item) { new szData[6], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback); return str_to_num(szData); }
Last edited by yokanayako; 08-20-2012 at 19:52.
|
|