Ein neues Thema erstellen  Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige 1 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 08.06.2002, 22:20 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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;
}

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.06.2002, 22:58 

Registriert: 11.04.2002, 04:36
Beiträge: 188
Wohnort: hannover
und wo ist der sound? :o


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.06.2002, 23:53 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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:

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2002, 00:36 

Registriert: 17.12.2001, 01:00
Beiträge: 697
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


Zuletzt geändert von Warhead am 09.06.2002, 01:21, insgesamt 1-mal geändert.

Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2002, 01:05 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Jo, Warhead. Die Theorie klingt durchaus besser als meine.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2002, 15:50 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zitat:
Wenn jemand connectet wird pauschal der default_access als Recht gesetzt.
ACK.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2002, 20:20 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Bezieht sich das auf "connected" oder auf "entered". In letzterem Fall könnte man wenigstens den Wechsel nach dem Mapchange vollziehen.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2002, 20:54 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Nach einem Mapwechsel connecten die Clients neu.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2002, 21:49 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Tun sie eben nicht. Das Problem hatte ich schon mit einem anderen Plugin.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2002, 22:27 

Registriert: 17.12.2001, 01:00
Beiträge: 697
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?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2002, 00:08 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Nein, war Zufall, dass ich das herausgefunden hatte. Ich werde das mal demnächst ausprobieren.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags: Re: Default_access switch v1.0
BeitragVerfasst: 20.06.2002, 20:23 

Registriert: 30.03.2002, 12:47
Beiträge: 378
Wohnort: Österreich/Umgebung Linz
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:

_________________
AdminMod Neuling? Alles Schritt für Schritt gibts hier

ich bin root ich darf das ;-)

(sic)Sena+or


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 21.06.2002, 08:42 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige 1 2


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 ]"