Und wir gehen in die nächste Runde.
v1.1 wird jetzt vorgestellt. Wir haben die Bugs rausgenommen und es wird eine cwmapcycle.txt geschrieben und ausgeführt:
Code:
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
#define ACCESS_WAR 1024
new STRING_VERSION[MAX_DATA_LENGTH] = "1.1";
/******************************** WAR-SETTINGS ***************************************/
public admin_war_set(HLCommand,HLData,HLUserName,UserIndex)
{
new Command[MAX_COMMAND_LENGTH];
new Data[MAX_DATA_LENGTH];
new User[MAX_NAME_LENGTH];
new ClanTag1[MAX_NAME_LENGTH];
new ClanTag2[MAX_NAME_LENGTH];
new Map[MAX_NAME_LENGTH];
new Map2[MAX_NAME_LENGTH];
new Password[MAX_DATA_LENGTH];
new Warcfg[MAX_NAME_LENGTH];
new HLParam[MAX_NAME_LENGTH];
new maxplayers = maxplayercount();
new Target[MAX_NAME_LENGTH];
new i = 0;
new SessionID;
new WONID;
new Team;
new Text[MAX_TEXT_LENGTH];
new OldPassword[MAX_TEXT_LENGTH];
get_vaultdata("admin_password",Password,MAX_DATA_LENGTH);
if(strlen(Password)==0)
{
convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
convert_string(HLData,Data,MAX_DATA_LENGTH);
convert_string(HLUserName,User,MAX_NAME_LENGTH);
strsplit(Data," ",ClanTag1,MAX_NAME_LENGTH,ClanTag2,MAX_NAME_LENGTH,Password,MAX_DATA_LENGTH,Map,MAX_NAME_LENGTH,Map2,MAX_NAME_LENGTH,Warcfg,MAX_NAME_LENGTH);
/*-------- ÜBERPRÜFUNG, OB ALLE DATEN ANGEGEBEN WURDEN ------*/
if (strlen(ClanTag1) == 0)
{
selfmessage("Clantag 1 fehlt");
selfmessage("Befehl:admin_war_set <ClanTag1> <ClanTag2> <WAR-Password> <Map> <Map2> <war.cfg> ");
return PLUGIN_HANDLED;
}
if (strlen(ClanTag2) == 0)
{
selfmessage("Clantag 2 fehlt ...");
selfmessage("Befehl:admin_war_set <ClanTag1> <ClanTag2> <WAR-Password> <Map> <Map2> <war.cfg> ");
return PLUGIN_HANDLED;
}
if (strlen(Password) == 0 || strcmp(Password,"none")== 0)
{
selfmessage("Passwort fehlt oder falsch ...");
selfmessage("Befehl:admin_war_set <ClanTag1> <ClanTag2> <WAR-Password> <Map> <Map2> <war.cfg> ");
return PLUGIN_HANDLED;
}
if (strlen(Map) == 0 || strlen(Map2) == 0)
{
selfmessage("Mapangabe fehlt ...");
selfmessage("Befehl:admin_war_set <ClanTag1> <ClanTag2> <WAR-Password> <Map> <Map2> <war.cfg> ");
return PLUGIN_HANDLED;
}
if(valid_map(Map)!=1 && valid_map(Map2)!=1)
{
selfmessage("Mapname ungueltig...");
selfmessage("Befehl:admin_war_set <ClanTag1> <ClanTag2> <WAR-Password> <Map> <Map2> <war.cfg> ");
return PLUGIN_HANDLED;
}
if (fileexists(Warcfg) !=1 || strlen(Warcfg) == 0 || streq(Warcfg,"war.cfg") || streq(Warcfg,"server.cfg"))
{
selfmessage("Name der War.cfg fehlt ( Beispiel: espl.cfg ) oder File wird nicht gefunden ...");
selfmessage("Befehl:admin_war_set <ClanTag1> <ClanTag2> <WAR-Password> <Map> <Map2> <war.cfg> ");
return PLUGIN_HANDLED;
}
/*-------- ALLE LEUTE OHNE CLANTAG WERDEN GEKICKT UND BEI REST WIRD PASSWORT GESETZT ------*/
for(i=1; i<=maxplayers; i++)
{
if(playerinfo(i,Target,MAX_NAME_LENGTH,SessionID,WONID,Team)==1)
{
if (strstr(Target, ClanTag1) == -1 && strstr(Target, ClanTag2) == -1 && WONID != 1448)
{
if(check_immunity(Target)==0 && i != UserIndex)
{
message(Target, "Sorry, CW! Aber danke fuer das schnelle Disconnecten. ;p");
kick(Target);
}
}
}
}
/*-------- In die war.cfg wird die angegebene Regeln.cfg als Exec reingeschrieben ------*/
snprintf(Text,MAX_TEXT_LENGTH,"exec %s",Warcfg);
writefile("war.cfg",Text,-1);
writefile("war.cfg","vote_freq 1",-1);
writefile("war.cfg","admin_vote_echo 1",-1);
writefile("war.cfg","admin_vote_autostart 0",-1);
/*-------- PASSWORT SETZEN UND MAPCHANGE DURCHFÜHREN ------
Sperre, damit man nicht das ursprüngliche Server-Passwort
mit dem neu gesetzten Passwort, durch zweimal Aufrufen des
admin_warsettings,überschreibt.*/
getstrvar("sv_password",OldPassword,MAX_TEXT_LENGTH);
set_vaultdata("admin_oldpassword",OldPassword);
set_vaultdata("admin_password",Password);
snprintf(Text,MAX_TEXT_LENGTH,"sv_password %s",Password);
exec(Text);
snprintf(Text, MAX_TEXT_LENGTH, "Das Passwort ist jetzt ^"%s^". ^n Nextmap %s", Password,Map);
centersay(Text,10,255,40,44);
selfmessage(Text);
say_command(User,Command,Data);
/* Mapcyclefile anlegen*/
writefile("war.cfg","mapcyclefile cwmapcycle.txt",-1);
resetfile("cwmapcycle.txt");
writefile("cwmapcycle.txt",Map,-1);
writefile("cwmapcycle.txt",Map,-1);
writefile("cwmapcycle.txt",Map2,-1);
writefile("cwmapcycle.txt",Map2,-1);
set_timer("mapchange",13,1,HLParam=Map);
return PLUGIN_HANDLED;
}
selfmessage("In der vault.ini ist bereits ein Passwort gesetzt.");
selfmessage("Bitte admin_war_end ausfuehren, um diese Einstellungen zu loeschen.");
selfmessage("Danach admin_war_set erneut aufrufen.");
return PLUGIN_HANDLED;
}
public mapchange(Timer,Repeat,HLUser,HLParam)
{
new Map[MAX_NAME_LENGTH];
convert_string(HLParam,Map,MAX_NAME_LENGTH);
changelevel(Map,1);
return PLUGIN_CONTINUE;
}
/********************************************************************************/
/********************************** CW - START **********************************/
public admin_war_start(HLCommand,HLData,HLUserName,UserIndex)
{
new Clanname[MAX_NAME_LENGTH];
new Text[MAX_TEXT_LENGTH];
new dummy[10];
convert_string(HLData,Clanname,MAX_DATA_LENGTH);
if(strlen(Clanname) > 20)
{
selfmessage("der zu begruessender Clanname ist zu lang !! ...");
selfmessage("mach es was kuerzer...");
return PLUGIN_HANDLED;
}
if (strlen(Clanname) == 0) /*Soll es trotzdem Vote geben ohne Clanname anzugeben? */
{
snprintf(Text,MAX_TEXT_LENGTH,"Wenn alle die Frage,'Seid Ihr bereit' mit JA beantworten, ^n kommt 2 mal Restartround und los gehts.");
centersay(Text,30,68,255,125);
selfmessage("zu begruessender Clanname fehlt ...");
vote("Seid ihr bereit ?","Ja","Nein","HandleWarVote",dummy);
return PLUGIN_HANDLED;
}
snprintf(Text,MAX_TEXT_LENGTH,"Wir begruessen den Clan %s zum heutigen Clanwar^nWenn alle die Frage,'Seid Ihr bereit' mit JA beantworten, ^n kommt 2 mal Restartround und los gehts.",Clanname);
centersay(Text,30,68,255,125);
vote("Seid ihr bereit ?","Ja","Nein","HandleWarVote",dummy);
return PLUGIN_HANDLED;
}
public HandleWarVote(WinningOption,HLMap,VoteCount,UserCount) {
new Text[MAX_TEXT_LENGTH];
new VoteMap[MAX_DATA_LENGTH];
new Target[MAX_NAME_LENGTH];
new a=0;
new i;
new SessionID;
new WONID;
new Team;
new maxplayers = maxplayercount();
for(i=1; i<=maxplayers; i++)
{
if(playerinfo(i,Target,MAX_NAME_LENGTH,SessionID,WONID,Team)==1)
{
if (WONID == 1448)
{
a=1;
break;
}
}
}
convert_string(HLMap,VoteMap,MAX_DATA_LENGTH);
if (WinningOption == 1) {
if (VoteCount >= (UserCount-a)) {
snprintf(Text, MAX_TEXT_LENGTH, "Gut. Alle sind bereit.^nDann kann es ja nach 2 mal Restart Round losgehen.");
centersay(Text,10,68,255,125);
set_timer("Restart_Round",10,1);
set_timer("Restart_Round",13,1);
set_timer("War_Starts",15,1);
} else {
snprintf(Text, MAX_TEXT_LENGTH, "Es haben leider nicht alle mit JA geantwortet.^n Es muessen alle mit JA abstimmen, ^n um den CW zu starten.");
centersay(Text,10,255,40,44);
}
} else {
snprintf(Text, MAX_TEXT_LENGTH, "Es haben leider nicht alle mit JA geantwortet.^n Es muessen alle mit JA abstimmen, ^n um den CW zu starten.");
centersay(Text,10,255,40,44);
}
return PLUGIN_CONTINUE;
}
public Restart_Round(Timer,Repeat,HLUser,HLParam)
{
exec("sv_restartround 1");
return PLUGIN_CONTINUE;
}
public War_Starts(Timer,Repeat,HLUser,HLParam)
{
new Text[MAX_TEXT_LENGTH];
snprintf(Text,MAX_TEXT_LENGTH,"Und los gehts ! ^n Viel Glueck allen Beteiligten !");
centersay(Text,10,68,255,125);
return PLUGIN_CONTINUE;
}
/********************************************************************************/
/********************************** CW - END ************************************/
public admin_war_end(HLCommand,HLData,HLUserName,UserIndex)
{
new Text[MAX_TEXT_LENGTH];
new Password[MAX_TEXT_LENGTH];
get_vaultdata("admin_oldpassword",Password,MAX_TEXT_LENGTH);
if (strlen(Password)==0){
strcpy(Password,"none",MAX_TEXT_LENGTH);
}
set_vaultdata("admin_password","");
snprintf(Text,MAX_TEXT_LENGTH,"sv_password %s",Password);
exec(Text);
resetfile("war.cfg");
selfmessage("Die normalen Einstellungen werden nach einem Mapchange wiederhergestellt.");
snprintf(Text, MAX_TEXT_LENGTH, "Der War ist beendet.^n Vielen Dank an alle Beteiligten.");
centersay(Text,10,68,255,125);
return PLUGIN_HANDLED;
}
public plugin_init()
{
plugin_registerinfo("Clan War Creator","Kick everyone without clan tags and set a password on the server. After that comes the mapchange.",STRING_VERSION);
plugin_registercmd("admin_war_set","admin_war_set",ACCESS_WAR,"admin_war_set <ClanTag1> <ClanTag2> <WAR-Password> <Map> <Map2> <war.cfg>");
plugin_registercmd("admin_war_start","admin_war_start",ACCESS_WAR,"admin_war_start <Clanname>");
plugin_registercmd("admin_war_end","admin_war_end",ACCESS_WAR,"admin_war_end");
new Password[MAX_DATA_LENGTH];
new Text[MAX_TEXT_LENGTH];
get_vaultdata("admin_password",Password,MAX_DATA_LENGTH);
if(strlen(Password)!=0)
{
exec("say War-Password ist gesetzt!");
get_vaultdata("admin_password",Password,MAX_DATA_LENGTH);
snprintf(Text,MAX_TEXT_LENGTH,"sv_password %s",Password);
exec(Text);
}
return PLUGIN_CONTINUE;
}
Known Bugs:
- HLTV wird nicht im LAN erkannt!
- Sonstige Spectators neben dem HLTV machen bei der Funktion admin_war_start Probleme!
History:
v1.1:
Bugfixes:
- Das Passwort wird jetzt am Ende des Wars auf den alten Wert gesetzt (CS1.4-"Problem").
- Der HLTV wird beim Vote ausgeklammert. Gilt NICHT für zusätzliche Spectator
- In der espl.cfg wurde eine fehlende Zeile angefügt. (admin_plugin_file) Bitte updaten!
- Die README.txt wurde um die fehlende Information zum User-Recht erweitert. (1024)
Erweiterungen:
- Es wird jetzt eine cwmapcycle.txt geschrieben. Daher eine zusätzliche Variable beim admin_war_set. (<Map2>) Alle Upgrader bitte eine leere cwmapcycle.txt hochladen oder erstellen.
v1.0:
Erste offizielle Version!