MMD_PRC8/_module/nss/0i_menus_dm.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

1387 lines
84 KiB
Plaintext

/*//////////////////////////////////////////////////////////////////////////////
// Script Name: 0i_menus_dm
////////////////////////////////////////////////////////////////////////////////
Include script for handling NUI menus for DMs.
*///////////////////////////////////////////////////////////////////////////////
#include "0i_nui"
#include "0i_associates"
string ai_GetRandomDMTip()
{
int nRoll = Random(44);
return Get2DAString("ai_messages", "Text", nRoll);
}
void ai_SetDMWidgetButton(object oPlayer, int nButton, int bOn = TRUE)
{
int nWidgetButtons = GetLocalInt(oPlayer, sDMWidgetButtonVarname);
string sName = ai_RemoveIllegalCharacters(GetName(oPlayer));
json jButtons = ai_GetCampaignDbJson("buttons", sName, AI_DM_TABLE);
if(nWidgetButtons == 0) nWidgetButtons = JsonGetInt(JsonArrayGet(jButtons, 0));
if(bOn) nWidgetButtons = nWidgetButtons | nButton;
else nWidgetButtons = nWidgetButtons & ~nButton;
SetLocalInt(oPlayer, sDMWidgetButtonVarname, nWidgetButtons);
jButtons = JsonArraySet(jButtons, 0, JsonInt(nWidgetButtons));
ai_SetCampaignDbJson("buttons", jButtons, sName, AI_DM_TABLE);
}
int ai_GetDMWidgetButton(object oPlayer, int nButton)
{
int nWidgetButtons = GetLocalInt(oPlayer, sDMWidgetButtonVarname);
if(nWidgetButtons == 0)
{
string sName = ai_RemoveIllegalCharacters(GetName(oPlayer));
json jButtons = ai_GetCampaignDbJson("buttons", sName, AI_DM_TABLE);
nWidgetButtons = JsonGetInt(JsonArrayGet(jButtons, 0));
}
return nWidgetButtons & nButton;
}
void ai_CreateDMWidgetNUI(object oPC)
{
// Set window to not save until it has been created.
SetLocalInt(oPC, AI_NO_NUI_SAVE, TRUE);
DelayCommand(0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE));
int bAIWidgetLock = ai_GetDMWidgetButton(oPC, BTN_DM_WIDGET_LOCK);
int bCmdGroup1 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP1);
int bCmdGroup2 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP2);
int bCmdGroup3 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP3);
int bCmdGroup4 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP4);
int bCmdGroup5 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP5);
int bCmdGroup6 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP6);
int bCmdCamera = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_CAMERA);
int bCmdInventory = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_INVENTORY);
// Get which buttons are activated.
float fHeight = 92.0f;
if(bAIWidgetLock) fHeight = 59.0f;
float fButtons, fWidth = 86.0f;
// ************************************************************************* Width / Height
// Row 1 (buttons)**********************************************************
// Setup the main associate button to use their portrait.
json jButton = NuiEnabled(NuiId (NuiButtonImage(NuiBind("btn_open_main_image")), "btn_open_main"), NuiBind("btn_open_main_event"));
jButton = NuiWidth(jButton, 35.0);
jButton = NuiHeight(jButton, 35.0);
jButton = NuiMargin(jButton, 0.0);
jButton = NuiTooltip(jButton, NuiBind ("btn_open_main_tooltip"));
jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 32.0, 35.0));
json jRow = JsonArrayInsert(JsonArray(), jButton);
if(bCmdGroup1)
{
jRow = CreateButtonImage(jRow, "ir_level1", "btn_cmd_group1", 35.0f, 35.0f, 0.0, "btn_cmd_group1_tooltip");
fButtons += 1.0;
}
if(bCmdGroup2)
{
jRow = CreateButtonImage(jRow, "ir_level2", "btn_cmd_group2", 35.0f, 35.0f, 0.0, "btn_cmd_group2_tooltip");
fButtons += 1.0;
}
if(bCmdGroup3)
{
jRow = CreateButtonImage(jRow, "ir_level3", "btn_cmd_group3", 35.0f, 35.0f, 0.0, "btn_cmd_group3_tooltip");
fButtons += 1.0;
}
if(bCmdGroup4)
{
jRow = CreateButtonImage(jRow, "ir_level4", "btn_cmd_group4", 35.0f, 35.0f, 0.0, "btn_cmd_group4_tooltip");
fButtons += 1.0;
}
if(bCmdGroup5)
{
jRow = CreateButtonImage(jRow, "ir_level5", "btn_cmd_group5", 35.0f, 35.0f, 0.0, "btn_cmd_group5_tooltip");
fButtons += 1.0;
}
if(bCmdGroup6)
{
jRow = CreateButtonImage(jRow, "ir_level6", "btn_cmd_group6", 35.0f, 35.0f, 0.0, "btn_cmd_group6_tooltip");
fButtons += 1.0;
}
if(bCmdCamera)
{
jRow = CreateButtonImage(jRow, "ir_examine", "btn_camera", 35.0f, 35.0f, 0.0, "btn_camera_tooltip");
fButtons += 1.0;
}
if(bCmdInventory)
{
jRow = CreateButtonImage(jRow, "ir_pickup", "btn_inventory", 35.0f, 35.0f, 0.0, "btn_inventory_tooltip");
fButtons += 1.0;
}
// Plug in buttons *********************************************************
int nIndex, bWidget;
string sButton, sIcon;
json jPlugins = ai_UpdatePluginsForDM(oPC);
json jPlugin = JsonArrayGet(jPlugins, nIndex);
while(JsonGetType(jPlugin) != JSON_TYPE_NULL)
{
bWidget = JsonGetInt(JsonArrayGet(jPlugin, 1));
if(bWidget)
{
sIcon = JsonGetString(JsonArrayGet(jPlugin, 3));
sButton = IntToString(nIndex);
jRow = CreateButtonImage(jRow, sIcon, "btn_exe_plugin_" + sButton, 35.0f, 35.0f, 0.0, "btn_exe_plugin_" + sButton + "_tooltip");
fButtons += 1.0;
}
jPlugin = JsonArrayGet(jPlugins, ++nIndex);
}
if(fButtons > 1.0f) fWidth = fWidth + ((fButtons - 1.0) * 39.0f);
// Add the row to the column.
json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow));
// Get the window location to restore it from the database.
string sName = ai_RemoveIllegalCharacters(GetName(oPC));
json jLocations = ai_GetCampaignDbJson("locations", sName, AI_DM_TABLE);
jLocations = JsonObjectGet(jLocations, "dm" + AI_WIDGET_NUI);
float fX = JsonGetFloat(JsonObjectGet(jLocations, "x"));
float fY = JsonGetFloat(JsonObjectGet(jLocations, "y"));
if(bAIWidgetLock)
{
fX = fX + 4.0f;
fY = fY + 37.0f;
}
// Set the layout of the window.
json jLayout = NuiCol(jCol);
int nToken;
string sHeal, sText, sRange;
string sDisplayName = GetName(oPC);
if(GetStringRight(sDisplayName, 1) == "s") sDisplayName = sDisplayName + "'";
else sDisplayName = sDisplayName + "'s";
if(bAIWidgetLock) nToken = SetWindow(oPC, jLayout, "dm" + AI_WIDGET_NUI, sDisplayName + " Widget", fX, fY, fWidth + 8.0f, fHeight, FALSE, FALSE, FALSE, TRUE, FALSE, "0e_nui_dm");
else nToken = SetWindow(oPC, jLayout, "dm" + AI_WIDGET_NUI, sDisplayName + " Widget", fX, fY, fWidth + 12.0f, fHeight, FALSE, FALSE, FALSE, TRUE, TRUE, "0e_nui_dm");
// Set event watches for window inspector and save window location.
NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE);
// Set the buttons to show events.
NuiSetBind(oPC, nToken, "btn_open_main_image", JsonString(GetPortraitResRef(oPC) + "s"));
NuiSetBind(oPC, nToken, "btn_open_main_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_open_main_tooltip", JsonString(" " + sDisplayName + " widget menu"));
string sUUID, sText2, sSpeed;
string sAction = " (Left Action/Right Add)";
if(bCmdGroup1)
{
NuiSetBind(oPC, nToken, "btn_cmd_group1_event", JsonBool(TRUE));
json jGroup = GetLocalJson(oPC, "DM_GROUP1");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
string sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 1"; sText2 = sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group1_tooltip", JsonString(" " + sText + sText2));
}
if(bCmdGroup2)
{
NuiSetBind(oPC, nToken, "btn_cmd_group2_event", JsonBool(TRUE));
json jGroup = GetLocalJson(oPC, "DM_GROUP2");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
string sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 2"; sText2 = sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group2_tooltip", JsonString(" " + sText + sText2));
}
if(bCmdGroup3)
{
NuiSetBind(oPC, nToken, "btn_cmd_group3_event", JsonBool(TRUE));
json jGroup = GetLocalJson(oPC, "DM_GROUP3");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
string sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 3"; sText2 = sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group3_tooltip", JsonString(" " + sText + sText2));
}
if(bCmdGroup4)
{
NuiSetBind(oPC, nToken, "btn_cmd_group4_event", JsonBool(TRUE));
json jGroup = GetLocalJson(oPC, "DM_GROUP4");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
string sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 4"; sText2 = sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group4_tooltip", JsonString(" " + sText + sText2));
}
if(bCmdGroup5)
{
NuiSetBind(oPC, nToken, "btn_cmd_group5_event", JsonBool(TRUE));
json jGroup = GetLocalJson(oPC, "DM_GROUP5");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
string sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 5"; sText2 = sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group5_tooltip", JsonString(" " + sText + sText2));
}
if(bCmdGroup6)
{
NuiSetBind(oPC, nToken, "btn_cmd_group6_event", JsonBool(TRUE));
json jGroup = GetLocalJson(oPC, "DM_GROUP6");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
string sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 6"; sText2 = sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group6_tooltip", JsonString(" " + sText + sText2));
}
if(bCmdCamera)
{
NuiSetBind(oPC, nToken, "btn_camera_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_camera_tooltip", JsonString(" Select new object to have the camera view."));
}
if(bCmdInventory)
{
NuiSetBind(oPC, nToken, "btn_inventory_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_inventory_tooltip", JsonString(" Open selected creatures inventory."));
}
/*if(bSearch)
{
NuiSetBind(oPC, nToken, "btn_search_event", JsonBool(TRUE));
if(ai_GetAIMode(oAssociate, AI_MODE_AGGRESSIVE_SEARCH)) sText = " Search On";
else sText = " Search Off";
NuiSetBind(oPC, nToken, "btn_search_tooltip", JsonString(sText));
}
if(bStealth)
{
NuiSetBind(oPC, nToken, "btn_stealth_event", JsonBool(TRUE));
if(ai_GetAIMode(oAssociate, AI_MODE_AGGRESSIVE_STEALTH)) sText = " Stealth On";
else sText = " Stealth Off";
NuiSetBind(oPC, nToken, "btn_stealth_tooltip", JsonString(sText));
} */
nIndex = 0;
string sScript;
jPlugin = JsonArrayGet(jPlugins, nIndex);
while(JsonGetType(jPlugin) != JSON_TYPE_NULL)
{
bWidget = JsonGetInt(JsonArrayGet(jPlugin, 1));
if(bWidget)
{
sButton = IntToString(nIndex);
sScript = JsonGetString(JsonArrayGet(jPlugin, 0));
if(ResManGetAliasFor(sScript, RESTYPE_NCS) == "")
{
sText = " " + sScript + " not found by ResMan!";
}
else sName = " " + JsonGetString(JsonArrayGet(jPlugin, 2));
NuiSetBind(oPC, nToken, "btn_exe_plugin_" + sButton + "_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_exe_plugin_" + sButton + "_tooltip", JsonString(sName));
}
jPlugin = JsonArrayGet(jPlugins, ++nIndex);
}
}
void ai_CreateDMOptionsNUI(object oPC)
{
// Set window to not save until it has been created.
SetLocalInt (oPC, AI_NO_NUI_SAVE, TRUE);
DelayCommand (2.0, DeleteLocalInt (oPC, AI_NO_NUI_SAVE));
int nMonsterAI = (ResManGetAliasFor("ai_default", RESTYPE_NCS) != "");
int nAssociateAI = (ResManGetAliasFor("ai_a_default", RESTYPE_NCS) != "");
string sText = " [Single player]";
if(AI_SERVER) sText = " [Server]";
// ************************************************************************* Width / Height
// Row 1 ******************************************************************* 500 / 73
json jRow = JsonArrayInsert(JsonArray(), NuiSpacer());
jRow = CreateLabel(jRow, PHILOS_VERSION + sText, "lbl_version ", 510.0f, 20.0f, NUI_HALIGN_CENTER);
jRow = JsonArrayInsert(jRow, NuiSpacer());
// Add row to the column.
json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow));
// Row 2 ******************************************************************* 500 / 101
jRow = CreateLabel(JsonArray(), "", "lbl_ai_info", 510.0f, 20.0f, NUI_HALIGN_CENTER);
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 3 ******************************************************************* 500 / 129
jRow = CreateButton(JsonArray(), "Plugin Manager", "btn_plugin_manager", 160.0f, 20.0f, -1.0, "btn_plugin_manager_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "Widget Manager", "btn_widget_manager", 160.0f, 20.0f, -1.0, "btn_widget_manager_tooltip");
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 4 ******************************************************************* 500 / 157
jRow = JsonArrayInsert(JsonArray(), NuiSpacer());
jRow = CreateLabel(jRow, "SERVER RULES", "lbl_ai_rules", 100.0f, 20.0f, NUI_HALIGN_CENTER);
jRow = JsonArrayInsert(jRow, NuiSpacer());
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
float fHeight = 112.0;
// Row 5 ******************************************************************* 500 / --- (28)
// Make the AI options a Group.
json jGroupRow = CreateTextEditBox(JsonArray(), "sPlaceHolder", "txt_max_henchman", 2, FALSE, 30.0f, 20.0f, "txt_max_henchman_tooltip");
jGroupRow = CreateLabel(jGroupRow, "Max number of henchmen that is allowed in your party.", "lbl_max_hench", 416.0f, 20.0f, NUI_HALIGN_LEFT, 0, -1.0, "txt_max_henchman_tooltip");
json jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow));
jGroupRow = CreateTextEditBox(JsonArray(), "sPlaceHolder", "txt_xp_scale", 3, FALSE, 40.0f, 20.0f, "txt_xp_scale_tooltip");
jGroupRow = CreateLabel(jGroupRow, "Modules experience scale.", "lbl_xp_scale", 175.0f, 20.0f, NUI_HALIGN_LEFT, 0, -1.0, "txt_xp_scale_tooltip");
jGroupRow = CreateCheckBox(jGroupRow, " scale to party.", "chbx_party_scale", 130.0, 20.0, "chbx_party_scale_tooltip");
jGroupRow = CreateButton(jGroupRow, "Default", "btn_default_xp", 70.0f, 20.0f, -1.0, "btn_default_xp_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
fHeight += 112.0;
if(nMonsterAI || nAssociateAI)
{
jGroupRow = CreateCheckBox(JsonArray(), " Creatures will use advanced combat movement.", "chbx_advanced_movement", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Use item level restrictions for creatures [Default is off].", "chbx_ilr", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Creatures can use the skill Use Magic Device.", "chbx_umd", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Creatures can use Healing kits.", "chbx_use_healingkits", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Moral checks, wounded creatures may flee during combat.", "chbx_moral", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateLabel(JsonArray(), " Spells the AI will not use:", "lbl_restrict_spells", 190.0, 20.0, NUI_HALIGN_LEFT);
jGroupRow = CreateCheckBox(jGroupRow, " Darkness", "chbx_darkness", 90.0, 20.0, "chbx_darkness_tooltip");
jGroupRow = CreateCheckBox(jGroupRow, " Dispels", "chbx_dispels", 90.0, 20.0, "chbx_dispels_tooltip");
jGroupRow = CreateCheckBox(jGroupRow, " Time Stop", "chbx_timestop", 90.0, 20.0, "chbx_timestop_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
fHeight += 168.0;
}
if(nMonsterAI)
{
jGroupRow = CreateTextEditBox(JsonArray(), "sPlaceHolder", "txt_ai_difficulty", 3, FALSE, 40.0f, 20.0f, "txt_ai_difficulty_tooltip");
jGroupRow = CreateLabel(jGroupRow, "% chance monsters will attack the weakest target.", "lbl_ai_difficulty", 406.0f, 20.0f, NUI_HALIGN_LEFT, 0, -1.0, "txt_ai_difficulty_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateTextEditBox(JsonArray(), "sPlaceHolder", "txt_perception_distance", 2, FALSE, 35.0f, 20.0f, "txt_perception_distance_tooltip");
jGroupRow = CreateLabel(jGroupRow, "meters is the distance a monster can respond to allies.", "lbl_perception_distance", 411.0f, 20.0f, NUI_HALIGN_LEFT, 0, 0.0, "txt_perception_distance_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Monsters can prebuff before combat starts.", "chbx_buff_monsters", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Monsters can use summons before combat starts.", "chbx_buff_summons", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Monsters can use tactics (ambush, defensive, flanker, etc).", "chbx_ambush_monsters", 450.0, 20.0);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateLabel(JsonArray(), "Add ", "lbl_inc_enc", 30.0, 20.0, NUI_HALIGN_LEFT, 0, -1.0);
jGroupRow = CreateTextEditBox(jGroupRow, "sPlaceHolder", "txt_inc_enc", 4, FALSE, 55.0f, 20.0f, "txt_inc_enc_tooltip");
jGroupRow = CreateLabel(jGroupRow, "monsters per spawned encounter monster.", "lbl_inc_enc", 357.0, 20.0, NUI_HALIGN_LEFT, NUI_VALIGN_MIDDLE, 0.0, "txt_inc_enc_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateTextEditBox(JsonArray(), "sPlaceHolder", "txt_inc_hp", 3, FALSE, 40.0f, 20.0f, "txt_inc_hp_tooltip");
jGroupRow = CreateLabel(jGroupRow, "% increase in all monster's hitpoints.", "lbl_inc_hp", 406.0, 20.0, NUI_HALIGN_LEFT);
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateLabel(JsonArray(), "***** WARNING! The options below may break the module! *****", "lbl_warning", 450.0f, 20.0f, NUI_HALIGN_LEFT, 0, 0.0, "chbx_warning_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Monsters can wander upto ", "chbx_wander", 220.0, 20.0, "chbx_warning_tooltip");
jGroupRow = CreateTextEditBox(jGroupRow, "sPlaceHolder", "txt_wander_distance", 2, FALSE, 35.0f, 20.0f, "chbx_warning_tooltip");
jGroupRow = CreateLabel(jGroupRow, "meters and ", "lbl_wander_distance", 80.0f, 20.0f, NUI_HALIGN_LEFT, NUI_VALIGN_MIDDLE, 0.0, "chbx_warning_tooltip");
jGroupRow = CreateCheckBox(jGroupRow, "open doors.", "chbx_open_doors", 100.0, 20.0, "chbx_warning_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Monsters can summon companions.", "chbx_companions", 450.0, 20.0, "chbx_warning_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Summoned associates to remain after masters death.", "chbx_perm_assoc", 450.0, 20.0, "chbx_warning_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateCheckBox(JsonArray(), " Make enemy corpses remain.", "chbx_corpses_stay", 450.0, 20.0, "chbx_warning_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
jGroupRow = CreateLabel(JsonArray(), "", "lbl_perc_dist", 450.0f, 20.0f, NUI_HALIGN_LEFT, 0, 0.0, "lbl_perc_dist_tooltip");
jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow));
fHeight += 364.0;
}
jRow = JsonArrayInsert(JsonArray(), NuiGroup(NuiCol(jGroupCol)));
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Get the window location to restore it from the database.
string sName = ai_RemoveIllegalCharacters(GetName(oPC));
json jLocations = ai_GetCampaignDbJson("locations", sName, AI_DM_TABLE);
jLocations = JsonObjectGet(jLocations, "dm" + AI_MAIN_NUI);
float fX = JsonGetFloat(JsonObjectGet(jLocations, "x"));
float fY = JsonGetFloat(JsonObjectGet(jLocations, "y"));
// Set the Layout of the window.
json jLayout = NuiCol(jCol);
sName = GetName(oPC);
if(GetStringRight(sName, 1) == "s") sName = sName + "'";
else sName = sName + "'s";
int nToken = SetWindow(oPC, jLayout, "dm" + AI_MAIN_NUI, sName + " PEPS Main Menu",
fX, fY, 534.0f, fHeight, FALSE, FALSE, TRUE, FALSE, TRUE, "0e_nui_dm");
// Save the associate to the nui for use in 0e_nui
json jData = JsonArrayInsert(JsonArray(), JsonString(ObjectToString(oPC)));
NuiSetUserData(oPC, nToken, jData);
object oModule = GetModule();
// Set event watches for save window location.
NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE);
// Set all binds, events, and watches.
// Row 1 - Version label.
// Row 2
int nUsing;
// Check the monster AI.
string sLocation = ResManGetAliasFor("ai_default", RESTYPE_NCS);
if(sLocation != "")
{
nUsing = TRUE;
string sLocation = ResManGetAliasFor("nw_c2_default1", RESTYPE_NCS);
if(sLocation != "OVERRIDE:" && sLocation != "PATCH:peps" && sLocation != "DEVELOPMENT:") nUsing = FALSE;
if(nUsing) sText = "Monster AI working";
else sText = "Monster AI not working";
}
else sText = "Monster AI not loaded";
// Check the associate AI.
sLocation = ResManGetAliasFor("ai_a_default", RESTYPE_NCS);
if(sLocation != "")
{
nUsing = TRUE;
string sLocation = ResManGetAliasFor("nw_ch_ac1", RESTYPE_NCS);
if(sLocation != "OVERRIDE:" && sLocation != "PATCH:peps" && sLocation != "DEVELOPMENT:") nUsing = FALSE;
if(nUsing) sText += ", Associate AI working";
else sText += ", Associate AI not working";
}
else sText += ", Associate AI not loaded";
// Check for PRC.
sLocation = ResManGetAliasFor("prc_ai_fam_percp", RESTYPE_NCS);
if(sLocation != "") sText += ", PRC loaded.";
else
{
// Check the player AI.
sLocation = ResManGetAliasFor("xx_pc_1_hb", RESTYPE_NCS);
if(sLocation != "") sText += ", Player AI loaded.";
else sText += ", Player AI not loaded.";
}
NuiSetBind(oPC, nToken, "lbl_ai_info_label", JsonString(sText));
// Row 3
NuiSetBind(oPC, nToken, "btn_plugin_manager_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_plugin_manager_tooltip", JsonString(" Manages external executable scripts."));
NuiSetBind(oPC, nToken, "btn_widget_manager_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_widget_manager_tooltip", JsonString(" Manages widgets the players have access to."));
// Row 3 Label for AI RULES
// Row 4
NuiSetBind(oPC, nToken, "txt_max_henchman_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_max_henchman", JsonString(IntToString(GetLocalInt(oModule, AI_RULE_MAX_HENCHMAN))));
NuiSetBindWatch (oPC, nToken, "txt_max_henchman", TRUE);
NuiSetBind(oPC, nToken, "txt_max_henchman_tooltip", JsonString(" Set max number of henchman allowed (1-12)."));
NuiSetBind(oPC, nToken, "txt_xp_scale_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_xp_scale", JsonString(IntToString(GetModuleXPScale())));
NuiSetBindWatch (oPC, nToken, "txt_xp_scale", TRUE);
NuiSetBind(oPC, nToken, "txt_xp_scale_tooltip", JsonString(" Set the modules XP scale (0 - 200) Normal D&D is 10."));
NuiSetBind(oPC, nToken, "chbx_party_scale_check", JsonBool(GetLocalInt(oModule, AI_RULE_PARTY_SCALE)));
NuiSetBindWatch(oPC, nToken, "chbx_party_scale_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_party_scale_event", JsonBool(TRUE));
sText = IntToString(GetLocalInt(oModule, AI_BASE_PARTY_SCALE_XP));
NuiSetBind(oPC, nToken, "chbx_party_scale_tooltip", JsonString(" PEPS adjusts your XP based on party size from (" + sText + ")."));
NuiSetBind(oPC, nToken, "btn_default_xp_event", JsonBool(TRUE));
sText = IntToString(GetLocalInt(oModule, AI_RULE_DEFAULT_XP_SCALE));
NuiSetBind(oPC, nToken, "btn_default_xp_tooltip", JsonString(" Reset the Modules XP to (" + sText + ")."));
if(nMonsterAI)
{
NuiSetBind(oPC, nToken, "txt_ai_difficulty_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_ai_difficulty", JsonString(IntToString(GetLocalInt(oModule, AI_RULE_AI_DIFFICULTY))));
NuiSetBindWatch(oPC, nToken, "txt_ai_difficulty", TRUE);
NuiSetBind(oPC, nToken, "chbx_buff_monsters_check", JsonBool(GetLocalInt(oModule, AI_RULE_BUFF_MONSTERS)));
NuiSetBindWatch(oPC, nToken, "chbx_buff_monsters_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_buff_monsters_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_buff_summons_check", JsonBool(GetLocalInt(oModule, AI_RULE_PRESUMMON)));
NuiSetBindWatch(oPC, nToken, "chbx_buff_summons_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_buff_summons_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_ambush_monsters_check", JsonBool(GetLocalInt(oModule, AI_RULE_AMBUSH)));
NuiSetBindWatch(oPC, nToken, "chbx_ambush_monsters_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_ambush_monsters_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_companions_check", JsonBool(GetLocalInt(oModule, AI_RULE_SUMMON_COMPANIONS)));
NuiSetBindWatch(oPC, nToken, "chbx_companions_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_companions_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_companions_tooltip", JsonString(" ** This will break some modules! ** See Readme for issues!"));
NuiSetBind(oPC, nToken, "chbx_perm_assoc_check", JsonBool(GetLocalInt(oModule, AI_RULE_PERM_ASSOC)));
NuiSetBindWatch(oPC, nToken, "chbx_perm_assoc_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_perm_assoc_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_corpses_stay_check", JsonBool(GetLocalInt(oModule, AI_RULE_CORPSES_STAY)));
NuiSetBindWatch(oPC, nToken, "chbx_corpses_stay_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_corpses_stay_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_corpses_stay_tooltip", JsonString(" ** This will break some modules! ** See Readme for issues!"));
NuiSetBind(oPC, nToken, "txt_perception_distance_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_perception_distance", JsonString(FloatToString(GetLocalFloat(oModule, AI_RULE_PERCEPTION_DISTANCE), 0, 0)));
NuiSetBindWatch(oPC, nToken, "txt_perception_distance", TRUE);
NuiSetBind(oPC, nToken, "txt_perception_distance_tooltip", JsonString(" Range [10 to 60 meters] from the player."));
NuiSetBindWatch(oPC, nToken, "lbl_perc_dist", TRUE);
int nPercDist = GetLocalInt(oModule, AI_RULE_MON_PERC_DISTANCE);
if(nPercDist < 8 || nPercDist > 11)
{
nPercDist = 11;
SetLocalInt(oModule, AI_RULE_MON_PERC_DISTANCE, 11);
}
if(nPercDist == 8) sText = " Monster perception: Short [10 Sight / 10 Listen]";
else if(nPercDist == 9) sText = " Monster perception: Medium [20 Sight / 20 Listen]";
else if(nPercDist == 10) sText = " Monster perception: Long [35 Sight / 20 Listen]";
else sText = " Monster perception: Default [Monster's default values]";
NuiSetBind(oPC, nToken, "lbl_perc_dist_label", JsonString(sText));
NuiSetBind(oPC, nToken, "lbl_perc_dist_tooltip", JsonString(" Use the mouse wheel to change values."));
int bWander = GetLocalInt(oModule, AI_RULE_WANDER);
NuiSetBind(oPC, nToken, "chbx_wander_check", JsonBool(bWander));
NuiSetBindWatch(oPC, nToken, "chbx_wander_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_wander_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_wander_distance_event", JsonBool(bWander));
NuiSetBind(oPC, nToken, "txt_wander_distance", JsonString(FloatToString(GetLocalFloat(oModule, AI_RULE_WANDER_DISTANCE), 0, 0)));
NuiSetBindWatch(oPC, nToken, "txt_wander_distance", TRUE);
NuiSetBind(oPC, nToken, "chbx_wander_tooltip", JsonString(" ** This will break some modules! ** See Readme for issues!"));
NuiSetBind(oPC, nToken, "chbx_open_doors_check", JsonBool(GetLocalInt(oModule, AI_RULE_OPEN_DOORS)));
NuiSetBindWatch(oPC, nToken, "chbx_open_doors_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_open_doors_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_open_doors_tooltip", JsonString(" This allows monsters to open doors to hunt you down!"));
NuiSetBind(oPC, nToken, "txt_inc_enc_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_inc_enc_tooltip", JsonString(" Spawns one extra monster per counter above 1. Adds value to counter per encounter monster spawned."));
NuiSetBind(oPC, nToken, "txt_inc_enc", JsonString(FloatToString(GetLocalFloat(oModule, AI_INCREASE_ENC_MONSTERS), 0, 2)));
NuiSetBindWatch(oPC, nToken, "txt_inc_enc", TRUE);
NuiSetBind(oPC, nToken, "txt_inc_hp_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_inc_hp", JsonString(IntToString(GetLocalInt(oModule, AI_INCREASE_MONSTERS_HP))));
NuiSetBindWatch(oPC, nToken, "txt_inc_hp", TRUE);
}
if(nMonsterAI || nAssociateAI)
{
NuiSetBind(oPC, nToken, "chbx_moral_check", JsonBool(GetLocalInt(oModule, AI_RULE_MORAL_CHECKS)));
NuiSetBindWatch (oPC, nToken, "chbx_moral_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_moral_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_advanced_movement_check", JsonBool(GetLocalInt(oModule, AI_RULE_ADVANCED_MOVEMENT)));
NuiSetBindWatch (oPC, nToken, "chbx_advanced_movement_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_advanced_movement_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_ilr_check", JsonBool(GetLocalInt(oModule, AI_RULE_ILR)));
NuiSetBindWatch (oPC, nToken, "chbx_ilr_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_ilr_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_umd_check", JsonBool(GetLocalInt(oModule, AI_RULE_ALLOW_UMD)));
NuiSetBindWatch (oPC, nToken, "chbx_umd_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_umd_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_use_healingkits_check", JsonBool(GetLocalInt(oModule, AI_RULE_HEALERSKITS)));
NuiSetBindWatch (oPC, nToken, "chbx_use_healingkits_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_use_healingkits_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_darkness_check", JsonBool(ai_SpellRestricted(SPELL_DARKNESS)));
NuiSetBindWatch (oPC, nToken, "chbx_darkness_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_darkness_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_darkness_tooltip", JsonString(" AI will not use the Darkness spell in combat."));
NuiSetBind(oPC, nToken, "chbx_dispels_check", JsonBool(ai_SpellRestricted(SPELL_DISPEL_MAGIC)));
NuiSetBindWatch (oPC, nToken, "chbx_dispels_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_dispels_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_dispels_tooltip", JsonString(" AI will not use any of the Dispel spells in combat."));
NuiSetBind(oPC, nToken, "chbx_timestop_check", JsonBool(ai_SpellRestricted(SPELL_TIME_STOP)));
NuiSetBindWatch (oPC, nToken, "chbx_timestop_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_timestop_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "chbx_timestop_tooltip", JsonString(" AI will not use the Time Stop spell in combat."));
}
}
void ai_CreateDMCommandNUI(object oPC)
{
SetLocalInt(oPC, AI_NO_NUI_SAVE, TRUE);
DelayCommand(0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE));
// ************************************************************************* Width / Height
// Row 1 ******************************************************************* 500 / 73
json jRow = CreateButtonSelect(JsonArray(), "Lock Widget", "btn_widget_lock", 200.0, 20.0, "btn_widget_lock_tooltip");
jRow = CreateLabel(jRow, "", "blank_label_1", 25.0, 20.0);
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "Main Menu", "btn_main_menu", 200.0, 20.0, -1.0, "btn_main_menu_tooltip");
jRow = CreateLabel(jRow, "", "blank_label_2", 25.0, 20.0);
json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow));
// Row 2 ******************************************************************* 500 / 101
jRow = CreateButton(JsonArray(), "", "btn_cmd_group1", 200.0, 20.0, -1.0, "btn_cmd_group1_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_group1", 25.0, 20.0);
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "", "btn_cmd_group2", 200.0, 20.0, -1.0, "btn_cmd_group2_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_group2", 25.0, 20.0);
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 3 ******************************************************************* 500 / 129
jRow = CreateButton(JsonArray(), "", "btn_cmd_group3", 200.0, 20.0, -1.0, "btn_cmd_group3_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_group3", 25.0, 20.0);
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "", "btn_cmd_group4", 200.0, 20.0, -1.0, "btn_cmd_group4_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_group4", 25.0, 20.0);
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 4 ******************************************************************* 500 / 157
jRow = CreateButton(JsonArray(), "", "btn_cmd_group5", 200.0, 20.0, -1.0, "btn_cmd_group5_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_group5", 25.0, 20.0);
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "", "btn_cmd_group6", 200.0, 20.0, -1.0, "btn_cmd_group6_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_group6", 25.0, 20.0);
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
float fHeight = 157.0;
// Row 5 ******************************************************************* 500 / ---
jRow = CreateButton(JsonArray(), "Toggle Camera Focus", "btn_camera", 200.0, 20.0, -1.0, "btn_camera_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_camera", 25.0, 20.0);
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "Open/Close Inventory", "btn_inventory", 200.0, 20.0, -1.0, "btn_inventory_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_inventory", 25.0, 20.0);
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
fHeight = fHeight + 28.0;
// Row 6+ ****************************************************************** 500 / ---
json jDMPlugins = ai_UpdatePluginsForDM(oPC);
// Set the plugins the dm can use.
int nIndex;
string sButton, sName;
json jPlugin = JsonArrayGet(jDMPlugins, nIndex);
while(JsonGetType(jPlugin) != JSON_TYPE_NULL)
{
sButton = IntToString(nIndex);
sName = JsonGetString(JsonArrayGet(jPlugin, 2));
jRow = CreateButton(JsonArray(), sName, "btn_plugin_" + sButton, 200.0f, 20.0f, -1.0, "btn_plugin_" + sButton + "_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_plugin_" + sButton, 25.0, 20.0, "chbx_plugin_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
jPlugin = JsonArrayGet(jDMPlugins, ++nIndex);
if(JsonGetType(jPlugin) != JSON_TYPE_NULL)
{
sButton = IntToString(nIndex);
sName = JsonGetString(JsonArrayGet(jPlugin, 2));
jRow = CreateButton(jRow, sName, "btn_plugin_" + sButton, 200.0f, 20.0f, -1.0, "btn_plugin_" + sButton + "_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_plugin_" + sButton, 25.0, 20.0, "chbx_plugin_tooltip");
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
fHeight += 28.0;
}
else
{
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
fHeight += 28.0;
break;
}
jPlugin = JsonArrayGet(jDMPlugins, ++nIndex);
}
// Row 7 ****************************************************************** 500 / ---
jRow = JsonArrayInsert(JsonArray(), NuiSpacer());
jRow = CreateLabel(jRow, "", "lbl_info_1", 475.0, 20.0, NUI_HALIGN_CENTER);
jRow = JsonArrayInsert(jRow, NuiSpacer());
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
fHeight = fHeight + 28.0;
// Get the window location to restore it from the database.
sName = ai_RemoveIllegalCharacters(GetName(oPC));
json jLocations = ai_GetCampaignDbJson("locations", sName, AI_DM_TABLE);
jLocations = JsonObjectGet(jLocations, "dm" + AI_COMMAND_NUI);
float fX = JsonGetFloat(JsonObjectGet(jLocations, "x"));
float fY = JsonGetFloat(JsonObjectGet(jLocations, "y"));
// Set the Layout of the window.
json jLayout = NuiCol(jCol);
string sDMName = GetName(oPC);
if(GetStringRight(sDMName, 1) == "s") sDMName = sDMName + "'";
else sDMName = sDMName + "'s";
int nToken = SetWindow(oPC, jLayout, "dm" + AI_COMMAND_NUI, sDMName + " Command Menu",
fX, fY, 500.0, fHeight + 12.0, FALSE, FALSE, TRUE, FALSE, TRUE, "0e_nui_dm");
// Get which buttons are activated.
int bAIWidgetLock = ai_GetDMWidgetButton(oPC, BTN_DM_WIDGET_LOCK);
int bCmdGroup1 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP1);
int bCmdGroup2 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP2);
int bCmdGroup3 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP3);
int bCmdGroup4 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP4);
int bCmdGroup5 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP5);
int bCmdGroup6 = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_GROUP6);
int bCmdCamera = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_CAMERA);
int bCmdInventory = ai_GetDMWidgetButton(oPC, BTN_DM_CMD_INVENTORY);
// Set event watches for save window location.
NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE);
// Set all binds, events, and watches.
// Row 1
NuiSetBind(oPC, nToken, "btn_widget_lock_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_widget_lock", JsonBool(bAIWidgetLock));
NuiSetBind(oPC, nToken, "btn_widget_lock_tooltip", JsonString(
" Locks widget to the current location."));
NuiSetBind(oPC, nToken, "btn_main_menu_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_main_menu", JsonInt(TRUE));
NuiSetBind(oPC, nToken, "btn_main_menu_tooltip", JsonString(" Server menu options"));
NuiSetBind(oPC, nToken, "btn_group_options_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_group_options", JsonInt(TRUE));
//NuiSetBind(oPC, nToken, "btn_empty_button_event", JsonBool (TRUE));
//NuiSetBind(oPC, nToken, "btn_empty_button", JsonInt(TRUE));
//sText = " Copy AI and command settings for one creature to others.";
//NuiSetBind(oPC, nToken, "btn_empty_button_tooltip", JsonString(sText));
// Row 2
NuiSetBind(oPC, nToken, "chbx_cmd_group1_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_cmd_group1_check", JsonBool (bCmdGroup1));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_group1_check", TRUE);
NuiSetBind(oPC, nToken, "btn_cmd_group1_event", JsonBool (TRUE));
string sText, sText2, sSpeed;
string sAction = " (Left Action/Right Add)";
json jGroup = GetLocalJson(oPC, "DM_GROUP1");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
string sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 1"; sText2 = sText + sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sText + sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group1_label", JsonString(sText));
NuiSetBind(oPC, nToken, "btn_cmd_group1_tooltip", JsonString(" " + sText2));
NuiSetBind(oPC, nToken, "chbx_cmd_group2_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_cmd_group2_check", JsonBool (bCmdGroup2));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_group2_check", TRUE);
NuiSetBind(oPC, nToken, "btn_cmd_group2_event", JsonBool (TRUE));
jGroup = GetLocalJson(oPC, "DM_GROUP2");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 2"; sText2 = sText + sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sText + sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group2_label", JsonString(sText));
NuiSetBind(oPC, nToken, "btn_cmd_group2_tooltip", JsonString(" " + sText2));
// Row 3
NuiSetBind(oPC, nToken, "chbx_cmd_group3_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_cmd_group3_check", JsonBool (bCmdGroup3));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_group3_check", TRUE);
NuiSetBind(oPC, nToken, "btn_cmd_group3_event", JsonBool (TRUE));
jGroup = GetLocalJson(oPC, "DM_GROUP3");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 3"; sText2 = sText + sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sText + sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group3_label", JsonString(sText));
NuiSetBind(oPC, nToken, "btn_cmd_group3_tooltip", JsonString(" " + sText2));
NuiSetBind(oPC, nToken, "chbx_cmd_group4_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_cmd_group4_check", JsonBool (bCmdGroup4));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_group4_check", TRUE);
NuiSetBind(oPC, nToken, "btn_cmd_group4_event", JsonBool (TRUE));
jGroup = GetLocalJson(oPC, "DM_GROUP4");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 4"; sText2 = sText + sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sText + sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group4_label", JsonString(sText));
NuiSetBind(oPC, nToken, "btn_cmd_group4_tooltip", JsonString(" " + sText2));
// Row 4
NuiSetBind(oPC, nToken, "chbx_cmd_group5_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_cmd_group5_check", JsonBool (bCmdGroup5));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_group5_check", TRUE);
NuiSetBind(oPC, nToken, "btn_cmd_group5_event", JsonBool (TRUE));
jGroup = GetLocalJson(oPC, "DM_GROUP5");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 5"; sText2 = sText + sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sText + sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group5_label", JsonString(sText));
NuiSetBind(oPC, nToken, "btn_cmd_group5_tooltip", JsonString(" " + sText2));
NuiSetBind(oPC, nToken, "chbx_cmd_group6_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_cmd_group6_check", JsonBool (bCmdGroup6));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_group6_check", TRUE);
NuiSetBind(oPC, nToken, "btn_cmd_group6_event", JsonBool (TRUE));
jGroup = GetLocalJson(oPC, "DM_GROUP6");
if(JsonGetInt(JsonArrayGet(jGroup, 0)) == 0) sSpeed = " [Walk]";
else sSpeed = " [Run]";
sUUID = JsonGetString(JsonArrayGet(jGroup, 1));
if(sUUID == "") { sText = "Group 6"; sText2 = sText + sAction; }
else { sText = GetName(GetObjectByUUID(sUUID)) + "'s group"; sText2 = sText + sSpeed; }
NuiSetBind(oPC, nToken, "btn_cmd_group6_label", JsonString(sText));
NuiSetBind(oPC, nToken, "btn_cmd_group6_tooltip", JsonString(" " + sText2));
// Row 5
NuiSetBind(oPC, nToken, "chbx_camera_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_camera_check", JsonBool (bCmdCamera));
NuiSetBindWatch (oPC, nToken, "chbx_camera_check", TRUE);
NuiSetBind(oPC, nToken, "btn_camera_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_camera_tooltip", JsonString (
" Toggle camera view for " + sDMName));
NuiSetBind(oPC, nToken, "chbx_inventory_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "chbx_inventory_check", JsonBool (bCmdInventory));
NuiSetBindWatch (oPC, nToken, "chbx_inventory_check", TRUE);
NuiSetBind(oPC, nToken, "btn_inventory_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_inventory_tooltip", JsonString (
" Open " + sDMName + " inventory"));
// Row 6+
nIndex = 0;
int bWidget;
jPlugin = JsonArrayGet(jDMPlugins, nIndex);
while(JsonGetType(jPlugin) != JSON_TYPE_NULL)
{
sButton = IntToString(nIndex);
NuiSetBind(oPC, nToken, "btn_plugin_" + sButton + "_event", JsonBool(TRUE));
bWidget = JsonGetInt(JsonArrayGet(jPlugin, 1));
NuiSetBind(oPC, nToken, "chbx_plugin_" + sButton + "_check", JsonBool(bWidget));
NuiSetBindWatch (oPC, nToken, "chbx_plugin_" + sButton + "_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_plugin_" + sButton + "_event", JsonBool(TRUE));
sText = " " + JsonGetString(JsonArrayGet(jPlugin, 2));
NuiSetBind(oPC, nToken, "btn_plugin_" + sButton + "_tooltip", JsonString(sText));
jPlugin = JsonArrayGet(jDMPlugins, ++nIndex);
}
NuiSetBind(oPC, nToken, "chbx_plugin_tooltip", JsonString(" Adds the plugin to your widget."));
// Row 7
sText = ai_GetRandomDMTip();
NuiSetBind(oPC, nToken, "lbl_info_1_label", JsonString(sText));
}
void ai_CreateDMPluginManagerNUI(object oPC)
{
SetLocalInt(oPC, AI_NO_NUI_SAVE, TRUE);
DelayCommand(0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE));
// Row 1 ******************************************************************* 500 / 73
json jRow = JsonArrayInsert(JsonArray(), NuiSpacer());
jRow = CreateButton(jRow, "Load All Plugins", "btn_load_plugins", 150.0f, 20.0f, -1.0, "btn_load_plugins_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "Check All", "btn_check_plugins", 150.0f, 20.0f, -1.0, "btn_check_plugins_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "Clear All", "btn_clear_plugins", 150.0f, 20.0f, -1.0, "btn_clear_plugins_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
// Add row to the column.
json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow));
// Row 2 ******************************************************************* 500 / 101
jRow = JsonArrayInsert(JsonArray(), NuiSpacer());
jRow = CreateButton(jRow, "Add Plugin", "btn_add_plugin", 150.0f, 20.0f);
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateTextEditBox(jRow, "sPlaceHolder", "txt_plugin", 16, FALSE, 310.0f, 20.0f, "txt_plugin_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
float fHeight = 101.0;
// Row 3+ ****************************************************************** 500 / ---
json jPlugins = ai_GetCampaignDbJson("plugins");
int nIndex = 0;
json jPlugin = JsonArrayGet(jPlugins, nIndex);
string sName, sButton;
while(JsonGetType(jPlugin) != JSON_TYPE_NULL)
{
sButton = IntToString(nIndex);
jRow = JsonArrayInsert(JsonArray(), NuiSpacer());
jRow = CreateButton(jRow, "Remove Plugin", "btn_remove_plugin_" + sButton, 150.0f, 20.0f);
jRow = JsonArrayInsert(jRow, NuiSpacer());
sName = JsonGetString(JsonArrayGet(jPlugin, 2));
jRow = CreateButton(jRow, sName, "btn_plugin_" + sButton, 290.0f, 20.0f, -1.0, "btn_plugin_" + sButton + "_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_plugin_" + sButton, 25.0, 20.0);
jRow = JsonArrayInsert(jRow, NuiSpacer());
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
fHeight += 28.0;
jPlugin = JsonArrayGet(jPlugins, ++nIndex);
}
// Get the window location to restore it from the database.
sName = ai_RemoveIllegalCharacters(GetName(oPC));
json jLocations = ai_GetCampaignDbJson("locations", sName, AI_DM_TABLE);
jLocations = JsonObjectGet(jLocations, "dm" + AI_PLUGIN_NUI);
float fX = JsonGetFloat(JsonObjectGet(jLocations, "x"));
float fY = JsonGetFloat(JsonObjectGet(jLocations, "y"));
// Set the Layout of the window.
json jLayout = NuiCol(jCol);
sName = GetName(oPC);
if(GetStringRight(sName, 1) == "s") sName = sName + "'";
else sName = sName + "'s";
int nToken = SetWindow(oPC, jLayout, "dm" + AI_PLUGIN_NUI, sName + " PEPS Plugin Manager",
fX, fY, 500.0f, fHeight + 12.0f, FALSE, FALSE, TRUE, FALSE, TRUE, "0e_nui_dm");
// Set event watches for save window location.
NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE);
// Row 1
NuiSetBind(oPC, nToken, "btn_load_plugins_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_load_plugins_tooltip", JsonString(" Load all known PEPS plugins that are in the game files."));
NuiSetBind(oPC, nToken, "btn_check_plugins_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_check_plugins_tooltip", JsonString(" Add all plugins to the players widget."));
NuiSetBind(oPC, nToken, "btn_clear_plugins_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_clear_plugins_tooltip", JsonString(" Remove all plugins from the players widget."));
// Row 2
NuiSetBind(oPC, nToken, "btn_add_plugin_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_plugin_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "txt_plugin_tooltip", JsonString(" Enter an executable script name."));
// Row 3+
nIndex = 0;
int bCheck;
string sText;
jPlugin = JsonArrayGet(jPlugins, nIndex);
while(JsonGetType(jPlugin) != JSON_TYPE_NULL)
{
sButton = IntToString(nIndex);
NuiSetBind(oPC, nToken, "btn_remove_plugin_" + sButton + "_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_plugin_" + sButton + "_event", JsonBool(TRUE));
bCheck = JsonGetInt(JsonArrayGet(jPlugin, 1));
NuiSetBind(oPC, nToken, "chbx_plugin_" + sButton + "_check", JsonBool(bCheck));
NuiSetBind(oPC, nToken, "chbx_plugin_" + sButton + "_event", JsonBool(TRUE));
NuiSetBindWatch (oPC, nToken, "chbx_plugin_" + sButton + "_check", TRUE);
sText = " " + JsonGetString(JsonArrayGet(jPlugin, 2));
NuiSetBind(oPC, nToken, "btn_plugin_" + sButton + "_tooltip", JsonString(sText));
jPlugin = JsonArrayGet(jPlugins, ++nIndex);
}
NuiSetBind(oPC, nToken, "chbx_plugin_tooltip", JsonString(" Allows players to use this plugin."));
}
void ai_CreateDMWidgetManagerNUI(object oPC)
{
SetLocalInt(oPC, AI_NO_NUI_SAVE, TRUE);
DelayCommand(0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE));
// Row 1 ******************************************************************* 575 / 73
json jRow = JsonArrayInsert(JsonArray(), NuiSpacer());
jRow = CreateButton(jRow, "Check All", "btn_check_buttons", 150.0f, 20.0f, -1.0, "btn_check_buttons_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
jRow = CreateButton(jRow, "Clear All", "btn_clear_buttons", 150.0f, 20.0f, -1.0, "btn_clear_buttons_tooltip");
jRow = JsonArrayInsert(jRow, NuiSpacer());
json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow));
// Row 2 ******************************************************************* 575 / 96
jRow = CreateLabel(JsonArray(), "This menu manages the PEPS buttons a player may have access to.", "lbl_info1", 636.0, 15.0);
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 3 ******************************************************************* 575 / 119
jRow = CreateLabel(JsonArray(), "Having a check next to a button will remove that button from the players menus.", "lbl_info2", 636.0, 15.0);
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 4 ******************************************************************* 575 / 162
jRow = CreateButtonImage(JsonArray(), "ir_action", "btn_cmd_action", 35.0f, 35.0f, 0.0, "btn_cmd_action_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_action", 25.0, 20.0, "btn_cmd_action_tooltip");
jRow = CreateButtonImage(jRow, "ir_guard", "btn_cmd_guard", 35.0f, 35.0f, 0.0, "btn_cmd_guard_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_guard", 25.0, 20.0, "btn_cmd_guard_tooltip");
jRow = CreateButtonImage(jRow, "ir_standground", "btn_cmd_hold", 35.0f, 35.0f, 0.0, "btn_cmd_hold_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_hold", 25.0, 20.0, "btn_cmd_hold_tooltip");
jRow = CreateButtonImage(jRow, "ir_attacknearest", "btn_cmd_attack", 35.0f, 35.0f, 0.0, "btn_cmd_attack_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_attack", 25.0, 20.0, "btn_cmd_attack_tooltip");
jRow = CreateButtonImage(jRow, "ir_follow", "btn_cmd_follow", 35.0f, 35.0f, 0.0, "btn_cmd_follow_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_follow", 25.0, 20.0, "btn_cmd_follow_tooltip");
jRow = CreateButtonImage(jRow, "ir_dmchat", "btn_follow_target", 35.0f, 35.0f, 0.0, "btn_follow_target_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_follow_target", 25.0, 20.0, "btn_follow_target_tooltip");
jRow = CreateButtonImage(jRow, "ife_foc_search", "btn_cmd_search", 35.0f, 35.0f, 0.0, "btn_cmd_search_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_search", 25.0, 20.0, "btn_cmd_search_tooltip");
jRow = CreateButtonImage(jRow, "ife_foc_hide", "btn_cmd_stealth", 35.0f, 35.0f, 0.0, "btn_cmd_stealth_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_stealth", 25.0, 20.0, "btn_cmd_stealth_tooltip");
jRow = CreateButtonImage(jRow, "ir_scommand", "btn_cmd_ai_script", 35.0f, 35.0f, 0.0, "btn_cmd_ai_script_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_ai_script", 25.0, 20.0, "btn_cmd_ai_script_tooltip");
jRow = CreateButtonImage(jRow, "isk_settrap", "btn_cmd_place_trap", 35.0f, 35.0f, 0.0, "btn_cmd_place_trap_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cmd_place_trap", 25.0, 20.0, "btn_cmd_place_trap_tooltip");
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 5 ******************************************************************* 575 / 205
jRow = CreateButtonImage(JsonArray(), "isk_spellcraft", "btn_quick_widget", 35.0f, 35.0f, 0.0, "btn_quick_widget_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_quick_widget", 25.0, 20.0, "btn_quick_widget_tooltip");
jRow = CreateButtonImage(jRow, "isk_lore", "btn_spell_memorize", 35.0f, 35.0f, 0.0, "btn_spell_memorize_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_spell_memorize", 25.0, 20.0, "btn_spell_memorize_tooltip");
jRow = CreateButtonImage(jRow, "ir_cantrips", "btn_buff_short", 35.0f, 35.0f, 0.0, "btn_buff_short_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_buff_short", 25.0, 20.0, "btn_buff_short_tooltip");
jRow = CreateButtonImage(jRow, "ir_cast", "btn_buff_long", 35.0f, 35.0f, 0.0, "btn_buff_long_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_buff_long", 25.0, 20.0, "btn_buff_long_tooltip");
jRow = CreateButtonImage(jRow, "ir_level789", "btn_buff_all", 35.0f, 35.0f, 0.0, "btn_buff_all_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_buff_all", 25.0, 20.0, "btn_buff_all_tooltip");
jRow = CreateButtonImage(jRow, "ir_rest", "btn_buff_rest", 35.0f, 35.0f, 0.0, "btn_buff_rest_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_buff_rest", 25.0, 20.0, "btn_buff_rest_tooltip");
jRow = CreateButtonImage(jRow, "dm_jump", "btn_jump_to", 35.0f, 35.0f, 0.0, "btn_jump_to_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_jump_to", 25.0, 20.0, "btn_jump_to_tooltip");
jRow = CreateButtonImage(jRow, "dm_limbo", "btn_ghost_mode", 35.0f, 35.0f, 0.0, "btn_ghost_mode_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_ghost_mode", 25.0, 20.0, "btn_ghost_mode_tooltip");
jRow = CreateButtonImage(jRow, "ir_examine", "btn_camera", 35.0f, 35.0f, 0.0, "btn_camera_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_camera", 25.0, 20.0, "btn_camera_tooltip");
jRow = CreateButtonImage(jRow, "ir_pickup", "btn_inventory", 35.0f, 35.0f, 0.0, "btn_inventory_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_inventory", 25.0, 20.0, "btn_inventory_tooltip");
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 6 ******************************************************************* 575 / 248
jRow = CreateButtonImage(JsonArray(), "ife_familiar", "btn_familiar", 35.0f, 35.0f, 0.0, "btn_familiar_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_familiar", 25.0, 20.0, "btn_familiar_tooltip");
jRow = CreateButtonImage(jRow, "ife_animal", "btn_companion", 35.0f, 35.0f, 0.0, "btn_companion_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_companion", 25.0, 20.0, "btn_companion_tooltip");
jRow = CreateButtonImage(jRow, "dm_ai", "btn_ai", 35.0f, 35.0f, 0.0, "btn_ai_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_ai", 25.0, 20.0, "btn_companion_tooltip");
jRow = CreateButtonImage(jRow, "isk_movsilent", "btn_quiet", 35.0f, 35.0f, 0.0, "btn_quiet_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_quiet", 25.0, 20.0, "btn_quiet_tooltip");
jRow = CreateButtonImage(jRow, "ir_archer", "btn_ranged", 35.0f, 35.0f, 0.0, "btn_ranged_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_ranged", 25.0, 20.0, "btn_ranged_tooltip");
jRow = CreateButtonImage(jRow, "dm_takeitem", "btn_equip_weapon", 35.0f, 35.0f, 0.0, "btn_equip_weapon_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_equip_weapon", 25.0, 20.0, "btn_equip_weapon_tooltip");
jRow = CreateButtonImage(jRow, "isk_search", "btn_search", 35.0f, 35.0f, 0.0, "btn_search_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_search", 25.0, 20.0, "btn_search_tooltip");
jRow = CreateButtonImage(jRow, "isk_hide", "btn_stealth", 35.0f, 35.0f, 0.0, "btn_stealth_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_stealth", 25.0, 20.0, "btn_stealth_tooltip");
jRow = CreateButtonImage(jRow, "ir_open", "btn_open_door", 35.0f, 35.0f, 0.0, "btn_open_door_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_open_door", 25.0, 20.0, "btn_open_door_tooltip");
jRow = CreateButtonImage(jRow, "isk_distrap", "btn_traps", 35.0f, 35.0f, 0.0, "btn_traps_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_traps", 25.0, 20.0, "btn_traps_tooltip");
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 7 ******************************************************************* 575 / 291
jRow = CreateButtonImage(JsonArray(), "isk_olock", "btn_pick_locks", 35.0f, 35.0f, 0.0, "btn_pick_locks_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_pick_locks", 25.0, 20.0, "btn_pick_locks_tooltip");
jRow = CreateButtonImage(jRow, "ir_bash", "btn_bash_locks", 35.0f, 35.0f, 0.0, "btn_bash_locks_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_bash_locks", 25.0, 20.0, "btn_bash_locks_tooltip");
jRow = CreateButtonImage(jRow, "dm_control", "btn_magic_level", 35.0f, 35.0f, 0.0, "btn_magic_level_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_magic_level", 25.0, 20.0, "btn_magic_level_tooltip");
jRow = CreateButtonImage(jRow, "ir_xability", "btn_spontaneous", 35.0f, 35.0f, 0.0, "btn_spontaneous_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_spontaneous", 25.0, 20.0, "btn_spontaneous_tooltip");
jRow = CreateButtonImage(jRow, "ir_cntrspell", "btn_magic", 35.0f, 35.0f, 0.0, "btn_magic_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_magic", 25.0, 20.0, "btn_magic_tooltip");
jRow = CreateButtonImage(jRow, "ir_moreattacks", "btn_magic_items", 35.0f, 35.0f, 0.0, "btn_magic_items_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_magic_items", 25.0, 20.0, "btn_magic_items_tooltip");
jRow = CreateButtonImage(jRow, "ir_orisons", "btn_def_magic", 35.0f, 35.0f, 0.0, "btn_def_magic_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_def_magic", 25.0, 20.0, "btn_def_magic_tooltip");
jRow = CreateButtonImage(jRow, "ir_metamagic", "btn_off_magic", 35.0f, 35.0f, 0.0, "btn_off_magic_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_off_magic", 25.0, 20.0, "btn_off_magic_tooltip");
jRow = CreateButtonImage(jRow, "isk_heal", "btn_heal_out", 35.0f, 35.0f, 0.0, "btn_heal_out_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_heal_out", 25.0, 20.0, "btn_heal_out_tooltip");
jRow = CreateButtonImage(jRow, "dm_heal", "btn_heal_in", 35.0f, 35.0f, 0.0, "btn_heal_in_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_heal_in", 25.0, 20.0, "btn_heal_in_tooltip");
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
// Row 8 ******************************************************************* 575 / 334
jRow = CreateButtonImage(JsonArray(), "ir_heal", "btn_heals_onoff", 35.0f, 35.0f, 0.0, "btn_heals_onoff_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_heals_onoff", 25.0, 20.0, "btn_heals_onoff_tooltip");
jRow = CreateButtonImage(jRow, "ir_party", "btn_healp_onoff", 35.0f, 35.0f, 0.0, "btn_healp_onoff_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_healp_onoff", 25.0, 20.0, "btn_healp_onoff_tooltip");
jRow = CreateButtonImage(jRow, "ir_accept", "btn_cure_onoff", 35.0f, 35.0f, 0.0, "btn_cure_onoff_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_cure_onoff", 25.0, 20.0, "btn_cure_onoff_tooltip");
jRow = CreateButtonImage(jRow, "ir_barter", "btn_loot", 35.0f, 35.0f, 0.0, "btn_loot_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_loot", 25.0, 20.0, "btn_loot_tooltip");
jRow = CreateButtonImage(jRow, "ir_ignore", "btn_ignore_assoc", 35.0f, 35.0f, 0.0, "btn_ignore_assoc_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_ignore_assoc", 25.0, 20.0, "btn_ignore_assoc_tooltip");
jRow = CreateButtonImage(jRow, "ir_abort", "btn_ignore_traps", 35.0f, 35.0f, 0.0, "btn_ignore_traps_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_ignore_traps", 25.0, 20.0, "btn_ignore_traps_tooltip");
jRow = CreateButtonImage(jRow, "ir_dmchat", "btn_perc_range", 35.0f, 35.0f, 0.0, "btn_perc_range_tooltip");
jRow = CreateCheckBox(jRow, "", "chbx_perc_range", 25.0, 20.0, "btn_perc_range_tooltip");
// Add row to the column.
jCol = JsonArrayInsert(jCol, NuiRow(jRow));
float fHeight = 334.0;
// Get the window location to restore it from the database.
string sName = ai_RemoveIllegalCharacters(GetName(oPC));
json jLocations = ai_GetCampaignDbJson("locations", sName, AI_DM_TABLE);
jLocations = JsonObjectGet(jLocations, "dm_widget_manager_nui");
float fX = JsonGetFloat(JsonObjectGet(jLocations, "x"));
float fY = JsonGetFloat(JsonObjectGet(jLocations, "y"));
// Set the Layout of the window.
json jLayout = NuiCol(jCol);
sName = GetName(oPC);
if(GetStringRight(sName, 1) == "s") sName = sName + "'";
else sName = sName + "'s";
int nToken = SetWindow(oPC, jLayout, "dm_widget_manager_nui", sName + " PEPS DM Widget Manager",
fX, fY, 660.0f, fHeight + 12.0f, FALSE, FALSE, TRUE, FALSE, TRUE, "0e_nui_dm");
// Set event watches for save window location.
NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE);
// Row 1
NuiSetBind(oPC, nToken, "btn_check_buttons_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_check_buttons_tooltip", JsonString(" Check all buttons, removing them for all players."));
NuiSetBind(oPC, nToken, "btn_clear_buttons_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_clear_buttons_tooltip", JsonString(" Clear all buttons, allowing use for all players."));
// Row 2 & 3 Labels.
// Load all the buttons states.
//int bAIWidgetLock = ai_GetDMWAccessButton(BTN_WIDGET_LOCK);
int bCmdAction = ai_GetDMWAccessButton(BTN_CMD_ACTION);
int bCmdGuard = ai_GetDMWAccessButton(BTN_CMD_GUARD);
int bCmdHold = ai_GetDMWAccessButton(BTN_CMD_HOLD);
int bCmdSearch = ai_GetDMWAccessButton(BTN_CMD_SEARCH);
int bCmdStealth = ai_GetDMWAccessButton(BTN_CMD_STEALTH);
int bCmdAttack = ai_GetDMWAccessButton(BTN_CMD_ATTACK);
int bCmdFollow = ai_GetDMWAccessButton(BTN_CMD_FOLLOW);
int bCmdAIScript = ai_GetDMWAccessButton(BTN_CMD_AI_SCRIPT);
int bCmdPlacetrap = ai_GetDMWAccessButton(BTN_CMD_PLACE_TRAP);
int bSpellWidget = ai_GetDMWAccessButton(BTN_CMD_SPELL_WIDGET);
int bMemorizeSpells = ai_GetDMWAccessButton(BTN_DM_CMD_MEMORIZE);
int bBuffShort = ai_GetDMWAccessButton(BTN_BUFF_SHORT);
int bBuffLong = ai_GetDMWAccessButton(BTN_BUFF_LONG);
int bBuffAll = ai_GetDMWAccessButton(BTN_BUFF_ALL);
int bBuffRest = ai_GetDMWAccessButton(BTN_BUFF_REST);
int bJumpTo = ai_GetDMWAccessButton(BTN_CMD_JUMP_TO);
int bGhostMode = ai_GetDMWAccessButton(BTN_CMD_GHOST_MODE);
int bCamera = ai_GetDMWAccessButton(BTN_CMD_CAMERA);
int bInventory = ai_GetDMWAccessButton(BTN_CMD_INVENTORY);
int bFamiliar = ai_GetDMWAccessButton(BTN_CMD_FAMILIAR);
int bCompanion = ai_GetDMWAccessButton(BTN_CMD_COMPANION);
int bFollowTarget = ai_GetDMAIAccessButton(BTN_AI_FOLLOW_TARGET);
int bAI = ai_GetDMAIAccessButton(BTN_AI_FOR_PC);
int bReduceSpeech = ai_GetDMAIAccessButton(BTN_AI_REDUCE_SPEECH);
int bRanged = ai_GetDMAIAccessButton(BTN_AI_USE_RANGED);
int bEquipWeapons = ai_GetDMAIAccessButton(BTN_AI_STOP_WEAPON_EQUIP);
int bSearch = ai_GetDMAIAccessButton(BTN_AI_USE_SEARCH);
int bStealth = ai_GetDMAIAccessButton(BTN_AI_USE_STEALTH);
int bOpenDoors = ai_GetDMAIAccessButton(BTN_AI_OPEN_DOORS);
int bTraps = ai_GetDMAIAccessButton(BTN_AI_REMOVE_TRAPS);
int bPickLocks = ai_GetDMAIAccessButton(BTN_AI_PICK_LOCKS);
int bBashLocks = ai_GetDMAIAccessButton(BTN_AI_BASH_LOCKS);
int bMagicLevel = ai_GetDMAIAccessButton(BTN_AI_MAGIC_LEVEL);
int bSpontaneous = ai_GetDMAIAccessButton(BTN_AI_NO_SPONTANEOUS);
int bNoMagic = ai_GetDMAIAccessButton(BTN_AI_NO_MAGIC_USE);
int bNoMagicItems = ai_GetDMAIAccessButton(BTN_AI_NO_MAGIC_ITEM_USE);
int bDefMagic = ai_GetDMAIAccessButton(BTN_AI_DEF_MAGIC_USE);
int bOffMagic = ai_GetDMAIAccessButton(BTN_AI_OFF_MAGIC_USE);
int bHealOut = ai_GetDMAIAccessButton(BTN_AI_HEAL_OUT);
int bHealIn = ai_GetDMAIAccessButton(BTN_AI_HEAL_IN);
int bSelfHealOnOff = ai_GetDMAIAccessButton(BTN_AI_STOP_SELF_HEALING);
int bPartyHealOnOff = ai_GetDMAIAccessButton(BTN_AI_STOP_PARTY_HEALING);
int bCureOnOff = ai_GetDMAIAccessButton(BTN_AI_STOP_CURE_SPELLS);
int bLoot = ai_GetDMAIAccessButton(BTN_AI_LOOT);
int bIgnoreAssociates = ai_GetDMAIAccessButton(BTN_AI_IGNORE_ASSOCIATES);
int bIgnoreTraps = ai_GetDMAIAccessButton(BTN_AI_IGNORE_TRAPS);
int bPercRange = ai_GetDMAIAccessButton(BTN_AI_PERC_RANGE);
int bBtnFamiliar = ai_GetDMWAccessButton(BTN_CMD_FAMILIAR);
int bBtnCompanion = ai_GetDMWAccessButton(BTN_CMD_COMPANION);
SetLocalInt(oPC, "CHBX_SKIP", TRUE);
DelayCommand(2.0, DeleteLocalInt(oPC, "CHBX_SKIP"));
// Row 4
NuiSetBind(oPC, nToken, "chbx_cmd_action_check", JsonBool (bCmdAction));
NuiSetBindWatch(oPC, nToken, "chbx_cmd_action_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_action_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_action_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_action_tooltip", JsonString(" Action button"));
NuiSetBind(oPC, nToken, "chbx_cmd_guard_check", JsonBool (bCmdGuard));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_guard_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_guard_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_guard_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_guard_tooltip", JsonString(" Guard button"));
NuiSetBind(oPC, nToken, "chbx_cmd_hold_check", JsonBool (bCmdHold));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_hold_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_hold_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_hold_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_hold_tooltip", JsonString(" Hold button"));
NuiSetBind(oPC, nToken, "chbx_cmd_attack_check", JsonBool (bCmdAttack));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_attack_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_attack_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_attack_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_attack_tooltip", JsonString(" Attack button"));
NuiSetBind(oPC, nToken, "chbx_cmd_follow_check", JsonBool (bCmdFollow));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_follow_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_follow_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_follow_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_follow_tooltip", JsonString(" Follow button"));
NuiSetBind(oPC, nToken, "chbx_follow_target_check", JsonBool (bFollowTarget));
NuiSetBindWatch (oPC, nToken, "chbx_follow_target_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_follow_target_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_follow_target_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_follow_target_tooltip", JsonString(" Follow Target button"));
NuiSetBind(oPC, nToken, "chbx_cmd_search_check", JsonBool (bCmdSearch));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_search_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_search_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_search_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_search_tooltip", JsonString(" Search All button"));
NuiSetBind(oPC, nToken, "chbx_cmd_stealth_check", JsonBool (bCmdStealth));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_stealth_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_stealth_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_stealth_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_stealth_tooltip", JsonString(" Stealth All button"));
NuiSetBind(oPC, nToken, "chbx_cmd_ai_script_check", JsonBool (bCmdAIScript));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_ai_script_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_ai_script_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_ai_script_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_ai_script_tooltip", JsonString(" Combat Tactics button"));
NuiSetBind(oPC, nToken, "chbx_cmd_place_trap_check", JsonBool (bCmdPlacetrap));
NuiSetBindWatch (oPC, nToken, "chbx_cmd_place_trap_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_cmd_place_trap_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_place_trap_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_cmd_place_trap_tooltip", JsonString (" Place Trap button"));
// Row 5
NuiSetBind(oPC, nToken, "chbx_quick_widget_check", JsonBool (bSpellWidget));
NuiSetBindWatch (oPC, nToken, "chbx_quick_widget_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_quick_widget_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_quick_widget_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_quick_widget_tooltip", JsonString(" Quick Use button"));
NuiSetBind(oPC, nToken, "chbx_spell_memorize_check", JsonBool (bMemorizeSpells));
NuiSetBindWatch (oPC, nToken, "chbx_spell_memorize_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_spell_memorize_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_spell_memorize_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_spell_memorize_tooltip", JsonString(" Memorize Spells button"));
NuiSetBind(oPC, nToken, "chbx_buff_short_check", JsonBool (bBuffShort));
NuiSetBindWatch (oPC, nToken, "chbx_buff_short_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_buff_short_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_buff_short_event", JsonBool (TRUE));
NuiSetBind (oPC, nToken, "btn_buff_short_tooltip", JsonString(" Short Buffing button"));
NuiSetBind(oPC, nToken, "chbx_buff_long_check", JsonBool (bBuffLong));
NuiSetBindWatch (oPC, nToken, "chbx_buff_long_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_buff_long_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_buff_long_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_buff_long_tooltip", JsonString(" Long Buffing button"));
NuiSetBind(oPC, nToken, "chbx_buff_all_check", JsonBool (bBuffAll));
NuiSetBindWatch (oPC, nToken, "chbx_buff_all_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_buff_all_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_buff_all_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_buff_all_tooltip", JsonString(" All Buffing button"));
NuiSetBind(oPC, nToken, "chbx_buff_rest_check", JsonBool (bBuffRest));
NuiSetBindWatch (oPC, nToken, "chbx_buff_rest_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_buff_rest_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_buff_rest_event", JsonBool (TRUE));
NuiSetBind (oPC, nToken, "btn_buff_rest_tooltip", JsonString(" Rest Buffing button"));
NuiSetBind(oPC, nToken, "chbx_jump_to_check", JsonBool(bJumpTo));
NuiSetBindWatch (oPC, nToken, "chbx_jump_to_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_jump_to_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_jump_to_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_jump_to_tooltip", JsonString(" Jump Associates button"));
NuiSetBind(oPC, nToken, "chbx_ghost_mode_check", JsonBool (bGhostMode));
NuiSetBindWatch (oPC, nToken, "chbx_ghost_mode_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_ghost_mode_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_ghost_mode_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_ghost_mode_tooltip", JsonString(" Ghost mode button"));
NuiSetBind(oPC, nToken, "chbx_camera_check", JsonBool (bCamera));
NuiSetBindWatch (oPC, nToken, "chbx_camera_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_camera_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_camera_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_camera_tooltip", JsonString(" Change Camera button"));
NuiSetBind(oPC, nToken, "chbx_inventory_check", JsonBool (bInventory));
NuiSetBindWatch (oPC, nToken, "chbx_inventory_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_inventory_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_inventory_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_inventory_tooltip", JsonString(" Open Inventory button"));
// Row 6
NuiSetBind(oPC, nToken, "chbx_familiar_check", JsonBool(bBtnFamiliar));
NuiSetBindWatch (oPC, nToken, "chbx_familiar_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_familiar_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_familiar_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_familiar_tooltip", JsonString(" Change Familiar buttons"));
NuiSetBind(oPC, nToken, "chbx_companion_check", JsonBool(bBtnCompanion));
NuiSetBindWatch (oPC, nToken, "chbx_companion_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_companion_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_companion_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_companion_tooltip", JsonString(" Change Animal Companion buttons"));
NuiSetBind(oPC, nToken, "chbx_ai_check", JsonBool(bAI));
NuiSetBindWatch (oPC, nToken, "chbx_ai_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_ai_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_ai_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_ai_tooltip", JsonString(" Player AI button"));
NuiSetBind(oPC, nToken, "chbx_quiet_check", JsonBool(bReduceSpeech));
NuiSetBindWatch (oPC, nToken, "chbx_quiet_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_quiet_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_quiet_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_quiet_tooltip", JsonString(" Reduce Speech button"));
NuiSetBind(oPC, nToken, "chbx_ranged_check", JsonBool(bRanged));
NuiSetBindWatch(oPC, nToken, "chbx_ranged_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_ranged_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_ranged_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_ranged_tooltip", JsonString(" Ranged button"));
NuiSetBind(oPC, nToken, "chbx_equip_weapon_check", JsonBool(bEquipWeapons));
NuiSetBindWatch(oPC, nToken, "chbx_equip_weapon_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_equip_weapon_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_equip_weapon_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_equip_weapon_tooltip", JsonString(" Auto Equip Weapons button"));
NuiSetBind(oPC, nToken, "chbx_search_check", JsonBool(bSearch));
NuiSetBindWatch (oPC, nToken, "chbx_search_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_search_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_search_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_search_tooltip", JsonString(" Search button"));
NuiSetBind(oPC, nToken, "chbx_stealth_check", JsonBool(bStealth));
NuiSetBindWatch(oPC, nToken, "chbx_stealth_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_stealth_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_stealth_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_stealth_tooltip", JsonString(" Stealth button"));
NuiSetBind(oPC, nToken, "chbx_open_door_check", JsonBool(bOpenDoors));
NuiSetBindWatch (oPC, nToken, "chbx_open_door_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_open_door_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_open_door_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_open_door_tooltip", JsonString(" Open Door button"));
NuiSetBind(oPC, nToken, "chbx_traps_check", JsonBool(bTraps));
NuiSetBindWatch (oPC, nToken, "chbx_traps_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_traps_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_traps_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_traps_tooltip", JsonString(" Disable Traps button"));
// Row 7
NuiSetBind(oPC, nToken, "chbx_pick_locks_check", JsonBool(bPickLocks));
NuiSetBindWatch(oPC, nToken, "chbx_pick_locks_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_pick_locks_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_pick_locks_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_pick_locks_tooltip", JsonString(" Pick Locks button"));
NuiSetBind(oPC, nToken, "chbx_bash_locks_check", JsonBool(bBashLocks));
NuiSetBindWatch(oPC, nToken, "chbx_bash_locks_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_bash_locks_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_bash_locks_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_bash_locks_tooltip", JsonString(" Bash button"));
NuiSetBind(oPC, nToken, "chbx_magic_level_check", JsonBool(bMagicLevel));
NuiSetBindWatch (oPC, nToken, "chbx_magic_level_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_magic_level_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_magic_level_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_magic_level_tooltip", JsonString(" Magic Level button"));
NuiSetBind(oPC, nToken, "chbx_spontaneous_check", JsonBool(bSpontaneous));
NuiSetBindWatch (oPC, nToken, "chbx_spontaneous_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_spontaneous_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_spontaneous_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_spontaneous_tooltip", JsonString(" Spontaneous Spells button"));
NuiSetBind(oPC, nToken, "chbx_magic_check", JsonBool(bNoMagic));
NuiSetBindWatch (oPC, nToken, "chbx_magic_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_magic_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_magic_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_magic_tooltip", JsonString(" Use Magic button"));
NuiSetBind(oPC, nToken, "chbx_magic_items_check", JsonBool(bNoMagicItems));
NuiSetBindWatch (oPC, nToken, "chbx_magic_items_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_magic_items_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_magic_items_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_magic_items_tooltip", JsonString(" Use Magic Items button"));
NuiSetBind(oPC, nToken, "chbx_def_magic_check", JsonBool (bDefMagic));
NuiSetBindWatch (oPC, nToken, "chbx_def_magic_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_def_magic_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_def_magic_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_def_magic_tooltip", JsonString(" Use Defensive Magic button"));
NuiSetBind(oPC, nToken, "chbx_off_magic_check", JsonBool(bOffMagic));
NuiSetBindWatch (oPC, nToken, "chbx_off_magic_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_off_magic_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_off_magic_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_off_magic_tooltip", JsonString(" Use Offensive Magic button"));
NuiSetBind(oPC, nToken, "chbx_heal_out_check", JsonBool(bHealOut));
NuiSetBindWatch (oPC, nToken, "chbx_heal_out_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_heal_out_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_heal_out_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_heal_out_tooltip", JsonString(" Heal Out of Combat button"));
NuiSetBind(oPC, nToken, "chbx_heal_in_check", JsonBool(bHealIn));
NuiSetBindWatch (oPC, nToken, "chbx_heal_in_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_heal_in_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_heal_in_event", JsonBool (TRUE));
NuiSetBind(oPC, nToken, "btn_heal_in_tooltip", JsonString(" Heal In Combat button"));
// Row 8
NuiSetBind(oPC, nToken, "chbx_heals_onoff_check", JsonBool(bSelfHealOnOff));
NuiSetBindWatch (oPC, nToken, "chbx_heals_onoff_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_heals_onoff_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_heals_onoff_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_heals_onoff_tooltip", JsonString(" Heal Self On/Off button"));
NuiSetBind(oPC, nToken, "chbx_healp_onoff_check", JsonBool(bPartyHealOnOff));
NuiSetBind(oPC, nToken, "chbx_healp_onoff_event", JsonBool(TRUE));
NuiSetBindWatch (oPC, nToken, "chbx_healp_onoff_check", TRUE);
NuiSetBind(oPC, nToken, "btn_healp_onoff_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_healp_onoff_tooltip", JsonString(" Heal Party On/Off button"));
NuiSetBind(oPC, nToken, "chbx_cure_onoff_check", JsonBool(bCureOnOff));
NuiSetBind(oPC, nToken, "chbx_cure_onoff_event", JsonBool(TRUE));
NuiSetBindWatch (oPC, nToken, "chbx_cure_onoff_check", TRUE);
NuiSetBind(oPC, nToken, "btn_cure_onoff_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_cure_onoff_tooltip", JsonString(" Cure Spells On/Off button"));
NuiSetBind(oPC, nToken, "chbx_loot_check", JsonBool(bLoot));
NuiSetBindWatch (oPC, nToken, "chbx_loot_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_loot_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_loot_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_loot_tooltip", JsonString(" Auto Looting button"));
NuiSetBind(oPC, nToken, "chbx_ignore_assoc_check", JsonBool(bIgnoreAssociates));
NuiSetBindWatch(oPC, nToken, "chbx_ignore_assoc_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_ignore_assoc_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_ignore_assoc_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_ignore_assoc_tooltip", JsonString(" Ignore Associates On/Off button"));
NuiSetBind(oPC, nToken, "chbx_ignore_traps_check", JsonBool(bIgnoreTraps));
NuiSetBindWatch(oPC, nToken, "chbx_ignore_traps_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_ignore_traps_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_ignore_traps_event", JsonBool(TRUE));
NuiSetBind (oPC, nToken, "btn_ignore_traps_tooltip", JsonString(" Ignore Floor Traps On/Off button"));
NuiSetBind(oPC, nToken, "chbx_perc_range_check", JsonBool(bPercRange));
NuiSetBindWatch (oPC, nToken, "chbx_perc_range_check", TRUE);
NuiSetBind(oPC, nToken, "chbx_perc_range_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_perc_range_event", JsonBool(TRUE));
NuiSetBind(oPC, nToken, "btn_perc_range_tooltip", JsonString(" Perception Range button"));
}