搜索
查看: 5624|回复: 12

[AMXX 带源码] 穿墙练习插件{源码/ 2010 02 05更新}

[复制链接]
发表于 2010-2-2 00:01:41 | 显示全部楼层 |阅读模式 来自 中国–广西–南宁
本帖最后由 lovehuai 于 2010-2-5 04:22 编辑

最近打平台老是被穿死反穿老是找不到点 囧Rz
所以单机BOT练穿点
但是问题就来了 Bot在特定位置 才能穿ING
所以就操起记事本匆忙敲了一个
配合 死亡复活 插件 yapb机器人 使用

请下载最新的yapb机器人(里面有多国语言自己设置成中文就行了)
http://yapb.bots-united.com/downloads.html
http://yapb.jeefo.net/
并把yapb.cfg里的 yb_stopbots 设置成 "1" 暂停BOT活动不然BOT到处乱跑你砸穿列
Bot每隔一秒检测一次HP如果低于255就把HP改为255避免穿啊穿就挂了-_,-不过这样貌似还是不妥
随意定位坐标并传送BOT到坐标
显示坐标线 (在BOT跟自己之间画一条直线显示时间为5秒 5秒后消失)
每打一枪的HP值
效果如图/代码使劲往下拉
最后一更 获取攻击部位 攻击HP Bot损失HP后直接恢复到255 只要不是拿AWP不隔墙爆头bot基本就不会死
不隔直接打AWP最大伤害(全套护甲)我读取到的是 444HP 门穿中是 201HP左右
  1. #include <amxmodx>
  2. #include <cstrike>
  3. #include <fun>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. /*
  7. My Blog : http://www.lovehuai.cn   
  8. E-Mail  : darkzol_huai@163.com
  9. 如果你有更好建议请发邮件谢谢!~
  10. */
  11. new Bot_Id[32]
  12. new origin[32][3]
  13. new g_sprite
  14. new Dw_Boby[8][] = {
  15.         "全身",
  16.         "头部",
  17.         "胸部",
  18.         "腹部",
  19.         "左臂",
  20.         "右臂",
  21.         "左腿",
  22.         "右腿"
  23. }
  24. public plugin_init()
  25. {
  26.         register_plugin("Bot_Exercise", "0.4", "天下第一小賤人");
  27.         register_clcmd("exercise_bot", "Exercise_Menu")
  28.         RegisterHam(Ham_TraceAttack, "player", "HamTraceAttack");
  29. }

  30. public HamTraceAttack(Vic, Att, Float:dmg, Float:dir[3], traceresult, dmgbits)
  31. {
  32.         if(!is_user_connected(Att) || Vic == Att)
  33.                 return PLUGIN_HANDLED;
  34.         new xx=get_tr2(traceresult, TR_iHitgroup)
  35.         new Vic_Hp= 255 - get_user_health(Vic)
  36.         //new CsArmorType:ArmorType
  37.         //new Vic_Armor =255- cs_get_user_armor(Vic, ArmorType)
  38.         set_hudmessage(0, 100, 200, 0.07, 0.71, 0, 6.0, 3.0)
  39.         cs_set_user_armor(Vic,255,CS_ARMOR_VESTHELM)
  40.         set_user_health(Vic,255)
  41.         show_hudmessage(Att, "击中部位%s    Hp:%i ",Dw_Boby[xx],Vic_Hp)
  42.         //show_hudmessage(Att, "击中部位%s    Hp:%i 护甲 %i",Dw_Boby[xx],Vic_Hp,Vic_Armor)
  43.         return HAM_IGNORED;
  44. }
  45. public plugin_precache()
  46. {
  47.         g_sprite = precache_model("sprites/dot.spr");
  48. }


  49. public Exercise_Menu(id, level, cid)
  50. {
  51.         new menu = menu_create("穿点练习:", "Exercise_Handler")
  52.         menu_additem(menu, "记录当前坐标", "1", ADMIN_ALL)
  53.         menu_additem(menu, "添加BOT练习", "2",  ADMIN_ALL)
  54.         menu_additem(menu, "传送到坐标点", "3", ADMIN_ALL)
  55.         menu_additem(menu, "显示坐标线", "4",   ADMIN_ALL)
  56.         menu_additem(menu, "退出", "0",   ADMIN_ALL)
  57.         menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
  58.         menu_display(id, menu, 0)
  59.         return PLUGIN_HANDLED
  60. }


  61. public Exercise_Handler(id, menu, item)
  62. {
  63.         if (item == MENU_EXIT)
  64.         {
  65.                 menu_destroy(menu)
  66.                 return PLUGIN_HANDLED
  67.         }
  68.         new cmd[32], name[32], access,csid[32],user_name[32]
  69.         get_user_info(id, "name", user_name, 31)
  70.         menu_item_getinfo(menu, item, access, cmd, 31, name, 31, access)
  71.         get_user_name(id,csid,31)
  72.         if (strcmp(cmd, "0")==0)
  73.         {
  74.                 menu_destroy(menu)
  75.                 return PLUGIN_HANDLED       
  76.         }
  77.         if (strcmp(cmd, "1")==0)
  78.         {
  79.                 get_user_origin(id, origin[id])
  80.                 client_print(id, print_chat, "坐标已保存")
  81.                 } else{
  82.                 if (strcmp(cmd, "2")==0)
  83.                 {
  84.                         if ((cs_get_user_team(id) == CS_TEAM_CT) && is_user_alive(id))
  85.                         {
  86.                                 server_cmd("yapb add 100 0 1 %s_bot",user_name)       
  87.                                 client_print(id, print_chat, "命令已执行请稍等")
  88.                                 set_task(random_float(3.0,10.0), "Bot_Origin", id)
  89.                                 } else {
  90.                                 if ((cs_get_user_team(id) == CS_TEAM_T) && is_user_alive(id))
  91.                                 {       
  92.                                         server_cmd("yapb add 100 0 2 %s_bot",user_name)       
  93.                                         client_print(id, print_chat, "命令已执行请稍等")
  94.                                         set_task(random_float(3.0,10.0), "Bot_Origin", id)
  95.                                 }
  96.                         }       
  97.                 }
  98.                 if (strcmp(cmd, "3")==0)
  99.                 {
  100.                         set_user_origin(Bot_Id[id], origin[id])
  101.                         client_print(id, print_chat, "BOT已传送到坐标点")
  102.                 }
  103.                 if (strcmp(cmd, "4")==0)
  104.                 {
  105.                         Look_Cross(id)
  106.                         client_print(id, print_chat, "显示坐标线")
  107.                 }
  108.         }
  109.         menu_destroy(menu)
  110.         return PLUGIN_HANDLED
  111. }

  112. public Bot_Origin(id)
  113. {
  114.         new user_name[32]
  115.         get_user_info(id, "name", user_name, 31)
  116.         strcat(user_name, "_bot", sizeof(user_name)-1)
  117.         Bot_Id[id] = is_name_inuse(id,user_name)
  118.         set_user_origin(Bot_Id[id], origin[id])
  119.         cs_set_user_armor(Bot_Id[id],255,CS_ARMOR_VESTHELM)
  120.         set_user_health(Bot_Id[id],255)
  121.         client_print(id, print_chat, "BOT已添加")
  122. }

  123. is_name_inuse(id, const sample[])
  124. {
  125.         new name[32]
  126.         for (new i=1; i<=get_maxplayers(); i++)
  127.         {
  128.                 if (!is_user_connected(i)) continue
  129.                 if (id==i) continue
  130.                 get_user_name(i, name, 31)
  131.                 if (strcmp(name, sample)==0)
  132.                         return i
  133.         }
  134.         return 0
  135. }

  136. public client_connect(id)
  137. {
  138.         Bot_Id[id] =0;
  139.         origin[id] ="";
  140. }
  141. public client_disconnect (id)
  142. {
  143.         Bot_Id[id] =0;
  144.         origin[id] ="";
  145. }

  146. public Look_Cross(id)
  147. {
  148.         new vec_user[3];
  149.         new vec_bot[3];
  150.         get_user_origin(id, vec_user);
  151.         get_user_origin(Bot_Id[id], vec_bot);
  152.         message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0, 0, 0}, id);
  153.         write_byte(0);
  154.         write_coord(vec_user[0]);
  155.         write_coord(vec_user[1]);
  156.         write_coord(vec_user[2]);
  157.         write_coord(vec_bot[0]);
  158.         write_coord(vec_bot[1]);
  159.         write_coord(vec_bot[2]);
  160.         write_short(g_sprite);
  161.         write_byte(1);
  162.         write_byte(1);
  163.         write_byte(50);  //显示时间 数值乘0.1
  164.         write_byte(10);
  165.         write_byte(0);
  166.         write_byte(100); //R
  167.         write_byte(100); //G
  168.         write_byte(255); //B
  169.         write_byte(100);
  170.         write_byte(0);
  171.         message_end();
  172.         return PLUGIN_HANDLED;
  173. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
