mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-31 17:26:30 +00:00
Added partial OP_NewZone support
This commit is contained in:
+1
-1
@@ -1657,7 +1657,7 @@ bool Client::Death(Mob* killerMob, int32 damage, uint16 spell, EQEmu::skills::Sk
|
||||
d->damage = damage;
|
||||
app.priority = 6;
|
||||
entity_list.QueueClients(this, &app);
|
||||
|
||||
nats.OnDeathEvent(d);
|
||||
/*
|
||||
#2: figure out things that affect the player dying and mark them dead
|
||||
*/
|
||||
|
||||
+1
-1
@@ -3875,7 +3875,7 @@ void Client::Sacrifice(Client *caster)
|
||||
d->damage = 0;
|
||||
app.priority = 6;
|
||||
entity_list.QueueClients(this, &app);
|
||||
|
||||
nats.OnDeathEvent(d);
|
||||
BuffFadeAll();
|
||||
UnmemSpellAll();
|
||||
Group *g = GetGroup();
|
||||
|
||||
@@ -1226,7 +1226,7 @@ void Client::Handle_Connect_OP_ZoneComplete(const EQApplicationPacket *app)
|
||||
auto outapp = new EQApplicationPacket(OP_0x0347, 0);
|
||||
QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
nats.OnZoneComplete(GetID());
|
||||
nats.OnZoneCompleteEvent(GetID());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+58
-1
@@ -1304,7 +1304,7 @@ void NatsManager::OnAlternateAdvancementStats(uint32 entity_id, AltAdvStats_Stru
|
||||
}
|
||||
|
||||
|
||||
void NatsManager::OnZoneComplete(uint32 entity_id) {
|
||||
void NatsManager::OnZoneCompleteEvent(uint32 entity_id) {
|
||||
if (!connect())
|
||||
return;
|
||||
if (entity_id == 0)
|
||||
@@ -1370,4 +1370,61 @@ void NatsManager::OnAlternateAdvancementActionRequest(uint32 entity_id, AA_Actio
|
||||
return;
|
||||
}
|
||||
SendEvent(op, entity_id, event_buffer, event_size);
|
||||
}
|
||||
|
||||
void NatsManager::OnNewZoneEvent(uint32 entity_id, NewZone_Struct * nz) {
|
||||
if (!connect())
|
||||
return;
|
||||
if (entity_id == 0)
|
||||
return;
|
||||
if (!isEntityEventAllEnabled && !isEntitySubscribed(entity_id))
|
||||
return;
|
||||
|
||||
auto op = eqproto::OP_NewZone;
|
||||
|
||||
eqproto::NewZoneEvent* event = google::protobuf::Arena::CreateMessage<eqproto::NewZoneEvent>(&the_arena);
|
||||
|
||||
event->set_char_name(nz->char_name);
|
||||
event->set_zone_short_name(nz->zone_short_name);
|
||||
event->set_zone_long_name(nz->zone_long_name);
|
||||
event->set_ztype(nz->ztype);
|
||||
event->set_fog_red(*nz->fog_red);
|
||||
event->set_fog_green(*nz->fog_green);
|
||||
event->set_fog_blue(*nz->fog_blue);
|
||||
event->set_unknown323(nz->unknown323);
|
||||
event->set_fog_minclip(*nz->fog_minclip);
|
||||
event->set_fog_maxclip(*nz->fog_maxclip);
|
||||
event->set_gravity(nz->gravity);
|
||||
event->set_time_type(nz->time_type);
|
||||
event->set_rain_chance(*nz->rain_chance);
|
||||
event->set_rain_duration(*nz->rain_duration);
|
||||
event->set_snow_chance(*nz->snow_chance);
|
||||
event->set_snow_duration(*nz->snow_duration);
|
||||
event->set_unknown360(*nz->unknown360);
|
||||
event->set_sky(nz->sky);
|
||||
event->set_unknown331(*nz->unknown331);
|
||||
event->set_zone_exp_multiplier(nz->zone_exp_multiplier);
|
||||
event->set_safe_y(nz->safe_y);
|
||||
event->set_safe_x(nz->safe_x);
|
||||
event->set_safe_z(nz->safe_z);
|
||||
event->set_max_z(nz->max_z);
|
||||
event->set_underworld(nz->underworld);
|
||||
event->set_minclip(nz->minclip);
|
||||
event->set_maxclip(nz->maxclip);
|
||||
event->set_unknown_end(*nz->unknown_end);
|
||||
event->set_zone_short_name2(nz->zone_short_name2);
|
||||
event->set_unknown672(nz->unknown672);
|
||||
event->set_zone_id(nz->zone_id);
|
||||
event->set_zone_instance(nz->zone_instance);
|
||||
event->set_unknown688(nz->unknown688);
|
||||
event->set_unknown692(*nz->unknown692);
|
||||
event->set_fog_density(nz->fog_density);
|
||||
event->set_suspend_buffs(nz->SuspendBuffs);
|
||||
size_t event_size = event->ByteSizeLong();
|
||||
void *event_buffer = malloc(event_size);
|
||||
if (!event->SerializeToArray(event_buffer, event_size)) {
|
||||
Log(Logs::General, Logs::NATS, "zone.%s.%d.entity.%d.event.out: (OP: %d) failed to serialize message", subscribedZoneName.c_str(), subscribedZoneInstance, entity_id, op);
|
||||
return;
|
||||
}
|
||||
SendEvent(op, entity_id, event_buffer, event_size);
|
||||
}
|
||||
+2
-2
@@ -45,8 +45,8 @@ public:
|
||||
void OnSpawnEvent(const EmuOpcode op, uint32 entity_id, Spawn_Struct * spawn);
|
||||
void OnSpecialMessageEvent(uint32 entity_id, SpecialMesg_Struct *sm);
|
||||
void OnWearChangeEvent(uint32 entity_id, WearChange_Struct * wc);
|
||||
void OnZoneComplete(uint32 entity_id);
|
||||
|
||||
void OnZoneCompleteEvent(uint32 entity_id);
|
||||
void OnNewZoneEvent(uint32 entity_id, NewZone_Struct * nz);
|
||||
protected:
|
||||
bool connect();
|
||||
Timer nats_timer;
|
||||
|
||||
Reference in New Issue
Block a user