Вариант с SF - Информация - [SF] Полезные функции(https://blast.hk/threads/10970/#post-95196)как выпустить пулю в машину, если я имею ее координаты?
float GetDistance(float X, float Y, float Z, float XX, float YY, float ZZ)
{
return sqrt((X - XX) * (X - XX) + (Y - YY) * (Y - YY) + (Z - ZZ) * (Z - ZZ));
}
void BulletData(float PX, float PY, float PZ)
{
stBulletData sync;
ZeroMemory(&sync, sizeof(stBulletData));
sync.sTargetID = NULL;
sync.fOrigin[0] = PEDSELF->GetPosition()->fX;
sync.fOrigin[1] = PEDSELF->GetPosition()->fY;
sync.fOrigin[2] = PEDSELF->GetPosition()->fZ;
sync.fTarget[0] = PX;
sync.fTarget[1] = PY;
sync.fTarget[2] = PZ;
sync.fCenter[0] = 0.0;
sync.fCenter[1] = 1.0;
sync.fCenter[2] = 0.5;
sync.byteWeaponID = SF->getSAMP()->getPlayers()->pLocalPlayer->byteCurrentWeapon;
sync.byteType = 2;
BitStream BulletSync;
BulletSync.Write((BYTE)PacketEnumeration::ID_BULLET_SYNC);
BulletSync.Write((PCHAR)&sync, sizeof(stBulletData));
SF->getRakNet()->SendPacket(&BulletSync);
SF->getSAMP()->getChat()->AddChatMessage(-1, "[] -> Пуля выпущена в машину");
}
void CALLBACK send_bullet_from_car()
{
float poscar[3];
for (int i = 0; i < SAMP_MAX_VEHICLES; i++)
{
if (!SF->getSAMP()->getVehicles()->pSAMP_Vehicle[i]) continue;
if (SF->getSAMP()->getVehicles()->pSAMP_Vehicle[i]->pGTA_Vehicle->base.model_alt_id == 478 || SF->getSAMP()->getVehicles()->pSAMP_Vehicle[i]->pGTA_Vehicle->base.model_alt_id == 422)
{
poscar[0] = SF->getSAMP()->getInfo()->pPools->pVehicle->pGTA_Vehicle[i]->base.matrix[4 * 3];
poscar[1] = SF->getSAMP()->getInfo()->pPools->pVehicle->pGTA_Vehicle[i]->base.matrix[4 * 3 + 1];
poscar[2] = SF->getSAMP()->getInfo()->pPools->pVehicle->pGTA_Vehicle[i]->base.matrix[4 * 3 + 2];
if (GetDistance(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ, poscar[0], poscar[1], poscar[2]) < 6.0)
{
BulletData(poscar[0], poscar[1], poscar[2]);
break;
}
}
}
}
Напиши подробнееКак скомпилить без окна Windows? Что бы был только ImGui когда инжектиться Dll
Как получить координаты кости другого игрока?
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
Ped->GetTransformedBonePosition(BONE_SPINE1, &vPos);
как отнять патрон от оружия которое в руках?
int ammo = SA->getPlayers()->pLocalPlayer->iWeaponAmmo[SA->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->weapon_slot] - 1;
SA->setAmmo(SA->getPlayers()->pLocalPlayer->byteCurrentWeapon, ammo);
int sampAPI::setAmmo(int weaponId, int ammo)
{
typedef int(__thiscall *CPed__setAmmo)(void *_this, int weaponId, int ammo);
return (CPed__setAmmo((uint32_t)0x5DF290))(SA->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped, weaponId, ammo);
}
Imgui по размеру окна растягивай.Как скомпилить без окна Windows? Что бы был только ImGui когда инжектиться Dll
#include "plugin.h"
#include "common.h"
#include "CTimer.h"
#include "CStreaming.h"
#include "CTaskComplexPlayHandSignalAnim.h"
#define NEW_MODEL_AT_KEY_PRESS
using namespace plugin;
class HandSignals {
public:
HandSignals() {
static int keyPressTime = 0;
static int newPlayerModelId = -1;
static int gangModelIds[] = { MODEL_BALLAS1,
MODEL_BALLAS2,
MODEL_BALLAS3,
MODEL_FAM1,
MODEL_FAM2,
MODEL_FAM3,
MODEL_LSV1,
MODEL_LSV2,
MODEL_LSV3,
MODEL_VLA1,
MODEL_VLA2,
MODEL_VLA3 };
Events::gameProcessEvent += [] {
CPed *playa = FindPlayerPed();
if (playa && playa->IsAlive() && CTimer::m_snTimeInMilliseconds - keyPressTime > 500) {
int animationId = -1;
if (KeyPressed(0x31)) // 1
animationId = 320;
else if (KeyPressed(0x32)) // 2
animationId = 321;
else if (KeyPressed(0x33)) // 3
animationId = 322;
else if (KeyPressed(0x34)) // 4
animationId = 323;
else if (KeyPressed(0x35)) // 5
animationId = 324;
if (animationId != -1) {
keyPressTime = CTimer::m_snTimeInMilliseconds;
#ifndef NEW_MODEL_AT_KEY_PRESS
if (newPlayerModelId == -1)
#endif
newPlayerModelId = gangModelIds[rand() % 12];
if (playa->m_nModelIndex != newPlayerModelId) {
CStreaming::RequestModel(newPlayerModelId, 2);
CStreaming::LoadAllRequestedModels(false);
unsigned int savedAnimGroup = playa->m_nAnimGroup;
playa->DeleteRwObject();
playa->m_nModelIndex = -1;
playa->SetModelIndex(newPlayerModelId);
playa->m_nAnimGroup = savedAnimGroup;
CStreaming::SetModelIsDeletable(newPlayerModelId);
}
playa->m_pIntelligence->m_TaskMgr.SetTaskSecondary(new CTaskComplexPlayHandSignalAnim(animationId, 4.0f), 4);
}
}
};
}
} handSignals;
Конкретнее можно?Как подключить проект в Microsoft Visual Studio 2017?
Я скачал архив с проектом для разработчиков. Как его подключить чтобы компилировались файлы .sf?Конкретнее можно?