
10.11.2018, 23:14
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
как полностью выгрузить плагин с помощью pfree
Есть дочерний поток. После того как он закончил свою работу. Я хочу его выгрузить плагин. Но загрузить не могу потому что плагин еще использует gta_sa
C++:
Код:
void
ThreadEmulPressAlt
(
)
{
static
BitStream bsOnfootSync
;
static
stOnFootData ofSync
;
while
(
state
)
{
if
(
!
IsDriving
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
)
)
{
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
curTimeOut
)
)
;
memset
(
&
ofSync
,
0
,
sizeof
(
stOnFootData
)
)
;
ofSync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
ofSync
.
stSampKeys
.
keys_unknown__walkSlow
=
1
;
bsOnfootSync
.
ResetWritePointer
(
)
;
bsOnfootSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsOnfootSync
.
Write
(
(
PCHAR
)
&
ofSync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsOnfootSync
)
;
ofSync
.
stSampKeys
.
keys_unknown__walkSlow
=
0
;
bsOnfootSync
.
ResetWritePointer
(
)
;
bsOnfootSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsOnfootSync
.
Write
(
(
PCHAR
)
&
ofSync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsOnfootSync
)
;
g_mutex
.
lock
(
)
;
paramsCurSession
.
speeds
.
speedSend
++
;
g_mutex
.
unlock
(
)
;
}
}
}
Вызов
C++:
Код:
thd
=
new
std
::
thread
(
ThreadEmulPressAlt
)
;
|
|
|

11.11.2018, 05:49
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от Firto
как полностью выгрузить плагин с помощью pfree
Есть дочерний поток. После того как он закончил свою работу. Я хочу его выгрузить плагин. Но загрузить не могу потому что плагин еще использует gta_sa
C++:
Код:
void
ThreadEmulPressAlt
(
)
{
static
BitStream bsOnfootSync
;
static
stOnFootData ofSync
;
while
(
state
)
{
if
(
!
IsDriving
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
)
)
{
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
curTimeOut
)
)
;
memset
(
&
ofSync
,
0
,
sizeof
(
stOnFootData
)
)
;
ofSync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
ofSync
.
stSampKeys
.
keys_unknown__walkSlow
=
1
;
bsOnfootSync
.
ResetWritePointer
(
)
;
bsOnfootSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsOnfootSync
.
Write
(
(
PCHAR
)
&
ofSync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsOnfootSync
)
;
ofSync
.
stSampKeys
.
keys_unknown__walkSlow
=
0
;
bsOnfootSync
.
ResetWritePointer
(
)
;
bsOnfootSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsOnfootSync
.
Write
(
(
PCHAR
)
&
ofSync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsOnfootSync
)
;
g_mutex
.
lock
(
)
;
paramsCurSession
.
speeds
.
speedSend
++
;
g_mutex
.
unlock
(
)
;
}
}
}
Вызов
C++:
Код:
thd
=
new
std
::
thread
(
ThreadEmulPressAlt
)
;
ExitThread в потоке юзай
|
|
|

11.11.2018, 23:09
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Сообщение от Rzeźnik
ExitThread в потоке юзай
не работает
C++:
Код:
void
ThreadEmulPressAlt
(
)
{
static
BitStream bsOnfootSync
;
static
stOnFootData ofSync
;
while
(
paramsCurSession
.
state
)
{
if
(
!
IsDriving
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
)
)
{
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
paramsCurSession
.
curTimeOut
)
)
;
memset
(
&
ofSync
,
0
,
sizeof
(
stOnFootData
)
)
;
ofSync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
ofSync
.
stSampKeys
.
keys_unknown__walkSlow
=
1
;
bsOnfootSync
.
ResetWritePointer
(
)
;
bsOnfootSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsOnfootSync
.
Write
(
(
PCHAR
)
&
ofSync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsOnfootSync
)
;
ofSync
.
stSampKeys
.
keys_unknown__walkSlow
=
0
;
bsOnfootSync
.
ResetWritePointer
(
)
;
bsOnfootSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsOnfootSync
.
Write
(
(
PCHAR
)
&
ofSync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsOnfootSync
)
;
g_mutex
.
lock
(
)
;
paramsCurSession
.
speeds
.
speedSend
++
;
g_mutex
.
unlock
(
)
;
}
}
ExitThread
(
0
)
;
}
|
|
|

