leon02 发表于 2004-9-4 12:31:03

求助!!!关于惩罚骂人插件的问题。

我的服务器是CS1。5,装的是AMX0。9。3,用惩罚骂人插件的只能屏蔽骂人的话,不能惩罚啊。请老大指点迷津!!谢谢!!
还有,如果可以的话,请老大修改可以屏蔽胀话ID,OP不受限制,谢谢!!!


/* AMX Mod script.
*
* (c) Copyright 2003, Dra
* This file is provided as is (no warranties).
*
*/

#include <amxmod>
#include <amxmisc>

#define MAX_WORD_NUM 256

/* cvar : amx_maxswear 3 , one map swear 3 times punish it */

new SwearSlap = 50    /* every swear slap damage */
new SwearMoney = 2000 /* every swear lost money */
new SwearType = 1    /* punish type : 1 kick, 2 ban, 3 gag, 0 do nothing */
new SwearBanTime = 30    /* ban punish time */
new ReplaceType = 1    /* swear msg : 1 replace swear words to '*', 2 handle msg, 3 replace msg */
new replacemsg1[] = "I tried to swear%s"
new replacemsg2[] = ", but if i do it %d more times i will be %sed!"

new wordfile[] = "addons/amx/wordlist.cfg"
new words
new wlen
new wnum
new swearflag
new g_logFile
new spword[] = {"","kick","bann","gag"}

public handlesay(id,level,cid) {
    new cmd, msg
    new i, b, j, s, len
    if (swearflag==-1) {
      client_print(id,print_notify,"* You are gagged...")
      return PLUGIN_HANDLED
    }
    read_args(msg,191)
    for (i=0;i<wnum;++i)
      if ((b=containi(msg,words))!=-1) {
            s = 1
            for (j=b;j<b+wlen;++j)
                msg='*'
      }
    if (!s)    return PLUGIN_CONTINUE
    b = get_cvar_num("amx_maxswear")
    if ((++swearflag>= b) && id) {
      if (SwearType && run_punish(id)!=3) return PLUGIN_HANDLED
    }
    set_user_money(id,max(get_user_money(id)-SwearMoney,0))
    if (is_user_alive(id))
      user_slap(id,min(get_user_health(id)-1,SwearSlap))
    if (swearflag==-1 || ReplaceType==2) return PLUGIN_HANDLED
    if (!ReplaceType) return PLUGIN_CONTINUE
    read_argv(0,cmd,31)
    if (ReplaceType==3) {
      len = format(msg,191,replacemsg1, swearflag == 1 ? "" : " once again")
      if (SwearType) {
            format(msg,191-len,replacemsg2, b-swearflag, spword)
      }
    }
    client_cmd(id,"%s %s",cmd,msg)
    return PLUGIN_HANDLED
}
public run_punish(id) {
    new name, bantag
    get_user_name(id,name,31)
    console_print(0," %s have been %sed .",name,spword)
    if (SwearType==2) {
      console_print(id,"* you have been banned%d due to swear punish .",SwearBanTime)
      if (get_cvar_num("sv_lan")){
            get_user_ip(id, bantag, 31,1)
            server_cmd("addip %i %s;wait;writeip;kick #%d", SwearBanTime, bantag, get_user_userid(id))
      } else {
            get_user_authid(id, bantag, 31)
            server_cmd("banid %i %s kick;wait;writeid",SwearBanTime ,bantag)
      }
      log_to_file(g_logFile,"(swear) banned %d %s <%s> due to swear punish",SwearBanTime, name,bantag)
      return 2
    }
    if (SwearType==1) {
      log_to_file(g_logFile,"(swear) kicked %s <%s> due to swear punish", name,bantag)
      console_print(id,"* you have been kicked due to swear punish .")
      server_cmd("kick #%d", get_user_userid(id))
      return 1
    }
    swearflag = -1
    client_print(id,print_notify,"* You are gagged...")
    return 3
}
public read_wordfile() {
    new line, filename
    build_path(filename,63,wordfile)
    if (!file_exists(filename)) return 0
    while (wnum<MAX_WORD_NUM && read_file(filename,line++,words,31,wlen))
      if (words != ';') wnum++
    return wnum
}

public client_connect(id)
    swearflag=0
public plugin_init() {
    register_plugin("Amx Max Swear","0.9.2","dra")
    register_concmd("say","handlesay")
    register_concmd("say_team","handlesay")
    register_concmd("amx_say","handlesay")
    register_concmd("amx_chat","handlesay")
    register_concmd("amx_psay","handlesay")
    register_concmd("amx_tsay","handlesay")
    register_concmd("amx_vote","handlesay")
    register_cvar("amx_maxswear","3")
    if (SwearType<0 || SwearType>3) SwearType=1
    get_logfile(g_logFile,15)
    read_wordfile()
    return PLUGIN_CONTINUE

leon02 发表于 2004-9-22 11:47:33

我自己顶一下

vick 发表于 2004-9-22 19:22:17

帮你顶一下!
页: [1]
查看完整版本: 求助!!!关于惩罚骂人插件的问题。