Ein neues Thema erstellen  Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 105 Beiträge ]  Gehe zu Seite Vorherige 1 2 3 4 5 6
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 29.11.2003, 20:16 

Registriert: 09.10.2003, 22:01
Beiträge: 3
Hätte mir gern die neueste Version gezogen .... der download macht mir aber nur ne leere Seite auf ....

Gibts n aktuellen Link?

Thx PaC


Nach oben
   
 
 Betreff des Beitrags:
BeitragVerfasst: 29.11.2003, 21:15 
Benutzeravatar

Registriert: 31.05.2003, 09:16
Beiträge: 790
weiss nicht, ob das der aktuelle ist...
Code:
/*	LogD-Time-Manager
	WRITTEN BY: [WING] Sir Drink a lot
	visit www.adminmod.de

	BESCHREIBUNG: 	Berechnet die vergangene Zeit auf der Map.
			In einer command.ini werden die Befehle und Zeitpunkte
			festgelegt, welche dann entsprechend der Mapzeit (in Sekunden)
			ausgeführt werden sollen.

			In der command.ini immer mit dem höchsten Zeitwert beginnen!
			Seht euch die Beispiel command.ini an! Das Beispiel stellt
			ein 'Timeremaining' dar, wieviel Zeit noch auf der Map verbleiben.

			Es können aber auch automatisch ablaufende Tasklisten zu einer
			gewissen Mapzeit aufgerufen werden. Diese Tasklisten laufen dann,
			anhand ihrer Wartezeit und Wiederholung, völlig unabhängig zur
			Mapzeit. Ist die Wartezeit 0, dann wird der Befehl sofort ausgeführt.


	BEFEHLE:
	admin_tm_config 'filename':	Stoppt die Ausführung aller Tasks. Auch die mapzeitungebundenen Tasks.
					Wenn man einen Filenamen angibt, wird eine neue mapzeitgebundene Taskliste
					eingelesen.

	admin_tm_list:			Zeigt einem alle mapzeitgebundenen Tasks

	admin_tm_exectask 'Filename:	Ruft eine mapzeitungebunden Taskliste auf und führt die Tasks anhand
					der eingetragenen Wartezeit und Wiederholung aus. Ist die Wartezeit = 0
					wird der Befehl sofort ausgeführt.

	admin_tm_killtask 'TaskID/all':	Stoppt die Ausführung eines oder aller mapzeitungebundenen Tasks.

	admin_tm_showtask:		Zeigt einem eine Liste der mapzeitungebunden Tasks, die noch anhand ihrer
					eingetragenen Wartezeiten und Wiederholungen anstehen.


	!!!!HINWEIS/Important Notice!!!!

	Ich übernehme keine Verantwortung dafür, was ihr in eure command.ini schreibt
	und was dann passiert, wenn dieser Befehl ausgeführt wird.
	Wenn Ihr z.B. irgendwelche rcon Befehle benutzt oder einfach nur 'quit'.
	Am Besten lasst ihr nur Adminmod Plugins ausführen.

	You can not hold me responsible for your mistakes.  For example, if you set
	rcon_password or quit in your command.ini then it is YOUR problem.  The
   	defaults should be quite secure....

	---Changelog---
	26.12.02:	- admin_tm_killtask 'TaskID' ermöglicht, eine oder alle mapzeitungebunden
			  Tasks zu beenden. Wenn man einen bestimmten mapzeitungebunden Task abbrechen
			  will, kann man mit admin_tm_showtask alle noch ausstehenden Tasks einsehen
			  und die TaskID herrausfinden.

	23.12.02:	- Man kann automatische nicht mapzeitgebundene Tasklisten anlegen
			  und diese mit admin_tm_exectask 'filename' aufrufen und ausführen
			  lassen.
			- Mit admin_tm_config 'filename' kann man die mapzeitgebundene Taskliste
			  jederzeit ändern.

	20.12.02:	- Man kann den Namen der auszuführenden mapzeitgebundenen Taskliste
			  in der vault.ini mit 'TM_LIST' festlegen.

	19.12.02:	- AMX Error 10 sollte nicht mehr kommen
			- Bug in filesize() von [WING] Black Knight gefunden. Benutze seinen FIX.
			- Man kann mit '//' Zeilen auskommentieren
			- Versucht, negative Wartezeiten direkt zu korrigieren

	18.12.02:	- beta version
			- liest die Befehle aus der command.ini und führt sie zu den
			  angegebenen Zeitpunkten aus.
			- In einer Sekunde kann nur ein Befehl ausgeführt werden
			- Mit den höchsten Zeitwerten beginnen
*/

