Ein neues Thema erstellen  Auf das Thema antworten  [ 17 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Clan tag schützen ?
BeitragVerfasst: 25.03.2002, 23:20 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
Hi , ich hab von Plug-In Progen 0 anung :-)

ich suche ein script mitdem ich in einen txt die namen

-|FoC.MrSpoocy|-
-|FoC.xxx|-
...
..
.
schreibe und wenn nun einer mit dem clantag -|FoC. jojnt und NICHT in der datei steht soll das plug in ihn umbennnen (weis nicht ob das geht , komm nur drauf weil Cheatin-Death das macht) oder Kicken.

Neben bei , wie kann man plugins schreiben , denn quellcode versteh ich zum grösten teil weil ich JS,PHP behersche aber wie wandelt man diesen in eine linux datei um ? Gibs irgendwo nee Manual zu sowas ?

Nachtrag:
Wehre es möglich das das script OPTIONAL auf die WonID einliest also die datein mit den namen sieht dann so aus

8438473 -|FoC.MrSpoocy|-
...
..
.

und jetzt darf den nick nur der nehmen der auch die wonid hat , aber das soll optional einstell bar sein !


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.03.2002, 15:15 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
geb einfach jedem nen admin status, dann kommt die meldung this name is reserved on this server oder irgendwie sowas, das is bei admin mod schon mit drin. du selbst kommst dann nur mit dem passwort rauf

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags: Clan tag schützen ?
BeitragVerfasst: 26.03.2002, 17:12 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Zitat:
...wenn nun einer mit dem clantag -|FoC. jojnt und NICHT in der datei steht soll das plug in ihn umbennnen (weis nicht ob das geht , komm nur drauf weil Cheatin-Death das macht) oder Kicken.
Woran soll das Plugin erkennen um welchen der Spieler, die du in deiner TXT aufgelistet hast, es sich handelt ?
Zitat:
...Neben bei , wie kann man plugins schreiben , denn quellcode versteh ich zum grösten teil weil ich JS,PHP behersche aber wie wandelt man diesen in eine linux datei um ? Gibs irgendwo nee Manual zu sowas ?
Schau dir mal die FAQ auf www.adminmod.de an ( -> http://adminmod.battlenation.de/faq.php )

Ferner dürften dich die Include Dateien (Deiteinamenerweiterung *.inc), welche bei AdminMod dabei sind, ein Stück weiterbringen. Also schau dir auch diese mit einem Texteditor an.
Und sofern du ein wenig Englisch lesen und verstehen kannst, wird dir das Kapitel 'Scripting Basics - A Beginner's Guide to Scripting' ab Seite 68 der AdminMod beiliegenden Dokumentation sehr nützliche Tips geben.
Zitat:
Nachtrag:
Wehre es möglich das das script OPTIONAL auf die WonID einliest also die datein mit den namen sieht dann so aus

8438473 -|FoC.MrSpoocy|-
...
..
.

und jetzt darf den nick nur der nehmen der auch die wonid hat , aber das soll optional einstell bar sein !
Das wäre eine Möglichkeit, die allerdings nur im Internet funktioniert, da es ja im LAN keine 'richtige' WONID gibt. Dazu brauchst du allerdings kein neues Plugin, sondern kannst - wie COLA schon sagte - auf die AdminMod interne Funktion zurückgreifen (Dokumentation von AdminMod lesen).

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags: nee noch net:-((
BeitragVerfasst: 26.03.2002, 18:17 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
also 1. das soll nur im inet gehen , weils ja nin clanserver is :-)
2. im adminmot gehts nicht , weil da muß ich nin password vergeben und kann nur 1 wonid angeben , einiege user haben 2 wonids und das soll berücksichtigt werden.

3. es gibt viele PlugIns die aus datein lesen , und so soll es das auch machen , soll jede zeichle durchgehen und den namen vergleichen+wonid vergleichen , ist er an datei ende und hat nix gefunden wird der user gekickt oder umbenannt. den nick kann er mit -\|FoC.?*.* irgendwie auslesen .


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.03.2002, 18:24 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
vielleicht hilft Dir das Plugin weasel_look schonmal als Ansatz für Dein Plugin?

_________________
Fehleranalyse: Poste den Inhalt Deiner liblist.gam, (listen)server.cfg, adminmod.cfg, users.ini, vault.ini, plugin.ini von adminmod und plugins.ini von metamod. Benutze auch die Such-Funktion


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.03.2002, 19:09 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Ich wäre nicht abgeneigt das Plugin zu schreiben, allerdings müsste ich dazu genau wissen was es machen soll. Du schreibst es soll die Namen der Spieler mit den Namen in einer Textdatei vergleichen - ok, soweit kein Problem. Auch das umbenennen der Spieler sollte kein Problem sein, aber in welchen Namen umbenennen und nach welchen Kriterien. Poste am besten nocheinmal ausführlich deine Vorstellungen, die das Plugin betreffen.

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.03.2002, 19:15 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
ok dank dir schon mal .-)

also angenommen der kommt mot -|FoC. rein dann soll er dasn -|FoC. wegnehmen und nur das dahinter schreiben (wenn möglich soll er vieleicht prüfen ob am ende auch |- steht um das auch weg zu nehmen denn unser voller tag is -|FoC.XXXXX|-) so und das mit der datei soll eben noch die möglichkeit haben das man mehrere wonids angeben kann.Und wenn halt jemand mit -|FoC. in das game kommt der NICHT in der datei steht "kick" und option sollte man einstellen das angenomen mp_clanfake 0 ist das dann JEDER mit -|FoC.MrSpoocy|- auf den server kann egal welche wonid oder wenn mp_clanfake 1 is , er nur mit dem namen spielen kann wenn er die wonid dazu hat (wobei wie gesagt mehrere möglich sein sollen )

wenn noch fragen hast wennde dich einfach an mich per icq :)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.03.2002, 19:24 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Ok, ich werde mal sehen was sich machen lässt, aber bei Rückfragen werde ich hier posten, damit alle anderen auch etwas davon haben.

