Accessing global JS object for create DFN entries
Posted: Tue Jun 29, 2021 7:10 pm
This post contains an example of how to access item entries and their properties from the create DFNs via the JS engine.
First, assume that the create DFNs contains an entry defined as such:
By fetching a reference to a specific create entry from a global JS object (CreateEntries) created for this purpose, similar to how spells can be accessed for the global Spells object, the properties can be accessed from a script like this:
Output of above TextMessages:
First, assume that the create DFNs contains an entry defined as such:
[ITEM 7]
{
NAME=gloves
ID=0x13f2
RESOURCE=METAL 10
SKILL=7 120 620
ADDITEM=0x13f2
MINRANK=1
MAXRANK=10
SOUND=0x002A
}
{
NAME=gloves
ID=0x13f2
RESOURCE=METAL 10
SKILL=7 120 620
ADDITEM=0x13f2
MINRANK=1
MAXRANK=10
SOUND=0x002A
}
function onUseUnChecked( pUser, iUsed )
{
// fetch reference to create DFNs entry 7 from global JS object
var createEntry = CreateEntries[7];
// Fetch properties of create entry
var createName = createEntry.name; // name of the create entry
var addItem = createEntry.addItem; // section header of item to craft
var sound = createEntry.sound; // sound to play when crafting item
var delay = createEntry.delay; // how long it takes to craft the item
var spell = createEntry.spell; // spell requirement to craft the item
var resources = createEntry.resources; // list of resources needed
var skills = createEntry.skills; // list of skill requirements
var avgMinSkill = createEntry.avgMinSkill; // average min skill required to smelt an item
var avgMaxSkill = createEntry.avgMaxSkill; // average max skill required to smelt an item
// List out basic create entry properties
pUser.TextMessage( "Item to craft: " + createName + " (" + addItem + ")" );
pUser.TextMessage( "Crafting sound: " + sound.toString() + ", Delay: " + delay.toString() );
pUser.TextMessage( "Average Skill Min/Max: " + avgMinSkill.toString() + "/" + avgMaxSkill.toString() );
// List out resource requirements
for( var i = 0; i < resources.length; i++ )
{
var resource = resources[i];
var amountNeeded = resource[0];
var resourceColour = resource[1];
var resourceIDs = resource[2];
var resourcesNeeded = "Amount: " + amountNeeded.toString() + ", Colour: " + resourceColour.toString() + ", resource IDs:";
for( var j = 0; j < resourceIDs.length; j++ )
{
resourcesNeeded += (" " + resourceIDs[j] );
}
pUser.TextMessage( resourcesNeeded );
}
// List out skill requirements
for( var i = 0; i < skills.length; i++ )
{
var skillReq = skills[i];
var skillNumber = skillReq[0];
var minSkill = skillReq[1];
var maxSkill = skillReq[2];
var skillRequirements = "SkillNumber: " + skillNumber.toString() + ", minSkill: " + minSkill.toString() + ", maxSkill: " + maxSkill.toString();
pUser.TextMessage( skillRequirements );
}
return false;
}
{
// fetch reference to create DFNs entry 7 from global JS object
var createEntry = CreateEntries[7];
// Fetch properties of create entry
var createName = createEntry.name; // name of the create entry
var addItem = createEntry.addItem; // section header of item to craft
var sound = createEntry.sound; // sound to play when crafting item
var delay = createEntry.delay; // how long it takes to craft the item
var spell = createEntry.spell; // spell requirement to craft the item
var resources = createEntry.resources; // list of resources needed
var skills = createEntry.skills; // list of skill requirements
var avgMinSkill = createEntry.avgMinSkill; // average min skill required to smelt an item
var avgMaxSkill = createEntry.avgMaxSkill; // average max skill required to smelt an item
// List out basic create entry properties
pUser.TextMessage( "Item to craft: " + createName + " (" + addItem + ")" );
pUser.TextMessage( "Crafting sound: " + sound.toString() + ", Delay: " + delay.toString() );
pUser.TextMessage( "Average Skill Min/Max: " + avgMinSkill.toString() + "/" + avgMaxSkill.toString() );
// List out resource requirements
for( var i = 0; i < resources.length; i++ )
{
var resource = resources[i];
var amountNeeded = resource[0];
var resourceColour = resource[1];
var resourceIDs = resource[2];
var resourcesNeeded = "Amount: " + amountNeeded.toString() + ", Colour: " + resourceColour.toString() + ", resource IDs:";
for( var j = 0; j < resourceIDs.length; j++ )
{
resourcesNeeded += (" " + resourceIDs[j] );
}
pUser.TextMessage( resourcesNeeded );
}
// List out skill requirements
for( var i = 0; i < skills.length; i++ )
{
var skillReq = skills[i];
var skillNumber = skillReq[0];
var minSkill = skillReq[1];
var maxSkill = skillReq[2];
var skillRequirements = "SkillNumber: " + skillNumber.toString() + ", minSkill: " + minSkill.toString() + ", maxSkill: " + maxSkill.toString();
pUser.TextMessage( skillRequirements );
}
return false;
}
Item to craft: gloves (0x13f2)
Crafting sound: 42, Delay: 0
Average Skill Min/Average Skill Max: 120/620
Amount: 10, Colour: 0, resource IDs: 7154, 7151
SkillNumber: 7, minSkill: 120, maxSkill: 620
Crafting sound: 42, Delay: 0
Average Skill Min/Average Skill Max: 120/620
Amount: 10, Colour: 0, resource IDs: 7154, 7151
SkillNumber: 7, minSkill: 120, maxSkill: 620