From bc2b385a1898407fe5978b66c0f795b8235d52cd Mon Sep 17 00:00:00 2001 From: skotlex Date: Fri, 16 Jun 2006 03:05:29 +0000 Subject: - 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7192 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/intif.c | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) (limited to 'src/map/intif.c') diff --git a/src/map/intif.c b/src/map/intif.c index d26c37d93..8cd66e364 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -21,9 +21,10 @@ #include #include "../common/showmsg.h" - -#include "socket.h" -#include "timer.h" +#include "../common/socket.h" +#include "../common/timer.h" +#include "../common/nullpo.h" +#include "../common/malloc.h" #include "map.h" #include "battle.h" #include "chrif.h" @@ -34,8 +35,7 @@ #include "party.h" #include "guild.h" #include "pet.h" -#include "nullpo.h" -#include "malloc.h" +#include "atcommand.h" static const int packet_len_table[]={ -1,-1,27,-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3800-0x380f @@ -46,7 +46,7 @@ static const int packet_len_table[]={ 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, //0x3880 + 11,-1, 7, 3, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3880 }; extern int char_fd; // inter serverのfdはchar_fdを使う @@ -122,6 +122,20 @@ int intif_delete_petdata(int pet_id) return 0; } +int intif_rename_pet(struct map_session_data *sd,char *name) +{ + if (CheckForCharServer()) + return 1; + + WFIFOHEAD(inter_fd,NAME_LENGTH+11); + WFIFOW(inter_fd,0) = 0x3084; + WFIFOL(inter_fd,2) = sd->status.account_id; + WFIFOL(inter_fd,6) = sd->status.char_id; + memcpy(WFIFOP(inter_fd,10),name, NAME_LENGTH); + WFIFOSET(inter_fd,NAME_LENGTH+11); + return 0; +} + // GMメッセージを送信 int intif_GMmessage(char* mes,int len,int flag) @@ -1349,6 +1363,23 @@ int intif_parse_DeletePetOk(int fd) return 0; } + +int intif_parse_RenamePetOk(int fd) +{ + RFIFOHEAD(fd); + struct map_session_data *sd; + if((sd=map_id2sd(RFIFOL(fd,2)))==NULL || + sd->status.char_id != RFIFOL(fd,6)) + return 0; + if (RFIFOB(fd,10) == 0) { + clif_displaymessage(sd->fd, msg_txt(280)); // You cannot use this name for your pet. + clif_send_petstatus(sd); //Send status so client knows oet name change got rejected. + return 0; + } + pet_change_name(sd, RFIFOP(fd,11),1); + return 0; +} + //----------------------------------------------------------------- // inter serverからの通信 // エラーがあれば0(false)を返すこと @@ -1423,6 +1454,7 @@ int intif_parse(int fd) case 0x3881: intif_parse_RecvPetData(fd); break; case 0x3882: intif_parse_SavePetOk(fd); break; case 0x3883: intif_parse_DeletePetOk(fd); break; + case 0x3884: intif_parse_RenamePetOk(fd); break; default: if(battle_config.error_log) ShowError("intif_parse : unknown packet %d %x\n",fd,RFIFOW(fd,0)); -- cgit v1.2.3-60-g2f50