y543685085 发表于 2008-9-22 01:37:20

帮忙改改插件

这是老友记 没开SXE反作弊器的限制游戏时间和限制枪支的那插件


/*
sXe required (No sXe 提示插件)(AMXX 1.76C)
来源:老友记<http://cs-friends.com.cn>
iG_os

// 插件说明:
* 当玩家没有安装 sXe Injected 反作弊客户端,进入服务器
* 则显示提示信息,并可以设置武器限制(刀),及定时踢出设置。
* sXe Injected Anti-Cheat 反作弊(服务器端/客户端)
* 官方主页:http://www.sxe-injected.com/
// 可用设置参数:
1:是否打开限制武器功能。当武器限制打开时,No sXe 玩家进入只能用刀,并强制丢掉C4
no_sxei_wpnlimit 1 // 0(关闭功能) 1=只能用刀,2=禁止某些主枪
2:是否打开自动踢出功能。No sXe 玩家进入,在规定时间内自动被踢出
no_sxei_timelimit 120 // 设置限制时间,秒(默认120秒),0 为关闭自动踢出功能

注意:插件设置仅在 sxei 服务器参数 __sxei_required 0 (不限制 sxei 客户端)时才工作
* 因为 sXe 没有提供允许插件可以检查玩家是否安装 sXe/版本的功能,但会自动更改没有启动 sXe 玩家的名字
* 所以,本插件检测当玩家名字包含 "" 则视为没有安装 sXe 进入
更新日志::
   2007-2-25 v1.0
   2007-2-27 v1.1
   bug 修正:在玩家被提出前换图,对玩家检查无效的bug
   bug 修正:no_sxei_wpnlimit 设置相反了
   2007-2-27 v1.2
   修改检测名字的过程
   2007-2-27 v1.3
   修正武器禁止问题
   2007-2-27 v1.4
   尝试解决挂机问题??
   2007-2-28 v1.5
   修正改检查C4的方法
   2007-2-28 v1.6
   修正丢C4判断, 精简了一些代码
   2007-3-5 v2.0
   增加允许使用特定武器(手枪)可以自定义使用武器类型,详改代码。
*/

/* ############################################################################################# */
/* ######## 可以修改以下引号内的提示信息,记得保存为 UTF-8(不带签名),然后再重新编译 ######### */
// 提示信息内容设置,(内容不要太长)
new const HUDMSG1[] = "怀化电子竞技联盟提示:你需要安装 sXe 反作弊才允许正常游戏"
new const HUDMSG2[] = "sXe 下载地址: http://www.0745ea.com/sxe"
new const HUDMSG3[] = "如有疑问请访问论坛: http://www.0745ea.com"
// 提示信息显示位置设置
#define HUD_Xpos -1.0
#define HUD_Ypos 0.60
// 提示信息显示颜色设置
#define HUD_RED   255
#define HUD_GREEN 10
#define HUD_BLUE10
/* ########################################### 可以修改终止 #################################### */
/* ############################################################################################# */

/************** 以下内容如果你不确定,请不要修改 **************/
new const PLUGINNAME[] = "sXe required"
new const VERSION[]    = "2.0.16"
new const AUTHORS[]    = "iG_os"
#include <amxmodx>
#include <fakemeta>
new pCVAR_wpnlimit
new pCVAR_timelimit
new bool:g_bNO_sXe// 是否为 No sXe 玩家标记
new Float:g_fKickTime// 踢出时限
new g_szInfo
#define DISPLAYMSGID 56432
// 执行插件初始化
public plugin_init()
{
   // 注册插件名字/版本/作者名字
   register_plugin(PLUGINNAME, VERSION, AUTHORS)
   // 注册系统武器消息
   register_event("CurWeapon", "SwitchWeapon", "be", "1=1")
   // 注册玩家信息更换消息
   register_forward(FM_ClientUserInfoChanged, "FM_client_userinfochanged")
   // 玩家捡到出生时获得 C4 日志消息
   register_logevent("logevent_GotTheBomb", 3, "2=Spawned_With_The_Bomb")
   // 玩家捡到 C4 日志消息
   register_logevent("logevent_GotTheBomb", 3, "2=Got_The_Bomb")
   // cvars 参数注册
   pCVAR_wpnlimit = register_cvar("no_sxei_wpnlimit", "1") // 是否打开限制武器功能
   pCVAR_timelimit = register_cvar("no_sxei_timelimit", "120") // 是否打开自动踢出功能
   new sz_SXE_VER
   get_cvar_string("__sxei_clt_ver", sz_SXE_VER, 4)
   formatex(g_szInfo, 511, "注意你没有安装 sXe v%s 反作弊工具客户端^n%s^n%s^n%s", sz_SXE_VER, HUDMSG1, HUDMSG2, HUDMSG3)
   
   // 延时检查服务器参数
   set_task(2.5, "delay_load")
}
// 执行延时检查
public delay_load()
{
   // 检查服务器参数 __sxei_required = ?
   if (!cvar_exists("__sxei_required") || (get_cvar_num("__sxei_required") != 0) )
      pause("ad") // 如果 __sxei_required 不等于 0 ,则暂定插件运作,节省资源
}

