Другое С/С++ Вопрос - Ответ

lorgon

Известный
656
269
1. Как можно сделать радар зная только координату x, y игрока(другого и свои координаты конечно).(Вопрос по другой игре и не c++, но думаю всё равно поможет) Что-бы при перемещения игрока позиция на радаре тоже менялось.
 
Последнее редактирование:
  • Нравится
Реакции: _Vine_

Ranto

Участник
45
1
Как скомпилить без окна Windows? Что бы был только ImGui когда инжектиться Dll
upload_2018-8-9_16-33-48.png
 

-raymond-

Известный
110
9
машина не получает урон

C++:
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;
            }
        }
    }
}
 

Dark_Knight

Me, me and me.
Друг
4,075
2,091
Урон по тачке идет, если в ней есть игрок. Так же ид игрока, который в машине надо указывать.
 

CleanLegend

Известный
Всефорумный модератор
476
934
Как скомпилить без окна Windows? Что бы был только ImGui когда инжектиться Dll
Напиши подробнее

Как получить координаты кости другого игрока?
C++:
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
Ped->GetTransformedBonePosition(BONE_SPINE1, &vPos);
 

iAmerican

Известный
Друг
614
259
как отнять патрон от оружия которое в руках?
C++:
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);
}

на сф сам переведешь

Как скомпилить без окна Windows? Что бы был только ImGui когда инжектиться Dll
Imgui по размеру окна растягивай.
И замени флаг создания окна с WS_OVERLAPPEDWINDOW на WS_POPUP.
 
Последнее редактирование модератором:

Ma[x].

Известный
185
13
Скомпилируйте код пж а то не устанавливаеться прога чтобы компильнуть
Код:
#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;
 
  • Нравится
Реакции: kawa operand