// Monster Manager v 1.0 // Written by BuzzKill 12/17/2002 // Manages voting for Botman's Monster Plugin // EMAIL:buzzkill@digitalwidget.net // AIM:buzzkillspree // UA StatsMe Support Team Member http://www.unitedadmins.com // 100-Acre Bloodbath TFC Server -- 66.51.85.240:27016 #include <core> #include <console> #include <string> #include <admin> #include <adminlib> #define ACCESS_MSTRMGR 256 new MSTRMGR_TIMER; new MSTRMGR_ADDRATIO; new MSTRMGR_REMRATIO; new STRING_VERSION[] = "2.51"; public StartMstrVote() { new strDummy[10]; if (vote_allowed()!=1) { log( "[MONSTERMANAGER] Vote not allowed at this time."); return PLUGIN_HANDLED; } if(getvar("monster_spawn")==0) // Monster's aren't running vote("Add Monsters?", "Yes", "No", "HandleMstrVoteAdd",strDummy); else vote("Remove Monsters?", "Yes", "No", "HandleMstrVoteRem",strDummy); return PLUGIN_HANDLED; } public HandleMstrVoteAdd(WinningOption,HLData,VoteCount,UserCount) { new Text[MAX_TEXT_LENGTH]; new strNumber[MAX_NUMBER_LENGTH]; new Ratio = MSTRMGR_ADDRATIO; new strData[MAX_DATA_LENGTH]; convert_string(HLData, strData,MAX_DATA_LENGTH); if (VoteCount >= Ratio*UserCount/100) { if (WinningOption==1) { exec("monster_spawn 1"); centersay("Vote over. Adding monsters...",18,249,244,0); } else { centersay("Vote over. Monsters will not be added.",18,63,187,239); } } else { numtostr(Ratio*UserCount/100,strNumber); snprintf(Text, MAX_TEXT_LENGTH, "Vote complete, but not enough votes for change (needed %s).", strNumber); centersay(Text,18,63,187,239); } set_timer("StartMstrVote", MSTRMGR_TIMER, 1); } public HandleMstrVoteRem(WinningOption,HLData,VoteCount,UserCount) { new Text[MAX_TEXT_LENGTH]; new strNumber[MAX_NUMBER_LENGTH]; new Ratio = MSTRMGR_REMRATIO; new strData[MAX_DATA_LENGTH]; convert_string(HLData, strData,MAX_DATA_LENGTH); if (VoteCount >= Ratio*UserCount/100) { if (WinningOption==1) { exec("monster_spawn 0"); centersay("Vote over. Removing monsters...",18,249,244,0); } else { centersay("Vote over. Monsters will not be removed.",18,63,187,239); } } else { numtostr(Ratio*UserCount/100,strNumber); snprintf(Text, MAX_TEXT_LENGTH, "Vote complete, but not enough votes for change (needed %s).", strNumber); centersay(Text,18,63,187,239); } set_timer("StartMstrVote", MSTRMGR_TIMER, 1); } public admin_mstrmgr_timer(HLCommand,HLData,HLUserName,UserIndex) { new User[MAX_NAME_LENGTH]; new Data[MAX_TEXT_LENGTH]; new Command[MAX_TEXT_LENGTH]; new strMessage[MAX_TEXT_LENGTH]; convert_string(HLUserName,User,MAX_NAME_LENGTH); convert_string(HLData,Data,MAX_NAME_LENGTH); convert_string(HLCommand,Command,MAX_NAME_LENGTH); if (strlen(Data) > 0) { MSTRMGR_TIMER = strtonum(Data); set_vaultdata("MSTRMGR_TIMER", Data); } snprintf(strMessage, MAX_TEXT_LENGTH, "[ADMIN] MSTRMGR duration is %d seconds", MSTRMGR_TIMER); selfmessage(strMessage); log_command(User, Command, Data); return PLUGIN_HANDLED; } public admin_mstrmgr_add(HLCommand,HLData,HLUserName,UserIndex) { new User[MAX_NAME_LENGTH]; new Data[MAX_TEXT_LENGTH]; new Command[MAX_TEXT_LENGTH]; new strMessage[MAX_TEXT_LENGTH]; convert_string(HLUserName,User,MAX_NAME_LENGTH); convert_string(HLData,Data,MAX_NAME_LENGTH); convert_string(HLCommand,Command,MAX_NAME_LENGTH); if (strlen(Data) > 0) { MSTRMGR_ADDRATIO = strtonum(Data); set_vaultdata("MSTRMGR_ADDRATIO", Data); } snprintf(strMessage, MAX_TEXT_LENGTH, "[ADMIN] MSTRMGR add ratio is %d percent", MSTRMGR_ADDRATIO); selfmessage(strMessage); log_command(User, Command, Data); return PLUGIN_HANDLED; } public admin_mstrmgr_rem(HLCommand,HLData,HLUserName,UserIndex) { new User[MAX_NAME_LENGTH]; new Data[MAX_TEXT_LENGTH]; new Command[MAX_TEXT_LENGTH]; new strMessage[MAX_TEXT_LENGTH]; convert_string(HLUserName,User,MAX_NAME_LENGTH); convert_string(HLData,Data,MAX_NAME_LENGTH); convert_string(HLCommand,Command,MAX_NAME_LENGTH); if (strlen(Data) > 0) { MSTRMGR_REMRATIO = strtonum(Data); set_vaultdata("MSTRMGR_REMRATIO", Data); } snprintf(strMessage, MAX_TEXT_LENGTH, "[ADMIN] MSTRMGR rem ratio is %d percent", MSTRMGR_REMRATIO); selfmessage(strMessage); log_command(User, Command, Data); return PLUGIN_HANDLED; } public admin_mstrmgr_spawn(HLCommand,HLData,HLUserName,UserIndex) { new User[MAX_NAME_LENGTH]; new Data[MAX_TEXT_LENGTH]; new Command[MAX_TEXT_LENGTH]; convert_string(HLUserName,User,MAX_NAME_LENGTH); convert_string(HLData,Data,MAX_NAME_LENGTH); convert_string(HLCommand,Command,MAX_NAME_LENGTH); if (strlen(Data) > 0) { if(check_param(Data)==1) { selfmessage("[ADMIN] Monster spawn on"); exec("monster_spawn 1"); } else { selfmessage("[ADMIN] Monster spawn off"); exec("monster_spawn 0"); } } log_command(User, Command, Data); return PLUGIN_HANDLED; } public plugin_init() { plugin_registerinfo("Monster Manager", "Manages Botman's MonsterMod", STRING_VERSION); plugin_registercmd("admin_mstrmgr_timer", "admin_mstrmgr_timer", ACCESS_MSTRMGR,"admin_mstrmgr_timer <seconds>: How often a vote will occur."); plugin_registercmd("admin_mstrmgr_add", "admin_mstrmgr_add", ACCESS_MSTRMGR,"admin_mstrmgr_add <number>: Percent required for an add vote to pass."); plugin_registercmd("admin_mstrmgr_rem", "admin_mstrmgr_rem", ACCESS_MSTRMGR,"admin_mstrmgr_rem <number>: Percent required for a remove vote to pass."); plugin_registercmd("admin_mstrmgr_spawn", "admin_mstrmgr_spawn", ACCESS_MSTRMGR,"admin_mstrmgr_spawn <^"on^" | ^"off^">: Turn monster spawn on or off."); new VaultData[MAX_DATA_LENGTH]; if(get_vaultdata("MSTRMGR_TIMER", VaultData, MAX_DATA_LENGTH) != 0) { MSTRMGR_TIMER = strtonum(VaultData); } else { MSTRMGR_TIMER = 600; set_vaultdata("MSTRMGR_TIMER", "600"); } if(get_vaultdata("MSTRMGR_ADDRATIO", VaultData, MAX_DATA_LENGTH) != 0) { MSTRMGR_ADDRATIO = strtonum(VaultData); } else { MSTRMGR_ADDRATIO = 50; set_vaultdata("MSTRMGR_ADDRATIO", "50"); } if(get_vaultdata("MSTRMGR_REMRATIO", VaultData, MAX_DATA_LENGTH) != 0) { MSTRMGR_REMRATIO = strtonum(VaultData); } else { MSTRMGR_REMRATIO = 50; set_vaultdata("MSTRMGR_REMRATIO", "50"); } set_timer("StartMstrVote", MSTRMGR_TIMER, 1); return PLUGIN_CONTINUE; }