12.11.2018, 17:26
|
|
Постоянный
Регистрация: 13.02.2016
Сообщений: 532
С нами:
5392682
Репутация:
93
|
|
Gradient function:
Код:
Код:
void RenderWindowBackground(int x, int y, int size_x, int size_y, int alpha)
{
D3DCOLOR first_color = D3DCOLOR_ARGB(ini.color.bgnd_first.alpha, ini.color.bgnd_first.red, ini.color.bgnd_first.green, ini.color.bgnd_first.blue);
D3DCOLOR second_color = D3DCOLOR_ARGB(ini.color.bgnd_second.alpha, ini.color.bgnd_second.red, ini.color.bgnd_second.green, ini.color.bgnd_second.blue);
if (alpha) {
first_color = D3DCOLOR_ARGB(alpha, ini.color.bgnd_first.red, ini.color.bgnd_first.green, ini.color.bgnd_first.blue);
second_color = D3DCOLOR_ARGB(alpha, ini.color.bgnd_second.red, ini.color.bgnd_second.green, ini.color.bgnd_second.blue);
}
pD3DHook->pRender->D3DGradient(x, y, size_x, size_y, first_color, second_color);
}
Use:
Код:
Код:
ImGui::RenderWindowBackground(ImGui::GetWindowPos().x, ImGui::GetWindowPos().y, ImGui::GetWindowSize().x, ImGui::GetWindowSize().y);
|
|
|

12.11.2018, 17:41
|
|
Новичок
Регистрация: 31.07.2013
Сообщений: 12
С нами:
6727803
Репутация:
51
|
|
Господа, вылетает иногда GTA при Shift+0 , я так понял нужно дополнительное обнуление каких-либо данных, кто-то же все-таки сталкивался с данной проблемой, Как поправить?
|
|
|

12.11.2018, 18:39
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от JakeBat
Господа, вылетает иногда GTA при Shift+0 , я так понял нужно дополнительное обнуление каких-либо данных, кто-то же все-таки сталкивался с данной проблемой, Как поправить?
Для начала дать нам свой говнокод на анализ
|
|
|

12.11.2018, 18:41
|
|
Новичок
Регистрация: 31.07.2013
Сообщений: 12
С нами:
6727803
Репутация:
51
|
|
От FYP собейт для 0.3.7 на некоторых все в порядке, на некоторых нет, возможно дело обстоит с повторным удалением уже удаленных объектов? Как думаете?
Сообщение от Rzeźnik
Для начала дать нам свой говнокод на анализ
|
|
|

12.11.2018, 19:00
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от JakeBat
От FYP собейт для 0.3.7 на некоторых все в порядке, на некоторых нет, возможно дело обстоит с повторным удалением уже удаленных объектов? Как думаете?
Ты туго догоняешь я не пойму? Давай свой код а там и посмотрим, я не слышал чтобы на бх заходили победители битвы экстрасенсов.
|
|
|

12.11.2018, 19:14
|
|
Новичок
Регистрация: 31.07.2013
Сообщений: 12
С нами:
6727803
Репутация:
51
|
|
////
#define SAMP_FUNC_RESTARTGAME 0xA060
/////
if (KEYCOMBO_PRESSED(set.key_rejoin))
{
disconnect(0);
restartGame();
cheat_state_text("Реконнект через %d секунд...", set.rejoin_delay / 1000);
cheat_state->_generic.rejoinTick = GetTickCount();
}
/////////////////////////
void restartGame()
{
if (g_SAMP == NULL)
return;
((void(__thiscall *) (void *)) (g_dwSAMP_Addr + SAMP_FUNC_RESTARTGAME)) (g_SAMP);
}
//////////
uint32_t samp_dll = getSampAddress();
g_dwSAMP_Addr = (uint32_t) samp_dll;
uint32_t getSampAddress()
{
if (set.run_mode == RUNMODE_SINGLEPLAYER)
return 0x0;
uint32_t samp_dll;
if (set.run_mode == RUNMODE_SAMP)
{
if (set.wine_compatibility)
{
samp_dll = (uint32_t) LoadLibrary(SAMP_DLL);
}
else
{
samp_dll = (uint32_t) dll_baseptr_get(SAMP_DLL);
}
}
return samp_dll;
}
////////
|
|
|

12.11.2018, 19:50
|
|
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами:
4901705
Репутация:
98
|
|
how to convert this ?

|
|
|
|
 |
|
|
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
|
|
|
|