diff --git a/SKY.inc b/SKY.inc index 5aa99fe..ca00682 100644 --- a/SKY.inc +++ b/SKY.inc @@ -10,7 +10,8 @@ enum E_SYNC_TYPES E_AIM_SYNC, E_VEHICLE_SYNC, E_PASSENGER_SYNC, - E_SPECTATING_SYNC + E_SPECTATING_SYNC, + E_LAST_SYNC }; // Make a player appear to spawn for all players but himself diff --git a/src/CTypes.h b/src/CTypes.h index a579e30..2a08ee5 100644 --- a/src/CTypes.h +++ b/src/CTypes.h @@ -1,4 +1,3 @@ - typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; @@ -12,9 +11,4 @@ typedef float FLOAT; #ifndef MAX_PATH #define MAX_PATH 260 -#endif -/* -#ifndef PCHAR -typedef unsigned char *PCHAR; -#endif -*/ \ No newline at end of file +#endif \ No newline at end of file diff --git a/src/Global.cpp b/src/Global.cpp new file mode 100644 index 0000000..9272cc2 --- /dev/null +++ b/src/Global.cpp @@ -0,0 +1,7 @@ +#include "Global.h" + +namespace Global +{ + BOOL disableSyncBugs = true; + BOOL knifeSync = true; +}; \ No newline at end of file diff --git a/src/Global.h b/src/Global.h new file mode 100644 index 0000000..035521a --- /dev/null +++ b/src/Global.h @@ -0,0 +1,22 @@ +#ifndef SKY_GLOBAL +#define SKY_GLOBAL + +#include "CTypes.h" + +namespace Global +{ + enum SyncTypes + { + E_PLAYER_SYNC = 0, + E_AIM_SYNC, + E_VEHICLE_SYNC, + E_PASSENGER_SYNC, + E_SPECTATING_SYNC, + E_LAST_SYNC + }; + + extern BOOL disableSyncBugs; + extern BOOL knifeSync; +}; + +#endif \ No newline at end of file diff --git a/src/Hooks.cpp b/src/Hooks.cpp index 1a5d7d0..23b336a 100644 --- a/src/Hooks.cpp +++ b/src/Hooks.cpp @@ -39,6 +39,7 @@ #include "Scripting.h" #include "Utils.h" #include "Versions.h" +#include "Player.h" #include "main.h" #include #include @@ -74,11 +75,6 @@ using std::isfinite; extern void *pAMXFunctions; -BOOL knifeSync = true; -int lastAnim[1000] = {0}; -DWORD lastUpdateTick[1000] = {0}; -BOOL blockKeySync[1000] = {0}; - // Y_Less - original YSF bool Unlock(void *address, size_t len) { @@ -143,19 +139,6 @@ static bool IsPlayerUpdatePacket(unsigned char packetId) packetId == ID_TRAILER_SYNC); } -BYTE lastWeapon[1000] = {0}; -BYTE fakeHealth[1000] = {0}; -BYTE fakeArmour[1000] = {0}; -glm::quat *fakeQuat[1000]; -BOOL disableSyncBugs = true; -BOOL infiniteAmmo[1000] = {0}; - -BOOL syncDataFrozen[1000] = {0}; -BOOL syncAimDataFrozen[1000] = {0}; -BOOL syncVehicleDataFrozen[1000] = {0}; -BOOL syncPassengerDataFrozen[1000] = {0}; -BOOL syncSpectatingDataFrozen[1000] = {0}; - BYTE GetPacketID(Packet *p) { if (p == 0) @@ -186,7 +169,7 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) if (IsPlayerUpdatePacket(packetId)) { - lastUpdateTick[playerid] = GetTickCount(); + Player::lastUpdateTick[playerid] = GetTickCount(); } if (packetId == ID_PLAYER_SYNC) @@ -220,7 +203,7 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) d->wKeys &= ~128; } - if (disableSyncBugs) + if (Global::disableSyncBugs) { // Prevent "ghost shooting" bugs if ((d->byteWeapon >= WEAPON_COLT45 && d->byteWeapon <= WEAPON_SNIPER) || d->byteWeapon == WEAPON_MINIGUN) @@ -406,54 +389,54 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) } auto lastSyncData = &Versions::getLastSyncData(playerid); - if (syncDataFrozen[playerid]) + if (Player::syncDataFrozen[playerid]) { - d = lastSyncData; + std::memcpy(d, lastSyncData, sizeof(typename Structs::CSyncData)); } else { - lastSyncData = d; + std::memcpy(lastSyncData, d, sizeof(typename Structs::CSyncData)); } - if (blockKeySync[playerid]) + if (Player::blockKeySync[playerid]) { d->wKeys = 0; } - if (fakeHealth[playerid] != 255) + if (Player::fakeHealth[playerid] != 255) { - d->byteHealth = fakeHealth[playerid]; + d->byteHealth = Player::fakeHealth[playerid]; } - if (fakeArmour[playerid] != 255) + if (Player::fakeArmour[playerid] != 255) { - d->byteArmour = fakeArmour[playerid]; + d->byteArmour = Player::fakeArmour[playerid]; } - if (fakeQuat[playerid] != NULL) + if (Player::fakeQuat[playerid] != NULL) { // NOT AT ALL SURE WHICH ELEMENTS OF THIS ARRAY ARE WHAT. THIS CODE MIGHT BE COMPLETELY WRONG. // SOMEONE WHO KNOWS WHAT THEY'RE DOING PLEASE CHECK THIS. // 03/09/18 - Whitetiger - d->fQuaternion[0] = fakeQuat[playerid]->w; // angle - d->fQuaternion[1] = fakeQuat[playerid]->x; // x - d->fQuaternion[2] = fakeQuat[playerid]->y; // y - d->fQuaternion[3] = fakeQuat[playerid]->z; // z + d->fQuaternion[0] = Player::fakeQuat[playerid]->w; // angle + d->fQuaternion[1] = Player::fakeQuat[playerid]->x; // x + d->fQuaternion[2] = Player::fakeQuat[playerid]->y; // y + d->fQuaternion[3] = Player::fakeQuat[playerid]->z; // z } if (d->byteWeapon == 44 || d->byteWeapon == 45) { d->wKeys &= ~4; } - else if (d->byteWeapon == 4 && knifeSync == false) + else if (d->byteWeapon == 4 && Global::knifeSync == false) { d->wKeys &= ~128; } int anim = d->dwAnimationData; - lastAnim[playerid] = anim; - - lastWeapon[playerid] = d->byteWeapon; + + Player::lastWeapon[playerid] = d->byteWeapon; + Player::lastSyncPacket[playerid] = Global::SyncTypes::E_PLAYER_SYNC; } if (packetId == ID_AIM_SYNC) @@ -473,17 +456,20 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) } auto lastAimSyncData = &Versions::getLastAimSyncData(playerid); - if (syncAimDataFrozen[playerid]) + if (Player::syncAimDataFrozen[playerid]) { - d = lastAimSyncData; + std::memcpy(d, lastAimSyncData, sizeof(typename Structs::CAimSyncData)); } else { - lastAimSyncData = d; + std::memcpy(lastAimSyncData, d, sizeof(typename Structs::CAimSyncData)); } // Fix first-person up/down aim sync - if (lastWeapon[playerid] == 34 || lastWeapon[playerid] == 35 || lastWeapon[playerid] == 36 || lastWeapon[playerid] == 43) + if (Player::lastWeapon[playerid] == 34 + || Player::lastWeapon[playerid] == 35 + || Player::lastWeapon[playerid] == 36 + || Player::lastWeapon[playerid] == 43) { d->fZAim = -d->vecFront.fZ; @@ -497,10 +483,12 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) } } - if (infiniteAmmo[playerid]) + if (Player::infiniteAmmo[playerid]) { d->byteCameraZoom = 2; } + + Player::lastSyncPacket[playerid] = Global::SyncTypes::E_AIM_SYNC; } if (packetId == ID_VEHICLE_SYNC) @@ -522,13 +510,13 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) } auto lastVehicleSyncData = &Versions::getLastVehicleSyncData(playerid); - if (syncVehicleDataFrozen[playerid]) + if (Player::syncVehicleDataFrozen[playerid]) { - d = lastVehicleSyncData; + std::memcpy(d, lastVehicleSyncData, sizeof(typename Structs::CVehicleSyncData)); } else { - lastVehicleSyncData = d; + std::memcpy(lastVehicleSyncData, d, sizeof(typename Structs::CVehicleSyncData)); } if (d->bytePlayerWeapon > 46 || (d->bytePlayerWeapon > 18 && d->bytePlayerWeapon < 22)) @@ -536,15 +524,17 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) d->bytePlayerWeapon = 0; } - if (fakeHealth[playerid] != 255) + if (Player::fakeHealth[playerid] != 255) { - d->bytePlayerHealth = fakeHealth[playerid]; + d->bytePlayerHealth = Player::fakeHealth[playerid]; } - if (fakeArmour[playerid] != 255) + if (Player::fakeArmour[playerid] != 255) { - d->bytePlayerArmour = fakeArmour[playerid]; + d->bytePlayerArmour = Player::fakeArmour[playerid]; } + + Player::lastSyncPacket[playerid] = Global::SyncTypes::E_VEHICLE_SYNC; } if (packetId == ID_PASSENGER_SYNC) @@ -564,13 +554,13 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) } auto lastPassengerSyncData = &Versions::getLastPassengerSyncData(playerid); - if (syncPassengerDataFrozen[playerid]) + if (Player::syncPassengerDataFrozen[playerid]) { - d = lastPassengerSyncData; + std::memcpy(d, lastPassengerSyncData, sizeof(typename Structs::CPassengerSyncData)); } else { - lastPassengerSyncData = d; + std::memcpy(lastPassengerSyncData, d, sizeof(typename Structs::CPassengerSyncData)); } if (d->bytePlayerWeapon > 46 || (d->bytePlayerWeapon > 18 && d->bytePlayerWeapon < 22)) @@ -578,15 +568,17 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) d->bytePlayerWeapon = 0; } - if (fakeHealth[playerid] != 255) + if (Player::fakeHealth[playerid] != 255) { - d->bytePlayerHealth = fakeHealth[playerid]; + d->bytePlayerHealth = Player::fakeHealth[playerid]; } - if (fakeArmour[playerid] != 255) + if (Player::fakeArmour[playerid] != 255) { - d->bytePlayerArmour = fakeArmour[playerid]; + d->bytePlayerArmour = Player::fakeArmour[playerid]; } + + Player::lastSyncPacket[playerid] = Global::SyncTypes::E_PASSENGER_SYNC; } if(packetId == ID_SPECTATOR_SYNC) @@ -606,14 +598,16 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) } auto lastSpectatingSyncData = &Versions::getLastSpectatingSyncData(playerid); - if (syncSpectatingDataFrozen[playerid]) + if (Player::syncSpectatingDataFrozen[playerid]) { - d = lastSpectatingSyncData; + std::memcpy(d, lastSpectatingSyncData, sizeof(typename Structs::CSpectatingSyncData)); } else { - lastSpectatingSyncData = d; - } + std::memcpy(lastSpectatingSyncData, d, sizeof(typename Structs::CSpectatingSyncData)); + } + + Player::lastSyncPacket[playerid] = Global::SyncTypes::E_SPECTATING_SYNC; } return p; @@ -624,11 +618,11 @@ Packet *THISCALL CHookRakServer::Receive(void *ppRakServer) void InstallPreHooks() { - std::memset(&fakeHealth, 255, sizeof(fakeHealth)); - std::memset(&fakeArmour, 255, sizeof(fakeArmour)); + std::memset(&Player::fakeHealth, 255, sizeof(Player::fakeHealth)); + std::memset(&Player::fakeArmour, 255, sizeof(Player::fakeArmour)); for (int i = 0; i < 1000; i++) { - fakeQuat[i] = 0; + Player::fakeQuat[i] = 0; } } diff --git a/src/Hooks.h b/src/Hooks.h index 90394ea..f0eab6f 100644 --- a/src/Hooks.h +++ b/src/Hooks.h @@ -24,20 +24,4 @@ void InstallPreHooks(); BYTE GetPacketID(Packet *p); -extern BYTE lastWeapon[1000]; -extern BYTE fakeHealth[1000]; -extern BYTE fakeArmour[1000]; -extern BOOL knifeSync; -extern glm::quat *fakeQuat[1000]; -extern DWORD lastUpdateTick[1000]; -extern BOOL disableSyncBugs; -extern BOOL blockKeySync[1000]; -extern BOOL infiniteAmmo[1000]; - -extern BOOL syncDataFrozen[1000]; -extern BOOL syncAimDataFrozen[1000]; -extern BOOL syncVehicleDataFrozen[1000]; -extern BOOL syncPassengerDataFrozen[1000]; -extern BOOL syncSpectatingDataFrozen[1000]; - #endif diff --git a/src/Player.cpp b/src/Player.cpp new file mode 100644 index 0000000..87b9fd7 --- /dev/null +++ b/src/Player.cpp @@ -0,0 +1,20 @@ +#include "Player.h" + +namespace Player +{ + BYTE lastWeapon[1000] = {0}; + BYTE fakeHealth[1000] = {0}; + BYTE fakeArmour[1000] = {0}; + glm::quat *fakeQuat[1000]; + DWORD lastUpdateTick[1000] = {0}; + BOOL blockKeySync[1000] = {0}; + BOOL infiniteAmmo[1000] = {0}; + + BOOL syncDataFrozen[1000] = {0}; + BOOL syncAimDataFrozen[1000] = {0}; + BOOL syncVehicleDataFrozen[1000] = {0}; + BOOL syncPassengerDataFrozen[1000] = {0}; + BOOL syncSpectatingDataFrozen[1000] = {0}; + + extern Global::SyncTypes lastSyncPacket[1000] = {Global::SyncTypes::E_PLAYER_SYNC}; +}; \ No newline at end of file diff --git a/src/Player.h b/src/Player.h new file mode 100644 index 0000000..9826dcd --- /dev/null +++ b/src/Player.h @@ -0,0 +1,32 @@ +#ifndef SKY_PLAYER +#define SKY_PLAYER + +#include "CTypes.h" +#include +#include +#include "Global.h" + +#ifndef MAX_PLAYERS + #define MAX_PLAYERS 1000 +#endif + +namespace Player +{ + extern BYTE lastWeapon[MAX_PLAYERS]; + extern BYTE fakeHealth[MAX_PLAYERS]; + extern BYTE fakeArmour[MAX_PLAYERS]; + extern glm::quat *fakeQuat[MAX_PLAYERS]; + extern DWORD lastUpdateTick[MAX_PLAYERS]; + extern BOOL blockKeySync[MAX_PLAYERS]; + extern BOOL infiniteAmmo[MAX_PLAYERS]; + + extern BOOL syncDataFrozen[MAX_PLAYERS]; + extern BOOL syncAimDataFrozen[MAX_PLAYERS]; + extern BOOL syncVehicleDataFrozen[MAX_PLAYERS]; + extern BOOL syncPassengerDataFrozen[MAX_PLAYERS]; + extern BOOL syncSpectatingDataFrozen[MAX_PLAYERS]; + + extern Global::SyncTypes lastSyncPacket[MAX_PLAYERS]; +}; + +#endif \ No newline at end of file diff --git a/src/Scripting.cpp b/src/Scripting.cpp index 2150a81..c48f930 100644 --- a/src/Scripting.cpp +++ b/src/Scripting.cpp @@ -38,6 +38,8 @@ #include "RPCs.h" #include "Utils.h" #include "Versions.h" +#include "Player.h" +#include "Global.h" #include "main.h" #include #include @@ -153,25 +155,30 @@ static cell AMX_NATIVE_CALL SendLastSyncPacket(AMX *amx, cell *params) RakNet::BitStream bs; + if(type == Global::SyncTypes::E_LAST_SYNC) + { + type = Player::lastSyncPacket[playerid]; + } + switch(type) { - case Versions::SyncTypes::E_PLAYER_SYNC: // Player Sync + case Global::SyncTypes::E_PLAYER_SYNC: // Player Sync Versions::sendSyncData(playerid, animation, &bs); break; - case Versions::SyncTypes::E_AIM_SYNC: // Aim Sync + case Global::SyncTypes::E_AIM_SYNC: // Aim Sync Versions::sendAimSyncData(playerid, &bs); break; - case Versions::SyncTypes::E_VEHICLE_SYNC: // Vehicle Sync + case Global::SyncTypes::E_VEHICLE_SYNC: // Vehicle Sync Versions::sendVehicleSyncData(playerid, &bs); break; - case Versions::SyncTypes::E_PASSENGER_SYNC: // Passenger Sync + case Global::SyncTypes::E_PASSENGER_SYNC: // Passenger Sync Versions::sendPassengerSyncData(playerid, &bs); break; - case Versions::SyncTypes::E_SPECTATING_SYNC: // Spectate Sync + case Global::SyncTypes::E_SPECTATING_SYNC: // Spectate Sync Versions::sendSpectatingSyncData(playerid, &bs); break; @@ -196,7 +203,7 @@ static cell AMX_NATIVE_CALL SetFakeArmour(AMX *amx, cell *params) if(!IsPlayerConnected(playerid)) return 0; - fakeArmour[playerid] = armour; + Player::fakeArmour[playerid] = armour; return 1; } @@ -212,7 +219,7 @@ static cell AMX_NATIVE_CALL SetFakeHealth(AMX *amx, cell *params) if(!IsPlayerConnected(playerid)) return 0; - fakeHealth[playerid] = health; + Player::fakeHealth[playerid] = health; return 1; } @@ -229,13 +236,13 @@ static cell AMX_NATIVE_CALL SetFakeFacingAngle(AMX *amx, cell *params) if ((int)params[2] == 0x7FFFFFFF) { - fakeQuat[playerid] = NULL; + Player::fakeQuat[playerid] = NULL; } else { glm::vec3 vec = glm::vec3(0.0f, 0.0f, 360.0f - amx_ctof(params[2])); - fakeQuat[playerid] = new glm::quat(vec * DEG_TO_RAD); + Player::fakeQuat[playerid] = new glm::quat(vec * DEG_TO_RAD); } return 1; @@ -246,7 +253,7 @@ static cell AMX_NATIVE_CALL SetKnifeSync(AMX *amx, cell *params) { CHECK_PARAMS(1, "SetKnifeSync"); - knifeSync = (BOOL)params[1]; + Global::knifeSync = (BOOL)params[1]; return 1; } @@ -256,7 +263,7 @@ static cell AMX_NATIVE_CALL SetDisableSyncBugs(AMX *amx, cell *params) { CHECK_PARAMS(1, "SetDisableSyncBugs"); - disableSyncBugs = (BOOL)params[1]; + Global::disableSyncBugs = (BOOL)params[1]; return 1; } @@ -272,7 +279,7 @@ static cell AMX_NATIVE_CALL SetInfiniteAmmoSync(AMX *amx, cell *params) if(!IsPlayerConnected(playerid)) return 0; - infiniteAmmo[playerid] = toggle; + Player::infiniteAmmo[playerid] = toggle; return 1; } @@ -287,7 +294,7 @@ static cell AMX_NATIVE_CALL SetKeySyncBlocked(AMX *amx, cell *params) if(!IsPlayerConnected(playerid)) return 0; - blockKeySync[playerid] = toggle; + Player::blockKeySync[playerid] = toggle; return 1; } @@ -301,7 +308,10 @@ static cell AMX_NATIVE_CALL ClearAnimationsForPlayer(AMX *amx, cell *params) int forplayerid = (int)params[2]; if(!IsPlayerConnected(playerid)) - return 0; + return 0; + + if(!IsPlayerConnected(forplayerid)) + return 0; RakNet::BitStream bs; bs.Write((WORD)playerid); @@ -356,7 +366,7 @@ static cell AMX_NATIVE_CALL FreezeSyncData(AMX *amx, cell *params) d->wUDAnalog = 0; d->wLRAnalog = 0; - syncDataFrozen[playerid] = toggle; + Player::syncDataFrozen[playerid] = toggle; return 1; }); @@ -375,11 +385,16 @@ static cell AMX_NATIVE_CALL FreezeSyncPacket(AMX *amx, cell *params) BOOL toggle = static_cast(params[3]); if(!IsPlayerConnected(playerid)) - return 0; + return 0; + + if(type == Global::SyncTypes::E_LAST_SYNC) + { + type = Player::lastSyncPacket[playerid]; + } switch(type) { - case Versions::SyncTypes::E_PLAYER_SYNC: // Player Sync + case Global::SyncTypes::E_PLAYER_SYNC: // Player Sync { auto *d = &Versions::getLastSyncData(playerid); d->vecVelocity = CVector(); @@ -388,17 +403,17 @@ static cell AMX_NATIVE_CALL FreezeSyncPacket(AMX *amx, cell *params) d->wUDAnalog = 0; d->wLRAnalog = 0; - syncDataFrozen[playerid] = toggle; + Player::syncDataFrozen[playerid] = toggle; break; } - case Versions::SyncTypes::E_AIM_SYNC: // Aim Sync + case Global::SyncTypes::E_AIM_SYNC: // Aim Sync { - syncAimDataFrozen[playerid] = toggle; + Player::syncAimDataFrozen[playerid] = toggle; break; } - case Versions::SyncTypes::E_VEHICLE_SYNC: // Vehicle Sync + case Global::SyncTypes::E_VEHICLE_SYNC: // Vehicle Sync { auto *d = &Versions::getLastVehicleSyncData(playerid); d->vecVelocity = CVector(); @@ -406,28 +421,28 @@ static cell AMX_NATIVE_CALL FreezeSyncPacket(AMX *amx, cell *params) d->wUDAnalog = 0; d->wLRAnalog = 0; - syncVehicleDataFrozen[playerid] = toggle; + Player::syncVehicleDataFrozen[playerid] = toggle; break; } - case Versions::SyncTypes::E_PASSENGER_SYNC: // Passenger Sync + case Global::SyncTypes::E_PASSENGER_SYNC: // Passenger Sync { auto *d = &Versions::getLastPassengerSyncData(playerid); d->wKeys = 0; d->wUDAnalog = 0; d->wLRAnalog = 0; - syncPassengerDataFrozen[playerid] = toggle; + Player::syncPassengerDataFrozen[playerid] = toggle; } - case Versions::SyncTypes::E_SPECTATING_SYNC: // Spectate Sync + case Global::SyncTypes::E_SPECTATING_SYNC: // Spectate Sync { auto *d = &Versions::getLastSpectatingSyncData(playerid); d->wKeysOnSpectating = 0; d->wUpDownKeysOnSpectating = 0; d->wLeftRightKeysOnSpectating = 0; - syncSpectatingDataFrozen[playerid] = toggle; + Player::syncSpectatingDataFrozen[playerid] = toggle; } default: diff --git a/src/Structs.h b/src/Structs.h index 5b96ba9..3dde7a8 100644 --- a/src/Structs.h +++ b/src/Structs.h @@ -32,7 +32,11 @@ /* -------------------------------------------------------- */ #if defined MAX_OBJECTS -#undef MAX_OBJECTS + #undef MAX_OBJECTS +#endif + +#if defined MAX_PLAYERS + #undef MAX_PLAYERS #endif // Defines from SAMPGDK diff --git a/src/Versions.h b/src/Versions.h index b2af30c..5385575 100644 --- a/src/Versions.h +++ b/src/Versions.h @@ -12,6 +12,7 @@ #include "main.h" #include "RPCs.h" #include "Hooks.h" +#include "Player.h" #include #include #include @@ -36,17 +37,8 @@ namespace Versions #include "Structs.h" }; - enum SyncTypes - { - E_PLAYER_SYNC = 0, - E_AIM_SYNC, - E_VEHICLE_SYNC, - E_PASSENGER_SYNC, - E_SPECTATING_SYNC - }; - // Returns a function with an instance of netGame and a struct - // which is either with_dl or without_dl + // which is either samp_037 or samp_03dl template auto getNetGame(Func func) { @@ -137,15 +129,15 @@ namespace Versions bs->Write(d->vecPosition.fY); bs->Write(d->vecPosition.fZ); - if (fakeQuat[playerid] != NULL) + if (Player::fakeQuat[playerid] != NULL) { - bs->Write((bool)(fakeQuat[playerid]->w < 0.0f)); - bs->Write((bool)(fakeQuat[playerid]->x < 0.0f)); - bs->Write((bool)(fakeQuat[playerid]->y < 0.0f)); - bs->Write((bool)(fakeQuat[playerid]->z < 0.0f)); - bs->Write((unsigned short)(fabs(fakeQuat[playerid]->x) * 65535.0)); - bs->Write((unsigned short)(fabs(fakeQuat[playerid]->y) * 65535.0)); - bs->Write((unsigned short)(fabs(fakeQuat[playerid]->z) * 65535.0)); + bs->Write((bool)(Player::fakeQuat[playerid]->w < 0.0f)); + bs->Write((bool)(Player::fakeQuat[playerid]->x < 0.0f)); + bs->Write((bool)(Player::fakeQuat[playerid]->y < 0.0f)); + bs->Write((bool)(Player::fakeQuat[playerid]->z < 0.0f)); + bs->Write((unsigned short)(fabs(Player::fakeQuat[playerid]->x) * 65535.0)); + bs->Write((unsigned short)(fabs(Player::fakeQuat[playerid]->y) * 65535.0)); + bs->Write((unsigned short)(fabs(Player::fakeQuat[playerid]->z) * 65535.0)); } else { @@ -160,18 +152,18 @@ namespace Versions BYTE health, armour; - if (fakeHealth[playerid] != 255) + if (Player::fakeHealth[playerid] != 255) { - health = fakeHealth[playerid]; + health = Player::fakeHealth[playerid]; } else { health = d->byteHealth; } - if (fakeArmour[playerid] != 255) + if (Player::fakeArmour[playerid] != 255) { - armour = fakeArmour[playerid]; + armour = Player::fakeArmour[playerid]; } else { @@ -203,7 +195,7 @@ namespace Versions bs->Write(d->byteSpecialAction); // Make them appear standing still if paused - if (GetTickCount() - lastUpdateTick[playerid] > 2000) + if (GetTickCount() - Player::lastUpdateTick[playerid] > 2000) { bs->WriteVector(0.0f, 0.0f, 0.0f); } @@ -258,7 +250,10 @@ namespace Versions bs->Write(d->vecPosition.fZ); // Fix first-person up/down aim sync - if (lastWeapon[playerid] == 34 || lastWeapon[playerid] == 35 || lastWeapon[playerid] == 36 || lastWeapon[playerid] == 43) + if (Player::lastWeapon[playerid] == 34 + || Player::lastWeapon[playerid] == 35 + || Player::lastWeapon[playerid] == 36 + || Player::lastWeapon[playerid] == 43) { d->fZAim = -d->vecFront.fZ; @@ -274,7 +269,7 @@ namespace Versions bs->Write(d->fZAim); - if (infiniteAmmo[playerid]) + if (Player::infiniteAmmo[playerid]) { d->byteCameraZoom = 2; } @@ -316,15 +311,15 @@ namespace Versions bs->Write((WORD)d->wKeys); - if (fakeQuat[playerid] != NULL) + if (Player::fakeQuat[playerid] != NULL) { - bs->Write((bool)(fakeQuat[playerid]->w < 0.0f)); - bs->Write((bool)(fakeQuat[playerid]->x < 0.0f)); - bs->Write((bool)(fakeQuat[playerid]->y < 0.0f)); - bs->Write((bool)(fakeQuat[playerid]->z < 0.0f)); - bs->Write((unsigned short)(fabs(fakeQuat[playerid]->x) * 65535.0)); - bs->Write((unsigned short)(fabs(fakeQuat[playerid]->y) * 65535.0)); - bs->Write((unsigned short)(fabs(fakeQuat[playerid]->z) * 65535.0)); + bs->Write((bool)(Player::fakeQuat[playerid]->w < 0.0f)); + bs->Write((bool)(Player::fakeQuat[playerid]->x < 0.0f)); + bs->Write((bool)(Player::fakeQuat[playerid]->y < 0.0f)); + bs->Write((bool)(Player::fakeQuat[playerid]->z < 0.0f)); + bs->Write((unsigned short)(fabs(Player::fakeQuat[playerid]->x) * 65535.0)); + bs->Write((unsigned short)(fabs(Player::fakeQuat[playerid]->y) * 65535.0)); + bs->Write((unsigned short)(fabs(Player::fakeQuat[playerid]->z) * 65535.0)); } else { @@ -342,18 +337,18 @@ namespace Versions bs->Write(d->fHealth); BYTE health, armour; - if (fakeHealth[playerid] != 255) + if (Player::fakeHealth[playerid] != 255) { - health = fakeHealth[playerid]; + health = Player::fakeHealth[playerid]; } else { health = d->bytePlayerHealth; } - if (fakeArmour[playerid] != 255) + if (Player::fakeArmour[playerid] != 255) { - armour = fakeArmour[playerid]; + armour = Player::fakeArmour[playerid]; } else { @@ -439,18 +434,18 @@ namespace Versions bs->WriteBits((unsigned char *)d->bytePlayerWeapon, 6); BYTE health, armour; - if (fakeHealth[playerid] != 255) + if (Player::fakeHealth[playerid] != 255) { - health = fakeHealth[playerid]; + health = Player::fakeHealth[playerid]; } else { health = d->bytePlayerHealth; } - if (fakeArmour[playerid] != 255) + if (Player::fakeArmour[playerid] != 255) { - armour = fakeArmour[playerid]; + armour = Player::fakeArmour[playerid]; } else {