Другое С/С++ Вопрос - Ответ

вайега52

Налуашил состояние
Модератор
2,913
2,978

daun.daunovich.01

Новичок
17
2
  • Нравится
Реакции: вайега52

daun.daunovich.01

Новичок
17
2
Привет. Подключил библиотеку, вызываю rakplugin::initialize(ppData);
И сервер просто виснет на загрузке плагина.


C++:
PLUGIN_EXPORT bool PLUGIN_CALL Load(void** ppData) {
    //bool isSuccess = rakplugin::initialize(ppData);
    rakplugin::initialize(ppData);

    return PluginVoice::DoLoad(ppData);
}

Привет. Подключил библиотеку, вызываю rakplugin::initialize(ppData);
И сервер просто виснет на загрузке плагина.


C++:
PLUGIN_EXPORT bool PLUGIN_CALL Load(void** ppData) {
    //bool isSuccess = rakplugin::initialize(ppData);
    rakplugin::initialize(ppData);

    return PluginVoice::DoLoad(ppData);
}
Вообще, если любой метод вызываю из namespace rakplugin, то сервер тупо виснет, и ошибка загрузки плагина.
 
Последнее редактирование:

вайега52

Налуашил состояние
Модератор
2,913
2,978
как удалить черный экран при alt tab или сворачивании игры
Освобождать все ресурсы д3д9 перед вызовом Device::Reset ( в псдк и многих других готовых хукерах, можно найти событие Lost, которое вызывается перед ресетом). Если юзаешь имгуи, то там есть специальная функция с префиксом д3д9 invalidate, которую ты должен вызывать в каллбеке на lost
 
  • Нравится
Реакции: tanksoftik

Smeruxa

smeruxa.ru
Проверенный
1,423
784
Подскажите пожалуйста, как вызвать зеленый треугольник. По-разному пытался, но что-то уже мозги не варят :)
Последнее, что пытался (хз, последние надежды на функцию с псдк была):
C++:
CPed* t = CPools::GetPed(sampapi::v037r1::RefNetGame()->GetPlayerPool()->GetAt(id)->m_pPlayer->m_pPed->m_handle);
static_cast<CPlayerPed*>(t)->DrawTriangleForMouseRecruitPed();
C++:
// Converted from thiscall void CPlayerPed::DrawTriangleForMouseRecruitPed(void) 0x60BA80
void CPlayerPed::DrawTriangleForMouseRecruitPed() {
    plugin::CallMethod<0x60BA80, CPlayerPed *>(this);
}
 

ARMOR

Waitin' on another black summer to end
Модератор
5,062
7,307
Подскажите пожалуйста, как вызвать зеленый треугольник. По-разному пытался, но что-то уже мозги не варят :)
Последнее, что пытался (хз, последние надежды на функцию с псдк была):
C++:
CPed* t = CPools::GetPed(sampapi::v037r1::RefNetGame()->GetPlayerPool()->GetAt(id)->m_pPlayer->m_pPed->m_handle);
static_cast<CPlayerPed*>(t)->DrawTriangleForMouseRecruitPed();
C++:
// Converted from thiscall void CPlayerPed::DrawTriangleForMouseRecruitPed(void) 0x60BA80
void CPlayerPed::DrawTriangleForMouseRecruitPed() {
    plugin::CallMethod<0x60BA80, CPlayerPed *>(this);
}
Это потому что CPlayerPed это класс только для локального игрока. В этом методе получается
C++:
CEntity* CPlayerPed::m_p3rdPersonMouseTarget
1753628270564.png

И от него уже рисуется треугольник. Можно в теории переписать метод для рисования по CPed других педов
 
  • Влюблен
  • Нравится
Реакции: Smeruxa и вайега52

Smeruxa

smeruxa.ru
Проверенный
1,423
784
Это потому что CPlayerPed это класс только для локального игрока. В этом методе получается
C++:
CEntity* CPlayerPed::m_p3rdPersonMouseTarget
Посмотреть вложение 275142
И от него уже рисуется треугольник. Можно в теории переписать метод для рисования по CPed других педов
Вот такой вариант попробовал, он работает в случае, если играют анимации, откуда этот эффект взялся - я без понятия, случайно выявил (прыгал и забирался по стенке)
Т.е. рисует треугольник, видимо есть какой-то случай, вызывающий это
C++:
CPlayerPed* l = static_cast<CPlayerPed*>(FindPlayerPed());
l->m_pPlayerTargettedPed = CPools::GetPed(sampapi::v037r1::RefNetGame()->GetPlayerPool()->GetAt(nearId)->m_pPlayer->m_pPed->m_handle);
l->DrawTriangleForMouseRecruitPed();
Может чего-то не хватает, какого-то флага/стейта
 
Последнее редактирование:

Musaigen

ihatemyself
Проверенный
1,680
1,529
Вот такой вариант попробовал, он работает в случае, если играют анимации, откуда этот эффект взялся - я без понятия, случайно выявил (прыгал и забирался по стенке)
Т.е. рисует треугольник, видимо есть какой-то случай, вызывающий это
C++:
CPlayerPed* l = static_cast<CPlayerPed*>(FindPlayerPed());
l->m_pPlayerTargettedPed = CPools::GetPed(sampapi::v037r1::RefNetGame()->GetPlayerPool()->GetAt(nearId)->m_pPlayer->m_pPed->m_handle);
l->DrawTriangleForMouseRecruitPed();
Может чего-то не хватает, какого-то флага/стейта
Нет никакого флага или стейта, таргетный пед сразу чистится по адресам 0x609EE3 и 0x60BA52, если ты не в прицеле.
 
Последнее редактирование:
  • Нравится
Реакции: вайега52

tanksoftik

Новичок
29
7
Освобождать все ресурсы д3д9 перед вызовом Device::Reset ( в псдк и многих других готовых хукерах, можно найти событие Lost, которое вызывается перед ресетом). Если юзаешь имгуи, то там есть специальная функция с префиксом д3д9 invalidate, которую ты должен вызывать в каллбеке на lost
сделал так

C++:
static void LostEvent() {
    ImGui_ImplDX9_InvalidateDeviceObjects();
}

Events::d3dLostEvent += LostEvent;

но при alt tab или сворачивании игры все равно черный экран некоторое время