
05.06.2021, 18:19
|
|
Постоянный
Регистрация: 03.11.2017
Сообщений: 305
С нами:
4487038
Репутация:
98
|
|
Как вывести в чат сообщение на чистых плюсах?
|
|
|

05.06.2021, 18:22
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от pe1fecto
Как вывести в чат сообщение на чистых плюсах?
По оффсету относительно базового адреса samp.dll вызвать функцию добавления сообщения в чат
|
|
|

05.06.2021, 19:15
|
|
Постоянный
Регистрация: 03.11.2017
Сообщений: 305
С нами:
4487038
Репутация:
98
|
|
Сообщение от KiN4StAt
По оффсету относительно базового адреса samp.dll вызвать функцию добавления сообщения в чат
понял, но можно кодом?
|
|
|

05.06.2021, 19:33
|
|
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами:
4609424
Репутация:
183
|
|
|
|
|

05.06.2021, 19:35
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от pe1fecto
понял, но можно кодом?
C++:
Код:
constexpr
auto
SAMP_037_R1_CHAT_OFFSET
=
0x21A0E4
;
constexpr
auto
SAMP_037_R3_CHAT_OFFSET
=
0x26E8C8
;
constexpr
auto
SAMP_037_R1_ADDCHATMSG_FUNC
=
0x64010
;
constexpr
auto
SAMP_037_R3_ADDCHATMSG_FUNC
=
0x67460
;
inline
void
AddChatMessage_R1
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast
(
dwSAMP
+
SAMP_037_R1_CHAT_OFFSET
)
;
return
reinterpret_cast
(
SAMP_037_R1_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}
inline
void
AddChatMessage_R3
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast
(
dwSAMP
+
SAMP_037_R3_CHAT_OFFSET
)
;
return
reinterpret_cast
(
SAMP_037_R3_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}
|
|
|

07.06.2021, 00:28
|
|
Постоянный
Регистрация: 03.11.2017
Сообщений: 305
С нами:
4487038
Репутация:
98
|
|
Сообщение от KiN4StAt
C++:
Код:
constexpr
auto
SAMP_037_R1_CHAT_OFFSET
=
0x21A0E4
;
constexpr
auto
SAMP_037_R3_CHAT_OFFSET
=
0x26E8C8
;
constexpr
auto
SAMP_037_R1_ADDCHATMSG_FUNC
=
0x64010
;
constexpr
auto
SAMP_037_R3_ADDCHATMSG_FUNC
=
0x67460
;
inline
void
AddChatMessage_R1
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast
(
dwSAMP
+
SAMP_037_R1_CHAT_OFFSET
)
;
return
reinterpret_cast
(
SAMP_037_R1_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}
inline
void
AddChatMessage_R3
(
int
nType
,
const
char
*
szText
,
const
char
*
szPrefix
,
unsigned
int
textColor
,
unsigned
int
prefixColor
)
{
using
AddChatMsgProt
=
void
(
__thiscall
*
)
(
void
*
,
int
,
const
char
*
,
const
char
*
,
unsigned
int
,
unsigned
int
)
;
auto
pChat
=
*
reinterpret_cast
(
dwSAMP
+
SAMP_037_R3_CHAT_OFFSET
)
;
return
reinterpret_cast
(
SAMP_037_R3_ADDCHATMSG_FUNC
)
(
pChat
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}
Требуется объявление dwSAMP, загуглил, ничего не нашёл. только начинаю свой путь в с++ )
|
|
|

08.06.2021, 17:15
|
|
Познающий
Регистрация: 19.11.2020
Сообщений: 44
С нами:
2885808
Репутация:
13
|
|
Где можно найти описание параметров RPC_InitGame?
|
|
|

10.06.2021, 07:19
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
|
|
|

08.06.2021, 19:18
|
|
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами:
4553429
Репутация:
153
|
|
Как сделать задержку перед отправкой пакета?
C++:
Код:
//пример
sendFake
(
)
;
//задерка 100 милисекунд
sendFuck
(
)
;
|
|
|

08.06.2021, 20:32
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
Сообщение от Scar_
Как сделать задержку перед отправкой пакета?
C++:
Код:
//пример
sendFake
(
)
;
//задерка 100 милисекунд
sendFuck
(
)
;
Sleep(100);
но перед этим создай поток что бы не зафризило игру
или же
Сообщение от BlackKnigga
Разработчики, только перешедшие с клео\луа на C++ негодуют из-за необходимости использовать разного рода таймеры и лапшу из GetTickCount'ов вместо полюбившихся функций wait. Но особо ярых фанатов клео это не устраивает, отчего они начинают использовать потоки ради функций вроде Sleep для того чтобы не блокировать цикл игры. Однако это не безопасно. Функции ни GTA ни SAMP'а абсолютно не предназначены для использования в разных потоках и их использование может привести к рандомным крашам.
Выход есть!
Example:
Код:
#include
#include
#include "Yet-another-hook-library/hook.h"
#include "sampapi/CChat.h"
#include "coro_wait/coro_wait.h"
using
namespace
sampapi
::
v037r1
;
void
foo
(
)
{
using
namespace
std
::
chrono_literals
;
CChat
*
&
pChat
=
RefChat
(
)
;
while
(
!
pChat
)
{
this_coro
::
wait
(
100
ms
)
;
}
unsigned
int
counter
=
0
;
while
(
true
)
{
pChat
->
AddMessage
(
-
1
,
(
std
::
string
(
"Hello "
)
+
std
::
to_string
(
counter
)
)
.
c_str
(
)
)
;
counter
++
;
this_coro
::
wait
(
1
s
)
;
}
}
void
CGame_Process_hk
(
)
{
static
coro_wait instance
{
foo
}
;
instance
.
process
(
)
;
}
class
coro_wait_example
{
public
:
coro_wait_example
(
)
{
using
CGame_Process_t
=
void
(
__cdecl
*
)
(
)
;
CGame_Process_t CGame_Process
=
reinterpret_cast
(
0x53BEE0
)
;
static
hook
CGame_Process_hook
(
CGame_Process
,
CGame_Process_hk
)
;
}
}
coro_wait_example
;
Выполнение функции foo приостанавливается на время, переданное функции this_coro::wait, и продолжается с того же места. Все это работает в одном потоке, благодаря чему можно не переживать за потокобезопасность вызываемых внутри функций.
В бесконечных или очень больших циклах требуется вызывать wait(0), все по канонам клео.
Функция coro_wait: rocess должна вызываться в потоке игры (перехваченном как в примере, либо в функции mainloop для SF API).
Требуется библиотека Boost.Context!
Исходный код:
GitHub - allwanttokissme/coro_wait: Suspending coroutines by time
Suspending coroutines by time. Contribute to allwanttokissme/coro_wait development by creating an account on GitHub.
github.com
хуки
sampapi
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|