when i add VIP rank and compile it. It Gets errors
Code:
#include <amxmodx>
#include <amxmisc>
#include <string_stocks>
#include <colorchat>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "MuminDalen Menu"
#define VERSION "1.0"
#define AUTHOR "SnusMumrikeN"
#define TAG_Chat "^4[MuminDalenMenu]^1"
#define TAG_Menu "\d[\rMuminDalenMenu\d]\w"
#define EXIT_Name "\dExit\d"
/* 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,
Admin
Vip
}
new const Rank_Names[enumRank][] = {
"Owner",
"Admin"
"Vip"
}
new const Rank_Flags[enumRank] = {
ADMIN_BAN,
ADMIN_KICK
ADMIN_SLAY
}
new const Rank_Items[enumRank][] = {
" 0 1 9 2 3 4 7 8",
" 0 1 11 9 3 4"
" 0 1 11 9 3 4"
}
new const Rank_Tags[enumRank][] = {
"[Owner]",
"[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));
}
}
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);
}