summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2020-01-10 00:40:56 -0300
committerJesusaves <cpntb1@ymail.com>2020-01-10 00:40:56 -0300
commitcff6a8bbfc1fa385c34654d0342e4200c349dcd6 (patch)
tree774ad630deb75c41514c66da09d5d9ea56efcbb5
parenta483dd16b5489b535d9bed9e584c3fee44f0435a (diff)
downloadevol-hercules-cff6a8bbfc1fa385c34654d0342e4200c349dcd6.tar.gz
evol-hercules-cff6a8bbfc1fa385c34654d0342e4200c349dcd6.tar.bz2
evol-hercules-cff6a8bbfc1fa385c34654d0342e4200c349dcd6.tar.xz
evol-hercules-cff6a8bbfc1fa385c34654d0342e4200c349dcd6.zip
[skip ci] trying some gumi code
-rw-r--r--src/emap/init.c3
-rw-r--r--src/emap/map.h6
-rw-r--r--src/emap/script.c4
-rw-r--r--src/emap/script_buildins.c67
-rw-r--r--src/emap/script_buildins.h3
5 files changed, 50 insertions, 33 deletions
diff --git a/src/emap/init.c b/src/emap/init.c
index 3e355f8..45e2d61 100644
--- a/src/emap/init.c
+++ b/src/emap/init.c
@@ -213,8 +213,7 @@ HPExport void plugin_init (void)
addScriptCommand("getitemoptionparambyindex", "ii", getItemOptionParamByIndex);
addScriptCommand("setitemoptionbyindex", "iii*", setItemOptionByIndex);
addScriptCommand("isinstance", "i", isInstance);
- addScriptCommand("getguildpostax","ii",getguildpostax);
- addScriptCommand("getguildpostitle","ii",getguildpostitle);
+ addScriptCommand("getguildposinfo","ii?",getguildposinfo);
do_init_langs();
diff --git a/src/emap/map.h b/src/emap/map.h
index 2d6a25a..7f4b870 100644
--- a/src/emap/map.h
+++ b/src/emap/map.h
@@ -50,4 +50,10 @@ void map_alwaysVisible_send(TBL_PC *sd);
void edo_final_maps_pre(void);
void map_clear_data(void);
+enum guildposinfo_type {
+ GUILDPOSINFO_NAME,
+ GUILDPOSINFO_MODE,
+ GUILDPOSINFO_EXPTAX,
+};
+
#endif // EVOL_MAP_MAP
diff --git a/src/emap/script.c b/src/emap/script.c
index 236461b..79c3bfe 100644
--- a/src/emap/script.c
+++ b/src/emap/script.c
@@ -88,6 +88,10 @@ void escript_hardcoded_constants_pre(void)
{
script->constdb_comment("Evol constants");
script->set_constant("MAX_SLOTS", MAX_SLOTS, false, false);
+ script->constdb_comment("guildposinfo types");
+ script->set_constant("GUILDPOSINFO_NAME", GUILDPOSINFO_NAME, false, false);
+ script->set_constant("GUILDPOSINFO_MODE", GUILDPOSINFO_MODE, false, false);
+ script->set_constant("GUILDPOSINFO_EXPTAX", GUILDPOSINFO_EXPTAX, false, false);
script->constdb_comment(NULL);
eskill_addskill_conststants();
}
diff --git a/src/emap/script_buildins.c b/src/emap/script_buildins.c
index c1cb193..c8ae6c7 100644
--- a/src/emap/script_buildins.c
+++ b/src/emap/script_buildins.c
@@ -2352,48 +2352,57 @@ BUILDIN(isInstance)
/*==========================================
- * Return the EXP tax for (guild, position)
- * -1 if not found
+ * Return data regarding a guild position
+ * getguildposinfo(arg, position ID, <guild>)
*------------------------------------------*/
-BUILDIN(getguildpostax)
+BUILDIN(getguildposinfo)
{
int guild_id, gpos;
struct guild* g;
- guild_id = script_getnum(st,2);
+ enum guildposinfo_type type = script_getnum(st, 2);
gpos = script_getnum(st,3);
- if( ( g = guild->search(guild_id) ) != NULL )
- {
- script_pushint(st,g->position[gpos].exp_mode);
- }
- else
- {
- script_pushint(st,-1);
+ if (script_hasdata(st, 4)) {
+ if (script_isstringtype(st, 4)) {
+ const char *guild_name = script_getstr(st, 4);
+ g = guild->searchname(guild_name);
+ } else {
+ int guild_id = script_getnum(st, 4);
+ g = guild->search(guild_id);
+ }
+ } else {
+ struct map_session_data *sd = script->rid2sd(st);
+ g = sd ? sd->guild : NULL;
}
- return true;
-}
-
-
-/*==========================================
- * Return the title (guild, position)
- * "" if not found
- *------------------------------------------*/
-BUILDIN(getguildpostitle)
-{
- int guild_id, gpos;
- struct guild* g;
-
- guild_id = script_getnum(st,2);
- gpos = script_getnum(st,3);
- if( ( g = guild->search(guild_id) ) != NULL )
+ if( g == NULL )
{
- script_pushstrcopy(st, g->position[gpos].name);
+ // guild does not exist
+ switch (type) {
+ case GUILDPOSINFO_NAME:
+ script_pushconststr(st, "");
+ break;
+ default:
+ script_pushint(st, -1);
+ }
}
else
{
- script_pushstr(st,"");
+ switch (type) {
+ case GUILDPOSINFO_NAME:
+ script_pushstrcopy(st, g->position[gpos].name);
+ break;
+ case GUILDPOSINFO_MODE:
+ script_pushint(st, g->position[gpos].mode);
+ break;
+ case GUILDPOSINFO_EXPTAX:
+ script_pushint(st, g->position[gpos].exp_mode);
+ break;
+ default:
+ ShowError("script:getguildinfo: unknown info type!\n");
+ return false;
+ }
}
return true;
}
diff --git a/src/emap/script_buildins.h b/src/emap/script_buildins.h
index 87d63f8..8e9bc30 100644
--- a/src/emap/script_buildins.h
+++ b/src/emap/script_buildins.h
@@ -99,7 +99,6 @@ BUILDIN(getItemOptionValueByIndex);
BUILDIN(getItemOptionParamByIndex);
BUILDIN(setItemOptionByIndex);
BUILDIN(isInstance);
-BUILDIN(getguildpostax);
-BUILDIN(getguildpostitle);
+BUILDIN(getguildposinfo);
#endif // EVOL_MAP_SCRIPT_BUILDINS