HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #6511  
Старый 17.10.2022, 21:22
MeG@LaDo[N] ^_^
Участник форума
Регистрация: 21.07.2020
Сообщений: 280
С нами: 3059886

Репутация: 68
По умолчанию

Цитата:
Сообщение от egaa  

Сяб, работает. А что вообще обозначает эта функция? А то вырезал ее из Гайда Клина
есть ли в табе такой айди( 1 - есть, 0 - нет)
 
Ответить с цитированием

  #6512  
Старый 17.10.2022, 21:42
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Цитата:
Сообщение от Z3roKwq  

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
)
;


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

 
Ответить с цитированием

  #6513  
Старый 17.10.2022, 22:51
MeG@LaDo[N] ^_^
Участник форума
Регистрация: 21.07.2020
Сообщений: 280
С нами: 3059886

Репутация: 68
По умолчанию

Цитата:
Сообщение от egaa  

как на 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
)
;


Пытаюсь найти дистанцию между моим персом и чужим, но появляется ошибка
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]));

}

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

  #6514  
Старый 17.10.2022, 22:55
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Цитата:
Сообщение от MeG@LaDo[N] ^_^  

и еще,если ты/игрок будет не пешком(в тачке или пассажире) то позиция обновляться не будет, потому что ты получаешь онфут позицию
А как эт можно фиксануть? Добавить проверку на кар?
 
Ответить с цитированием

  #6515  
Старый 17.10.2022, 22:56
MeG@LaDo[N] ^_^
Участник форума
Регистрация: 21.07.2020
Сообщений: 280
С нами: 3059886

Репутация: 68
По умолчанию

Цитата:
Сообщение от egaa  

А как эт можно фиксануть? Добавить проверку на кар?
+
 
Ответить с цитированием

  #6516  
Старый 18.10.2022, 11:44
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

Репутация: 213
По умолчанию

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

  #6517  
Старый 18.10.2022, 13:27
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от AdCKuY_DpO4uLa  

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

  #6518  
Старый 18.10.2022, 13:39
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

Репутация: 213
По умолчанию

Цитата:
Сообщение от kin4stat  

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

  #6519  
Старый 18.10.2022, 18:37
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Из-за чего ошибки во время компиляции?

C++:





Код:
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include 
#define DIRECTINPUT_VERSION 0x0800
#include 
#include 
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).




sf 5.5.1
 
Ответить с цитированием

  #6520  
Старый 18.10.2022, 18:45
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от AdCKuY_DpO4uLa  

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

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





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.