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

Z3roKwq

Известный
294
157
Как правильно получить свои коорды (для дальнейшего получения дистанции между двумя точками)?
cc:
//Вариант 1
D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
//Использование
player.x, player.y, player.z


//Вариант 2
D3DXVECTOR3 player(SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[0], SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[1], SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[2]);
//Где "id" указываеш свой ид
//Использование
player.x, player.y, player.z

но как по мне лучше юзать первый варик он нормально показывает, если юзать 2 то корды скакать будут при движении

cc:
//Вариант 1
D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
//Использование
player.x, player.y, player.z


//Вариант 2
D3DXVECTOR3 player(SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[0], SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[1], SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[2]);
//Где "id" указываеш свой ид
//Использование
player.x, player.y, player.z

но как по мне лучше юзать первый варик он нормально показывает, если юзать 2 то корды скакать будут при движении
p.s. 2 вариант для sf api 5.5.0(1)
 
  • Нравится
Реакции: why ega

why ega

РП игрок
Модератор
2,554
2,247
cc:
//Вариант 1
D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
//Использование
player.x, player.y, player.z


//Вариант 2
D3DXVECTOR3 player(SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[0], SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[1], SF->getSAMP()->getPlayers()->GetOnFootData(id)->position[2]);
//Где "id" указываеш свой ид
//Использование
player.x, player.y, player.z

но как по мне лучше юзать первый варик он нормально показывает, если юзать 2 то корды скакать будут при движении


p.s. 2 вариант для sf api 5.5.0(1)
как на 5.5.1 можно получить свой айдишник?
upd: решил

Из-за чего ошибка?
C++:
pos[0] = SF->getSAMP()->getPlayers()->remotePlayerInfo[std::stoi(id)]->data->onFootPos[0]; // X
pos[1] = SF->getSAMP()->getPlayers()->remotePlayerInfo[std::stoi(id)]->data->onFootPos[1]; // Y
pos[2] = SF->getSAMP()->getPlayers()->remotePlayerInfo[std::stoi(id)]->data->onFootPos[2]; // Z
                               
D3DXVECTOR3 player(SF->getSAMP()->getPlayers()->GetOnFootData(SF->getSAMP()->getPlayers()->localPlayerInfo.id)->position[0], SF->getSAMP()->getPlayers()->GetOnFootData(SF->getSAMP()->getPlayers()->localPlayerInfo.id)->position[1], SF->getSAMP()->getPlayers()->GetOnFootData(SF->getSAMP()->getPlayers()->localPlayerInfo.id)->position[2]);

float dist = sqrt((pos[0] - player.x)^2 + (pos[1] - player.y)^2 + (pos[2] - player.z)^2);

Пытаюсь найти дистанцию между моим персом и чужим, но появляется ошибка

1666076604597.png
 
Последнее редактирование:

MeG@LaDo[N] ^_^

Известный
280
316
как на 5.5.1 можно получить свой айдишник?
upd: решил

Из-за чего ошибка?
C++:
pos[0] = SF->getSAMP()->getPlayers()->remotePlayerInfo[std::stoi(id)]->data->onFootPos[0]; // X
pos[1] = SF->getSAMP()->getPlayers()->remotePlayerInfo[std::stoi(id)]->data->onFootPos[1]; // Y
pos[2] = SF->getSAMP()->getPlayers()->remotePlayerInfo[std::stoi(id)]->data->onFootPos[2]; // Z
                             
D3DXVECTOR3 player(SF->getSAMP()->getPlayers()->GetOnFootData(SF->getSAMP()->getPlayers()->localPlayerInfo.id)->position[0], SF->getSAMP()->getPlayers()->GetOnFootData(SF->getSAMP()->getPlayers()->localPlayerInfo.id)->position[1], SF->getSAMP()->getPlayers()->GetOnFootData(SF->getSAMP()->getPlayers()->localPlayerInfo.id)->position[2]);

float dist = sqrt((pos[0] - player.x)^2 + (pos[1] - player.y)^2 + (pos[2] - player.z)^2);

Пытаюсь найти дистанцию между моим персом и чужим, но появляется ошибка

Посмотреть вложение 173441
float GetDistance(float lPos[3], float pPos[3]) {
return sqrt((lPos[0] - pPos[0]) * (lPos[0] - pPos[0]) + (lPos[1] - pPos[1]) * (lPos[1] - pPos[1]) + (lPos[2] - pPos[2]) * (lPos[2] - pPos[2]));
}

и еще,если ты/игрок будет не пешком(в тачке или пассажире) то позиция обновляться не будет, потому что ты получаешь онфут позицию
 
  • Нравится
