From e2f6d8b056e608fee4242dcc30052309f048178c Mon Sep 17 00:00:00 2001 From: Kenpachi Developer Date: Fri, 21 Feb 2020 00:29:22 +0100 Subject: Make getiteminfo() script command usable with item name, too --- src/map/script.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index c1eb2e8b7..22ab733a1 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -14788,9 +14788,15 @@ static BUILDIN(getitemslots) *------------------------------------------*/ static BUILDIN(getiteminfo) { - int item_id = script_getnum(st, 2); int n = script_getnum(st, 3); - struct item_data *it = itemdb->exists(item_id); + struct item_data *it; + + if (script_isstringtype(st, 2)) { /// Item name. + const char *name = script_getstr(st, 2); + it = itemdb->search_name(name); + } else { /// Item ID. + it = itemdb->exists(script_getnum(st, 2)); + } if (it == NULL) { script_pushint(st, -1); @@ -26970,7 +26976,7 @@ static void script_parse_builtin(void) BUILDIN_DEF(setnpcdisplay,"sv??"), BUILDIN_DEF(compare,"ss"), // Lordalfa - To bring strstr to scripting Engine. BUILDIN_DEF(strcmp,"ss"), - BUILDIN_DEF(getiteminfo,"ii"), //[Lupus] returns Items Buy / sell Price, etc info + BUILDIN_DEF(getiteminfo,"vi"), //[Lupus] returns Items Buy / sell Price, etc info BUILDIN_DEF(setiteminfo,"iii"), //[Lupus] set Items Buy / sell Price, etc info BUILDIN_DEF(getequipcardid,"ii"), //[Lupus] returns CARD ID or other info from CARD slot N of equipped item BUILDIN_DEF(getequippedoptioninfo, "i"), -- cgit v1.2.3-60-g2f50 From ba1f92b9f4fdc9109193a7d9f01353bd10701e62 Mon Sep 17 00:00:00 2001 From: Kenpachi Developer Date: Fri, 21 Feb 2020 00:35:38 +0100 Subject: Add ITEMINFO_ID, ITEMINFO_AEGISNAME and ITEMINFO_NAME constants --- src/map/script.c | 3 +++ src/map/script.h | 3 +++ 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index 22ab733a1..b7eb9ecaf 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -27621,6 +27621,9 @@ static void script_hardcoded_constants(void) script->set_constant("ITEMINFO_ITEM_USAGE_FLAG", ITEMINFO_ITEM_USAGE_FLAG, false, false); script->set_constant("ITEMINFO_ITEM_USAGE_OVERRIDE", ITEMINFO_ITEM_USAGE_OVERRIDE, false, false); script->set_constant("ITEMINFO_GM_LV_TRADE_OVERRIDE", ITEMINFO_GM_LV_TRADE_OVERRIDE, false, false); + script->set_constant("ITEMINFO_ID", ITEMINFO_ID, false, false); + script->set_constant("ITEMINFO_AEGISNAME", ITEMINFO_AEGISNAME, false, false); + script->set_constant("ITEMINFO_NAME", ITEMINFO_NAME, false, false); script->constdb_comment("getmercinfo options"); script->set_constant("MERCINFO_ID,", MERCINFO_ID, false, false); diff --git a/src/map/script.h b/src/map/script.h index 857d22c61..ed860368c 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -484,6 +484,9 @@ enum script_iteminfo_types { ITEMINFO_ITEM_USAGE_FLAG, ITEMINFO_ITEM_USAGE_OVERRIDE, ITEMINFO_GM_LV_TRADE_OVERRIDE, + ITEMINFO_ID, + ITEMINFO_AEGISNAME, + ITEMINFO_NAME, ITEMINFO_MAX }; -- cgit v1.2.3-60-g2f50 From 63d0b59fa5265b2ab6b9322bf03f35b6fbf71cd2 Mon Sep 17 00:00:00 2001 From: Kenpachi Developer Date: Fri, 21 Feb 2020 00:40:29 +0100 Subject: Add new ITEMINFO_* constants to getiteminfo() script command --- src/map/script.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index b7eb9ecaf..4c485ec28 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -14934,6 +14934,15 @@ static BUILDIN(getiteminfo) case ITEMINFO_GM_LV_TRADE_OVERRIDE: script_pushint(st, it->gm_lv_trade_override); break; + case ITEMINFO_ID: + script_pushint(st, it->nameid); + break; + case ITEMINFO_AEGISNAME: + script_pushstr(st, it->name); + break; + case ITEMINFO_NAME: + script_pushstr(st, it->jname); + break; default: ShowError("buildin_getiteminfo: Invalid item type %d.\n", n); script_pushint(st,-1); -- cgit v1.2.3-60-g2f50 From 390ef85fc3da61d3014a2d72393bd9d8fb333004 Mon Sep 17 00:00:00 2001 From: Kenpachi Developer Date: Fri, 21 Feb 2020 02:40:04 +0100 Subject: Apply code style to BUILDIN(getiteminfo) function --- src/map/script.c | 51 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index 4c485ec28..0e021f2c8 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -14780,15 +14780,17 @@ static BUILDIN(getitemslots) return true; } -// TODO: add matk here if needed - -/*========================================== - * Returns some values of an item [Lupus] - * Price, Weight, etc... - *------------------------------------------*/ +/** + * Returns various information about an item. + * + * @code{.herc} + * getiteminfo(, ); + * getiteminfo("", ); + * @endcode + * + **/ static BUILDIN(getiteminfo) { - int n = script_getnum(st, 3); struct item_data *it; if (script_isstringtype(st, 2)) { /// Item name. @@ -14803,7 +14805,9 @@ static BUILDIN(getiteminfo) return true; } - switch (n) { + int type = script_getnum(st, 3); + + switch (type) { case ITEMINFO_BUYPRICE: script_pushint(st, it->value_buy); break; @@ -14915,16 +14919,24 @@ static BUILDIN(getiteminfo) case ITEMINFO_STACK_AMOUNT: script_pushint(st, it->stack.amount); break; - case ITEMINFO_STACK_FLAG: - { - int stack_flag = 0; - if (it->stack.inventory != 0) stack_flag |= 1; - if (it->stack.cart != 0) stack_flag |= 2; - if (it->stack.storage != 0) stack_flag |= 4; - if (it->stack.guildstorage != 0) stack_flag |= 8; - script_pushint(st, stack_flag); - } + case ITEMINFO_STACK_FLAG: { + int stack_flag = 0; + + if (it->stack.inventory != 0) + stack_flag |= 1; + + if (it->stack.cart != 0) + stack_flag |= 2; + + if (it->stack.storage != 0) + stack_flag |= 4; + + if (it->stack.guildstorage != 0) + stack_flag |= 8; + + script_pushint(st, stack_flag); break; + } case ITEMINFO_ITEM_USAGE_FLAG: script_pushint(st, it->item_usage.flag); break; @@ -14944,10 +14956,11 @@ static BUILDIN(getiteminfo) script_pushstr(st, it->jname); break; default: - ShowError("buildin_getiteminfo: Invalid item type %d.\n", n); - script_pushint(st,-1); + ShowError("buildin_getiteminfo: Invalid item info type %d.\n", type); + script_pushint(st, -1); return false; } + return true; } -- cgit v1.2.3-60-g2f50