// 玩家进入消息
public client_putinserver(id)
{
   // 初始化设置
   g_bNO_sXe = false
   // 设置踢出时间上限
   g_fKickTime = get_gametime() + get_pcvar_num(pCVAR_timelimit)
   // 进行名字检查
   new szName
   get_user_name(id, szName, 31)
   checkname(id, szName)
}

// 玩家离线消息
public client_disconnect(id)
{
   // 清除可能存在的任务
   remove_task(id)
   remove_task(id+DISPLAYMSGID)
   g_bNO_sXe = false
   g_fKickTime = -1.0
}
// 名字更改消息
public FM_client_userinfochanged(id, iBuffer)
{
   // 玩家是否依然在线?
   if (!is_user_connected(id))
      return FMRES_IGNORED // 离开,则返回
   // 获取名字改变情况
   static szOldName, szNewName
   get_user_name(id, szOldName, 31)
   engfunc(EngFunc_InfoKeyValue, iBuffer, "name", szNewName, 31)
   // 检查是否改名字?(Death change name by VEN)
   if (equal(szNewName, szOldName)) // 如果名字没有改变,则返回
      return FMRES_IGNORED
   // 进行名字检查
   checkname(id, szNewName)
   // * CS 默认状态下,如果玩家在死亡状态,更换名字是不被执行的
   // 所以在这里检查,如果玩家在死亡状态更换名字,则发送一次名字更换消息
   // 让名字更换,在死亡状态下也可以正常显示/执行,方便查看玩家名字
   if (!is_user_alive(id))
   {
      message_begin(MSG_BROADCAST, get_user_msgid("SayText"))
      write_byte(id)
      write_string("#Cstrike_Name_Change")
      write_string(szOldName)
      write_string(szNewName)
      message_end()
      return FMRES_SUPERCEDE
   }
   return FMRES_IGNORED
}

// 执行名字检查
checkname(id, szName[])
{
   // 名字包含 "" ,被视为没有安装 sXe Injected 客户端进入游戏
   if (contain(szName, "") != -1)
   {
      new TaskID = id+DISPLAYMSGID
      // 标记玩家为没有安装 sXe
      g_bNO_sXe = true
      // 清除可能已经存在的任务
      if (task_exists(TaskID)) remove_task(TaskID)
      // 启动一次提示任务
      set_task(random_float(2.0,6.0), "show_msg_one", id)
      // 启动无限循环检查/提示任务
      set_task(15.0, "check_player_static", TaskID, _, _, "b")
   }
}
// 玩家持武器消息处理
public SwitchWeapon(id)
{
   // 是否为 NO-sXe 玩家?是否打开限制武器功能?
   if (!g_bNO_sXe)
      return PLUGIN_CONTINUE
   static wpn
   wpn = read_data(2)
   weapon_limited(id, wpn)
   return PLUGIN_CONTINUE
}

