Advertisement
Guest User

Spawn Stuff by gir489

a guest
Dec 14th, 2014
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.44 KB | None | 0 0
  1. --[[ * SimpleMenu implementation of Spawn Stuff by gir489 v1
  2.      *
  3.      * Credits;
  4.      *          Harfatus for SimpleMenu.
  5.      *          SquareOne for the precache fix for U31.
  6.      *
  7.      * Changelog:
  8.      *      v1: Initial release
  9.      *
  10.      *  Not for use in Pirate Perfagtion Trainer]]
  11.  
  12. if not SimpleMenu then
  13.     SimpleMenu = class()
  14.  
  15.     function SimpleMenu:init(title, message, options)
  16.         self.dialog_data = { title = title, text = message, button_list = {},
  17.                              id = tostring(math.random(0,0xFFFFFFFF)) }
  18.         self.visible = false
  19.         for _,opt in ipairs(options) do
  20.             local elem = {}
  21.             elem.text = opt.text
  22.             opt.data = opt.data or nil
  23.             opt.callback = opt.callback or nil
  24.             elem.callback_func = callback(self, self, "_do_callback",
  25.                                           { data = opt.data,
  26.                                             callback = opt.callback})
  27.             elem.cancel_button = opt.is_cancel_button or false
  28.             if opt.is_focused_button then
  29.                 self.dialog_data.focus_button = #self.dialog_data.button_list+1
  30.             end
  31.             table.insert(self.dialog_data.button_list, elem)
  32.         end
  33.         return self
  34.     end
  35.  
  36.     function SimpleMenu:_do_callback(info)
  37.         if info.callback then
  38.             if info.data then
  39.                 info.callback(info.data)
  40.             else
  41.                 info.callback()
  42.             end
  43.         end
  44.         self.visible = false
  45.     end
  46.  
  47.     function SimpleMenu:show()
  48.         if self.visible then
  49.             return
  50.         end
  51.         self.visible = true
  52.         managers.system_menu:show(self.dialog_data)
  53.     end
  54.  
  55.     function SimpleMenu:hide()
  56.         if self.visible then
  57.             managers.system_menu:close(self.dialog_data.id)
  58.             self.visible = false
  59.             return
  60.         end
  61.     end
  62. end
  63.  
  64. patched_update_input = patched_update_input or function (self, t, dt )
  65.     if self._data.no_buttons then
  66.         return
  67.     end
  68.    
  69.     local dir, move_time
  70.     local move = self._controller:get_input_axis( "menu_move" )
  71.  
  72.     if( self._controller:get_input_bool( "menu_down" )) then
  73.         dir = 1
  74.     elseif( self._controller:get_input_bool( "menu_up" )) then
  75.         dir = -1
  76.     end
  77.    
  78.     if dir == nil then
  79.         if move.y > self.MOVE_AXIS_LIMIT then
  80.             dir = 1
  81.         elseif move.y < -self.MOVE_AXIS_LIMIT then
  82.             dir = -1
  83.         end
  84.     end
  85.  
  86.     if dir ~= nil then
  87.         if( ( self._move_button_dir == dir ) and self._move_button_time and ( t < self._move_button_time + self.MOVE_AXIS_DELAY ) ) then
  88.             move_time = self._move_button_time or t
  89.         else
  90.             self._panel_script:change_focus_button( dir )
  91.             move_time = t
  92.         end
  93.     end
  94.  
  95.     self._move_button_dir = dir
  96.     self._move_button_time = move_time
  97.    
  98.     local scroll = self._controller:get_input_axis( "menu_scroll" )
  99.     -- local sdir
  100.     if( scroll.y > self.MOVE_AXIS_LIMIT ) then
  101.         self._panel_script:scroll_up()
  102.         -- sdir = 1
  103.     elseif( scroll.y < -self.MOVE_AXIS_LIMIT ) then
  104.         self._panel_script:scroll_down()
  105.         -- sdir = -1
  106.     end
  107. end
  108. managers.system_menu.DIALOG_CLASS.update_input = patched_update_input
  109. managers.system_menu.GENERIC_DIALOG_CLASS.update_input = patched_update_input
  110.  
  111. spawnprimarycallback = spawnprimarycallback or function(info)
  112.     if ( managers.player:player_unit() ) then
  113.         local weapon = Global.blackmarket_manager.crafted_items.primaries[info]
  114.         if weapon then
  115.             managers.blackmarket:equip_weapon("primaries", info)
  116.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  117.             managers.dyn_resource:load(Idstring("unit"), Idstring(tweak_data.weapon.factory[weapon.factory_id].unit), "packages/dyn_resources", false)
  118.             managers.player:player_unit():inventory():add_unit_by_factory_name( weapon.factory_id, false, false, weapon.blueprint, weapon.texture_switches )
  119.         end
  120.     end
  121. end
  122.  
  123. spawnsecondarycallback = spawnsecondarycallback or function(info)
  124.     if ( managers.player:player_unit() ) then
  125.         local weapon = Global.blackmarket_manager.crafted_items.secondaries[info]
  126.         if weapon then
  127.             managers.blackmarket:equip_weapon("secondaries", info)
  128.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  129.             managers.dyn_resource:load(Idstring("unit"), Idstring(tweak_data.weapon.factory[weapon.factory_id].unit), "packages/dyn_resources", false)
  130.             managers.player:player_unit():inventory():add_unit_by_factory_name( weapon.factory_id, false, false, weapon.blueprint, weapon.texture_switches )
  131.         end
  132.     end
  133. end
  134.  
  135. equiparmorcallback = equiparmorcallback or function(info)
  136.     if ( managers.player:player_unit() ) then
  137.         if info then
  138.             managers.blackmarket:equip_armor(info)
  139.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  140.             --managers.dyn_resource:load(Idstring("unit"), Idstring(tweak_data.weapon.factory[weapon.factory_id].unit), "packages/dyn_resources", false)
  141.             managers.player:player_unit():_reload_outfit()
  142.             --managers.player:player_unit():inventory():add_unit_by_factory_name( weapon.factory_id, false, false, weapon.blueprint, weapon.texture_switches )
  143.         end
  144.     end
  145. end
  146.  
  147. changemaskcallback = changemaskcallback or function(info)
  148.     if ( managers.player:player_unit() ) then
  149.         if info then
  150.             managers.blackmarket:equip_mask(info)
  151.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  152.             --managers.dyn_resource:load(Idstring("unit"), Idstring(tweak_data.weapon.factory[weapon.factory_id].unit), "packages/dyn_resources", false)
  153.             managers.player:player_unit():_reload_outfit()
  154.             --managers.player:player_unit():inventory():add_unit_by_factory_name( weapon.factory_id, false, false, weapon.blueprint, weapon.texture_switches )
  155.         end
  156.     end
  157. end
  158.  
  159. spawnmeleecallback = spawnmeleecallback or function(info)
  160.     if ( managers.player:player_unit() ) then
  161.         if info then
  162.             managers.blackmarket:equip_melee_weapon(info)
  163.             managers.network:session():send_to_peers_synched("set_unit", managers.player:player_unit(), managers.network:session():local_peer():character(), managers.blackmarket:outfit_string(), managers.network:session():local_peer():outfit_version(), managers.network:session():local_peer():id())
  164.             --managers.dyn_resource:load(Idstring("unit"), Idstring(tweak_data.weapon.factory[weapon.factory_id].unit), "packages/dyn_resources", false)
  165.             managers.player:player_unit():_reload_outfit()
  166.             --managers.player:player_unit():inventory():add_unit_by_factory_name( weapon.factory_id, false, false, weapon.blueprint, weapon.texture_switches )
  167.         end
  168.     end
  169. end
  170.  
  171. function doPrimary(info)
  172.     opts = {}
  173.     for i,weapon in pairs(Global.blackmarket_manager.crafted_items.primaries) do
  174.         if ( weapon ) then
  175.             table.insert( opts, { text = managers.blackmarket:get_weapon_name_by_category_slot("primaries",i):gsub("\"", ""), callback = spawnprimarycallback, data = i } )
  176.         end
  177.     end
  178.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  179.     mymenu = SimpleMenu:new("Change Primary", "Select the primary weapon you want.", opts)
  180.     mymenu:show()
  181. end
  182.  
  183. function doArmor(info)
  184.     opts = {}
  185.     for i,armor in pairs(Global.blackmarket_manager.armors) do
  186.         if ( armor ) then
  187.             table.insert( opts, { text = managers.localization:text(tweak_data.blackmarket.armors[i].name_id), callback = equiparmorcallback, data = i } )
  188.         end
  189.     end
  190.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  191.     mymenu = SimpleMenu:new("Change Armor", "Select the armor you want.", opts)
  192.     mymenu:show()
  193. end
  194.  
  195. function doSecondary(info)
  196.     opts = {}
  197.     for i,weapon in pairs(Global.blackmarket_manager.crafted_items.secondaries) do
  198.         if ( weapon ) then
  199.             table.insert( opts, { text = managers.blackmarket:get_weapon_name_by_category_slot("secondaries",i):gsub("\"", ""), callback = spawnsecondarycallback, data = i } )
  200.         end
  201.     end
  202.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  203.     mymenu = SimpleMenu:new("Change Secondary", "Select the secondary weapon you want.", opts)
  204.     mymenu:show()
  205. end
  206.  
  207. function doMelee(info)
  208.     opts = {}
  209.     for i,melee in pairs(Global.blackmarket_manager.melee_weapons) do
  210.         if ( melee ) then
  211.             table.insert( opts, { text = managers.localization:text(tweak_data.blackmarket.melee_weapons[i].name_id), callback = spawnmeleecallback, data = i } )
  212.         end
  213.     end
  214.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  215.     mymenu = SimpleMenu:new("Change Melee", "Select the melee weapon you want.", opts)
  216.     mymenu:show()
  217. end
  218.  
  219. function doMask(info)
  220.     opts = {}
  221.     for i,mask in pairs(Global.blackmarket_manager.crafted_items.masks) do
  222.         if ( mask ) then
  223.             --managers.localization:text(tweak_data.blackmarket.masks[mask.mask_id].name_id)
  224.             table.insert( opts, { text = managers.blackmarket:get_mask_name_by_category_slot("masks",i):gsub("\"", ""), callback = changemaskcallback, data = i } )
  225.         end
  226.     end
  227.     table.insert( opts, { text = "Close", is_cancel_button = true } )
  228.     mymenu = SimpleMenu:new("Change Mask", "Select the mask you want.", opts)
  229.     mymenu:show()
  230. end
  231.  
  232. opts = {}
  233. table.insert( opts, { text = "Change Primary", callback = doPrimary, data = nil } )
  234. table.insert( opts, { text = "Change Secondary", callback = doSecondary, data = nil } )
  235. table.insert( opts, { text = "Change Armor", callback = doArmor, data = nil } )
  236. table.insert( opts, { text = "Change Melee", callback = doMelee, data = nil } )
  237. table.insert( opts, { text = "Change Mask", callback = doMask, data = nil } )
  238. table.insert( opts, { text = "AND GOOOOOOD RIDDANCE!", is_cancel_button = true } )
  239. mymenu = SimpleMenu:new("YEP?", "WHATCHU WANT?!", opts)
  240. mymenu:show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement