Removed 'char_max_rename', extended 'char_rename', fixed compatibility issues.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14089 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
0088d3754c
commit
58c0099b66
@ -160,14 +160,11 @@ char_name_letters: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678
|
|||||||
// When set to yes, the server will send an extended char-info packet,
|
// When set to yes, the server will send an extended char-info packet,
|
||||||
// informing whether the character can be renamed or not.
|
// informing whether the character can be renamed or not.
|
||||||
// NOTE: This option is for compatibility with kRO sakray 2006-10-23 and newer.
|
// NOTE: This option is for compatibility with kRO sakray 2006-10-23 and newer.
|
||||||
// !Do not use it for any other type of client since it will crash them!
|
// !Do not disable it for these clients since it will crash them!
|
||||||
char_rename: yes
|
// !Do not use it for any other type of client since it will crash them too!
|
||||||
|
// !If you really wanna disable it for newer clients, change the default value to the setting value in `rename` column of `char` table!
|
||||||
// Specifies the maximun number of times you can change
|
// 0: off, 1+: the maximun number of times you can change each character's name
|
||||||
// the char name, applied individually to each character.
|
char_rename: 1
|
||||||
// It's necessary that "char_rename" be set to yes.
|
|
||||||
// 0 = unlimited
|
|
||||||
char_max_rename: 1
|
|
||||||
|
|
||||||
// How many Characters are allowed per Account ? (0 = disabled) [SQL Only!]
|
// How many Characters are allowed per Account ? (0 = disabled) [SQL Only!]
|
||||||
chars_per_account: 0
|
chars_per_account: 0
|
||||||
|
@ -99,8 +99,7 @@ int char_name_option = 0; // Option to know which letters/symbols are authorised
|
|||||||
char unknown_char_name[NAME_LENGTH] = "Unknown"; // Name to use when the requested name cannot be determined
|
char unknown_char_name[NAME_LENGTH] = "Unknown"; // Name to use when the requested name cannot be determined
|
||||||
#define TRIM_CHARS "\032\t\x0A\x0D " //The following characters are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
|
#define TRIM_CHARS "\032\t\x0A\x0D " //The following characters are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
|
||||||
char char_name_letters[1024] = ""; // list of letters/symbols used to authorise or not a name of a character. by [Yor]
|
char char_name_letters[1024] = ""; // list of letters/symbols used to authorise or not a name of a character. by [Yor]
|
||||||
bool char_rename = true;
|
short char_rename = 1;
|
||||||
int char_max_rename = 1;
|
|
||||||
|
|
||||||
int char_per_account = 0; //Maximum charas per account (default unlimited) [Sirius]
|
int char_per_account = 0; //Maximum charas per account (default unlimited) [Sirius]
|
||||||
int char_del_level = 0; //From which level u can delete character [Lupus]
|
int char_del_level = 0; //From which level u can delete character [Lupus]
|
||||||
@ -1184,7 +1183,6 @@ int mmo_char_sql_init(void)
|
|||||||
//-----------------------------------
|
//-----------------------------------
|
||||||
int rename_char_sql(struct char_session_data *sd, int char_id)
|
int rename_char_sql(struct char_session_data *sd, int char_id)
|
||||||
{
|
{
|
||||||
StringBuf buf;
|
|
||||||
struct mmo_charstatus char_dat;
|
struct mmo_charstatus char_dat;
|
||||||
char esc_name[NAME_LENGTH*2+1];
|
char esc_name[NAME_LENGTH*2+1];
|
||||||
|
|
||||||
@ -1194,37 +1192,24 @@ int rename_char_sql(struct char_session_data *sd, int char_id)
|
|||||||
if( !mmo_char_fromsql(char_id, &char_dat, false) ) // Only the short data is needed.
|
if( !mmo_char_fromsql(char_id, &char_dat, false) ) // Only the short data is needed.
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
if( char_dat.rename >= char_max_rename && char_max_rename != 0 )
|
if( char_dat.rename >= char_rename )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
Sql_EscapeStringLen(sql_handle, esc_name, sd->new_name, strnlen(sd->new_name, NAME_LENGTH));
|
Sql_EscapeStringLen(sql_handle, esc_name, sd->new_name, strnlen(sd->new_name, NAME_LENGTH));
|
||||||
|
|
||||||
// check if the char exist
|
// check if the char exist
|
||||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT 1 FROM `%s` WHERE `name` LIKE '%s'", char_db, esc_name) ) {
|
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT 1 FROM `%s` WHERE `name` LIKE '%s'", char_db, esc_name) )
|
||||||
|
{
|
||||||
Sql_ShowDebug(sql_handle);
|
Sql_ShowDebug(sql_handle);
|
||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuf_Init(&buf);
|
if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `name` = '%s', `rename` = '%d' WHERE `char_id` = '%d'", char_db, esc_name, ++char_dat.rename, char_id) )
|
||||||
StringBuf_Printf(&buf, "UPDATE `%s` SET `name` = '%s'", char_db, esc_name);
|
|
||||||
|
|
||||||
if( char_max_rename )
|
|
||||||
{
|
|
||||||
char_dat.rename++;
|
|
||||||
StringBuf_Printf(&buf, ", `rename` = '%d'", char_dat.rename);
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuf_Printf(&buf, " WHERE `char_id` = '%d'", char_id);
|
|
||||||
|
|
||||||
if( SQL_ERROR == Sql_QueryStr(sql_handle, StringBuf_Value(&buf)) )
|
|
||||||
{
|
{
|
||||||
Sql_ShowDebug(sql_handle);
|
Sql_ShowDebug(sql_handle);
|
||||||
StringBuf_Destroy(&buf);
|
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuf_Destroy(&buf);
|
|
||||||
|
|
||||||
// Change character's name into guild_db.
|
// Change character's name into guild_db.
|
||||||
if( char_dat.guild_id )
|
if( char_dat.guild_id )
|
||||||
inter_guild_charname_changed(char_dat.guild_id, sd->account_id, char_id, sd->new_name);
|
inter_guild_charname_changed(char_dat.guild_id, sd->account_id, char_id, sd->new_name);
|
||||||
@ -1595,11 +1580,15 @@ int mmo_char_tobuf(uint8* buf, struct mmo_charstatus* p)
|
|||||||
WBUFB(buf,102) = min(p->dex, UCHAR_MAX);
|
WBUFB(buf,102) = min(p->dex, UCHAR_MAX);
|
||||||
WBUFB(buf,103) = min(p->luk, UCHAR_MAX);
|
WBUFB(buf,103) = min(p->luk, UCHAR_MAX);
|
||||||
WBUFW(buf,104) = p->slot;
|
WBUFW(buf,104) = p->slot;
|
||||||
if( char_rename && (!char_max_rename || p->rename < char_max_rename) )
|
if( char_rename )
|
||||||
WBUFW(buf,106) = 1;
|
{
|
||||||
else
|
if( p->rename < char_rename )
|
||||||
WBUFW(buf,106) = 0;
|
WBUFW(buf,106) = 0;
|
||||||
|
else
|
||||||
|
WBUFW(buf,106) = 1;
|
||||||
return 108;
|
return 108;
|
||||||
|
}
|
||||||
|
return 106;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mmo_char_send006b(int fd, struct char_session_data* sd)
|
int mmo_char_send006b(int fd, struct char_session_data* sd)
|
||||||
@ -3905,9 +3894,7 @@ int char_config_read(const char* cfgName)
|
|||||||
} else if (strcmpi(w1, "char_name_letters") == 0) {
|
} else if (strcmpi(w1, "char_name_letters") == 0) {
|
||||||
strcpy(char_name_letters, w2);
|
strcpy(char_name_letters, w2);
|
||||||
} else if (strcmpi(w1, "char_rename") == 0) {
|
} else if (strcmpi(w1, "char_rename") == 0) {
|
||||||
char_rename = config_switch(w2);
|
char_rename = atoi(w2);
|
||||||
} else if (strcmpi(w1, "char_max_rename") == 0) {
|
|
||||||
char_max_rename = atoi(w2);
|
|
||||||
} else if (strcmpi(w1, "chars_per_account") == 0) { //maxchars per account [Sirius]
|
} else if (strcmpi(w1, "chars_per_account") == 0) { //maxchars per account [Sirius]
|
||||||
char_per_account = atoi(w2);
|
char_per_account = atoi(w2);
|
||||||
} else if (strcmpi(w1, "char_del_level") == 0) { //disable/enable char deletion by its level condition [Lupus]
|
} else if (strcmpi(w1, "char_del_level") == 0) { //disable/enable char deletion by its level condition [Lupus]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user