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

lorgon

Известный
656
272
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,083
2,111
Урон по тачке идет, если в ней есть игрок. Так же ид игрока, который в машине надо указывать.
 

Musaigen

shitposter
Проверенный
1,656
1,471
Как получить координаты кости другого игрока?
 

CleanLegend

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

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

iAmerican

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