Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. --[[]
  2. Drag and drop disassemble script
  3. By Alundaio, who was pestered by Axebeard who doesn't know how to script
  4. --]]
  5. function on_game_start()
  6. RegisterScriptCallback("CUIActorMenu_OnItemDropped",OnItemDropped)
  7. end
  8.  
  9. function OnItemDropped(itm_from,itm_to,slot_from,slot_to)
  10. -- only work if draggin item in actor's bag to another item in actor's bag
  11. if not (from_slot == EDDListType.iActorBag and to_slot == EDDListType.iActorBag) then
  12. return
  13. end
  14.  
  15. local itm_dis
  16. local itm_craft_tool
  17. local sys_ini = system_ini()
  18.  
  19. if (sys_ini:r_bool_ex(itm_from:section(),"can_disassemble") == true) then
  20. itm_craft_tool = itm_from
  21. itm_dis = itm_to
  22. elseif (sys_ini:r_bool_ex(itm_to:section(),"can_disassemble") == true) then
  23. itm_craft_tool = itm_to
  24. itm_dis = itm_from
  25. end
  26.  
  27. if not (itm_craft_tool) then
  28. return -- item being dragged from or to is not craftitem
  29. end
  30.  
  31. local craft_tool_sec = itm_craft_tool:section()
  32.  
  33. local disassemble_categories = sys_ini:r_string_ex(craft_tool_sec,"disassemble_categories","")
  34. if (disassemble_categories == "") then
  35. return
  36. end
  37.  
  38. disassemble_categories = alun_utils.str_explode(disassemble_categories,",")
  39. if (#disassemble_categories <= 0) then
  40. return
  41. end
  42.  
  43. local itm_dis_sec = itm_dis:section()
  44. local cond = itm_dis:condition()
  45.  
  46. for i,dis_sec in ipairs(disassemble_categories) do
  47. local result, sec, value = nil, nil, nil
  48. local j = sys_ini:line_count(dis_sec)-1
  49. for i=0,j do
  50. result, sec, value = sys_ini:r_line(dis_sec,i,"","")
  51. if (sec and sec ~= "" and sec ~= "random_parts" and sys_ini:section_exist(sec)) then
  52. if (dis_sec == itm_dis_sec) then
  53. --gives player Spare Parts item
  54. local random_parts = sys_ini:r_string_ex(dis_sec,"random_parts","spareparts")
  55. if (random_parts ~= "") then
  56.  
  57. random_parts = alun_utils.str_explode(random_parts,",")
  58. if (#random_parts == 0) then
  59. table.insert(random_parts,"spareparts")
  60. end
  61.  
  62. local amt = 1
  63. if (cond >= 60) then
  64. amt = 2
  65. elseif (cond >=90) then
  66. amt = 3
  67. end
  68.  
  69. for i=1,amt do
  70. alife():create(random_choice(unpack(random_parts)), db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
  71. end
  72. return
  73. end
  74. end
  75. end
  76. end
  77. end
  78. end
  79.  
  80. --[[ EXAMPLE
  81.  
  82. [itm_hammer]
  83. can_disassemble = true
  84. disassemble_categories = dis_cat_1, dis_cat_2
  85.  
  86.  
  87. [dis_cat_1]
  88. wpn_pm
  89. wpn_ak74
  90. random_parts = spareparts, junk, junk2
  91.  
  92. [dis_cat_2]
  93. wpn_knife
  94. wpn_binoc
  95. random_parts = spareparts, junk, junk2
  96. --]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement