Ein neues Thema erstellen  Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Autogag erweitern
BeitragVerfasst: 17.06.2006, 15:28 

Registriert: 05.01.2006, 05:15
Beiträge: 20
Hi, ich bins mal wieder !

Zum Problem : Wir haben auf unserem Server in letzter Zeit vermehrt Spezis, die sich mehrfach in ihrer Ausdrucksweise vergreifen ... da ich aber nicht alle bannen möchte die sich in der Wortwahl vergreifen (jeder kann mal ein schlechten Tag haben), hatte ich die Idee, Rindys Autogag um 1 Funktion zu erweitern!

Kann mir einer von euch eine Funktion einbauen, wo eine Datei mit Steam_IDs erstellt wird, wo die Leute drin stehen, die den Chat nicht mehr benutzen dürfen und das Plugin dann bei connect vergleicht und dementsprechend handelt ?

So nach dem Motto : admin_pergag (Permanent-Gag)

Ich hau Rindys Quellcode hier nochmal kurz rein
Code:
#include <adminlib>
#include <plugin>

#define MAX_TIME 30

new g_Version[] = "0.8";
new g_LastTime[MAX_PLAYERS];
new g_NumSaid[MAX_PLAYERS][MAX_TIME];
new g_GagTime[MAX_PLAYERS];
new g_LIMIT = 3;
new g_TIME = 3;
new g_LIMIT2 = 10;
new g_TIME2 = 15;
new g_war;

public plugin_init() {
    plugin_registerinfo("Rinde's Autogag Plugin","Auto gags flooders",g_Version);
    plugin_registercmd("say","HandleSay",ACCESS_ALL,"");
    plugin_registercmd("say_team","HandleSay",ACCESS_ALL,"");
    if(!get_vaultnumdata("AF_LIMIT",g_LIMIT)) {
        set_vaultnumdata("AF_LIMIT",g_LIMIT);
    }
    if(!get_vaultnumdata("AF_TIME",g_TIME)) {
        set_vaultnumdata("AF_TIME",g_TIME);
    }
    if(!get_vaultnumdata("AF_LIMIT2",g_LIMIT2)) {
        set_vaultnumdata("AF_LIMIT2",g_LIMIT2);
    }
    if(!get_vaultnumdata("AF_TIME2",g_TIME2)) {
        set_vaultnumdata("AF_TIME2",g_TIME2);
    }
    g_TIME = min(MAX_TIME,g_TIME);
    g_TIME2 = min(MAX_TIME,g_TIME2);
    return PLUGIN_CONTINUE;
}

public plugin_connect(HLUserName,HLIP,UserIndex) {
    updatewar();
    g_LastTime[UserIndex] = 0;
    g_GagTime[UserIndex] = 0;
    return PLUGIN_CONTINUE;
}


public HandleSay(HLCommand,HLData,HLUserName,UserIndex) {
    if(g_war) return PLUGIN_CONTINUE;
    if(access(ACCESS_IMMUNITY,"")) return PLUGIN_CONTINUE;
    new CurTime = systemtime();
    if(g_LastTime[UserIndex] + g_GagTime[UserIndex] > CurTime) {
        g_GagTime[UserIndex] += 2;
        new UserName[MAX_NAME_LENGTH];
        new Text[80];
        convert_string(HLUserName,UserName,MAX_NAME_LENGTH);
        snprintf(Text,80,"You are still flooding the server and can't chat the next %i seconds.",g_LastTime[UserIndex] - CurTime + g_GagTime[UserIndex]);
        messageex(UserName,Text,print_chat);
        selfmessage(Text);
        return PLUGIN_HANDLED;
    }
    new SecsAgo = CurTime - g_LastTime[UserIndex];
    new i,j;
    new Total;
    g_LastTime[UserIndex] = CurTime;
    g_GagTime[UserIndex] = 0;
    j = max(SecsAgo,g_TIME);
    for(i=g_TIME2-1;i>=j;i--) {
        g_NumSaid[UserIndex][i] = g_NumSaid[UserIndex][i-SecsAgo];
        Total += g_NumSaid[UserIndex][i];
    }
    i = Total;
    for(j=j-1;j>=SecsAgo;j--) {
        g_NumSaid[UserIndex][j] = g_NumSaid[UserIndex][j-SecsAgo];
        Total += g_NumSaid[UserIndex][j];
    }
    Total += 1;
    if(Total - i >= g_LIMIT) g_GagTime[UserIndex] = g_TIME;
    if(Total >= g_LIMIT2) g_GagTime[UserIndex] += g_TIME2;
    for(i=min(SecsAgo,g_TIME2)-1;i>=0;i--) {
        g_NumSaid[UserIndex][i] = 0;
    }
    g_NumSaid[UserIndex][0] += 1;
    if(!g_GagTime[UserIndex]) return PLUGIN_CONTINUE;
    new UserName[MAX_NAME_LENGTH];
    new Text[80];
    convert_string(HLUserName,UserName,MAX_NAME_LENGTH);
    snprintf(Text,80,"You are flooding the server and can't chat the next %i seconds.",g_GagTime[UserIndex]);
    messageex(UserName,Text,print_chat);
    return PLUGIN_HANDLED;
}

