From 353b697f724a54e5d4f578b0509d8d6e6959d299 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 31 May 2006 20:37:39 +0000 Subject: - Made the char_name_option char_athena.conf setting apply to parties and guilds as well. It cannot be applied to pets yet without adding a change-name-request interserver packet. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6897 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/char/char.h | 3 +++ src/char/int_guild.c | 16 ++++++++++++++++ src/char/int_party.c | 16 ++++++++++++++++ src/char_sql/char.h | 2 ++ src/char_sql/int_guild.c | 15 +++++++++++++++ src/char_sql/int_party.c | 15 +++++++++++++++ 6 files changed, 67 insertions(+) (limited to 'src') diff --git a/src/char/char.h b/src/char/char.h index bd2a786e6..dfec9104f 100644 --- a/src/char/char.h +++ b/src/char/char.h @@ -39,6 +39,9 @@ int request_accreg2(int account_id, int char_id); int char_parse_Registry(int account_id, int char_id, unsigned char *buf, int len); int save_accreg2(unsigned char *buf, int len); int char_account_reg_reply(int fd,int account_id,int char_id); + +extern int char_name_option; +extern char char_name_letters[]; extern int autosave_interval; extern char db_path[]; diff --git a/src/char/int_guild.c b/src/char/int_guild.c index 6747e43e6..3a3dd6529 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -948,6 +948,22 @@ int mapif_parse_CreateGuild(int fd, int account_id, char *name, struct guild_mem mapif_guild_created(fd, account_id, NULL); return 0; } + + // Check Authorised letters/symbols in the name of the character + if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorised + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) == NULL) { + mapif_guild_created(fd,account_id,NULL); + return 0; + } + } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) != NULL) { + mapif_guild_created(fd,account_id,NULL); + return 0; + } + } + g = (struct guild *) aCalloc(sizeof(struct guild), 1); if (g == NULL) { ShowFatalError("int_guild: CreateGuild: out of memory !\n"); diff --git a/src/char/int_party.c b/src/char/int_party.c index 99c568a50..a16735b64 100644 --- a/src/char/int_party.c +++ b/src/char/int_party.c @@ -430,6 +430,22 @@ int mapif_parse_CreateParty(int fd, int account_id, int char_id, char *name, cha mapif_party_created(fd, account_id, char_id, NULL); return 0; } + + // Check Authorised letters/symbols in the name of the character + if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorised + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) == NULL) { + mapif_party_created(fd, account_id, char_id, NULL); + return 0; + } + } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) != NULL) { + mapif_party_created(fd, account_id, char_id, NULL); + return 0; + } + } + p = (struct party *) aCalloc(sizeof(struct party), 1); if (p == NULL) { ShowFatalError("int_party: out of memory !\n"); diff --git a/src/char_sql/char.h b/src/char_sql/char.h index 51c4426db..620e5ccd1 100644 --- a/src/char_sql/char.h +++ b/src/char_sql/char.h @@ -59,6 +59,8 @@ int char_child(int parent_id, int child_id); int request_accreg2(int account_id, int char_id); int save_accreg2(unsigned char* buf, int len); +extern int char_name_option; +extern char char_name_letters[]; extern bool char_gm_read; extern int autosave_interval; extern int save_log; diff --git a/src/char_sql/int_guild.c b/src/char_sql/int_guild.c index ed30c7031..1849ba130 100644 --- a/src/char_sql/int_guild.c +++ b/src/char_sql/int_guild.c @@ -1185,6 +1185,21 @@ int mapif_parse_CreateGuild(int fd,int account_id,char *name,struct guild_member mapif_guild_created(fd,account_id,NULL); return 0; } + // Check Authorised letters/symbols in the name of the character + if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorised + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) == NULL) { + mapif_guild_created(fd,account_id,NULL); + return 0; + } + } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) != NULL) { + mapif_guild_created(fd,account_id,NULL); + return 0; + } + } + g = (struct guild *)aMalloc(sizeof(struct guild)); memset(g,0,sizeof(struct guild)); diff --git a/src/char_sql/int_party.c b/src/char_sql/int_party.c index 2bdb13aa9..3d6943839 100644 --- a/src/char_sql/int_party.c +++ b/src/char_sql/int_party.c @@ -499,6 +499,21 @@ int mapif_parse_CreateParty(int fd, int account_id, int char_id, char *name, cha mapif_party_created(fd,account_id,char_id,NULL); return 0; } + // Check Authorised letters/symbols in the name of the character + if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorised + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) == NULL) { + mapif_party_created(fd,account_id,char_id,NULL); + return 0; + } + } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden + for (i = 0; i < NAME_LENGTH && name[i]; i++) + if (strchr(char_name_letters, name[i]) != NULL) { + mapif_party_created(fd,account_id,char_id,NULL); + return 0; + } + } + p= aCalloc(1, sizeof(struct party)); memcpy(p->name,name,NAME_LENGTH); -- cgit v1.2.3-60-g2f50