So vielen lieben Dank
habe mir jetzt trotz der bekannten Risiken einen Befehl geschaffen, damit meine metamod.ini komplett geändert wird.
da ist der Quelltext mit serverrestart (startet bei ngz selbstätig neu)
könnt ja noch Verbesserungen vorschlagen damit der Server nich doch abkachelt.
Wo ichs grad sehe, wozu setze ich eigendlich vaultdata? naja so ist es wenn man mit programmschnipseln arbeitet
(nachtrag, das war um mit dem Befehl den Status überprüfen zu können)
für das ermitteln der filegröße wusst ich grad nix besseres als die Variante unten
Code:
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
#define ACCESS_SERVER_RESTART 1024
#define inhalt 200
new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.0";
//new timer_say = 0;
new pluginwar[MAX_TEXT_LENGTH]="addons/metamod/pluginwar.cfg";
new pluginall[MAX_TEXT_LENGTH]="addons/metamod/pluginall.cfg";
new metamodini[MAX_TEXT_LENGTH]="addons/metamod/plugins.ini";
new zeile[inhalt][MAX_TEXT_LENGTH];
new iall;
new iwar;
public plugin_init()
{
plugin_registerinfo("Metamod Plugins Load", "Change Plugins load", STRING_VERSION);
plugin_registercmd("admin_loadall","admin_loadall",ACCESS_KICK,"admin_loadall: admin_loadall <0/1> Load all metamod plugins on/off");
plugin_registercmd("admin_restartserver","admin_restartserver",ACCESS_SERVER_RESTART,"admin_restartserver: server restart in 20 seconds");
return PLUGIN_CONTINUE;
}
public admin_restartserver(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);
log_command(User,Command,Data);
say("Der Server wird in 20 Sekunden restartet");
say("Der Server wird in 20 Sekunden restartet");
say("........ Gleich startet ein War ........");
say("........ Gleich startet ein War ........");
say("Der Server wird in 20 Sekunden restartet");
say("Der Server wird in 20 Sekunden restartet");
say(". . . Umkonfigurierung des Servers . . .");
say(". . . Umkonfigurierung des Servers . . .");
say("Der Server wird in 20 Sekunden restartet");
say("Der Server wird in 20 Sekunden restartet");
set_timer("server_restart",20,0);
}
public server_restart(Timer,Repeat,HLUser){
exec("quit");
exec("exit");
exec("quit");
}
public admin_loadall(HLCommand,HLData,HLUserName,UserIndex) {
new Command[MAX_COMMAND_LENGTH];
new Data[MAX_DATA_LENGTH];
new User[MAX_NAME_LENGTH];
new Text[MAX_TEXT_LENGTH];
new i;
new j;
convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
convert_string(HLData,Data,MAX_DATA_LENGTH);
convert_string(HLUserName,User,MAX_NAME_LENGTH);
log_command(User,Command,Data);
if(streq(Data,"1") == 1) {
if ( fileexists(pluginall) ) {
j=realfilesize(pluginall);
if(j>1) {
resetfile(metamodini);
if(j>99){
j=99;
}
for(i=1;i<=j;i++){
readfile(pluginall,zeile[i],i,MAX_TEXT_LENGTH);
writefile(metamodini,zeile[i],-1);
iall++;
}
snprintf(Text,MAX_TEXT_LENGTH,"[Metamod.ini] Es wurden %i Zeilen geschrieben",iall);
selfmessage(Text);
selfmessage("- Public settings -");
selfmessage("=====================");
selfmessage("Alle Metamod- und Adminmodplugins werden geladen.");
selfmessage("Damit der Server mit den neuen Einstellungen laeuft");
selfmessage("...");
selfmessage("admin_restartserver ausfuehren");
set_vaultdata("loadall","1");
}
} else {
snprintf(Text, MAX_TEXT_LENGTH, "Warnung: %s wurde nicht gefunden oder ist leer. !!! Abbruch !!!",pluginall);
selfmessage(Text);
}
}
else if(streq(Data,"0") == 1) {
if ( fileexists(pluginwar) ) {
j=realfilesize(pluginwar);
if(j>1) {
resetfile(metamodini);
if(j>99){
j=99;
}
for(i=1;i<=j;i++){
readfile(pluginwar,zeile[i],i,MAX_TEXT_LENGTH);
writefile(metamodini,zeile[i],-1);
iwar++;
}
snprintf(Text,MAX_TEXT_LENGTH,"[Metamod.ini] Es wurden %i Zeilen geschrieben",iwar);
selfmessage(Text);
selfmessage("- War settings -");
selfmessage("=====================");
selfmessage("Es werden nicht alle Metamod- und Adminmod Plugins geladen.");
selfmessage("Damit der Server mit den neuen Einstellungen laeuft");
selfmessage("...");
selfmessage("admin_restartserver ausfuehren");
set_vaultdata("loadall","0");
}
} else {
snprintf(Text, MAX_TEXT_LENGTH, "Warnung: %s wurde nicht gefunden oder ist leer. !!! Abbruch !!!",pluginwar);
selfmessage(Text);
}
} else {
new loadwert[MAX_DATA_LENGTH];
get_vaultdata("loadall",loadwert,MAX_DATA_LENGTH);
snprintf(Text, MAX_TEXT_LENGTH, "admin_loadall need 0 off / or 1 on --- set is %s",loadwert);
selfmessage(Text);
}
return PLUGIN_HANDLED;
}
realfilesize(fname[]){
new sizeoffile;
new sizeoffile2;
new i;
new string[MAX_DATA_LENGTH];
sizeoffile=filesize(fname,1);
sizeoffile2=sizeoffile;
for(i=1; i<=sizeoffile2; i++) {
readfile(fname,string,i,MAX_DATA_LENGTH);
if(strlen(string)>98){
sizeoffile-=1;
}
if(sizeoffile==i){
break;
}
}
return sizeoffile;
}