AdminMod.de
https://www.adminmod.de/

Ein universales Plugin
https://www.adminmod.de/viewtopic.php?t=8580
Seite 1 von 1

Autor:  loser [ 13.05.2004, 15:22 ]
Betreff des Beitrags:  Ein universales Plugin

Ich wollte ein universales Plugin schreiben, doch leider funktioniert der zweite Teil nicht. HL kann nicht zwischen den Namen und den Befehl entscheiden. Der Quellcode sieht folgendermaßen aus:
Code:
/* All commands for Server and Client */
/*$Id: plugin_loser_do.sma,v 1.0 4/14/2004 player ICQ: 172913668 Exp $*/

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


#define ACCESS_DO 131071
#define ACCESS_DOTARGET 65023

new STRING_VERSION[MAX_DATA_LENGTH] = "2.51.00"; 

public admin_dotarget(HLCommand,HLData,HLUserName,UserIndex) { 
	new Command[MAX_COMMAND_LENGTH]; 
	new Data[MAX_DATA_LENGTH]; 
	new User[MAX_NAME_LENGTH];
	new target_user[MAX_DATA_LENGTH];

	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	if (check_user(target_user) == 1) {
		new real_user[MAX_NAME_LENGTH];
		get_username(target_user,real_user,MAX_NAME_LENGTH);
		say_command(User,Command,real_user);
		execclient(real_user, Data);
	} else {
		selfmessage("Unrecognized player: ");
		selfmessage(Data);
	}	
	return PLUGIN_HANDLED; 
} 



public admin_do(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);
	execute_command(User,Command,"",Data);
	return PLUGIN_HANDLED;
}

	
public plugin_init() { 
	plugin_registerinfo("All DoD commands","Also do commands on a players HL.",STRING_VERSION); 

	plugin_registercmd("admin_dotarget","admin_dotarget",ACCESS_DO,"admin_dotarget <target> [<data>]: Let you execute commands on the targets HL."); 
	plugin_registercmd("admin_do","admin_do",ACCESS_DOTARGET,"admin_do <data>:  execute every server command on server(for example: exit");
		
	
	return PLUGIN_CONTINUE;
}
*Code tags bitte beim nächsten Mal nicht vergessen (Sir D.)*

Autor:  Sir Drink a lot [ 13.05.2004, 16:35 ]
Betreff des Beitrags: 

nun...kurze Erklärung über das Daten Handling:

lass Dir einfach mal nach dem convert_string den Command, die Data und den User als selfmessage ausgeben.
Das lässt erkennen, welche Daten an diese Funktion geliefert werden.

Denn es ist nämlich so, dass
im Command z.B. 'admin_dotarget' steht,
in der Data steht der 'Befehl der ausgeführt werden soll' 'Zielperson'
im User steht der Name des Admins, der den admin_ Befehl abgesendet hat.
im UserIndex steht der UserIndex des Admins, der den admin_ Befehl abgesendet hat.

Mit diesem Wissen muss man jetzt einfach arbeiten :)
Es gilt also Hauptsächlich die Data auszuwerten!! In dem Fall müsste man die Data in die 2 Teile trennen (z.B. mit Befehlen aus der string.inc).

Ich hoffe, das der Ansatz Dir weiterhilft :)

*P.S.: das z.B. strbreak(Data,auszuführendeBefehl,Target,MAX_DATA_LENGTH); sollte auch in admin_dotarget eingebaut werden, da diese Funktion so auch nicht funktioniert :)

Autor:  Rinde [ 14.05.2004, 13:05 ]
Betreff des Beitrags: 

keiner benutzt hier strbreak. marco, wie oft muss ich dir noch sagen dass du strsep verwenden sollst?

Autor:  daRope [ 14.05.2004, 13:08 ]
Betreff des Beitrags: 

:lol:

Autor:  [WING] Black Knight [ 14.05.2004, 13:13 ]
Betreff des Beitrags: 

Würde mir mal jemand erklären, warum ich strbreak nicht nutzen sollte? Ich hatte damit bislang keine Probleme. Und ohne triftigen Grund werde ich davon auch nicht abweichen.

Autor:  loser [ 14.05.2004, 16:23 ]
Betreff des Beitrags:  Danke!

Vielen Dank für die Hilfe erstmal, werde ein bisschen rumprobieren.

Autor:  daRope [ 14.05.2004, 22:40 ]
Betreff des Beitrags: 

http://sourceforge.net/tracker/index.ph ... tid=103570
;)

Jaja, weiss schon, der Grund fehlt immernoch. :)

Autor:  [WING] Black Knight [ 14.05.2004, 23:57 ]
Betreff des Beitrags: 

Ok, dann warte ich mal weiter auf eine Antwort.

Seite 1 von 1 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/