搜索
查看: 2963|回复: 6

地面放置武器插件!

[复制链接]
发表于 2022-12-8 11:43:42 | 显示全部楼层 |阅读模式 来自 美国
本帖最后由 123315517 于 2022-12-11 11:18 编辑

地面放置武器的插件,来源网络。

地面放置武器后会绊脚、经过时候有上台阶的感觉,求高手解决。



代码过长,拆分为3段放下面评论区了。
 楼主| 发表于 2022-12-8 23:49:54 | 显示全部楼层 来自 中国–山西–运城
本帖最后由 123315517 于 2022-12-10 14:30 编辑
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>

  4. //ent name
  5. #define wp_ent "weapon_entity"

  6. //ent values
  7. #define WP_Type pev_iuser4
  8. #define WP_Left pev_iuser3
  9. #define WP_Max  pev_iuser2

  10. //primary and secondary weapons
  11. #define PRIMARY_WEAPONS ((1<<CSW_SCOUT) | (1<<CSW_XM1014) | (1<<CSW_MAC10) | (1<<CSW_AUG) | (1<<CSW_UMP45) | (1<<CSW_SG550) | (1<<CSW_GALIL) | (1<<CSW_FAMAS) | (1<<CSW_AWP) | (1<<CSW_MP5NAVY) | (1<<CSW_M249) | (1<<CSW_M3) | (1<<CSW_M4A1) | (1<<CSW_TMP) | (1<<CSW_G3SG1) | (1<<CSW_SG552) | (1<<CSW_AK47) | (1<<CSW_P90))
  12. #define SECONDARY_WEAPONS ((1<<CSW_P228) | (1<<CSW_ELITE) | (1<<CSW_FIVESEVEN) | (1<<CSW_USP) | (1<<CSW_GLOCK18) | (1<<CSW_DEAGLE))

  13. //offsets
  14. #define OFFSET_AWM_AMMO                377
  15. #define OFFSET_SCOUT_AMMO        378
  16. #define OFFSET_PARA_AMMO        379
  17. #define OFFSET_FAMAS_AMMO         380
  18. #define OFFSET_M3_AMMO                381
  19. #define OFFSET_USP_AMMO                382
  20. #define OFFSET_FIVESEVEN_AMMO        383
  21. #define OFFSET_DEAGLE_AMMO        384
  22. #define OFFSET_P228_AMMO        385
  23. #define OFFSET_GLOCK_AMMO        386
  24. #define OFFSET_FLASH_AMMO        387
  25. #define OFFSET_HE_AMMO                388
  26. #define OFFSET_SMOKE_AMMO        389
  27. #define OFFSET_C4_AMMO                390
  28. #define linuxdiff                5

  29. //ammo for each gun
  30. #define AMMO_P228        52
  31. #define AMMO_SCOUT        90
  32. #define AMMO_Xm1014        32
  33. #define AMMO_Mac10        100
  34. #define AMMO_Aug        90
  35. #define AMMO_Elite        120
  36. #define AMMO_Fiveseven        100
  37. #define AMMO_Ump45        100
  38. #define AMMO_Sg550        90
  39. #define AMMO_Galil        90
  40. #define AMMO_Famas        90
  41. #define AMMO_Usp        100
  42. #define AMMO_Glock18        120
  43. #define AMMO_Awp        30
  44. #define AMMO_Mp5navy        120
  45. #define AMMO_M249        200
  46. #define AMMO_M3                32
  47. #define AMMO_M4a1         90
  48. #define AMMO_Tmp        120
  49. #define AMMO_G3sg1        90
  50. #define AMMO_Deagle        35
  51. #define AMMO_Sg552        90
  52. #define AMMO_Ak47        90
  53. #define AMMO_P90        100

  54. //array whit primary and secondary weapons
  55. new const Secondary[] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_USP, CSW_GLOCK18, CSW_DEAGLE};
  56. new const Primary[]={CSW_SCOUT,CSW_XM1014,CSW_MAC10,CSW_AUG,CSW_UMP45,CSW_SG550,CSW_GALIL,CSW_FAMAS,CSW_AWP,CSW_MP5NAVY,CSW_M249,CSW_M3,CSW_M4A1,CSW_TMP,CSW_G3SG1,CSW_SG552,CSW_AK47,CSW_P90}                       

  57. //will store the weapon id after picking it on menu
  58. new Selected[33]
  59. new pcvar,Float:Time

  60. public plugin_init()
  61. {
  62.         register_plugin("Weapon Spawner", "1.3", "Fxfighter")
  63.        
  64.         register_clcmd("ws_menu","Menu")
  65.        
  66.         pcvar = register_cvar("ws_auto_remove","0")
  67.         if(get_pcvar_num(pcvar))remove_normal()
  68.        
  69.         pcvar =        register_cvar("ws_auto_load","1")
  70.         if(get_pcvar_num(pcvar))load()
  71.        
  72.         //regisetr reset cvar and get its value
  73.         pcvar =        register_cvar("ws_reset_round","1")
  74.         if(get_pcvar_num(pcvar))
  75.         {
  76.                 register_logevent("reset", 2, "1=Round_End")
  77.                 register_event("TextMsg", "reset", "a", "2=#Game_will_restart_in")
  78.         }
  79.         pcvar =        register_cvar("ws_reset_gun","0")
  80.         if(get_pcvar_num(pcvar))
  81.         {
  82.                 register_forward(FM_Think, "Forward_Think")
  83.                
  84.                 pcvar = register_cvar("ws_reset_gun_time","10")
  85.                 Time = get_pcvar_float(pcvar)
  86.                
  87.                 pcvar =        register_cvar("ws_reset_gun_amount","10")
  88.                 pcvar = get_pcvar_num(pcvar)
  89.         }
  90.        
  91.         register_forward(FM_Touch,"Equip")
  92. }
  93. public Equip(id,weapon)
  94. {
  95.         if(!pev_valid(weapon) || !pev_valid(id) )return
  96.         static classname[20]
  97.         pev(weapon, pev_classname, classname,19)       
  98.         if(!equal(classname,wp_ent))return
  99.        
  100.         static left,type,i
  101.         left = pev(weapon,WP_Left)
  102.         if(!left)return
  103.         type = pev(weapon,WP_Type)
  104.        
  105.         //check if its a primary
  106.         if(PRIMARY_WEAPONS & ( 1 << type))
  107.         {
  108.                 for (i = 0; i < sizeof Primary; ++i)
  109.                 {
  110.                         //cant have more then 1 primary
  111.                         if(user_has_weapon(id,Primary[i]))return
  112.                 }
  113.         }
  114.         //check if its secondary
  115.         else if(SECONDARY_WEAPONS & ( 1 << type))
  116.         {
  117.                 for (i = 0; i < sizeof Secondary; ++i)
  118.                 {
  119.                         //cant have more then 2 secondary
  120.                         if(user_has_weapon(id,Secondary[i]))return
  121.                 }
  122.         }
  123.         //if its armor
  124.         else if(type == 31||type==32)
  125.         {
  126.                 //cant have moret hen 100 in armor
  127.                 if(pev(id,pev_armorvalue) == 100.0)return
  128.         }
  129.         //if its granade or knife and he already got one
  130.         else if(user_has_weapon(id,type))return
  131.        
  132.         //give weapon and ammo
  133.         switch(type)
  134.         {
  135.                 case 1 :
  136.                 {
  137.                         fm_give_item(id,"weapon_p228")
  138.                         set_pdata_int(id,OFFSET_P228_AMMO,AMMO_P228,linuxdiff)
  139.                 }
  140.                 case 2 :fm_give_item(id,"weapon_shield")
  141.                 case 3 :
  142.                 {
  143.                         fm_give_item(id,"weapon_scout")
  144.                         set_pdata_int(id,OFFSET_SCOUT_AMMO,AMMO_SCOUT,linuxdiff)
  145.                 }
  146.                 case 4 :
  147.                 {
  148.                         fm_give_item(id,"weapon_hegrenade")
  149.                         //set_pdata_int(id,OFFSET_HE_AMMO,amount,linuxdiff)
  150.                 }
  151.                 case 5 :
  152.                 {
  153.                         fm_give_item(id,"weapon_xm1014")
  154.                         set_pdata_int(id,OFFSET_M3_AMMO,AMMO_Xm1014,linuxdiff)
  155.                 }
  156.                 case 7 :
  157.                 {
  158.                         fm_give_item(id,"weapon_mac10")
  159.                         set_pdata_int(id,OFFSET_USP_AMMO,AMMO_Mac10,linuxdiff)
  160.                 }
  161.                 case 8 :
  162.                 {
  163.                         fm_give_item(id,"weapon_aug")
  164.                         set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Aug,linuxdiff)
  165.                 }
  166.                 case 9 :
  167.                 {
  168.                         fm_give_item(id,"weapon_smokegrenade")
  169.                         //set_pdata_int(id,OFFSET_SMOKE_AMMO,amount,linuxdiff)
  170.                 }
  171.                        
  172.                 case 10:
  173.                 {
  174.                         fm_give_item(id,"weapon_elite")
  175.                         set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Elite,linuxdiff)
  176.                 }
  177.                 case 11:
  178.                 {
  179.                         fm_give_item(id,"weapon_fiveseven")
  180.                         set_pdata_int(id,OFFSET_FIVESEVEN_AMMO,AMMO_Fiveseven,linuxdiff)
  181.                 }
  182.                 case 12:
  183.                 {
  184.                         fm_give_item(id,"weapon_ump45")
  185.                         set_pdata_int(id,OFFSET_USP_AMMO,AMMO_Ump45,linuxdiff)
  186.                 }
  187.                 case 13:
  188.                 {
  189.                         fm_give_item(id,"weapon_sg550")
  190.                         set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Sg550,linuxdiff)
  191.                 }
  192.                 case 14:
  193.                 {
  194.                         fm_give_item(id,"weapon_galil")
  195.                         set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Galil,linuxdiff)
  196.                 }
  197.                 case 15:
  198.                 {
  199.                         fm_give_item(id,"weapon_famas")
  200.                         set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Famas,linuxdiff)
  201.                 }
  202.                 case 16:
  203.                 {
  204.                         fm_give_item(id,"weapon_usp")
  205.                         set_pdata_int(id,OFFSET_USP_AMMO,AMMO_Usp,linuxdiff)
  206.                 }
  207.                 case 17:
  208.                 {
  209.                         fm_give_item(id,"weapon_glock18")
  210.                         set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Glock18,linuxdiff)
  211.                 }
  212.                 case 18:
  213.                 {
  214.                         fm_give_item(id,"weapon_awp")
  215.                         set_pdata_int(id,OFFSET_AWM_AMMO,AMMO_Awp,linuxdiff)
  216.                 }
  217.                 case 19:
  218.                 {
  219.                         fm_give_item(id,"weapon_mp5navy")
  220.                         set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Mp5navy,linuxdiff)
  221.                 }
  222.                 case 20:
  223.                 {
  224.                         fm_give_item(id,"weapon_m249")
  225.                         set_pdata_int(id,OFFSET_PARA_AMMO,AMMO_M249,linuxdiff)
  226.                 }
  227.                 case 21:
  228.                 {
  229.                         fm_give_item(id,"weapon_m3")
  230.                         set_pdata_int(id,OFFSET_M3_AMMO,AMMO_M3,linuxdiff)
  231.                 }
  232.                 case 22:
  233.                 {
  234.                         fm_give_item(id,"weapon_m4a1")
  235.                         set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_M4a1,linuxdiff)
  236.                 }
  237.                 case 23:
  238.                 {
  239.                         fm_give_item(id,"weapon_tmp")
  240.                         set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Tmp,linuxdiff)
  241.                 }
  242.                 case 24:
  243.                 {
  244.                         fm_give_item(id,"weapon_g3sg1")
  245.                         set_pdata_int(id,OFFSET_SCOUT_AMMO,AMMO_G3sg1,linuxdiff)
  246.                 }
  247.                 case 25:
  248.                 {
  249.                         fm_give_item(id,"weapon_flashbang")
  250.                         //set_pdata_int(id,OFFSET_FLASH_AMMO,amount,linuxdiff)
  251.                 }
  252.                 case 26:
  253.                 {
  254.                         fm_give_item(id,"weapon_deagle")
  255.                         set_pdata_int(id,OFFSET_DEAGLE_AMMO,AMMO_Deagle,linuxdiff)
  256.                 }
  257.                 case 27:
  258.                 {
  259.                         fm_give_item(id,"weapon_sg552")
  260.                         set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Sg552,linuxdiff)
  261.                 }
  262.                 case 28:
  263.                 {
  264.                         fm_give_item(id,"weapon_ak47")
  265.                         set_pdata_int(id,OFFSET_SCOUT_AMMO,AMMO_Ak47,linuxdiff)
  266.                 }
  267.                 case 29:fm_give_item(id,"weapon_knife")
  268.                 case 30:
  269.                 {
  270.                         fm_give_item(id,"weapon_p90")
  271.                         set_pdata_int(id,OFFSET_FIVESEVEN_AMMO,AMMO_P90,linuxdiff)
  272.                 }
  273.                 case 31:fm_give_item(id,"item_kevlar")
  274.                 case 32:fm_give_item(id,"item_assaultsuit")
  275.         }
  276.         //lower the weapons number whit 1
  277.         left-=1
  278.         set_pev(weapon,WP_Left,left)
  279.        
  280.         //set refill
  281.         if(pcvar != 0)set_pev(weapon, pev_nextthink, get_gametime() + Time)
  282.        
  283.         //if nothing left make invisiable
  284.         if(!left)
  285.         {
  286.                 set_pev(weapon, pev_renderfx, kRenderFxNone)
  287.                 set_pev(weapon, pev_rendercolor, {0.0,0.0,0.0})
  288.                 set_pev(weapon, pev_rendermode, kRenderTransAlpha)
  289.                 set_pev(weapon, pev_renderamt, 0.0)
  290.         }
  291. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2022-12-8 23:51:21 | 显示全部楼层 来自 中国–山西–运城
