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

Default_access switch v1.0
https://www.adminmod.de/viewtopic.php?t=3228
Seite 2 von 2

Autor:  [WING] Black Knight [ 08.06.2002, 22:20 ]
Betreff des Beitrags: 

OK, erstmal Entwarnung für daRope. Die Probleme sind vermutlich ein Timingproblem. Wenn ich ein playerinfo anwende, muss dies so schnell wie möglich geschehen. Es ist daher durchaus möglich, dass bei einem etwas beschäftigten Server das playerinfo() zu spät kommt. Ob LogD da etwas schneller ist, kann ich nicht sagen. Egal wie es ist, auf den Durchlauf der Suchroutine kann man daher nicht verzichten. Hier die neue Version. Scheint zu funktionieren:
Code:
/* Default access switch.
Changes default_access to 0, if admin is entering the server and back to 1 if the last admin disconnects. 
v1.2 by [WING]Black Knight, 8.6.2002 */

#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
#define ACCESS_CONSOLE 131072

new STRING_VERSION[MAX_DATA_LENGTH] = "v1.2";
new admins=0;
new Message1[MAX_TEXT_LENGTH]="Admins offline! admin_vote_kick, admin_vote_map and say rockthevote enabled";

public default_entered(HLCommand, HLData){
	new strName[MAX_NAME_LENGTH];
	new UserIndex;
	new strUserIndex[MAX_TEXT_LENGTH];
	new Message0[MAX_TEXT_LENGTH];

	convert_string(HLData,strUserIndex,MAX_TEXT_LENGTH);
	UserIndex=strtonum(strUserIndex);
	playerinfo(UserIndex,strName, MAX_NAME_LENGTH);

	if(access(ACCESS_BAN,strName)){
		if(admins==0){
			exec("default_access 0");
			say("1 Admin online! admin_vote_kick, admin_vote_map and say rockthevote disabled");
		}
		admins++;
	}
	if(admins!=0){
		snprintf(Message0,MAX_TEXT_LENGTH,"%i Admin(s) online! admin_vote_kick, admin_vote_map and say rockthevote disabled",admins);
		message(strName,Message0);
	}
	else{
		message(strName,Message1);
	}
	return PLUGIN_CONTINUE;
}

public plugin_disconnect(HLUserName, UserIndex){
	new strName[MAX_NAME_LENGTH];
	new maxplayers = maxplayercount();
	new i;
	new da;

	admins=0;
	for(i=1; i<=maxplayers; i++){
		strinit(strName);
		if(playerinfo(i,strName,MAX_NAME_LENGTH)==1){
			if(access(ACCESS_BAN,strName)!=0){
				admins++;
			}
		}
	}
	da=getvar("default_access");
	if(admins==0 && da==0){
		exec("default_access 1");
		say(Message1);
	}
	return PLUGIN_CONTINUE;
}

public plugin_init() {
	plugin_registerinfo("Default Access Switch","default_access switch while away",STRING_VERSION);
	plugin_registercmd("default_entered","default_entered",ACCESS_CONSOLE,"");

	exec("logd_reg 51 admin_command default_entered");

	return PLUGIN_CONTINUE;
}

Autor:  sentinel [ 08.06.2002, 22:58 ]
Betreff des Beitrags: 

und wo ist der sound? :o

Autor:  [WING] Black Knight [ 08.06.2002, 23:53 ]
Betreff des Beitrags: 

daRope, mal eine Frage, ob das Plugin überhaupt Sinn macht.

Ich war gerade bei uns auf dem Server (bin selbstverständlich Admin). Nun musste ich feststellen, dass ein Nicht-Admin admin_vote_kick und admin_vote_map ausführen konnte. Zuerst dachte ich, wo ich denn den Fehler eingebaut hätte. Daraufhin habe ich die Variable default_access überprüft und habe zu meiner Verblüffung feststellen müssen, dass diese auf 0 stand. Theoretisch war das gar nicht möglich.
Könnte es evtl. sein, dass dieser Wert in Verbindung mit der users.ini gesehen werden muss? D.h. ich kann den Wert erst beim Mapchange ändern, wenn die server.cfg bearbeitet wird? Wozu mach ich mir dann die Mühe. :cry:

Autor:  Warhead [ 09.06.2002, 00:36 ]
Betreff des Beitrags: 

