DGNXFoxN wrote:Not sure though how to work with the function parameters and inheriting scripts and attributes to new objects.
Object Types (Groups~Classes):
(can be found under 'advanced' in the left side's 'tree of stuff' in the GUI~Editor)
(and they can be added to Objects simply via: 'Attributes' Tab -> Inherited Attributes -> Add)
these hold Attributes and~or other Object Types, which these Object Types, can be added to Objects (as Inherited Attributes), giving that Object every Attribute that it holds (including the Attributes of Object Types within the Object Type).
for an example:
much better:
<object name="dragon_1">
<inherit name="dragon_object_type">
</object>
<object name="dragon_2">
<inherit name="dragon_object_type">
</object>
<object name="dragon_3">
<inherit name="dragon_object_type">
</object>
<object name="dragon_4">
<inherit name="dragon_object_type">
</object>
<type name="dragon_object_type">
<attr name="strength_integer_attribute" type="int">100</attr>
<attr name="endurance_integer_attribute" type="int">100</attr>
<attr name="dexterity_integer_attribute" type="int">100</attr>
<attr name="agility_integer_attribute" type="int">100</attr>
<attr name="speed_integer_attribute" type="int">100</attr>
<attr name="luck_integer_attribute" type="int">100</attr>
</type>
much worse:
<object name="dragon_1">
<attr name="strength_integer_attribute" type="int">100</attr>
<attr name="endurance_integer_attribute" type="int">100</attr>
<attr name="dexterity_integer_attribute" type="int">100</attr>
<attr name="agility_integer_attribute" type="int">100</attr>
<attr name="speed_integer_attribute" type="int">100</attr>
<attr name="luck_integer_attribute" type="int">100</attr>
</object>
<object name="dragon_2">
<attr name="strength_integer_attribute" type="int">100</attr>
<attr name="endurance_integer_attribute" type="int">100</attr>
<attr name="dexterity_integer_attribute" type="int">100</attr>
<attr name="agility_integer_attribute" type="int">100</attr>
<attr name="speed_integer_attribute" type="int">100</attr>
<attr name="luck_integer_attribute" type="int">100</attr>
</object>
<object name="dragon_3">
<attr name="strength_integer_attribute" type="int">100</attr>
<attr name="endurance_integer_attribute" type="int">100</attr>
<attr name="dexterity_integer_attribute" type="int">100</attr>
<attr name="agility_integer_attribute" type="int">100</attr>
<attr name="speed_integer_attribute" type="int">100</attr>
<attr name="luck_integer_attribute" type="int">100</attr>
</object>
<object name="dragon_4">
<attr name="strength_integer_attribute" type="int">100</attr>
<attr name="endurance_integer_attribute" type="int">100</attr>
<attr name="dexterity_integer_attribute" type="int">100</attr>
<attr name="agility_integer_attribute" type="int">100</attr>
<attr name="speed_integer_attribute" type="int">100</attr>
<attr name="luck_integer_attribute" type="int">100</attr>
</object>
and any Attribute added (or via scripting) to the Object directly, will over-ride any Inherited Attribute from an Object Type:
<object name="dragon_0">
<inherit name="dragon_object_type">
<attr name="strength_integer_attribute" type="int">0</attr> // this will over-ride the Inherited 'strength_integer_attribute' Attribute's Value of 100, with Value 0, meaning our 'dragon_0' Object will have 0 strength.
</object>
<type name="dragon_object_type">
<attr name="strength_integer_attribute" type="int">100</attr>
<attr name="endurance_integer_attribute" type="int">100</attr>
<attr name="dexterity_integer_attribute" type="int">100</attr>
<attr name="agility_integer_attribute" type="int">100</attr>
<attr name="speed_integer_attribute" type="int">100</attr>
<attr name="luck_integer_attribute" type="int">100</attr>
</type>
-------------
anoher example of Object Types with Object Types (layers~levels of inheritance):
<object name="claymore">
<inherit name="weapon_object_type">
<attr name="type_stringlist_attribute" type="simplestringlist">weapon</attr>
<attr name="weight_integer_attribute" type="int">10</attr>
<attr name="layer_integer_attribute" type="int">2</attr>
<attr name="two_handed_boolean_attribute" type="boolean">true</attr>
<attr name="physical_damage_integer_attribute" type="int">50</attr>
<attr name="attack_rating_integer_attribute" type="int">25</attr>
</object>
<type name="equipment_object_type">
<attr name="durability_integer_attribute" type="int">100</attr>
<attr name="equipable_boolean_attribute" type="boolean">true</attr>
<attr name="unequipable_boolean_attribute" type="boolean">true</attr>
<attr name="type_stringlist_attribute" type="simplestringlist">weapon;armor;clothing</attr>
<attr name="slot_stringlist_attribute" type="simplestringlist">head;face;neck;ears;shoulders;arms;hands;fingers;left_hand;right_hand;chest;back;waist;legs;feet</attr>
<attr name="weight_integer_attribute" type="int">0</attr>
<attr name="layer_integer_attribute" type="int">0</attr>
<equip type="script">
// blah scripting
</equip>
<unequip type="script">
// blah scripting
</unequip>
</type>
<type name="weapon_object_type">
<inherit name="equipment_object_type" />
<attr name="two_handed_boolean_attribute" type="boolean">false</attr>
<attr name="physical_damage_integer_attribute" type="int">0</attr>
<attr name="fire_damage_integer_attribute" type="int">0</attr>
<attr name="water_damage_integer_attribute" type="int">0</attr>
<attr name="air_damage_integer_attribute" type="int">0</attr>
<attr name="earth_damage_integer_attribute" type="int">0</attr>
<attr name="attack_rating_integer_attribute" type="int">0</attr>
<attr name="slot_stringlist_attribute" type="simplestringlist">left_hand;right_hand</attr>
</type>
<type name="armor_object_type">
<inherit name="equipment_object_type" />
<attr name="physical_defense_integer_attribute" type="int">0</attr>
<attr name="fire_defense_integer_attribute" type="int">0</attr>
<attr name="water_defense_integer_attribute" type="int">0</attr>
<attr name="air_defense_integer_attribute" type="int">0</attr>
<attr name="earth_defense_integer_attribute" type="int">0</attr>
<attr name="armor_class_integer_attribute" type="int">0</attr>
<attr name="slot_stringlist_attribute" type="simplestringlist">head;face;neck;ears;shoulders;arms;hands;fingers;chest;back;waist;legs;feet</attr>
</type>
---------------------------
Parameters are VARIABLES that can be transferred between Elements (Functions, Commands, Delegates, etc?) and also can *optionally* be locally~temporarily renamed~relabeled, too.
for example...
<game name="xxx">
<attr name="player_objectlist_attribute" type="objectlist">player_1;player_2;player_3</attr>
<start type="script">
show menu ("Character?", game.player_objectlist_attribute, false) {
name_function (result)
}
</start>
</game>
<function name="name_function" parameters="player_parameter">
msg ("Name?")
get input {
player_parameter.alias = result
}
</function>
you pick what player you'll be using: player_1, player_2, or player_3
let's say you pick: result = player_2
the 'name_function' Function takes the 'result' (player_2) as its Parameter for use in its scripting, and changes its label~name to: player_parameter
conceptually: player_parameter <=== result <=== player_2
so conceptually: player_parameter.alias = player_2.alias