// 玩家获得C4消息
public logevent_GotTheBomb()
{
   // 获得玩家id
   new szLoguser, szName
   read_logargv(0, szLoguser, 79)
   parse_loguser(szLoguser, szName, 31)
   new id = get_user_index(szName)
   // 是否为 NO-sXe 玩家?是否打开限制武器功能?
   if (g_bNO_sXe && get_pcvar_num(pCVAR_wpnlimit))
   {
      // 强制丢掉C4
      client_cmd(id, "weapon_c4")
      client_cmd(id, "drop")
   }
}

// 定时提示/检查任务
public check_player_static(param)
{
   new id = param - DISPLAYMSGID
   if (is_user_connected(id))
   {
      // 是否打开限制武器功能?
      if (get_pcvar_num(pCVAR_wpnlimit) && is_user_alive(id))
      {
         // 玩家是否有c4?
         if (user_has_weapon(id, CSW_C4)){
            client_cmd(id, "weapon_c4") // 有c4,则强制丢掉C4
            client_cmd(id, "drop")
         }
         // 玩家当前武器是否为禁止项类型?
         new wpn, iClip, iAmmo
         wpn = get_user_weapon(id, iClip, iAmmo)
         weapon_limited(id, wpn)
      }
      // 是否打开定时踢出功能?是否超时?
      if ( (get_gametime() > g_fKickTime) && (get_pcvar_num(pCVAR_timelimit) > 0) )
      {
         client_cmd(id, "spk events/tutor_msg") // 播放提示音
         kick_player(id) // 超时 kick player
         remove_task(param)
         return
      }
      // 显示提示信息
      show_msg_one(id)
   }
   else remove_task(param)
}

// 显示提示信息
public show_msg_one(id)
{
   // 玩家是否依然在线?
   if (!is_user_connected(id))
      return // 离开,则返回
   static szKnifeOnlyMsg, szTimeLimitMsg
   // 是否打开武器限制?
   if (get_pcvar_num(pCVAR_wpnlimit)==1)
   {
      // 是,则增加限制武器提示
      formatex(szKnifeOnlyMsg, 63, "武器限制>你只能刀")
   }
   else if (get_pcvar_num(pCVAR_wpnlimit)==2)
   {
      // 是,则增加限制武器提示
      formatex(szKnifeOnlyMsg, 63, "武器限制>你使用手枪")
   }
   else szKnifeOnlyMsg = ""
   // 是否打开时间限制?
   if (get_pcvar_num(pCVAR_timelimit) > 0)
   {
      // 是,则增加限制时间限制提示
      formatex(szTimeLimitMsg, 63, " * (%d)秒后你将会自动离开", floatround(g_fKickTime - get_gametime(), floatround_ceil))
   }
   else szTimeLimitMsg = ""
   // 设置提示显示(颜色/位置/效果。。)
   set_hudmessage(HUD_RED, HUD_GREEN, HUD_BLUE, HUD_Xpos, HUD_Ypos, 0, 3.0, 10.0, 0.1, 1.0, -1)
   // 执行显示提示
   show_hudmessage(id, "%s^n%s%s", g_szInfo, szKnifeOnlyMsg, szTimeLimitMsg)
}

// 执行踢出操作
kick_player(id)
{
   // 打开控制台命令
   client_cmd(id, "toggleconsole")
   // 发送提示信息
   client_cmd(id, "echo ^">>自动踢出提示:^"")
   client_cmd(id, "echo ^">>%s^"", HUDMSG1)
   client_cmd(id, "echo ^">>%s^"", HUDMSG2)
   client_cmd(id, "echo ^">>%s^"", HUDMSG3)
   // 发送离线命令
   client_cmd(id, "disconnect")
}