Реакции: why ega

AdCKuY_DpO4uLa

Известный
287
477
Как происходит шифрование пакета RakClientInterface::RPС? Если отправлять РПЦ, то оно идёт куда-то в ракпир, где преобразуется в пакет (ID_RPC, rpcID(byte), битстрим самого РПЦ), потом идут какие-то махинации, как я понял, с AES шифрованием и ключом в 16 байт, после чего пакет идёт в SocketLayer::SendTo уже в зашифрованном виде, где шифруется дейтаграмма, не могу понять, откуда берётся этот ключ, которым шифруется пакет до SocketLayer::SendTo
 
  • Клоун
  • Вау
Реакции: Fott и Z3roKwq

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,731
4,716
Как происходит шифрование пакета RakClientInterface::RPС? Если отправлять РПЦ, то оно идёт куда-то в ракпир, где преобразуется в пакет (ID_RPC, rpcID(byte), битстрим самого РПЦ), потом идут какие-то махинации, как я понял, с AES шифрованием и ключом в 16 байт, после чего пакет идёт в SocketLayer::SendTo уже в зашифрованном виде, где шифруется дейтаграмма, не могу понять, откуда берётся этот ключ, которым шифруется пакет до SocketLayer::SendTo
authkey же
 

AdCKuY_DpO4uLa

Известный
287
477
auth_key есть два типа, один идёт пакетом ID_AUTH_KEY, второй идёт в RPC_ClientJoin/RPC_NPCJoin, но когда ты этот РПЦ кидаешь, он переводится в пакет в ракпире, и как-то шифруется, если выводить байты этого РПЦ до отправки через RakClientInterface::RPC, то будет виден даже ник, который находится в битстриме RPC_ClientJoin, но если выводить те же самые байты в SocketLayer::SendTo до шифрования дейтограммы, то они уже будут зашифрованны чем-то, соответственно, ник уже не показывается во всём массиве байт, но и сам массив порядком увеличивается в размере, примерно на 40+- байт
 
  • Клоун
  • Нравится
Реакции: Fott и Z3roKwq

why ega

РП игрок
Модератор
2,554
2,247
Из-за чего ошибки во время компиляции?

C++:
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

void __stdcall mainloop()
{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            initialized = true;

            SF->getGame()->registerGameDestructorCallback(PluginFree);
            SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
            SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_RESET, Reset);
            SF->getGame()->registerWndProcCallback(SFGame::MEDIUM_CB_PRIORITY, WndProcHandler);
           
            ImGui::CreateContext();
            ImGuiIO& io = ImGui::GetIO(); (void)io;
            ImGui_ImplWin32_Init(GetActiveWindow());
            ImGui_ImplDX9_Init(SF->getRender()->getD3DDevice());

            SF->getSAMP()->registerChatCommand("menui", [](std::string) {
                menu = !menu;
            });
        }
    }
}

bool CALLBACK Present(CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion)
{

    if (SUCCEEDED(SF->getRender()->BeginRender()))
    {
        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();
        if (menu)
        {
            ImGui::Begin("ImGui меню", &menu);
            {
                ImGui::Text("Abc");
            }
            ImGui::End();
        }
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

        SF->getRender()->EndRender();
    }
    return true;
}

HRESULT CALLBACK Reset(D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    ImGui_ImplDX9_InvalidateDeviceObjects();

    return true;
}

bool CALLBACK WndProcHandler(HWND hwd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    ImGui_ImplWin32_WndProcHandler(hwd, msg, wParam, lParam);

    return true;
}

void CALLBACK PluginFree()
{

    ImGui_ImplDX9_Shutdown();
    ImGui_ImplWin32_Shutdown();
    ImGui::DestroyContext();
}

main.hpp:
#pragma once

#include "SAMPFUNCS_API.h"
#include "game_api.h"

bool CALLBACK Present(CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion);
HRESULT CALLBACK Reset(D3DPRESENT_PARAMETERS* pPresentationParameters);
bool CALLBACK WndProcHandler(HWND hwd, UINT msg, WPARAM wParam, LPARAM lParam);
void CALLBACK PluginFree();

static bool menu = false;

#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1

extern SAMPFUNCS* SF;

