From d38a0b63bd821e043435b852a7dea9ad0f89262e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 19 Nov 2014 18:00:54 +0300 Subject: Impliment script commands setq and getq. --- src/map/init.c | 4 ++-- src/map/script.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/map/script.h | 2 ++ src/map/scriptdefines.h | 10 +++++++++- 4 files changed, 58 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/map/init.c b/src/map/init.c index 795a331..dbce79c 100644 --- a/src/map/init.c +++ b/src/map/init.c @@ -109,8 +109,8 @@ HPExport void plugin_init (void) addScriptCommandDeprecated("getlang", "", getLang); addScriptCommandDeprecated("setlang", "i", setLang); addScriptCommand("requestlang", "v", requestLang); - addScriptCommand("getq", "i", dummyInt); - addScriptCommand("setq", "ii", dummy); + addScriptCommand("getq", "i", getq); + addScriptCommand("setq", "ii", setq); addScriptCommand("getnpcdir", "*", dummyInt); addScriptCommand("setnpcdir", "*", dummy); addScriptCommand("rif", "is*", dummyStr); diff --git a/src/map/script.c b/src/map/script.c index 088f1d3..80e43c2 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -14,6 +14,7 @@ #include "../../../map/npc.h" #include "../../../map/pc.h" #include "../../../map/script.h" +#include "../../../map/quest.h" #include "map/script.h" #include "map/scriptdefines.h" @@ -249,3 +250,47 @@ BUILDIN(requestLang) return true; } +BUILDIN(setq) +{ + int i; + getSD(); + + int quest_id = script_getnum(st, 2); + int quest_value = script_getnum(st, 3); + + if (quest->check(sd, quest_id, HAVEQUEST) < 0) + quest->add(sd, quest_id); + ARR_FIND(0, sd->num_quests, i, sd->quest_log[i].quest_id == quest_id); + if (i == sd->num_quests) + { + ShowError("Quest with id=%d not found\n", quest_id); + return false; + } + + sd->quest_log[i].count[0] = quest_value; + sd->save_quest = true; + clif->quest_update_objective(sd, &sd->quest_log[i]); + return true; +} + +BUILDIN(getq) +{ + int i; + getSDReturn(0); + + int quest_id = script_getnum(st, 2); + if (!quest->check(sd, quest_id, HAVEQUEST) < 0) + { + script_pushint(st, 0); + return true; + } + ARR_FIND(0, sd->num_quests, i, sd->quest_log[i].quest_id == quest_id); + if (i == sd->num_quests) + { + ShowError("Quest with id=%d not found\n", quest_id); + script_pushint(st, 0); + return false; + } + script_pushint(st, sd->quest_log[i].count[0]); + return true; +} diff --git a/src/map/script.h b/src/map/script.h index 55104dc..79fcdc4 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -15,5 +15,7 @@ BUILDIN(closeDialog); BUILDIN(shop); BUILDIN(getItemLink); BUILDIN(requestLang); +BUILDIN(getq); +BUILDIN(setq); #endif // EVOL_MAP_SCRIPT diff --git a/src/map/scriptdefines.h b/src/map/scriptdefines.h index 56f32b6..7d2b115 100644 --- a/src/map/scriptdefines.h +++ b/src/map/scriptdefines.h @@ -29,6 +29,14 @@ #define getSD() \ TBL_PC *sd = script->rid2sd(st); \ if (!sd) \ - return 1 + return true + +#define getSDReturn(def) \ + TBL_PC *sd = script->rid2sd(st); \ + if (!sd) \ + { \ + script_pushint(st, def); \ + return true; \ + } #endif // EVOL_MAP_SCRIPTDEFINES -- cgit v1.2.3-70-g09d2