ich nenne es...plugin_stetze_nextmap_new
Code:
/*********************************************************
* A extendmap-vote plugin - Version 2.50.51 *
*********************************************************
* *
* Name: plugin_stetze_nextmap_new *
* Author: Stetze (Updated by Rinde) *
* Released: 04/02/03 *
* *
* *
* Commands: *
* *
* admin_vote_nextmap *
* admin_vote_maxextend *
* admin_vote_autostart *
* *
* CVARS: *
* *
* admin_vote_maxextend *
* admin_vote_autostart *
* *
*********************************************************/
/* Includes */
#include <plugin>
#include <adminlib>
/* Constants */
#define ACCESS_NEXTMAP_VOTE 1
#define ACCESS_CONTROL_VOTE 2
#define MAX_MAP_LENGTH 50
/* Global Variables */
new g_Version[50] = "2.50.51";
new g_Extendcount;
new g_Extendtime;
/* Function Declarations */
forward StartNextMapVote(Timer,Repeat,HLUser,HLParam);
forward HandleNextMapVote(WinningOption,HLParam,VoteCount,UserCount);
forward VoteMaxextend(HLCommand,HLData,HLUserName,UserIndex);
forward VoteAutostart(HLCommand,HLData,HLUserName,UserIndex);
forward VoteNextmap(HLCommand,HLData,HLUserName,UserIndex);
/* Event Handlers */
public plugin_init() {
plugin_registerinfo("NextMap voting plugin by stetze","Enables Voting for Nextmap or extend - visit www.adminmod.de 4 more!",g_Version);
plugin_registercmd("admin_vote_nextmap","VoteNextmap",ACCESS_NEXTMAP_VOTE,"admin_vote_nextmap: Starts Voting for next map or extend the current map.");
plugin_registercmd("admin_vote_maxextend","VoteMaxextend",ACCESS_CONTROL_VOTE,"admin_vote_maxextend <#>: Sets how often a map can be extended.");
plugin_registercmd("admin_vote_autostart","VoteAutostart",ACCESS_CONTROL_VOTE,"admin_vote_autostart <1|0>: Enables auto-starting of extend map vote.");
if(getvar("admin_vote_autostart") == 1) {
set_timer("StartNextMapVote",timeleft(0) - 120,0);
}
g_Extendtime = getvar("mp_timelimit");
return PLUGIN_CONTINUE;
}
public StartNextMapVote(Timer,Repeat,HLUser,HLParam) {
new Text[MAX_TEXT_LENGTH];
new sNextMap[MAX_MAP_LENGTH];
if(vote_allowed() == 0) {
set_timer("StartNextMapVote",10,0);
} else if(g_Extendcount < getvar("admin_vote_maxextend") || getvar("admin_vote_maxextend") == 0) {
nextmap(sNextMap,MAX_MAP_LENGTH);
if(valid_map(sNextMap) == 1) {
snprintf(Text,MAX_TEXT_LENGTH,"Change to %s or extend current map?",sNextMap);
vote(Text,"Change","Extend","HandleNextMapVote",sNextMap);
} else {
say("Oops, Nextmap-Voting failed!");
}
}
return PLUGIN_HANDLED;
}
public HandleNextMapVote(WinningOption,HLParam,VoteCount,UserCount) {
new Text[MAX_TEXT_LENGTH];
new VoteMap[MAX_MAP_LENGTH];
new strTime[MAX_NUMBER_LENGTH];
new ratio;
convert_string(HLParam,VoteMap,MAX_MAP_LENGTH);
if(WinningOption == 1) {
ratio = getvar("map_ratio")*UserCount/100;
if(VoteCount >= ratio) {
snprintf(Text,MAX_TEXT_LENGTH,"Changing map to %s due to vote.",VoteMap);
say(Text);
setstrvar("mp_timelimit","0.1");
} else {
snprintf(Text,MAX_TEXT_LENGTH,"Next map vote succeeded, but not enough votes for change (needed %i)",ratio);
say(Text);
}
} else if(WinningOption == 2) {
snprintf(Text,MAX_TEXT_LENGTH,"Nextmap vote over. Current map will be extended for %i minutes.",g_Extendtime);
say(Text);
g_Extendcount++;
numtostr(getvar("mp_timelimit") + g_Extendtime,strTime);
setstrvar("mp_timelimit",strTime);
if(getvar("admin_vote_autostart") == 1) {
set_timer("StartNextMapVote",timeleft(0) + g_Extendtime * 60 - getvar("amv_vote_duration"),0);
}
} else {
say("Next Map vote failed.");
}
}
/* Command Handlers */
public VoteMaxextend(HLCommand,HLData,HLUserName,UserIndex) {
new Command[MAX_COMMAND_LENGTH];
new Data[MAX_DATA_LENGTH];
new User[MAX_NAME_LENGTH];
convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
convert_string(HLData,Data,MAX_DATA_LENGTH);
convert_string(HLUserName,User,MAX_NAME_LENGTH);
setstrvar("admin_vote_maxextend",Data);
say_command(User,Command,Data);
return PLUGIN_HANDLED;
}
public VoteAutostart(HLCommand,HLData,HLUserName,UserIndex) {
new Command[MAX_COMMAND_LENGTH];
new Data[MAX_DATA_LENGTH];
new User[MAX_NAME_LENGTH];
convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
convert_string(HLData,Data,MAX_DATA_LENGTH);
convert_string(HLUserName,User,MAX_NAME_LENGTH);
setstrvar("admin_vote_autostart",Data);
say_command(User,Command,Data);
return PLUGIN_HANDLED;
}
public VoteNextmap(HLCommand,HLData,HLUserName,UserIndex) {
new Command[MAX_COMMAND_LENGTH];
new User[MAX_NAME_LENGTH];
new Text[MAX_TEXT_LENGTH];
new sNextMap[MAX_MAP_LENGTH];
if(vote_allowed() == 0) {
selfmessage("Vote not allowed at this time.");
} else {
nextmap(sNextMap,30);
if(valid_map(sNextMap) == 1) {
convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
convert_string(HLUserName,User,MAX_NAME_LENGTH);
say_command(User,Command,sNextMap);
snprintf(Text,MAX_TEXT_LENGTH,"Change to %s or extend current map?",sNextMap);
vote(Text,"Change","Extend","HandleNextMapVote",sNextMap);
} else {
say("Oops, Nextmap-Voting failed!");
}
}
return PLUGIN_HANDLED;
}