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

NullPhantom

Участник
28
32
Как начать писать .asi плагины?
Иметь базу в с++, вроде еще реверсить уметь надо, если база имеется то:
Начинай отсюда, после чего в том же разделе поищи другие части по asi скриптам
 

nonelike

Известный
72
3
хочу поменять цвет маркеру, при создании маркера цвет меняется на нужный мне, а когда я еще пересоздаю маркер уже с другим цветом, не удаляя его, или же после удаления сразу же создаю новый, цвет маркера остается, не могу понять где я еще что-то не поменял. передаю просто в C3dMarkers::PlaceMarker свои rgba. но если удалить маркер, подождать секунду и создать с новым цветом, всё будет ок
 

swlm

Участник
63
33
Всем привет. Есть какой-нибудь API на плюсах для работы с сетевым движком (RakNet) прямо на сервере (samp)?
А то в падлу копировать код из Pawn.RakNet
 

вайега52

cache miss
Модератор
3,060
3,294

swlm

Участник
63
33
  • Нравится
Реакции: вайега52

swlm

Участник
63
33
Привет. Подключил библиотеку, вызываю 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

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

Smeruxa

smeruxa.ru
Проверенный
1,434
800
Подскажите пожалуйста, как вызвать зеленый треугольник. По-разному пытался, но что-то уже мозги не варят :)
Последнее, что пытался (хз, последние надежды на функцию с псдк была):
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

God has forsaken us
Модератор
5,059
7,462
Подскажите пожалуйста, как вызвать зеленый треугольник. По-разному пытался, но что-то уже мозги не варят :)
Последнее, что пытался (хз, последние надежды на функцию с псдк была):
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,434
800
Это потому что 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,710
1,610
Вот такой вариант попробовал, он работает в случае, если играют анимации, откуда этот эффект взялся - я без понятия, случайно выявил (прыгал и забирался по стенке)
Т.е. рисует треугольник, видимо есть какой-то случай, вызывающий это
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

swlm

Участник
63
33
Вопрос по поводу RakClient.h
Как правильно работать с Receive? То-есть, как правильно получать пакеты исходящие от сервера?
Вопрос в том, где это делать? В игровом цикле? Нужна ли какая-то задержка?

RakNet:
virtual Packet* Receive(void);
P.S. Прикол в том, что когда я использую Receive, то как будто я перехватываю пакет, и дальше уже никакие пакеты от клиента на сервер не идут.
 
Последнее редактирование: