 |
|

24.07.2019, 17:24
|
|
Познающий
Регистрация: 01.05.2017
Сообщений: 62
С нами:
4754881
Репутация:
58
|
|
Как в sf api ускорить анимацию?
|
|
|

25.07.2019, 00:51
|
|
Познавший АНТИЧАТ
Регистрация: 02.08.2018
Сообщений: 1,295
С нами:
4095395
Репутация:
183
|
|
здрсте всем привет всем! у меня тут встал вопросик, как сделать окно подтверждения на имгуи?
пример: нажимаю на буттон "здарова" и выходит имгуи окошечко и там текст "вы уверены?" и 2 кнопки "да" и "нет"
|
|
|

25.07.2019, 00:52
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Сообщение от social enemy
здрсте всем привет всем! у меня тут встал вопросик, как сделать окно подтверждения на имгуи?
пример: нажимаю на буттон "здарова" и выходит имгуи окошечко и там текст "вы уверены?" и 2 кнопки "да" и "нет"
C++:
Код:
if
(
ImGui
::
Button
(
"Modal"
)
)
ImGui
::
OpenPopup
(
"Modal window"
)
;
if
(
ImGui
::
BeginPopupModal
(
"Modal window"
)
)
{
ImGui
::
Text
(
"Hello dsjfhds fhjs hfj dshfj hds"
)
;
if
(
ImGui
::
Button
(
"Close"
)
)
ImGui
::
CloseCurrentPopup
(
)
;
ImGui
::
EndPopup
(
)
;
}
|
|
|

25.07.2019, 21:18
|
|
Новичок
Регистрация: 18.10.2015
Сообщений: 6
С нами:
5563739
Репутация:
0
|
|
Подскажите, за что отвечает функция samp.dll+0x30B30 (0.3.7r1)?
|
|
|

25.07.2019, 22:44
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Сообщение от index
Подскажите, за что отвечает функция samp.dll+0x30B30 (0.3.7r1)?
Хз у него такой же вопрос
Сообщение от barspinoff
Народ подскажите что за адрес и для чего он нужен
GetModuleHandle("samp.dll") + 0x30B30
|
|
|

25.07.2019, 22:52
|
|
Новичок
Регистрация: 18.10.2015
Сообщений: 6
С нами:
5563739
Репутация:
0
|
|
Сообщение от Stiopko
Хз у него такой же вопрос
Я видел  Но, всё-таки, 3 года прошло.
===
Сообщение от index
Подскажите, за что отвечает функция samp.dll+0x30B30 (0.3.7r1)?
У меня с ней проблема. Судя по сигнатуре (могу ошибаться) - это
Код:
bool __thiscall RakClient::RPC(void *this, int* uniqueID, BitStream *bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, bool shiftTimestamp );
, IDA дает такой листинг псевдокода:
C++:
Код:
char
__thiscall
sub_10030B30
(
char
*
this
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
int
a6
,
int
a7
)
{
int
v7
;
// eax
char
result
;
// al
v7
=
*
(
_DWORD
*
)
(
this
-
0xAAA
)
;
if
(
v7
)
result
=
sub_10036C30
(
a2
,
a3
,
a4
,
a5
,
a6
,
*
(
_DWORD
*
)
(
v7
+
1
)
,
*
(
_WORD
*
)
(
v7
+
5
)
,
0
,
a7
,
dword_100EC770
,
dword_100EC774
,
0
)
;
else
result
=
0
;
return
result
;
}
Тоже самое в asm:
Код:
.text:10030B30 sub_10030B30 proc near ; DATA XREF: .rdata:100D534C↓o
.text:10030B30
.text:10030B30 arg_0 = dword ptr 4
.text:10030B30 arg_4 = dword ptr 8
.text:10030B30 arg_8 = dword ptr 0Ch
.text:10030B30 arg_C = dword ptr 10h
.text:10030B30 arg_10 = dword ptr 14h
.text:10030B30 arg_14 = dword ptr 18h
.text:10030B30
.text:10030B30 mov eax, [ecx-0AAAh]
.text:10030B36 test eax, eax
.text:10030B38 push esi
.text:10030B39 jnz short loc_10030B41
.text:10030B3B xor al, al
.text:10030B3D pop esi
.text:10030B3E retn 18h
.text:10030B41 ; ---------------------------------------------------------------------------
.text:10030B41
.text:10030B41 loc_10030B41: ; CODE XREF: sub_10030B30+9↑j
.text:10030B41 mov edx, dword_100EC774
.text:10030B47 push 0
.text:10030B49 push edx
.text:10030B4A mov edx, dword_100EC770
.text:10030B50 push edx
.text:10030B51 mov edx, [esp+10h+arg_14]
.text:10030B55 push edx
.text:10030B56 push 0
.text:10030B58 sub esp, 8
.text:10030B5B inc eax
.text:10030B5C mov esi, [eax] ; Ошибка доступа
.text:10030B5E mov ax, [eax+4]
.text:10030B62 mov edx, esp
.text:10030B64 mov [edx], esi
.text:10030B66 mov [edx+4], ax
.text:10030B6A mov edx, [esp+20h+arg_10]
.text:10030B6E mov eax, [esp+20h+arg_C]
.text:10030B72 push edx
.text:10030B73 mov edx, [esp+24h+arg_8]
.text:10030B77 push eax
.text:10030B78 mov eax, [esp+28h+arg_4]
.text:10030B7C push edx
.text:10030B7D mov edx, [esp+2Ch+arg_0]
.text:10030B81 push eax
.text:10030B82 push edx
.text:10030B83 add ecx, 0FFFFF222h
.text:10030B89 call sub_10036C30
.text:10030B8E pop esi
.text:10030B8F retn 18h
.text:10030B8F sub_10030B30 endp
При попытке использовать ее, передав в качестве this
Код:
[ [ dwSAMP + SAMP_INFO_OFFSET ] + SAMP_RAKCLIENT_INTERFACE ]
игру крашит. В 6 строчке переменной v7 присваевается значение по адресу
(в каких вообще случаях бывает отрицательный сдвиг от this?), и в 14 строке получаю ошибку доступа. Может, функция не та?
|
|
|

25.07.2019, 23:35
|
|
Участник форума
Регистрация: 14.06.2015
Сообщений: 126
С нами:
5744580
Репутация:
28
|
|
Сообщение от index
Я видел  Но, всё-таки, 3 года прошло.
===
У меня с ней проблема. Судя по сигнатуре (могу ошибаться) - это
Код:
bool __thiscall RakClient::RPC(void *this, int* uniqueID, BitStream *bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, bool shiftTimestamp );
, IDA дает такой листинг псевдокода:
C++:
Код:
char
__thiscall
sub_10030B30
(
char
*
this
,
int
a2
,
int
a3
,
int
a4
,
int
a5
,
int
a6
,
int
a7
)
{
int
v7
;
// eax
char
result
;
// al
v7
=
*
(
_DWORD
*
)
(
this
-
0xAAA
)
;
if
(
v7
)
result
=
sub_10036C30
(
a2
,
a3
,
a4
,
a5
,
a6
,
*
(
_DWORD
*
)
(
v7
+
1
)
,
*
(
_WORD
*
)
(
v7
+
5
)
,
0
,
a7
,
dword_100EC770
,
dword_100EC774
,
0
)
;
else
result
=
0
;
return
result
;
}
Тоже самое в asm:
Код:
.text:10030B30 sub_10030B30 proc near ; DATA XREF: .rdata:100D534C↓o
.text:10030B30
.text:10030B30 arg_0 = dword ptr 4
.text:10030B30 arg_4 = dword ptr 8
.text:10030B30 arg_8 = dword ptr 0Ch
.text:10030B30 arg_C = dword ptr 10h
.text:10030B30 arg_10 = dword ptr 14h
.text:10030B30 arg_14 = dword ptr 18h
.text:10030B30
.text:10030B30 mov eax, [ecx-0AAAh]
.text:10030B36 test eax, eax
.text:10030B38 push esi
.text:10030B39 jnz short loc_10030B41
.text:10030B3B xor al, al
.text:10030B3D pop esi
.text:10030B3E retn 18h
.text:10030B41 ; ---------------------------------------------------------------------------
.text:10030B41
.text:10030B41 loc_10030B41: ; CODE XREF: sub_10030B30+9↑j
.text:10030B41 mov edx, dword_100EC774
.text:10030B47 push 0
.text:10030B49 push edx
.text:10030B4A mov edx, dword_100EC770
.text:10030B50 push edx
.text:10030B51 mov edx, [esp+10h+arg_14]
.text:10030B55 push edx
.text:10030B56 push 0
.text:10030B58 sub esp, 8
.text:10030B5B inc eax
.text:10030B5C mov esi, [eax] ; Ошибка доступа
.text:10030B5E mov ax, [eax+4]
.text:10030B62 mov edx, esp
.text:10030B64 mov [edx], esi
.text:10030B66 mov [edx+4], ax
.text:10030B6A mov edx, [esp+20h+arg_10]
.text:10030B6E mov eax, [esp+20h+arg_C]
.text:10030B72 push edx
.text:10030B73 mov edx, [esp+24h+arg_8]
.text:10030B77 push eax
.text:10030B78 mov eax, [esp+28h+arg_4]
.text:10030B7C push edx
.text:10030B7D mov edx, [esp+2Ch+arg_0]
.text:10030B81 push eax
.text:10030B82 push edx
.text:10030B83 add ecx, 0FFFFF222h
.text:10030B89 call sub_10036C30
.text:10030B8E pop esi
.text:10030B8F retn 18h
.text:10030B8F sub_10030B30 endp
При попытке использовать ее, передав в качестве this
Код:
[ [ dwSAMP + SAMP_INFO_OFFSET ] + SAMP_RAKCLIENT_INTERFACE ]
игру крашит. В 6 строчке переменной v7 присваевается значение по адресу
(в каких вообще случаях бывает отрицательный сдвиг от this?), и в 14 строке получаю ошибку доступа. Может, функция не та?
Это RPC, принимает 6 параметров (7 для thiscall). Чтобы функция работала, нужно поместить указатель на RakClientInterface в регистр ecx, или передать в виде параметра функции типа thiscall
|
|
|

26.07.2019, 09:56
|
|
Новичок
Регистрация: 18.10.2015
Сообщений: 6
С нами:
5563739
Репутация:
0
|
|
Сообщение от barspinoff
Чтобы функция работала, нужно поместить указатель на RakClientInterface в регистр ecx, или передать в виде параметра функции типа thiscall
Я же описал, что проблема не в передаче параметров, а в самом адресе. Ошибка происходит на инструкции
при попстке доступа к неаллоцированной памяти.
Ставил брейк, смотрел регистры когда игра сама пользовалась этой функцией, в ecx был было значение, которое можно найти по адресу
Код:
[ [ dwSAMP + SAMP_INFO_OFFSET ] + SAMP_RAKCLIENT_INTERFACE ] + XXX
, где XXX - всегда небольшое смещение меняющееся при перезапуске игры. Странно это...
UPD: Разобрался. У меня стоит плагин, который подменяет значение указателя pRakClientInterface в структуре stSAMP на своё.
|
|
|

26.07.2019, 20:35
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Как в собейте проверить то, что игрок заспавнен?
|
|
|

26.07.2019, 20:38
|
|
Постоянный
Регистрация: 02.06.2018
Сообщений: 342
С нами:
4183567
Репутация:
133
|
|
Сообщение от Musaigen
Как в собейте проверить то, что игрок заспавнен?
В структуре stLocalPlayer проверять iIsActive
C++:
Код:
if
(
iIsActive
!=
1
)
{
//Заспавнен
}
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|