#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

#define ACCESS_CONSOLE 131072

new STRING_VERSION[MAX_DATA_LENGTH] = "20.12.02";
new TextFileDir[MAX_TEXT_LENGTH]="addons/adminmod/config/";
new TextFile[MAX_TEXT_LENGTH];
/*Definiert, wieviele Zeilen der command.ini ausgewertet werden*/
#define MAX_LINE 100
#define MAX_TASKS 100

new GameCommencing;
new checktime;
new origtimelimit;
new timer;
new tm_pointer;
new tm_line;
new Execute[MAX_LINE][MAX_DATA_LENGTH];
new Time[MAX_LINE][MAX_NUMBER_LENGTH];

/*For executing tasks whith timer*/
new TaskTimer[MAX_TASKS][MAX_DATA_LENGTH];

public admin_tm_list(HLCommand,HLData,HLUserName,UserIndex){
	new Text[MAX_TEXT_LENGTH];
	new User[MAX_NAME_LENGTH];
        new a;
        new i;
        new time;

        convert_string(HLUserName,User,MAX_NAME_LENGTH);
      	time = (origtimelimit-(systemtime()-checktime));

      	selfmessage("");
      	selfmessage("--- TIME-MANAGER: MAPZEIT GEBUNDENE TASKLISTE ---");
      	selfmessage("");
      	selfmessage("ZEIT -- BEFEHL");
      	for(i=0;i<tm_line;i++){
      		snprintf(Text,MAX_TEXT_LENGTH,"%s --- %s",Time[i],Execute[i]);
      		strcpy(Text,Text,98);
      		selfmessage(Text);
      	}
      	selfmessage("");
      	selfmessage("------------------------------------");
      	selfmessage("");
      	snprintf(Text,MAX_TEXT_LENGTH,"Verbleibende Zeit: %i sec",time);
      	selfmessage(Text);
      	a=time-strtonum(Time[tm_pointer]);
      	snprintf(Text,MAX_TEXT_LENGTH,"Naechster Befehl in %d Sekunden:",a);
      	selfmessage(Text);
	snprintf(Text,MAX_TEXT_LENGTH,"%s --- %s ",Time[tm_pointer],Execute[tm_pointer]);
      	strcpy(Text,Text,98);
      	selfmessage(Text);
      	selfmessage("");
      	if(a<0 || getvar("mp_timelimit")*60+2 != origtimelimit){
               	checktime = systemtime()-(systemtime()- checktime);
                selfmessage("[TIME-MANAGER] Negative Wartezeit! Versuche es anzupassen!");
                origtimelimit= getvar("mp_timelimit")*60+2;
                kill_timer(timer);
                tm_pointer=0;
                timer=set_timer("tm_warn",1,0);
        }
      	selfmessage("------------------------------------");
      	return PLUGIN_HANDLED;
}

public admin_tm_config(HLCommand,HLData,HLUserName,UserIndex){

	new Data[MAX_DATA_LENGTH];
	new i;
	convert_string(HLData,Data,MAX_DATA_LENGTH);

	set_vaultdata("TM_FILE",Data);
	checktime = systemtime()-(systemtime()- checktime);
        origtimelimit= getvar("mp_timelimit")*60+2;
        if(timer!=0){
        	kill_timer(timer);
        }
        for(i=0;i<=MAX_TASKS;i++){
        	if(strlen(TaskTimer[i])!=0){
        		kill_timer(i);
        		strcpy(TaskTimer[i],"",MAX_DATA_LENGTH);
        	}
        }
        timer=0;
        tm_pointer=0;
	tm_line=0;
	if(strlen(Data)!=0){
        	read_file();
        }
        return PLUGIN_HANDLED;
}

