MMD_PRC8/_module/nss/pi_crafting.nss
Jaysyn904 d77404f157 2025/07/15 Update
Added PEPS AI.
Updated module name.
Set all henchmen to have a random race &/or class based name using a custom version of Markshire's Nomeclature scripts, as well as appearance.
Set Constructs, Undead, Outsiders & Elementals to not require food or drink.
Full compile.
2025-07-15 22:19:46 -04:00

718 lines
40 KiB
Plaintext

/*//////////////////////////////////////////////////////////////////////////////
// Script Name: pi_crafting
////////////////////////////////////////////////////////////////////////////////
Executable plug in script for Philos Module Extentions
Crafting UI for players items.
*///////////////////////////////////////////////////////////////////////////////
#include "0i_nui"
#include "0i_items"
#include "nw_inc_gff"
const string CRAFT_JSON = "CRAFT_JSON";
const string CRAFT_COOL_DOWN = "CRAFT_COOL_DOWN";
const string CRAFT_ITEM_SELECTION = "CRAFT_ITEM_SELECTION";
const string CRAFT_MATERIAL_SELECTION = "CRAFT_MATERIAL_SELECTION";
const string CRAFT_MODEL_SELECTION = "CRAFT_MODEL_SELECTION";
const string CRAFT_COLOR_PALLET = "CRAFT_COLOR_PALLET";
const string CRAFT_LEFT_PART_COLOR = "CRAFT_LEFT_PART_COLOR";
const string CRAFT_ALL_COLOR = "CRAFT_ALL_COLOR";
const string CRAFT_RIGHT_PART_COLOR = "CRAFT_RIGHT_PART_COLOR";
const string CRAFT_TARGET = "CRAFT_TARGET";
// Tag used in lighting effects.
const string CRAFT_HIGHLIGHT = "CRAFT_HIGHLIGHT";
const string CRAFT_ULTRALIGHT = "CRAFT_ULTRALIGHT";
json CreateItemCombo(object oPC, json jRow, string sComboBind);
json CreateModelCombo(object oPC, object oTarget, json jRow, string sComboBind);
json CreateMaterialCombo(object oPC, json jRow, string sComboBind);
// Sets the material buttons for use.
// nMaterial 0,1 Cloth 2,3 Leather 4,5 Metal -1 None.
void SetMaterialButtons(object oPC, int nToken, int nMaterial);
// Returns the correct item based on the crafting menu selected item.
object GetSelectedItem(object oTarget, int nItemSelected);
int GetArmorModelSelected(object oPC);
// Returns True if oItem, nPart has a per part color for sSide.
int GetHasPartColor(object oItem, int nPart, string sSide);
// Does startup check if the game has just been loaded.
int StartingUp(object oPC);
void main()
{
object oPC = OBJECT_SELF;
object oTarget = GetLocalObject(oPC, CRAFT_TARGET);
if(oTarget == OBJECT_INVALID) oTarget = oPC;
if(StartingUp(oPC)) return;
json jCraft = GetLocalJson(oPC, CRAFT_JSON);
// Row 1 (Object Name)****************************************************** 508 / 83
json jRow = CreateTextEditBox(JsonArray(), "plc_hold_bind", "txt_item_name", 50, FALSE, 486.0f, 30.0f); // 419
json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow));
// Row 2 (Object Name)****************************************************** 508 / 121
jRow = JsonArray();
if(!AI_SERVER) jRow = CreateButton(jRow, "Information", "btn_info", 160.0f, 30.0f, -1.0, "btn_info_tooltip");
else
{
if(GetIsDM(oTarget))
{
jRow = CreateButton(jRow, "Information", "btn_info", 160.0f, 30.0f, -1.0, "btn_info_tooltip");
}
else jRow = JsonArrayInsert(jRow, NuiSpacer());
}
jRow = CreateButton(jRow, "Wardrobe", "btn_wardrobe", 158.0f, 30.0f, -1.0, "btn_wardrobe_tooltip");
jRow = CreateButtonSelect(jRow, "Add Light", "btn_highlight", 160.0f, 30.0f, "btn_highlight_tooltip");
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 3 (Object Name)****************************************************** 508 / 159
jRow = CreateButton(JsonArray(), "Save", "btn_save", 160.0f, 30.0f, -1.0, "btn_save_tooltip");
jRow = CreateButton(jRow, "Select Target", "btn_select_target", 158.0f, 30.0f);
jRow = CreateButton(jRow, "", "btn_cancel", 160.0f, 30.0f, -1.0, "btn_cancel_tooltip");
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 4 (labels)*********************************************************** 508 / 177
jRow = CreateLabel(JsonArray(), "Model", "module_title", 143.0f, 10.0f);
jRow = CreateLabel(jRow, "Color", "color_title", 339.0f, 10.0f);
jRow = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 5 (groups)
// Row 51 (title)*********************************************************** 508 / 195 / 18
json jGroupRow = CreateLabel(JsonArray(), "Item", "item__cmb_title", 128.0f, 10.0f);
json jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow));
// Row 52 (combo)*********************************************************** 508 / 233 / 56
jGroupRow = CreateItemCombo(oPC, JsonArray(), "item_combo");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 53 (title)*********************************************************** 508 / 251 / 74
jGroupRow = CreateLabel(JsonArray(), "Model", "model_cmb_title",128.0f, 10.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 54 (combo)*********************************************************** 508 / 289 / 112
jGroupRow = CreateModelCombo(oPC, oTarget, JsonArray(), "model_combo");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 55 (title)*********************************************************** 508 / 307 / 120
jGroupRow = CreateLabel(JsonArray(), "", "top_title",128.0f, 10.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 56 (top)************************************************************* 508 / 355 / 168
jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_t", 40.0f, 40.0f);
// Removed TextEditBox for mobile
jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_t", 3, FALSE, 40.0, 40.0);
//CreateLabel(jGroupRow, "", "txt_model_number_t", 40.0, 40.0);
jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_t", 40.0f, 40.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 57 (title)*********************************************************** 508 / 373 / 186
jGroupRow = CreateLabel(JsonArray(), "", "middle_title",128.0f, 10.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 58 (middle)********************************************************** 508 / 421 /234
jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_m", 40.0f, 40.0f);
// Removed TextEditBox for mobile
jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_m", 3, FALSE, 40.0, 40.0);
//CreateLabel(jGroupRow, "", "txt_model_number_m", 40.0, 40.0);
jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_m", 40.0f, 40.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 59 (title)*********************************************************** 508 / 439 / 252
jGroupRow = CreateLabel(JsonArray(), "", "bottom_title",128.0f, 10.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 510 (bottom)********************************************************* 508 / 487 /300
jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_b", 40.0f, 40.0f);
// Removed TextEditBox for mobile
jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_b", 3, FALSE, 40.0, 40.0);
//CreateLabel(jGroupRow, "", "txt_model_number_b", 40.0, 40.0);
jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_b", 40.0f, 40.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 511 (blank spacer)
jGroupRow = CreateLabel(JsonArray(), "", "blank_space",128.0f, 20.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 512 (light)********************************************************** 508 / 487 /300
jGroupRow = CreateButtonSelect(JsonArray(), "Randomize", "btn_randomize", 128.0f, 30.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupCol = JsonArrayInsert(jGroupCol, NuiSpacer());
jRow = JsonArrayInsert(JsonArray(), NuiHeight(NuiWidth(NuiGroup(NuiCol(jGroupCol)), 143.0), 442.0));
// Make the Color Group.
// Row 550 (groups)********************************************************* 508 / 361 / 184
json jImage = NuiEnabled(NuiId(NuiImage(NuiBind("color_pallet_image"), JsonInt(0), JsonInt(0), JsonInt(1)), "color_pallet"), NuiBind("color_pallet_event"));
jImage = NuiWidth(jImage, 320.0); // 256 + 64
jImage = NuiHeight(jImage, 220.0); // 176 + 44
jImage = NuiTooltip(jImage, NuiBind("color_pallet_tooltip"));
json jIndicator = JsonArrayInsert(JsonArray(), NuiDrawListRect(JsonBool(TRUE), NuiColor(255,255,255), JsonBool(FALSE), JsonFloat(2.0), NuiBind("color_pallet_pointer")));
jImage = NuiDrawList(jImage, JsonBool(FALSE), jIndicator);
jGroupRow = JsonArrayInsert(JsonArray(), jImage);
jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow));
// Row 551 (groups)********************************************************* 508 / 379 /202
jGroupRow = CreateLabel(JsonArray(), "Part To Color", "lbl_color_parts", 320.0f, 10.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 552 (groups)********************************************************* 508 / 417 /240
jGroupRow = CreateButtonSelect(JsonArray(), "Right", "btn_right_part_color", 98.0, 30.0, "btn_right_part_color_tooltip");
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButtonSelect(jGroupRow, "All", "btn_all_color", 98.0, 30.0, "btn_all_color_tooltip");
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButtonSelect(jGroupRow, "Left", "btn_left_part_color", 98.0, 30.0, "btn_left_part_color_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 553 (groups)********************************************************* 508 / 435 / 258
jGroupRow = CreateLabel(JsonArray(), "Part Color To Reset", "lbl_reset_parts", 320.0f, 10.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 554 (groups)********************************************************* 508 / 473 /296
jGroupRow = CreateButton(JsonArray(), "Right", "btn_right_part_reset", 98.0, 30.0, -1.0, "btn_right_part_reset_tooltip");
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButton(jGroupRow, "All", "btn_all_reset", 50.0, 30.0, -1.0, "btn_all_reset_tooltip");
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButton(jGroupRow, "Left", "btn_left_part_reset", 98.0, 30.0, -1.0, "btn_left_part_reset_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 555 (groups)********************************************************* 508 / 491 / 314
jGroupRow = CreateLabel(JsonArray(), "Material to Color", "lbl_material_color", 320.0f, 10.0f);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 556 (groups)********************************************************* 508 / 529 /352
jGroupRow = CreateButtonSelect(JsonArray(), "Cloth 1", "btn_material_0", 98.0, 30.0);
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButtonSelect(jGroupRow, "Leather 1", "btn_material_2", 98.0, 30.0);
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButtonSelect(jGroupRow, "Metal 1", "btn_material_4", 98.0, 30.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
// Row 557 (groups)********************************************************* 508 / 567 / 390
jGroupRow = CreateButtonSelect(JsonArray(), "Cloth 2", "btn_material_1", 98.0, 30.0);
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButtonSelect(jGroupRow, "Leather 2", "btn_material_3", 98.0, 30.0);
jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer());
jGroupRow = CreateButtonSelect(jGroupRow, "Metal 2", "btn_material_5", 98.0, 30.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupCol = JsonArrayInsert(jGroupCol, NuiSpacer());
jRow = JsonArrayInsert(jRow, NuiHeight(NuiWidth(NuiGroup(NuiCol(jGroupCol)), 339.0), 442.0)); // 275 398
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
json jLayout = NuiCol(jCol);
// Get the window location to restore it from the database.
json jGeometry = JsonObjectGet(jCraft, "CRAFT_MENU");
float fX = JsonGetFloat(JsonObjectGet(jGeometry, "x"));
float fY = JsonGetFloat(JsonObjectGet(jGeometry, "y"));
string sPCWindow;
int nToken = SetWindow(oPC, jLayout, "crafting_nui", "Crafting",
fX, fY, 508.0, 700.0, FALSE, FALSE, FALSE, FALSE, TRUE, "pe_crafting"); // 444 645
// Set all binds, events, and watches.
NuiSetBindWatch (oPC, nToken, "window_geometry", TRUE);
int nItem = JsonGetInt(JsonObjectGet(jCraft, CRAFT_ITEM_SELECTION));
object oItem = GetSelectedItem(oTarget, nItem);
// Row 1
NuiSetBind(oPC, nToken, "txt_item_name", JsonString(GetName(oItem)));
NuiSetBind(oPC, nToken, "txt_item_name_event", JsonBool(TRUE));
NuiSetBindWatch(oPC, nToken, "txt_item_name", TRUE);
// Row 2
NuiSetBind(oPC, nToken, "btn_info_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_info_tooltip", JsonString(" Look at and change item information"));
NuiSetBind(oPC, nToken, "btn_wardrobe_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_wardrobe_tooltip", JsonString(" Use your wardrobe to save/load item appearances"));
int nLight = GetLocalInt(oPC, CRAFT_HIGHLIGHT) + GetLocalInt(oPC, CRAFT_ULTRALIGHT);
NuiSetBind(oPC, nToken, "btn_highlight", JsonBool(nLight));
NuiSetBind(oPC, nToken, "btn_highlight_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_highlight_tooltip", JsonString(" Left click for White light, Right click for Ultravision"));
// Row 3
NuiSetBind(oPC, nToken, "btn_save_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_save_tooltip", JsonString(" Save current changes"));
NuiSetBind(oPC, nToken, "btn_select_target_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cancel_label", JsonString("Exit"));
NuiSetBind(oPC, nToken, "btn_cancel_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cancel_tooltip", JsonString(" Exit the crafting menu"));
// Row 4 Labels.
// Row 5 Groups.
// Row 51 title.
// Row 52
NuiSetBind(oPC, nToken, "item_combo_selected", JsonInt(nItem));
NuiSetBind(oPC, nToken, "item_combo_event", JsonBool(TRUE));
NuiSetBindWatch(oPC, nToken, "item_combo_selected", TRUE);
// Row 53 title.
// Row 54
int nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION));
if(nItem == 1 || nItem == 2 || nItem == 4)
{
if(GetHiddenWhenEquipped(oItem)) nSelected = 1;
else nSelected = 0;
}
NuiSetBind(oPC, nToken, "model_combo_selected", JsonInt (nSelected));
NuiSetBind(oPC, nToken, "model_combo_event", JsonBool (TRUE));
NuiSetBindWatch(oPC, nToken, "model_combo_selected", TRUE);
// Row 55, 56, 57 titles
// Row 58 top, 59 middle, 510 bottom
string sModelTop, sModelMiddle, sModelBottom;
// Model Group
if(ai_GetIsWeapon(oItem))
{
int nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 0);
int nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 0);
int nModelNumber = (nModel * 10) + nColor;
sModelTop = IntToString(nModelNumber);
nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 1);
nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 1);
nModelNumber = (nModel * 10) + nColor;
sModelMiddle = IntToString(nModelNumber);
nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 2);
nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 2);
nModelNumber = (nModel * 10) + nColor;
sModelBottom = IntToString(nModelNumber);
// Row 55
NuiSetBind(oPC, nToken, "top_title_label", JsonString("Top"));
// Row 56
//NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString(sModelTop));
NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(TRUE));
// Row 57
NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Middle"));
// Row 58
//NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle));
NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE));
// Row 59
NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("Bottom"));
// Row 510
//NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(sModelBottom));
NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(TRUE));
// Row 511
NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected weapon"));
}
// Armor and clothing
else if(nItem == 0)
{
nSelected = GetArmorModelSelected(oPC);
// These models only have one side so make sure we are not linked.
if (nSelected == ITEM_APPR_ARMOR_MODEL_NECK ||
nSelected == ITEM_APPR_ARMOR_MODEL_TORSO ||
nSelected == ITEM_APPR_ARMOR_MODEL_BELT ||
nSelected == ITEM_APPR_ARMOR_MODEL_PELVIS ||
nSelected == ITEM_APPR_ARMOR_MODEL_ROBE)
{
sModelMiddle = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected));
// Row 55
NuiSetBind(oPC, nToken, "top_title_label", JsonString(""));
// Row 56
//NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "txt_model_name_t", JsonString(""));
NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(FALSE));
// Row 57
NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Model"));
// Row 58
//NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle));
NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE));
// Row 59
NuiSetBind(oPC, nToken, "bottom_title_label", JsonString(""));
// Row 510
//NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(""));
NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(FALSE));
}
else
{
sModelTop = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected));
if(nSelected == ITEM_APPR_ARMOR_MODEL_RTHIGH) nSelected--;
else nSelected++;
sModelBottom = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected));
// Row 55
NuiSetBind(oPC, nToken, "top_title_label", JsonString("Right"));
// Row 56
//NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString(sModelTop));
NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(TRUE));
// Row 57
NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Right & Left"));
// Row 58
//NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelTop));
NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE));
// Row 59
NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("Left"));
// Row 510
//NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(sModelBottom));
NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(TRUE));
}
// Row 511
NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected armor"));
}
// Shields, Cloaks, and Helmets.
else
{
sModelMiddle = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_SIMPLE_MODEL, 0));
// Row 55
NuiSetBind(oPC, nToken, "top_title_label", JsonString(""));
// Row 56
//NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString(""));
NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(FALSE));
// Row 57
NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Model"));
// Row 58
//NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle));
NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE));
// Row 59
NuiSetBind(oPC, nToken, "bottom_title_label", JsonString(""));
// Row 510
//NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(""));
NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(FALSE));
// Row 511
NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected item"));
}
// Color Group
if(ai_GetIsWeapon(oItem) || ai_GetIsShield(oItem))
{
// Need to disable the color widgets.
// Row 511
NuiSetBind(oPC, nToken, "color_pallet_image", JsonString("gui_pal_tattoo"));
NuiSetBind(oPC, nToken, "color_pallet_image_event", JsonBool(FALSE));
// Row 512 - Label Part to Color
// Row 5l3
NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE));
// Row 514 - Label Part Color to Reset
// Row 515
NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE));
// Row 516 - Label Material to Color
// Row 517
NuiSetBind(oPC, nToken, "btn_material_0", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_material_2", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_material_4", JsonBool(FALSE));
// Row 518
NuiSetBind(oPC, nToken, "btn_material_1", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_material_3", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_material_5", JsonBool(FALSE));
SetMaterialButtons(oPC, nToken, -1);
}
// Armor and clothing
else if(nItem == 0)
{
// Row 511
string sColorPallet = GetLocalString(oPC, CRAFT_COLOR_PALLET);
if(sColorPallet == "") sColorPallet = "gui_pal_tattoo";
int nMaterialSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION));
int nModelSelected = GetArmorModelSelected(oPC);
// Row 511
NuiSetBind(oPC, nToken, "color_pallet_image", JsonString(sColorPallet));
NuiSetBind(oPC, nToken, "color_pallet_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "color_pallet_tooltip", JsonString(" Select a color or use the mouse wheel"));
int nSelectedRight, nSelectedAll, nSelectedLeft;
string sColorAll = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected));
// These models only have one side so make sure we are not linked.
if (nModelSelected == ITEM_APPR_ARMOR_MODEL_NECK ||
nModelSelected == ITEM_APPR_ARMOR_MODEL_TORSO ||
nModelSelected == ITEM_APPR_ARMOR_MODEL_BELT ||
nModelSelected == ITEM_APPR_ARMOR_MODEL_PELVIS ||
nModelSelected == ITEM_APPR_ARMOR_MODEL_ROBE)
{
// Row 512 - Label Part to Color
// Row 5l3
int nPartColor = GetHasPartColor(oItem, nModelSelected, "Right");
nSelectedRight = JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR));
if(!nSelectedRight && nPartColor)
{
nSelectedRight = TRUE;
nSelectedLeft = FALSE;
}
nSelectedAll = !nSelectedRight;
jCraft = JsonObjectSet(jCraft, CRAFT_ALL_COLOR, JsonBool(nSelectedAll));
jCraft = JsonObjectSet(jCraft, CRAFT_RIGHT_PART_COLOR, JsonBool(nSelectedRight));
NuiSetBind(oPC, nToken, "btn_right_part_color", JsonBool(nSelectedRight));
NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(nSelectedAll));
NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE));
// Row 514 - Label Part Color to Reset
// Row 5l5
nSelectedRight = GetHasPartColor(oItem, nModelSelected, "Right");
nSelectedAll = nSelectedRight;
NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(nSelectedRight));
NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(nSelectedAll));
NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE));
}
else
{
// Row 512 - Label Part to Color
// Row 5l3
int nPartColor = GetHasPartColor(oItem, nModelSelected, "Right");
nSelectedRight = JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR));
if(!nSelectedRight && nPartColor)
{
nSelectedRight = TRUE;
nSelectedLeft = FALSE;
}
else
{
nPartColor = GetHasPartColor(oItem, nModelSelected, "Left");
nSelectedLeft = JsonGetInt(JsonObjectGet(jCraft, CRAFT_LEFT_PART_COLOR));
if(!nSelectedLeft && nPartColor)
{
nSelectedLeft = TRUE;
nSelectedRight = FALSE;
}
}
nSelectedAll = !nSelectedRight && !nSelectedLeft;
jCraft = JsonObjectSet(jCraft, CRAFT_LEFT_PART_COLOR, JsonBool(nSelectedLeft));
jCraft = JsonObjectSet(jCraft, CRAFT_ALL_COLOR, JsonBool(nSelectedAll));
jCraft = JsonObjectSet(jCraft, CRAFT_RIGHT_PART_COLOR, JsonBool(nSelectedRight));
NuiSetBind(oPC, nToken, "btn_right_part_color", JsonBool(nSelectedRight));
NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(nSelectedAll));
NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(nSelectedLeft));
NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(TRUE));
// Row 514 - Label Part Color to Reset
// Row 5l5
nSelectedRight = GetHasPartColor(oItem, nModelSelected, "Right");
nSelectedLeft = GetHasPartColor(oItem, nModelSelected, "Left");
nSelectedAll = nSelectedRight || nSelectedLeft;
NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(nSelectedRight));
NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(nSelectedAll));
NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(nSelectedLeft));
}
int nColor;
if(!JsonGetInt(NuiGetBind(oPC, nToken, "btn_all_color")))
{
int nModelSelected = GetArmorModelSelected(oPC);
if(!JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR)))
{
// Note: Right Thigh and Left Thigh are backwards so this fixes that!
if (nModelSelected == ITEM_APPR_ARMOR_MODEL_RTHIGH) nModelSelected--;
else nModelSelected++;
}
int nIndex = ITEM_APPR_ARMOR_NUM_COLORS + (nModelSelected * ITEM_APPR_ARMOR_NUM_COLORS) + nMaterialSelected;
nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nIndex);
}
else nColor = 255;
if(nColor == 255) nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected);
float fPointX = IntToFloat((nColor - ((nColor / 16) * 16)) * 20);
float fPointY = IntToFloat((nColor / 16) * 20);
NuiSetBind(oPC, nToken, "color_pallet_pointer", NuiRect(fPointX, fPointY, 20.0, 20.0));
// Row 516 - Label Material to Color
// Row 517 & 518
NuiSetBind(oPC, nToken, "btn_right_part_color_tooltip", JsonString(" Select the right part to be uniquely colored"));
NuiSetBind(oPC, nToken, "btn_all_color_tooltip", JsonString(" Select all parts to be colored"));
NuiSetBind(oPC, nToken, "btn_left_part_color_tooltip", JsonString(" Select the left part to be uniquely colored"));
NuiSetBind(oPC, nToken, "btn_right_part_reset_tooltip", JsonString(" Clears the right part's unique color"));
NuiSetBind(oPC, nToken, "btn_all_reset_tooltip", JsonString(" Clears all parts unique colors"));
NuiSetBind(oPC, nToken, "btn_left_part_reset_tooltip", JsonString(" Clears the left part's unique color"));
nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION));
SetMaterialButtons(oPC, nToken, nSelected);
SetLocalJson(oPC, CRAFT_JSON, jCraft);
}
// Cloaks and Helmets.
else
{
// Row 511
string sColorPallet = GetLocalString(oPC, CRAFT_COLOR_PALLET);
if(sColorPallet == "") sColorPallet = "gui_pal_tattoo";
int nMaterialSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION));
int nModelSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION));
int nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected);
float fPointX = IntToFloat((nColor - ((nColor / 16) * 16)) * 20);
float fPointY = IntToFloat((nColor / 16) * 20);
NuiSetBind(oPC, nToken, "color_pallet_pointer", NuiRect(fPointX, fPointY, 20.0, 20.0));
NuiSetBind(oPC, nToken, "color_pallet_image", JsonString(sColorPallet));
NuiSetBind(oPC, nToken, "color_pallet_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "color_pallet_tooltip", JsonString(" Select a color or use the mouse wheel"));
// Row 512 - Label Part to Color
// Row 5l3
NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(FALSE));
// Row 514 - Label Part Color to Reset
// Row 5l5
NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(FALSE));
//NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(FALSE));
NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE));
// Row 516 - Label Material to Color
// Row 517 & 518
nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION));
SetMaterialButtons(oPC, nToken, nSelected);
}
// Lets make sure we clean up any cool down variables.
//DeleteLocalInt(oPC, CRAFT_COOL_DOWN);
}
json CreateItemCombo(object oPC, json jRow, string sComboBind)
{
int nCnt;
// Create the list.
json jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Armor", 0));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Cloak", 1));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Headgear", 2));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Right hand", 3));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Left hand", 4));
return CreateCombo(jRow, jCombo, sComboBind, 128.0, 40.0);
}
json CreateModelCombo(object oPC, object oTarget, json jRow, string sComboBind)
{
float fFacing = GetFacing(oTarget);
json jCombo, jCraft = GetLocalJson(oPC, CRAFT_JSON);
int nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_ITEM_SELECTION));
// Create the list.
// Armor.
if(nSelected == 0)
{
fFacing += 180.0f;
if (fFacing > 359.0) fFacing -=359.0;
AssignCommand(oPC, SetCameraFacing(fFacing, 4.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST));
jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Neck", 0));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Shoulder", 1));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Bicep", 2));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Forearm", 3));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Hand", 4));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Torso", 5));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Belt", 6));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Pelvis", 7));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Thigh", 8));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Shin", 9));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Foot", 10));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Robe", 11));
}
// Cloak.
else if(nSelected == 1)
{
if(fFacing > 359.0) fFacing -=359.0;
AssignCommand (oPC, SetCameraFacing(fFacing, 4.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST));
jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Cloak", 0));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1));
}
// Headgear.
else if (nSelected == 2)
{
fFacing += 180.0f;
if(fFacing > 359.0) fFacing -=359.0;
AssignCommand(oPC, SetCameraFacing(fFacing, 2.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST));
jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Headgear", 0));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1));
}
// Weapon.
else if (nSelected == 3)
{
// If they are changing a bow then face the opposite side.
object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
int nBaseItemType = GetBaseItemType(oItem);
if(nBaseItemType == BASE_ITEM_LONGBOW || nBaseItemType == BASE_ITEM_SHORTBOW) fFacing -= 90.00;
// This will make the camera face a melee weapon.
else fFacing += 90.0;
if(fFacing > 359.0) fFacing -=359.0;
AssignCommand(oPC, SetCameraFacing(fFacing, 3.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST));
jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Weapon", 0));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Acidic", 1));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Frost", 2));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Electric", 3));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Unholy", 4));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Flaming", 5));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Holy", 6));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Sonic", 7));
}
// Weapon/Shield.
else if(nSelected == 4)
{
fFacing += 270.0f;
if(fFacing > 359.0) fFacing -=359.0;
AssignCommand(oPC, SetCameraFacing(fFacing, 3.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST));
object oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
if(ai_GetIsShield(oItem))
{
jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Shield", 0));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1));
}
else
{
jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Weapon", 0));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Acidic", 1));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Frost", 2));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Electric", 3));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Unholy", 4));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Flaming", 5));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Holy", 6));
jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Sonic", 7));
}
}
return CreateCombo(jRow, jCombo, sComboBind, 128.0, 40.0);
}
void SetMaterialButtons(object oPC, int nToken, int nMaterial)
{
int nIndex, bBool, bUseable;
string sIndex;
if(nMaterial > -1) bUseable = TRUE;
for(nIndex = 0;nIndex < 6;nIndex++)
{
if(nIndex == nMaterial) bBool = TRUE;
else bBool = FALSE;
sIndex = IntToString(nIndex);
NuiSetBind(oPC, nToken, "btn_material_" + sIndex + "_event", JsonBool(bUseable));
NuiSetBind(oPC, nToken, "btn_material_" + sIndex, JsonBool(bBool));
}
}
object GetSelectedItem(object oTarget, int nItemSelected)
{
if(nItemSelected == 0) return GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget);
else if(nItemSelected == 1) return GetItemInSlot(INVENTORY_SLOT_CLOAK, oTarget);
else if(nItemSelected == 2) return GetItemInSlot(INVENTORY_SLOT_HEAD, oTarget);
else if(nItemSelected == 3) return GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget);
else if(nItemSelected == 4) return GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTarget);
return OBJECT_INVALID;
}
int GetArmorModelSelected(object oPC)
{
json jCraft = GetLocalJson(oPC, CRAFT_JSON);
int nModelSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION));
if(nModelSelected == 0) return ITEM_APPR_ARMOR_MODEL_NECK;
if(nModelSelected == 1) return ITEM_APPR_ARMOR_MODEL_RSHOULDER;
if(nModelSelected == 2) return ITEM_APPR_ARMOR_MODEL_RBICEP;
if(nModelSelected == 3) return ITEM_APPR_ARMOR_MODEL_RFOREARM;
if(nModelSelected == 4) return ITEM_APPR_ARMOR_MODEL_RHAND;
if(nModelSelected == 5) return ITEM_APPR_ARMOR_MODEL_TORSO;
if(nModelSelected == 6) return ITEM_APPR_ARMOR_MODEL_BELT;
if(nModelSelected == 7) return ITEM_APPR_ARMOR_MODEL_PELVIS;
if(nModelSelected == 8) return ITEM_APPR_ARMOR_MODEL_RTHIGH;
if(nModelSelected == 9) return ITEM_APPR_ARMOR_MODEL_RSHIN;
if(nModelSelected == 10) return ITEM_APPR_ARMOR_MODEL_RFOOT;
return ITEM_APPR_ARMOR_MODEL_ROBE;
}
int GetHasPartColor(object oItem, int nPart, string sSide)
{
json jItem = ObjectToJson(oItem);
string sPartName = "APart_";
if(sSide == "Left")
{
// Note: Right Thigh and Left Thigh are backwards so this fixes that!
if (nPart == ITEM_APPR_ARMOR_MODEL_RTHIGH) nPart--;
else nPart++;
}
sPartName += IntToString(nPart) + "_Col_";
int nPartColor = JsonGetInt(GffGetByte(jItem, sPartName + "0"));
nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "1"));
nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "2"));
nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "3"));
nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "4"));
nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "5"));
return nPartColor;
}
int StartingUp(object oPC)
{
if(GetLocalInt(oPC, AI_ADD_PLUGIN))
{
json jPlugin = JsonArray();
jPlugin = JsonArrayInsert(jPlugin, JsonString("pi_crafting"));
jPlugin = JsonArrayInsert(jPlugin, JsonInt(FALSE));
jPlugin = JsonArrayInsert(jPlugin, JsonString("Item Crafting"));
jPlugin = JsonArrayInsert(jPlugin, JsonString("isk_x2cweap"));
json jPlugins = GetLocalJson(oPC, AI_JSON_PLUGINS);
jPlugins = JsonArrayInsert(jPlugins, jPlugin);
SetLocalJson(oPC, AI_JSON_PLUGINS, jPlugin);
SetLocalInt(oPC, AI_PLUGIN_SET, TRUE);
return TRUE;
}
if(!GetLocalInt(oPC, AI_STARTING_UP)) return FALSE;
return TRUE;
}