src/map/script.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/map/script.c b/src/map/script.c index be346cb..4d373bd 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -18508,10 +18508,36 @@ bool script_hp_add(char *name, char *args, bool (*func)(struct script_state *st) return script->add_builtin(&buildin, true); } +BUILDIN(guildjoin) { + int guild_id = script_getnum(st,2); + TBL_PC * sd; + struct guild * g; + if ( !( sd = map->charid2sd( script_getnum(st,3) ) ) ) { + script_pushint(st,-1); + return false; + } + if ( sd->status.guild_id ) { + script_pushint(st,-2); + return false; + } + if ( !( g = guild->search( guild_id ) ) ) { + script_pushint(st,-3); + return false; + } + if ( g->max_member >= MAX_GUILD ) { + script_pushint(st,-4); + return false; + } + sd->guild_invite = guild_id; + script_pushint( st, guild->reply_invite( sd, guild_id, 1 ) ); + 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[] = { + BUILDIN_DEF(guildjoin,"ii"), // NPC interaction BUILDIN_DEF(mes,"s*"), BUILDIN_DEF(next,""),