Bio

PS: Eine kleine Bitte - könntest du beim nächsten Post ein wenig leserlicher schreiben. Ich weiß absolut nicht was du mit folgendem Satz meinst ?
Zitat:
...also angenommen der kommt mot -|FoC. rein dann soll er dasn -|FoC. wegnehmen und nur das dahinter schreiben ...
Was soll er dahinter schreiben ?

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.03.2002, 20:18 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
ich glaub beim plugin_war (oder vielleicht auch beim plugin_stetze) gibs ne funktion die alle kickt die ein bestimmten tag/passwort nich haben, soll das plugin für cws sein ?

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 26.03.2002, 20:27 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
...also angenommen der kommt mot -|FoC. rein dann soll er dasn -|FoC. wegnehmen und nur das dahinter schreiben ...

=

....also mal angenommen ein User kommt mit -|FoC. auf den server (z.b -|FoC.LALA|-) dann soll das Plug In den namen in LALA ändern , weil der rest ist ja vom Clan-Tag.

ich weis wenn ich müde bin schreib ich sehr schlecht:-)))


Nach oben
   
 Betreff des Beitrags: Clan tag schützen ?
BeitragVerfasst: 28.03.2002, 21:28 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zitat:
Hi , ich hab von Plug-In Progen 0 anung
Gibt es auch ein Plug-in Antigen?

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 29.03.2002, 11:25 

Registriert: 21.10.2001, 01:00
Beiträge: 93
lol... wie sinnvoll florian :)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01.04.2002, 22:15 

Registriert: 29.03.2002, 19:11
Beiträge: 6
Schreib einfach in die users.ini unter Eure WON-ID-Einträge folgende Clantag-Zeile:

\-|FoC\.:passwort:rechtelevel

der backslash wird später automatisch weggenommen, ist nur, damit sonderzeichen funzen. bei uns klappt das gut, wenn jemand mit unserm tag eiloggen möchte, dann kommt er nicht rauf, und wenn jemand im laufenden spiel seinen namen mit tag versehen möchte, dann wird er gekickt, weil ihm das passwort fehlt. so kannst du auch generell leuten mit dem clantag vor dem namen und passwort bestimmte rechte zuweisen, ohne ihre won-id oder ihren nick zu kennen.
sonst findest du etwas dazu unter http://www.adminmod.org im faq.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.04.2002, 02:11 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Ich habe schon begonnen das Plugin zu schreiben, allerdings bin ich auf folgendes Problem gestoßen: Wenn jemand konnektiert, wird sein Name mit denen in einer Textdatei verglichen - soweit so gut, aber wenn nun jemand als 'nicht-spielberechtigt' deklariert wird kann ich ihn nicht SOFORT kicken, da er ja noch nicht als Player vorhanden ist (er ist ja noch nicht im Spiel). Nun habe ich mir überlegt ihn erst zu kicken wenn er sich für ein Team und ein Model entschieden hat, was wie ich finde keine elegante Lösung des Problems ist. Weiß jemand vielleicht eine bessere Lösung oder hat einen Vorschlag wie ich ihn trotzdem beim Konnektieren kicken kann ?

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.04.2002, 20:09 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Zitat:
Schreib einfach in die users.ini unter Eure WON-ID-Einträge folgende Clantag-Zeile:

