- 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:
skotlex
2006-06-16 03:05:29 +00:00
parent 1a9fc74672
commit c185d6ae82
12 changed files with 224 additions and 106 deletions

View File

@@ -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;
}

View File

@@ -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 {