mirror of
https://github.com/rehlds/rehlds.git
synced 2025-01-14 15:48:04 +03:00
Clone signon data between worlds
This commit is contained in:
parent
00cf3bef53
commit
ca49b33f80
@ -1449,6 +1449,14 @@ bool World::AddSignonData(unsigned char type, unsigned char *data, int size)
|
|||||||
return m_SignonData.IsOverflowed();
|
return m_SignonData.IsOverflowed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool World::AddSignonData(unsigned char* data, int size)
|
||||||
|
{
|
||||||
|
m_SignonData.WriteBuf(data, size);
|
||||||
|
|
||||||
|
return m_SignonData.IsOverflowed();
|
||||||
|
}
|
||||||
|
|
||||||
int World::FindUserMsgByName(char *name)
|
int World::FindUserMsgByName(char *name)
|
||||||
{
|
{
|
||||||
for (UserMsg *pList = m_ClientUserMsgs; pList; pList = pList->next)
|
for (UserMsg *pList = m_ClientUserMsgs; pList; pList = pList->next)
|
||||||
@ -2376,6 +2384,5 @@ delta_t *World::GetEntityDelta() const {
|
|||||||
delta_t *World::GetWeaponDelta() const {
|
delta_t *World::GetWeaponDelta() const {
|
||||||
return Delta::m_WeaponDelta;
|
return Delta::m_WeaponDelta;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPOSE_INTERFACE_FN(CreateWorld, World, WORLD_INTERFACE_VERSION);
|
EXPOSE_INTERFACE_FN(CreateWorld, World, WORLD_INTERFACE_VERSION);
|
||||||
#endif // HOOK_HLTV
|
#endif // HOOK_HLTV
|
||||||
|
@ -120,12 +120,15 @@ public:
|
|||||||
EXT_FUNC bool AddResource(resource_t *resource);
|
EXT_FUNC bool AddResource(resource_t *resource);
|
||||||
EXT_FUNC void AddLightStyle(int index, char *style);
|
EXT_FUNC void AddLightStyle(int index, char *style);
|
||||||
EXT_FUNC bool AddSignonData(unsigned char type, unsigned char *data, int size);
|
EXT_FUNC bool AddSignonData(unsigned char type, unsigned char *data, int size);
|
||||||
|
bool AddSignonData(unsigned char* data, int size);
|
||||||
EXT_FUNC bool AddUserMessage(int msgNumber, int size, char *name);
|
EXT_FUNC bool AddUserMessage(int msgNumber, int size, char *name);
|
||||||
EXT_FUNC void AddBaselineEntity(int index, entity_state_t *ent);
|
EXT_FUNC void AddBaselineEntity(int index, entity_state_t *ent);
|
||||||
EXT_FUNC void AddInstancedBaselineEntity(int index, entity_state_t *ent);
|
EXT_FUNC void AddInstancedBaselineEntity(int index, entity_state_t *ent);
|
||||||
EXT_FUNC void UpdatePlayer(int playerNum, int userId, char *infostring, char *hashedcdkey);
|
EXT_FUNC void UpdatePlayer(int playerNum, int userId, char *infostring, char *hashedcdkey);
|
||||||
|
|
||||||
EXT_FUNC void WriteFrame(frame_t *frame, unsigned int lastFrameSeqnr, BitBuffer *reliableStream, BitBuffer *unreliableStream, unsigned int deltaSeqNr, unsigned int clientDelta, bool addVoice);
|
EXT_FUNC void WriteFrame(frame_t *frame, unsigned int lastFrameSeqnr, BitBuffer *reliableStream,
|
||||||
|
BitBuffer *unreliableStream, unsigned int deltaSeqNr, unsigned int clientDelta,
|
||||||
|
bool addVoice);
|
||||||
EXT_FUNC void WriteNewData(BitBuffer *stream);
|
EXT_FUNC void WriteNewData(BitBuffer *stream);
|
||||||
EXT_FUNC void WriteClientUpdate(BitBuffer *stream, int playerIndex);
|
EXT_FUNC void WriteClientUpdate(BitBuffer *stream, int playerIndex);
|
||||||
EXT_FUNC void WriteMovevars(BitBuffer *stream);
|
EXT_FUNC void WriteMovevars(BitBuffer *stream);
|
||||||
@ -139,7 +142,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int CompressFrame(frame_t *from, BitBuffer *stream);
|
int CompressFrame(frame_t *from, BitBuffer *stream);
|
||||||
int ParseDeltaHeader(BitBuffer *stream, bool &remove, bool &custom, int &numbase, bool &newbl, int &newblindex, bool full, int &offset);
|
int ParseDeltaHeader(BitBuffer *stream, bool &remove, bool &custom, int &numbase, bool &newbl, int &newblindex,
|
||||||
|
bool full, int &offset);
|
||||||
void SetDirector(IDirector *director);
|
void SetDirector(IDirector *director);
|
||||||
void SetTimeScale(float scale);
|
void SetTimeScale(float scale);
|
||||||
void SetGameGroupAddress(NetAddress *addr);
|
void SetGameGroupAddress(NetAddress *addr);
|
||||||
@ -158,7 +162,8 @@ private:
|
|||||||
void WritePacketEntities(BitBuffer *stream, frame_t *frame, frame_t *deltaframe);
|
void WritePacketEntities(BitBuffer *stream, frame_t *frame, frame_t *deltaframe);
|
||||||
bool WriteDeltaEntities(BitBuffer *stream, frame_t *fullFrame, unsigned int deltaSeqNr, unsigned int clientDelta);
|
bool WriteDeltaEntities(BitBuffer *stream, frame_t *fullFrame, unsigned int deltaSeqNr, unsigned int clientDelta);
|
||||||
|
|
||||||
enum WorldState {
|
enum WorldState
|
||||||
|
{
|
||||||
WORLD_UNDEFINED,
|
WORLD_UNDEFINED,
|
||||||
WORLD_INITIALIZING,
|
WORLD_INITIALIZING,
|
||||||
WORLD_DISCONNECTED,
|
WORLD_DISCONNECTED,
|
||||||
@ -188,9 +193,9 @@ private:
|
|||||||
delta_t *GetEventDelta() const;
|
delta_t *GetEventDelta() const;
|
||||||
delta_t *GetClientDelta() const;
|
delta_t *GetClientDelta() const;
|
||||||
delta_t *GetEntityDelta() const;
|
delta_t *GetEntityDelta() const;
|
||||||
delta_t *GetWeaponDelta() const;
|
|
||||||
delta_t *GetDeltaEncoder(int index, bool custom);
|
delta_t *GetDeltaEncoder(int index, bool custom);
|
||||||
bool IsDeltaEncoder() const;
|
bool IsDeltaEncoder() const;
|
||||||
|
delta_t* GetWeaponDelta() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_IsPaused;
|
bool m_IsPaused;
|
||||||
@ -209,7 +214,8 @@ protected:
|
|||||||
int m_ViewEntity;
|
int m_ViewEntity;
|
||||||
serverinfo_t m_DetailedServerInfo;
|
serverinfo_t m_DetailedServerInfo;
|
||||||
|
|
||||||
enum {
|
enum
|
||||||
|
{
|
||||||
MAX_ENTITIES = 1380,
|
MAX_ENTITIES = 1380,
|
||||||
MAX_INSTANCED_BASELINES = 64,
|
MAX_INSTANCED_BASELINES = 64,
|
||||||
MAX_FRAME_CACHE = 32,
|
MAX_FRAME_CACHE = 32,
|
||||||
|
@ -89,6 +89,8 @@ EXPOSE_SINGLE_INTERFACE(Proxy, IProxy, PROXY_INTERFACE_VERSION);
|
|||||||
#ifdef HLTV_FIXES
|
#ifdef HLTV_FIXES
|
||||||
void Proxy::AddNextWorld()
|
void Proxy::AddNextWorld()
|
||||||
{
|
{
|
||||||
|
BitBuffer temp_buff;
|
||||||
|
temp_buff.Resize(0x8000);
|
||||||
static int num_alloc = 0;
|
static int num_alloc = 0;
|
||||||
static char instance[64];
|
static char instance[64];
|
||||||
snprintf(instance, sizeof(instance), "AddNextWorld_%d", num_alloc++);
|
snprintf(instance, sizeof(instance), "AddNextWorld_%d", num_alloc++);
|
||||||
@ -99,8 +101,11 @@ void Proxy::AddNextWorld()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_World->WriteSigonData(&temp_buff);
|
||||||
|
nextWorld->AddSignonData(temp_buff.GetData(), temp_buff.CurrentSize());
|
||||||
|
|
||||||
nextWorld->RegisterListener(this);
|
nextWorld->RegisterListener(this);
|
||||||
|
|
||||||
m_Worlds.AddTail(nextWorld);
|
m_Worlds.AddTail(nextWorld);
|
||||||
|
|
||||||
if (m_DemoClient.IsActive())
|
if (m_DemoClient.IsActive())
|
||||||
@ -1473,7 +1478,7 @@ void Proxy::ReceiveSignal(ISystemModule *module, unsigned int signal, void *data
|
|||||||
case 6:
|
case 6:
|
||||||
{
|
{
|
||||||
#ifdef HLTV_FIXES
|
#ifdef HLTV_FIXES
|
||||||
if (!m_IsFinishingBroadcast && m_ClientDelay > 0.0)
|
if (!m_IsFinishingBroadcast && m_ClientDelay > 0.f)
|
||||||
{
|
{
|
||||||
//If we finished broadcast we need to get frames from next "World" (Next server map)
|
//If we finished broadcast we need to get frames from next "World" (Next server map)
|
||||||
AddNextWorld();
|
AddNextWorld();
|
||||||
|
@ -144,6 +144,7 @@ public:
|
|||||||
virtual bool AddResource(resource_t *resource) = 0;
|
virtual bool AddResource(resource_t *resource) = 0;
|
||||||
virtual void AddLightStyle(int index, char *style) = 0;
|
virtual void AddLightStyle(int index, char *style) = 0;
|
||||||
virtual bool AddSignonData(unsigned char type, unsigned char *data, int size) = 0;
|
virtual bool AddSignonData(unsigned char type, unsigned char *data, int size) = 0;
|
||||||
|
virtual bool AddSignonData(unsigned char* data, int size) = 0;
|
||||||
virtual bool AddUserMessage(int msgNumber, int size, char *name) = 0;
|
virtual bool AddUserMessage(int msgNumber, int size, char *name) = 0;
|
||||||
virtual void AddBaselineEntity(int index, entity_state_t *ent) = 0;
|
virtual void AddBaselineEntity(int index, entity_state_t *ent) = 0;
|
||||||
virtual void AddInstancedBaselineEntity(int index, entity_state_t *ent) = 0;
|
virtual void AddInstancedBaselineEntity(int index, entity_state_t *ent) = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user