HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 08.10.2021, 20:04
legendabrn
Участник форума
Регистрация: 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
;
}
 
Ответить с цитированием

  #2  
Старый 08.10.2021, 21:25
kin4stat
Флудер
Регистрация: 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
 
Ответить с цитированием

  #3  
Старый 08.10.2021, 22:21
четыреста четыре
Участник форума
Регистрация: 03.11.2015
Сообщений: 130
С нами: 5539996

Репутация: 73
По умолчанию

Цитата:
Сообщение от kin4stat  

Ага, здарова UB
а как надо?
 
Ответить с цитированием

  #4  
Старый 07.10.2021, 22:03
четыреста четыре
Участник форума
Регистрация: 03.11.2015
Сообщений: 130
С нами: 5539996

Репутация: 73
По умолчанию

WarpCharIntoCar с луа в сампфунксе есть аналог?
 
Ответить с цитированием

  #5  
Старый 08.10.2021, 22:28
kin4stat
Флудер
Регистрация: 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, кто хочет - оптимизируйте
 
Ответить с цитированием

  #6  
Старый 22.10.2021, 15:23
THERION
Познающий
Регистрация: 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
;
}


 
Ответить с цитированием

  #7  
Старый 22.10.2021, 15:31
legendabrn
Участник форума
Регистрация: 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: не работало потому что, ты пытался перезаписать только адрес смещения а не статический адрес
 
Ответить с цитированием

  #8  
Старый 22.10.2021, 16:09
AdCKuY_DpO4uLa
Постоянный
Регистрация: 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
;


так красивее🤨
 
Ответить с цитированием

  #9  
Старый 22.10.2021, 16:18
leak.
Познающий
Регистрация: 05.09.2016
Сообщений: 37
С нами: 5097707

Репутация: 58
По умолчанию

всем прив, у кого-нибудь есть samp.idb/dll v0.3.7-R1 без обфускации кода?и вообще кто-нибудь убрал протекцию?
 
Ответить с цитированием

  #10  
Старый 22.10.2021, 16:20
F0RQU1N and
Познавший АНТИЧАТ
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.