\-|FoC\.:passwort:rechtelevel

der backslash wird später automatisch weggenommen, ist nur, damit sonderzeichen funzen. bei uns klappt das gut, wenn jemand mit unserm tag eiloggen möchte, dann kommt er nicht rauf, und wenn jemand im laufenden spiel seinen namen mit tag versehen möchte, dann wird er gekickt, weil ihm das passwort fehlt. so kannst du auch generell leuten mit dem clantag vor dem namen und passwort bestimmte rechte zuweisen, ohne ihre won-id oder ihren nick zu kennen...
Das ist eine gute Idee, somit kann ich diesen Aspekt in der Realisierung des Plugins schonmal außenvorlassen. Ich habe einige Möglichkeiten zusammengetragen, die auftreten können, wenn jemand zum Server konnektiert. Zu den einzelnen Möglichkeiten habe ich die Aktionen, die das Plugin bei Eintreten der verschiedenen Fälle ausführt, dahinter geschrieben:

a) Jemand konnektiert mit beliebigem Namen zum Server, benutzt aber die WonID eines in der TXT deklarierten Players

-> Das Plugin ändert den Namen des Spielers in seinen richtigen (den Namen der in der TXT deklariert wurde) um

b) Jemand konnektiert mit einem Namen der in der TXT deklariert wurde, hat aber die falsche WonID

-> Das Plugin benennt den Player in einen alternativen Namen um (alternative Namen können in der TXT festgelegt werden)

c) Jemand konnektiert mit einem Namen der in der TXT definiert ist und hat auch die dazugehörige WonID

-> Der Player darf ungestört weiterspielen

d) Jemand konnektiert mit irgendeinem Namen und benutzt auch keine in der TXT definierte WonID

-> Der Player darf ungestört weiterspielen

------------------------------------------------------------------------------

Es wäre noch zu überlegen ob ich im Plugin noch definieren soll das Namensänderungen im Spiel nicht erlaubt sind, da man ja sonst einfach nach dem Konnektieren seinen Namen in einen ändern kann der eigentlich geschützt werden soll.

Dieser Post richtet sich hauptsächlich an MrSpoocy, den ich hiermit bitten möchte hier zu posten ob ich irgendetwas ändern oder ergänzen soll.

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags: hehe
BeitragVerfasst: 09.04.2002, 21:06 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
genau das is es , ihr alle habt es nicht verstanden bis auf Biohazard , weil wenn ich den namen im der user.ini rein schreib dann muß ich ein PW setzen und rechte vergeben das will ich aber nicht !!!! , naja wie soll man verhindern das jemand den namen ändert ? ich bin dafür das das script alle 30 sekunden neu läd und somit die namen prüft die im game sind , so wie CD das macht , und dann wieder umbennet , weil ich denk wenn alle 30 sek der user sich umbennet dann weis jeder bescheit das es ein fake is.


Nach oben
   
 Betreff des Beitrags: Re: hehe
