Versuchs mal damit:
Code:
/**************************************************************************************************
*** Plugin_LogD_Redirect *** by [HDK]DragonReborn *** [11-03-2001][v1.1] ***
*** Modified by Smudo ***
***************************************************************************************************
*
* Anleitung
* ------------
* Dieses Plugin benoetigt LogD!!
* Einfach compilieren und in das dlls Verzeichnis kopieren
* (Beispiel: c:\sierra\half-life\cstrike\dlls)
* In der plugin.ini folgende Zeile einfuegen: dlls/plugin_logd_redirect.amx
* Nach Aktivierung des Plugins durch "admin_redirect 1" wird jeder User
* auf einen anderen Server weitergeleitet wenn der Server voll ist. Voll
* bedeutet in diesem Fall: Maximale Anzahl - 2.
* (Beispiel: Bei einem Server mit maximal 16 Playern wird der 15te weitergeleitet
* um eine gerade Anzahl von Spielern zu behalten.)
* Das Plugin ist ausgelegt fuer Server ohne reservierte Plaetzt, da es sich ja im
* Prinzip auch um eine Reservierung handelt.
* Auf Servern mit einer ungeraden Anzahl an reservierten Plaetzen kann nach Aktivieren
* dieses Plugins nur noch eine ungerade Anzahl an Spielern spielen. (ausbaufaehig :) )
*
* Admins mit ACCESS_IMMUNITY werden nicht weitergeleitet, ausser bei redirect_all.
* Beim ersten Start ist unser Server als Default eingestellt. Anschliessend kann man
* durch Aenderungen in der vault.ini folgende Werte festlegen.
* - admin_redirectziel [TV]HolodeckXP //Name des Zielservers
* - admin_redirectip 213.146.163.208:27135 //IP des Zielservers
* - admin_redirectpw VIP //Passwort des Zielservers
* - admin_redirect 0 //Umleitung An(1) oder Aus(0)
*
* _________________________________________________________________________________________________
*
* Befehle
* --------
* - admin_redirect 1 : Weiterleitung An
* - admin_redirect 0 : Weiterleitung Aus
* - admin_redirect all : Alle Spieler werden sofort weitergeleitet
*
*
**************************************************************************************************/
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
#define ACCESS_CONSOLE 131072
#define ACCESS_REDIRECT 4096
new STRING_VERSION[MAX_DATA_LENGTH] = "1.1";
new User[MAX_NAME_LENGTH];
new RSwitch;
new RStandard[MAX_DATA_LENGTH];
/*******************************************************************************
** Hier oder in der vault.ini Name, IP und das PW des Zielservers angeben **
** Die Angaben in der vault.ini haben Vorrang. **
*******************************************************************************/
new ZIEL[MAX_TEXT_LENGTH] = "[TV]HolodeckXP";
new IP[MAX_TEXT_LENGTH] = "213.146.163.208:27135";
new PW[MAX_TEXT_LENGTH] = "VIP";
public vaultdata()
{
new Data[MAX_DATA_LENGTH];
get_vaultdata("admin_redirectziel",Data,MAX_DATA_LENGTH);
if(strcmp(Data,"")==0)
{
set_vaultdata("admin_redirectziel",ZIEL);
}
else
{
get_vaultdata("admin_redirectziel",ZIEL,MAX_DATA_LENGTH);
}
get_vaultdata("admin_redirectip",Data,MAX_DATA_LENGTH);
if(strcmp(Data,"")==0)
{
set_vaultdata("admin_redirectip",IP);
}
else
{
get_vaultdata("admin_redirectip",IP,MAX_DATA_LENGTH);
}
get_vaultdata("admin_redirectpw",Data,MAX_DATA_LENGTH);
if(strcmp(Data,"")==0) {
set_vaultdata("admin_redirectpw",PW);
}
else {
get_vaultdata("admin_redirectpw",PW,MAX_DATA_LENGTH);
}
get_vaultdata("admin_redirect",Data,MAX_DATA_LENGTH);
if(Data[0] == '0') {
RSwitch = 0;
return PLUGIN_HANDLED;
}
else if(Data[0] == '1'){
RSwitch = 1;
return PLUGIN_HANDLED;
}
RSwitch = 0;
RStandard[0] = '0';
set_vaultdata("admin_redirect",RStandard);
selfmessage("Weiterleitung ausgeschaltet (Standard).");
selfmessage("Moegliche Werte sind:");
selfmessage("0: Weiterleitung Aus, 1: Weiterleitung An, all: Alle Spieler sofort umleiten.");
return PLUGIN_HANDLED;
}
public logd_redirect(HLCommand,HLData,HLUserName) {
new sID[MAX_DATA_LENGTH];
new Text[MAX_TEXT_LENGTH];
new Data[MAX_DATA_LENGTH];
new Count;
new Count2;
convert_string(HLData, Data, MAX_DATA_LENGTH);
strbreak(Data, sID, Data, MAX_DATA_LENGTH);
new iID = strtonum( sID );
if( !playerinfo(iID,User,MAX_NAME_LENGTH) ) {
return PLUGIN_FAILURE;
}
Count = (maxplayercount() - 2);
Count2 = playercount();
if (((playercount() + 1) == maxplayercount()) && (RSwitch == 1)) {
snprintf(Text,MAX_TEXT_LENGTH,"Maxplayers = %i^nPlayerCount = %i",Count,Count2);
messageex(User,Text,print_chat);
redirect();
}
return PLUGIN_HANDLED;
}
public redirect() {
new Text[MAX_TEXT_LENGTH];
if (access(ACCESS_IMMUNITY, User) != 1) {
snprintf(Text,MAX_TEXT_LENGTH,"%s wird weitergeleitet auf Server: %s",User,ZIEL);
centersay(Text,10,0,225,0);
messageex(User," ",print_chat);
messageex(User,"***************************************************",print_chat);
messageex(User,"Server ist voll, Weiterleitung erfolgt.",print_chat);
messageex(User,"***************************************************",print_chat);
snprintf(Text,MAX_TEXT_LENGTH,"password %s",PW);
execclient(User,Text);
snprintf(Text,MAX_TEXT_LENGTH,"connect %s",IP);
execclient(User,Text);
}
else
{
snprintf(Text,MAX_TEXT_LENGTH,"Du wirst nicht weitergeleitet da du Admin bist, %s",User);
messageex(User,Text,print_chat);
}
return PLUGIN_CONTINUE;
}
public admin_redirect(HLCommand,HLData,HLUserName,UserIndex)
{
new Data[MAX_DATA_LENGTH];
new Text[MAX_TEXT_LENGTH];
convert_string(HLData,Data,MAX_DATA_LENGTH);
if(strcmp(Data,"0")==0)
{
RSwitch = 0;
set_vaultdata("admin_redirect",Data);
selfmessage("Weiterleitung ist ausgeschaltet.");
}
else if(strcmp(Data,"1")==0)
{
RSwitch = 1;
set_vaultdata("admin_redirect",Data);
selfmessage("Weiterleitung ist eingeschaltet.");
}
else if(strcmp(Data,"all")==0)
{
redirectall();
}
else
{
get_vaultdata("admin_redirect",Data,MAX_DATA_LENGTH);
snprintf(Text,MAX_TEXT_LENGTH,"Weiterleitung Status: %s",Data);
selfmessage("Ungueltiger Wert fuer admin_redirect");
selfmessage("0: Weiterleitung Aus, 1: Weiterleitung An, all: Alle Spieler sofort umleiten.");
selfmessage(Text);
}
return PLUGIN_HANDLED;
}
public redirectall()
{
new Text[MAX_TEXT_LENGTH];
new maxplayers = maxplayercount();
for( new iIDU = 1; iIDU <= maxplayers; iIDU++ ) {
if( !playerinfo(iIDU,User,MAX_NAME_LENGTH) ) {
return PLUGIN_FAILURE;
}
if (strcmp(PW,"none")!=0) {
snprintf(Text,MAX_TEXT_LENGTH,"password %s",PW);
execclient(User,Text);
}
snprintf(Text,MAX_TEXT_LENGTH,"connect %s",IP);
execclient(User,Text);
}
return PLUGIN_HANDLED;
}
public plugin_init() {
plugin_registerinfo("Plugin_LogD_Redirect","Redirects connections on full servers to another server.",STRING_VERSION);
plugin_registercmd("logd_redirect", "logd_redirect", ACCESS_CONSOLE, "");
plugin_registercmd("admin_redirect", "admin_redirect", ACCESS_BAN, "admin_redirect (1/0): 0=Weiterleitung AUS, 1=Weiterleitung AN");
/*plugin_registercmd("admin_redirectall", "admin_redirectall", ACCESS_BAN, "Alle Spieler weiterleiten");*/
exec( "logd_reg 51 admin_command logd_redirect" );
vaultdata();
return PLUGIN_CONTINUE;
}
Bei uns funzt das auf jeden Fall
