设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1955|回复: 5

區分 Zbot 和 Yapb/Podbot/Sypb , 解決 hamsandwich 重覆 Bug [复制链接]

Rank: 7Rank: 7Rank: 7

帖子
102
精华
0
声望
1290 点
金币
260 Mold
被赞许
11 次
注册时间
2010-3-8
发表于 2012-6-30 02:14:44 |显示全部楼层
很多有寫過 amxx 的人也用過 RegisterHam 吧.
例如 RegisterHam(Ham_TakeDamage,"player","fw_TakeDamage");

但是 "player" 是指定不到 zbot 的...
因此, 便發展出以下方法

在bot 入ser 時, 再進行一次
RegisterHamFromEntity(Ham_TakeDamage,id,"fw_TakeDamage");

的確可以令 zbot 也進行 Ham_TakeDamage 內容...
但是, 當 ser 中不是只有 zbot
那便可能做成
zbot 不進行 Ham_TakeDamage 內容
而 Yapb/Podbot/Sypb 進行 Ham_TakeDamage 內容2次 的bug了....

____ 前言很長哦=.='''

因此我參考了一下 podbot 和 sypb 源碼..
寫出以下代碼..

  1. stock is_bot_type (id)
  2. {
  3.      if (!is_user_bot (id))
  4.            return 0; // not bot

  5.      new tracker[2], friends[2], ah[2];
  6.      get_user_info(id,"tracker",tracker,1);
  7.      get_user_info(id,"friends",friends,1);
  8.      get_user_info(id,"_ah",ah,1);

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

  11.      return 2; // Zbot
  12. }
复制代码
當用到  hamsandwich 之中

  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>

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

  7. new bool:Ham_load = false;

  8. public plugin_init()
  9. {
  10.         register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

  11.         RegisterHam(Ham_TakeDamage,"player","fw_TakeDamage");
  12. }

  13. public client_putinserver(id)
  14.         set_task (1.0, "Ham_run", id);

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

  18.         if (!is_user_connected(id) || Ham_load)
  19.                 return;

  20.         if (is_bot_type (id) != 2)
  21.                 return;

  22.         Ham_load = true;
  23.         RegisterHamFromEntity(Ham_TakeDamage,id,"fw_TakeDamage");
  24. }

  25. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  26. {
  27.         if (victim == attacker || !attacker)
  28.                 return;

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

  31. stock is_bot_type (id)
  32. {
  33.         if (!is_user_bot (id))
  34.                 return 0; // not bot

  35.         new tracker[2], friends[2], ah[2];
  36.         get_user_info(id,"tracker",tracker,1);
  37.         get_user_info(id,"friends",friends,1);
  38.         get_user_info(id,"_ah",ah,1);

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

  41.         return 2; // Zbot
  42. }
复制代码




使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
1926
精华
0
声望
2850 点
金币
380 Mold
被赞许
2 次
注册时间
2009-5-31
发表于 2012-6-30 14:37:48 |显示全部楼层
高手,虽然不懂AMXX。但还是支持LZ做出的贡献。

使用道具 举报

Rank: 5Rank: 5

帖子
247
精华
0
声望
1053 点
金币
129 Mold
被赞许
2 次
注册时间
2008-9-15
发表于 2012-7-4 10:51:53 |显示全部楼层
Cool这东西很好..
想问下LZ,Yapb/Podbot/Sypb 进行 Ham_TakeDamage 內容2次的后果是什么??
系统错误,请联系管理员

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
102
精华
0
声望
1290 点
金币
260 Mold
被赞许
11 次
注册时间
2010-3-8
发表于 2012-7-4 13:29:42 |显示全部楼层
eg : ZP SER

當同時加入 ZBOT+PODBOT/SYPB

可能做成

ZBOT 不能感染
感染PODBOT/SYPB 後 殺數x2..

使用道具 举报

Rank: 2

帖子
18
精华
0
声望
72 点
金币
20 Mold
被赞许
2 次
注册时间
2012-2-1
发表于 2012-7-7 08:20:02 |显示全部楼层
其實我根本就沒有遇到那種問題

使用道具 举报

Rank: 2

帖子
45
精华
0
声望
201 点
金币
51 Mold
被赞许
0 次
注册时间
2011-1-30
发表于 2012-8-26 17:46:35 |显示全部楼层
不管什么bot插件,总没办法让单人游戏时出现31个机器人,,,这是为什么??难道有bot参战人数的禁制???

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部