BeitragVerfasst: 16.04.2002, 03:29 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Zitat:
... ich bin dafür das das script alle 30 sekunden neu läd und somit die namen prüft die im game sind , so wie CD das macht , und dann wieder umbennet ...
Ich habe es jetzt so programmiert das es die Namen der User bei jedem Rundenstart überprüft und ggf. den Player umbenennt bzw. kickt. (Dazu mehr in der beiliegenden Info.txt.
Zitat:
-------------------------------------------------------------------------
Biohazards Spooky Names Plugin (Version 1.0) 16.04.2002
-------------------------------------------------------------------------


ERKLÄRUNG DES PLUGINS
----------------------

Das Plugin vergleicht zu Beginn jeder Runde die Namen und die WonIDs
aller Spieler mit denen, die zuvor in einer CFG Datei (names.cfg) de-
finiert wurden. Sollte dabei ein Spieler gefunden werden der eine der
WonIDs benutzt allerdings unter falschem Namen spielt (Das Plugin gibt
dem Spieler den Status 1), so wird das Plugin diesen Spieler in seinen
richtigen Namen umbenennen. Benutzt ein Spieler einen der Namen die in
der CFG Datei definiert wurden, hat aber nicht die passende WonID
(Status 2), so wird der Spieler in einen alternativen Namen umbenannt.
Alternative Namen können ebenfalls in der CFG Datei angegeben werden.
Spieler die sowohl einen definierten Namen und eine dazu passende WonID
nutzen (Status 3) und Spieler die weder einen definierten Namen noch
reservierte WonID benutzen (Status 4) dürfen ungestört weiterspielen.

Mit #define ACTION_KICK kann eingestellt werden ob Player die den Status
1 oder 2 haben umbenannt oder gekickt werden.
----------------------------------------------------------------------
#define ACTION_KICK 0 -> Nicht authorisierte Spieler werden umbenannt

#define ACTION_KICK 1 -> Nicht authorisierte Spieler werden gekickt
----------------------------------------------------------------------
Spieler die umbenannt werden bekommen eine grüne Nachricht in der Mitte
des Bildschirms die auskunft darüber gibt warum sie umbenannt wurden.
Spieler die gekickt werden erhalten vorher eine Mitteilung in ihrer
Konsole warum sie gekickt wurden.


STATUS ÜBERSICHT
-----------------

Statusnr. | Erklärung
----------------------------------------------------------------------
0 | Kein Klient benutzt diesen Slot oder der Klient ist ein Bot
----------------------------------------------------------------------
1 | Der Spieler besitzt eine reservierte WonID aber nicht den
| passenden Namen -> Er wird in seinen richtigen Namen umbe-
| nannt bzw. wird gekickt.
----------------------------------------------------------------------
2 | Der Spieler benutzt einen reservierten Namen, hat aber nicht
| die dazu passende WonID -> Er wird in einen alternativen
| Namen umbenannt bzw. wird gekickt.
----------------------------------------------------------------------
3 | Der Spieler benutzt einen reservierten Namen und hat auch
| die dazu passende WonID - > Er darf ungestört weiterspielen.
----------------------------------------------------------------------
4 | Der Spieler benutzt weder einen reservierten Namen noch hat
| hat er eine geschütze WonID -> siehe (3)
----------------------------------------------------------------------
9 | Status ist unklar und wird beim nächsten Rundenstart
| geklärt
----------------------------------------------------------------------


ANHANG
-------

Die maximale Anzahl von alternativen Namen ist standardmäßig auf 10 ein-
gestellt. Sollten mehr alternative Namen gewünscht sein, so muß
#define MAX_ALTERNATIVE 10 erhöht werden.

Wenn mehr als 30 Player gleichzeitig auf dem Server spielen möchten, muß
zuvor #define MAX_USERS 30 erhöht werden.

Das Plugin kann mit 'admin_spooky_off' ausgeschaltet und mit
'admin_spooky_on' (voreingestellt) wieder eingeschaltet werden.

Das Plugin wurde ausführlich mit PoD-Bot 2.5 getestet. Bots beeinträch-
tigen die Funktionsweise in keinster Weise und werde auch nicht gekickt
oder umbenannt.

Die Datei 'names.cfg' muß ins MOD Verzeichnis kopiert werden.

Alternative Namen dürfen nur in der CFG Datei UNTERHALB von
#### List of alternative names #### eingefügt werden.

-----------------------------------------------------------------------
(c)Copyright 2002 by Biohazard
Code:
       /*******************************************************************
      **  Biohazards Spooky Names Plugin                    v 1.0  *******
     ***                         ( plugin_logd_spooky_names.sma )  ******
    ****  INFO:  This Plugin compares the names of connecting      *****
   *****  players to those written in a textfile. If the players  ****
  ******  name wasnt found in the file, he will be kicked or      ***
 *******  renamed.                                                 **
*******************************************************************/

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

#define ACCESS_CONSOLE 131072
#define ACCESS_SPOOKY 1024
#define NAME_LENGTH 25
#define WONID_LENGTH 15
#define MAX_USERS 30                                        // How many users do we have maximum
#define MAX_ALTERNATIVE 10                                  // How many alternative names do we have maximum
#define ACTION_KICK 0                                       // 0 - Rename..., 1 - Kick unauthorized player

#define DEBUG 0                                             // 0 - Debug Mode off, 1 - Debug Mode on

new STRING_VERSION[MAX_DATA_LENGTH] = "1.0";                // Plugin Version
new FILENAME[MAX_DATA_LENGTH] = "names.cfg";                // Name of Config-File

new PARSED_NAMES[MAX_USERS][NAME_LENGTH];                   // Names from 'names.cfg' will be copied to this array
new PARSED_WONIDS[MAX_USERS][WONID_LENGTH];                 // WONIDS from 'names.cfg' will be copied to this array
new BOARD_NAMES[MAX_USERS][MAX_NAME_LENGTH];                // The name of each connecting user will be stored here
new BOARD_WONIDS[MAX_USERS][WONID_LENGTH];                  // Holds the users WONID
new STATUS[MAX_USERS][2];                                   // Holds the status of each user
new ALTERNATIVE_NAMES[MAX_ALTERNATIVE][MAX_NAME_LENGTH];    // Array of alternative Names
new AltNamesQuantity = 0;                                   // Real number of alternative names after initializing plugin
new bEnabled = 1;                                           // 1 - Plugin on, 0 - Plugin off
new bAction = ACTION_KICK;

public admin_spooky_off(HLCommand, HLData, HLUserName, UserIndex)
{
      new User[MAX_NAME_LENGTH];
      new Text[MAX_TEXT_LENGTH];

      convert_string(HLUserName, User, MAX_NAME_LENGTH);

      if (bEnabled != 0) {
            bEnabled = 0;           // Plugin off
            say(">>> Spooky Names Plugin has been disabled <<<");
            snprintf(Text, MAX_TEXT_LENGTH, "Spooky Names Plugin has been disabled by %s", User);
            log(Text);
      }
      else selfmessage("Spooky Names Plugin already disabled");

      return PLUGIN_HANDLED;
}

public admin_spooky_on(HLCommand, HLData, HLUserName, UserIndex)
{
      new User[MAX_NAME_LENGTH];
      new Text[MAX_TEXT_LENGTH];

      convert_string(HLUserName, User, MAX_NAME_LENGTH);

      if (bEnabled != 1) {
            bEnabled = 1;           // Plugin on
            say(">>> Spooky Names Plugin has been enabled <<<");
            snprintf(Text, MAX_TEXT_LENGTH, "Spooky Names Plugin has been enabled by %s", User);
            log(Text);
      }
      else selfmessage("Spooky Names Plugin already enabled");

      return PLUGIN_HANDLED;
}

public sn_HandleTeamSelect(HLCommand,HLData,HLUserName,UserIndex)
{
      if (!bEnabled)
            return PLUGIN_CONTINUE;

      new Data[MAX_DATA_LENGTH];
      new sID[MAX_DATA_LENGTH];
      new sTeam[MAX_DATA_LENGTH];
      new iID;
      new sName[MAX_NAME_LENGTH];
      new dummy;
      new WONID;
      new i;
      new ValidWONID = 0;
      new ValidName = 0;

      convert_string(HLData, Data, MAX_DATA_LENGTH);
      strsplit(Data, " ", sID, 3, sTeam, 10);
      iID = strtonum(sID);

      if (playerinfo(iID, sName, MAX_NAME_LENGTH, dummy, WONID, dummy, dummy)) {
            numtostr(WONID, BOARD_WONIDS[iID]);
      }
      if (WONID != 0) {
            for (i=0; i<MAX_USERS; i++) {
                  if (strcmp(BOARD_WONIDS[iID], PARSED_WONIDS[i]) == 0) {
                        ValidWONID = 1;
                  }
                  if (strcmp(sName, PARSED_NAMES[i]) == 0) {
                        ValidName = 1;
                  }
            }
            if (ValidWONID == 1) {
                  if (ValidName == 1) {
                        STATUS[iID] = "3";            // Dont annoy him, he is full-valid
                  } else {
                        STATUS[iID] = "1";            // Give him his realname
                  }
            } else {
                  if (ValidName == 1) {
                        STATUS[iID] = "2";            // Give him an alternative name
                  } else {
                        STATUS[iID] = "4";            // Dont annoy him
                  }
            }
      }
      ///////////////////////////// DEBUG START //////////////////////////////
      #if DEBUG

      new Text[MAX_TEXT_LENGTH];
      if (playerinfo(iID, sName, MAX_NAME_LENGTH, dummy, WONID, dummy, dummy)) {
            snprintf(Text,MAX_DATA_LENGTH,"%s hat die WONID: %i und den Status: %s", sName, WONID, STATUS[iID]);
            centersay(Text, 5, 255, 255, 255);
      }
      new maxplayers = maxplayercount();  
      for (i=1;i<=maxplayers;i++) {
            if (playerinfo(i, sName, MAX_NAME_LENGTH, dummy, WONID, dummy, dummy))
            {
                  snprintf(Text,MAX_DATA_LENGTH,"%s hat die WONID: %i", sName, WONID);
                  log(Text);
            }
      }
      snprintf(Text,MAX_DATA_LENGTH,"ValidWONID ist: %i und ValidName ist: %i", ValidWONID, ValidName);
      log(Text);
      say(Text);

      #endif
      ////////////////////////////// DEBUG END ///////////////////////////////

      return PLUGIN_CONTINUE;
}

public sn_HandleWorld(HLCommand,HLData,HLUserName,UserIndex)
{
      if (!bEnabled)
            return PLUGIN_CONTINUE;

      new Params[MAX_DATA_LENGTH];
      new i;
      new j;
      new sName[MAX_NAME_LENGTH];
      new dummy;
      new sCommand[MAX_DATA_LENGTH];
      new iDead;
      new ValidWONID = 0;
      new ValidName = 0;
      new Text[MAX_TEXT_LENGTH];

      convert_string(HLData,Params,MAX_DATA_LENGTH);
      switch( Params[ 6 ] )
      {
            case 'S':
            {
                  for(i=0; i<MAX_USERS; i++) {
                        if (strcmp(STATUS[i], "9") == 0) {
                              ///////////////////////////// DEBUG START //////////////////////////////
                              #if DEBUG

                              snprintf(Text,MAX_DATA_LENGTH,"%s hat den Status: %s", BOARD_NAMES[i], STATUS[i]);
                              centersay(Text, 5, 0, 255, 0);

                              #endif
                              ////////////////////////////// DEBUG END ///////////////////////////////
                              if (playerinfo(i, sName, MAX_NAME_LENGTH, dummy, dummy, dummy, dummy))
                              {
                                    for (j=0; j<MAX_USERS; j++) {
                                          if (strcmp(BOARD_WONIDS[i], PARSED_WONIDS[j]) == 0) {
                                                ValidWONID = 1;
                                          }
                                          if (strcmp(sName, PARSED_NAMES[j]) == 0) {
                                                ValidName = 1;
                                          }
                                    }
                                    if (ValidWONID == 1) {
                                          if (ValidName == 1) {
                                                STATUS[i] = "3";        // Dont annoy him, he is full-valid
                                          } else {
                                                STATUS[i] = "1";        // Give him his realname
                                          }
                                    } else {
                                          if (ValidName == 1) {
                                                STATUS[i] = "2";        // Give him an alternative name
                                          } else {
                                                STATUS[i] = "4";        // Dont annoy him
                                          }
                                    }
                              }
                              ///////////////////////////// DEBUG START //////////////////////////////
                              #if DEBUG

                              snprintf(Text,MAX_DATA_LENGTH,"%s hat nun den Status: %s", BOARD_NAMES[i], STATUS[i]);
                              say(Text);

                              #endif
                              ////////////////////////////// DEBUG END ///////////////////////////////
                        }
                        if (strcmp(STATUS[i], "1") == 0) {
                              ///////////////////////////// DEBUG START //////////////////////////////
                              #if DEBUG

                              snprintf(Text,MAX_DATA_LENGTH,"%s hat den Status: %s^nund wird nun umbenannt.", BOARD_NAMES[i], STATUS[i]);
                              centersay(Text, 5, 0, 255, 0);

                              #endif
                              ////////////////////////////// DEBUG END ///////////////////////////////
                              if (playerinfo(i, sName, MAX_NAME_LENGTH, dummy, dummy, dummy, iDead))
                              {
                                    if (bAction == 0) {           // Rename him
                                          if (iDead == 0) {
                                                snprintf(sCommand,MAX_DATA_LENGTH,"name ^"%s^"",PARSED_NAMES[i]);
                                                execclient(sName, sCommand);
                                                messageex(sName, "You have been renamed to your^noriginal name.", print_pretty);
                                                STATUS[i] = "9";
                                          }
                                    } else {                      // Kick him
                                          snprintf(Text,MAX_DATA_LENGTH,"Wrong name: ^"%s^". Use your realname !",sName);
                                          messageex(sName, "", print_console);
                                          messageex(sName, Text, print_console);
                                          kick(sName);
                                          STATUS[i] = "0";
                                    }
                              }
                        }
                        if (strcmp(STATUS[i], "2") == 0) {
                              ///////////////////////////// DEBUG START //////////////////////////////
                              #if DEBUG

                              snprintf(Text,MAX_DATA_LENGTH,"%s hat den Status: %s^nund bekommt einen alternativen Namen.", BOARD_NAMES[i], STATUS[i]);
                              centersay(Text, 5, 0, 255, 0);

                              #endif
                              ////////////////////////////// DEBUG END ///////////////////////////////
                              if (playerinfo(i, sName, MAX_NAME_LENGTH, dummy, dummy, dummy, iDead))
                              {
                                    if (bAction == 0) {           // Rename him
                                          if (iDead == 0) {
                                                snprintf(sCommand,MAX_DATA_LENGTH,"name ^"%s^"", ALTERNATIVE_NAMES[random(AltNamesQuantity-1)]);
                                                execclient(sName, sCommand);
                                                messageex(sName, "You have been renamed because your^nname was not permissible.", print_pretty);
                                                STATUS[i] = "9";
                                          }
                                    } else {                      // Kick him
                                          snprintf(Text,MAX_DATA_LENGTH,"Wrong name: ^"%s^". Use another name !",BOARD_NAMES[i]);
                                          messageex(sName, "", print_console);
                                          messageex(sName, Text, print_console);
                                          kick(sName);
                                          STATUS[i] = "0";
                                    }
                              }
                        }
                        if (strcmp(STATUS[i], "3") == 0) {
                              ///////////////////////////// DEBUG START //////////////////////////////
                              #if DEBUG

                              snprintf(Text,MAX_DATA_LENGTH,"%s hat den Status: %s^nund darf ungestoert weiterspielen.", BOARD_NAMES[i], STATUS[i]);
                              centersay(Text, 5, 0, 255, 0);

                              #endif
                              ////////////////////////////// DEBUG END ///////////////////////////////
                              STATUS[i] = "9";
                        }
                        if (strcmp(STATUS[i], "4") == 0) {
                              ///////////////////////////// DEBUG START //////////////////////////////
                              #if DEBUG

                              snprintf(Text,MAX_DATA_LENGTH,"%s hat den Status: %s^nund darf ungestoert weiterspielen.", BOARD_NAMES[i], STATUS[i]);
                              centersay(Text, 5, 0, 255, 0);

                              #endif
                              ////////////////////////////// DEBUG END ///////////////////////////////
                              STATUS[i] = "9";
                        }
                  }
                  return PLUGIN_CONTINUE;
            }
      }
      return PLUGIN_CONTINUE;
}

public plugin_connect(HLUserName, HLIP, UserIndex)
{
      if (!bEnabled)
            return PLUGIN_CONTINUE;

      if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) {
            new sHLUserName[MAX_TEXT_LENGTH];
            new sHLIP[MAX_TEXT_LENGTH];

            convert_string(HLUserName, sHLUserName, MAX_DATA_LENGTH);
            convert_string(HLIP, sHLIP, MAX_DATA_LENGTH);

            strcpy(BOARD_NAMES[UserIndex], sHLUserName, MAX_NAME_LENGTH);
            STATUS[UserIndex] = "9";

            ///////////////////////////// DEBUG START //////////////////////////////
            #if DEBUG

            printf("---- DEBUG ----^n");
            printf("Name: %s^nIP: %s^nIndex: %d^n",sHLUserName,sHLIP,UserIndex);
            printf("---- DEBUG ----^n");

            new DbgText[MAX_DATA_LENGTH];
            snprintf(DbgText,MAX_DATA_LENGTH,"Name: %s",sHLUserName);
            say(DbgText);
            snprintf(DbgText,MAX_DATA_LENGTH,"IP: %s",sHLIP);
            say(DbgText);
            snprintf(DbgText,MAX_DATA_LENGTH,"Index: %i",UserIndex);
            say(DbgText);
            snprintf(DbgText,MAX_DATA_LENGTH,"%s hat nun den Status: %s",sHLUserName, STATUS[UserIndex]);
            centersay(DbgText, 5, 0, 255, 0);

            #endif
            ////////////////////////////// DEBUG END ///////////////////////////////
      }
      return PLUGIN_CONTINUE;
}

