廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 2799 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為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.020331 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言