summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-10-14 19:20:10 -0300
committerJesusaves <cpntb1@ymail.com>2019-10-14 19:20:10 -0300
commitae39b2f1a36b6dc0a29389e441f77eba724aa89d (patch)
tree91bd4ceac48d7c49e929a117963e460ad8433abd
parent7b7ff83feaef6e5a94889e3dc506f1518733c2ca (diff)
downloadplugin-ae39b2f1a36b6dc0a29389e441f77eba724aa89d.tar.gz
plugin-ae39b2f1a36b6dc0a29389e441f77eba724aa89d.tar.bz2
plugin-ae39b2f1a36b6dc0a29389e441f77eba724aa89d.tar.xz
plugin-ae39b2f1a36b6dc0a29389e441f77eba724aa89d.zip
Expose to script engine: getguildinfo() and getguildmembers()
These will retrieve data from guild and/or guild members (name and position), but it still records in $@variables which are deprecated upstream.
-rw-r--r--src/emap/init.c2
-rw-r--r--src/emap/script_buildins.c70
-rw-r--r--src/emap/script_buildins.h2
3 files changed, 74 insertions, 0 deletions
diff --git a/src/emap/init.c b/src/emap/init.c
index 0e83b9a..0a9cb15 100644
--- a/src/emap/init.c
+++ b/src/emap/init.c
@@ -210,6 +210,8 @@ HPExport void plugin_init (void)
addScriptCommand("getitemoptionparambyindex", "ii", getItemOptionParamByIndex);
addScriptCommand("setitemoptionbyindex", "iii*", setItemOptionByIndex);
addScriptCommand("isinstance", "i", isInstance);
+ addScriptCommand("getguildinfo","i",getguildinfo);
+ addScriptCommand("getguildmembers","i?",getguildmembers);
do_init_langs();
diff --git a/src/emap/script_buildins.c b/src/emap/script_buildins.c
index c0a7e1b..fef5d7e 100644
--- a/src/emap/script_buildins.c
+++ b/src/emap/script_buildins.c
@@ -2348,3 +2348,73 @@ BUILDIN(isInstance)
script_pushint(st, instance->valid(instance_id) ? 1 : 0);
return true;
}
+
+/*==========================================
+ * Return the data of the @guild_id
+ * null if not found
+ *------------------------------------------*/
+BUILDIN(getguildinfo)
+{
+ int guild_id;
+ struct guild* g;
+
+ guild_id = script_getnum(st,2);
+
+ if( ( g = guild->search(guild_id) ) != NULL )
+ {
+ mapreg->setreg(reference_uid(script->add_variable("$@guildinfo_lvl"), guild_id),g->guild_lv);
+ mapreg->setreg(reference_uid(script->add_variable("$@guildinfo_avg"), guild_id),g->average_lv);
+ mapreg->setreg(reference_uid(script->add_variable("$@guildinfo_exp"), guild_id),g->exp);
+ mapreg->setreg(reference_uid(script->add_variable("$@guildinfo_nxp"), guild_id),g->next_exp);
+ }
+ else
+ {
+ //script_pushconststr(st,"null");
+ script_pushint(st,0);
+ }
+ return true;
+}
+
+/*==========================================
+ * Get the information of the members of a guild by type.
+ * getguildmember <guild_id>{,<type>};
+ * @param guild_id: ID of guild
+ * @param type:
+ * 0 : name (default)
+ * 1 : character ID
+ * 2 : account ID
+ *------------------------------------------*/
+BUILDIN(getguildmembers)
+{
+ struct guild *g = NULL;
+ int j = 0;
+
+ g = guild->search(script_getnum(st,2));
+
+ if (g) {
+ int i, type = 0;
+
+ if (script_hasdata(st,3))
+ type = script_getnum(st,3);
+
+ for ( i = 0; i < MAX_GUILD; i++ ) {
+ if ( g->member[i].account_id ) {
+ switch (type) {
+ case 2:
+ mapreg->setreg(reference_uid(script->add_variable("$@guildmemberaid"), j),g->member[i].account_id);
+ break;
+ case 1:
+ mapreg->setreg(reference_uid(script->add_variable("$@guildmembercid"), j), g->member[i].char_id);
+ break;
+ default:
+ mapreg->setregstr(reference_uid(script->add_variable("$@guildmembername$"), j), g->member[i].name);
+ break;
+ }
+ mapreg->setreg(reference_uid(script->add_variable("$@guildmemberpos"), j),g->member[i].position);
+ j++;
+ }
+ }
+ }
+ mapreg->setreg(script->add_variable("$@guildmembercount"), j);
+ return true;
+}
diff --git a/src/emap/script_buildins.h b/src/emap/script_buildins.h
index fab271e..3ef7ec9 100644
--- a/src/emap/script_buildins.h
+++ b/src/emap/script_buildins.h
@@ -99,5 +99,7 @@ BUILDIN(getItemOptionValueByIndex);
BUILDIN(getItemOptionParamByIndex);
BUILDIN(setItemOptionByIndex);
BUILDIN(isInstance);
+BUILDIN(getguildinfo);
+BUILDIN(getguildmembers);
#endif // EVOL_MAP_SCRIPT_BUILDINS