// 处理,检查如果为禁止的武器
weapon_limited(id, wpn)
{
   switch (get_pcvar_num(pCVAR_wpnlimit))
   {
      // 禁止类型设置,只能使用到,事件处理
      case 1:
         if (wpn!=29 && wpn!=6)
            engclient_cmd(id, "weapon_knife") // 强制换刀
      // 禁止使用某一些武器,事件处理
      case 2:
         // 如果为禁止使用的武器类型,则强制换刀
         if (block_weapon(wpn))
            engclient_cmd(id, "weapon_knife")
   }
}
// 如果为禁止武器id,则返回 true
// 如果要禁止某个武器,去掉前面的注释即可
// 如果要取消禁止的武器,用 // 注释掉即可
// 下面设置禁止了主枪
stock bool:block_weapon(wpn)
{
   switch(wpn)
   {
      // 没有注释掉的这个禁止使用
      case CSW_P228: return true
      case CSW_SCOUT: return true
      // 这个被注释掉的手雷,不禁止使用
      //case CSW_HEGRENADE: return true
      case CSW_XM1014: return true
      case CSW_MAC10: return true
      case CSW_AUG: return true
      case CSW_SMOKEGRENADE: return true
      //case CSW_ELITE: return true
      //case CSW_FIVESEVEN: return true
      case CSW_UMP45: return true
      case CSW_SG550: return true
      case CSW_GALI: return true
      case CSW_FAMAS: return true
      //case CSW_USP: return true
      //case CSW_GLOCK18: return true
      case CSW_AWP: return true
      case CSW_MP5NAVY: return true
      case CSW_M249: return true
      //case CSW_M3: return true
      case CSW_M4A1: return true
      //case CSW_TMP: return true
      case CSW_G3SG1: return true
      //case CSW_FLASHBANG: return true
      //case CSW_DEAGLE: return true
      case CSW_SG552: return true
      case CSW_AK47: return true
      case CSW_P90: return true
   }
   return false
}



能不能把 CS枪支改成DOD1.3的枪支?

// 处理,检查如果为禁止的武器
weapon_limited(id, wpn)
{
   switch (get_pcvar_num(pCVAR_wpnlimit))
   {
      // 禁止类型设置,只能使用到,事件处理
      case 1:
         if (wpn!=29 && wpn!=6)
            engclient_cmd(id, "weapon_knife") // 强制换刀
      // 禁止使用某一些武器,事件处理
      case 2:
         // 如果为禁止使用的武器类型,则强制换刀
         if (block_weapon(wpn))
            engclient_cmd(id, "weapon_knife")
   }
}
// 如果为禁止武器id,则返回 true
// 如果要禁止某个武器,去掉前面的注释即可
// 如果要取消禁止的武器,用 // 注释掉即可
// 下面设置禁止了主枪
stock bool:block_weapon(wpn)
{
   switch(wpn)
   {
      // 没有注释掉的这个禁止使用
      case CSW_P228: return true
      case CSW_SCOUT: return true
      // 这个被注释掉的手雷,不禁止使用
      //case CSW_HEGRENADE: return true
      case CSW_XM1014: return true
      case CSW_MAC10: return true
      case CSW_AUG: return true
      case CSW_SMOKEGRENADE: return true
      //case CSW_ELITE: return true
      //case CSW_FIVESEVEN: return true
      case CSW_UMP45: return true
      case CSW_SG550: return true
      case CSW_GALI: return true
      case CSW_FAMAS: return true
      //case CSW_USP: return true
      //case CSW_GLOCK18: return true
      case CSW_AWP: return true
      case CSW_MP5NAVY: return true
      case CSW_M249: return true
      //case CSW_M3: return true
      case CSW_M4A1: return true
      //case CSW_TMP: return true
      case CSW_G3SG1: return true
      //case CSW_FLASHBANG: return true
      //case CSW_DEAGLE: return true
      case CSW_SG552: return true
      case CSW_AK47: return true
      case CSW_P90: return true
   }
   return false
}


枪支代码我找了好久...始终没找到....希望好心人帮忙改该 谢谢

sakulekingz 发表于 2008-9-22 05:43:34

回复: 帮忙改改插件

no_sxei_wpnlimit 1 // 0(关闭功能) 1=只能用刀,2=禁止某些主枪

y543685085 发表于 2008-9-22 08:23:27

回复: 帮忙改改插件

Post by sakulekingz
no_sxei_wpnlimit 1 // 0(关闭功能) 1=只能用刀,2=禁止某些主枪


