我想改成!CD4.32.0没有限制,特定CD版本或特定名字如CD4.33.4和[No C-D] [Old C-D]一样受到惩罚和限制武器,[Old C-D]玩家提示后踢出服务器!
老大们快来帮忙啊!谢谢!!
/* AMX Mod X script.
(c) Copyright 2004, 奔驰 (wzf828@163.com)
This file is provided as is and with no warranties or guarentee of usability.
*/
#include <amxmodx>
#include <fun>
#include <cstrike>
/*
This plug-in allows you to restrict weapons and limit the money of players who do not have C-D or
have a old version of C-D. The plug-ins behavior can be modified to ignore Old C-D and
trigger only on No C-D or trigger on both. Weapons can have separate restriction settings
for No C-D and Old C-D. Weapons that are restricted can not be picked up or purchased.
C-D detection is NOT done by string matching the players name. This plugin uses a direct
link to C-D through it's cvars and server commands to speed up detection time and lower
overhead a little. In addition to configurable weapon restrictions, this plugin can
affect the money that No C-D and Old C-D make. While No C-Ds make 20% of the normal amount,
C-D users make 110% of the normal amount. The percentages are configurable so they could be
anything from 1 to 64000+ %. Later versions will support a damage manager that will be able
to increase damage done to No C-D'ers while reducing damage done by No C-D'ers.
Requirements:
<amxmodx>
<fun>
<cstrike>
Cheating-Death hl server plugin
Installation:
Put CDpunisher.amx in your amx plugins directory and add CDpunisher.amx to your plugins.ini file.
Remove cdvalidatecmd, cdnovalidatecmd, cdoldvalidatecmd and set cdrequired to 0 in server cfg files.
Then add these cvars to your server.cfg
// Begin cfg
// These values are the recomended values. Please feel free to change them.
cdpunish_disarm 2 // 0=off 1=no cd only 2=old cd and no cd
cdpunish_requireauth 1 // 0=trusted 1=treat as No C-D 2=Treat as Old C-D
cdpunish_moneymanager 1 // 1=on 0=off
cdpunish_cdauthmoney 110 // If C-D gives +10%
cdpunish_cdnoauthmoney 20 // if No C-D subtracts 80%
cdpunish_cdoldauthmoney 50 // if Old C-D subtracts 50%
// The following are the weapon restriction rules.
// 0 = unrestricted
// 1 = No C-D restricted
// 2 = No C-D and Old C-D restricted
// By default all restrictions are off
cdpunish_p228 1
cdpunish_shield 1
cdpunish_scout 1
cdpunish_xm1014 1
cdpunish_mac10 1
cdpunish_aug 1
cdpunish_elite 1
cdpunish_fiveseven 1
cdpunish_ump45 1
cdpunish_sg550 1
cdpunish_galil 1
cdpunish_famas 1
cdpunish_usp 1
cdpunish_glock18 1
cdpunish_awp 1
cdpunish_mp5navy 1
cdpunish_m249 1
cdpunish_m3 1
cdpunish_m4a1 1
cdpunish_tmp 1
cdpunish_g3sg1 1
cdpunish_deagle 1
cdpunish_sg552 1
cdpunish_ak47 1
cdpunish_p90 1
cdpunish_awp 1
cdpunish_hegrenade 1
cdpunish_flashbang 1
cdpunish_smokegrenade 1
cdpunish_nvgs 1
cdpunish_defuser 1
cdpunish_vest 1
cdpunish_vesthelm 1
cdpunish_primammo 1
cdpunish_secammo 1
// End cfg
*note - if you have cdvalidatecmd, cdnovalidatecmd, cdoldvalidatecmd or cdrequired cvar set in configuration be
aware that this plugin will ignore those settings. This plugin uses them to interact with CD.
todo:
-Add a damage increase dealt to No C-D clients and damage reduction dealt by No C-D clients.
Changelog:
0.1.3 -Added money management and restricted weapons from the purchase menus.
0.1.2 -Corrected version number and added weapon restrictions.
1.1 -ported my old stuff from CD Disarm to CD Punish.
*/
new cdauthrecords[33] // [index][authrecords]
new pname[33][64] // [index][name]
new weap[33][32] // [index][weaponidlist]
new userids[33] // [index][userid]
new nplayers //int # of players
new pmoney[33] //[index][money]
new restricted_weapons[32] //[weapon_index][code]
public cdauth(id)
{
new arg1s[32], arg2s[4], arg2
read_argv(0,arg1s,31)
read_argv(1,arg2s,3)
arg2 = str_to_num(arg2s)
id = getidfromuserid(arg2)
if(contain(arg1s, "register_as_cdauth") != -1)
{
cdauthrecords[id] = 0
cdauthnotify(id,0)
}
else if(contain(arg1s, "register_as_cdnoauth") != -1)
{
cdauthrecords[id] = 1
cdauthnotify(id,1)
weapon_trigger(id)
}
else if(contain(arg1s, "register_as_cdoldauth") != -1)
{
cdauthrecords[id] = 2
cdauthnotify(id,2)
weapon_trigger(id)
}
else
{
return 1
}
return PLUGIN_HANDLED
}
getidfromuserid(userid)
{
loadplayers()
for(new i=0;i<sizeof(userids);++i)
{
if(userids == userid)
{
return i
}
}
return 1
}
loadplayers()
{
new id, players[32] // !!!!!!!!!!!!!! i want this to be [33] but the compiler wants [32]
get_players(players,nplayers)
for(new i=0;i<nplayers;++i)
{
id = players
get_user_name(id,pname[id],63)
userids[id] = get_user_userid(id)
}
}
loadrestrictedweapons()
{
restricted_weapons[1] = get_cvar_num("cdpunish_p228")
restricted_weapons[2] = get_cvar_num("cdpunish_shield")
restricted_weapons[3] = get_cvar_num("cdpunish_scout")
restricted_weapons[4] = get_cvar_num("cdpunish_hegrenade")
restricted_weapons[5] = get_cvar_num("cdpunish_xm1014")
restricted_weapons[6] = 0 // c4
restricted_weapons[7] = get_cvar_num("cdpunish_mac10")
restricted_weapons[8] = get_cvar_num("cdpunish_aug")
restricted_weapons[9] = get_cvar_num("cdpunish_smokegrenade")
restricted_weapons[10] = get_cvar_num("cdpunish_elite")
restricted_weapons[11] = get_cvar_num("cdpunish_fiveseven")
restricted_weapons[12] = get_cvar_num("cdpunish_ump45")
restricted_weapons[13] = get_cvar_num("cdpunish_sg550")
restricted_weapons[14] = get_cvar_num("cdpunish_galil")
restricted_weapons[15] = get_cvar_num("cdpunish_famas")
restricted_weapons[16] = get_cvar_num("cdpunish_usp")
restricted_weapons[17] = get_cvar_num("cdpunish_glock18")
restricted_weapons[18] = get_cvar_num("cdpunish_awp")
restricted_weapons[19] = get_cvar_num("cdpunish_mp5navy")
restricted_weapons[20] = get_cvar_num("cdpunish_m249")
restricted_weapons[21] = get_cvar_num("cdpunish_m3")
restricted_weapons[22] = get_cvar_num("cdpunish_m4a1")
restricted_weapons[23] = get_cvar_num("cdpunish_tmp")
restricted_weapons[24] = get_cvar_num("cdpunish_g3sg1")
restricted_weapons[25] = get_cvar_num("cdpunish_flashbang")
restricted_weapons[26] = get_cvar_num("cdpunish_deagle")
restricted_weapons[27] = get_cvar_num("cdpunish_sg552")
restricted_weapons[28] = get_cvar_num("cdpunish_ak47")
restricted_weapons[29] = 0 // knife
restricted_weapons[30] = get_cvar_num("cdpunish_p90")
restricted_weapons[31] = 0 // Unused
}
disarm_player(id)
{
new wname[32], num, origin[3]
get_user_weapons(id,weap[id],num)
for(new a=0;a<num;++a)
{
new weaponid
new restricted = false
get_weaponname(weap[id][a],wname,31)
weaponid = weap[id][a]
if(restricted_weapons[weaponid] == 2)
{
restricted = true
}
if(restricted_weapons[weaponid] == 1 && cdauthrecords[id] == 1)
{
restricted = true
}
if(restricted)
{
get_user_origin(id,origin,0)
origin[2] -= 3000
set_user_origin(id,origin)
engclient_cmd(id,"drop",wname)
engclient_cmd(id,"weapon_knife")
origin[2] += 3003
set_user_origin(id,origin)
}
}
}
public weapon_trigger(id)
{
if(cdauthrecords[id] == 1 && get_cvar_num("cdpunish_disarm") != 0)
{
disarm_player(id)
}
else if(cdauthrecords[id] == 2 && get_cvar_num("cdpunish_disarm") == 2)
{
disarm_player(id)
}
else if(cdauthrecords[id] == 255 && get_cvar_num("cdpunish_disarm") != 0)
{
return 1
}
return PLUGIN_HANDLED
}
cdauthnotify(id,code)
{
if(code == 0)
{
client_print(id,print_chat,"[服务器 C-D 检测结果]: 通过检测欢迎你 我的朋友 :D")
//client_cmd(id,"speak ^"C D 通过检测. 你可以购买全部的武器.^"")
}
else if(code == 1 && get_cvar_num("cdpunish_disarm") != 0)
{
client_print(id,print_chat,"[服务器 C-D 检测结果]: 没有运行[C-D v4.32.0]很多枪买不了的 :(")
//client_cmd(id,"speak ^"C D 未通过检测. 你不能购买武器. 请安装 C-D v4.32.0^"")
}
else if(code == 2 && get_cvar_num("cdpunish_disarm") == 2)
{
client_print(id,print_chat,"[服务器 C-D 检测结果]: 好像你的C-D有作弊嫌疑 :[")
client_cmd(id,"speak ^"C D 无法检测. 你不能购买武器. 请安装 C-D v4.32.0^"")
print_cd_message(id)
server_cmd("kick #%i 请正确打开C-D v4.32.0,不要作弊!!!", get_user_userid(id))
}
else if(code == 3 && get_cvar_num("cdpunish_requireauth") == 1)
{
client_print(id,print_chat,"[服务器 提示]: 没有运行 C-D v4.32.0 游戏不能完美进行,请打开 C-D v4.32.0 重新进入.")
//client_cmd(id,"speak ^"你可以购买武器. 但是你机器的C-D不被认可.^"")
}
else if(code == 255)
{
return 1
}
return PLUGIN_CONTINUE
}
public checkcdstatus(id)
{
new arg0s[32], arg1s[4], arg2s[4], arg1, arg2, code
read_argv(0,arg0s,31)
read_argv(1,arg1s,3)
read_argv(2,arg2s,3)
arg1 = str_to_num(arg1s)
arg2 = str_to_num(arg2s)
id = getidfromuserid(arg1)
code = arg2
if(code == 0)
{
cdauthrecords[id] = 0
cdauthnotify(id,0)
}
else if(code == 1)
{
cdauthrecords[id] = 1
cdauthnotify(id,1)
}
else if(code == 2)
{
cdauthrecords[id] = 2
cdauthnotify(id,2)
}
else if(code == 3)
{
if(get_cvar_num("cdpunish_requireauth") == 0)
{
cdauthrecords[id] = 0
}
else if(get_cvar_num("cdpunish_requireauth") == 1)
{
cdauthrecords[id] = 1
}
else if(get_cvar_num("cdpunish_requireauth") == 2)
{
cdauthrecords[id] = 2
}
cdauthnotify(id,3)
}
else
{
return 1
}
weapon_trigger(id)
return PLUGIN_HANDLED
}
public money_manager(id)
{
if(get_cvar_num("cdpunish_moneymanager") != 1)
{
return PLUGIN_HANDLED
}
new cdauthmoney = get_cvar_num("cdpunish_cdauthmoney")
new cdnoauthmoney = get_cvar_num("cdpunish_cdnoauthmoney")
new cdoldauthmoney = get_cvar_num("cdpunish_cdoldauthmoney")
new cash, oldcash, newcash
oldcash = pmoney[id]
newcash = cs_get_user_money(id)
if(oldcash < newcash)
{
cash = newcash - oldcash
if (cdauthmoney > 0 && cdauthrecords[id] == 0)
{
cash = get_percentage(cdauthmoney,cash)
}
if (cdnoauthmoney > 0 && cdauthrecords[id] == 1)
{
cash = get_percentage(cdnoauthmoney,cash)
}
if (cdoldauthmoney > 0 && cdauthrecords[id] == 2)
{
cash = get_percentage(cdoldauthmoney,cash)
}
cash += oldcash
if (cash > 16000)
{
cash = 16000
}
else if (cash < 0)
{
cash = 0
}
cs_set_user_money(id,oldcash,0)
cs_set_user_money(id,cash,1)
}
pmoney[id] = cs_get_user_money(id)
return PLUGIN_HANDLED
}
get_percentage(percentile,intvalue)
{
new num
num = intvalue / 100
intvalue = num * percentile
return intvalue
}
public client_disconnect(id)
{
loadplayers()
}
public client_connect(id)
{
loadplayers()
set_cvar_string("cdvalidatecmd","register_as_cdauth %d")
set_cvar_string("cdnovalidatecmd","register_as_cdnoauth %d")
set_cvar_string("cdoldvalidatecmd","register_as_cdoldauth %d")
set_cvar_num("cdrequired",0)
loadrestrictedweapons()
}
public client_command(id)
{
new arg[32]
read_argv(0,arg,31)
if(contain(arg, "joinclass") != -1)
{
server_cmd("cdstatus reportcdstatus ^"%d^"",get_user_userid(id))
weapon_trigger(id)
return PLUGIN_CONTINUE
}
for(new i=0;i<37;++i)
{
new wname[32]
switch (i)
{
case 1: wname = "p228"
case 2: wname = "shield"
case 3: wname = "scout"
case 4: wname = "hegren"
case 5: wname = "xm1014"
case 6: wname = "" // c4
case 7: wname = "mac10"
case 8: wname = "aug"
case 9: wname = "sgren"
case 10: wname = "elites"
case 11: wname = "fn57"
case 12: wname = "ump45"
case 13: wname = "sg550"
case 14: wname = "galil"
case 15: wname = "famas"
case 16: wname = "usp"
case 17: wname = "glock"
case 18: wname = "awp"
case 19: wname = "mp5"
case 20: wname = "m249"
case 21: wname = "m3"
case 22: wname = "m4a1"
case 23: wname = "tmp"
case 24: wname = "g3sg1"
case 25: wname = "flash"
case 26: wname = "deagle"
case 27: wname = "sg552"
case 28: wname = "ak47"
case 29: wname = "" // knife
case 30: wname = "p90"
case 31: wname = "nvgs"
case 32: wname = "defuser"
case 33: wname = "vest"
case 34: wname = "vesthelm"
case 35: wname = "primammo"
case 36: wname = "secammo"
default: wname = ""
}
if(equal(wname, arg) && restricted_weapons != 0 && cdauthrecords[id] != 0)
{
if(cdauthrecords[id] == 1)
{
client_print(id,print_center,"**这种武器是受限制的 未打开C-D v4.32.0禁止购买**")
return PLUGIN_HANDLED
}
else if(cdauthrecords[id] == 2 && restricted_weapons == 2)
{
client_print(id,print_center,"**这种武器是受限制的 未打开C-D v4.32.0禁止购买**")
return PLUGIN_HANDLED
}
}
}
return PLUGIN_CONTINUE
}
public roundstart()
{
new players[32] //!!!!!!!!!! i want [33] compiler wants [32]
get_players(players,nplayers)
for(new i=0;i<nplayers;++i)
{
server_cmd("cdstatus reportcdstatus ^"%d^"",userids[players])
weapon_trigger(players)
}
if(get_cvar_num("cdpunish_disarm") != 0)
{
set_hudmessage(150,150,150,0.50,0.55,0,8.0,8.0,1.0,4.0,2)
show_hudmessage(0, "[服务器 通知]: 玩家必须打开C-D v4.32.0才能正常享受游戏中的快乐.")
}
if(get_cvar_num("cdpunish_moneymanager") != 0)
{
set_hudmessage(0,255,0,0.50,0.65,0,8.0,8.0,1.0,4.0,3)
show_hudmessage(0, "开了C-D v4.32.0的玩家会得到 ^"%d^" % 的金钱奖励。",get_cvar_num("cdpunish_cdauthmoney"))
set_hudmessage(0,255,0,0.50,0.68,0,8.0,8.0,1.0,4.0,4)
show_hudmessage(0, "开了C-D v4.33.4的玩家只能得到 ^"%d^" % 的金钱奖励。",get_cvar_num("cdpunish_cdnoauthmoney"))
}
}
public plugin_init()
{
register_plugin("C-D Punisher","0.1.2","Josh Oshiro")
register_cvar("cdpunish_disarm","2")
register_cvar("cdvalidatecmd","register_as_cdauth %d")
register_cvar("cdnovalidatecmd","register_as_cdnoauth %d")
register_cvar("cdoldvalidatecmd","register_as_cdoldauth %d")
register_cvar("cdrequired","0")
register_cvar("cdpunish_cdauthmoney","110")
register_cvar("cdpunish_cdnoauthmoney","20")
register_cvar("cdpunish_cdoldauthmoney","50")
register_cvar("cdpunish_requireauth","1")
register_cvar("cdpunish_moneymanager","1")
register_cvar("cdpunish_p228","0")
register_cvar("cdpunish_shield","0")
register_cvar("cdpunish_scout","0")
register_cvar("cdpunish_xm1014","0")
register_cvar("cdpunish_mac10","0")
register_cvar("cdpunish_aug","0")
register_cvar("cdpunish_elite","0")
register_cvar("cdpunish_fiveseven","0")
register_cvar("cdpunish_ump45","0")
register_cvar("cdpunish_sg550","0")
register_cvar("cdpunish_galil","0")
register_cvar("cdpunish_famas","0")
register_cvar("cdpunish_usp","0")
register_cvar("cdpunish_glock18","0")
register_cvar("cdpunish_awp ","0")
register_cvar("cdpunish_mp5navy","0")
register_cvar("cdpunish_m249","0")
register_cvar("cdpunish_m3","0")
register_cvar("cdpunish_m4a1","0")
register_cvar("cdpunish_tmp","0")
register_cvar("cdpunish_g3sg1","0")
register_cvar("cdpunish_deagle","0")
register_cvar("cdpunish_sg552","0")
register_cvar("cdpunish_ak47","0")
register_cvar("cdpunish_p90","0")
register_cvar("cdpunish_awp","0")
register_cvar("cdpunish_hegrenade","0")
register_cvar("cdpunish_smokegrenade","0")
register_cvar("cdpunish_flashbang","0")
register_cvar("cdpunish_defuser","0")
register_cvar("cdpunish_vest","0")
register_cvar("cdpunish_vesthelm","0")
register_cvar("cdpunish_primammo","0")
register_cvar("cdpunish_secammo","0")
register_srvcmd("register_as_cdauth","cdauth")
register_srvcmd("register_as_cdnoauth","cdauth")
register_srvcmd("register_as_cdoldauth","cdauth")
register_srvcmd("reportcdstatus","checkcdstatus")
register_event("CurWeapon","weapon_trigger","b")
register_event("Money","money_manager","b")
register_logevent("roundstart",2,"1=Round_Start")
} |