Hi,
ich schon wieder. Genau der, der die ganzen nutzlosen Plugins produziert. Heute darf ich Euch wieder mit einem Plugin dieser Sorte beehren.
Das Plugin ist dafür da den Server attraktiver zu machen, solange kein Admin online ist.
Wir hatten früher den default_access auf 1 gehabt. Damit war jedermann auf dem Server berechtigt Mapvotes und Kickvotes zu starten. Wenn wir dann online waren, war das ziemlich nervig. Daher wurde das abgestellt (default_access 1). Nun sind wir aber nicht immer online und man hätte doch gerne, dass sich die Stammspieler auch wehren können, wenn kein Admin da ist.
Genau hier setze ich an. Sobald ein Admin connected wird default_access auf 0 gesetzt und sobald der letzte verschwindet wieder zurück auf 1.
Also, damit Ihr Euch ein genaueres Bild machen könnt hier der Code:
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.0 by [WING]Black Knight, 5.6.2002 */
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
#define ACCESS_CONSOLE 131072
new STRING_VERSION[MAX_DATA_LENGTH] = "v1.0";
new admins=0;
new Message0[MAX_TEXT_LENGTH]="Admin online! admin_vote_kick, admin_vote_map and say rockthevote disabled";
new Message1[MAX_TEXT_LENGTH]="Admin offline! admin_vote_kick, admin_vote_map and say rockthevote enabled";
public default_entered(HLCommand, HLData){
new WONID;
new strUserIndex[MAX_TEXT_LENGTH];
new UserIndex;
new strName[MAX_NAME_LENGTH];
new UserID;
new Team;
new Dead;
new wert[MAX_TEXT_LENGTH];
convert_string(HLData, strUserIndex, MAX_TEXT_LENGTH);
UserIndex=strtonum(strUserIndex);
playerinfo(UserIndex, strName, MAX_NAME_LENGTH, UserID, WONID, Team, Dead);
if(access(ACCESS_RESERVE_SPOT,strName)) {
if(admins==0){
exec("default_access 0");
say(Message0);
}
admins++;
}
else {
getstrvar("default_access",wert, MAX_TEXT_LENGTH);
if(streq(wert,"0")){
message(strName,Message0);
}
else{
message(strName,Message1);
}
}
return PLUGIN_CONTINUE;
}
public default_disconnect(HLCommand, HLData){
new WONID;
new strUserIndex[MAX_TEXT_LENGTH];
new UserIndex;
new strName[MAX_NAME_LENGTH];
new UserID;
new Team;
new Dead;
convert_string(HLData, strUserIndex, MAX_TEXT_LENGTH);
UserIndex=strtonum(strUserIndex);
playerinfo(UserIndex, strName, MAX_NAME_LENGTH, UserID, WONID, Team, Dead);
if(access(ACCESS_RESERVE_SPOT,strName)) {
if(admins==1){
exec("default_access 1");
say(Message1);
}
admins--;
}
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,"");
plugin_registercmd("default_disconnect","default_disconnect",ACCESS_CONSOLE,"");
exec("logd_reg 52 admin_command default_disconnect");
exec("logd_reg 51 admin_command default_entered");
return PLUGIN_CONTINUE;
}
Seht es mir nach, wenn das Plugin nicht superstrukturiert ist. Ich bin ja noch nicht so bewandert.
Als Admin gilt, wer das Recht für einen reservierten Slot hat. Ich glaube, dass ich das wichtigste bedacht habe.
Wer noch Fragen hat oder Bugs findet, bitte melden.
BTW, ich habe LogD verwendet, da mir die AdminMod Funktionen zu unsicher sind. Die werden nicht immer ausgeführt. Ob das jetzt ein allgemeines oder nur ein spezielles Problem ist, weiß ich nicht. So geht's jedenfalls.
_________________
Der schwarze Ritter triumphiert immer...
WING-Clan