/* * Cancel AdminMod votes (Vsay, Map and Kick) * * ORIGINAL CREDITS * Admin mod script. Copyright (C) 2000, Alfred Reynolds. * $Id: plugin_base.sma,v 1.2.2.3 2001/10/24 00:53:57 darope Exp $ * * ENHANCEMENTS BY * Caveman ICQ 70710878 * V. 1.2 * */ /* This is a base plugin for Admin Mod; it doesn't do anything fancy. */ #include <core> #include <console> #include <string> #include <admin> #include <adminlib> /*Chenge this to define the level of admins able to cancle the vote*/ #define ACCESS_CANCELMAPVOTE 64 new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.26"; new flag; public admin_cancel_vote(HLCommand,HLData,HLUserName,UserIndex) { new Text[MAX_TEXT_LENGTH]; flag=1; snprintf(Text, MAX_TEXT_LENGTH, "Admin attempting to cancel vote"); say(Text); return PLUGIN_CONTINUE; } public admin_vote_kick(HLCommand,HLData,HLUserName,UserIndex) { new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new Text[MAX_TEXT_LENGTH]; new User[MAX_NAME_LENGTH]; new strAuthID[MAX_AUTHID_LENGTH]; if (vote_allowed()!=1) { selfmessage( "Vote not allowed at this time."); return PLUGIN_HANDLED; } flag = 0; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (check_user(Data) == 1) { new real_user[MAX_NAME_LENGTH]; get_username(Data,real_user,MAX_NAME_LENGTH); say_command(User,Command,Data); if(check_immunity(real_user)!=0) { snprintf(Text, MAX_TEXT_LENGTH, "Laf. You can't kick %s, you silly bear.", real_user); say(Text); } else { snprintf(Text, MAX_TEXT_LENGTH, "Kick %s?", real_user); if(getvar("sv_lan")==1) { vote(Text,"Yes","No","HandleKickVote",real_user); } else { get_userAuthID(real_user,strAuthID); vote(Text,"Yes","No","HandleKickVote",strAuthID); } } } else { selfmessage("Unrecognized user name "); selfmessage(Data); } return PLUGIN_HANDLED; } /* Handle a kick vote's results. */ public HandleKickVote(WinningOption,HLUser,VoteCount,UserCount) { new strNumber[MAX_NUMBER_LENGTH]; new Text[MAX_TEXT_LENGTH]; new VoteUser[MAX_DATA_LENGTH]; convert_string(HLUser,VoteUser,MAX_DATA_LENGTH); if (flag==0){ if (WinningOption == 1) { new Ratio = getvar("kick_ratio"); if (VoteCount >= Ratio*UserCount/100) { snprintf(Text, MAX_TEXT_LENGTH, "%s was kicked due to a vote.", VoteUser); say(Text); message(VoteUser,"You have been kicked due to a vote."); kick(VoteUser); } else { numtostr(Ratio*UserCount/100,strNumber); snprintf(Text, MAX_TEXT_LENGTH, "Kick vote succeeded, but not enough votes for kick (needed %s)",strNumber); say(Text); } } else { say("Kick vote failed."); } } else { snprintf(Text, MAX_TEXT_LENGTH, "Vote succesfully canceled by Admin"); say(Text); flag = 0; } } public admin_vote_map(HLCommand,HLData,HLUserName,UserIndex) { new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new Text[MAX_TEXT_LENGTH]; new User[MAX_NAME_LENGTH]; if (vote_allowed()!=1) { selfmessage( "Vote not allowed at this time."); return PLUGIN_HANDLED; } flag = 0; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (valid_map(Data) == 1) { snprintf(Text, MAX_TEXT_LENGTH, "Change map to %s?", Data); log(Text); vote(Text,"Yes","No","HandleMapVote",Data); } else { selfmessage("Bad map name"); selfmessage(Data); } return PLUGIN_HANDLED; } /* Handle a map vote's results. */ public HandleMapVote(WinningOption,HLMap,VoteCount,UserCount) { new strNumber[MAX_NUMBER_LENGTH]; new Text[MAX_TEXT_LENGTH]; new VoteMap[MAX_DATA_LENGTH]; convert_string(HLMap,VoteMap,MAX_DATA_LENGTH); new sTimelimit[10]; getstrvar("mp_timelimit", sTimelimit, 10); if (flag==0){ if (WinningOption == 1) { new Ratio = getvar("map_ratio"); if (VoteCount >= Ratio*UserCount/100) { snprintf(Text, MAX_TEXT_LENGTH, "Changing map to %s due to vote.", VoteMap); say(Text); changelevel( VoteMap, 4); //set_timer("ChangeMap",2,1,VoteMap); } else { numtostr(Ratio*UserCount/100,strNumber); snprintf(Text, MAX_TEXT_LENGTH, "Map vote succeeded, but not enough votes for change (needed %s)", strNumber); say(Text); } } else { say("Map vote failed."); } } else { snprintf(Text, MAX_TEXT_LENGTH, "Vote succesfully canceled by Admin"); say(Text); flag = 0; } } public admin_vsay(HLCommand,HLData,HLUserName,UserIndex) { new Command[MAX_COMMAND_LENGTH]; new Data[MAX_DATA_LENGTH]; new User[MAX_NAME_LENGTH]; flag = 0; convert_string(HLCommand,Command,MAX_COMMAND_LENGTH); convert_string(HLData,Data,MAX_DATA_LENGTH); convert_string(HLUserName,User,MAX_NAME_LENGTH); if (vote_allowed()!=1) { selfmessage( "Vote not allowed at this time."); return PLUGIN_HANDLED; } log_command(User,Command,Data); vote(Data,"Yes","No","HandleVsay", Data); return PLUGIN_HANDLED; } public HandleVsay(WinningOption,HLData,VoteCount,UserCount) { new Data[MAX_DATA_LENGTH]; new Text[MAX_TEXT_LENGTH]; if (flag==0){ convert_string(HLData,Data,MAX_DATA_LENGTH); snprintf(Text, MAX_TEXT_LENGTH, "^"%s^": Option #%i won with %i / %i votes.", Data, WinningOption, VoteCount, UserCount); say(Text); } else { snprintf(Text, MAX_TEXT_LENGTH, "Vote succesfully canceled by Admin"); say(Text); flag = 0; } } public plugin_init() { plugin_registerinfo("Caveys Enhanced Vote System 1.1","Basic AdminMod votes with the option to cancel them",STRING_VERSION); plugin_registercmd("admin_cancel_vote","admin_cancel_vote",ACCESS_CANCELMAPVOTE,"admin_cancel_vote : Cancels a current vote"); plugin_registercmd("admin_vote_kick","admin_vote_kick",ACCESS_VOTE_KICK,"admin_vote_kick <target>: Starts a vote to kick target."); plugin_registercmd("admin_vote_map","admin_vote_map",ACCESS_ALL,"admin_vote_kick <target>: Starts a vote to kick target."); plugin_registercmd("admin_vsay","admin_vsay",ACCESS_SAY,"admin_vsay <question>: Presents question as a vote."); return PLUGIN_CONTINUE; }