找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1045|回复: 2

穿墙练习插件{源码/ 2010 02 02更新}

[复制链接]

该用户从未签到

发表于 2010-2-1 23:49:39 | 显示全部楼层 |阅读模式
本帖最后由 lovehuai 于 2010-2-2 06:42 编辑

最近打平台老是被穿死反穿老是找不到点 囧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值
效果如图/代码使劲往下拉
未命名.JPG

  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <string>
  5. #include <fun>
  6. #include <csstats>

  7. /*
  8. My Blog : http://www.lovehuai.cn   
  9. E-Mail  : darKZol_huai@163.com
  10. 如果你有更好建议请发邮件谢谢!~
  11. */
  12. new Bot_Id[32]
  13. new origin[32][3]
  14. new g_sprite
  15. public plugin_init()
  16. {
  17.         register_plugin("Bot_Exercise", "0.1", "天下第一小賤人");
  18.         register_clcmd("exercise_bot", "Exercise_Menu")
  19.         register_event("Damage", "damage_msg", "b", "2!0", "3=0", "4!0")
  20. }

  21. public plugin_precache()
  22. {
  23.         g_sprite = precache_model("sprites/dot.spr");
  24. }

  25. public damage_msg(id)
  26. {
  27.         new Index = get_user_attacker(id)
  28.         new damage = read_data(2)
  29.         set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 2.0, 0.02, 0.02, 7)
  30.         show_hudmessage(Index,"%i Hp",damage)
  31.         return PLUGIN_CONTINUE
  32. }
  33. public Exercise_Menu(id, level, cid)
  34. {
  35.         new menu = menu_create("穿点练习:", "Exercise_Handler")
  36.         menu_additem(menu, "记录当前坐标", "1", ADMIN_ALL)
  37.         menu_additem(menu, "添加BOT练习", "2",  ADMIN_ALL)
  38.         menu_additem(menu, "传送到坐标点", "3", ADMIN_ALL)
  39.         menu_additem(menu, "显示坐标线", "4",   ADMIN_ALL)
  40.         menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
  41.         menu_display(id, menu, 0)
  42.         return PLUGIN_HANDLED
  43. }


  44. public Exercise_Handler(id, menu, item)
  45. {
  46.         if (item == MENU_EXIT)
  47.         {
  48.                 menu_destroy(menu)
  49.                 return PLUGIN_HANDLED
  50.         }
  51.         new cmd[32], name[32], access,csid[32],user_name[32]
  52.         get_user_info(id, "name", user_name, 31)
  53.         menu_item_getinfo(menu, item, access, cmd, 31, name, 31, access)
  54.         get_user_name(id,csid,31)
  55.         if (strcmp(cmd, "1")==0)
  56.         {
  57.                 get_user_origin(id, origin[id])
  58.                 client_print(id, print_chat, "坐标已保存")
  59.                 } else{
  60.                 if (strcmp(cmd, "2")==0)
  61.                 {
  62.                         if ((cs_get_user_team(id) == CS_TEAM_CT) && is_user_alive(id))
  63.                         {
  64.                                 server_cmd("yapb add 100 0 1 %s_bot",user_name)       
  65.                                 client_print(id, print_chat, "命令已执行请稍等")
  66.                                 set_task(random_float(3.0,10.0), "Bot_Origin", id)
  67.                                 } else {
  68.                                 if ((cs_get_user_team(id) == CS_TEAM_T) && is_user_alive(id))
  69.                                 {       
  70.                                         server_cmd("yapb add 100 0 2 %s_bot",user_name)       
  71.                                         client_print(id, print_chat, "命令已执行请稍等")
  72.                                         set_task(random_float(3.0,10.0), "Bot_Origin", id)
  73.                                 }
  74.                         }       
  75.                 }
  76.                 if (strcmp(cmd, "3")==0)
  77.                 {
  78.                         set_user_origin(Bot_Id[id], origin[id])
  79.                         client_print(id, print_chat, "BOT已传送到坐标点")
  80.                 }
  81.                 if (strcmp(cmd, "4")==0)
  82.                 {
  83.                         Look_Cross(id)
  84.                         client_print(id, print_chat, "显示坐标线")
  85.                 }
  86.         }
  87.         menu_destroy(menu)
  88.         return PLUGIN_HANDLED
  89. }

  90. public Bot_Origin(id)
  91. {
  92.         new user_name[32]
  93.         get_user_info(id, "name", user_name, 31)
  94.         strcat(user_name, "_bot", sizeof(user_name)-1)
  95.         Bot_Id[id] = is_name_inuse(id,user_name)
  96.         SetHp(112233+Bot_Id[id])
  97.         SetArmor(112244+Bot_Id[id])
  98.         set_user_origin(Bot_Id[id], origin[id])
  99.         client_print(id, print_chat, "BOT已添加")
  100. }

  101. is_name_inuse(id, const sample[])
  102. {
  103. new name[32]
  104. for (new i=1; i<=get_maxplayers(); i++)
  105. {
  106.         if (!is_user_connected(i)) continue
  107.         if (id==i) continue
  108.         get_user_name(i, name, 31)
  109.         if (strcmp(name, sample)==0)
  110.                 return i
  111.         }
  112.         return 99
  113. }

  114. public client_connect(id)
  115. {
  116.         Bot_Id[id] =0;
  117.         origin[id] ="";
  118. }
  119. public client_disconnect (id)
  120. {
  121.         Bot_Id[id] =0;
  122.         origin[id] ="";
  123.         if(task_exists(11223 + id))
  124.         {
  125.                 remove_task(112233+id)
  126.                 remove_task(112244+id)
  127.         }
  128. }


  129. public SetHp(id)
  130. {
  131.         id = id - 112233
  132.         if(!is_user_connected(id)) {
  133.                 remove_task(112233 + id)
  134.                 } else {
  135.                
  136.                 if(is_user_alive(id)){
  137.                         if(get_user_health(id)<255)
  138.                         {
  139.                                 set_user_health(id,255)
  140.                         }
  141.                 }
  142.         }
  143.         set_task(1.0,"SetHp",112233+id)
  144.         return PLUGIN_HANDLED
  145. }

  146. public SetArmor(id)
  147. {
  148.         id = id - 112244
  149.         if(is_user_alive(id))
  150.         {
  151.                 if(get_user_armor(id)<255)
  152.                 {
  153.                         cs_set_user_armor(id,255,CS_ARMOR_VESTHELM)
  154.                 }
  155.         }
  156.        
  157.         set_task(1.0,"SetArmor",112244+id)
  158.         return PLUGIN_HANDLED
  159. }

  160. public Look_Cross(id)
  161. {
  162.         new vec_user[3];
  163.         new vec_bot[3];
  164.         get_user_origin(id, vec_user);
  165.         get_user_origin(Bot_Id[id], vec_bot);
  166.         message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0, 0, 0}, id);
  167.         write_byte(0);
  168.         write_coord(vec_user[0]);
  169.         write_coord(vec_user[1]);
  170.         write_coord(vec_user[2]);
  171.         write_coord(vec_bot[0]);
  172.         write_coord(vec_bot[1]);
  173.         write_coord(vec_bot[2]);
  174.         write_short(g_sprite);
  175.         write_byte(1);
  176.         write_byte(1);
  177.         write_byte(50);  //显示时间 数值乘0.1
  178.         write_byte(10);
  179.         write_byte(0);
  180.         write_byte(100); //R
  181.         write_byte(100); //G
  182.         write_byte(255); //B
  183.         write_byte(100);
  184.         write_byte(0);
  185.         message_end();
  186.         return PLUGIN_HANDLED;
  187. }

复制代码

评分

参与人数 1 +5 收起 理由
Pledges + 5 鼓励分享

查看全部评分

该用户从未签到

发表于 2010-2-2 03:03:06 | 显示全部楼层
LZ能不能写个OP闪亮登场和会员个性手雷的源码呢?

该用户从未签到

发表于 2010-2-2 12:54:43 | 显示全部楼层
nice job.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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