Код:
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiContext * __cdecl ImGui::CreateContext(struct ImFontAtlas *)" (?CreateContext@ImGui@@YAPAUImGuiContext@@PAUImFontAtlas@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::DestroyContext(struct ImGuiContext *)" (?DestroyContext@ImGui@@YAXPAUImGuiContext@@@Z) в функции "void __stdcall PluginFree(void)" (?PluginFree@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiIO & __cdecl ImGui::GetIO(void)" (?GetIO@ImGui@@YAAAUImGuiIO@@XZ) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::NewFrame(void)" (?NewFrame@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::EndFrame(void)" (?EndFrame@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::Render(void)" (?Render@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImDrawData * __cdecl ImGui::GetDrawData(void)" (?GetDrawData@ImGui@@YAPAUImDrawData@@XZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui::Begin(char const *,bool *,int)" (?Begin@ImGui@@YA_NPBDPA_NH@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::End(void)" (?End@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::Text(char const *,...)" (?Text@ImGui@@YAXPBDZZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui_ImplDX9_Init(struct IDirect3DDevice9 *)" (?ImGui_ImplDX9_Init@@YA_NPAUIDirect3DDevice9@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_Shutdown(void)" (?ImGui_ImplDX9_Shutdown@@YAXXZ) в функции "void __stdcall PluginFree(void)" (?PluginFree@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_NewFrame(void)" (?ImGui_ImplDX9_NewFrame@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_RenderDrawData(struct ImDrawData *)" (?ImGui_ImplDX9_RenderDrawData@@YAXPAUImDrawData@@@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_InvalidateDeviceObjects(void)" (?ImGui_ImplDX9_InvalidateDeviceObjects@@YAXXZ) в функции "long __stdcall Reset(struct _D3DPRESENT_PARAMETERS_ *)" (?Reset@@YGJPAU_D3DPRESENT_PARAMETERS_@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui_ImplWin32_Init(void *)" (?ImGui_ImplWin32_Init@@YA_NPAX@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplWin32_Shutdown(void)" (?ImGui_ImplWin32_Shutdown@@YAXXZ) в функции "void __stdcall PluginFree(void)" (?PluginFree@@YGXXZ).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplWin32_NewFrame(void)" (?ImGui_ImplWin32_NewFrame@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z).
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "long __cdecl ImGui_ImplWin32_WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?ImGui_ImplWin32_WndProcHandler@@YAJPAUHWND__@@IIJ@Z) в функции "bool __stdcall WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProcHandler@@YG_NPAUHWND__@@IIJ@Z).

1666147929795.png

sf 5.5.1
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,731
4,716
auth_key есть два типа, один идёт пакетом ID_AUTH_KEY, второй идёт в RPC_ClientJoin/RPC_NPCJoin, но когда ты этот РПЦ кидаешь, он переводится в пакет в ракпире, и как-то шифруется, если выводить байты этого РПЦ до отправки через RakClientInterface::RPC, то будет виден даже ник, который находится в битстриме RPC_ClientJoin, но если выводить те же самые байты в SocketLayer::SendTo до шифрования дейтограммы, то они уже будут зашифрованны чем-то, соответственно, ник уже не показывается во всём массиве байт, но и сам массив порядком увеличивается в размере, примерно на 40+- байт
Вообще, там либо AES шифрование ключом из пакета ID_AUTH_KEY, либо сжатие, только сегодня это рыл.

А к самому клиентджоину если мне память не изменяет еще дополнительные данные приписываются
 
  • Нравится
Реакции: AdCKuY_DpO4uLa

Z3roKwq

Известный
294
157
Можно ли отрегистрировать(отменить регистрацию(я хз как сказать)) крч в муне есть функция sampUnregisterChatCommand() есть ли что то подобное в сф ну или как такое можно реализовать
 

AdCKuY_DpO4uLa

Известный
287
477
Можно ли отрегистрировать(отменить регистрацию(я хз как сказать)) крч в муне есть функция sampUnregisterChatCommand() есть ли что то подобное в сф ну или как такое можно реализовать
C++:
void unregisterChatCommand(void *func) {
    for (int i = 0; i < 144; i++) {
        if (g_Input->pCMDs[i] == func) {
            memset(&g_Input->pCMDs[i], 0, 4);
            memset(g_Input->szCMDNames[i], 0, 33);
            memset(&g_Input->szCMDNames[i], 0, 4);
        }
    }
}
 
  • Нравится
  • Клоун
Реакции: Fott и Z3roKwq

MeG@LaDo[N] ^_^

Известный
280
316
как отправить GET/POST запрос на https?? (без curl, бо установить его та еще дрочь)
и спарсить текст с определенного div-a
 

Savchik Blazer

Но я, мечту свою лелея...
Проверенный
671
293
как отправить GET/POST запрос на https?? (без curl, бо установить его та еще дрочь)
и спарсить текст с определенного div-a