- Merged Adam's patch to let the char-server handle validation of pet-name-change requests through the allowed char letters config.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7192 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
@@ -195,6 +195,18 @@ int mapif_delete_pet_ack(int fd, int flag){
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mapif_rename_pet_ack(int fd, int account_id, int char_id, int flag, char *name){
|
||||
WFIFOW(fd, 0) =0x3884;
|
||||
WFIFOL(fd, 2) =account_id;
|
||||
WFIFOL(fd, 6) =char_id;
|
||||
WFIFOB(fd, 10) =flag;
|
||||
memcpy(WFIFOP(fd, 11), name, NAME_LENGTH);
|
||||
WFIFOSET(fd, NAME_LENGTH+12);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int mapif_create_pet(int fd, int account_id, int char_id, short pet_class, short pet_lv, short pet_egg_id,
|
||||
short pet_equip, short intimate, short hungry, char rename_flag, char incuvate, char *pet_name){
|
||||
|
||||
@@ -283,6 +295,28 @@ int mapif_delete_pet(int fd, int pet_id){
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mapif_rename_pet(int fd, int account_id, int char_id, char *name){
|
||||
int i;
|
||||
|
||||
// Check Authorised letters/symbols in the name of the pet
|
||||
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_rename_pet_ack(fd, account_id, char_id, 0, name);
|
||||
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_rename_pet_ack(fd, account_id, char_id, 0, name);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
mapif_rename_pet_ack(fd, account_id, char_id, 1, name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mapif_parse_CreatePet(int fd){
|
||||
mapif_create_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14), RFIFOW(fd, 16), RFIFOW(fd, 18),
|
||||
RFIFOW(fd, 20), RFIFOB(fd, 22), RFIFOB(fd, 23), (char*)RFIFOP(fd, 24));
|
||||
@@ -304,12 +338,18 @@ int mapif_parse_DeletePet(int fd){
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mapif_parse_RenamePet(int fd){
|
||||
mapif_rename_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOP(fd, 10));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int inter_pet_parse_frommap(int fd){
|
||||
switch(RFIFOW(fd, 0)){
|
||||
case 0x3080: mapif_parse_CreatePet(fd); break;
|
||||
case 0x3081: mapif_parse_LoadPet(fd); break;
|
||||
case 0x3082: mapif_parse_SavePet(fd); break;
|
||||
case 0x3083: mapif_parse_DeletePet(fd); break;
|
||||
case 0x3084: mapif_parse_RenamePet(fd); break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ int inter_send_packet_length[]={
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
11,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
11,-1, 7, 3, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
// recv. packet list
|
||||
int inter_recv_packet_length[]={
|
||||
@@ -79,7 +79,7 @@ int inter_recv_packet_length[]={
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
48,14,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3080-0x308f
|
||||
48,14,-1, 6, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3080-0x308f
|
||||
};
|
||||
|
||||
struct WisData {
|
||||
|
||||
Reference in New Issue
Block a user