Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[]
- Drag and drop disassemble script
- By Alundaio, who was pestered by Axebeard who doesn't know how to script
- --]]
- function on_game_start()
- RegisterScriptCallback("CUIActorMenu_OnItemDropped",OnItemDropped)
- end
- function OnItemDropped(itm_from,itm_to,slot_from,slot_to)
- -- only work if draggin item in actor's bag to another item in actor's bag
- if not (from_slot == EDDListType.iActorBag and to_slot == EDDListType.iActorBag) then
- return
- end
- local itm_dis
- local itm_craft_tool
- local sys_ini = system_ini()
- if (sys_ini:r_bool_ex(itm_from:section(),"can_disassemble") == true) then
- itm_craft_tool = itm_from
- itm_dis = itm_to
- elseif (sys_ini:r_bool_ex(itm_to:section(),"can_disassemble") == true) then
- itm_craft_tool = itm_to
- itm_dis = itm_from
- end
- if not (itm_craft_tool) then
- return -- item being dragged from or to is not craftitem
- end
- local craft_tool_sec = itm_craft_tool:section()
- local disassemble_categories = sys_ini:r_string_ex(craft_tool_sec,"disassemble_categories","")
- if (disassemble_categories == "") then
- return
- end
- disassemble_categories = alun_utils.str_explode(disassemble_categories,",")
- if (#disassemble_categories <= 0) then
- return
- end
- local itm_dis_sec = itm_dis:section()
- local cond = itm_dis:condition()
- for i,dis_sec in ipairs(disassemble_categories) do
- local result, sec, value = nil, nil, nil
- local j = sys_ini:line_count(dis_sec)-1
- for i=0,j do
- result, sec, value = sys_ini:r_line(dis_sec,i,"","")
- if (sec and sec ~= "" and sec ~= "random_parts" and sys_ini:section_exist(sec)) then
- if (dis_sec == itm_dis_sec) then
- --gives player Spare Parts item
- local random_parts = sys_ini:r_string_ex(dis_sec,"random_parts","spareparts")
- if (random_parts ~= "") then
- random_parts = alun_utils.str_explode(random_parts,",")
- if (#random_parts == 0) then
- table.insert(random_parts,"spareparts")
- end
- local amt = 1
- if (cond >= 60) then
- amt = 2
- elseif (cond >=90) then
- amt = 3
- end
- for i=1,amt do
- alife():create(random_choice(unpack(random_parts)), db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
- end
- return
- end
- end
- end
- end
- end
- end
- --[[ EXAMPLE
- [itm_hammer]
- can_disassemble = true
- disassemble_categories = dis_cat_1, dis_cat_2
- [dis_cat_1]
- wpn_pm
- wpn_ak74
- random_parts = spareparts, junk, junk2
- [dis_cat_2]
- wpn_knife
- wpn_binoc
- random_parts = spareparts, junk, junk2
- --]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement