/********************************************************************** * Copyright (c)2000-2002 Sony Online Entertainment Inc. * All Rights Reserved * * Title: tool_dispenser * Description: * @author $Author:$ * @version $Revision:$ **********************************************************************/ /***** INCLUDES ********************************************************/ include library.sui; include library.utils; /***** CONSTANTS *******************************************************/ const string DATATABLE_INVENTORY = "datatables/dispenser/tool.iff"; const string SCRIPT_DISPENSER_SELECT = "player.player_dispenser"; const string_id SID_PURCHASE_TOOL = new string_id("dispenser", "purchase_tool"); const string_id SID_NOTHING_TO_BUY = new string_id("dispenser", "nothing_to_buy"); const string VAR_DISPENSER = "dispenser.dispenser"; const string VAR_DATATABLE = "dispenser.datatable"; /***** TRIGGERS ********************************************************/ trigger OnObjectMenuRequest(obj_id player, menu_info mi) { menu_info_data data = mi.getMenuItemByType (menu_info_types.ITEM_USE); if (data != null) data.setServerNotify (true); else mi.addRootMenu (menu_info_types.ITEM_USE, SID_PURCHASE_TOOL); return SCRIPT_CONTINUE; } trigger OnObjectMenuSelect(obj_id player, int item) { if (item == menu_info_types.ITEM_USE) { string[] inventory = getDispenserInventory(self); if (inventory == null) sendSystemMessage(player, SID_NOTHING_TO_BUY); else { sui.listbox(player, player, "@dispenser:select_purchase", sui.OK_CANCEL, "@dispenser:tool_dispenser", inventory, "msgDispenserPurchaseSelected"); setObjVar(player, VAR_DISPENSER, self); setObjVar(player, VAR_DATATABLE, DATATABLE_INVENTORY); if (!hasScript(player, SCRIPT_DISPENSER_SELECT)) attachScript(player, SCRIPT_DISPENSER_SELECT); } } return SCRIPT_CONTINUE; } /***** MESSAGEHANDLERS *************************************************/ /***** COMMANDHANDLERS *************************************************/ /***** FUNCTIONS *******************************************************/ string[] getDispenserInventory(obj_id dispenser) { if (dispenser == null || dispenser == obj_id.NULL_ID) return null; int num_items = dataTableGetNumRows(DATATABLE_INVENTORY); string[] inventory = new string[num_items]; for (int i = 0; i < num_items; i++) { inventory[i] = dataTableGetString(DATATABLE_INVENTORY, i, "name"); } if (inventory.length < 1) return null; else return inventory; }