mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-07-14 00:02:07 -04:00
171 lines
6.3 KiB
Python
171 lines
6.3 KiB
Python
import sys
|
|
from java.util import HashMap
|
|
from java.util import Vector
|
|
from services.sui.SUIService import ListBoxType
|
|
from services.sui.SUIService import InputBoxType
|
|
from main import NGECore
|
|
from java.lang import Long
|
|
from services.sui.SUIWindow import Trigger
|
|
|
|
def setup():
|
|
return
|
|
|
|
def run(core, actor, target, commandString):
|
|
|
|
if actor.getCombatFlag() > 0:
|
|
return
|
|
|
|
cell = actor.getContainer()
|
|
building = actor.getGrandparent()
|
|
ghost = actor.getSlottedObject('ghost')
|
|
|
|
if not ghost or not cell or not building or not core.housingService.getPermissions(actor, cell):
|
|
return
|
|
|
|
if ghost.getAmountOfVendors() >= actor.getSkillModBase('manage_vendor'):
|
|
actor.sendSystemMessage('@player_structure:full_vendors', 0)
|
|
return
|
|
|
|
suiOptions = HashMap()
|
|
suiOptions.put(Long(1), '@player_structure:terminal')
|
|
suiOptions.put(Long(2), '@player_structure:droid')
|
|
# TODO add creatures
|
|
window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, '@player_structure:vendor_type_t', '@player_structure:vendor_type_d', suiOptions, actor, None, 5)
|
|
returnList = Vector()
|
|
returnList.add('List.lstList:SelectedRow')
|
|
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleFirstWindow)
|
|
core.suiService.openSUIWindow(window)
|
|
return
|
|
|
|
def handleFirstWindow(actor, window, eventType, returnList):
|
|
|
|
core = NGECore.getInstance()
|
|
index = int(returnList.get(0))
|
|
selected = window.getObjectIdByIndex(index)
|
|
hiring = actor.getSkillModBase('hiring')
|
|
if selected == 1:
|
|
suiOptions = HashMap()
|
|
if hiring >= 10:
|
|
suiOptions.put(Long(1), '@player_structure:terminal_bulky')
|
|
if hiring >= 30:
|
|
suiOptions.put(Long(2), '@player_structure:terminal_standard')
|
|
if hiring >= 50:
|
|
suiOptions.put(Long(3), '@player_structure:terminal_small')
|
|
if hiring >= 75:
|
|
suiOptions.put(Long(4), '@player_structure:terminal_fancy')
|
|
if hiring >= 90:
|
|
suiOptions.put(Long(5), '@player_structure:terminal_slim')
|
|
window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, '@player_structure:terminal_type_t', '@player_structure:terminal_type_d', suiOptions, actor, None, 5)
|
|
returnList = Vector()
|
|
returnList.add('List.lstList:SelectedRow')
|
|
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleTerminalWindow)
|
|
core.suiService.openSUIWindow(window)
|
|
|
|
if selected == 2:
|
|
suiOptions = HashMap()
|
|
if hiring >= 20:
|
|
suiOptions.put(Long(1), '@player_structure:droid_bartender')
|
|
if hiring >= 50:
|
|
suiOptions.put(Long(2), '@player_structure:droid_power')
|
|
if hiring >= 60:
|
|
suiOptions.put(Long(3), '@player_structure:droid_wed')
|
|
if hiring >= 90:
|
|
suiOptions.put(Long(4), '@player_structure:droid_surgical')
|
|
if hiring >= 100:
|
|
suiOptions.put(Long(5), '@player_structure:droid_protocol')
|
|
window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, '@player_structure:droid_type_t', '@player_structure:droid_type_d', suiOptions, actor, None, 5)
|
|
returnList = Vector()
|
|
returnList.add('List.lstList:SelectedRow')
|
|
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handleDroidWindow)
|
|
core.suiService.openSUIWindow(window)
|
|
|
|
return
|
|
|
|
def handleTerminalWindow(actor, window, eventType, returnList):
|
|
|
|
core = NGECore.getInstance()
|
|
index = int(returnList.get(0))
|
|
selected = window.getObjectIdByIndex(index)
|
|
|
|
if selected == 1:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_bulky.iff')
|
|
elif selected == 2:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_standard.iff')
|
|
elif selected == 3:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_small.iff')
|
|
elif selected == 4:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_fancy.iff')
|
|
elif selected == 5:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_terminal_slim.iff')
|
|
|
|
createNameVendorWindow(core, actor)
|
|
|
|
return
|
|
|
|
def handleDroidWindow(actor, window, eventType, returnList):
|
|
|
|
core = NGECore.getInstance()
|
|
index = int(returnList.get(0))
|
|
selected = window.getObjectIdByIndex(index)
|
|
|
|
if selected == 1:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_bartender.iff')
|
|
elif selected == 2:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_power.iff')
|
|
elif selected == 3:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_wed.iff')
|
|
elif selected == 4:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_surgical.iff')
|
|
elif selected == 5:
|
|
actor.setAttachment('selectedVendorTemplate', 'object/tangible/vendor/shared_vendor_droid_protocol.iff')
|
|
|
|
createNameVendorWindow(core, actor)
|
|
|
|
return
|
|
|
|
def createNameVendorWindow(core, actor):
|
|
|
|
window = core.suiService.createInputBox(InputBoxType.INPUT_BOX_OK_CANCEL, '@player_structure:name_t', '@player_structure:name_d', actor, None, 5, handleVendorName)
|
|
core.suiService.openSUIWindow(window)
|
|
return
|
|
|
|
def handleVendorName(actor, window, eventType, returnList):
|
|
|
|
core = NGECore.getInstance()
|
|
name = returnList.get(0)
|
|
print name
|
|
inventory = actor.getSlottedObject('inventory')
|
|
ghost = actor.getSlottedObject('ghost')
|
|
|
|
if not core.characterService.checkName(name, actor.getClient()):
|
|
actor.sendSystemMessage('@player_structure:obscene', 0)
|
|
createNameVendorWindow(core, actor)
|
|
return
|
|
|
|
if not actor.getAttachment('selectedVendorTemplate') or not inventory or not ghost:
|
|
actor.sendSystemMessage('@player_structure:create_failed', 0)
|
|
return
|
|
|
|
if actor.getInventoryItemCount() >= 80:
|
|
actor.sendSystemMessage('@player_structure:inventory_full_generic', 0)
|
|
return
|
|
|
|
vendor = core.objectService.createObject(actor.getAttachment('selectedVendorTemplate'), actor.getPlanet())
|
|
|
|
if not vendor:
|
|
actor.sendSystemMessage('@player_structure:create_failed', 0)
|
|
return
|
|
|
|
actor.setAttachment('selectedVendorTemplate', None)
|
|
vendor.setAttachment('isVendor', True)
|
|
vendor.setAttachment('onMap', True)
|
|
vendor.setAttachment('maintenanceAmount', 0)
|
|
vendor.setAttachment('vendorOwner', actor.getObjectID())
|
|
vendor.setAttachment('initialized', False)
|
|
vendor.setAttachment('vendorSearchEnabled', False)
|
|
vendor.setCustomName('Vendor: ' + name)
|
|
ghost.addVendor(vendor.getObjectID())
|
|
inventory.add(vendor)
|
|
actor.sendSystemMessage('@player_structure:create_success', 0)
|
|
return
|
|
|