mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
85 lines
2.5 KiB
Plaintext
85 lines
2.5 KiB
Plaintext
/**********************************************************************
|
|
* Copyright (c)2000-2002 Sony Online Entertainment Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* Title: tool_dispenser
|
|
* Description: <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;
|
|
}
|