mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-15 12:31:31 +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)
|
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
== 12/22/2014 ==
|
||||||
|
Trevius: (RoF2) Fixed Tracking.
|
||||||
|
|
||||||
== 12/21/2014 ==
|
== 12/21/2014 ==
|
||||||
Trevius: (RoF2) Fixed Extended Targets Window by correcting opcodes.
|
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.
|
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 {
|
struct Track_Struct {
|
||||||
uint16 entityid;
|
uint32 entityid;
|
||||||
uint16 padding002;
|
|
||||||
float distance;
|
float distance;
|
||||||
// Fields for SoD and later
|
// Fields for SoD and later
|
||||||
uint8 level;
|
uint8 level;
|
||||||
uint8 NPC;
|
uint8 is_npc;
|
||||||
uint8 GroupMember;
|
|
||||||
char name[64];
|
char name[64];
|
||||||
|
uint8 is_pet;
|
||||||
|
uint8 is_merc;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Tracking_Struct {
|
struct Tracking_Struct {
|
||||||
|
|||||||
@ -3294,9 +3294,9 @@ namespace RoF
|
|||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
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_STRING(Buffer, emu->name);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->GroupMember);
|
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_merc);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] __emu_buffer;
|
delete[] __emu_buffer;
|
||||||
|
|||||||
@ -3289,7 +3289,7 @@ namespace RoF2
|
|||||||
int PacketSize = 2;
|
int PacketSize = 2;
|
||||||
|
|
||||||
for (int i = 0; i < EntryCount; ++i, ++emu)
|
for (int i = 0; i < EntryCount; ++i, ++emu)
|
||||||
PacketSize += (12 + strlen(emu->name));
|
PacketSize += (13 + strlen(emu->name));
|
||||||
|
|
||||||
emu = (Track_Struct *)__emu_buffer;
|
emu = (Track_Struct *)__emu_buffer;
|
||||||
|
|
||||||
@ -3305,9 +3305,10 @@ namespace RoF2
|
|||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
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_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;
|
delete[] __emu_buffer;
|
||||||
|
|||||||
@ -3112,29 +3112,24 @@ struct MobHealth
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct Track_Struct {
|
struct Track_Struct {
|
||||||
uint16 entityid;
|
uint32 entityid;
|
||||||
uint16 y;
|
float distance;
|
||||||
uint16 x;
|
// Fields for SoD and later
|
||||||
uint16 z;
|
uint8 level;
|
||||||
|
uint8 is_npc;
|
||||||
|
char name[64];
|
||||||
|
uint8 is_pet;
|
||||||
|
uint8 is_merc;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Tracking_Struct {
|
struct Tracking_Struct {
|
||||||
|
uint16 entry_count;
|
||||||
Track_Struct Entrys[0];
|
Track_Struct Entrys[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
// Looks like new tracking structures - Opcode: 0x57a7
|
struct TrackTarget_Struct
|
||||||
struct Tracking_Struct_New {
|
{
|
||||||
uint16 totalcount; // Total Count of mobs within tracking range
|
uint32 EntityID;
|
||||||
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
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3103,32 +3103,25 @@ struct MobHealth
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct Track_Struct {
|
struct Track_Struct {
|
||||||
uint16 entityid;
|
uint32 entityid;
|
||||||
uint16 y;
|
float distance;
|
||||||
uint16 x;
|
// Fields for SoD and later
|
||||||
uint16 z;
|
uint8 level;
|
||||||
|
uint8 is_npc;
|
||||||
|
char name[64];
|
||||||
|
uint8 is_merc;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Tracking_Struct {
|
struct Tracking_Struct {
|
||||||
|
uint16 entry_count;
|
||||||
Track_Struct Entrys[0];
|
Track_Struct Entrys[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
// Looks like new tracking structures - Opcode: 0x57a7
|
struct TrackTarget_Struct
|
||||||
struct Tracking_Struct_New {
|
{
|
||||||
uint16 totalcount; // Total Count of mobs within tracking range
|
uint32 EntityID;
|
||||||
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
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** ZoneServerInfo_Struct
|
** ZoneServerInfo_Struct
|
||||||
** Zone server information
|
** Zone server information
|
||||||
|
|||||||
@ -2058,9 +2058,9 @@ namespace SoD
|
|||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
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_STRING(Buffer, emu->name);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->GroupMember);
|
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_merc);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] __emu_buffer;
|
delete[] __emu_buffer;
|
||||||
|
|||||||
@ -1645,7 +1645,7 @@ namespace SoF
|
|||||||
for (int i = 0; i < EntryCount; ++i, ++eq, ++emu)
|
for (int i = 0; i < EntryCount; ++i, ++eq, ++emu)
|
||||||
{
|
{
|
||||||
OUT(entityid);
|
OUT(entityid);
|
||||||
OUT(padding002);
|
//OUT(padding002);
|
||||||
OUT(distance);
|
OUT(distance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2624,8 +2624,8 @@ struct MobHealth
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct Track_Struct {
|
struct Track_Struct {
|
||||||
uint16 entityid;
|
uint32 entityid;
|
||||||
uint16 padding002;
|
//uint16 padding002;
|
||||||
float distance;
|
float distance;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1094,7 +1094,7 @@ namespace Titanium
|
|||||||
for (int i = 0; i < EntryCount; ++i, ++eq, ++emu)
|
for (int i = 0; i < EntryCount; ++i, ++eq, ++emu)
|
||||||
{
|
{
|
||||||
OUT(entityid);
|
OUT(entityid);
|
||||||
OUT(padding002);
|
//OUT(padding002);
|
||||||
OUT(distance);
|
OUT(distance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2319,8 +2319,8 @@ struct MobHealth
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct Track_Struct {
|
struct Track_Struct {
|
||||||
uint16 entityid;
|
uint32 entityid;
|
||||||
uint16 padding002;
|
//uint16 padding002;
|
||||||
float distance;
|
float distance;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2348,9 +2348,9 @@ namespace Underfoot
|
|||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->entityid);
|
||||||
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
VARSTRUCT_ENCODE_TYPE(float, Buffer, emu->distance);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->level);
|
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_STRING(Buffer, emu->name);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->GroupMember);
|
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->is_merc);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] __emu_buffer;
|
delete[] __emu_buffer;
|
||||||
|
|||||||
@ -249,7 +249,7 @@ OP_ItemLinkClick=0x4cef
|
|||||||
OP_ItemPreview=0x6b5c
|
OP_ItemPreview=0x6b5c
|
||||||
OP_NewSpawn=0x6097
|
OP_NewSpawn=0x6097
|
||||||
OP_Track=0x17e5
|
OP_Track=0x17e5
|
||||||
OP_TrackTarget=0x0029
|
OP_TrackTarget=0x695e
|
||||||
OP_TrackUnknown=0x4577
|
OP_TrackUnknown=0x4577
|
||||||
OP_ClickDoor=0x3a8f
|
OP_ClickDoor=0x3a8f
|
||||||
OP_MoveDoor=0x08e8
|
OP_MoveDoor=0x08e8
|
||||||
|
|||||||
@ -2957,8 +2957,6 @@ bool EntityList::MakeTrackPacket(Client *client)
|
|||||||
if (distance < 300)
|
if (distance < 300)
|
||||||
distance = 300;
|
distance = 300;
|
||||||
|
|
||||||
Group *g = client->GetGroup();
|
|
||||||
|
|
||||||
for (auto it = mob_list.cbegin(); it != mob_list.cend(); ++it) {
|
for (auto it = mob_list.cbegin(); it != mob_list.cend(); ++it) {
|
||||||
if (!it->second || it->second == client || !it->second->IsTrackable() ||
|
if (!it->second || it->second == client || !it->second->IsTrackable() ||
|
||||||
it->second->IsInvisible(client))
|
it->second->IsInvisible(client))
|
||||||
@ -2979,15 +2977,13 @@ bool EntityList::MakeTrackPacket(Client *client)
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
for (auto it = tracking_list.cbegin(); it != tracking_list.cend(); ++it, ++index) {
|
for (auto it = tracking_list.cbegin(); it != tracking_list.cend(); ++it, ++index) {
|
||||||
Mob *cur_entity = it->first;
|
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].distance = it->second;
|
||||||
outtrack->Entrys[index].level = cur_entity->GetLevel();
|
outtrack->Entrys[index].level = cur_entity->GetLevel();
|
||||||
outtrack->Entrys[index].NPC = !cur_entity->IsClient();
|
outtrack->Entrys[index].is_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;
|
|
||||||
strn0cpy(outtrack->Entrys[index].name, cur_entity->GetName(), sizeof(outtrack->Entrys[index].name));
|
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);
|
client->QueuePacket(outapp);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user