 |
|

17.11.2018, 20:58
|
|
Участник форума
Регистрация: 12.10.2014
Сообщений: 156
С нами:
6096955
Репутация:
78
|
|
Сообщение от beento
как в собейте показать диалог
Код:
Код:
void showSampDialog(int send, int dialogID, int typedialog, char *caption, char *text, char *button1, char *button2)
{
uint32_t func = g_dwSAMP_Addr + SAMP_FUNC_DIALOG_SHOW;
uint32_t data = g_dwSAMP_Addr + SAMP_DIALOG_INFO_OFFSET;
__asm mov eax, dword ptr[data]
__asm mov ecx, dword ptr[eax]
__asm push send
__asm push button2
__asm push button1
__asm push text
__asm push caption
__asm push typedialog
__asm push dialogID
__asm call func
return;
}
тогда вообще всё по пизде идёт, какая то проблема большая.
upd:
собейт это один большой пиздец, неужели на этапе создания нельзя было сделать всё по человечески
|
|
|

18.11.2018, 21:33
|
|
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами:
4387250
Репутация:
133
|
|
Какие флаги есть для неуязвимости персонажа через CPed + 0x42?
Знаю только сумму всех: 204
|
|
|

18.11.2018, 23:31
|
|
Участник форума
Регистрация: 13.07.2017
Сообщений: 148
С нами:
4650044
Репутация:
78
|
|
Как получить GetVoiceID своего педа?
|
|
|

18.11.2018, 23:58
|
|
Постоянный
Регистрация: 02.06.2018
Сообщений: 342
С нами:
4183567
Репутация:
133
|
|
Сообщение от checkdasound
Какие флаги есть для неуязвимости персонажа через CPed + 0x42?
Знаю только сумму всех: 204
#define PedSoft 0x01
#define FreezePed 0x02
#define BulletProtect 0x04
#define FireProtect 0x08
#define CollisionProtect 0x10
#define MeleeProtect 0x20
#define Unc_7bit 0x40
#define ExplosionProtect 0x80
|
|
|

19.11.2018, 00:46
|
|
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами:
4387250
Репутация:
133
|
|
Почему меня телепортирует на "спавн сампа" (центр карты вроде как), вместо тп на метку?
Код нахождения координат метки и функцию нахождения координаты z брал из собейта.
Честно говоря, я не разбираюсь в ассемблере, поэтому даже не знаю с чем это связано.
Сообщение от Спойлер
C++:
[CODE]
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
#define FUNC_FindGroundZForCoord 0x569660
void
AddMessageJumpQ
(
PCHAR text
,
UINT time
,
USHORT flag
,
bool
bPreviousBrief
)
// Функция показа сообщения на экране.
{
(
(
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
float
FindGroundZForPosition
(
float
fX
,
float
fY
)
{
//DEBUG_TRACE("FLOAT CWorldSA::FindGroundZForPosition(FLOAT fX, FLOAT fY)");
DWORD dwFunc
=
FUNC_FindGroundZForCoord
;
FLOAT fReturn
=
0
;
_asm
{
push fY
push fX
call dwFunc
fstp fReturn
add esp
,
8
}
return
fReturn
;
}
void
teleport
(
float
posX
,
float
posY
,
float
posZ
)
{
float
*
position
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
nullptr
;
position
[
0
]
=
posX
;
position
[
1
]
=
posY
;
position
[
2
]
=
posZ
;
}
void
teleport_target_blip
(
)
{
if
(
(
*
(
int
*
)
0xBA6774
!=
0
)
)
{
float
mapPos
[
3
]
;
for
(
int
i
=
0
;
i
|
|
|

19.11.2018, 00:53
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от checkdasound
Почему меня телепортирует на "спавн сампа" (центр карты вроде как), вместо тп на метку?
Код нахождения координат метки и функцию нахождения координаты z брал из собейта.
Честно говоря, я не разбираюсь в ассемблере, поэтому даже не знаю с чем это связано.
Сообщение от Спойлер
C++:
[CODE]
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
#define FUNC_FindGroundZForCoord 0x569660
void
AddMessageJumpQ
(
PCHAR text
,
UINT time
,
USHORT flag
,
bool
bPreviousBrief
)
// Функция показа сообщения на экране.
{
(
(
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
float
FindGroundZForPosition
(
float
fX
,
float
fY
)
{
//DEBUG_TRACE("FLOAT CWorldSA::FindGroundZForPosition(FLOAT fX, FLOAT fY)");
DWORD dwFunc
=
FUNC_FindGroundZForCoord
;
FLOAT fReturn
=
0
;
_asm
{
push fY
push fX
call dwFunc
fstp fReturn
add esp
,
8
}
return
fReturn
;
}
void
teleport
(
float
posX
,
float
posY
,
float
posZ
)
{
float
*
position
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
nullptr
;
position
[
0
]
=
posX
;
position
[
1
]
=
posY
;
position
[
2
]
=
posZ
;
}
void
teleport_target_blip
(
)
{
if
(
(
*
(
int
*
)
0xBA6774
!=
0
)
)
{
float
mapPos
[
3
]
;
for
(
int
i
=
0
;
i
Да там и не нужен ассемблер, просто разраб соба выебывался. Всю функцию можно заменить вот таким вот вызовом в одну строку:
C++:
Код:
float
fZ
=
(
(
float
(
__cdecl
*
)
(
float
,
float
)
)
FUNC_FindGroundZForCoord
)
(
fX
,
fY
)
;
|
|
|

19.11.2018, 14:21
|
|
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами:
4387250
Репутация:
133
|
|
Как определить версию сампа без SF API?
|
|
|

19.11.2018, 15:08
|
|
Познавший АНТИЧАТ
Регистрация: 09.08.2015
Сообщений: 1,213
С нами:
5663255
Репутация:
183
|
|
Сообщение от checkdasound
Как определить версию сампа без SF API?
По сигнатуре байтов.
Запускаешь нужные тебе версии сампа, и ищешь места которые различаются между версиями.
Например строку с выводом сообщения о версии самп в чат.
|
|
|

19.11.2018, 18:32
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
подскажите ид клавишы RIGHT SHIFT, гуглил нигде не могу найти, есть только просто SHIFT
|
|
|

19.11.2018, 19:00
|
|
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами:
4387250
Репутация:
133
|
|
Сообщение от beento
подскажите ид клавишы RIGHT SHIFT, гуглил нигде не могу найти, есть только просто SHIFT
VK_RSHIFT или 0xA1
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|