
22.05.2016, 00:09
|
|
Новичок
Регистрация: 21.06.2015
Сообщений: 22
С нами:
5733802
Репутация:
53
|
|
Какие оффсеты нужны для создания диалога на 0.3.7? Юзаю код ниже, в результате диалог не отображается.
Сообщение от Спойлер
C++:
Код:
#define SAMP_DIALOG_SHOW 0x80320
//
#define SAMP_DIALOG_INFO_OFFSET 0x2129F8
//
showSampDialog
(
int
send
,
int
dialogID
,
int
typedialog
,
char
*
caption
,
char
*
text
,
char
*
button1
,
char
*
button2
)
{
uint32_t
samp_dll
=
(
uint32_t
)
GetModuleHandle
(
"samp.dll"
)
;
g_dwSAMP_Addr
=
(
uint32_t
)
samp_dll
;
uint32_t
func
=
g_dwSAMP_Addr
+
SAMP_DIALOG_SHOW
;
uint32_t
data
=
g_dwSAMP_Addr
+
SAMP_DIALOG_INFO_OFFSET
;
__asm mov eax
,
dword ptr
[
data
]
__asm mov ecx
,
dword ptr
[
eax
]
//mov to offset
__asm push send
//0 - No send response, 1 - Send response
__asm push button2
__asm push button1
__asm push text
__asm push caption
__asm push typedialog
__asm push dialogID
__asm call func
return
;
}
Думаю нужны другие адреса в #define, может знаете какие?
И 2 вопрос, как редактировать пункты в главном меню на Esc? Убрать какой-то например.
|
|
|

22.05.2016, 14:14
|
|
Познающий
Регистрация: 03.11.2014
Сообщений: 43
С нами:
6065807
Репутация:
0
|
|
SAMP_DIALOG_SHOW 0x6B9C0
SAMP_DIALOG_INFO_OFFSET 0x21A0B8
|
|
|

24.05.2016, 17:06
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Как проверить что нужная клавиша была нажата, а не зажата.
|
|
|

24.05.2016, 17:25
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от AWRage
Как проверить что нужная клавиша была нажата, а не зажата.
WM_KEYDOWN
|
|
|

24.05.2016, 22:33
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Как я понял, вместо _beginthreadex можно засунуть вызов своей функции в case: DLL_THREAD_ATTACH? На сколько это будет правильно и когда вообще вызывается функция DllMain и параметром DLL_THREAD_ATTACH?
|
|
|

24.05.2016, 22:58
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от AWRage
Как я понял, вместо _beginthreadex можно засунуть вызов своей функции в case: DLL_THREAD_ATTACH? На сколько это будет правильно и когда вообще вызывается функция DllMain и параметром DLL_THREAD_ATTACH?
DLL_PROCESS_ATTACH вызывается при подключение библиотеки к процессу
DLL_THREAD_ATTACH вызывается когда программа опрашивает подключенные библиотеки. Опрашивает не сама, а система, по этому вызываются даже приинжекченые библиотеки
DLL_THREAD_DETACH аналогично предыдущему, только вызывается позже. Может быть полезно для каких-либо специфичных задач, в которых надо что-то изменить на выходе из библиотеки
DLL_PROCESS_DETACH вызывается при выгрузке библиотеки из памяти процесса
Есть еще WinAPI функция, которая отключает опрос библиотеки, я ее не помню, но можно найти в говно-примерах читов, где сам чит работает в отдельном потоке
|
|
|

25.05.2016, 21:43
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Как на счет delete this? Это плохой тон? Одни пишут что это плохо, другие что это вполне нормально.
C++:
Код:
class
myclass
{
public
:
void
Initialize
(
)
;
void
Release
(
)
{
delete
this
;
}
}
// ...
myclass
*
class
=
new
myclass
(
)
;
// ...
class
->
Initialize
(
)
;
// ...
class
->
Release
(
)
;
|
|
|

25.05.2016, 22:12
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от AWRage
Как на счет delete this? Это плохой тон? Одни пишут что это плохо, другие что это вполне нормально.
C++:
Код:
class
myclass
{
public
:
void
Initialize
(
)
;
void
Release
(
)
{
delete
this
;
}
}
// ...
myclass
*
class
=
new
myclass
(
)
;
// ...
class
->
Initialize
(
)
;
// ...
class
->
Release
(
)
;
а нахуя? Есть же деструктор class->~myclass()
|
|
|

25.05.2016, 22:14
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от SR_team
а нахуя? Есть же деструктор class->~myclass()
Который вызывается при делете. А так же можно вместо инициализации юзать конструктор
|
|
|

27.05.2016, 15:09
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
Не получается получить адрес функции. Вместо неё получается адрес call'a который её вызывает.
C++:
[CODE]
std
::
cout
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|