
08.10.2021, 20:04
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
Сообщение от DANIIL XPC
How can i remake this in c++ sf?
C++:
Код:
sampRegisterChatCommand
(
'kr'
,
k1d
)
function
k1d
(
params
)
if
params
~
=
nil then
lua_thread
.
create
(
function
(
)
sampSendChat
(
"text"
)
wait
(
2000
)
sampSendChat
(
"text2"
)
end
)
end
end
C++:
Код:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
k1d
(
std
::
string params
)
{
std
::
thread
test
(
[
]
(
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"text"
)
;
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
2000
)
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"text2"
)
;
}
)
;
test
.
detach
(
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
&&
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
&&
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"kr"
,
k1d
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}
|
|
|

08.10.2021, 21:25
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от legendabrn
C++:
Код:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
k1d
(
std
::
string params
)
{
std
::
thread
test
(
[
]
(
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"text"
)
;
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
2000
)
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"text2"
)
;
}
)
;
test
.
detach
(
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
&&
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
&&
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"kr"
,
k1d
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}
Ага, здарова UB
|
|
|

08.10.2021, 22:21
|
|
Участник форума
Регистрация: 03.11.2015
Сообщений: 130
С нами:
5539996
Репутация:
73
|
|
Сообщение от kin4stat
Ага, здарова UB
а как надо?
|
|
|

07.10.2021, 22:03
|
|
Участник форума
Регистрация: 03.11.2015
Сообщений: 130
С нами:
5539996
Репутация:
73
|
|
WarpCharIntoCar с луа в сампфунксе есть аналог?
|
|
|

