Fixed clif_sendfakenpc (#8330)

Fixes #8321
Fixes #8328

Thanks to @kaninhot004
This commit is contained in:
Lemongrass3110 2024-05-13 11:45:00 +02:00 committed by GitHub
parent 580511c0bb
commit fe9f617f97
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 56 additions and 46 deletions

View File

@ -2545,19 +2545,65 @@ void clif_scriptclear( map_session_data& sd, int npcid ){
void clif_sendfakenpc( map_session_data& sd, uint32 npcid ){
sd.state.using_fake_npc = 1;
PACKET_ZC_NOTIFY_STANDENTRY packet{};
// Code below is a copy of clif_set_unit_idle
struct packet_idle_unit p;
packet.packetType = HEADER_ZC_NOTIFY_STANDENTRY;
#if PACKETVER >= 20071106
packet.objecttype = 0;
p.PacketType = idle_unitType;
#if PACKETVER >= 20091103
p.PacketLength = sizeof(p);
p.objecttype = 0x1; // NPC_TYPE
#endif
#if PACKETVER >= 20131223
p.AID = npcid;
p.GID = 0;
#else
p.GID = npcid;
#endif
p.speed = 0;
p.bodyState = 0;
p.healthState = 0;
p.effectState = 0;
p.job = JT_HIDDEN_NPC;
p.head = 0;
p.weapon = 0;
#if PACKETVER < 7 || PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
p.shield = 0;
#endif
p.accessory = 0;
p.accessory2 = 0;
p.accessory3 = 0;
p.headpalette = 0;
p.bodypalette = 0;
p.headDir = 0;
#if PACKETVER >= 20101124
p.robe = 0;
#endif
p.GUID = 0;
p.GEmblemVer = 0;
p.honor = 0;
p.virtue = 0;
p.isPKModeON = 0;
p.sex = SEX_FEMALE;
WBUFPOS( &p.PosDir[0], 0, sd.bl.x, sd.bl.y, sd.ud.dir );
p.xSize = p.ySize = 5;
p.state = 0;
p.clevel = 0;
#if PACKETVER >= 20080102
p.font = 0;
#endif
#if PACKETVER >= 20120221
p.maxHP = -1;
p.HP = -1;
#endif
#if PACKETVER >= 20150513
p.body = 0;
#endif
/* Might be earlier, this is when the named item bug began */
#if PACKETVER >= 20131223
safestrncpy( p.name, "", NAME_LENGTH);
#endif
packet.GID = npcid;
packet.job = JT_HIDDEN_NPC;
WBUFPOS(packet.PosDir,0,sd.bl.x,sd.bl.y,sd.ud.dir);
packet.xSize = 5;
packet.ySize = 5;
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
clif_send( &p, sizeof( p ), &sd.bl, SELF );
}

View File

@ -709,42 +709,6 @@ struct PACKET_ZC_CLOSE_DIALOG {
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_CLOSE_DIALOG, 0xb6)
struct PACKET_ZC_NOTIFY_STANDENTRY {
int16 packetType;
#if PACKETVER >= 20071106
uint8 objecttype;
#endif
uint32 GID;
int16 speed;
int16 bodyState;
int16 effectState;
int16 job;
int16 head;
int16 weapon;
int16 accessory;
int16 shield;
int16 accessory2;
int16 accessory3;
int16 headpalette;
int16 bodypalette;
int16 headDir;
uint32 GUID;
int16 GEmblemVer;
int16 honor;
int16 virtue;
bool isPKModeON;
uint8 sex;
uint8 PosDir[3];
uint8 xSize;
uint8 ySize;
uint8 state;
int16 clevel;
uint16 spr_idx;
uint16 effect_idx;
unsigned char scale;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_STANDENTRY, 0x78)
struct PACKET_ZC_MENU_LIST {
int16 packetType;
int16 packetLength;