Exemple #1
0
void cheat_lockstatus()
{
	if (!cheat_state->_generic.lockstatus)
		return;
	if (gta_menu_active())
		return;
	if (cheat_state->_generic.cheat_panic_enabled)
		return;
	if (!pGameInterface || !pGameInterface->GetPools())
		return;
	if (!pPedSelf)
		return;

	const vehicle_entry *vehicle;
	char				buf[256];
	int					v;
	float				w, h;

	D3DXVECTOR3			poss, screenposs;
	CVector2D			screenPosition;
	CVector				ourPosition, iterPosition, ourPosMinusIter;

	// get our position
	if (!isBadPtr_GTA_pVehicle(pPedSelf->GetVehicle()))
	{
		ourPosition = *(pPedSelf->GetVehicle()->GetPosition());
	}
	else
	{
		ourPosition = pPedSelf->GetInterface()->Placeable.matrix->vPos;
	}

	// setup iterator
	CVehicleSA	*iterVehicle = NULL;
	CPoolsSA	*pPools = reinterpret_cast <CPoolsSA *> (pGameInterface->GetPools());
	CPoolsSA::vehiclePool_t::mapType::iterator iter = pPools->m_vehiclePool.map.begin();

	// iterate
	while (iter.pos < iter.end)
	{
		// map iterator CVehicleSA pointer to our CVehicleSA pointer
		iterVehicle = iter.pos->second;

		// advance to next CVehicleSA for next pass
		iter.pos++;

		// move past null pointers
		if (isBadPtr_GTA_pVehicle(iterVehicle))
			continue;
		//if ( isBadPtr_GTA_pVehicle(iterVehicle->GetVehicleInterface()) )
		//	continue;

		// check if it's farther than set.vehicle_tags_dist
		iterPosition = iterVehicle->GetInterface()->Placeable.matrix->vPos;
		ourPosMinusIter = ourPosition - iterPosition;
		if (ourPosMinusIter.Length() > set.vehicle_tags_dist)
			continue;

		// check if it's our vehicle
		if (iterVehicle == pPedSelf->GetVehicle())
			continue;

		// check if it's near zero
		if (iterVehicle->GetPosition()->IsNearZero())
			continue;

		// CVector to D3DXVECTOR3, function to be converted to CVector later
		poss.x = iterPosition.fX;
		poss.y = iterPosition.fY;
		poss.z = iterPosition.fZ;

		// yup
		CalcScreenCoors(&poss, &screenposs);

		// check if the vehicle is culled or not
		if (screenposs.z < 1.f)
			continue;

		// D3DXVECTOR3 to CVector2D
		screenPosition.fX = screenposs.x;
		screenPosition.fY = screenposs.y;

		// get the vehicle model's name
		vehicle = gta_vehicle_get_by_id(iterVehicle->GetModelIndex());

		// get SAMP's vehicle id
		if (g_Vehicles != NULL)
			v = translateGTASAMP_vehiclePool.iSAMPID[getVehicleGTAIDFromInterface((DWORD *)iterVehicle->GetVehicleInterface())];
		else
			v = (int)iterVehicle->GetArrayID();

		/////////////////
		// render time //
		h = pD3DFont->DrawHeight();
		_snprintf_s(buf, sizeof(buf)-1, "%s", iterVehicle->AreDoorsLocked() ? "Закрыта" : "Открыта");
		w = pD3DFont->DrawLength(buf);

		// different color if car is being driven
		DWORD	color_veh;
		if (iterVehicle->AreDoorsLocked())
			color_veh = D3DCOLOR_XRGB(255, 0, 0); // blueish 100, 150, 235
		else
			color_veh = D3DCOLOR_XRGB(0, 255, 0);

		// render vehicle name
		pD3DFont->PrintShadow(screenPosition.fX, screenPosition.fY,
			color_veh, buf);
	}
	return;
}