diff options
author | Haru <haru@dotalux.com> | 2018-07-24 03:17:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-24 03:17:45 +0200 |
commit | 567d218287a59154d40b6c69b4dd339640ca92b6 (patch) | |
tree | 850cc2b40e2c20ed1ecb9b56460594251ea2d12d | |
parent | bb301746703582be9f7c30b969f03c1ab14d1228 (diff) | |
parent | 053dac2f0e62b64877e3dd04cc531452bce9d4aa (diff) | |
download | hercules-567d218287a59154d40b6c69b4dd339640ca92b6.tar.gz hercules-567d218287a59154d40b6c69b4dd339640ca92b6.tar.bz2 hercules-567d218287a59154d40b6c69b4dd339640ca92b6.tar.xz hercules-567d218287a59154d40b6c69b4dd339640ca92b6.zip |
Merge pull request #2130 from mekolat/reloadconst
reload the const db on script reload
-rw-r--r-- | db/constants.conf | 8 | ||||
-rw-r--r-- | src/map/script.c | 26 | ||||
-rw-r--r-- | src/map/script.h | 2 | ||||
-rw-r--r-- | src/plugins/HPMHooking/HPMHooking.Defs.inc | 4 | ||||
-rw-r--r-- | src/plugins/HPMHooking/HPMHooking_map.Hooks.inc | 12 |
5 files changed, 22 insertions, 30 deletions
diff --git a/db/constants.conf b/db/constants.conf index e51ccb9bd..b7bc24985 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -33,15 +33,9 @@ constants_db: { ************* Entry structure (full) ************************************* Identifier: { Value: value // (int) - Parameter: true // (boolean) Defaults to false. Deprecated: true // (boolean) Defaults to false. } **************************************************************************/ -// NOTE: -// Parameters are special in that they retrieve certain runtime values -// depending on the specified ID in field Value. Depending on the -// implementation values assigned by scripts to parameters will affect -// runtime values, such as Zeny, as well (see pc_readparam/pc_setparam). comment__: "Weekdays" SUNDAY: 0 @@ -1397,7 +1391,7 @@ constants_db: { SC_TUNAPARTY: 649 SC_SHRIMP: 650 SC_FRESHSHRIMP: 651 - + SC_DAILYSENDMAILCNT: 653 // Summer 2 Costume diff --git a/src/map/script.c b/src/map/script.c index e678a7738..260a9848c 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -2258,7 +2258,7 @@ static void script_set_constant(const char *name, int value, bool is_parameter, { int n = script->add_str(name); - if( script->str_data[n].type == C_NOP ) {// new + if (script->str_data[n].type == C_NOP) { script->str_data[n].type = is_parameter ? C_PARAM : C_INT; script->str_data[n].val = value; script->str_data[n].deprecated = is_deprecated ? 1 : 0; @@ -2302,7 +2302,7 @@ static void script_set_constant2(const char *name, int value, bool is_parameter, /** * Loads the constants database from constants.conf */ -static void read_constdb(void) +static void read_constdb(bool reload) { struct config_t constants_conf; char filepath[256]; @@ -2321,7 +2321,6 @@ static void read_constdb(void) } while ((t = libconfig->setting_get_elem(cdb, i++))) { - bool is_parameter = false; bool is_deprecated = false; int value = 0; const char *name = config_setting_name(t); @@ -2352,10 +2351,6 @@ static void read_constdb(void) continue; } value = i32; - if (libconfig->setting_lookup_bool(t, "Parameter", &i32)) { - if (i32 != 0) - is_parameter = true; - } if (libconfig->setting_lookup_bool(t, "Deprecated", &i32)) { if (i32 != 0) is_deprecated = true; @@ -2363,9 +2358,13 @@ static void read_constdb(void) } else { value = libconfig->setting_get_int(t); } - if (is_parameter) - ShowWarning("read_constdb: Defining parameters in the constants configuration is deprecated and will no longer be possible in a future version. Parameters should be defined in source. (parameter = '%s')\n", name); - script->set_constant(name, value, is_parameter, is_deprecated); + + if (reload) { + int n = script->add_str(name); + script->str_data[n].type = C_NOP; // ensures it will be overwritten + } + + script->set_constant(name, value, false, is_deprecated); } script->constdb_comment(NULL); libconfig->destroy(&constants_conf); @@ -5593,7 +5592,7 @@ static void do_init_script(bool minimal) VECTOR_INIT(script->hqi); script->parse_builtin(); - script->read_constdb(); + script->read_constdb(false); script->load_parameters(); script->hardcoded_constants(); @@ -5645,12 +5644,11 @@ static int script_reload(void) script->parse_cleanup_timer_id = INVALID_TIMER; } - mapreg->reload(); - + script->read_constdb(true); itemdb->name_constants(); - clan->set_constants(); + mapreg->reload(); sysinfo->vcsrevision_reload(); return 0; diff --git a/src/map/script.h b/src/map/script.h index 4ad9531b7..fe8bcf00b 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -872,7 +872,7 @@ struct script_interface { void (*add_translatable_string) (const struct script_string_buf *string, const char *start_point); const char *(*parse_expr) (const char *p); const char *(*parse_line) (const char *p); - void (*read_constdb) (void); + void (*read_constdb) (bool reload); void (*constdb_comment) (const char *comment); void (*load_parameters) (void); const char* (*print_line) (StringBuf *buf, const char *p, const char *mark, int line); diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 3bc6956ae..31a7919bc 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -6508,8 +6508,8 @@ typedef const char* (*HPMHOOK_pre_script_parse_expr) (const char **p); typedef const char* (*HPMHOOK_post_script_parse_expr) (const char* retVal___, const char *p); typedef const char* (*HPMHOOK_pre_script_parse_line) (const char **p); typedef const char* (*HPMHOOK_post_script_parse_line) (const char* retVal___, const char *p); -typedef void (*HPMHOOK_pre_script_read_constdb) (void); -typedef void (*HPMHOOK_post_script_read_constdb) (void); +typedef void (*HPMHOOK_pre_script_read_constdb) (bool *reload); +typedef void (*HPMHOOK_post_script_read_constdb) (bool reload); typedef void (*HPMHOOK_pre_script_constdb_comment) (const char **comment); typedef void (*HPMHOOK_post_script_constdb_comment) (const char *comment); typedef void (*HPMHOOK_pre_script_load_parameters) (void); diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index d2d3c515a..669230403 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -67392,14 +67392,14 @@ const char* HP_script_parse_line(const char *p) { } return retVal___; } -void HP_script_read_constdb(void) { +void HP_script_read_constdb(bool reload) { int hIndex = 0; if (HPMHooks.count.HP_script_read_constdb_pre > 0) { - void (*preHookFunc) (void); + void (*preHookFunc) (bool *reload); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_script_read_constdb_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_script_read_constdb_pre[hIndex].func; - preHookFunc(); + preHookFunc(&reload); } if (*HPMforce_return) { *HPMforce_return = false; @@ -67407,13 +67407,13 @@ void HP_script_read_constdb(void) { } } { - HPMHooks.source.script.read_constdb(); + HPMHooks.source.script.read_constdb(reload); } if (HPMHooks.count.HP_script_read_constdb_post > 0) { - void (*postHookFunc) (void); + void (*postHookFunc) (bool reload); for (hIndex = 0; hIndex < HPMHooks.count.HP_script_read_constdb_post; hIndex++) { postHookFunc = HPMHooks.list.HP_script_read_constdb_post[hIndex].func; - postHookFunc(); + postHookFunc(reload); } } return; |