Ich habe keine Ahnung wie die Rechteverwaltung programmiert ist, kann mir das aber folgendermaßen vorstellen: Wenn jemand connectet wird pauschal der default_access als Recht gesetzt. Hat er jetzt auch noch ein passendes Passwort, bekommt er andere Rechte. D.h. wenn eine zeitlang der default_access Level 1 hatte, dann bekommen alle Leute den, die in dieser Zeit connecten. Wenn Du daß jetzt auf 0 änderst, bekommen die die als nächstes connecten als Recht die 0. Die die vorher andere Rechte hatten, bleiben unangetastet, schließlich wird das Passwort der Admins gelöscht, AM ist also garnicht mehr in der Lage später festzustellen, wer welches Recht hatte, außer beim Connecten oder wenn das Passwort per Befehl explizit gesetzt wird. Ich hoffe das ist verständlich. Mal ein kleiner Ablauf:

Zeit/Aktivität
0 default_access 1
1 User1 connectet -> Recht 1
2 User2 connectet, hat Passwort -> Recht >1
3 default_access 0
4 User3 connectet -> Recht 0
5 Rechteabfrage: User1=1, User2>1, User3=0

Autor:  [WING] Black Knight [ 09.06.2002, 01:05 ]
Betreff des Beitrags: 

Jo, Warhead. Die Theorie klingt durchaus besser als meine.

Autor:  daRope [ 09.06.2002, 15:50 ]
Betreff des Beitrags: 

Zitat:
Wenn jemand connectet wird pauschal der default_access als Recht gesetzt.
ACK.

Autor:  [WING] Black Knight [ 09.06.2002, 20:20 ]
Betreff des Beitrags: 

Bezieht sich das auf "connected" oder auf "entered". In letzterem Fall könnte man wenigstens den Wechsel nach dem Mapchange vollziehen.

Autor:  Warhead [ 09.06.2002, 20:54 ]
Betreff des Beitrags: 

Nach einem Mapwechsel connecten die Clients neu.

Autor:  [WING] Black Knight [ 09.06.2002, 21:49 ]
Betreff des Beitrags: 

Tun sie eben nicht. Das Problem hatte ich schon mit einem anderen Plugin.

Autor:  Warhead [ 09.06.2002, 22:27 ]
Betreff des Beitrags: 

Stimmt, konnte ich dank ein paar Logfiles nachvollziehen. Bereits connectete Clients kommen mit einem "Enter Game" rein. Da kannst Du maximal die Reconnect Time für Admins auf 0 setzen, dann müssten die Rechte neu verteilt werden bei einem Mapwechsel.
Hast Du mal ausprobiert was nach einem Mapwechsel passiert?

Autor:  [WING] Black Knight [ 10.06.2002, 00:08 ]
Betreff des Beitrags: 

Nein, war Zufall, dass ich das herausgefunden hatte. Ich werde das mal demnächst ausprobieren.

Autor:  Sena+or1 [ 20.06.2002, 20:23 ]
Betreff des Beitrags:  Re: Default_access switch v1.0

ein Riesenlob an dich [WING]Black Knight dein Plugin ist genau das was ich gesucht habe...

ich habe folgendes vor:
wenn ein Admin aufm Server ist kann er sich ja um die ganzen Lamer kümmern (TAs, Camper und dergleichen). wenn keiner drauf ist hätt ich gern das DAmp und ein Camper Plugin aktiv werden... mal sehen

PS.: deine Arbeit is klasse mit ein paar // Bemerkungen wärs perfekt :wink:

Autor:  [WING] Black Knight [ 21.06.2002, 08:42 ]
Betreff des Beitrags: 

Das war nur der erste Code (mehr als Test gedacht). Die Doku wäre später dazugekommen.
Leider hast Du den Thread nicht komplett gelesen. Ansonsten wüsstest Du, dass es auf Grund der Rechtevergabe von AdminMod nicht wie gewünscht funktioniert.
Schade eigentlich...

Damp ist evtl. relativ einfach zu integrieren (über einen meta load Aufruf). Das Camperplugin kann jedoch erst nach einem Mapchange aktiv werden. Dazu solltest Du Dir mal den CW-Creator ansehen, wie man das am günstigsten macht.

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