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

  #6981  
Старый 15.07.2023, 19:28
Z3roKwq
Участник форума
Регистрация: 20.12.2021
Сообщений: 290
С нами: 2315345

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

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

Работает
я наверное не то чето сказал, поэтому проще будет на примере, мне нужно получить позицию нпс, как это сделать?
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

я наверное не то чето сказал, поэтому проще будет на примере, мне нужно получить позицию нпс, как это сделать?
CActorPool
 
Ответить с цитированием

  #6983  
Старый 15.07.2023, 21:53
Z3roKwq
Участник форума
Регистрация: 20.12.2021
Сообщений: 290
С нами: 2315345

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

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

CActorPool
Буду очень благодарен, если пример кода скинеш
 
Ответить с цитированием

  #6984  
Старый 15.07.2023, 23:44
korsarsan
Познающий
Регистрация: 29.09.2021
Сообщений: 82
С нами: 2433639

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

Имеются проблемы с выводом hp другого персонажа

Вот этот код постоянно выводит значение 1000

C++:





Код:
CPed
*
aPed
=
CPools
::
GetPed
(
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
iPlayerID
]
->
pPlayerData
->
pSAMP_Actor
->
ulGTAEntityHandle
)
;
float
fbarr
=
aPed
->
m_fHealth
;


А этот код показывает hp не точно, там постоянно меньше чем на самом деле есть, причем как то рандомно, когда hp 100 он покажет 100, но по мере уменьшения оно становится все менее точно.

C++:





Код:
float
fHealth
=
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
iPlayerID
]
->
pPlayerData
->
fActorHealth
;


Может кто знает как нормально вывести hp другого перса
 
Ответить с цитированием

  #6985  
Старый 15.07.2023, 23:57
#Northn
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами: 4609424

Репутация: 183


По умолчанию

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

Вот этот код постоянно выводит значение 1000

C++:





Код:
CPed
*
aPed
=
CPools
::
GetPed
(
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
iPlayerID
]
->
pPlayerData
->
pSAMP_Actor
->
ulGTAEntityHandle
)
;
float
fbarr
=
aPed
->
m_fHealth
;

так устроен самп. он хранит значения здоровьев в своих пулах

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

А этот код показывает hp не точно, там постоянно меньше чем на самом деле есть, причем как то рандомно, когда hp 100 он покажет 100, но по мере уменьшения оно становится все менее точно.

C++:





Код:
float
fHealth
=
pSAMP
->
getPlayers
(
)
->
pRemotePlayer
[
iPlayerID
]
->
pPlayerData
->
fActorHealth
;

всё дело в том, как калкор хранит значения хп и брони в синхронизации. не исправить
 
Ответить с цитированием

  #6986  
Старый 16.07.2023, 05:24
Dark_Syngers
Новичок
Регистрация: 25.05.2023
Сообщений: 2
С нами: 1565633

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

как получить состояние прицела(разширен он или нет.)
 
Ответить с цитированием

  #6987  
Старый 16.07.2023, 16:21
ччбчлчлчъ ччччшчьпьппзвжв
Постоянный
Регистрация: 16.08.2020
Сообщений: 553
С нами: 3022568

Репутация: 68


По умолчанию

C++:





