Hello, guys
Since there is a scene prop instance system, we don't have a item instance system
that will be a problem, when we want to store some values related to a specific item instance
so I write a simple item instance system
the rules is:
item instance id = item kind id + item index in agent inventory
item slot `troop` id = item instance id + agent id
module_scripts.py:
module_troops.py:
Feel free to report any bug or issue when you use this code
just give the credit if you want to use this
Since there is a scene prop instance system, we don't have a item instance system
that will be a problem, when we want to store some values related to a specific item instance
so I write a simple item instance system
the rules is:
item instance id = item kind id + item index in agent inventory
item slot `troop` id = item instance id + agent id
module_scripts.py:
Code:
("item_get_num_instance", [
(store_script_param, ":agent_id", 1),
(store_script_param, ":item_kind_id", 2),
(assign, ":num", 0),
(agent_get_troop_id, ":troop_id", ":agent_id"),
(troop_get_inventory_capacity, ":end_cond", ":troop_id"),
(try_for_range, ":i_slot", 0, ":end_cond"),
(troop_get_inventory_slot, ":item_id", ":troop_id", ":i_slot"),
(try_begin),
(eq, ":item_id", ":item_kind_id"),
(val_add, ":num", 1),
(try_end),
(try_end),
(assign, reg0, ":num"),
]),
("item_get_instance", [
(store_script_param, ":agent_id", 1),
(store_script_param, ":item_kind_id", 2),
(store_script_param, ":number", 3),
(assign, ":instance_id", -1),
(assign, ":num", 0),
(agent_get_troop_id, ":troop_id", ":agent_id"),
(troop_get_inventory_capacity, ":end_cond", ":troop_id"),
(try_for_range, ":i_slot", 0, ":end_cond"),
(troop_get_inventory_slot, ":item_id", ":troop_id", ":i_slot"),
(try_begin),
(eq, ":item_id", ":item_kind_id"),
(try_begin),
(eq, ":num", ":number"),
(store_add, ":instance_id", ":item_kind_id", "number"),
(assign, reg0, ":instance_id"),
(assign, ":end_cond", 0),
(try_end),
(val_add, ":num", 1),
(try_end),
(try_end),
]),
("item_instance_get_slot", [
(store_script_param, ":agent_id", 1),
(store_script_param, ":item_instance_id", 2),
(store_script_param, ":slot", 3),
(store_add, ":agent_id_plus_item_instance_id", ":agent_id", ":item_instance_id"),
(troop_get_slot, ":slot", "trp_item_instance_array", ":agent_id_plus_item_instance_id"),
(troop_get_slot, ":value", "trp_item_instance_slot_array", ":slot"),
(assign, reg0, ":value"),
]),
("item_instance_set_slot", [
(store_script_param, ":agent_id", 1),
(store_script_param, ":item_instance_id", 2),
(store_script_param, ":slot", 3),
(store_script_param, ":slot_value", 4),
(store_add, ":agent_id_plus_item_instance_id", ":agent_id", ":item_instance_id"),
(troop_set_slot, "trp_item_instance_array", ":agent_id_plus_item_instance_id", ":slot"),
(troop_set_slot, "trp_item_instance_slot_array", ":slot", ":slot_value"),
]),
module_troops.py:
Code:
["item_instance_array", "NA","NA",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
["item_instance_slot_array", "NA","NA",tf_hero|tf_inactive, 0,reserved, fac_neutral,[],def_attrib|level(18),wp(60),knows_common, 0],
Feel free to report any bug or issue when you use this code
just give the credit if you want to use this