From f7557fca587fac9d7bb410dba724e2c53f3c831a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 29 Nov 2014 11:49:05 +0300 Subject: Add script commands to sit and stand player. New commands: setpcsit [name,] [0|1] - depend on second parameter set player sit or stand. getpcsit([name]) - return current sit flag. --- src/map/init.c | 2 ++ src/map/script.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/map/script.h | 2 ++ 3 files changed, 64 insertions(+) diff --git a/src/map/init.c b/src/map/init.c index bb3d80a..27bf766 100644 --- a/src/map/init.c +++ b/src/map/init.c @@ -81,6 +81,8 @@ HPExport void plugin_init (void) addScriptCommand("getmapmask", "s", getMapMask); addScriptCommand("getnpcclass", "*", getNpcClass); addScriptCommand("setnpcsex", "*", setNpcSex); + addScriptCommand("setpcsit", "*", setPcSit); + addScriptCommand("getpcsit", "*", getPcSit); do_init_langs(); diff --git a/src/map/script.c b/src/map/script.c index 86e613e..8b63dd4 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -571,4 +571,64 @@ BUILDIN(setNpcSex) clif->clearunit_area(&nd->bl, CLR_OUTSIGHT); nd->vd->sex = sex; clif->spawn(&nd->bl); + return true; +} + +BUILDIN(setPcSit) +{ + TBL_PC *sd = NULL; + int state = 0; + + if (script_hasdata(st, 3)) + { + sd = map->nick2sd (script_getstr(st, 2)); + state = script_getnum(st, 3); + } + else if (script_hasdata(st, 2)) + { + sd = script->rid2sd(st); + state = script_getnum(st, 2); + } + else + { + return false; + } + if (!sd) + return false; + + if (state < 0) + state = 0; + if (state > 1) + state = 1; + + if (!state) + { + if (pc_issit(sd)) + { + pc->setstand(sd); + clif->standing(&sd->bl); + } + } + else if (!pc_issit (sd)) + { + sd->state.dead_sit = 2; + sd->vd.dead_sit = 2; + clif->sitting(&sd->bl); + } + return true; +} + +BUILDIN(getPcSit) +{ + TBL_PC *sd = NULL; + + if (script_hasdata(st, 2)) + sd = map->nick2sd (script_getstr(st, 2)); + else + sd = script->rid2sd(st); + if (!sd) + script_pushint(st, -1); + else + script_pushint(st, pc_issit (sd)); + return true; } diff --git a/src/map/script.h b/src/map/script.h index 034a5cd..3a92fcc 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -26,5 +26,7 @@ BUILDIN(addMapMask); BUILDIN(removeMapMask); BUILDIN(getNpcClass); BUILDIN(setNpcSex); +BUILDIN(setPcSit); +BUILDIN(getPcSit); #endif // EVOL_MAP_SCRIPT -- cgit v1.2.3-70-g09d2