diff options
author | megamage <none@none> | 2009-06-13 09:18:54 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-06-13 09:18:54 -0500 |
commit | ee9c12b48041884267c483ec1d5a197a9d9729ab (patch) | |
tree | ab220e68b73d4164fb8188ddf518b0eb57510e15 | |
parent | 6b7964e3b437102c57dff3f96f16ba181334759a (diff) |
*Some fix of vehicles. Thanks to Seizerkiller.
--HG--
branch : trunk
-rw-r--r-- | src/game/GridNotifiers.cpp | 2 | ||||
-rw-r--r-- | src/game/MovementHandler.cpp | 3 | ||||
-rw-r--r-- | src/game/Object.cpp | 112 | ||||
-rw-r--r-- | src/game/Object.h | 2 | ||||
-rw-r--r-- | src/game/Player.cpp | 17 | ||||
-rw-r--r-- | src/game/Player.h | 2 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 6 | ||||
-rw-r--r-- | src/game/Unit.cpp | 85 | ||||
-rw-r--r-- | src/game/Unit.h | 11 | ||||
-rw-r--r-- | src/game/Vehicle.cpp | 30 | ||||
-rw-r--r-- | src/game/WorldSession.cpp | 13 | ||||
-rw-r--r-- | src/game/WorldSession.h | 1 | ||||
-rw-r--r-- | src/trinityrealm/AuthCodes.h | 1 | ||||
-rw-r--r-- | src/trinityrealm/AuthSocket.cpp | 12 | ||||
-rw-r--r-- | src/trinityrealm/AuthSocket.h | 5 | ||||
-rw-r--r-- | src/trinityrealm/Main.cpp | 23 | ||||
-rw-r--r-- | src/trinityrealm/RealmList.cpp | 5 |
17 files changed, 154 insertions, 176 deletions
diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp index afbe2b898af..b87d57563af 100644 --- a/src/game/GridNotifiers.cpp +++ b/src/game/GridNotifiers.cpp @@ -135,7 +135,7 @@ MessageDistDeliverer::Visit(PlayerMapType &m) SendPacket(*i); } - if(target->m_seer == target) + if(target->m_seer == target || target->m_Vehicle) SendPacket(target); } } diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index c30e8198850..aa80d021617 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -346,6 +346,9 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) return; mover->GetMap()->CreatureRelocation((Creature*)mover, movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o); } + + //sLog.outString("Receive Movement Packet %s:", opcodeTable[recv_data.GetOpcode()]); + //mover->OutMovementInfo(); } void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recv_data) diff --git a/src/game/Object.cpp b/src/game/Object.cpp index df5db7fb9c0..01a07770bd1 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -119,7 +119,20 @@ void Object::_Create( uint32 guidlow, uint32 entry, HighGuid guidhigh ) uint64 guid = MAKE_NEW_GUID(guidlow, entry, guidhigh); SetUInt64Value( OBJECT_FIELD_GUID, guid ); - SetUInt32Value( OBJECT_FIELD_TYPE, m_objectType ); + uint32 type = 0; + switch(m_objectType) + { + //case TYPEID_ITEM: type = 3; break; + //case TYPEID_CONTAINER: type = 7; break; //+4 + //case TYPEID_UNIT: type = 9; break; //+2 + //case TYPEID_PLAYER: type = 25; break; //+16 + //case TYPEID_GAMEOBJECT: type = 33; break; //+8 + case TYPEID_DYNAMICOBJECT: type = 65; break; //+32 + //case TYPEID_CORPSE: type = 129; break; //+64 + default: type = m_objectType; break; + } + SetUInt32Value( OBJECT_FIELD_TYPE, type ); + //SetUInt32Value( OBJECT_FIELD_TYPE, m_objectType ); m_PackGUID.wpos(0); m_PackGUID.appendPackGUID(GetGUID()); } @@ -258,42 +271,6 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const // 0x20 if (flags & UPDATEFLAG_LIVING) { - uint32 flags2 = ((Unit*)this)->GetUnitMovementFlags(); - switch(GetTypeId()) - { - case TYPEID_UNIT: - { - if(((Creature*)this)->isVehicle()) - ((Unit*)this)->m_movementInfo.unk1 |= 0x20; // always allow pitch - if(((Unit*)this)->isInFlight()) - flags2 |= (MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_LEVITATING); - } - break; - case TYPEID_PLAYER: - { - // remove unknown, unused etc flags for now - flags2 &= ~MOVEMENTFLAG_SPLINE2; // will be set manually - - if(((Player*)this)->isInFlight()) - { - WPAssert(((Player*)this)->GetMotionMaster()->GetCurrentMovementGeneratorType() == FLIGHT_MOTION_TYPE); - flags2 = (MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_SPLINE2); - } - } - break; - } - - *data << uint32(flags2); // movement flags - *data << uint16(((Unit*)this)->m_movementInfo.unk1);// unknown 2.3.0 - *data << uint32(getMSTime()); // time (in milliseconds) - - // position - *data << ((WorldObject*)this)->GetPositionX(); - *data << ((WorldObject*)this)->GetPositionY(); - *data << ((WorldObject*)this)->GetPositionZ(); - *data << ((WorldObject*)this)->GetOrientation(); - - // 0x00000200 ((Unit*)this)->BuildMovementPacket(data); *data << ((Unit*)this)->GetSpeed( MOVE_WALK ); @@ -444,29 +421,8 @@ void Object::_BuildMovementUpdate(ByteBuffer * data, uint16 flags) const // 0x10 if(flags & UPDATEFLAG_HIGHGUID) { - switch(GetTypeId()) - { - case TYPEID_OBJECT: - case TYPEID_ITEM: - case TYPEID_CONTAINER: - case TYPEID_GAMEOBJECT: - case TYPEID_DYNAMICOBJECT: - case TYPEID_CORPSE: - *data << uint32(GetGUIDHigh()); // GetGUIDHigh() - break; - case TYPEID_UNIT: - *data << uint32(0x0000000B); // unk, can be 0xB or 0xC - break; - case TYPEID_PLAYER: - if(flags & UPDATEFLAG_SELF) - *data << uint32(0x0000002F); // unk, can be 0x15 or 0x22 - else - *data << uint32(0x00000008); // unk, can be 0x7 or 0x8 - break; - default: - *data << uint32(0x00000000); // unk - break; - } + // not high guid + *data << uint32(0x00000000); // unk } // 0x4 @@ -1681,43 +1637,11 @@ void WorldObject::BuildMonsterChat(WorldPacket *data, uint8 msgtype, char const* *data << (uint8)0; // ChatTag } -void WorldObject::BuildHeartBeatMsg(WorldPacket *data) const +void Unit::BuildHeartBeatMsg(WorldPacket *data) const { - //Heartbeat message cannot be used for non-units - if (!isType(TYPEMASK_UNIT)) - return; - data->Initialize(MSG_MOVE_HEARTBEAT, 32); data->append(GetPackGUID()); - *data << uint32(((Unit*)this)->GetUnitMovementFlags()); // movement flags - *data << uint16(((Unit*)this)->m_movementInfo.unk1); // 2.3.0 - *data << uint32(getMSTime()); // time - *data << m_positionX; - *data << m_positionY; - *data << m_positionZ; - *data << m_orientation; - - ((Unit*)this)->BuildMovementPacket(data); -} - -void WorldObject::BuildTeleportAckMsg(WorldPacket *data, float x, float y, float z, float ang) const -{ - //TeleportAck message cannot be used for non-units - if (!isType(TYPEMASK_UNIT)) - return; - - data->Initialize(MSG_MOVE_TELEPORT_ACK, 41); - data->append(GetPackGUID()); - *data << uint32(0); // this value increments every time - *data << uint32(((Unit*)this)->GetUnitMovementFlags()); // movement flags - *data << uint16(((Unit*)this)->m_movementInfo.unk1); // 2.3.0 - *data << uint32(getMSTime()); // time - *data << x; - *data << y; - *data << z; - *data << ang; - - ((Unit*)this)->BuildMovementPacket(data); + BuildMovementPacket(data); } void WorldObject::SendMessageToSet(WorldPacket *data, bool /*fake*/) diff --git a/src/game/Object.h b/src/game/Object.h index 037bb94aede..bf5df0148c9 100644 --- a/src/game/Object.h +++ b/src/game/Object.h @@ -499,8 +499,6 @@ class TRINITY_DLL_SPEC WorldObject : public Object virtual void SendMessageToSet(WorldPacket *data, bool self); virtual void SendMessageToSetInRange(WorldPacket *data, float dist, bool self); - void BuildHeartBeatMsg( WorldPacket *data ) const; - void BuildTeleportAckMsg( WorldPacket *data, float x, float y, float z, float ang) const; void MonsterSay(const char* text, uint32 language, uint64 TargetGuid); void MonsterYell(const char* text, uint32 language, uint64 TargetGuid); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 188a41f5b94..cd0cb336f64 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1602,6 +1602,15 @@ uint8 Player::chatTag() const return 0; } +void Player::SendTeleportAckMsg() +{ + WorldPacket data(MSG_MOVE_TELEPORT_ACK, 41); + data.append(GetPackGUID()); + data << uint32(0); // this value increments every time + BuildMovementPacket(&data); + GetSession()->SendPacket(&data); +} + bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options) { if(!MapManager::IsValidMapCoord(mapid, x, y, z, orientation)) @@ -1695,9 +1704,11 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati // near teleport, triggering send MSG_MOVE_TELEPORT_ACK from client at landing if(!GetSession()->PlayerLogout()) { - WorldPacket data; - BuildTeleportAckMsg(&data, x, y, z, orientation); - GetSession()->SendPacket(&data); + WorldLocation oldLoc; + GetPosition(oldLoc); + Relocate(x, y, z, orientation); + SendTeleportAckMsg(); + Relocate(oldLoc); } } else diff --git a/src/game/Player.h b/src/game/Player.h index f6784e402a2..6b2712b0aa9 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1629,6 +1629,8 @@ class TRINITY_DLL_SPEC Player : public Unit void SendMessageToSetInRange(WorldPacket *data, float fist, bool self);// overwrite Object::SendMessageToSetInRange void SendMessageToSetInRange(WorldPacket *data, float dist, bool self, bool own_team_only); + void SendTeleportAckMsg(); + static void DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmChars = true); Corpse *GetCorpse() const; diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 051ff8bb198..15bdaaeee21 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2823,7 +2823,6 @@ void Spell::EffectPersistentAA(uint32 i) delete dynObj; return; } - dynObj->SetUInt32Value(OBJECT_FIELD_TYPE, 65); dynObj->SetUInt32Value(DYNAMICOBJECT_BYTES, 0x01eeeeee); caster->AddDynObject(dynObj); dynObj->GetMap()->Add(dynObj); @@ -3569,10 +3568,8 @@ void Spell::EffectDistract(uint32 /*i*/) if ( unitTarget->GetTypeId() == TYPEID_PLAYER ) { // For players just turn them - WorldPacket data; - ((Player*)unitTarget)->BuildTeleportAckMsg(&data, unitTarget->GetPositionX(), unitTarget->GetPositionY(), unitTarget->GetPositionZ(), angle); - ((Player*)unitTarget)->GetSession()->SendPacket( &data ); ((Player*)unitTarget)->SetPosition(unitTarget->GetPositionX(), unitTarget->GetPositionY(), unitTarget->GetPositionZ(), angle, false); + ((Player*)unitTarget)->SendTeleportAckMsg(); } else { @@ -3625,7 +3622,6 @@ void Spell::EffectAddFarsight(uint32 i) delete dynObj; return; } - dynObj->SetUInt32Value(OBJECT_FIELD_TYPE, 65); dynObj->SetUInt32Value(DYNAMICOBJECT_BYTES, 0x80000002); m_caster->AddDynObject(dynObj); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 69baf10ef68..70c469f1b29 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -417,6 +417,27 @@ void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end) addUnitState(UNIT_STAT_MOVE); } +void Unit::SendMonsterMoveTransport(Vehicle *vehicle, bool apply) +{ + WorldPacket data(SMSG_MONSTER_MOVE_TRANSPORT, GetPackGUID().size()+vehicle->GetPackGUID().size()); + data.append(GetPackGUID()); + data.append(vehicle->GetPackGUID()); + data << int8(GetTransSeat()); + data << uint8(0); + data << GetPositionX() - vehicle->GetPositionX(); + data << GetPositionY() - vehicle->GetPositionY(); + data << GetPositionZ() - vehicle->GetPositionZ(); + data << uint32(getMSTime()); + data << uint8(4); + data << GetTransOffsetO(); + data << uint32(MOVEFLAG_ENTER_TRANSPORT); + data << uint32(0); // move time + data << GetTransOffsetX(); + data << GetTransOffsetY(); + data << GetTransOffsetZ(); + SendMessageToSet(&data, true); +} + void Unit::resetAttackTimer(WeaponAttackType type) { m_attackTimer[type] = uint32(GetAttackTime(type) * m_modAttackSpeedPct[type]); @@ -14371,9 +14392,12 @@ void Unit::ExitVehicle() m_Vehicle->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_24); //setFaction((GetTeam() == ALLIANCE) ? GetCreatureInfo()->faction_A : GetCreatureInfo()->faction_H); - clearUnitState(UNIT_STAT_ONVEHICLE); - RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); + // This should be done before dismiss, because there may be some aura removal + Vehicle *vehicle = m_Vehicle; + m_Vehicle = NULL; + clearUnitState(UNIT_STAT_ONVEHICLE); + RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_FLY_UNK1); m_movementInfo.t_x = 0; m_movementInfo.t_y = 0; m_movementInfo.t_z = 0; @@ -14382,20 +14406,16 @@ void Unit::ExitVehicle() m_movementInfo.t_seat = 0; //Send leave vehicle - WorldPacket data; if(GetTypeId() == TYPEID_PLAYER) { ((Player*)this)->SetClientControl(this, 1); - ((Player*)this)->BuildTeleportAckMsg(&data, GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation()); - ((Player*)this)->GetSession()->SendPacket(&data); + ((Player*)this)->SendTeleportAckMsg(); } - + WorldPacket data; BuildHeartBeatMsg(&data); SendMessageToSet(&data, false); - // This should be done before dismiss, because there may be some aura removal - Vehicle *vehicle = m_Vehicle; - m_Vehicle = NULL; + //SendMonsterMoveTransport(m_Vehicle, false); if(vehicle->GetOwnerGUID() == GetGUID()) vehicle->Dismiss(); @@ -14403,15 +14423,43 @@ void Unit::ExitVehicle() void Unit::BuildMovementPacket(ByteBuffer *data) const { + switch(GetTypeId()) + { + case TYPEID_UNIT: + if(isInFlight()) + const_cast<Unit*>(this)->AddUnitMovementFlag(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_LEVITATING); + break; + case TYPEID_PLAYER: + // remove unknown, unused etc flags for now + const_cast<Unit*>(this)->RemoveUnitMovementFlag(MOVEMENTFLAG_SPLINE2); + if(isInFlight()) + { + WPAssert(const_cast<Unit*>(this)->GetMotionMaster()->GetCurrentMovementGeneratorType() == FLIGHT_MOTION_TYPE); + const_cast<Unit*>(this)->AddUnitMovementFlag(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_SPLINE2); + } + break; + } + + *data << uint32(GetUnitMovementFlags()); // movement flags + *data << uint16(m_movementInfo.unk1); // 2.3.0 + *data << uint32(getMSTime()); // time + *data << GetPositionX(); + *data << GetPositionY(); + *data << GetPositionZ(); + *data << GetOrientation(); + // 0x00000200 if(GetUnitMovementFlags() & MOVEMENTFLAG_ONTRANSPORT) { if(m_Vehicle) - *data << (uint64)m_Vehicle->GetGUID(); + data->append(m_Vehicle->GetPackGUID()); else if(GetTransport()) - *data << (uint64)GetTransport()->GetGUID(); + data->append(GetTransport()->GetPackGUID()); else - *data << (uint64)0; //This will cause client crash + { + sLog.outError("Unit %u does not have transport!", GetEntry()); + *data << (uint8)0; + } *data << float (GetTransOffsetX()); *data << float (GetTransOffsetY()); *data << float (GetTransOffsetZ()); @@ -14441,6 +14489,19 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const *data << (float)m_movementInfo.u_unk1; } +void Unit::OutMovementInfo() const +{ + sLog.outString("MovementInfo: Flag %u, Unk1 %u, Time %u, Pos %f %f %f %f, Fall %u", m_movementInfo.flags, (uint32)m_movementInfo.unk1, m_movementInfo.time, GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation(), m_movementInfo.fallTime); + if(m_movementInfo.flags & MOVEMENTFLAG_ONTRANSPORT) + sLog.outString("Transport: GUID " UI64FMTD ", Pos %f %f %f %f, Time %u, Seat %d", m_movementInfo.t_guid, m_movementInfo.t_x, m_movementInfo.t_y, m_movementInfo.t_z, m_movementInfo.t_o, m_movementInfo.t_time, (int32)m_movementInfo.t_seat); + if((m_movementInfo.flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2)) || (m_movementInfo.unk1 & 0x20)) + sLog.outString("Pitch: %f", m_movementInfo.s_pitch); + if(m_movementInfo.flags & MOVEMENTFLAG_JUMPING) + sLog.outString("Jump: speedz %f, sin %f, cos %f, speedxy %f", m_movementInfo.j_zspeed, m_movementInfo.j_sinAngle, m_movementInfo.j_cosAngle, m_movementInfo.j_xyspeed); + if(m_movementInfo.flags & MOVEMENTFLAG_SPLINE) + sLog.outString("Spline: %f", m_movementInfo.u_unk1); +} + void Unit::NearTeleportTo( float x, float y, float z, float orientation, bool casting /*= false*/ ) { if(GetTypeId() == TYPEID_PLAYER) diff --git a/src/game/Unit.h b/src/game/Unit.h index 7c5bad7c94d..b11af5062e7 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -625,6 +625,7 @@ enum MoveFlags MOVEFLAG_WALK = 0x00001000, MOVEFLAG_FLY = 0x00002000, MOVEFLAG_GLIDE = 0x00003000, // dragon + MOVEFLAG_ENTER_TRANSPORT = 0x00800000, }; enum MovementFlags @@ -647,10 +648,10 @@ enum MovementFlags MOVEMENTFLAG_FALLING = 0x00004000, // 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000 MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also - MOVEMENTFLAG_FLY_UP = 0x00400000, + MOVEMENTFLAG_FLY_UP = 0x00400000, // press "space" when flying MOVEMENTFLAG_CAN_FLY = 0x00800000, - MOVEMENTFLAG_FLYING = 0x01000000, - MOVEMENTFLAG_FLYING2 = 0x02000000, // Actual flying mode + MOVEMENTFLAG_FLYING = 0x01000000, // fly land + MOVEMENTFLAG_FLYING2 = 0x02000000, // fly hover MOVEMENTFLAG_SPLINE = 0x04000000, // used for flight paths MOVEMENTFLAG_SPLINE2 = 0x08000000, // used for flight paths MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water @@ -1311,10 +1312,14 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 MoveFlags, uint32 time, float speedZ, Player *player = NULL); //void SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player = NULL); void SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end); + void SendMonsterMoveTransport(Vehicle *vehicle, bool apply); void SendMonsterMoveWithSpeed(float x, float y, float z, uint32 transitTime = 0, Player* player = NULL); void SendMonsterMoveWithSpeedToCurrentDestination(Player* player = NULL); void SendMovementFlagUpdate(); + void BuildHeartBeatMsg(WorldPacket *data) const; + void OutMovementInfo() const; + bool isAlive() const { return (m_deathState == ALIVE); }; bool isDead() const { return ( m_deathState == DEAD || m_deathState == CORPSE ); }; DeathState getDeathState() { return m_deathState; }; diff --git a/src/game/Vehicle.cpp b/src/game/Vehicle.cpp index 8cac1c64b7c..16a995eedee 100644 --- a/src/game/Vehicle.cpp +++ b/src/game/Vehicle.cpp @@ -30,7 +30,7 @@ Vehicle::Vehicle() : Creature(), m_vehicleInfo(NULL), m_usableSeatNum(0) { m_summonMask |= SUMMON_MASK_VEHICLE; - m_updateFlag = (UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_VEHICLE); + m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_VEHICLE); } Vehicle::~Vehicle() @@ -234,32 +234,28 @@ bool Vehicle::AddPassenger(Unit *unit, int8 seatId) //SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_24); - unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); + unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_FLY_UNK1); VehicleSeatEntry const *veSeat = seat->second.seatInfo; unit->m_movementInfo.t_x = veSeat->m_attachmentOffsetX; unit->m_movementInfo.t_y = veSeat->m_attachmentOffsetY; unit->m_movementInfo.t_z = veSeat->m_attachmentOffsetZ; unit->m_movementInfo.t_o = 0; - unit->m_movementInfo.t_time = 4; + unit->m_movementInfo.t_time = 0; // 1 for player unit->m_movementInfo.t_seat = seat->first; - unit->Relocate(GetPositionX() + unit->m_movementInfo.t_x, - GetPositionY() + unit->m_movementInfo.t_y, - GetPositionZ() + unit->m_movementInfo.t_z, - GetOrientation()); + if(unit->GetTypeId() == TYPEID_PLAYER && seat->first == 0 && seat->second.seatInfo->IsUsable()) // not right + SetCharmedBy(unit, CHARM_TYPE_VEHICLE); - WorldPacket data; - if(unit->GetTypeId() == TYPEID_PLAYER) + if(false) { - if(seat->first == 0 && seat->second.seatInfo->IsUsable()) // not right - SetCharmedBy(unit, CHARM_TYPE_VEHICLE); - - ((Player*)unit)->BuildTeleportAckMsg(&data, unit->GetPositionX(), unit->GetPositionY(), unit->GetPositionZ(), unit->GetOrientation()); - ((Player*)unit)->GetSession()->SendPacket(&data); + unit->SendMonsterMoveTransport(this, true); + } + else + { + if(unit->GetTypeId() == TYPEID_PLAYER) + ((Player*)unit)->SendTeleportAckMsg(); + unit->SendMovementFlagUpdate(); } - - unit->BuildHeartBeatMsg(&data); - unit->SendMessageToSet(&data, false); return true; } diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp index 7c6da00b409..6c2b9cd9932 100644 --- a/src/game/WorldSession.cpp +++ b/src/game/WorldSession.cpp @@ -679,19 +679,6 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo *mi) } } -void WorldSession::OutMovementInfo(MovementInfo *mi) -{ - sLog.outString("MovementInfo: Flag %u, Unk1 %u, Time %u, Pos %f %f %f %f, Fall %u", mi->flags, (uint32)mi->unk1, mi->time, mi->x, mi->y, mi->z, mi->o, mi->fallTime); - if(mi->flags & MOVEMENTFLAG_ONTRANSPORT) - sLog.outString("Transport: GUID " I64FMT ", Pos %f %f %f %f, Time %u, Seat %d", mi->t_guid, mi->t_x, mi->t_y, mi->t_z, mi->t_o, mi->t_time, (int32)mi->t_seat); - if((mi->flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2)) || (mi->unk1 & 0x20)) - sLog.outString("Pitch: %f", mi->s_pitch); - if(mi->flags & MOVEMENTFLAG_JUMPING) - sLog.outString("Jump: speedz %f, sin %f, cos %f, speedxy %f", mi->j_zspeed, mi->j_sinAngle, mi->j_cosAngle, mi->j_xyspeed); - if(mi->flags & MOVEMENTFLAG_SPLINE) - sLog.outString("Spline: %f", mi->u_unk1); -} - void WorldSession::ReadAddonsInfo(WorldPacket &data) { if (data.rpos() + 4 > data.size()) diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h index 6d20d50f22e..30be2efd304 100644 --- a/src/game/WorldSession.h +++ b/src/game/WorldSession.h @@ -112,7 +112,6 @@ class TRINITY_DLL_SPEC WorldSession void SendAddonsInfo(); void ReadMovementInfo(WorldPacket &data, MovementInfo *mi); - void OutMovementInfo(MovementInfo *mi); void SendPacket(WorldPacket const* packet); void SendNotification(const char *format,...) ATTR_PRINTF(2,3); diff --git a/src/trinityrealm/AuthCodes.h b/src/trinityrealm/AuthCodes.h index 467f9826676..4ef5e4e8699 100644 --- a/src/trinityrealm/AuthCodes.h +++ b/src/trinityrealm/AuthCodes.h @@ -67,6 +67,7 @@ enum LoginResult }; // we need to stick to 1 version or half of the stuff will work for someone +// others will not and opposite // will only support WoW, WoW:TBC and WoW:WotLK 3.1.3 client build 9947... #define EXPECTED_TRINITY_CLIENT_BUILD {9947, 0} diff --git a/src/trinityrealm/AuthSocket.cpp b/src/trinityrealm/AuthSocket.cpp index 9933a237981..8c9eab653ec 100644 --- a/src/trinityrealm/AuthSocket.cpp +++ b/src/trinityrealm/AuthSocket.cpp @@ -21,19 +21,17 @@ /** \file \ingroup realmd */ -#include <openssl/md5.h> #include "Common.h" -#include "Auth/Sha1.h" -#include "Config/ConfigEnv.h" #include "Database/DatabaseEnv.h" - -#include "AuthCodes.h" -#include "AuthSocket.h" #include "ByteBuffer.h" +#include "Config/ConfigEnv.h" #include "Log.h" #include "RealmList.h" - +#include "AuthSocket.h" +#include "AuthCodes.h" +#include <openssl/md5.h> +#include "Auth/Sha1.h" //#include "Util.h" -- for commented utf8ToUpperOnlyLatin extern RealmList m_realmList; diff --git a/src/trinityrealm/AuthSocket.h b/src/trinityrealm/AuthSocket.h index d20e8429752..43b880a1e74 100644 --- a/src/trinityrealm/AuthSocket.h +++ b/src/trinityrealm/AuthSocket.h @@ -25,6 +25,8 @@ #ifndef _AUTHSOCKET_H #define _AUTHSOCKET_H +#include "Common.h" +#include "Auth/BigNumber.h" #include "sockets/TcpSocket.h" #include "sockets/SocketHandler.h" #include "sockets/ListenSocket.h" @@ -32,9 +34,6 @@ #include "sockets/Parse.h" #include "sockets/Socket.h" -#include "Common.h" -#include "Auth/BigNumber.h" - /// Handle login commands class AuthSocket: public TcpSocket { diff --git a/src/trinityrealm/Main.cpp b/src/trinityrealm/Main.cpp index 68449ed3d71..3d934f4ba85 100644 --- a/src/trinityrealm/Main.cpp +++ b/src/trinityrealm/Main.cpp @@ -22,19 +22,18 @@ /// @{ /// \file -#include <openssl/opensslv.h> -#include <openssl/crypto.h> - #include "Common.h" -#include "Config/ConfigEnv.h" #include "Database/DatabaseEnv.h" -#include "sockets/ListenSocket.h" +#include "RealmList.h" -#include "AuthSocket.h" +#include "Config/ConfigEnv.h" #include "Log.h" -#include "RealmList.h" +#include "sockets/ListenSocket.h" +#include "AuthSocket.h" #include "SystemConfig.h" #include "Util.h" +#include <openssl/opensslv.h> +#include <openssl/crypto.h> // Format is YYYYMMDDRR where RR is the change in the conf file // for that day. @@ -149,6 +148,9 @@ extern int main(int argc, char **argv) sLog.outError("Could not find configuration file %s.", cfg_file); return 1; } + + sLog.outString( "%s (realm-daemon)", _FULLVERSION ); + sLog.outString( "<Ctrl-C> to stop.\n" ); sLog.outString("Using configuration file %s.", cfg_file); ///- Check the version of the configuration file @@ -172,9 +174,6 @@ extern int main(int argc, char **argv) sLog.outDetail("WARNING: Minimal required version [OpenSSL 0.9.8k]"); } - sLog.outString( "%s (realm-daemon)", _FULLVERSION ); - sLog.outString( "<Ctrl-C> to stop.\n" ); - /// realmd PID file creation std::string pidfile = sConfig.GetStringDefault("PidFile", ""); if(!pidfile.empty()) @@ -261,7 +260,7 @@ extern int main(int argc, char **argv) sLog.outError("Can't set used processors (hex): %x", curAff); } } - sLog.outString(""); + sLog.outString(); } bool Prio = sConfig.GetBoolDefault("ProcessPriority", false); @@ -272,7 +271,7 @@ extern int main(int argc, char **argv) sLog.outString("TrinityRealm process priority class set to HIGH"); else sLog.outError("ERROR: Can't set realmd process priority class."); - sLog.outString(""); + sLog.outString(); } } #endif diff --git a/src/trinityrealm/RealmList.cpp b/src/trinityrealm/RealmList.cpp index 9f9e39df050..6a3d6b47e0f 100644 --- a/src/trinityrealm/RealmList.cpp +++ b/src/trinityrealm/RealmList.cpp @@ -23,10 +23,9 @@ */ #include "Common.h" -#include "Database/DatabaseEnv.h" -#include "Policies/SingletonImp.h" - #include "RealmList.h" +#include "Policies/SingletonImp.h" +#include "Database/DatabaseEnv.h" INSTANTIATE_SINGLETON_1( RealmList ); |