mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 02:11:30 +00:00
(RoF2) Fixed Tracking.
This commit is contained in:
parent
ce3d513ca0
commit
6e192b1794
@ -1,5 +1,8 @@
|
||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||
-------------------------------------------------------
|
||||
== 12/22/2014 ==
|
||||
Trevius: (RoF2) Fixed Tracking.
|
||||
|
||||
== 12/21/2014 ==
|
||||
Trevius: (RoF2) Fixed Extended Targets Window by correcting opcodes.
|
||||
Trevius: (RoF/RoF2) Fixed Guild Rank in the Player Profile, which prevents the guild rank message on login/zone.
|
||||
|
||||
@ -3015,14 +3015,14 @@ struct ClientError_Struct
|
||||
};
|
||||
|
||||
struct Track_Struct {
|
||||
uint16 entityid;
|
||||
uint16 padding002;
|
||||
uint32 entityid;
|
||||
float distance;
|
||||
// Fields for SoD and later
|
||||
uint8 level;
|
||||
uint8 NPC;
|
||||
uint8 GroupMember;
|
||||
uint8 is_npc;
|
||||
char name[64];
|
||||
uint8 is_pet;
|
||||
uint8 is_merc;
|
||||
};
|
||||
|
||||
struct Tracking_Struct {
|
||||
|
||||
@ -3294,9 +3294,9 @@ namespace RoF
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->NPC);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_npc);
|
||||
VARSTRUCT_ENCODE_STRING(Buffer, emu->name);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->GroupMember);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_merc);
|
||||
}
|
||||
|
||||
delete[] __emu_buffer;
|
||||
|
||||
@ -3289,7 +3289,7 @@ namespace RoF2
|
||||
int PacketSize = 2;
|
||||
|
||||
for (int i = 0; i < EntryCount; ++i, ++emu)
|
||||
PacketSize += (12 + strlen(emu->name));
|
||||
PacketSize += (13 + strlen(emu->name));
|
||||
|
||||
emu = (Track_Struct *)__emu_buffer;
|
||||
|
||||
@ -3305,9 +3305,10 @@ namespace RoF2
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->NPC);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_npc);
|
||||
VARSTRUCT_ENCODE_STRING(Buffer, emu->name);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->GroupMember);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_pet);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_merc);
|
||||
}
|
||||
|
||||
delete[] __emu_buffer;
|
||||
|
||||
@ -3112,29 +3112,24 @@ struct MobHealth
|
||||
};
|
||||
|
||||
struct Track_Struct {
|
||||
uint16 entityid;
|
||||
uint16 y;
|
||||
uint16 x;
|
||||
uint16 z;
|
||||
uint32 entityid;
|
||||
float distance;
|
||||
// Fields for SoD and later
|
||||
uint8 level;
|
||||
uint8 is_npc;
|
||||
char name[64];
|
||||
uint8 is_pet;
|
||||
uint8 is_merc;
|
||||
};
|
||||
|
||||
struct Tracking_Struct {
|
||||
uint16 entry_count;
|
||||
Track_Struct Entrys[0];
|
||||
};
|
||||
|
||||
// Looks like new tracking structures - Opcode: 0x57a7
|
||||
struct Tracking_Struct_New {
|
||||
uint16 totalcount; // Total Count of mobs within tracking range
|
||||
Track_Struct Entrys[0];
|
||||
};
|
||||
|
||||
struct Track_Struct_New {
|
||||
uint16 entityid; // Entity ID
|
||||
uint16 unknown002; // 00 00
|
||||
uint32 unknown004; //
|
||||
uint8 level; // level of mob
|
||||
uint8 unknown009; // 01 maybe type of mob? player/npc?
|
||||
char name[1]; // name of mob
|
||||
struct TrackTarget_Struct
|
||||
{
|
||||
uint32 EntityID;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -3103,32 +3103,25 @@ struct MobHealth
|
||||
};
|
||||
|
||||
struct Track_Struct {
|
||||
uint16 entityid;
|
||||
uint16 y;
|
||||
uint16 x;
|
||||
uint16 z;
|
||||
uint32 entityid;
|
||||
float distance;
|
||||
// Fields for SoD and later
|
||||
uint8 level;
|
||||
uint8 is_npc;
|
||||
char name[64];
|
||||
uint8 is_merc;
|
||||
};
|
||||
|
||||
struct Tracking_Struct {
|
||||
uint16 entry_count;
|
||||
Track_Struct Entrys[0];
|
||||
};
|
||||
|
||||
// Looks like new tracking structures - Opcode: 0x57a7
|
||||
struct Tracking_Struct_New {
|
||||
uint16 totalcount; // Total Count of mobs within tracking range
|
||||
Track_Struct Entrys[0];
|
||||
struct TrackTarget_Struct
|
||||
{
|
||||
uint32 EntityID;
|
||||
};
|
||||
|
||||
struct Track_Struct_New {
|
||||
uint16 entityid; // Entity ID
|
||||
uint16 unknown002; // 00 00
|
||||
uint32 unknown004; //
|
||||
uint8 level; // level of mob
|
||||
uint8 unknown009; // 01 maybe type of mob? player/npc?
|
||||
char name[1]; // name of mob
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
** ZoneServerInfo_Struct
|
||||
** Zone server information
|
||||
|
||||
@ -2058,9 +2058,9 @@ namespace SoD
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->NPC);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_npc);
|
||||
VARSTRUCT_ENCODE_STRING(Buffer, emu->name);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->GroupMember);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_merc);
|
||||
}
|
||||
|
||||
delete[] __emu_buffer;
|
||||
|
||||
@ -1645,7 +1645,7 @@ namespace SoF
|
||||
for (int i = 0; i < EntryCount; ++i, ++eq, ++emu)
|
||||
{
|
||||
OUT(entityid);
|
||||
OUT(padding002);
|
||||
//OUT(padding002);
|
||||
OUT(distance);
|
||||
}
|
||||
|
||||
|
||||
@ -2624,8 +2624,8 @@ struct MobHealth
|
||||
};
|
||||
|
||||
struct Track_Struct {
|
||||
uint16 entityid;
|
||||
uint16 padding002;
|
||||
uint32 entityid;
|
||||
//uint16 padding002;
|
||||
float distance;
|
||||
};
|
||||
|
||||
|
||||
@ -1094,7 +1094,7 @@ namespace Titanium
|
||||
for (int i = 0; i < EntryCount; ++i, ++eq, ++emu)
|
||||
{
|
||||
OUT(entityid);
|
||||
OUT(padding002);
|
||||
//OUT(padding002);
|
||||
OUT(distance);
|
||||
}
|
||||
|
||||
|
||||
@ -2319,8 +2319,8 @@ struct MobHealth
|
||||
};
|
||||
|
||||
struct Track_Struct {
|
||||
uint16 entityid;
|
||||
uint16 padding002;
|
||||
uint32 entityid;
|
||||
//uint16 padding002;
|
||||
float distance;
|
||||
};
|
||||
|
||||
|
||||
@ -2348,9 +2348,9 @@ namespace Underfoot
|
||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->NPC);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_npc);
|
||||
VARSTRUCT_ENCODE_STRING(Buffer, emu->name);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->GroupMember);
|
||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_merc);
|
||||
}
|
||||
|
||||
delete[] __emu_buffer;
|
||||
|
||||
@ -249,7 +249,7 @@ OP_ItemLinkClick=0x4cef
|
||||
OP_ItemPreview=0x6b5c
|
||||
OP_NewSpawn=0x6097
|
||||
OP_Track=0x17e5
|
||||
OP_TrackTarget=0x0029
|
||||
OP_TrackTarget=0x695e
|
||||
OP_TrackUnknown=0x4577
|
||||
OP_ClickDoor=0x3a8f
|
||||
OP_MoveDoor=0x08e8
|
||||
|
||||
@ -2957,8 +2957,6 @@ bool EntityList::MakeTrackPacket(Client *client)
|
||||
if (distance < 300)
|
||||
distance = 300;
|
||||
|
||||
Group *g = client->GetGroup();
|
||||
|
||||
for (auto it = mob_list.cbegin(); it != mob_list.cend(); ++it) {
|
||||
if (!it->second || it->second == client || !it->second->IsTrackable() ||
|
||||
it->second->IsInvisible(client))
|
||||
@ -2979,15 +2977,13 @@ bool EntityList::MakeTrackPacket(Client *client)
|
||||
int index = 0;
|
||||
for (auto it = tracking_list.cbegin(); it != tracking_list.cend(); ++it, ++index) {
|
||||
Mob *cur_entity = it->first;
|
||||
outtrack->Entrys[index].entityid = cur_entity->GetID();
|
||||
outtrack->Entrys[index].entityid = (uint32)cur_entity->GetID();
|
||||
outtrack->Entrys[index].distance = it->second;
|
||||
outtrack->Entrys[index].level = cur_entity->GetLevel();
|
||||
outtrack->Entrys[index].NPC = !cur_entity->IsClient();
|
||||
if (g && cur_entity->IsClient() && g->IsGroupMember(cur_entity->CastToMob()))
|
||||
outtrack->Entrys[index].GroupMember = 1;
|
||||
else
|
||||
outtrack->Entrys[index].GroupMember = 0;
|
||||
outtrack->Entrys[index].is_npc = !cur_entity->IsClient();
|
||||
strn0cpy(outtrack->Entrys[index].name, cur_entity->GetName(), sizeof(outtrack->Entrys[index].name));
|
||||
outtrack->Entrys[index].is_pet = cur_entity->IsPet();
|
||||
outtrack->Entrys[index].is_merc = cur_entity->IsMerc();
|
||||
}
|
||||
|
||||
client->QueuePacket(outapp);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user