本帖最后由 123315517 于 2022-12-11 11:17 编辑
  1. public Forward_Think(ent)
  2. {
  3.         if(!pev_valid(ent))return
  4.        
  5.         static classname[32]
  6.         pev(ent, pev_classname, classname, 31)
  7.        
  8.         //not our weapon
  9.         if(!equal(classname, wp_ent))return
  10.        
  11.         //get values
  12.         classname[0] = pev(ent,WP_Max)
  13.         classname[1] = pev(ent,WP_Left)
  14.        
  15.         //if its full return
  16.         if(classname[1] == classname[0])return
  17.        
  18.         //if invisiable
  19.         if(!classname[1])
  20.         {
  21.                 set_pev(ent, pev_renderfx, kRenderNormal)
  22.                 set_pev(ent, pev_rendercolor, {255.0,255.0,255.0})
  23.                 set_pev(ent, pev_rendermode, kRenderTransAlpha)
  24.                 set_pev(ent, pev_renderamt, 255.0)
  25.         }
  26.        
  27.         //add
  28.         classname[1] +=pcvar
  29.        
  30.         //set it
  31.         if(classname[1] > classname[0])set_pev(ent,WP_Left,classname[0])
  32.         else set_pev(ent,WP_Left,classname[1])
  33.        
  34.         if(classname[1] != classname[0])set_pev(ent, pev_nextthink, get_gametime() + Time)
  35. }
  36. public Menu(id,nr)
  37. {
  38.         //not havign kick flag
  39.         if(!(get_user_flags(id, 0) & ADMIN_KICK))return PLUGIN_CONTINUE
  40.        
  41.         new menu
  42.         switch(nr)
  43.         {
  44.                 //pages
  45.                 case 1:
  46.                 {
  47.                         menu = menu_create("\rSpawn A Weapon", "handler")
  48.                         menu_additem(menu, "Rifles", "110" , 0)
  49.                         menu_additem(menu, "Pistols", "111" , 0)
  50.                         menu_additem(menu, "Others", "112" , 0)
  51.                 }
  52.                 case 2:
  53.                 {
  54.                         menu = menu_create("\rRifles", "handler")
  55.                         menu_additem(menu, "Scout","3" , 0)
  56.                         menu_additem(menu, "Autoshotgun","5" , 0)
  57.                         menu_additem(menu, "Mac10","7" , 0)
  58.                         menu_additem(menu, "Bullpup","8" , 0)
  59.                         menu_additem(menu, "Ump45","12" , 0)
  60.                         menu_additem(menu, "Krieg550","13" , 0)
  61.                         menu_additem(menu, "Defender","14" , 0)
  62.                         menu_additem(menu, "Clarion","15" , 0)
  63.                         menu_additem(menu, "Awp","18" , 0)
  64.                         menu_additem(menu, "Mp5","19", 0)
  65.                         menu_additem(menu, "M249","20" , 0)
  66.                         menu_additem(menu, "M3","21" , 0)
  67.                         menu_additem(menu, "M4A1","22" , 0)
  68.                         menu_additem(menu, "TMP","23", 0)
  69.                         menu_additem(menu, "G3SG1","24" , 0)
  70.                         menu_additem(menu, "sg552","27" , 0)
  71.                         menu_additem(menu, "ak47","28" , 0)
  72.                         menu_additem(menu, "P90","30", 0)
  73.                 }
  74.                 case 3:
  75.                 {
  76.                         menu = menu_create("\rPistols", "handler")
  77.                         menu_additem(menu, "228compact","1",0)
  78.                         menu_additem(menu, "fiveseven", "11" , 0)
  79.                         menu_additem(menu, "usp", "16" , 0)
  80.                         menu_additem(menu, "glock ", "17" , 0)
  81.                         menu_additem(menu, "deagle", "26" , 0)
  82.                         menu_additem(menu, "elite", "10" , 0)
  83.                 }
  84.                 case 4:
  85.                 {
  86.                         menu = menu_create("\rOthers", "handler")
  87.                         menu_additem(menu, "hegrenade","4" , 0)
  88.                         menu_additem(menu, "smokegrenade","9" , 0)
  89.                         menu_additem(menu, "flashbang","25" , 0)
  90.                         menu_additem(menu, "knife","29" , 0)
  91.                         menu_additem(menu, "kevlar","31" , 0)
  92.                         menu_additem(menu, "assaultsuit","32" , 0)
  93.                 }
  94.                 case 5:
  95.                 {
  96.                         menu = menu_create("\rNumber of Weapons", "handler")
  97.                         menu_additem(menu, "1", "105" , 0)
  98.                         menu_additem(menu, "2", "105" , 0)
  99.                         menu_additem(menu, "3", "105" , 0)
  100.                         menu_additem(menu, "4", "105" , 0)
  101.                         menu_additem(menu, "5", "105" , 0)
  102.                         menu_additem(menu, "10", "105" , 0)
  103.                         menu_additem(menu, "15", "105" , 0)
  104.                         menu_additem(menu, "20", "105" , 0)
  105.                         menu_additem(menu, "30", "105" , 0)
  106.                         menu_additem(menu, "40", "105" , 0)
  107.                         menu_additem(menu, "50", "105" , 0)
  108.                         menu_additem(menu, "75", "105" , 0)
  109.                         menu_additem(menu, "100","105" , 0)
  110.                         menu_additem(menu, "200","105" , 0)
  111.                 }
  112.                 default:{
  113.                         menu = menu_create("\rWeapon Spawner", "handler")
  114.                         menu_additem(menu, "Create A Spawn","100", 0)
  115.                         menu_additem(menu, "Save Spawns","101", 0)
  116.                         menu_additem(menu, "Load Spawns","102", 0)
  117.                         menu_additem(menu, "Remove all normal Spawns","103", 0)
  118.                         menu_additem(menu, "Remove all costum Spawns","104", 0)
  119.                 }
  120.         }
  121.         //show menu
  122.         menu_setprop(menu , MPROP_EXIT , MEXIT_ALL)
  123.         menu_display(id , menu , 0)
  124.         return PLUGIN_HANDLED
  125. }
  126. public handler(id, menu, item)
  127. {
  128.         //if hes dead or he choiced exit close
  129.         if(item == MENU_EXIT||!is_user_alive(id))
  130.         {
  131.                 menu_destroy(menu)
  132.                 return
  133.         }
  134.         //get info
  135.         new data[5], iName[11]
  136.         new access, callback
  137.         menu_item_getinfo(menu, item, access, data,4, iName, 10, callback)
  138.        
  139.         data[0] = str_to_num(data)
  140.         switch(data[0])
  141.         {
  142.                 case 1..32:
  143.                 {
  144.                        
  145.                         Selected[id] = data[0]
  146.                         Menu(id,5)
  147.                 }
  148.                 case 100:Menu(id,1)
  149.                 case 110:Menu(id,2)
  150.                 case 111:Menu(id,3)
  151.                 case 112:Menu(id,4)
  152.                 case 101:
  153.                 {
  154.                         save()
  155.                         Menu(id,0)
  156.                         client_print(id,print_chat,"[WS] All costum spawns have been saved")
  157.                 }
  158.                 case 102:
  159.                 {
  160.                         load()
  161.                         Menu(id,0)
  162.                         client_print(id,print_chat,"[WS] All costum spawns have been loaded")
  163.                 }
  164.                 case 103:
  165.                 {
  166.                         Menu(id,0)
  167.                         remove_normal()
  168.                         client_print(id,print_chat,"[WS] All normal spawns have been removed")
  169.                 }
  170.                 case 104:
  171.                 {
  172.                         Menu(id,0)       
  173.                         remove_costum()
  174.                         client_print(id,print_chat,"[WS] All costum spawns have been removed")
  175.                 }
  176.                 case 105:
  177.                 {
  178.                         Menu(id,0)
  179.                         new Float:origin[3]
  180.                         pev(id,pev_origin,origin)
  181.                         origin[2]+=30.0
  182.                         set_pev(id,pev_origin,origin)
  183.                         origin[2]-=30.0
  184.                         create_weapon(Selected[id],str_to_num(iName),origin)
  185.                         client_print(id,print_chat,"[WS] You have created a new spawn")
  186.                 }
  187.         }
  188.         menu_destroy(menu)
  189. }
  190. public remove_normal()
  191. {
  192.         new weapon
  193.        
  194.         while((weapon = engfunc(EngFunc_FindEntityByString, weapon, "classname", "armoury_entity")) != 0)if(!pev(weapon,WP_Type))engfunc(EngFunc_RemoveEntity,weapon)
  195. }
  196. public remove_costum()
  197. {
  198.         new weapon
  199.         while((weapon = engfunc(EngFunc_FindEntityByString, weapon, "classname", wp_ent)) != 0)if(pev(weapon,WP_Type)!= 0)engfunc(EngFunc_RemoveEntity,weapon)
  200. }
  201. public load()
  202. {
  203.         new config[50],Info[41],map[30],data[5][11],Float:origin[3]
  204.         get_configsdir(config,29)
  205.         get_mapname(map,29)
  206.         formatex(config,49,"%s/ws/%s.ini",config,map)
  207.         if(!file_exists(config))return
  208.        
  209.         new File = fopen(config,"r")
  210.         if(File)
  211.         {
  212.                 while(fgets(File,Info,40))
  213.                 {
  214.                         parse(Info, data[0], 5, data[1], 5,data[2], 10, data[3], 10, data[4], 10)
  215.                        
  216.                         if(!data[0][0])data[0][0] = 48
  217.                         origin[0] = str_to_float(data[2])
  218.                         origin[1] = str_to_float(data[3])
  219.                         origin[2] = str_to_float(data[4])
  220.                        
  221.                         create_weapon(str_to_num(data[0]),str_to_num(data[1]),origin)
  222.                 }
  223.         }
  224.         fclose(File)
  225. }
  226. public reset()
  227. {
  228.         new value,weapon
  229.         while((weapon = engfunc(EngFunc_FindEntityByString, weapon, "classname", wp_ent)) != 0)
  230.         {
  231.                 value=pev(weapon,WP_Left)
  232.                 if(!value)
  233.                 {
  234.                         set_pev(weapon, pev_renderfx, kRenderNormal)
  235.                         set_pev(weapon, pev_rendercolor, {255.0,255.0,255.0})
  236.                         set_pev(weapon, pev_rendermode, kRenderTransAlpha)
  237.                         set_pev(weapon, pev_renderamt, 255.0)
  238.                        
  239.                 }
  240.                 value=pev(weapon,WP_Max)
  241.                 set_pev(weapon,WP_Left,value)
  242.                
  243.         }
  244. }

  245. public save()
  246. {
  247.         new config[50],Info[41],map[30],Float:origin[3]
  248.         get_configsdir(config,29)
  249.         get_mapname(map,29)
  250.         formatex(config,49,"%s/ws/%s.ini",config,map)
  251.         if(file_exists(config))delete_file(config)
  252.        
  253.         new File = fopen(config,"w")
  254.         if(File)
  255.         {
  256.                
  257.                 new weapon
  258.                 while((weapon = engfunc(EngFunc_FindEntityByString, weapon, "classname", wp_ent)) != 0)
  259.                 {
  260.                        
  261.                         pev(weapon,pev_origin,origin)
  262.                         formatex(Info,40,"%i %i %.2f %.2f %.2f",pev(weapon,WP_Type),pev(weapon,WP_Max),origin[0],origin[1],origin[2])
  263.                         write_file(config,Info,-1)
  264.                 }       
  265.         }
  266.         fclose(File)
  267. }
  268. public create_weapon(wid,count,Float:origin[])
  269. {
  270.         new weapon = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_wall"))
  271.         set_pev(weapon,pev_classname, wp_ent)
  272.         switch(wid)
  273.         {
  274.                 case 1:engfunc(EngFunc_SetModel, weapon, "models/w_p228.mdl")
  275.                 case 2:engfunc(EngFunc_SetModel, weapon, "models/w_shield.mdl")
  276.                 case 3:engfunc(EngFunc_SetModel, weapon, "models/w_scout.mdl")
  277.                 case 4:engfunc(EngFunc_SetModel, weapon, "models/w_hegrenade.mdl")
  278.                 case 5:engfunc(EngFunc_SetModel, weapon, "models/w_xm1014.mdl")
  279.                 case 7:engfunc(EngFunc_SetModel, weapon, "models/w_mac10.mdl")
  280.                 case 8:engfunc(EngFunc_SetModel, weapon, "models/w_aug.mdl")
  281.                 case 9:engfunc(EngFunc_SetModel, weapon, "models/w_smokegrenade.mdl")
  282.                 case 10:engfunc(EngFunc_SetModel, weapon, "models/w_elite.mdl")
  283.                 case 11:engfunc(EngFunc_SetModel, weapon, "models/w_fiveseven.mdl")
  284.                 case 12:engfunc(EngFunc_SetModel, weapon, "models/w_ump45.mdl")
  285.                 case 13:engfunc(EngFunc_SetModel, weapon, "models/w_sg550.mdl")
  286.                 case 14:engfunc(EngFunc_SetModel, weapon, "models/w_galil.mdl")
  287.                 case 15:engfunc(EngFunc_SetModel, weapon, "models/w_famas.mdl")
  288.                 case 16:engfunc(EngFunc_SetModel, weapon, "models/w_usp.mdl")
  289.                 case 17:engfunc(EngFunc_SetModel, weapon, "models/w_glock18.mdl")
  290.                 case 18:engfunc(EngFunc_SetModel, weapon, "models/w_awp.mdl")
  291.                 case 19:engfunc(EngFunc_SetModel, weapon, "models/w_mp5navy.mdl")
  292.                 case 20:engfunc(EngFunc_SetModel, weapon, "models/w_m249.mdl")
  293.                 case 21:engfunc(EngFunc_SetModel, weapon, "models/w_m3.mdl")
  294.                 case 22:engfunc(EngFunc_SetModel, weapon, "models/w_m4a1.mdl")
  295.                 case 23:engfunc(EngFunc_SetModel, weapon, "models/w_tmp.mdl")
  296.                 case 24:engfunc(EngFunc_SetModel, weapon, "models/w_g3sg1.mdl")
  297.                 case 25:engfunc(EngFunc_SetModel, weapon, "models/w_flashbang.mdl")
  298.                 case 26:engfunc(EngFunc_SetModel, weapon, "models/w_deagle.mdl")
  299.                 case 27:engfunc(EngFunc_SetModel, weapon, "models/w_sg552.mdl")
  300.                 case 28:engfunc(EngFunc_SetModel, weapon, "models/w_ak47.mdl")
  301.                 case 29:engfunc(EngFunc_SetModel, weapon, "models/w_knife.mdl")
  302.                 case 30:engfunc(EngFunc_SetModel, weapon, "models/w_p90.mdl")
  303.                 case 31:engfunc(EngFunc_SetModel, weapon, "models/w_kevlar.mdl")       
  304.                 case 32:engfunc(EngFunc_SetModel, weapon, "models/w_assault.mdl")
  305.         }
  306.         engfunc(EngFunc_SetSize, weapon, {-0.2,-0.2,-0.2},{0.2,0.2,0.2})
  307.         set_pev(weapon,pev_solid,2) // 武器捡不起
  308.         set_pev(weapon,pev_origin,origin) //origin        pev_origin
  309.         set_pev(weapon,WP_Type,wid)
  310.         set_pev(weapon,WP_Left,count)
  311.         set_pev(weapon,WP_Max,count)
  312.         engfunc(EngFunc_DropToFloor, weapon)
  313. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2022-12-8 23:52:18 | 显示全部楼层 来自 中国–山西–运城
本帖最后由 123315517 于 2022-12-10 14:32 编辑
  1. stock fm_set_kvd(entity, const key[], const value[], const classname[] = "")
  2. {
  3.         if (classname[0])set_kvd(0, KV_ClassName, classname)
  4.         else
  5.         {
  6.                 new class[32]
  7.                 pev(entity, pev_classname, class, sizeof class - 1)
  8.                 set_kvd(0, KV_ClassName, class)
  9.         }
  10.        
  11.         set_kvd(0, KV_KeyName, key)
  12.         set_kvd(0, KV_Value, value)
  13.         set_kvd(0, KV_fHandled, 0)
  14.        
  15.         return dllfunc(DLLFunc_KeyValue, entity, 0)
  16. }
  17. stock fm_give_item(index, const item[])
  18. {
  19.        
  20.         new ent =  engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
  21.         if (!pev_valid(ent))return 0;
  22.        
  23.         new Float:origin[3];
  24.         pev(index, pev_origin, origin);
  25.         set_pev(ent, pev_origin, origin);
  26.         set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
  27.         dllfunc(DLLFunc_Spawn, ent);
  28.        
  29.         new save = pev(ent, pev_solid);
  30.         dllfunc(DLLFunc_Touch, ent, index);
  31.         if(pev(ent, pev_solid) != save)return ent;
  32.        
  33.         engfunc(EngFunc_RemoveEntity, ent);
  34.        
  35.         return -1;
  36. }
复制代码
回复

使用道具 举报

发表于 2022-12-9 12:39:08 | 显示全部楼层 来自 中国–云南–西双版纳傣族自治州–景洪市
set_pev(weapon,pev_solid,2)把2改为1
回复

使用道具 举报

 楼主| 发表于 2022-12-10 14:40:03 | 显示全部楼层 来自 中国–山西–运城
zhangsheng 发表于 2022-12-9 12:39
set_pev(weapon,pev_solid,2)把2改为1

改了之后,人物经过不绊脚了,但是武器又捡不起来了。
回复

使用道具 举报

 楼主| 发表于 2022-12-11 11:15:34 | 显示全部楼层 来自 中国–山西–运城
zhangsheng 发表于 2022-12-9 12:39
set_pev(weapon,pev_solid,2)把2改为1

十分感谢指出问题所在,把上面的映射大小改小后完美解决。
回复

使用道具 举报

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

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