diff options
-rw-r--r-- | doc/script_commands.txt | 18 | ||||
-rw-r--r-- | src/map/mob.c | 3 | ||||
-rw-r--r-- | src/map/script.c | 59 |
3 files changed, 79 insertions, 1 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt index f718298a2..2cb0a55c0 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -2493,7 +2493,23 @@ Examples: // Outputs IP address of character "Silver". mes "Silver's IP: " + getcharip("Silver"); - + +--------------------------------------- + +*sit({"<character name>"}) +*stand({"<character name>"}) + +This function will force a character to sit/stand if it is standing/sitting. +If no player is specified, the attached player will be used. + +--------------------------------------- + +*issit({"<character name>"}) + +This function will return a number depending on the character's sitting state. +If the character is sitting, it will return 1, otherwise (standing) it will return 0. +In case no player is specified, the function will return the state of the attached player. + --------------------------------------- \\ 2,2 Item-related commands diff --git a/src/map/mob.c b/src/map/mob.c index ad3dd50c3..7482a9d56 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -4591,6 +4591,9 @@ static void mob_load(void) if (iMap->db_use_sql_mob_db) { mob_read_sqldb(); + } + if (iMap->db_use_sql_mob_skill_db) + { mob_read_sqlskilldb(); } else diff --git a/src/map/script.c b/src/map/script.c index 4a90290cf..3ba8ea9fc 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -16679,6 +16679,61 @@ BUILDIN(freeloop) { return true; } +BUILDIN(sit) +{ + struct map_session_data *sd = NULL; + + if (script_hasdata(st, 2)) + sd = iMap->nick2sd(script_getstr(st, 2)); + + if (sd == NULL) + sd = script_rid2sd(st); + + if (!pc_issit(sd)) + { + pc_setsit(sd); + skill->sit(sd,1); + clif->sitting(&sd->bl); + } + return true; +} + +BUILDIN(stand) +{ + struct map_session_data *sd = NULL; + + if (script_hasdata(st, 2)) + sd = iMap->nick2sd(script_getstr(st, 2)); + + if (sd == NULL) + sd = script_rid2sd(st); + + if (pc_issit(sd)) + { + pc->setstand(sd); + skill->sit(sd,0); + clif->standing(&sd->bl); + } + return true; +} + +BUILDIN(issit) +{ + struct map_session_data *sd = NULL; + + if (script_hasdata(st, 2)) + sd = iMap->nick2sd(script_getstr(st, 2)); + + if (sd == NULL) + sd = script_rid2sd(st); + + if (pc_issit(sd)) + script_pushint(st, 1); + else + script_pushint(st, 0); + return true; +} + /** * @commands (script based) **/ @@ -17962,6 +18017,10 @@ void script_parse_builtin(void) { BUILDIN_DEF(packageitem,"?"), + BUILDIN_DEF(sit, "?"), + BUILDIN_DEF(stand, "?"), + BUILDIN_DEF(issit, "?"), + /* New BG Commands [Hercules] */ BUILDIN_DEF(bg_create_team,"sii"), BUILDIN_DEF(bg_join_team,"i?"), |