initialize_name_file(loadfile[] = "")
{
      new GotLine;
      new iLineNum = 0;
      new strLineBuf[MAX_TEXT_LENGTH];
      new Text[MAX_TEXT_LENGTH];
      new tName[NAME_LENGTH];
      new tWonID[WONID_LENGTH];
      new x = 0;
      new y = 0;
      new i;
      new Alternative = 0;

      for(i=0; i<MAX_USERS; i++) {
            PARSED_NAMES[i] = "-";
            PARSED_WONIDS[i] = "void";
            BOARD_NAMES[i] = "-";
            BOARD_WONIDS[i] = "void";
            STATUS[i] = "0";
            ALTERNATIVE_NAMES[i] = "void";
      }
      /************ File should have the following format: **************

      ////////////////////////////////////
      // This file was generated for    //
      // Biohazards Spooky Names Plugin //
      // -------                        //
      // Things in here should have the //
      // following format:              //
      // Name;    WonID                 //
      // -------                        //
      // Example:                       //
      // -|FoC.MrSpoocy|-;    1234567   //
      ////////////////////////////////////

      -|FoC.MrSpoocy|-;       1234567
      [-Ek-]Biohazard;        7654321
      
      #### List of alternative names  ####
      Sir Knumskull
      John J.
      Captain Ahab
      Lonestar
      Lucker
      The Renamed One
      I dont want that name
      Thats not my real name
      What the hell...
      Master of Disaster

      ******************************************************************/

      if (fileexists(loadfile) > 0) {
            GotLine = readfile(loadfile, strLineBuf, iLineNum, MAX_TEXT_LENGTH);

            if (!GotLine) {
                  log("Something seems to be wrong with that Spooky Names Plugin");

                  return PLUGIN_HANDLED;
            }

            while (GotLine) {
                  if (x >= MAX_USERS) {
                        log("Spooky Names Plugin >> Name list truncated. Increase MAX_USERS.");
                        printf("Spooky Names Plugin >> Stopped parsing %s file.^n", loadfile);
                        break;
                  }
                  if (y >= MAX_ALTERNATIVE) {
                        log("Spooky Names Plugin >> List of alternative names truncated. Increase MAX_ALTERNATIVE.");
                        printf("Spooky Names Plugin >> Stopped parsing %s file.^n", loadfile);
                        break;
                  }
                  if (strncmp(strLineBuf, "#", 1) == 0) {
                        Alternative = 1;
                  }
                  if ((strncmp(strLineBuf, "#", 1) != 0) && (strncmp(strLineBuf, "//", 2) != 0) && (strlen(strLineBuf) != 0)) {
                        if (Alternative == 0) {
                              strsplit(strLineBuf, ";", tName, NAME_LENGTH, tWonID, WONID_LENGTH);
                              strtrim(tName, " ^t");
                              strtrim(tWonID, " ^t");
                        
                              if(strlen(tName) == 0) {
                                    log("Spooky Names Plugin >> Fileformat invalid !");

                                    return PLUGIN_HANDLED;
                              }
                              strcpy(PARSED_NAMES[x], tName, NAME_LENGTH);
                              strcpy(PARSED_WONIDS[x], tWonID, WONID_LENGTH);
                              x++;
                        }
                        if (Alternative == 1) {
                              strtrim(strLineBuf, " ^t");
                              strcpy(ALTERNATIVE_NAMES[y], strLineBuf, NAME_LENGTH);
                              y++;
                              AltNamesQuantity = y;
                        }
                  }
                  GotLine = readfile(loadfile, strLineBuf, ++iLineNum, MAX_TEXT_LENGTH);
            }

      }
      else {
            snprintf(Text, MAX_TEXT_LENGTH, "Spooky Names Plugin >> Cannot find %s file.", FILENAME);
            log(Text);

            return PLUGIN_HANDLED;
      }
      ///////////////////////////// DEBUG START //////////////////////////////
      #if DEBUG

      printf("---- DEBUG ----^n");
      for (i=0; i<MAX_USERS;i++) {
            printf("%s : %s^n",PARSED_NAMES[i], PARSED_WONIDS[i]);
      }
      printf("---- DEBUG ----^n");

      printf("---- ALTERNATIVE NAMES ----^n");
      for (i=0; i<MAX_USERS;i++) {
            printf("%s^n",ALTERNATIVE_NAMES[i]);
      }
      printf("---- ALTERNATIVE NAMES ----^n");

      #endif
      ////////////////////////////// DEBUG END ///////////////////////////////

      return PLUGIN_CONTINUE;
}

