db/const.txt | 14 ++++++++++++++
doc/script_commands.txt | 17 +++++++++++++++++
src/map/chat.h | 4 +++-
src/map/script.c | 25 +++++++++++++++++++++++++
4 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/db/const.txt b/db/const.txt
index 577fbc2..2149c7d 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -3337,3 +3337,17 @@ NST_ZENY 0
NST_CASH 1
NST_MARKET 2
NST_CUSTOM 3
+
+VAR_PACKETVER 0
+VAR_MAX_LEVEL 1
+VAR_MAX_STORAGE 2
+VAR_MAX_INVENTORY 3
+VAR_MAX_ZENY 4
+VAR_MAX_PARTY 5
+VAR_MAX_GUILD 6
+VAR_MAX_GUILDLEVEL 7
+VAR_MAX_GUILD_STORAGE 8
+VAR_MAX_BG_MEMBERS 9
+//VAR_VIP_SCRIPT 10
+//VAR_MIN_STORAGE 11
+VAR_MAX_CHATROOM_SIZE 12
\ No newline at end of file
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index aa86984..63ce081 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -3864,6 +3864,23 @@ by the type parameter.
6 - RENEWAL_ASPD (renewal ASPD)
---------------------------------------
+
+*getserverdef(<type>);
+
+Returns a server definition. Valid types are listed in 'db/const.txt':
+ VAR_PACKETVER 0
+ VAR_MAX_LEVEL 1
+ VAR_MAX_STORAGE 2
+ VAR_MAX_INVENTORY 3
+ VAR_MAX_ZENY 4
+ VAR_MAX_PARTY 5
+ VAR_MAX_GUILD 6
+ VAR_MAX_GUILDLEVEL 7
+ VAR_MAX_GUILD_STORAGE 8
+ VAR_MAX_BG_MEMBERS 9
+ VAR_MAX_CHATROOM_SIZE 12
+
+---------------------------------------
\\
3,1.- Item-related commands
\\
diff --git a/src/map/chat.h b/src/map/chat.h
index 71e5a11..3460713 100644
--- a/src/map/chat.h
+++ b/src/map/chat.h
@@ -7,6 +7,8 @@
#include "map.h" // struct block_list, CHATROOM_TITLE_SIZE
+#define MAX_CHATROOM_SIZE 20
+
struct map_session_data;
struct chat_data;
@@ -21,7 +23,7 @@ struct chat_data {
uint32 zeny; // required zeny to join
uint32 minLvl; // minimum base level to join
uint32 maxLvl; // maximum base level allowed to join
- struct map_session_data* usersd[20];
+ struct map_session_data* usersd[MAX_CHATROOM_SIZE];
struct block_list* owner;
char npc_event[EVENT_NAME_LENGTH];
/* isn't this a waste? there is a enormous overhead, wouldn't something like skill_blockpc_start be better here? [Ind] */
diff --git a/src/map/script.c b/src/map/script.c
index 4fb4e72..1addf04 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -18502,11 +18502,36 @@ bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st)
return script->add_builtin(&buildin, true);
}
+BUILDIN(getserverdef) {
+ int type = script_getnum(st,2);
+ switch(type){
+ case 0: script_pushint(st,PACKETVER); break;
+ case 1: script_pushint(st,MAX_LEVEL); break;
+ case 2: script_pushint(st,MAX_STORAGE); break;
+ case 3: script_pushint(st,MAX_INVENTORY); break;
+ case 4: script_pushint(st,MAX_ZENY); break;
+ case 5: script_pushint(st,MAX_PARTY); break;
+ case 6: script_pushint(st,MAX_GUILD); break;
+ case 7: script_pushint(st,MAX_GUILDLEVEL); break;
+ case 8: script_pushint(st,MAX_GUILD_STORAGE); break;
+ case 9: script_pushint(st,MAX_BG_MEMBERS); break;
+// case 10: script_pushint(st,VIP_SCRIPT); break;
+// case 11: script_pushint(st,MIN_STORAGE); break;
+ case 12: script_pushint(st,MAX_CHATROOM_SIZE); break;
+ default:
+ ShowWarning("buildin_getserverdef: unknown type %d.\n", type);
+ script_pushint(st,0);
+ break;
+ }
+ return true;
+}
+
#define BUILDIN_DEF(x,args) { buildin_ ## x , #x , args }
#define BUILDIN_DEF2(x,x2,args) { buildin_ ## x , x2 , args }
void script_parse_builtin(void) {
struct script_function BUILDIN[] = {
// NPC interaction
+ BUILDIN_DEF(getserverdef,"i"),
BUILDIN_DEF(mes,"s*"),
BUILDIN_DEF(next,""),
BUILDIN_DEF(close,""),