Files
dsrc/sku.0/sys.server/compiled/game/script/terminal/tool_dispenser.script
T

71 lines
2.1 KiB
Plaintext

/* Title: tool_dispenser
*/
/***** 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;
}
/***** 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;
}