Added Random Option item data to getinventorylist (#3030)

* Closes #3021.
* Added Random Option item data to script command getinventorylist return values.
Thanks to @Yuchinin!
This commit is contained in:
Aleos
2018-04-03 10:40:29 -04:00
committed by GitHub
parent 170da17844
commit f07a1c4b4d
2 changed files with 40 additions and 16 deletions

View File

@@ -2809,21 +2809,36 @@ This command sets a bunch of arrays with a complete list of whatever the
invoking character has in their inventory, including all the data needed to
recreate these items perfectly if they are destroyed. Here's what you get:
@inventorylist_id[] - array of item ids.
@inventorylist_amount[] - their corresponding item amounts.
@inventorylist_equip[] - on which position the item is equipped (see EQP_* constants)
It will contain 0 if the item is not equipped.
@inventorylist_refine[] - for how much it is refined.
@inventorylist_identify[] - whether it is identified.
@inventorylist_attribute[] - whether it is broken.
@inventorylist_card1[] - These four arrays contain card data for the items.
@inventorylist_card2[] These data slots are also used to store names
@inventorylist_card3[] inscribed on the items, so you can explicitly check
@inventorylist_card4[] if the character owns an item made by a specific
craftsman.
@inventorylist_expire[] - expire time (Unix time stamp). 0 means never expires.
@inventorylist_bound[] - the bound type of the items (see BOUND_* constants)
@inventorylist_count - the number of items in these lists.
@inventorylist_id[] - array of item ids.
@inventorylist_amount[] - their corresponding item amounts.
@inventorylist_equip[] - on which position the item is equipped (see EQP_* constants)
It will contain 0 if the item is not equipped.
@inventorylist_refine[] - for how much it is refined.
@inventorylist_identify[] - whether it is identified.
@inventorylist_attribute[] - whether it is broken.
@inventorylist_card1[] - These four arrays contain card data for the items.
@inventorylist_card2[] These data slots are also used to store names
@inventorylist_card3[] inscribed on the items, so you can explicitly check
@inventorylist_card4[] if the character owns an item made by a specific
craftsman.
@inventorylist_expire[] - expire time (Unix time stamp). 0 means never expires.
@inventorylist_bound[] - the bound type of the items (see BOUND_* constants)
@inventorylist_count - the number of items in these lists.
@inventorylist_option_id1[] - first array of random option IDs
@inventorylist_option_value1[] - first array of random option values
@inventorylist_option_parameter1[] - first array of random option parameters
@inventorylist_option_id2[] - second array of random option IDs
@inventorylist_option_value2[] - second array of random option values
@inventorylist_option_parameter2[] - second array of random option parameters
@inventorylist_option_id3[] - third array of random option IDs
@inventorylist_option_value3[] - third array of random option values
@inventorylist_option_parameter3[] - third array of random option parameters
@inventorylist_option_id4[] - fourth array of random option IDs
@inventorylist_option_value4[] - fourth array of random option values
@inventorylist_option_parameter4[] - fourth array of random option parameters
@inventorylist_option_id5[] - fifth array of random option IDs
@inventorylist_option_value5[] - fifth array of random option values
@inventorylist_option_parameter5[] - fifth array of random option parameters
This could be handy to save/restore a character's inventory, since no other
command returns such a complete set of data, and could also be the only way to

View File

@@ -13880,7 +13880,7 @@ BUILDIN_FUNC(petloot)
BUILDIN_FUNC(getinventorylist)
{
TBL_PC *sd;
char card_var[NAME_LENGTH];
char card_var[NAME_LENGTH], randopt_var[NAME_LENGTH];
int i,j=0,k;
if (!script_charid2sd(2,sd))
@@ -13900,6 +13900,15 @@ BUILDIN_FUNC(getinventorylist)
}
pc_setreg(sd,reference_uid(add_str("@inventorylist_expire"), j),sd->inventory.u.items_inventory[i].expire_time);
pc_setreg(sd,reference_uid(add_str("@inventorylist_bound"), j),sd->inventory.u.items_inventory[i].bound);
for (k = 0; k < MAX_ITEM_RDM_OPT; k++)
{
sprintf(randopt_var, "@inventorylist_option_id%d",k+1);
pc_setreg(sd,reference_uid(add_str(randopt_var), j),sd->inventory.u.items_inventory[i].option[k].id);
sprintf(randopt_var, "@inventorylist_option_value%d",k+1);
pc_setreg(sd,reference_uid(add_str(randopt_var), j),sd->inventory.u.items_inventory[i].option[k].value);
sprintf(randopt_var, "@inventorylist_option_parameter%d",k+1);
pc_setreg(sd,reference_uid(add_str(randopt_var), j),sd->inventory.u.items_inventory[i].option[k].param);
}
j++;
}
}