Merged getmapmobs
script function into mobcount
(bugreport:244). See script commands documentation for details.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15530 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
6bd17da9a3
commit
0709205ee8
@ -3087,15 +3087,6 @@ Example:
|
|||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*getmapmobs("<map name>")
|
|
||||||
|
|
||||||
This function will return the total count of monsters currently located on the
|
|
||||||
specified map. If the map name is given as "this", the map the invoking
|
|
||||||
character is on will be used. If the map is not found, or the invoker is not a
|
|
||||||
character while the map is "this", it will return -1.
|
|
||||||
|
|
||||||
---------------------------------------
|
|
||||||
|
|
||||||
*skillpointcount()
|
*skillpointcount()
|
||||||
|
|
||||||
Returns the total amount of skill points a character possesses (SkillPoint+SP's used in skills)
|
Returns the total amount of skill points a character possesses (SkillPoint+SP's used in skills)
|
||||||
@ -5012,14 +5003,19 @@ per 'db/mob_db.txt'. Type is the kind of information returned. Valid types are:
|
|||||||
|
|
||||||
This function will count all the monsters on the specified map that have a given
|
This function will count all the monsters on the specified map that have a given
|
||||||
event label and return the number or 0 if it can't find any. Naturally, only
|
event label and return the number or 0 if it can't find any. Naturally, only
|
||||||
monsters spawned with 'monster' and 'areamonster' script commands can be like
|
monsters spawned with 'monster' and 'areamonster' script commands can have non-empty
|
||||||
this.
|
event label.
|
||||||
|
If you pass this function an empty string for the event label, it will return
|
||||||
However, apparently, if you pass this function an empty string for the event
|
the total count of monster without event label, including permanently spawning monsters.
|
||||||
label, it should return the total count of normal permanently respawning
|
With the dynamic mobs system enabled, where mobs are not kept
|
||||||
monsters instead. With the current dynamic mobs system, where mobs are not kept
|
|
||||||
in memory for maps with no actual people playing on them, this will return a 0
|
in memory for maps with no actual people playing on them, this will return a 0
|
||||||
for any such map.
|
for any such map.
|
||||||
|
If the event label is given as "all", all monsters will be counted, regardless of
|
||||||
|
having any event label attached.
|
||||||
|
|
||||||
|
If the map name is given as "this", the map the invoking character is on will
|
||||||
|
be used. If the map is not found, or the invoker is not a character while the map
|
||||||
|
is "this", it will return -1.
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
@ -10489,7 +10489,7 @@ static int buildin_mobcount_sub(struct block_list *bl,va_list ap) // Added by Ro
|
|||||||
{
|
{
|
||||||
char *event=va_arg(ap,char *);
|
char *event=va_arg(ap,char *);
|
||||||
struct mob_data *md = ((struct mob_data *)bl);
|
struct mob_data *md = ((struct mob_data *)bl);
|
||||||
if(strcmp(event,md->npc_event)==0 && md->status.hp > 0)
|
if( md->status.hp > 0 && (!event || strcmp(event,md->npc_event) == 0) )
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -10500,9 +10500,22 @@ BUILDIN_FUNC(mobcount) // Added by RoVeRT
|
|||||||
int m;
|
int m;
|
||||||
mapname=script_getstr(st,2);
|
mapname=script_getstr(st,2);
|
||||||
event=script_getstr(st,3);
|
event=script_getstr(st,3);
|
||||||
check_event(st, event);
|
|
||||||
|
|
||||||
if( (m = map_mapname2mapid(mapname)) < 0 ) {
|
if( strcmp(event, "all") == 0 )
|
||||||
|
event = NULL;
|
||||||
|
else
|
||||||
|
check_event(st, event);
|
||||||
|
|
||||||
|
if( strcmp(mapname, "this") == 0 ) {
|
||||||
|
struct map_session_data *sd = script_rid2sd(st);
|
||||||
|
if( sd )
|
||||||
|
m = sd->bl.m;
|
||||||
|
else {
|
||||||
|
script_pushint(st,-1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( (m = map_mapname2mapid(mapname)) < 0 ) {
|
||||||
script_pushint(st,-1);
|
script_pushint(st,-1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -10517,6 +10530,7 @@ BUILDIN_FUNC(mobcount) // Added by RoVeRT
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
BUILDIN_FUNC(marriage)
|
BUILDIN_FUNC(marriage)
|
||||||
{
|
{
|
||||||
const char *partner=script_getstr(st,2);
|
const char *partner=script_getstr(st,2);
|
||||||
@ -11859,47 +11873,6 @@ BUILDIN_FUNC(jump_zero)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
|
||||||
* GetMapMobs
|
|
||||||
returns mob counts on a set map:
|
|
||||||
e.g. GetMapMobs("prontera")
|
|
||||||
use "this" - for player's map
|
|
||||||
*------------------------------------------*/
|
|
||||||
BUILDIN_FUNC(getmapmobs)
|
|
||||||
{
|
|
||||||
const char *str=NULL;
|
|
||||||
int m=-1,bx,by;
|
|
||||||
int count=0;
|
|
||||||
struct block_list *bl;
|
|
||||||
|
|
||||||
str=script_getstr(st,2);
|
|
||||||
|
|
||||||
if(strcmp(str,"this")==0){
|
|
||||||
TBL_PC *sd=script_rid2sd(st);
|
|
||||||
if(sd)
|
|
||||||
m=sd->bl.m;
|
|
||||||
else{
|
|
||||||
script_pushint(st,-1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}else
|
|
||||||
m=map_mapname2mapid(str);
|
|
||||||
|
|
||||||
if(m < 0){
|
|
||||||
script_pushint(st,-1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(by=0;by<=(map[m].ys-1)/BLOCK_SIZE;by++)
|
|
||||||
for(bx=0;bx<=(map[m].xs-1)/BLOCK_SIZE;bx++)
|
|
||||||
for( bl = map[m].block_mob[bx+by*map[m].bxs] ; bl != NULL ; bl = bl->next )
|
|
||||||
if(bl->x>=0 && bl->x<=map[m].xs-1 && bl->y>=0 && bl->y<=map[m].ys-1)
|
|
||||||
count++;
|
|
||||||
|
|
||||||
script_pushint(st,count);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* movenpc [MouseJstr]
|
* movenpc [MouseJstr]
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -16236,8 +16209,7 @@ struct script_function buildin_func[] = {
|
|||||||
BUILDIN_DEF(getmercinfo,"i?"),
|
BUILDIN_DEF(getmercinfo,"i?"),
|
||||||
BUILDIN_DEF(checkequipedcard,"i"),
|
BUILDIN_DEF(checkequipedcard,"i"),
|
||||||
BUILDIN_DEF(jump_zero,"il"), //for future jA script compatibility
|
BUILDIN_DEF(jump_zero,"il"), //for future jA script compatibility
|
||||||
BUILDIN_DEF(globalmes,"s?"),
|
BUILDIN_DEF(globalmes,"s?"), //end jA addition
|
||||||
BUILDIN_DEF(getmapmobs,"s"), //end jA addition
|
|
||||||
BUILDIN_DEF(unequip,"i"), // unequip command [Spectre]
|
BUILDIN_DEF(unequip,"i"), // unequip command [Spectre]
|
||||||
BUILDIN_DEF(getstrlen,"s"), //strlen [Valaris]
|
BUILDIN_DEF(getstrlen,"s"), //strlen [Valaris]
|
||||||
BUILDIN_DEF(charisalpha,"si"), //isalpha [Valaris]
|
BUILDIN_DEF(charisalpha,"si"), //isalpha [Valaris]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user