搜索
查看: 2303|回复: 0

有关刀战,无限手雷,无限弹药的问题

[复制链接]
发表于 2008-8-31 12:58:12 | 显示全部楼层 |阅读模式 来自 中国–浙江–杭州
急需如下这样的插件,但是搜索论坛后有一个基本满足我的需求,可是1.5里面用不了:confused:

http://www.dt-club.net/forum/showthread.php?t=32254

上面这个就是找到的插件.希望能改进下,让1.5也兼容.


希望有高手改进下这个AMXMODX官方论坛上的插件.

下面的这个插件的作用是对指定的一个user赋予无限弹药和手雷(可以标记3种手雷)
amxx.cfg里的设置如下:
// a:HE Grenade; b:Smoke Grenade; c:Flashbang;
// Default value: a
ammo_nade_flags a
使用时:
在console里输入amx_ammo <nick,#userid> <0|1>
0表示关闭,1表示打开

希望高手改进成如下形式:
1.使用时console输入
amx_ammo_user <nick,#userid>即可,原来是1(on)就改成0(off),原来是0(off)就改成1(on)
另外加上amx_ammo_all <0|1>
1表示打开所有人弹药无限,0表示关闭所有人弹药无限,但保留个人设置
2.使用时加上可以设定无限的内容,比如有4个标签0,a,b,c
a表示标记大枪弹药无限; b表示手枪弹药无限; c表示手雷无限;
使用时在amxx.cfg里标记;
比如:amx_ammo_flags abc表示三者都无限;amx_ammo_flags 0表示取消无限弹药
3.保留选择无限手雷类型的功能,不过,改下命令
a:HE Grenade; b:Smoke Grenade; c:Flashbang;
使用时:amx_ammon_gren abc


