#include "../main.h" #include "../game/util.h" using namespace RakNet; extern CNetGame* pNetGame; extern CGame * pGame; extern CAudioStream * pAudioStream; extern CChatWindow * pChatWindow; char pText[257]; //---------------------------------------------------- // TODO: These script RPCs void ScrUnkA7(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; bool bValue; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bValue = false; bsData.Read(bValue); if(pNetGame) pNetGame->SetField232(bValue); } void ScrUnk38(RPCParameters *rpcParams) {} void ScrUnk90(RPCParameters *rpcParams) {} void ScrUnk91(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; CLocalPlayer *pLocalPlayer = pNetGame->GetPlayerPool()->GetLocalPlayer(); BYTE byteWeapon; WORD wAmmo; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(byteWeapon); bsData.Read(wAmmo); pLocalPlayer->GetPlayerPed()->SetWeaponAmmo(byteWeapon, wAmmo); } void ScrSetGravity(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; float fGravity; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(fGravity); pGame->SetGravity(fGravity); } void ScrUnk93(RPCParameters *rpcParams) {} void ScrUnk94(RPCParameters *rpcParams) {} void ScrUnk95(RPCParameters *rpcParams) {} void ScrUnk2C(RPCParameters *rpcParams) {} void ScrUnk2D(RPCParameters *rpcParams) {} void ScrUnk2E(RPCParameters *rpcParams) {} void ScrUnk2F(RPCParameters *rpcParams) {} void ScrUnk4F(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; float fX, fY, fZ, fUnk; int iUnk; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(fX); bsData.Read(fY); bsData.Read(fZ); bsData.Read(iUnk); bsData.Read(fUnk); ScriptCommand(&script_command_0948, fX, fY, fZ, iUnk, fUnk); } void ScrUnk50(RPCParameters *rpcParams) {} void ScrUnk63(RPCParameters *rpcParams) {} void ScrUnk7A(RPCParameters *rpcParams) {} void ScrUnk7B(RPCParameters *rpcParams) {} void ScrUnk7C(RPCParameters *rpcParams) {} void ScrUnk7D(RPCParameters *rpcParams) { // nothing } void ScrUnk7E(RPCParameters *rpcParams) {} void ScrUnk7F(RPCParameters *rpcParams) {} void ScrUnk39(RPCParameters *rpcParams) {} void ScrUnk4B(RPCParameters *rpcParams) {} void ScrUnk85(RPCParameters *rpcParams) {} void ScrUnk86(RPCParameters *rpcParams) {} void ScrUnk87(RPCParameters *rpcParams) {} void ScrUnk69(RPCParameters *rpcParams) {} void ScrAddGangZone(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; WORD wZone; float fMinX, fMinY, fMaxX, fMaxY; DWORD dwColor; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CGangZonePool *pGangZonePool = pNetGame->GetGangZonePool(); if(pGangZonePool) { bsData.Read(wZone); bsData.Read(fMinX); bsData.Read(fMinY); bsData.Read(fMaxX); bsData.Read(fMaxY); bsData.Read(dwColor); pGangZonePool->New(wZone, fMinX, fMinY, fMaxX, fMaxY, dwColor); } } void ScrRemoveGangZone(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; WORD wZone; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CGangZonePool *pGangZonePool = pNetGame->GetGangZonePool(); if(pGangZonePool) { bsData.Read(wZone); pGangZonePool->Delete(wZone); } } void ScrFlashGangZone(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; WORD wZone; DWORD dwColor; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CGangZonePool *pGangZonePool = pNetGame->GetGangZonePool(); if(pGangZonePool) { bsData.Read(wZone); bsData.Read(dwColor); pGangZonePool->Flash(wZone, dwColor); } } void ScrStopFlashGangZone(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; WORD wZone; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CGangZonePool *pGangZonePool = pNetGame->GetGangZonePool(); if(pGangZonePool) { bsData.Read(wZone); pGangZonePool->StopFlash(wZone); } } void ScrUnk56(RPCParameters *rpcParams) {} void ScrUnk57(RPCParameters *rpcParams) {} void ScrUnk58(RPCParameters *rpcParams) {} void ScrUnk59(RPCParameters *rpcParams) {} void ScrUnk5A(RPCParameters *rpcParams) {} void ScrUnk5B(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; BYTE byteType; VECTOR vecVelocity; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); byteType = 0; bsData.Read(byteType); bsData.Read(vecVelocity.X); bsData.Read(vecVelocity.Y); bsData.Read(vecVelocity.Z); CVehiclePool *pVehiclePool = pNetGame->GetVehiclePool(); CPlayerPed *pPlayerPed = pGame->FindPlayerPed(); if(pPlayerPed && pPlayerPed->IsInVehicle()) { VEHICLEID vehicleId = pVehiclePool->FUNC_1001EB90((int)pPlayerPed->GetGtaVehicle()); if(vehicleId != INVALID_VEHICLE_ID) { CEntity *pVehicle = (CEntity *)pVehiclePool->GetAt(vehicleId); if(pVehicle) { if(byteType == 0) pVehicle->SetMoveSpeedVector(vecVelocity); else if(byteType == 1) pVehicle->SetTurnSpeedVector(vecVelocity); } } } } void ScrUnk6F(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; BYTE byteEnable; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(byteEnable); pChatWindow->AddDebugMessage("Widescreen = %i", byteEnable); ScriptCommand(&set_widescreen, byteEnable); } void ScrUnk62(RPCParameters *rpcParams) {} void ScrUnk70(RPCParameters *rpcParams) {} void ScrSetSpawnInfo(RPCParameters *rpcParams) {} void ScrUnk45(RPCParameters *rpcParams) {} void ScrUnk99(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; int iPlayerId; int iSkin = 0; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CPlayerPool *pPlayerPool = pNetGame->GetPlayerPool(); if(!pPlayerPool) return; bsData.Read(iPlayerId); bsData.Read(iSkin); if(!IsValidPedModel(iSkin)) { if(pChatWindow) pChatWindow->AddDebugMessage("Warning: SetPlayerSkin %d isn't a valid ped model.", iSkin); return; } if(iPlayerId == pPlayerPool->GetLocalPlayerID()) { pPlayerPool->GetLocalPlayer()->GetPlayerPed()->SetSkin(iSkin); } else if(pPlayerPool->GetSlotState(iPlayerId) && pPlayerPool->GetAt(iPlayerId)->FUNC_10001080() && pPlayerPool->GetAt(iPlayerId)->m_pPlayerPed) { pPlayerPool->GetAt(iPlayerId)->m_pPlayerPed->SetSkin(iSkin); } } void ScrSetPlayerPos(RPCParameters *rpcParams) {} void ScrUnk0D(RPCParameters *rpcParams) {} void ScrPutPlayerInVehicle(RPCParameters *rpcParams) {} void ScrRemovePlayerFromVehicle(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); pNetGame->GetPlayerPool()->GetLocalPlayer()->GetPlayerPed()->ExitCurrentVehicle(); } void ScrDisplayGameText(RPCParameters *rpcParams) {} void ScrSetInterior(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; BYTE byteInterior; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(byteInterior); pGame->FindPlayerPed()->SetInterior(byteInterior, TRUE); } void ScrUnk9F(RPCParameters *rpcParams) {} void ScrUnkA0(RPCParameters *rpcParams) {} void ScrUnkA1(RPCParameters *rpcParams) {} void ScrUnk0F(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; BYTE byteControllable; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(byteControllable); pGame->FindPlayerPed()->TogglePlayerControllable(byteControllable); } void ScrUnk10(RPCParameters *rpcParams) {} void ScrUnk11(RPCParameters *rpcParams) {} void ScrUnk12(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; int iMoney; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(iMoney); pGame->AddToLocalMoney(iMoney); } void ScrSetPlayerFacingAngle(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; float fAngle; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(fAngle); pGame->FindPlayerPed()->ForceTargetRotation(fAngle); } void ScrUnk16(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; int iWeapon, iAmmo; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(iWeapon); bsData.Read(iAmmo); pNetGame->GetPlayerPool()->GetLocalPlayer()->GetPlayerPed()->GiveWeapon(iWeapon, iAmmo); } void ScrUnk40(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; PLAYERID playerId; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(playerId); } void ScrUnk41(RPCParameters *rpcParams) {} void ScrUnk42(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; CLocalPlayer *pLocalPlayer = pNetGame->GetPlayerPool()->GetLocalPlayer(); float fArmour; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(fArmour); pLocalPlayer->GetPlayerPed()->SetArmour(fArmour); } void ScrUnk37(RPCParameters *rpcParams) {} void ScrUnk21(RPCParameters *rpcParams) {} void ScrUnk23(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; int iLevel; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(iLevel); CPlayerPed *pPlayerPed = pGame->FindPlayerPed(); if(pPlayerPed) pPlayerPed->FUNC_100ADFB0(iLevel); } void ScrUnk43(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; int iWeapon; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CPlayerPed *pPlayerPed = pGame->FindPlayerPed(); if(!pPlayerPed) return; bsData.Read(iWeapon); if(iWeapon >= 0 && iWeapon <= 46) pPlayerPed->SetArmedWeapon(iWeapon, false); } void ScrUnk71(RPCParameters *rpcParams) {} void ScrUnk29(RPCParameters *rpcParams) {} void ScrUnk2A(RPCParameters *rpcParams) { if(pAudioStream) pAudioStream->Stop(0); } void ScrUnk2B(RPCParameters *rpcParams) {} void ScrUnk51(RPCParameters *rpcParams) {} void ScrUnk52(RPCParameters *rpcParams) {} void ScrUnk53(RPCParameters *rpcParams) {} void ScrUnk54(RPCParameters *rpcParams) {} void ScrUnkA9(RPCParameters *rpcParams) {} void ScrUnkAD(RPCParameters *rpcParams) {} void ScrUnkAE(RPCParameters *rpcParams) {} void ScrUnkAF(RPCParameters *rpcParams) {} void ScrUnkB0(RPCParameters *rpcParams) {} void ScrUnkB2(RPCParameters *rpcParams) {} void ScrUnk30(RPCParameters *rpcParams) {} void ScrInitMenu(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; BYTE byteMenuID; int iColumns; float fX, fY, fCol1Width, fCol2Width; MENU_INT MenuInteraction; BYTE byteRows, byteRow; int i; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); if(!pNetGame) return; CMenuPool *pMenuPool = pNetGame->GetMenuPool(); fCol2Width = 0.0f; bsData.Read(byteMenuID); bsData.Read(iColumns); memset(pText, 0, sizeof(pText)); bsData.Read(pText, 32); bsData.Read(fX); bsData.Read(fY); bsData.Read(fCol1Width); if(iColumns) bsData.Read(fCol2Width); bsData.Read(MenuInteraction.bMenu); for(i = 0; i < MAX_MENU_ITEMS; i++) bsData.Read(MenuInteraction.bRow[i]); if(byteMenuID <= MAX_MENUS && pMenuPool->m_bMenuSlotState[byteMenuID]) pMenuPool->Delete(byteMenuID); CMenu *pMenu = pMenuPool->New(byteMenuID, fX, fY, iColumns + 1, fCol1Width, fCol2Width, &MenuInteraction); if(!pMenu) return; pMenu->SetTitle(pText); memset(pText, 0, sizeof(pText)); bsData.Read(pText, 32); pMenu->SetColumnTitle(0, pText); bsData.Read(byteRows); if(byteRows > MAX_MENU_ITEMS) return; for(byteRow = 0; byteRow < byteRows; byteRow++) { memset(pText, 0, sizeof(pText)); bsData.Read(pText, 32); pMenu->AddMenuItem(0, byteRow, pText); } if(!iColumns) return; memset(pText, 0, sizeof(pText)); bsData.Read(pText, 32); pMenu->SetColumnTitle(1, pText); bsData.Read(byteRows); if(byteRows > MAX_MENU_ITEMS) return; for(byteRow = 0; byteRow < byteRows; byteRow++) { memset(pText, 0, sizeof(pText)); bsData.Read(pText, 32); pMenu->AddMenuItem(1, byteRow, pText); } } void ScrShowMenu(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; BYTE byteMenuID; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); if(!pNetGame) return; bsData.Read(byteMenuID); pNetGame->GetMenuPool()->ShowMenu(byteMenuID); } void ScrHideMenu(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; BYTE byteMenuID; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); if(!pNetGame) return; bsData.Read(byteMenuID); pNetGame->GetMenuPool()->HideMenu(byteMenuID); } //---------------------------------------------------- void ScrSetPlayerName(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; PLAYERID playerId; BYTE byteNickLen; char szNewName[MAX_PLAYER_NAME+1]; BYTE byteSuccess; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CPlayerPool *pPlayerPool = pNetGame->GetPlayerPool(); bsData.Read(playerId); bsData.Read(byteNickLen); if(byteNickLen > MAX_PLAYER_NAME) return; bsData.Read(szNewName, byteNickLen); bsData.Read(byteSuccess); szNewName[byteNickLen] = '\0'; if (byteSuccess == 1) pPlayerPool->SetPlayerName(playerId, szNewName); // Extra addition which we need to do if this is the local player; if( pPlayerPool->GetLocalPlayerID() == playerId ) pPlayerPool->SetLocalPlayerName( szNewName ); } //---------------------------------------------------- void ScrSetPlayerHealth(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; CLocalPlayer *pLocalPlayer = pNetGame->GetPlayerPool()->GetLocalPlayer(); float fHealth; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bsData.Read(fHealth); pLocalPlayer->GetPlayerPed()->SetHealth(fHealth); } //---------------------------------------------------- void ScrSetPlayerColor(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); CPlayerPool *pPlayerPool = pNetGame->GetPlayerPool(); PLAYERID playerId; DWORD dwColor; bsData.Read(playerId); bsData.Read(dwColor); if(playerId == pPlayerPool->GetLocalPlayerID()) { pPlayerPool->GetLocalPlayer()->SetPlayerColor(dwColor); } else { CRemotePlayer *pPlayer = pPlayerPool->GetAt(playerId); if(pPlayer) pPlayer->SetPlayerColor(dwColor); } } //---------------------------------------------------- void ScrSetCameraPos(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); VECTOR vecPos; bsData.Read(vecPos.X); bsData.Read(vecPos.Y); bsData.Read(vecPos.Z); pGame->GetCamera()->SetPosition(vecPos.X,vecPos.Y,vecPos.Z,0.0f,0.0f,0.0f); } //---------------------------------------------------- void ScrSetCameraLookAt(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); VECTOR vecPos; BYTE byteType=0; bsData.Read(vecPos.X); bsData.Read(vecPos.Y); bsData.Read(vecPos.Z); bsData.Read(byteType); if(byteType < 1 || byteType > 2) { byteType = 2; } pGame->GetCamera()->LookAtPoint(vecPos.X,vecPos.Y,vecPos.Z,byteType); } //---------------------------------------------------- void ScrSetCameraBehindPlayer(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; pGame->GetCamera()->SetBehindPlayer(); } //---------------------------------------------------- void ScrResetMoney(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; pGame->ResetLocalMoney(); } //---------------------------------------------------- void ScrResetPlayerWeapons(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; PlayerID sender = rpcParams->sender; CPlayerPed *pPlayerPed = pNetGame->GetPlayerPool()->GetLocalPlayer()->GetPlayerPed(); pPlayerPed->ClearAllWeapons(); } //---------------------------------------------------- void ScrForceSpawnSelection(RPCParameters *rpcParams) { pNetGame->GetPlayerPool()->GetLocalPlayer()->ReturnToClassSelection(); } //---------------------------------------------------- void ScrEnableStuntBonus(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); bool bStuntBonusEnabled; bsData.Read(bStuntBonusEnabled); pGame->EnableStuntBonus(bStuntBonusEnabled); } //---------------------------------------------------- void ScrSetPlayerDrunkVisuals(RPCParameters* rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); int iVisuals; bsData.Read(iVisuals); CPlayerPed* pPlayer = pGame->FindPlayerPed(); if (pPlayer) { ScriptCommand(&set_player_drunk_visuals, 0, iVisuals); } } //---------------------------------------------------- void ScrSetPlayerDrunkHandling(RPCParameters* rpcParams) { PCHAR Data = reinterpret_cast(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; RakNet::BitStream bsData(Data,(iBitLength/8)+1,false); int iVisuals; bsData.Read(iVisuals); CPlayerPed* pPlayer = pGame->FindPlayerPed(); if (pPlayer) { ScriptCommand(&handling_responsiveness, 0, iVisuals); } } //---------------------------------------------------- void RegisterScriptRPCs(RakClientInterface* pRakClient) { REGISTER_STATIC_RPC(pRakClient, ScrUnkA7); REGISTER_STATIC_RPC(pRakClient, ScrUnk38); REGISTER_STATIC_RPC(pRakClient, ScrUnk90); REGISTER_STATIC_RPC(pRakClient, ScrUnk91); REGISTER_STATIC_RPC(pRakClient, ScrSetGravity); REGISTER_STATIC_RPC(pRakClient, ScrUnk93); REGISTER_STATIC_RPC(pRakClient, ScrUnk94); REGISTER_STATIC_RPC(pRakClient, ScrUnk95); REGISTER_STATIC_RPC(pRakClient, ScrUnk2C); REGISTER_STATIC_RPC(pRakClient, ScrUnk2D); REGISTER_STATIC_RPC(pRakClient, ScrUnk2E); REGISTER_STATIC_RPC(pRakClient, ScrUnk2F); REGISTER_STATIC_RPC(pRakClient, ScrUnk4F); REGISTER_STATIC_RPC(pRakClient, ScrUnk50); REGISTER_STATIC_RPC(pRakClient, ScrUnk63); REGISTER_STATIC_RPC(pRakClient, ScrUnk7A); REGISTER_STATIC_RPC(pRakClient, ScrUnk7B); REGISTER_STATIC_RPC(pRakClient, ScrUnk7C); REGISTER_STATIC_RPC(pRakClient, ScrUnk7D); REGISTER_STATIC_RPC(pRakClient, ScrUnk7E); REGISTER_STATIC_RPC(pRakClient, ScrUnk7F); REGISTER_STATIC_RPC(pRakClient, ScrUnk39); REGISTER_STATIC_RPC(pRakClient, ScrForceSpawnSelection); REGISTER_STATIC_RPC(pRakClient, ScrUnk4B); REGISTER_STATIC_RPC(pRakClient, ScrUnk85); REGISTER_STATIC_RPC(pRakClient, ScrUnk86); REGISTER_STATIC_RPC(pRakClient, ScrUnk87); REGISTER_STATIC_RPC(pRakClient, ScrUnk69); REGISTER_STATIC_RPC(pRakClient, ScrAddGangZone); REGISTER_STATIC_RPC(pRakClient, ScrRemoveGangZone); REGISTER_STATIC_RPC(pRakClient, ScrFlashGangZone); REGISTER_STATIC_RPC(pRakClient, ScrStopFlashGangZone); REGISTER_STATIC_RPC(pRakClient, ScrUnk56); REGISTER_STATIC_RPC(pRakClient, ScrUnk57); REGISTER_STATIC_RPC(pRakClient, ScrUnk58); REGISTER_STATIC_RPC(pRakClient, ScrEnableStuntBonus); REGISTER_STATIC_RPC(pRakClient, ScrUnk59); REGISTER_STATIC_RPC(pRakClient, ScrUnk5A); REGISTER_STATIC_RPC(pRakClient, ScrUnk5B); REGISTER_STATIC_RPC(pRakClient, ScrUnk6F); REGISTER_STATIC_RPC(pRakClient, ScrUnk62); REGISTER_STATIC_RPC(pRakClient, ScrSetPlayerDrunkVisuals); REGISTER_STATIC_RPC(pRakClient, ScrSetPlayerDrunkHandling); REGISTER_STATIC_RPC(pRakClient, ScrUnk70); REGISTER_STATIC_RPC(pRakClient, ScrSetSpawnInfo); REGISTER_STATIC_RPC(pRakClient, ScrUnk45); REGISTER_STATIC_RPC(pRakClient, ScrUnk99); REGISTER_STATIC_RPC(pRakClient, ScrSetPlayerName); REGISTER_STATIC_RPC(pRakClient, ScrSetPlayerPos); REGISTER_STATIC_RPC(pRakClient, ScrUnk0D); REGISTER_STATIC_RPC(pRakClient, ScrSetPlayerHealth); REGISTER_STATIC_RPC(pRakClient, ScrPutPlayerInVehicle); REGISTER_STATIC_RPC(pRakClient, ScrRemovePlayerFromVehicle); REGISTER_STATIC_RPC(pRakClient, ScrSetPlayerColor); REGISTER_STATIC_RPC(pRakClient, ScrDisplayGameText); REGISTER_STATIC_RPC(pRakClient, ScrSetInterior); REGISTER_STATIC_RPC(pRakClient, ScrSetCameraPos); REGISTER_STATIC_RPC(pRakClient, ScrSetCameraLookAt); REGISTER_STATIC_RPC(pRakClient, ScrUnk9F); REGISTER_STATIC_RPC(pRakClient, ScrUnkA0); REGISTER_STATIC_RPC(pRakClient, ScrUnkA1); REGISTER_STATIC_RPC(pRakClient, ScrSetCameraBehindPlayer); REGISTER_STATIC_RPC(pRakClient, ScrUnk0F); REGISTER_STATIC_RPC(pRakClient, ScrUnk10); REGISTER_STATIC_RPC(pRakClient, ScrUnk11); REGISTER_STATIC_RPC(pRakClient, ScrUnk12); REGISTER_STATIC_RPC(pRakClient, ScrSetPlayerFacingAngle); REGISTER_STATIC_RPC(pRakClient, ScrResetMoney); REGISTER_STATIC_RPC(pRakClient, ScrResetPlayerWeapons); REGISTER_STATIC_RPC(pRakClient, ScrUnk16); REGISTER_STATIC_RPC(pRakClient, ScrUnk40); REGISTER_STATIC_RPC(pRakClient, ScrUnk41); REGISTER_STATIC_RPC(pRakClient, ScrUnk42); REGISTER_STATIC_RPC(pRakClient, ScrUnk37); REGISTER_STATIC_RPC(pRakClient, ScrUnk21); REGISTER_STATIC_RPC(pRakClient, ScrUnk23); REGISTER_STATIC_RPC(pRakClient, ScrUnk43); REGISTER_STATIC_RPC(pRakClient, ScrUnk71); REGISTER_STATIC_RPC(pRakClient, ScrUnk29); REGISTER_STATIC_RPC(pRakClient, ScrUnk2A); REGISTER_STATIC_RPC(pRakClient, ScrUnk2B); REGISTER_STATIC_RPC(pRakClient, ScrUnk51); REGISTER_STATIC_RPC(pRakClient, ScrUnk52); REGISTER_STATIC_RPC(pRakClient, ScrUnk53); REGISTER_STATIC_RPC(pRakClient, ScrUnk54); REGISTER_STATIC_RPC(pRakClient, ScrUnkA9); REGISTER_STATIC_RPC(pRakClient, ScrUnkAD); REGISTER_STATIC_RPC(pRakClient, ScrUnkAE); REGISTER_STATIC_RPC(pRakClient, ScrUnkAF); REGISTER_STATIC_RPC(pRakClient, ScrUnkB0); REGISTER_STATIC_RPC(pRakClient, ScrUnkB2); REGISTER_STATIC_RPC(pRakClient, ScrUnk30); REGISTER_STATIC_RPC(pRakClient, ScrInitMenu); REGISTER_STATIC_RPC(pRakClient, ScrShowMenu); REGISTER_STATIC_RPC(pRakClient, ScrHideMenu); } //---------------------------------------------------- void UnRegisterScriptRPCs(RakClientInterface* pRakClient) { UNREGISTER_STATIC_RPC(pRakClient, ScrUnkA7); UNREGISTER_STATIC_RPC(pRakClient, ScrForceSpawnSelection); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk4B); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk85); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk86); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk87); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk69); UNREGISTER_STATIC_RPC(pRakClient, ScrAddGangZone); UNREGISTER_STATIC_RPC(pRakClient, ScrRemoveGangZone); UNREGISTER_STATIC_RPC(pRakClient, ScrFlashGangZone); UNREGISTER_STATIC_RPC(pRakClient, ScrStopFlashGangZone); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk56); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk57); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk58); UNREGISTER_STATIC_RPC(pRakClient, ScrEnableStuntBonus); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk59); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk5A); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk5B); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk6F); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk62); UNREGISTER_STATIC_RPC(pRakClient, ScrSetPlayerDrunkVisuals); UNREGISTER_STATIC_RPC(pRakClient, ScrSetPlayerDrunkHandling); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk70); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk38); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk90); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk91); UNREGISTER_STATIC_RPC(pRakClient, ScrSetGravity); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk93); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk94); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk95); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk2C); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk2D); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk2E); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk2F); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk4F); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk50); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk63); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk7A); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk7B); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk7C); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk7D); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk7E); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk7F); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk39); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk21); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk23); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk43); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk71); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk29); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk2A); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk2B); UNREGISTER_STATIC_RPC(pRakClient, ScrSetSpawnInfo); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk45); UNREGISTER_STATIC_RPC(pRakClient, ScrSetPlayerName); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk99); UNREGISTER_STATIC_RPC(pRakClient, ScrSetPlayerPos); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk0D); UNREGISTER_STATIC_RPC(pRakClient, ScrSetPlayerHealth); UNREGISTER_STATIC_RPC(pRakClient, ScrPutPlayerInVehicle); UNREGISTER_STATIC_RPC(pRakClient, ScrRemovePlayerFromVehicle); UNREGISTER_STATIC_RPC(pRakClient, ScrSetPlayerColor); UNREGISTER_STATIC_RPC(pRakClient, ScrDisplayGameText); UNREGISTER_STATIC_RPC(pRakClient, ScrSetInterior); UNREGISTER_STATIC_RPC(pRakClient, ScrSetCameraPos); UNREGISTER_STATIC_RPC(pRakClient, ScrSetCameraLookAt); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk9F); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkA0); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkA1); UNREGISTER_STATIC_RPC(pRakClient, ScrSetCameraBehindPlayer); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk0F); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk10); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk11); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk12); UNREGISTER_STATIC_RPC(pRakClient, ScrSetPlayerFacingAngle); UNREGISTER_STATIC_RPC(pRakClient, ScrResetMoney); UNREGISTER_STATIC_RPC(pRakClient, ScrResetPlayerWeapons); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk16); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk40); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk41); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk37); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk51); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk52); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk53); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk54); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkA9); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkAD); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkAE); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkAF); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkB0); UNREGISTER_STATIC_RPC(pRakClient, ScrUnkB2); UNREGISTER_STATIC_RPC(pRakClient, ScrUnk30); UNREGISTER_STATIC_RPC(pRakClient, ScrInitMenu); UNREGISTER_STATIC_RPC(pRakClient, ScrShowMenu); UNREGISTER_STATIC_RPC(pRakClient, ScrHideMenu); } //----------------------------------------------------