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(); + +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,""),