diff options
-rw-r--r-- | src/map/clif.c | 35 | ||||
-rw-r--r-- | src/map/guild.c | 29 | ||||
-rw-r--r-- | src/map/guild.h | 2 | ||||
-rw-r--r-- | src/map/party.c | 14 |
4 files changed, 49 insertions, 31 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 12c43972f..a5b66d56e 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -5980,7 +5980,12 @@ int clif_mvp_exp(struct map_session_data *sd, unsigned int exp) } /*========================================== - * ギルド作成可否通知 + * Guild creation result + * R 0167 <flag>.B + * flag = 0 -> "Guild has been created." + * flag = 1 -> "You are already in a Guild." + * flag = 2 -> "That Guild Name already exists." + * flag = 3 -> "You need the neccessary item to create a Guild." *------------------------------------------*/ int clif_guild_created(struct map_session_data *sd,int flag) { @@ -9696,7 +9701,10 @@ void clif_parse_StoragePassword(int fd, struct map_session_data *sd) *------------------------------------------*/ void clif_parse_CreateParty(int fd, struct map_session_data *sd) { - if(map[sd->bl.m].flag.partylock) + char* name = (char*)RFIFOP(fd,2); + name[NAME_LENGTH-1] = '\0'; + + if( map[sd->bl.m].flag.partylock ) {// Party locked. clif_displaymessage(fd, msg_txt(227)); return; @@ -9707,15 +9715,17 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd) return; } - party_create(sd,(char*)RFIFOP(fd,2),0,0); + party_create(sd,name,0,0); } -/*========================================== - * パーティを作る - *------------------------------------------*/ void clif_parse_CreateParty2(int fd, struct map_session_data *sd) { - if(map[sd->bl.m].flag.partylock) + char* name = (char*)RFIFOP(fd,2); + int item1 = RFIFOB(fd,26); + int item2 = RFIFOB(fd,27); + name[NAME_LENGTH-1] = '\0'; + + if( map[sd->bl.m].flag.partylock ) {// Party locked. clif_displaymessage(fd, msg_txt(227)); return; @@ -9726,7 +9736,7 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd) return; } - party_create(sd,(char*)RFIFOP(fd,2),RFIFOB(fd,26),RFIFOB(fd,27)); + party_create(sd,name,item1,item2); } /*========================================== @@ -9951,16 +9961,21 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd) } /*========================================== - * ギルドを作る + * Guild creation request + * S 0165 <account id>.L <guild name>.24S *------------------------------------------*/ void clif_parse_CreateGuild(int fd,struct map_session_data *sd) { + char* name = (char*)RFIFOP(fd,6); + name[NAME_LENGTH-1] = '\0'; + if(map[sd->bl.m].flag.guildlock) { //Guild locked. clif_displaymessage(fd, msg_txt(228)); return; } - guild_create(sd, (char*)RFIFOP(fd,6)); + + guild_create(sd, name); } /*========================================== diff --git a/src/map/guild.c b/src/map/guild.c index aa91ee3ac..f008f7abf 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -397,28 +397,31 @@ int guild_send_dot_remove(struct map_session_data *sd) } //------------------------------------------------------------------------ -// 作成要求 -int guild_create(struct map_session_data *sd,char *name) +int guild_create(struct map_session_data *sd, const char *name) { char tname[NAME_LENGTH]; + struct guild_member m; nullpo_retr(0, sd); safestrncpy(tname, name, NAME_LENGTH); + if( strlen(trim(tname)) == 0 ) + return 0; // empty name - if(sd->status.guild_id || strlen(trim(tname)) == 0) - { - clif_guild_created(sd,1); // すでに所属している + if( sd->status.guild_id ) + {// already in a guild + clif_guild_created(sd,1); return 0; } - if(!battle_config.guild_emperium_check || pc_search_inventory(sd,714) >= 0) { - struct guild_member m; - guild_makemember(&m,sd); - m.position=0; - intif_guild_create(name,&m); - return 1; + if( battle_config.guild_emperium_check && pc_search_inventory(sd,714) == -1 ) + {// item required + clif_guild_created(sd,3); + return 0; } - clif_guild_created(sd,3); // エンペリウムがいない - return 0; + + guild_makemember(&m,sd); + m.position=0; + intif_guild_create(name,&m); + return 1; } // 作成可否 diff --git a/src/map/guild.h b/src/map/guild.h index e6383a3e3..61c02124b 100644 --- a/src/map/guild.h +++ b/src/map/guild.h @@ -44,7 +44,7 @@ int guild_getposition(struct guild *g, struct map_session_data *sd); unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp); int guild_getexp(struct map_session_data *sd,int exp); // [Celest] -int guild_create(struct map_session_data *sd,char *name); +int guild_create(struct map_session_data *sd, const char *name); int guild_created(int account_id,int guild_id); int guild_request_info(int guild_id); int guild_recv_noinfo(int guild_id); diff --git a/src/map/party.c b/src/map/party.c index a008d07eb..22bac7467 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -110,16 +110,16 @@ int party_create(struct map_session_data *sd,char *name,int item,int item2) { struct party_member leader; char tname[NAME_LENGTH]; - safestrncpy(tname, name, NAME_LENGTH); - if(sd->status.party_id) { - clif_party_created(sd,2); - return 0; // "already in a party" + safestrncpy(tname, name, NAME_LENGTH); + if( strlen(trim(tname)) == 0 ) + {// empty name + return 0; } - if(strlen(trim(tname)) == 0) - { - clif_party_created(sd, 1); + if( sd->status.party_id ) + {// already in a party + clif_party_created(sd,2); return 0; } |