public admin_tm_exectask(HLCommand,HLData,HLUserName,UserIndex){

	new FileName[MAX_DATA_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new WaitTime[MAX_NUMBER_LENGTH];
	new Repeat[MAX_NUMBER_LENGTH];
	new ReadCommand[MAX_DATA_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	new iTaskTimer;
	new iTime;
	new iRepeat;
	new i;
	new iLine;

	convert_string(HLData,FileName,MAX_DATA_LENGTH);

	snprintf(FileName,MAX_DATA_LENGTH,"%s%s",TextFileDir,FileName);
	if(fileexists(FileName)){
		iLine=realfilesize(FileName);
		if(iLine>MAX_LINE){
			iLine=MAX_LINE;
		}
		for(i=1;i<=iLine;i++){
			readfile(FileName,Data,i,MAX_DATA_LENGTH);
			if(strlen(Data)!=0 && strcmp(Data,"")!=0 && strncmp(Data,"/",1)!= 0){
        			strsep(Data," ",WaitTime,MAX_NUMBER_LENGTH,Repeat,MAX_NUMBER_LENGTH,ReadCommand,MAX_DATA_LENGTH);
        			iTime=strtonum(WaitTime);
        			if(iTime==0){
        				execute(ReadCommand);
			        }else{
			        	iRepeat=strtonum(Repeat);
			        	iTaskTimer=set_timer("tm_exectask",iTime,iRepeat);
			        	strcpy(TaskTimer[iTaskTimer],ReadCommand,MAX_DATA_LENGTH);
			        }
        		}
        	}
        }else{
        	snprintf(Text,MAX_TEXT_LENGTH,"[TIME-MANAGER] Kann mapzeitungebunde Taskliste %s nicht finden!!!",FileName);
        	selfmessage(Text);
        }
        return PLUGIN_HANDLED;
}

public tm_exectask(Timer,Repeat,HLUser,HLParam){
	new Data[MAX_DATA_LENGTH];
	if (getvar("mp_timelimit")*60+2 != origtimelimit){
		checktime = systemtime()-(systemtime()- checktime);
                origtimelimit= getvar("mp_timelimit")*60+2;
                tm_killtask("all");
        	selfmessage("[TIME-MANAGER] mp_timelimit hat sich veraendert!");
        	if(timer!=0){
                 	kill_timer(timer);
                }
                tm_pointer=0;
                timer=set_timer("tm_warn",1,0);
        }else{
		strcpy(Data,TaskTimer[Timer],MAX_DATA_LENGTH);
		execute(Data);
		strcpy(TaskTimer[Timer],"",MAX_DATA_LENGTH);
	}
        return PLUGIN_CONTINUE;
}

public admin_tm_killtask(HLCommand,HLData,HLUserName,UserIndex){
	new Data[MAX_DATA_LENGTH];
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	tm_killtask(Data);
	return PLUGIN_HANDLED;
}

tm_killtask(Data[]){
	new iData;
	new i;
	iData=strtonum(Data);

	if(strcmp(Data,"all")==0){
		for(i=0;i<=MAX_TASKS;i++){
        		if(strlen(TaskTimer[i])!=0){
        			kill_timer(i);
        			strcpy(TaskTimer[i],"",MAX_DATA_LENGTH);
        		}
        	}
        	selfmessage("[TIME-MANAGER] Alle mapzeitungebunden Tasks sind abgebrochen!");
        }else{
		if(strlen(TaskTimer[iData])!=0){
			kill_timer(iData);
			strcpy(TaskTimer[iData],"",MAX_DATA_LENGTH);
			selfmessage("[TIME-MANAGER] Mapzeitungebundener Task ist abgebrochen!");
		}else{
			selfmessage("[TIME-MANAGER] Kann die ID des mapzeitungebunden Tasks nicht finden!");
		}
	}
	return PLUGIN_HANDLED;
}
public admin_tm_showtask(HLCommand,HLData,HLUserName,UserIndex){
	new Text[MAX_TEXT_LENGTH];
	new i;
	new NumTaskTimer;
	selfmessage("");
      	selfmessage("--- TIME-MANAGER: MAPZEIT UNGEBUNDENE TASKLISTE ---");
      	selfmessage("");
      	selfmessage("ID -- COMMAND");
      	selfmessage("");
	for(i=0;i<=MAX_TASKS;i++){
	        if(strlen(TaskTimer[i])!=0){
	        	snprintf(Text,MAX_TEXT_LENGTH,"%i. %s",i,TaskTimer[i]);
	        	strcpy(Text,Text,98);
	        	selfmessage(Text);
	        	NumTaskTimer++;
	        }
	}
	selfmessage("");
	snprintf(Text,MAX_TEXT_LENGTH,"Anzahl der laufenden Tasks: %i",NumTaskTimer);
      	selfmessage(Text);
      	selfmessage("");
      	selfmessage("--------------------------------------------");
	return PLUGIN_HANDLED;
}

public tm_welt(HLCommand,HLData,HLUserName,UserIndex){
        new Data [MAX_DATA_LENGTH];
        new x[MAX_DATA_LENGTH];
        new dummy[MAX_DATA_LENGTH];
        new z;
        new a;
        new time;

        convert_string( HLData, Data, MAX_DATA_LENGTH );

        strsplit(Data,"_",x,MAX_DATA_LENGTH,dummy,MAX_DATA_LENGTH);

        if(strcmp(x,"Game")==0 && GameCommencing == 0){
                GameCommencing = 1;
                checktime =systemtime();
                z=1;
        }else if(strcmp(x,"Restart")==0){
                checktime = systemtime();
                z=1;
        }else if(strcmp(x,"Round")==0){
                if (getvar("mp_timelimit")*60+2 != origtimelimit){
                        checktime = systemtime()-(systemtime()- checktime);
                        z=1;
                }
                time = (origtimelimit-(systemtime()-checktime));
                a=time-strtonum(Time[tm_pointer]);
                if(a<0){
                	checktime = systemtime()-(systemtime()- checktime);
                	selfmessage("[TIME-MANAGER] Negative Wartezeit! Versuche es anzupassen!");
                	z=1;
                }
        }
        if(z==1){
        	 origtimelimit= getvar("mp_timelimit")*60+2;
        	 tm_killtask("all");
        	 if(timer!=0){
                 	kill_timer(timer);
                 }
                 tm_pointer=0;
                 timer=set_timer("tm_warn",1,0);
       	}
        return PLUGIN_CONTINUE;
}
public tm_warn(Timer,Repeat,HLUser,HLParam){
	new Text[MAX_TEXT_LENGTH];
        new a;
        new i;
        new time;
        new iTime;
        new iTime2;

        if (getvar("mp_timelimit")*60+2 != origtimelimit){
        	snprintf(Text,MAX_TEXT_LENGTH,"[TIME-MANAGER] mp_timelimit hat sich veraendert!");
        	selfmessage(Text);
        	checktime = systemtime()-(systemtime()- checktime);
                origtimelimit= getvar("mp_timelimit")*60+2;
                tm_pointer=0;
                tm_killtask("all");
        }

        time = (origtimelimit-(systemtime()-checktime));
        iTime=strtonum(Time[tm_pointer]);
        if(time==iTime){
        	execute(Execute[tm_pointer]);
        	tm_pointer++;
        	iTime=strtonum(Time[tm_pointer]);
        }
        if(iTime !=0){
        	a = time - iTime;
        	/*wenn die Mapzeit < als die Zeitangabe aus der command.ini ist, andere Zeit-
        	angabe mit Befehl suchen, die noch innerhalb der Mapzeit ausgeführt werden
        	kann */
        	if(a<=0){
        		for(i=0;i<=tm_line;i++){
        			iTime2=strtonum(Time[i]);
        			if(time>iTime2){
        				a = time - iTime2;
        				tm_pointer=i;
        				break;
        			}else{
        				tm_pointer=i;
        			}
        		}
        	}
        	timer=set_timer("tm_warn",a,0);
        	snprintf(Text,MAX_TEXT_LENGTH,"[TIME-MANAGER] Naechster Befehl in %d Sekunden:'%s'",a,Execute[tm_pointer]);
        	strcpy(Text,Text,98);
        	selfmessage(Text);
        }else{
        	snprintf(Text,MAX_TEXT_LENGTH,"[TIME-MANAGER] %d mapzeitgebunden Befehle ausgefuehrt. Ende!",tm_pointer);
        	selfmessage(Text);
        }
        return PLUGIN_CONTINUE;
}

execute(Data[]){
	new Command[MAX_DATA_LENGTH];
	new Param[MAX_DATA_LENGTH];

	if(strncmp(Data,"admin_",6)==0){
		strsep(Data," ",Command,MAX_DATA_LENGTH,Param,MAX_DATA_LENGTH);
		plugin_exec(Command,Param);
	}else{
		exec(Data);
	}
	return PLUGIN_CONTINUE;
}

read_file(){
	new Text[MAX_TEXT_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new File[MAX_DATA_LENGTH];
	new iLine;
	new i;

        get_vaultdata("TM_FILE",File,MAX_TEXT_LENGTH);
        strcpy(TextFile,TextFileDir,MAX_DATA_LENGTH);
        strcat(TextFile,File,MAX_DATA_LENGTH);

	if(fileexists(TextFile)){
		iLine=realfilesize(TextFile);
		if(iLine>MAX_LINE){
				iLine=MAX_LINE;
		}
		for(i=1;i<=iLine;i++){
			readfile(TextFile,Data,i,MAX_DATA_LENGTH);
			if(strlen(Data)!=0 && strcmp(Data,"")!=0 && strncmp(Data,"/",1)!= 0){
        			strsep(Data," ",Time[tm_line],MAX_NUMBER_LENGTH,Execute[tm_line],MAX_DATA_LENGTH);
        			tm_line++;
        		}
        	}
        	snprintf(Text,MAX_TEXT_LENGTH,"[TIME-MANAGER] %i mapzeitgebundene Befehle von %s eingelesen",tm_line,TextFile);
        	selfmessage(Text);
        	timer=set_timer("tm_warn",1, 0);
        }else{
        	snprintf(Text,MAX_TEXT_LENGTH,"[TIME-MANAGER] Finde %s nicht!!!!",TextFile);
        	selfmessage(Text);
        }
	return PLUGIN_CONTINUE;
}

/*19.12.02: workaround von Blacky, um die korrekte Filegröße zu ermitteln*/
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;
}
public plugin_init(){
        plugin_registerinfo("LogD-Time-Manager","Executing commands within maptime",STRING_VERSION);
        plugin_registercmd("tm_welt", "tm_welt", ACCESS_CONSOLE);
        plugin_registercmd("admin_tm_list", "admin_tm_list", ACCESS_MAP,"admin_tm_list: Zeigt eine Liste der Tasks, die anhand der Mapzeit gesteuert sind");
        plugin_registercmd("admin_tm_config", "admin_tm_config", ACCESS_MAP,"admin_tm_config <0/filename>: Stoppt die anhand der Mapzeit gesteuerten Tasks");
        plugin_registercmd("admin_tm_exectask","admin_tm_exectask",ACCESS_MAP,"admin_tm_exectask <filename>: Lädt eine Taskliste, die automatisch mit Timern gesteuert wird");
        plugin_registercmd("admin_tm_killtask","admin_tm_killtask",ACCESS_MAP,"admin_tm_killtask <ID/all>: Stoppt die Ausführung der Tasks, die automatisch mit Timern gesteuert werden.");
        plugin_registercmd("admin_tm_showtask","admin_tm_showtask",ACCESS_MAP,"admin_tm_showtask : Zeigt die Taskliste, die automatisch mit Timern gesteuert werden.");
        exec("logd_reg 62 admin_command tm_welt");
        read_file();
        checktime =systemtime();
        origtimelimit = getvar("mp_timelimit")*60+2;
        return PLUGIN_CONTINUE;
}


Nach oben
   
 
 Betreff des Beitrags:
BeitragVerfasst: 30.11.2003, 13:54 

Registriert: 09.10.2003, 22:01
Beiträge: 3
Dann thx erstmal ...

Ich hoff das ich das hinkriege. Bin noch n ziemlicher noob in sachen server konfiguration .... wenn nicht dann muss ich evtl hier noch n bissl nerven :)

Gruß PaC


Nach oben
   
 
 Betreff des Beitrags:
BeitragVerfasst: 30.11.2003, 14:42 
Benutzeravatar

Registriert: 31.05.2003, 09:16
Beiträge: 790
ja, lies dir den code durch - das hilft schon sehr... und auch den gesamten tread...


Nach oben
   
 
 Betreff des Beitrags:
BeitragVerfasst: 30.11.2003, 15:40 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ich müsste es endlich mal überarbeiten...

leider kommen beim Kompilieren einige Warnmeldungen, da ich iTime verwende, was auch in den Include Dateien verwendet wird.
Ist aber nur eine Warnung und kein Error.

_________________
Fehleranalyse: Poste den Inhalt Deiner liblist.gam, (listen)server.cfg, adminmod.cfg, users.ini, vault.ini, plugin.ini von adminmod und plugins.ini von metamod. Benutze auch die Such-Funktion


Nach oben
   
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 105 Beiträge ]  Gehe zu Seite Vorherige 1 2 3 4 5 6


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de
Original Design von "[ Half-Life Admin Mod © Alfred Reynolds 2000-2003 ] - [ site design by Jägermeister ]"