instance_live_info command (#3099)
Implemented instance_live_info script command to retrieve some data of running instances Thanks to @Jeybla, @cydh, @Lemongrass3110 and @aleos89 for the review !
This commit is contained in:
parent
90f7cf03a9
commit
c1975d7ea3
@ -9057,6 +9057,33 @@ mes .@name$ + " will be destroyed if no one is in the instance for " + instance_
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*instance_live_info(<info type>{,<instance id>});
|
||||
|
||||
Returns the specified <info type> of instance attached to the npc or, if
|
||||
an instance ID is specified, of that instance.
|
||||
|
||||
Valid <info type>:
|
||||
ILI_NAME - Instance Name
|
||||
Return the name of the instance or "" if that fails.
|
||||
ILI_MODE - Instance Mode
|
||||
Return IM_NONE, IM_CHAR, IM_PARTY, IM_GUILD, IM_CLAN or -1 if that fails.
|
||||
ILI_OWNER - Owner ID
|
||||
Return an ID according to the instance mode of the instance attached/specified or -1 if that fails.
|
||||
When the instance mode is IM_NONE, ILI_OWNER will return the npc ID that created the instance,
|
||||
IM_CHAR - the owner char ID
|
||||
IM_PARTY - the party ID
|
||||
IM_GUILD - the guild ID
|
||||
IM_CLAN - the clan ID
|
||||
|
||||
Examples:
|
||||
// Return the instance name of the instance attached to the npc.
|
||||
.@instance_name$ = instance_live_info(ILI_NAME);
|
||||
|
||||
// Return the guild owner ID of the given instance ID.
|
||||
.@owner = instance_live_info(ILI_OWNER, instance_id(IM_GUILD));
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*getvariableofinstance(<variable>,<instance id>);
|
||||
|
||||
Returns a reference to an instance variable (' prefix) of the specific instance ID.
|
||||
|
@ -20520,6 +20520,60 @@ BUILDIN_FUNC(instance_info)
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/*------------------------------------------
|
||||
*instance_live_info( <info type>{, <instance id>} );
|
||||
- ILI_NAME : Instance Name
|
||||
- ILI_MODE : Instance Mode
|
||||
- ILI_OWNER : owner id
|
||||
*------------------------------------------*/
|
||||
BUILDIN_FUNC(instance_live_info)
|
||||
{
|
||||
int type = script_getnum(st, 2);
|
||||
int id = 0;
|
||||
|
||||
if (type < ILI_NAME || type > ILI_OWNER) {
|
||||
ShowError("buildin_instance_live_info: Unknown instance information type \"%d\".\n", type);
|
||||
script_pushint(st, -1);
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
if (!script_hasdata(st, 3))
|
||||
id = script_instancegetid(st);
|
||||
else
|
||||
id = script_getnum(st, 3);
|
||||
|
||||
struct instance_db *db = nullptr;
|
||||
struct instance_data *im = nullptr;
|
||||
|
||||
if (id > 0 && id < MAX_INSTANCE_DATA) {
|
||||
im = &instance_data[id];
|
||||
|
||||
if (im)
|
||||
db = instance_searchtype_db(im->type);
|
||||
}
|
||||
|
||||
if (!im || !db) {
|
||||
if (type == ILI_NAME)
|
||||
script_pushconststr(st, "");
|
||||
else
|
||||
script_pushint(st, -1);
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
switch( type ) {
|
||||
case ILI_NAME:
|
||||
script_pushstrcopy(st, StringBuf_Value(db->name));
|
||||
break;
|
||||
case ILI_MODE:
|
||||
script_pushint(st, im->mode);
|
||||
break;
|
||||
case ILI_OWNER:
|
||||
script_pushint(st, im->owner_id);
|
||||
break;
|
||||
}
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* Custom Fonts
|
||||
*------------------------------------------*/
|
||||
@ -24912,6 +24966,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(instance_check_guild,"i???"),
|
||||
BUILDIN_DEF(instance_check_clan,"i???"),
|
||||
BUILDIN_DEF(instance_info,"si?"),
|
||||
BUILDIN_DEF(instance_live_info,"i?"),
|
||||
/**
|
||||
* 3rd-related
|
||||
**/
|
||||
|
@ -699,6 +699,12 @@ enum instance_info_type {
|
||||
IIT_MAP
|
||||
};
|
||||
|
||||
enum e_instance_live_info_type : uint8 {
|
||||
ILI_NAME,
|
||||
ILI_MODE,
|
||||
ILI_OWNER
|
||||
};
|
||||
|
||||
enum vip_status_type {
|
||||
VIP_STATUS_ACTIVE = 1,
|
||||
VIP_STATUS_EXPIRE,
|
||||
|
@ -4334,6 +4334,11 @@
|
||||
export_constant(IIT_MAPCOUNT);
|
||||
export_constant(IIT_MAP);
|
||||
|
||||
/* instance live info */
|
||||
export_constant(ILI_NAME);
|
||||
export_constant(ILI_MODE);
|
||||
export_constant(ILI_OWNER);
|
||||
|
||||
/* VIP status */
|
||||
export_constant(VIP_STATUS_ACTIVE);
|
||||
export_constant(VIP_STATUS_EXPIRE);
|
||||
|
Loading…
x
Reference in New Issue
Block a user