public plugin_init()
{
      plugin_registerinfo("Biohazards Spooky Names Plugin","Kicks or renames unauthorized players",STRING_VERSION);

      plugin_registercmd("sn_HandleWorld", "sn_HandleWorld", ACCESS_CONSOLE);
      plugin_registercmd("sn_HandleTeamSelect", "sn_HandleTeamSelect", ACCESS_CONSOLE);

      plugin_registercmd("admin_spooky_off", "admin_spooky_off", ACCESS_SPOOKY, "admin_spooky_off:  Disables Spooky Names Plugin.");
      plugin_registercmd("admin_spooky_on", "admin_spooky_on", ACCESS_SPOOKY, "admin_spooky_on:  Enables Spooky Names Plugin.");

      exec("logd_reg 62 admin_command sn_HandleWorld");
      exec("logd_reg 54 admin_command sn_HandleTeamSelect");

      initialize_name_file(FILENAME);

      return PLUGIN_CONTINUE;
}
Ich habe alle Tabulator Zeichen im Code durch Leerzeichen ersetzt, somit sollte es weniger LOOSE INDENTATIONS geben. Da ihr aber noch die Datei names.cfg braucht habe ich alles nochmal zusammen in ein Zip-Archiv gepackt und auf der Homepage gespeichert. Hier der direkte Download Link -> plugin_logd_spooky_names

Ich hoffe du testest es ausgiebig, MrSpoocy. Wenn es dir zusagt werde ich vielleicht noch eine Version 2 davon programmieren. An alle anderen: Auch testen und mir ein Feedback geben :wink:

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 17 Beiträge ] 


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