发表于 2010-2-2 00:15:30 | 显示全部楼层 来自 中国–山东–济南
挺好,支持
回复

使用道具 举报

发表于 2010-2-2 12:40:49 | 显示全部楼层 来自 中国–广西–百色
很好很不错~~
回复

使用道具 举报

发表于 2010-2-2 19:03:31 | 显示全部楼层 来自 中国–云南–昆明
用伤害显示插件
bullet_damage.amxx;伤害显示
不就行了,BOT和真人是有差距的(却都会乱动).
不过还是支持楼主的创意~
回复

使用道具 举报

 楼主| 发表于 2010-2-2 20:18:39 | 显示全部楼层 来自 中国–广西–南宁
用伤害显示插件不就行了,BOT和真人是有差距的(却都会乱动).
不过还是支持楼主的创意~
caihanzi 发表于 2010-2-2 19:03

新版的BOT都有暂停活动的命令选项
启用就行了如果是旧版的升级下就行了
而且新版的都是多国语言的不用再去手工汉化里面直接就有中文选项
回复

使用道具 举报

 楼主| 发表于 2010-2-5 04:23:21 | 显示全部楼层 来自 中国–广西–南宁
更新后顶上去
回复

使用道具 举报

发表于 2010-2-14 21:29:58 | 显示全部楼层 来自 中国–北京–北京
更新后顶上去
回复

使用道具 举报

发表于 2010-4-18 22:20:02 | 显示全部楼层 来自 中国–天津–天津
我喜欢你这个,带源码,有创意,还不歧视盗版
回复

使用道具 举报

发表于 2010-4-20 08:43:36 | 显示全部楼层 来自 中国–山东–淄博
很不错的练习插件
回复

使用道具 举报

发表于 2010-4-22 11:10:25 | 显示全部楼层 来自 中国–福建–福州
怎么输入 Exercise_Menu打不开菜单额
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表