void cmdCreateVehicle(PCHAR szCmd) { if(!tSettings.bDebug) return; if(!strlen(szCmd)){ pChatWindow->AddDebugMessage("Usage: /vehicle (vehicle id)."); return; } int iVehicleType = atoi(szCmd); if((iVehicleType < 130) || (iVehicleType > 236)) { pChatWindow->AddDebugMessage("Invalid vehicle ID."); return; } pGame->RequestModel(iVehicleType); pGame->LoadRequestedModels(); while(pGame->IsModelLoaded(iVehicleType)==FALSE) Sleep(5); CPlayerPed *pPlayer = pGame->FindPlayerPed(); if(pPlayer) { MATRIX4X4 matPlayer; pPlayer->GetMatrix(&matPlayer); CVehicle *pTestVehicle = pGame->NewVehicle(iVehicleType, (matPlayer.vPos.X - 5.0f), (matPlayer.vPos.Y - 5.0f), matPlayer.vPos.Z, 0.0f); } }
void cmdBuild(PCHAR szCmd) { //if(!tSettings.bDebug) return; CCamera * pGameCamera = pGame->GetCamera(); pGameCamera->Restore(); pGame->DisplayHud(TRUE); CPlayerPed *pPlayer = pGame->FindPlayerPed(); MATRIX4X4 matPlayer; pPlayer->GetMatrix(&matPlayer); CPed* pPed = new CPed(0,(matPlayer.vPos.X - 1.0f), (matPlayer.vPos.Y - 1.0f), matPlayer.vPos.Z,0.0f); //pPed->ShowMarker(1); }
float CVehicle::GetDistanceFromLocalPlayerPed() { MATRIX4X4 matFromPlayer; MATRIX4X4 matThisVehicle; float fSX,fSY; CPlayerPed *pLocalPlayerPed = pGame->FindPlayerPed(); if(!m_pVehicle) return 10000.0f; // very far away if(!pLocalPlayerPed) return 10000.0f; // very far away GetMatrix(&matThisVehicle); pLocalPlayerPed->GetMatrix(&matFromPlayer); fSX = (matThisVehicle.vPos.X - matFromPlayer.vPos.X) * (matThisVehicle.vPos.X - matFromPlayer.vPos.X); fSY = (matThisVehicle.vPos.Y - matFromPlayer.vPos.Y) * (matThisVehicle.vPos.Y - matFromPlayer.vPos.Y); return (float)sqrt(fSX + fSY); }
void CRemotePlayer::StateChange(BYTE byteNewState, BYTE byteOldState) { if(byteNewState == PLAYER_STATE_DRIVER && byteOldState == PLAYER_STATE_ONFOOT) { // If their new vehicle is the one the local player // is driving, we'll have to kick the local player out CPlayerPed *pLocalPlayerPed = pGame->FindPlayerPed(); CVehiclePool *pVehiclePool = pNetGame->GetVehiclePool(); VEHICLEID LocalVehicle=0xFFFF; MATRIX4X4 mat; if(pLocalPlayerPed && pLocalPlayerPed->IsInVehicle() && !pLocalPlayerPed->IsAPassenger() && pVehiclePool) { LocalVehicle = pVehiclePool->FindIDFromGtaPtr(pLocalPlayerPed->GetGtaVehicle()); if(LocalVehicle == m_VehicleID) { pLocalPlayerPed->GetMatrix(&mat); pLocalPlayerPed->RemoveFromVehicleAndPutAt(mat.pos.X,mat.pos.Y,mat.pos.Z + 1.0f); pGame->DisplayGameText("~r~Car Jacked~w~!",1000,5); } } } }
float CRemotePlayer::GetDistanceFromRemotePlayer(CRemotePlayer *pFromPlayer) { MATRIX4X4 matFromPlayer; MATRIX4X4 matThisPlayer; CPlayerPed *pPlayerPed = NULL; float fSX,fSY,fSZ; if(!m_pPlayerPed) return 10000.0f; // very far away m_pPlayerPed->GetMatrix(&matThisPlayer); pPlayerPed = pFromPlayer->GetPlayerPed(); if (pPlayerPed) { pPlayerPed->GetMatrix(&matFromPlayer); fSX = (matThisPlayer.pos.X - matFromPlayer.pos.X) * (matThisPlayer.pos.X - matFromPlayer.pos.X); fSY = (matThisPlayer.pos.Y - matFromPlayer.pos.Y) * (matThisPlayer.pos.Y - matFromPlayer.pos.Y); fSZ = (matThisPlayer.pos.Z - matFromPlayer.pos.Z) * (matThisPlayer.pos.Z - matFromPlayer.pos.Z); return (float)sqrt(fSX + fSY + fSZ); } else { return 10000.0f; } }
void TheGameLoop() { // If the game is not inited then do it now. if(!bGameInited && FileCheckSum()) { if(tSettings.bPlayOnline) { pNetGame = new CNetGame(tSettings.szConnectHost,atoi(tSettings.szConnectPort), tSettings.szNickName,tSettings.szConnectPass); } pGame->ToggleFrameLimiterState(TRUE); bGameInited = TRUE; return; } // The NetGame processing has been moved // to the Direct3DDevice::Present hook. // This is to solve alt-tab issues. // BEGIN: HEALTH BAR AND PLAYER NAME STUFF if(!pGame->IsMenuActive() && bShowNameTags) { if(!bbfont) { bbfont = new CBBFont(pD3DDevice, "vcmpfnt"); bbfont->Initialise(); } if (!HealthBarOldStateBlock) { pD3DDevice->BeginStateBlock(); pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); pD3DDevice->SetRenderState(D3DRS_FOGENABLE, FALSE); pD3DDevice->SetRenderState(D3DRS_ZENABLE, 1); pD3DDevice->SetRenderState(D3DRS_FILLMODE, 3); pD3DDevice->SetRenderState(D3DRS_CULLMODE, 1); pD3DDevice->SetRenderState(D3DRS_WRAP0, 0); pD3DDevice->SetRenderState(D3DRS_CLIPPING, 1); pD3DDevice->SetRenderState(D3DRS_VERTEXBLEND, 0); pD3DDevice->SetRenderState(D3DRS_CLIPPLANEENABLE, 1); pD3DDevice->SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, 0); pD3DDevice->SetRenderState(D3DRS_COLORWRITEENABLE, 15); pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 1); pD3DDevice->SetRenderState(D3DRS_SRCBLEND, 5); pD3DDevice->SetRenderState(D3DRS_DESTBLEND, 6); pD3DDevice->SetRenderState(D3DRS_BLENDOP, 1); pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, 4); pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, 2); pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, 0); pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, 4); pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, 2); pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, 0); pD3DDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0); pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, 0); pD3DDevice->SetTextureStageState(1, D3DTSS_COLOROP, 1); pD3DDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, 1); pD3DDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD); pD3DDevice->SetVertexShader(D3DFVF_XYZ|D3DFVF_DIFFUSE); pD3DDevice->SetStreamSource(0, NULL, 0); pD3DDevice->EndStateBlock(&HealthBarOldStateBlock); } if (!HealthBarNewStateBlock) { pD3DDevice->BeginStateBlock(); pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); pD3DDevice->SetRenderState(D3DRS_FOGENABLE, FALSE); pD3DDevice->SetRenderState(D3DRS_ZENABLE, 1); pD3DDevice->SetRenderState(D3DRS_FILLMODE, 3); pD3DDevice->SetRenderState(D3DRS_CULLMODE, 1); pD3DDevice->SetRenderState(D3DRS_WRAP0, 0); pD3DDevice->SetRenderState(D3DRS_CLIPPING, 1); pD3DDevice->SetRenderState(D3DRS_VERTEXBLEND, 0); pD3DDevice->SetRenderState(D3DRS_CLIPPLANEENABLE, 1); pD3DDevice->SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, 0); pD3DDevice->SetRenderState(D3DRS_COLORWRITEENABLE, 15); pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 1); pD3DDevice->SetRenderState(D3DRS_SRCBLEND, 5); pD3DDevice->SetRenderState(D3DRS_DESTBLEND, 6); pD3DDevice->SetRenderState(D3DRS_BLENDOP, 1); pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, 4); pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, 2); pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, 0); pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, 1); pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, 2); pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, 0); pD3DDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0); pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, 0); pD3DDevice->SetTextureStageState(1, D3DTSS_COLOROP, 1); pD3DDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, 1); pD3DDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD); pD3DDevice->SetVertexShader(D3DFVF_XYZ|D3DFVF_DIFFUSE); pD3DDevice->EndStateBlock(&HealthBarNewStateBlock); } pD3DDevice->CaptureStateBlock(HealthBarOldStateBlock); pD3DDevice->ApplyStateBlock(HealthBarNewStateBlock); D3DXMATRIX matTransposed; D3DXMatrixTranspose(&matTransposed, (D3DXMATRIX*)&matView); matTransposed._14 = matTransposed._24 = matTransposed._34 = 0.0f; if(pNetGame) { CPlayerPool* pPlayerPool = pNetGame->GetPlayerPool(); for(int x=0; x < MAX_PLAYERS; x++) { if(pPlayerPool->GetSlotState(x) == TRUE) // player is in use { CRemotePlayer* Player = pPlayerPool->GetAt(x); if( Player->IsActive() && (Player->GetDistanceFromLocalPlayer() <= 80.0f) ) // Active and within reasonable distance { CPlayerPed* PlayerPed = Player->GetPlayerPed(); if(PlayerPed->IsOnScreen()) { // They're onscreen MATRIX4X4 matPlayer; PlayerPed->GetMatrix(&matPlayer); matTransposed._41 = matPlayer.vPos.X; matTransposed._42 = matPlayer.vPos.Y; matTransposed._43 = matPlayer.vPos.Z + 1.0f; pD3DDevice->SetTransform(D3DTS_WORLD, &matTransposed); float Health = Player->GetReportedHealth(); if (Health > 100.0f) Health = 100.0f; HealthBarBGVertices[0].x = HealthBarBGVertices[1].x = (0.0058f * Health) - 0.29f; pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, HealthBarBDRVertices, sizeof(HealthBarVertices_s)); pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, HealthBarVertices, sizeof(HealthBarVertices_s)); pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, HealthBarBGVertices, sizeof(HealthBarVertices_s)); if(bbfont) { bbfont->Begin(); //bbfont->Draw(pPlayerPool->GetPlayerName(x), 0.285f, 0xFF000000); bbfont->Draw(pPlayerPool->GetPlayerName(x), 0.300f, Player->GetTeamColorAsARGB()); bbfont->End(); } } } } } } pD3DDevice->ApplyStateBlock(HealthBarOldStateBlock); // END: HEALTH BAR AND PLAYER NAME STUFF } if(!pGame->IsMenuActive()) { if((pNetGame) && GetAsyncKeyState(VK_F5)) { pGame->DisplayHud(FALSE); pScoreBoard->Draw(); } else if((pNetGame) && GetAsyncKeyState(VK_F6)) { pGame->DisplayHud(FALSE); pNetStats->Draw(); } else { pGame->DisplayHud(TRUE); if(pChatWindow) pChatWindow->Draw(); if(pCmdWindow) pCmdWindow->Draw(); } } }