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

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

Репутация: 183


По умолчанию

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

как перезаписать самповскую команду? (/q к примеру)
Регистрируешь ее еще раз, и все. Либо в структуре stInputInfo изменяешь функцию (CMDPROC) на свою, поиском по зарегистрированным именам команд

C++:





Код:
typedef
void
(
__cdecl
*
CMDPROC
)
(
PCHAR
)
;
struct
stInputInfo
{
void
*
pD3DDevice
;
void
*
pDXUTDialog
;
stInputBox
*
pDXUTEditBox
;
CMDPROC                pCMDs
[
SAMP_MAX_CLIENTCMDS
]
;
char
szCMDNames
[
SAMP_MAX_CLIENTCMDS
]
[
33
]
;
int
iCMDCount
;
int
iInputEnabled
;
char
szInputBuffer
[
129
]
;
char
szRecallBufffer
[
10
]
[
129
]
;
char
szCurrentBuffer
[
129
]
;
int
iCurrentRecall
;
int
iTotalRecalls
;
CMDPROC                pszDefaultCMD
;
}
;
 
Ответить с цитированием

  #4802  
Старый 12.09.2020, 14:13
kizn
Флудер
Регистрация: 23.09.2017
Сообщений: 2,409
С нами: 4546268

Репутация: 183


По умолчанию

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

Регистрируешь ее еще раз, и все.
как я понял, сф ее не перезаписывает, как это делает луа
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

как я понял, сф ее не перезаписывает, как это делает луа
Значит через структуру подменить CMDPROC нужно будет
 
Ответить с цитированием

  #4804  
Старый 12.09.2020, 14:31
checkdasound
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами: 4387250

Репутация: 133


По умолчанию

Есть плагин с d3d9 рендером. Как сделать, чтобы инициализация хука происходила в нужный момент. Объясню: если поставить проверку на загрузку игры (0xC8D4C0 != 9) и сразу после нее инициализировать, то не будет работать, но если поставить после этого задержку в секунд так 10, то будет, но это такое. Мб есть какой-то адрес, отвечающий за это или что-то типа того.
 
Ответить с цитированием

  #4805  
Старый 12.09.2020, 14:38
4el0ve4ik
Познавший АНТИЧАТ
Регистрация: 12.11.2015
Сообщений: 1,560
С нами: 5526867

Репутация: 183


По умолчанию

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

Есть плагин с d3d9 рендером. Как сделать, чтобы инициализация хука происходила в нужный момент. Объясню: если поставить проверку на загрузку игры (0xC8D4C0 != 9) и сразу после нее инициализировать, то не будет работать, но если поставить после этого задержку в секунд так 10, то будет, но это такое. Мб есть какой-то адрес, отвечающий за это или что-то типа того.
Проверять 0xC97C28 - IDirect3DDevice9 pointer! = nullptr, после проверки делать инициальзацию
 
Ответить с цитированием

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

Репутация: 183


По умолчанию

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

Есть плагин с d3d9 рендером. Как сделать, чтобы инициализация хука происходила в нужный момент. Объясню: если поставить проверку на загрузку игры (0xC8D4C0 != 9) и сразу после нее инициализировать, то не будет работать, но если поставить после этого задержку в секунд так 10, то будет, но это такое. Мб есть какой-то адрес, отвечающий за это или что-то типа того.
Думаю можно хукнуть это:

plugin-sdk/plugin_sa/game_sa/CRenderer.cpp at b38ab7b07f74ac86f4283095f0386617d12fba73 · DK22Pac/plugin-sdk

An SDK for developing ASI/CLEO plugins for GTA San Andreas, GTA Vice City and GTA III - DK22Pac/plugin-sdk

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

  #4807  
Старый 12.09.2020, 14:48
CleanLegend
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами: 6908018

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

Цитата:
Сообщение от 4el0ve4ik  

Проверять 0xC97C28 - IDirect3DDevice9 pointer! = nullptr, после проверки делать инициальзацию
такое не прокатит, он уже проверят инициализацию игры через 0xC8D4C0.

этот указатель(0xC97C28) заменяется на новый указатель при инициализации samp.dll.

нужно ждать пока пройдет инициализация замены указателя и только потом хукать, так как изначально выход идет на present от gta_sa, потом samp заменяет всю виртуальную таблицу на свою.

как вариант можно проверять какую либо структуру из samp на null
 
Ответить с цитированием

  #4808  
Старый 12.09.2020, 14:50
checkdasound
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами: 4387250

Репутация: 133


По умолчанию

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

такое не прокатит, он уже проверят инициализацию игры через 0xC8D4C0.
этот указатель(0xC97C28) заменяется на новый указатель при инициализации samp.dll.
нужно ждать пока пройдет инициализация замены указателя и только потом хукать, так как изначально выход идет на present от gta_sa, потом samp заменяет всю виртуальную таблицу на свою.
как вариант можно проверять какую либо структуру из samp на null
мне нужно было без сампа, а вариант человечика прокатил

p.s. на самом деле нет, просто я забыл задержку убрать
 
Ответить с цитированием

  #4809  
Старый 12.09.2020, 14:52
4el0ve4ik
Познавший АНТИЧАТ
Регистрация: 12.11.2015
Сообщений: 1,560
С нами: 5526867

Репутация: 183


По умолчанию

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

такое не прокатит, он уже проверят инициализацию игры через 0xC8D4C0.
этот указатель(0xC97C28) заменяется на новый указатель при инициализации samp.dll.
нужно ждать пока пройдет инициализация замены указателя и только потом хукать, так как изначально выход идет на present от gta_sa, потом samp заменяет всю виртуальную таблицу на свою.
как вариант можно проверять какую либо структуру из samp на null
Че это не прокатит, просто самп будет рендерить раньше плагина и всего лишь, мы то подменим таблицу гта са, после чего самп уже заменяет измененную таблицу на свою и получится цепочка в виде самп->наш плагин->гта са

@CleanLegend работает же

Цитата:
Сообщение от Спойлер  




C++:





Код:
void
Thread
(
void
*
)
{
while
(
*
reinterpret_cast

(
0xC97C28
)
!=
nullptr
)
Sleep
(
350
)
;
d3d3hk
=
new
D3D9Hook
(
*
reinterpret_cast

(
0xC97C28
)
)
;
d3d3hk
->
SetHook
(
&
hkdPresent
,
iPresent
)
;
d3d3hk
->
SetHook
(
&
hkdReset
,
iReset
)
;
gOriginalPresent
=
(
tPresent
)
d3d3hk
->
GetOriginalFunc
(
iPresent
)
;
gOriginalReset
=
(
tReset
)
d3d3hk
->
GetOriginalFunc
(
iReset
)
;
}


остальную часть кода нет смысла выкладывать.
 
Ответить с цитированием

  #4810  
Старый 12.09.2020, 17:05
kizn
Флудер
Регистрация: 23.09.2017
Сообщений: 2,409
С нами: 4546268

Репутация: 183


По умолчанию

По поводу SF: да, она перезаписывает самповскую команду, ошибка была в другом. Вопрос теперь у меня другой:

- как сделать проверку, остановился ли персонаж? в PEDSELF не нашел
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.