先谢谢你哈.
可是..我是想要这功能....因为我想把这插件这禁枪的功能运用到DOD服务器里...所以希望有人能帮忙改改哈`

sakulekingz 发表于 2008-9-22 11:32:47

回复: 帮忙改改插件

这个,我没玩过DOD....

sakulekingz 发表于 2008-9-22 11:40:52

回复: 帮忙改改插件

// 处理,检查如果为禁止的武器
weapon_limited(id, wpn)
{
   switch (get_pcvar_num(pCVAR_wpnlimit))
   {
      // 禁止类型设置,只能使用到,事件处理
      case 1:
         if (wpn!=29 && wpn!=6)
            engclient_cmd(id, "weapon_knife") // 强制换刀
      // 禁止使用某一些武器,事件处理
      case 2:
         // 如果为禁止使用的武器类型,则强制换刀
         if (block_weapon(wpn))
            engclient_cmd(id, "weapon_knife")
   }
}
// 如果为禁止武器id,则返回 true
// 如果要禁止某个武器,去掉前面的注释即可
// 如果要取消禁止的武器,用 // 注释掉即可
// 下面设置禁止了主枪
stock bool:block_weapon(wpn)
{
   switch(wpn)
   {
      // 没有注释掉的这个禁止使用
      case CSW_P228: return true
      case CSW_SCOUT: return true
      // 这个被注释掉的手雷,不禁止使用
      //case CSW_HEGRENADE: return true
      case CSW_XM1014: return true
      case CSW_MAC10: return true
      case CSW_AUG: return true
      case CSW_SMOKEGRENADE: return true
      //case CSW_ELITE: return true
      //case CSW_FIVESEVEN: return true
      case CSW_UMP45: return true
      case CSW_SG550: return true
      case CSW_GALI: return true
      case CSW_FAMAS: return true
      //case CSW_USP: return true
      //case CSW_GLOCK18: return true
      case CSW_AWP: return true
      case CSW_MP5NAVY: return true
      case CSW_M249: return true
      //case CSW_M3: return true
      case CSW_M4A1: return true
      //case CSW_TMP: return true
      case CSW_G3SG1: return true
      //case CSW_FLASHBANG: return true
      //case CSW_DEAGLE: return true
      case CSW_SG552: return true
      case CSW_AK47: return true
      case CSW_P90: return true
   }
   return false
}




红色部分就应该是对应的武器名称

y543685085 发表于 2008-9-22 23:40:03

回复: 帮忙改改插件

Post by sakulekingz
// 处理,检查如果为禁止的武器
weapon_limited(id, wpn)
{
switch (get_pcvar_num



恩是的.
但是问题就是出在..

我早不到DOD的武器代码....

不知道DOD武器该怎么设置...

y543685085 发表于 2008-9-24 03:56:08

回复: 帮忙改改插件

DODW_AMERKNIFE = 1,
DODW_GERKNIFE,
DODW_COLT,
DODW_LUGER,
DODW_GARAND,
DODW_SCOPED_KAR,
DODW_THOMPSON,
DODW_STG44,
DODW_SPRINGFIELD,
DODW_KAR,
DODW_BAR,
DODW_MP40,
DODW_HANDGRENADE,
DODW_STICKGRENADE,
DODW_STICKGRENADE_EX,
DODW_HANDGRENADE_EX,
DODW_MG42,
DODW_30_CAL,
DODW_SPADE,
DODW_M1_CARBINE,
DODW_MG34,
DODW_GREASEGUN,
DODW_FG42,
DODW_K43,
DODW_ENFIELD,
DODW_STEN,
DODW_BREN,
DODW_WEBLEY,
DODW_BAZOOKA,
DODW_PANZERSCHRECK,
DODW_PIAT,
DODW_SCOPED_FG42,
DODW_FOLDING_CARBINE,
DODW_KAR_BAYONET,
DODW_SCOPED_ENFIELD,
DODW_MILLS_BOMB,
DODW_BRITKNIFE,
DODW_GARAND_BUTT,
DODW_ENFIELD_BAYONET,
DODW_MORTAR,


这是不是DOD枪支的代码?


如果是,直接替换CS枪支的代码能否成功?

野玫瑰 发表于 2008-9-24 09:01:20

回复: 帮忙改改插件

你那些代码是对的看了下DOD爆血插件源码 好象都对应了

case DODW_AMERKNIFE   : return false
   case DODW_GERKNIFE   : return false
   case DODW_COLT    : return false
   case DODW_LUGER   : return false
   case DODW_GARAND   : return false
   case DODW_SCOPED_KAR: return false
   case DODW_THOMPSON   : return false
   case DODW_STG44   : return false
   case DODW_SPRINGFIELD: return false
   case DODW_KAR    : return false
   case DODW_BAR    : return false
   case DODW_MP40    : return false
   case DODW_HANDGRENADE: return true
   case DODW_STICKGRENADE: return true
   case DODW_STICKGRENADE_EX : return true
   case DODW_HANDGRENADE_EX: return true
   case DODW_MG42    : return false
   case DODW_30_CAL   : return false
   case DODW_SPADE   : return false
   case DODW_M1_CARBINE: return false
   case DODW_MG34    : return false
   case DODW_GREASEGUN   : return false
   case DODW_FG42    : return false
   case DODW_K43    : return false
   case DODW_ENFIELD   : return false
   case DODW_STEN    : return false
   case DODW_BREN    : return false
   case DODW_WEBLEY   : return false
   case DODW_BAZOOKA   : return true
   case DODW_PANZERSCHRECK: return false
   case DODW_PIAT    : return false
   case DODW_SCOPED_FG42: return false
   case DODW_FOLDING_CARBINE : return false
   case DODW_KAR_BAYONET: return false
   case DODW_SCOPED_ENFIELD: return false
   case DODW_MILLS_BOMB: return true
   case DODW_BRITKNIFE   : return false
   case DODW_GARAND_BUTT: return false
   case DODW_ENFIELD_BAYONET : return false
   case DODW_MORTAR   : return false
   case DODW_K43_BUTT   : return

y543685085 发表于 2008-9-24 20:51:26

回复: 帮忙改改插件

Post by 野玫瑰
你那些代码是对的 看了下DOD爆血插件源码 好象都对应了

case DODW_AMERKNIFE : return false
case DODW_GERKNIFE : return false
case DODW_COLT : return false
case DODW_LUGER : return false
case DODW_GARAND : return false
case DODW_SCOPED_KAR : return false
case DODW_THOMPSON : return false
...


谢谢.晚上修改修改 ..HOHO`