论坛的高手啊,帮帮小弟...

  1. [FONT=仿宋体]#include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <cstrike>
  5. #include <fun>[/font]
  6. [FONT=仿宋体]#define PLUGIN "Unlimited Ammo"
  7. #define VERSION "0.3.1"
  8. #define AUTHOR "v3x"[/font]
  9. [FONT=仿宋体]#define HE_GRENADE (1<<0)
  10. #define SMOKE_GRENADE (1<<1)
  11. #define FLASH_GRENADE (1<<2)[/font]
  12. [FONT=仿宋体]new const USAGE[] = ": amx_ammo <nick,#userid> <0|1>";[/font]
  13. [FONT=仿宋体]new gCvar_flags;[/font]
  14. [FONT=仿宋体]public plugin_init()
  15. {
  16. register_plugin(PLUGIN , VERSION , AUTHOR);
  17. register_concmd("amx_ammo" , "concmd_Ammo" , ADMIN_LEVEL_A , USAGE);
  18. register_event("CurWeapon" , "event_CurWeapon" , "be" , "1=1");
  19. gCvar_flags = register_cvar("ammo_nade_flags" , "a");
  20. }[/font]
  21. [FONT=仿宋体]new bool:has_ammo[33];[/font]
  22. [FONT=仿宋体]public concmd_Ammo(id , lvl , cid)
  23. {
  24. if(!cmd_access(id , lvl , cid , 3))
  25.   return PLUGIN_HANDLED;[/font]
  26. [FONT=仿宋体]static arg1[33] , arg2[8];
  27. read_argv(1 , arg1 , 32);
  28. read_argv(2 , arg2 , 7);[/font]
  29. [FONT=仿宋体]remove_quotes(arg2);[/font]
  30. [FONT=仿宋体]static pid;
  31. pid = cmd_target(id , arg1 , 0);[/font]
  32. [FONT=仿宋体]if(!pid)
  33.   return PLUGIN_HANDLED;[/font]
  34. [FONT=仿宋体]if(equali(arg2 , "ON" , 2) || str_to_num(arg2) == 1)
  35. {
  36.   if(!task_exists(id))
  37.    set_task(0.3 , "check_for_nades" , id , _ , _ , "b");
  38.   has_ammo[pid] = true;
  39. }
  40. else if(equali(arg2 , "OFF" , 2) || !str_to_num(arg2))
  41. {
  42.   if(task_exists(id))
  43.    remove_task(id);
  44.   has_ammo[pid] = false;
  45. }
  46. else
  47. {
  48.   console_print(id , "[AMXX] Usage%s" , USAGE);
  49.   return PLUGIN_HANDLED;
  50. }[/font]
  51. [FONT=仿宋体]static pname1[33] , pname2[33];
  52. get_user_name(id  , pname1 , 32);
  53. get_user_name(pid , pname2 , 32);[/font]
  54. [FONT=仿宋体]static s;
  55. s = has_ammo[pid];[/font]
  56. [FONT=仿宋体]switch(get_cvar_num("amx_show_activity"))
  57. {
  58.   case 1: client_print(0 , print_chat , "ADMIN: %s unlimited ammo on %s" , s ? "Set" : "Unset" , pname2);
  59.   case 2: client_print(0 , print_chat , "ADMIN %s: %s unlimited ammo on %s" , pname1 , s ? "Set" : "Unset" , pname2);
  60. }[/font]
  61. [FONT=仿宋体]return PLUGIN_HANDLED;
  62. }[/font]
  63. [FONT=仿宋体]public event_CurWeapon(id)
  64. {
  65. if(!is_user_alive(id))
  66.   return PLUGIN_CONTINUE;[/font]
  67. [FONT=仿宋体]if(has_ammo[id])
  68. {
  69.   static wpnid, clip;
  70.   wpnid = read_data(2);
  71.   clip = read_data(3);[/font]
  72. [FONT=仿宋体]give_ammo(id , wpnid , clip);
  73. }[/font]
  74. [FONT=仿宋体]return PLUGIN_CONTINUE;
  75. }[/font]
  76. [FONT=仿宋体]public client_connect(id)
  77. {
  78. has_ammo[id] = false;
  79. if(task_exists(id))
  80.   remove_task(id);
  81. }[/font]
  82. [FONT=仿宋体]public client_disconnect(id)
  83. {
  84. has_ammo[id] = false;
  85. if(task_exists(id))
  86.   remove_task(id);
  87. }[/font]
  88. [FONT=仿宋体]public give_ammo(id , wpnid , clip)
  89. {
  90. if(!is_user_alive(id))
  91.   return;[/font]
  92. [FONT=仿宋体]if( wpnid==CSW_C4  ||
  93.   wpnid==CSW_KNIFE ||
  94.   wpnid==CSW_HEGRENADE ||
  95.   wpnid==CSW_SMOKEGRENADE ||
  96.   wpnid==CSW_FLASHBANG )
  97.    return;[/font]
  98. [FONT=仿宋体]if(!clip)
  99. {
  100.   static weapname[33];
  101.   get_weaponname(wpnid , weapname , 32);[/font]
  102. [FONT=仿宋体]static wpn
  103.   wpn = -1;
  104.   while((wpn = find_ent_by_class(wpn , weapname)) != 0)
  105.   {
  106.    if(id == entity_get_edict(wpn , EV_ENT_owner))
  107.    {
  108.     cs_set_weapon_ammo(wpn , maxclip(wpnid))
  109.     break;
  110.    }
  111.   }
  112. }
  113. }[/font]
  114. [FONT=仿宋体]public check_for_nades(id)
  115. {
  116. if(!is_user_alive(id))
  117.   return;[/font]
  118. [FONT=仿宋体]if(nade_flags() & HE_GRENADE)
  119. {
  120.   if(!user_has_weapon(id , CSW_HEGRENADE))
  121.    give_item(id , "weapon_hegrenade");
  122. }
  123. if(nade_flags() & SMOKE_GRENADE)
  124. {
  125.   if(!user_has_weapon(id , CSW_SMOKEGRENADE))
  126.    give_item(id , "weapon_smokegrenade");
  127. }
  128. if(nade_flags() & FLASH_GRENADE)
  129. {
  130.   if(!user_has_weapon(id , CSW_FLASHBANG))
  131.    give_item(id , "weapon_flashbang");
  132. }
  133. }[/font]
  134. [FONT=仿宋体]// Taken from a superhero found on Google. Sorry, I don't know which one!
  135. stock maxclip(wpnid)
  136. {
  137. static ca;
  138. ca = 0;[/font]
  139. [FONT=仿宋体]switch (wpnid)
  140. {
  141.   case CSW_P228 : ca = 13;
  142.   case CSW_SCOUT : ca = 10;
  143.   case CSW_HEGRENADE : ca = 0;
  144.   case CSW_XM1014 : ca = 7;
  145.   case CSW_C4 : ca = 0;
  146.   case CSW_MAC10 : ca = 30;
  147.   case CSW_AUG : ca = 30;
  148.   case CSW_SMOKEGRENADE : ca = 0;
  149.   case CSW_ELITE : ca = 15;
  150.   case CSW_FIVESEVEN : ca = 20;
  151.   case CSW_UMP45 : ca = 25;
  152.   case CSW_SG550 : ca = 30;
  153.   case CSW_GALI : ca = 35;
  154.   case CSW_FAMAS : ca = 25;
  155.   case CSW_USP : ca = 12;
  156.   case CSW_GLOCK18 : ca = 20;
  157.   case CSW_AWP : ca = 10;
  158.   case CSW_MP5NAVY : ca = 30;
  159.   case CSW_M249 : ca = 100;
  160.   case CSW_M3 : ca = 8;
  161.   case CSW_M4A1 : ca = 30;
  162.   case CSW_TMP : ca = 30;
  163.   case CSW_G3SG1 : ca = 20;
  164.   case CSW_FLASHBANG : ca = 0;
  165.   case CSW_DEAGLE : ca = 7;
  166.   case CSW_SG552 : ca = 30;
  167.   case CSW_AK47 : ca = 30;
  168.   case CSW_P90 : ca = 50;
  169. }
  170. return ca;
  171. }[/font]
  172. [FONT=仿宋体]stock nade_flags()
  173. {
  174. static buffer[8];
  175. get_pcvar_string(gCvar_flags , buffer , 7);[/font]
  176. [FONT=仿宋体]return read_flags(buffer);
  177. }[/font]
复制代码
游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

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