- 1,213
- 1,046
И где на скрине, то что нету кода?почему половина кода не видит?:D
И где на скрине, то что нету кода?почему половина кода не видит?:D
И где на скрине, то что нету кода?
полная функция в собейте - BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/samp.cpp#L712)C++:((void(__thiscall *) (void *_this, char *message)) (g_dwSAMP_Addr + SAMP_FUNC_SAY)) (g_Players->pLocalPlayer, msg);
((void(__thiscall *) (void *_this, char *message)) (g_dwSAMP_Addr + SAMP_FUNC_SAY)) (g_Players->pLocalPlayer, msg);
Я надеюсь ты не сравниваешь то что тебе показывает в ида? В запущеном виде часть памяти будет распределятся динамически, остальная часть кода разбросана по дллкам.так на скрине показывает до 0x407FFF строки, т,е это начало кода. в гта их больше
BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src/proxyIDirect3DDevice9.cpp#L3155)g_Players->pLocalPlayer то откуда взять? Я перерыл в поиске соба, не нашёл как заполняет pLocalPlayer.Код:((void(__thiscall *) (void *_this, char *message)) (g_dwSAMP_Addr + SAMP_FUNC_SAY)) (g_Players->pLocalPlayer, msg);
Я надеюсь ты не сравниваешь то что тебе показывает в ида? В запущеном виде часть памяти будет распределятся динамически, остальная часть кода разбросана по дллкам.
И советую дебагер всегда от админ прав запускать.
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();
}
}
}
thd = new std::thread(ThreadEmulPressAlt);
ExitThread в потоке юзайкак полностью выгрузить плагин с помощью 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 в потоке юзай
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);
}
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);
}
ImGui::RenderWindowBackground(ImGui::GetWindowPos().x, ImGui::GetWindowPos().y, ImGui::GetWindowSize().x, ImGui::GetWindowSize().y);
Для начала дать нам свой говнокод на анализГоспода, вылетает иногда GTA при Shift+0 , я так понял нужно дополнительное обнуление каких-либо данных, кто-то же все-таки сталкивался с данной проблемой, Как поправить?
Для начала дать нам свой говнокод на анализ
Ты туго догоняешь я не пойму? Давай свой код а там и посмотрим, я не слышал чтобы на бх заходили победители битвы экстрасенсов.От FYP собейт для 0.3.7 на некоторых все в порядке, на некоторых нет, возможно дело обстоит с повторным удалением уже удаленных объектов? Как думаете?