y543685085 发表于 2008-9-26 08:15:34

回复: 帮忙改改插件

试着便宜了一下.结果发下

// AMXXPC compile.exe
// by the AMX Mod X Dev Team
// Fixed by Rulzy.

//// sxei_required2.sma
// E:\引诱服\引诱服A\dod\addons\amxmodx\scripting\sxei_required2.sma(356) : erro
r 017: undefined symbol "DODW_MG42"
//
// 1 Error.
// Could not locate output file E:\引诱服\引诱服A\dod\addons\amxmodx\scripting\c
ompiled\sxei_required2.amx (compile failed).
//
// Compilation Time: 0.19 sec
// ----------------------------------------
Press Enter to exit ...


// 处理,检查如果为禁止的武器
weapon_limited(id, wpn)
{
switch (get_pcvar_num(pCVAR_wpnlimit))
{
// 禁止类型设置,只能使用到,事件处理
case 1:
if (wpn!=29 && wpn!=6)
engclient_cmd(id, "weapon_knife") // 强制换刀
// 禁止使用某一些武器,事件处理
case 2:
// 如果为禁止使用的武器类型,则强制换刀
if (block_weapon(wpn))
engclient_cmd(id, "weapon_knife")
}
}
// 如果为禁止武器id,则返回 true
// 如果要禁止某个武器,去掉前面的注释即可
// 如果要取消禁止的武器,用 // 注释掉即可
// 下面设置禁止了主枪
stock bool:block_weapon(wpn)
{
switch(wpn)
{
case DODW_MG42 : return false
}
return false
}

不知道是为什么


未定义符号? 是不是枪支代码错误?
页: [1] 2
查看完整版本: 帮忙改改插件