updatewar() {
    static value[10];
    get_serverinfo("war",value,10);
    g_war = check_param(value);
}
Wäre echt nett, wenn das einer einbauen könnte !

CU, Belzebub


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

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Hmmm, das könnte etwas schwieriger werden, wenn die gewünschte Datei größer wird. Für wieviele Spieler ist es denn gedacht?

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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17.06.2006, 23:58 

Registriert: 05.01.2006, 05:15
Beiträge: 20
Die Datei sollte schon mehrere hundert IDs fassen können ;)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 18.06.2006, 00:07 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Tja, da liegt halt der Hund begraben. Es ist nicht performant. Jedesmal, wenn jemand auf den Server kommt, wird diese Datei durchsucht. Und das auslesen von Dateien ist nicht gerade schnell. Bei großen Dateien kann das schon mal zu Lags führen.
Die Alternative wären Dateien für einzelne Personen. Dadurch würde viele kleine Dateien entstehen, die sehr viel Platz wegnehmen (bei einer normalen Partionierung bis zu 16 kB pro Datei, obwohl sie eigentlich nur 1 Byte groß ist).

Also ich wäre da konsequenter. Wer sich nicht benehmen kann, fliegt! Bei mir setzt es auch bei verbalen Ausuferungen sofort einen permanenten Bann.

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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 18.06.2006, 00:15 

Registriert: 05.01.2006, 05:15
Beiträge: 20
Nunja, stimmt schon ...

Ich hab z.B. in HLGuard über 4500 SteamIDs als gebannt markiert ... wenn jemand den Server joint, wird diese Datei also auch jedesmal durchgeforstet ... genau wie bei Antifake ... die DB Datei umfasst über 1 MB ... von lags wenn jemand connectet oder rausgeht keine Spur ...

Ich würde das aber doch gerne testen, weil mir viel dran liegt !

Ist es viel Aufwand das zu scripten ? Ich würde das gerne selber machen, nur fehlen mir bei der Sache einfach die Programmier Kenntnisse ...

Würde mich freuen, wenn du das trotzdem einbauen könntest pls ! :)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 18.06.2006, 11:49 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
HLGuard dürfte seine Bans an HLDS weitergeben. Dort liegen die Bans dann im Speicher und das Plugin braucht sich um nichts mehr zu kümmern.

Das Antifakeplugin benutzt die Variante mit mehreren Dateien. Das, was Du meinst ist die Indexdatei. Wäre mal Zeit für ein Purge. ;)

Momentan habe ich keine Zeit für sowas. Ganz trivial ist es leider nicht. Vielleicht kann ja Sir Drink a lot oder Rinde etwas Zeit erübrigen.

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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.07.2006, 02:33 

Registriert: 05.01.2006, 05:15
Beiträge: 20
Ich habs übrigens inzwischen zusammen gebastelt ... mithilfe der Vault.ini!

CU, Belzebub


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 7 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 ]"