summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-03-12 02:21:26 -0300
committerJesusaves <cpntb1@ymail.com>2019-03-12 02:21:26 -0300
commitc4f76bf3561041a727c11d34e6644e13574af596 (patch)
treebd2663428af54552cadf8d8570c72f3a9ecc97a9
parentd6de86a384fb97861de364628c79924fff558144 (diff)
downloadevol-hercules-c4f76bf3561041a727c11d34e6644e13574af596.tar.gz
evol-hercules-c4f76bf3561041a727c11d34e6644e13574af596.tar.bz2
evol-hercules-c4f76bf3561041a727c11d34e6644e13574af596.tar.xz
evol-hercules-c4f76bf3561041a727c11d34e6644e13574af596.zip
Implement guild info functions on TMW2.
At least it wasn't difficult >_>
-rw-r--r--src/emap/init.c7
-rw-r--r--src/emap/script_buildins.c123
-rw-r--r--src/emap/script_buildins.h7
3 files changed, 137 insertions, 0 deletions
diff --git a/src/emap/init.c b/src/emap/init.c
index 31656ef..d8c53b0 100644
--- a/src/emap/init.c
+++ b/src/emap/init.c
@@ -209,6 +209,13 @@ HPExport void plugin_init (void)
addScriptCommand("setitemoptionbyindex", "iii*", setItemOptionByIndex);
addScriptCommand("isinstance", "i", isInstance);
+ // TMW2 Custom Script Commands
+ addScriptCommand("getguildinfo","i",getguildinfo);
+ addScriptCommand("getguildlvl","i",getguildlvl);
+ addScriptCommand("getguildavg","i",getguildavg);
+ addScriptCommand("getguildexp","i",getguildexp);
+ addScriptCommand("getguildnxp","i",getguildnxp);
+
do_init_langs();
addPacket(0x7530, 22, map_parse_version, hpClif_Parse);
diff --git a/src/emap/script_buildins.c b/src/emap/script_buildins.c
index e1c9123..2bdc48d 100644
--- a/src/emap/script_buildins.c
+++ b/src/emap/script_buildins.c
@@ -14,7 +14,9 @@
#include "map/achievement.h"
#include "map/chat.h"
#include "map/chrif.h"
+#include "map/guild.h"
#include "map/instance.h"
+#include "map/mapreg.h"
#include "map/npc.h"
#include "map/pc.h"
#include "map/script.h"
@@ -2308,3 +2310,124 @@ BUILDIN(isInstance)
script_pushint(st, instance->valid(instance_id) ? 1 : 0);
return true;
}
+
+///////////////////////////////////////////////////////////////////////////////
+// TMW2 Custom Commands
+///////////////////////////////////////////////////////////////////////////////
+
+/*==========================================
+ * 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;
+}
+
+/*==========================================
+ * Return the level of the @guild_id
+ * -1 if not found
+ *------------------------------------------*/
+BUILDIN(getguildlvl)
+{
+ int guild_id;
+ struct guild* g;
+
+ guild_id = script_getnum(st,2);
+
+ if( ( g = guild->search(guild_id) ) != NULL )
+ {
+ script_pushint(st,g->guild_lv);
+ }
+ else
+ {
+ script_pushint(st,-1);
+ }
+ return true;
+}
+
+
+/*==========================================
+ * Return the average player level of the @guild_id
+ * -1 if not found
+ *------------------------------------------*/
+BUILDIN(getguildavg)
+{
+ int guild_id;
+ struct guild* g;
+
+ guild_id = script_getnum(st,2);
+
+ if( ( g = guild->search(guild_id) ) != NULL )
+ {
+ script_pushint(st,g->average_lv);
+ }
+ else
+ {
+ script_pushint(st,-1);
+ }
+ return true;
+}
+
+
+/*==========================================
+ * Return the experience of the @guild_id
+ * -1 if not found
+ *------------------------------------------*/
+BUILDIN(getguildexp)
+{
+ int guild_id;
+ struct guild* g;
+
+ guild_id = script_getnum(st,2);
+
+ if( ( g = guild->search(guild_id) ) != NULL )
+ {
+ script_pushint(st,g->exp);
+ }
+ else
+ {
+ script_pushint(st,-1);
+ }
+ return true;
+}
+
+
+/*==========================================
+ * Return the experience to level up for the @guild_id
+ * -1 if not found
+ *------------------------------------------*/
+BUILDIN(getguildnxp)
+{
+ int guild_id;
+ struct guild* g;
+
+ guild_id = script_getnum(st,2);
+
+ if( ( g = guild->search(guild_id) ) != NULL )
+ {
+ script_pushint(st,g->next_exp);
+ }
+ else
+ {
+ script_pushint(st,-1);
+ }
+ return true;
+}
diff --git a/src/emap/script_buildins.h b/src/emap/script_buildins.h
index a72a035..5961150 100644
--- a/src/emap/script_buildins.h
+++ b/src/emap/script_buildins.h
@@ -99,4 +99,11 @@ BUILDIN(getItemOptionParamByIndex);
BUILDIN(setItemOptionByIndex);
BUILDIN(isInstance);
+// TMW2 Build Ins
+BUILDIN(getguildinfo);
+BUILDIN(getguildlvl);
+BUILDIN(getguildavg);
+BUILDIN(getguildexp);
+BUILDIN(getguildnxp);
+
#endif // EVOL_MAP_SCRIPT_BUILDINS