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

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

Репутация: 138


По умолчанию

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

Можно ли как-то в realtime хукать функции и вообще работать с памятью? Пробовал консольным приложением менять че-то (используя SAMP-API c++), но не получалось, хотя с длл все норм. Можете, пожалуйста, обьяснить, что я делаю не так?
а как то можно не в "realtime"?

вероятно ты писал в память своей проги а не игры
 
Ответить с цитированием

  #2  
Старый 11.07.2023, 19:16
reussssya
Новичок
Регистрация: 12.03.2023
Сообщений: 28
С нами: 1671509

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

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

а как то можно не в "realtime"?
вероятно ты писал в память своей проги а не игры
Дигерман сверху правильно меня понял, хотел сделать external process
 
Ответить с цитированием

  #3  
Старый 13.07.2023, 11:44
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

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

Можно ли как-то в realtime хукать функции и вообще работать с памятью? Пробовал консольным приложением менять че-то (используя SAMP-API c++), но не получалось, хотя с длл все норм. Можете, пожалуйста, обьяснить, что я делаю не так?
Читать и писать память достаточно легко, для этого есть ReadProcessMemory и WriteProcessMemory. С хуками сложнее, тут надо ставить брейкпоинты, либо инжектить код с установкой хуков и пробросом сообщений в твоё приложение (например через сокеты). Это будет работать достаточно медленно, так что не рекомендую ставить хуки из внешнего приложения. Напомню что External приложения не должны редактировать память процесса, чтобы не быть обнаруженными.
 
Ответить с цитированием

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

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

В sf есть какой нибудь аналог getAllChars() из муна?
 
Ответить с цитированием

  #5  
Старый 15.07.2023, 14:29
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

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

В sf есть какой нибудь аналог getAllChars() из муна?
Перебор всех идов на сервере, получение их CPed и проверять что структуры не равны nullptr
 
Ответить с цитированием

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

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

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

Перебор всех идов на сервере, получение их CPed и проверять что структуры не равны nullptr
Ну это я знаю, но на радмире этот способ не особо работает
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

Ну это я знаю, но на радмире этот способ не особо работает
Работает
 
Ответить с цитированием

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

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

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

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

  #9  
Старый 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 другого перса
 
Ответить с цитированием

  #10  
Старый 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
;

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





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


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




ANTICHAT ™ © 2001- Antichat Kft.