[CODE]
#include
#include
#include
static
HMODULE
(
WINAPI
*
TrueLoadLibrary
)
(
LPCWSTR lpLibFileName
)
=
LoadLibraryW
;
HMODULE WINAPI
DetouredLoadLibrary
(
LPCWSTR lpLibFileName
)
{
HMODULE res
=
TrueLoadLibrary
(
lpLibFileName
)
;
MessageBoxW
(
NULL
,
lpLibFileName
,
L
"Detoured!"
,
MB_OK
|
MB_ICONEXCLAMATION
)
;
return
res
;
}
void
SetGlobalHook
(
)
{
// Получение адреса оригинальной функции LoadLibraryW из kernel32.dll
TrueLoadLibrary
=
reinterpret_cast

(
GetProcAddress
(
GetModuleHandle
(
TEXT
(
"kernel32.dll"
)
)
,
"LoadLibraryW"
)
)
;
// Установка хука
DetourTransactionBegin
(
)
;
DetourUpdateThread
(
GetCurrentThread
(
)
)
;
DetourAttach
(
&
(
PVOID
&
)
TrueLoadLibrary
,
DetouredLoadLibrary
)
;
DetourTransactionCommit
(
)
;
}
// Функция для удаления глобального хука
void
RemoveGlobalHook
(
)
{
// Удаление хука
DetourTransactionBegin
(
)
;
DetourUpdateThread
(
GetCurrentThread
(
)
)
;
DetourDetach
(
&
(
PVOID
&
)
TrueLoadLibrary
,
DetouredLoadLibrary
)
;
DetourTransactionCommit
(
)
;
}
int
main
(
)
{
// Установка глобального хука
SetGlobalHook
(
)
;
// Ждем нажатия клавиши перед удалением хука
std
::
cout



не работает глобально, что не так? есть такая же версия только в формате длл и без







C++:





Код:
TrueLoadLibrary
=
reinterpret_cast

(
GetProcAddress
(
GetModuleHandle
(
TEXT
(
"kernel32.dll"
)
)
,
"LoadLibraryW"
)
)
;


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

  #6988  
Старый 16.07.2023, 16:47
F0RQU1N and
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами: 4012500

Репутация: 138


По умолчанию

Цитата:
Сообщение от ччбчлчлчъ ччччшчьпьппзвжв  

C++:





Код:
#include 
#include 
#include 
static
HMODULE
(
WINAPI
*
TrueLoadLibrary
)
(
LPCWSTR lpLibFileName
)
=
LoadLibraryW
;
HMODULE WINAPI
DetouredLoadLibrary
(
LPCWSTR lpLibFileName
)
{
HMODULE res
=
TrueLoadLibrary
(
lpLibFileName
)
;
MessageBoxW
(
NULL
,
lpLibFileName
,
L
"Detoured!"
,
MB_OK
|
MB_ICONEXCLAMATION
)
;
return
res
;
}
void
SetGlobalHook
(
)
{
// Получение адреса оригинальной функции LoadLibraryW из kernel32.dll
TrueLoadLibrary
=
reinterpret_cast

(
GetProcAddress
(
GetModuleHandle
(
TEXT
(
"kernel32.dll"
)
)
,
"LoadLibraryW"
)
)
;
// Установка хука
DetourTransactionBegin
(
)
;
DetourUpdateThread
(
GetCurrentThread
(
)
)
;
DetourAttach
(
&
(
PVOID
&
)
TrueLoadLibrary
,
DetouredLoadLibrary
)
;
DetourTransactionCommit
(
)
;
}
// Функция для удаления глобального хука
void
RemoveGlobalHook
(
)
{
// Удаление хука
DetourTransactionBegin
(
)
;
DetourUpdateThread
(
GetCurrentThread
(
)
)
;
DetourDetach
(
&
(
PVOID
&
)
TrueLoadLibrary
,
DetouredLoadLibrary
)
;
DetourTransactionCommit
(
)
;
}
int
main
(
)
{
// Установка глобального хука
SetGlobalHook
(
)
;
// Ждем нажатия клавиши перед удалением хука
std
::
cout

(
GetProcAddress
(
GetModuleHandle
(
TEXT
(
"kernel32.dll"
)
)
,
"LoadLibraryW"
)
)
;


и все работает
а в чем смысл? ты же в своем приложении хукаешь
 
Ответить с цитированием

  #6989  
Старый 16.07.2023, 16:52
ччбчлчлчъ ччччшчьпьппзвжв
Постоянный
Регистрация: 16.08.2020
Сообщений: 553
С нами: 3022568

Репутация: 68


По умолчанию

Цитата:
Сообщение от F0RQU1N and  

а в чем смысл? ты же в своем приложении хукаешь
я хочу глобально хукать функцию LoadLibraryW
 
Ответить с цитированием

  #6990  
Старый 16.07.2023, 16:58
F0RQU1N and
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами: 4012500

Репутация: 138


По умолчанию

Цитата:
Сообщение от ччбчлчлчъ ччччшчьпьппзвжв  

я хочу глобально хукать функцию LoadLibraryW
драйвер делай тогда
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.