From ce563a50ff4997f4a3f1ccd8bd1fdec5708b3bff Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 24 Jan 2016 17:48:55 +0300 Subject: Add script function for get return code from craft entry. New script function: getcraftcode ENTRY --- src/emap/craft.c | 12 ++++++++++++ src/emap/craft.h | 2 ++ src/emap/craftconf.c | 2 ++ src/emap/craftconf.h | 1 + src/emap/init.c | 1 + src/emap/script.c | 9 ++++++++- src/emap/script.h | 1 + 7 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/emap/craft.c b/src/emap/craft.c index 2ea33bc..7081911 100644 --- a/src/emap/craft.c +++ b/src/emap/craft.c @@ -834,3 +834,15 @@ bool craft_use(TBL_PC *sd, clif->updatestatus(sd, SP_WEIGHT); return true; } + +int craft_get_entry_code(TBL_PC *sd, + const int id) +{ + struct craft_db_entry *entry = idb_get(craftconf_db, id); + if (!entry) + { + ShowError("Craft config entry with id %d not exists.\n", id); + return -1; + } + return entry->return_code; +} diff --git a/src/emap/craft.h b/src/emap/craft.h index 2763907..329dbb4 100644 --- a/src/emap/craft.h +++ b/src/emap/craft.h @@ -42,5 +42,7 @@ struct craft_slot *craft_get_slot(const int id, const int slot); bool craft_validate(TBL_PC *sd, const int id); int craft_find_entry(TBL_PC *sd, const int craftvar, const int flag); bool craft_use_entry(TBL_PC *sd, const int id); +bool craft_use(TBL_PC *sd, const int id); +int craft_get_entry_code(TBL_PC *sd, const int id); #endif // EVOL_MAP_CRAFT diff --git a/src/emap/craftconf.c b/src/emap/craftconf.c index 7afba56..cab5168 100644 --- a/src/emap/craftconf.c +++ b/src/emap/craftconf.c @@ -39,6 +39,7 @@ struct craft_db_entry *craft_create_db_entry(const int id) VECTOR_INIT(entry->required_skills); VECTOR_INIT(entry->required_quests); entry->selected_inventory = NULL; +// entry->return_code = 0; return entry; } @@ -284,6 +285,7 @@ static bool craft_read_db_sub(config_setting_t *craftt, int id, const char *sour readField("Price", price, 0); readField("Lv", level, 0); readField("Flag", flag, -1); + readField("ReturnCode", return_code, 0); if ((t = libconfig->setting_get_member(craftt, "SourceItems")) && config_setting_is_list(t)) { diff --git a/src/emap/craftconf.h b/src/emap/craftconf.h index 235b984..c243218 100644 --- a/src/emap/craftconf.h +++ b/src/emap/craftconf.h @@ -35,6 +35,7 @@ struct craft_db_entry int price; int level; int flag; + int return_code; }; enum craft_field_type diff --git a/src/emap/init.c b/src/emap/init.c index bb732ed..0e1463a 100644 --- a/src/emap/init.c +++ b/src/emap/init.c @@ -107,6 +107,7 @@ HPExport void plugin_init (void) addScriptCommand("deletecraft", "i", deleteCraft); addScriptCommand("findcraftentry", "ii", findCraftEntry); addScriptCommand("usecraft", "i", useCraft); + addScriptCommand("getcraftcode", "i", getCraftCode); addScriptCommand("getcraftslotid", "ii", getCraftSlotId); addScriptCommand("getcraftslotamount", "ii", getCraftSlotAmount); addScriptCommand("validatecraft", "i", validateCraft); diff --git a/src/emap/script.c b/src/emap/script.c index 69c1f4e..bc8c7b2 100644 --- a/src/emap/script.c +++ b/src/emap/script.c @@ -1954,10 +1954,17 @@ BUILDIN(findCraftEntry) BUILDIN(useCraft) { - getSDReturn(0) + getSD() return craft_use(sd, script_getnum(st, 2)); } +BUILDIN(getCraftCode) +{ + getSDReturn(-1) + script_pushint(st, craft_get_entry_code(sd, script_getnum(st, 2))); + return true; +} + BUILDIN(getInvIndexLink) { getSDReturnS("") diff --git a/src/emap/script.h b/src/emap/script.h index 67c20e6..d91cf9d 100644 --- a/src/emap/script.h +++ b/src/emap/script.h @@ -75,5 +75,6 @@ BUILDIN(getInvIndexLink); BUILDIN(emotion); BUILDIN(findCraftEntry); BUILDIN(useCraft); +BUILDIN(getCraftCode); #endif // EVOL_MAP_SCRIPT -- cgit v1.2.3-60-g2f50