08.10.2021, 22:28
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
самый красивый вариант
Информация - Полезные функции
uint8_t getPlayerWeaponModelID(int iPlayerID) { if (g_Players == NULL || iPlayerID SAMP_MAX_PLAYERS) return NULL; if (iPlayerID == g_Players->sLocalPlayerID) { if (g_Players->pLocalPlayer->pSAMP_Actor == NULL) return NULL...
www.blast.hk
or
самый уебанский вариант
Задержка
Пишу СФ плагин и вопрос, отправляю сообщение в чат но проблема, как сделать задержку между ними? Если использовать функции популярные то игру тупо фризит до тех пор пока все сообщения не отправятся
www.blast.hk
or
что-то между:
C++:
Код:
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
#include
#include
#include
class
Timer
{
struct
TimerInfo
{
std
::
chrono
::
steady_clock
::
time_point start
;
std
::
chrono
::
milliseconds duration
;
std
::
function
callback
;
TimerInfo
(
std
::
chrono
::
steady_clock
::
time_point s
,
std
::
chrono
::
milliseconds dur
,
std
::
function
cb
)
:
start
(
s
)
,
duration
(
dur
)
,
callback
(
cb
)
{
}
}
;
public
:
static
Timer
&
Instance
(
)
{
static
Timer inst
;
return
inst
;
}
void
Update
(
)
{
using
namespace
std
::
chrono
;
for
(
auto
it
=
timers
.
begin
(
)
;
it
!=
timers
.
end
(
)
;
)
{
auto
&
timer
=
*
it
;
if
(
steady_clock
::
now
(
)
-
timer
.
start
>
timer
.
duration
)
{
timer
.
callback
(
)
;
timers
.
erase
(
it
++
)
;
}
else
{
++
it
;
}
}
}
void
AddTimer
(
std
::
function
callback
,
std
::
chrono
::
milliseconds duration
)
{
timers
.
emplace_back
(
std
::
chrono
::
steady_clock
::
now
(
)
,
duration
,
callback
)
;
}
std
::
list
timers
;
}
;
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
k1d
(
std
::
string params
)
{
using
namespace
std
::
chrono_literals
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
0xFF00FF00
,
"text"
)
;
Timer
::
Instance
(
)
.
AddTimer
(
[
]
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
0xFFFF0000
,
"text2"
)
;
}
,
3
s
)
;
}
void
CALLBACK
mainloop
(
)
{
Timer
::
Instance
(
)
.
Update
(
)
;
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
&&
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
&&
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
SF
->
getSAMP
(
)
->
registerChatCommand
(
"kr"
,
k1d
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
{
SF
->
initPlugin
(
mainloop
,
hModule
)
;
}
return
TRUE
;
}
P.S. код таймера был написан за 5 минут как proof of concept, кто хочет - оптимизируйте
|
|
|

22.10.2021, 15:23
|
|
Познающий
Регистрация: 23.07.2018
Сообщений: 88
С нами:
4109481
Репутация:
183
|
|
Пытаюсь изменить
на
Если делать это через Сheat Engine то все работает прекрасно.
Программа которую я написал должна делать то же самое но не работает.
Сообщение от Спойлер
C:
Код:
#include
#include
#include
void
*
ptr
=
(
void
*
)
0x2A3F4D
;
// fix: 0x2A3F4D => 0x6A3F4D
char
patch
[
]
=
"\xB0\x05\x90\x90\x90\x90"
;
void
write_memory
(
void
)
{
DWORD old_prot
;
size_t size
=
sizeof
(
patch
)
-
1
;
VirtualProtect
(
ptr
,
size
,
PAGE_READWRITE
,
&
old_prot
)
;
memcpy
(
ptr
,
patch
,
size
)
;
VirtualProtect
(
ptr
,
size
,
old_prot
,
&
old_prot
)
;
}
int
__stdcall
DllMain
(
HMODULE module
,
DWORD reason
,
LPVOID reserved
)
{
if
(
reason
==
DLL_PROCESS_ATTACH
)
write_memory
(
)
;
return
1
;
}
|
|
|

22.10.2021, 15:31
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
Сообщение от THERION
Пытаюсь изменить
на
Если делать это через Сheat Engine то все работает прекрасно.
Программа которую я написал должна делать то же самое но не работает.
Если скомпилировать код ниже и закинуть в папку с игрой Asi-loader выдает:
C:
Код:
#include
#include
#include
void
write_memory
(
void
)
{
DWORD old_prot
;
void
*
ptr
=
(
void
*
)
0x2A3F4D
;
char
patch
[
]
=
"\xB0\x05\x90\x90\x90\x90"
;
size_t size
=
sizeof
(
patch
)
-
1
;
VirtualProtect
(
ptr
,
size
,
PAGE_READWRITE
,
&
old_prot
)
;
memcpy
(
ptr
,
patch
,
size
)
;
VirtualProtect
(
ptr
,
size
,
old_prot
,
&
old_prot
)
;
return
;
}
int
__stdcall
DllMain
(
HMODULE module
,
DWORD reason
,
LPVOID reserved
)
{
switch
(
reason
)
{
case
DLL_PROCESS_ATTACH
:
write_memory
(
)
;
break
;
}
return
1
;
}
Также пробовал написать тоже самое на Lua, но функции из библиотеки memory не работают
Lua:
Код:
local
wrt
=
require
(
'memory'
)
.
setint8
local
ptr
=
0x2A3F4D
local
result
=
wrt
(
ptr
+
0
,
0xB0
,
true
)
result
=
result
or
wrt
(
ptr
+
1
,
0x05
,
true
)
for
i
=
2
,
5
do
result
=
result
or
wrt
(
ptr
+
i
,
0x90
,
true
)
end
print
(
result
)
-- FALSE
C++:
Код:
void
write_memory
(
)
{
DWORD old_prot
;
void
*
ptr
=
reinterpret_cast
(
0x6A3F4D
)
;
char
patch
[
]
=
"\xB0\x05\x90\x90\x90\x90"
;
size_t size
=
sizeof
(
patch
)
-
1
;
VirtualProtect
(
ptr
,
size
,
PAGE_READWRITE
,
&
old_prot
)
;
memcpy
(
ptr
,
patch
,
size
)
;
VirtualProtect
(
ptr
,
size
,
old_prot
,
&
old_prot
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD ul_reason_for_call
,
LPVOID lpReserved
)
{
if
(
ul_reason_for_call
==
DLL_PROCESS_ATTACH
)
{
write_memory
(
)
;
}
return
TRUE
;
}
1634902404939.pnglegendabrn · 22 Окт 2021 в 14:31' data-fancybox="lb-post-868040" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/118747/" style="cursor: pointer;" title="1634902404939.png">
upd: не работало потому что, ты пытался перезаписать только адрес смещения а не статический адрес
|
|
|

22.10.2021, 16:09
|
|
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами:
4091290
Репутация:
213
|
|
C++:
Код:
#include
#include
void
WriteBytes
(
const
unsigned
__int32
&
addr
,
const
std
::
vector
&
bytes
)
{
DWORD prot
;
VirtualProtect
(
(
void
*
)
addr
,
bytes
.
size
(
)
,
PAGE_EXECUTE_READWRITE
,
&
prot
)
;
memcpy
(
(
void
*
)
addr
,
bytes
.
data
(
)
,
bytes
.
size
(
)
)
;
VirtualProtect
(
(
void
*
)
addr
,
bytes
.
size
(
)
,
prot
,
&
prot
)
;
}
class
CPlugin
{
public
:
CPlugin
(
)
{
WriteBytes
(
0x6A3F4D
,
{
0xB0
,
0x05
,
0x90
,
0x90
,
0x90
,
0x90
}
)
;
//install patch
}
~
CPlugin
(
)
{
WriteBytes
(
0x6A3F4D
,
{
0x8A
,
0x86
,
0x8A
,
0x04
,
0x00
,
0x00
}
)
;
//remove patch if plugin unloaded
}
}
Plugin
;
так красивее🤨
|
|
|

22.10.2021, 16:18
|
|
Познающий
Регистрация: 05.09.2016
Сообщений: 37
С нами:
5097707
Репутация:
58
|
|
всем прив, у кого-нибудь есть samp.idb/dll v0.3.7-R1 без обфускации кода?и вообще кто-нибудь убрал протекцию?
|
|
|

22.10.2021, 16:20
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
Сообщение от leak.
всем прив, у кого-нибудь есть samp.idb/dll v0.3.7-R1 без обфускации кода?и вообще кто-нибудь убрал протекцию?
GitHub - NarutoUA/samp-idb: Collection of SA:MP IDA Pro databases
Collection of SA:MP IDA Pro databases. Contribute to NarutoUA/samp-idb development by creating an account on GitHub.
github.com
[C++] SAMP IDB - over 300 functions
well i had that on google drive hope ill help someone with this it took me 1 week to do so dont blame me if theres something wrong https://drive.google.com/file/d/12TMY5OfLKtSmo6IhvFklFfvsK44kirLs/view?usp=sharing Important note: You need to use IDA Disassembler for use this file. but plz...
ugbase.eu
пользуйся гуглом
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|