广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 2800 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
观众甲
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x319 鲜花 x963
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[1.6][插件] 如何分辨 PODBOT跟ZBOT
如题
因为如果用RegisterHamFromEntity的话,在加上RegisterHam,就会有双重效果(玩家对podbot)
如果不用RegisterHamFromEntity的话,PODBOT跟Sypb那种能够正常运行
但是如果用RegisterHamFromEntity的话,PODBOT那类bot就会有双重效果
如果不用RegisterHamFromEntity的话,ZBOT就会无效
如果用RegisterHamFromEntity的话,ZBOT才会无效
所以如果我要同时支援两种bot,该怎写?



new Debug
public client_putinserver(id)
{
if(Debug == 1)return
new classname[32]
pev(id,pev_classname,classname,31)
if(!equal(classname,"player"))
{
Debug=1
set_task(1.0,"_Debug",id)
}
}


public _Debug(id)
{
RegisterHamFromEntity(Ham_TakeDamage,id,"fw_TakeDamage")
RegisterHamFromEntity(Ham_Killed,id,"fw_PlayerKilled")
}


这段是从插件中提取出来的支援ZBOT


[ 此文章被上帝的右手^^在2012-06-28 22:41重新编辑 ]



献花 x2 回到顶端 [楼 主] From:未知地址 | Posted:2012-06-28 22:03 |
HsK 手机 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章
头衔:CCN@HsKCCN@HsK
版主
级别: 版主 该用户目前不上站
版区: CS插件区
推文 x1701 鲜花 x1108
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

以下为估计...
new classname[32]
pev(id,pev_classname,classname,31)
if(!equal(classname,"player"))

那zbot classname便应该不是 player 了


HsK-Dev Blog By CCN
献花 x0 回到顶端 [1 楼] From:未知地址 | Posted:2012-06-28 22:06 |
andyt0621
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x24 鲜花 x167
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

client_putinserver(id)的部分..
改为
if (is_user_bot(id) && get_cvar_pointer("bot_quota"))
{
     set_task(1.0, "register_ham_czbots", id)
}
这样肯定是ZBOT才进行Debug..
而其他BOT不会读取Debug内容
--
如果你是两种BOT以上共用..
以上的方法应该也没用 0.0


献花 x2 回到顶端 [2 楼] From:香港网上行 | Posted:2012-06-28 22:39 |
HsK 手机 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章
头衔:CCN@HsKCCN@HsK
版主
级别: 版主 该用户目前不上站
版区: CS插件区
推文 x1701 鲜花 x1108
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 andyt0621 于 2012-06-28 22:39 发表的 : 到引言文
client_putinserver(id)的部分..
改为
if (is_user_bot(id) && get_cvar_pointer("bot_quota"))
{
     set_task(1.0, "register_ham_czbots", id)
}
这样肯定是ZBOT才进行Debug..
而其他BOT不会读取Debug内容
--
如果你是两种BOT以上共用..
以上的方法应该也没用 0.0

那也有可能做成判到podbot 的情况吧.....
因为不能判定是否 ZBOT....

is_user_bot 在 amxx 中是用 flags 和 g_engfuncs.pfnGetPlayerAuthId 判定的.....

if ((pEdict->v.flags & FL_FAKECLIENT) == FL_FAKECLIENT)

#define GETPLAYERAUTHID     (*g_engfuncs.pfnGetPlayerAuthId)
const char *auth = GETPLAYERAUTHID(pEdict);    
if (auth && (strcmp(auth, "BOT") == 0))


HsK-Dev Blog By CCN
献花 x1 回到顶端 [3 楼] From:未知地址 | Posted:2012-06-28 23:04 |
HsK 手机 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章
头衔:CCN@HsKCCN@HsK
版主
级别: 版主 该用户目前不上站
版区: CS插件区
推文 x1701 鲜花 x1108
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

刚刚看了看 podbot 和 sypb 的 Src..
写出以下代码

stock is_bot_type (id)
{
     if (!is_user_bot (id))
           return 0; // not bot

     new tracker[2], friends[2], ah[2];
     get_user_info(id,"tracker",tracker,1);
     get_user_info(id,"friends",friends,1);
     get_user_info(id,"_ah",ah,1);

     if (tracker[0] == '0' && friends[0] == '0' && ah[0] == '0')
           return 1; // PodBot / YaPB / SyPB

     return 2; // Zbot
}

那你应该懂了吧...


HsK-Dev Blog By CCN
献花 x0 回到顶端 [4 楼] From:未知地址 | Posted:2012-06-29 16:34 |
HsK 手机 会员卡
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 优秀管理员勋章
头衔:CCN@HsKCCN@HsK
版主
级别: 版主 该用户目前不上站
版区: CS插件区
推文 x1701 鲜花 x1108
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

以下为用法

复制程式
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN_NAME    "Ham - Bot Get (ZBOT-PODBOT-SyPB)"
#define PLUGIN_VERSION    "1.0"
#define PLUGIN_AUTHOR    "HsK"

new bool:Ham_load = false, cvar_botquota;

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

    RegisterHam(Ham_TakeDamage,"player","fw_TakeDamage");
    cvar_botquota = get_cvar_pointer("bot_quota");
}

public client_putinserver(id)
    set_task (1.0, "Ham_run", id);

public Ham_run (id)
{
    server_print("Bot Type : %s", (is_bot_type (id) == 2 ? "Zbot" : (is_bot_type (id) == 1 ? "SyPB/YaPB/PodBot" : "This is not Bot")));

    if (!is_user_connected(id) || !get_pcvar_num(cvar_botquota) || Ham_load)
        return;

    if (is_bot_type (id) != 2)
        return;

    Ham_load = true;
    RegisterHamFromEntity(Ham_TakeDamage,id,"fw_TakeDamage");
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    if (victim == attacker || !attacker)
        return;

    client_print (attacker, print_chat, "** fw_TakeDamage **Damage! Bot id : %d", victim);
}

stock is_bot_type (id)
{
    if (!is_user_bot (id))
        return 0; // not bot

    new tracker[2], friends[2], ah[2];
    get_user_info(id,"tracker",tracker,1);
    get_user_info(id,"friends",friends,1);
    get_user_info(id,"_ah",ah,1);

    if (tracker[0] == '0' && friends[0] == '0' && ah[0] == '0')
        return 1; // PodBot / YaPB / SyPB

    return 2; // Zbot
}


HsK-Dev Blog By CCN
献花 x1 回到顶端 [5 楼] From:未知地址 | Posted:2012-06-29 16:37 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.015523 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言