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

AdCKuY_DpO4uLa

Адский дрочер
Друг
369
817
Мужики все делают на TCP 😎
Тогда уж на curl + openssl писать, как раз под си, но все апи придется самому реализовывать, параллельно читая доку к бот апи тг. Как по мне, легче взять готовое, отработанное решение, чем городить лясопеды
 
  • Нравится
Реакции: вайега52

0xff65

Участник
36
2
Приветствую, пытаюсь собрать загрузчик состоящих из двух частей - серверной и клиентской, с клиентской стороны все нормально клиент лоадер собран, а вот с серверной возникли проблемы, собрал директорию с помощью cmake, далее пытался собрать sln решение, но как мне подсказал интернет оно написано для linux -
C++:
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
Как мне быть? Скачать образ и накатить на виртуальную машину? Или собрать через Windows Subsystem for Linux? Какого формата будет скомпилированный файл и как его запустить на локалке?

Или я движусь совсем не в том направлении? Типо как мне собрать sln файл на линукс (этого я не понимаю) если там 2к ошибок, что-то не так явно

Сурс (https://github.com/EquiNoxAdv/loader-master)
 
Последнее редактирование:

AdCKuY_DpO4uLa

Адский дрочер
Друг
369
817
Приветствую, пытаюсь собрать загрузчик состоящих из двух частей - серверной и клиентской, с клиентской стороны все нормально клиент лоадер собран, а вот с серверной возникли проблемы, собрал директорию с помощью cmake, далее пытался собрать sln решение, но как мне подсказал интернет оно написано для linux -
C++:
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
Как мне быть? Скачать образ и накатить на виртуальную машину? Или собрать через Windows Subsystem for Linux? Какого формата будет скомпилированный файл и как его запустить на локалке?

Или я движусь совсем не в том направлении? Типо как мне собрать sln файл на линукс (этого я не понимаю) если там 2к ошибок, что-то не так явно

Сурс (https://github.com/EquiNoxAdv/loader-master)
Все инструкции есть в репозитории. Ставь WSL с ubuntu какой-нибудь и на ней собирай
 
  • Нравится
Реакции: 0xff65 и вайега52

fuldic

Новичок
27
4
Скиньте основу ASI плагина для Visual Studio
 
Последнее редактирование:

malonex

Новичок
4
1
Как проверить, была ли отпущена определённая клавиша? Например: wasKeyReleased(vkeys.VK_RBUTTON)
 

yorenov

Участник
64
62
Альт как прожать? Так не воркает:

С++:
RakNet::BitStream bs;
    bs.ResetWritePointer();
    Synchronization::OnfootData onfootData{};
    std::memcpy(&onfootData,
                &RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData,
                sizeof(Synchronization::OnfootData));
    onfootData.m_controllerState.m_bPedWalk = 1;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(1024);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
    
    onfootData.m_controllerState.m_bPedWalk = 0;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(0);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
А так прожимает только 1 раз + ко всему - костыль
C++:
input[0].type = INPUT_KEYBOARD;
    input[0].ki.wVk = 0;
    input[0].ki.dwFlags = KEYEVENTF_SCANCODE;
    input[0].ki.wScan = 0x38;

    input[1].type = INPUT_KEYBOARD;
    input[1].ki.wVk = 0;
    input[1].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
    input[1].ki.wScan = 0x38;

    SendInput(2, input, sizeof(INPUT));
 

undefine

Участник
35
14
Альт как прожать? Так не воркает:

С++:
RakNet::BitStream bs;
    bs.ResetWritePointer();
    Synchronization::OnfootData onfootData{};
    std::memcpy(&onfootData,
                &RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData,
                sizeof(Synchronization::OnfootData));
    onfootData.m_controllerState.m_bPedWalk = 1;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(1024);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
   
    onfootData.m_controllerState.m_bPedWalk = 0;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(0);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
А так прожимает только 1 раз + ко всему - костыль
C++:
input[0].type = INPUT_KEYBOARD;
    input[0].ki.wVk = 0;
    input[0].ki.dwFlags = KEYEVENTF_SCANCODE;
    input[0].ki.wScan = 0x38;

    input[1].type = INPUT_KEYBOARD;
    input[1].ki.wVk = 0;
    input[1].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
    input[1].ki.wScan = 0x38;

    SendInput(2, input, sizeof(INPUT));
ратку опять кинь, прожмется алт
 

yorenov

Участник
64
62
забыл? тебе в тг написали ты кинул свой твинк и с него типу ратку кинули
В тему с заказами зайди, там много весело "неактуально", а потом - я сменил ТГ юз, ушел в работу в реальной жизни. ТГ юз занял идиот который заскамил типов, попросив обратно ТГ юз - он отказал. В итоге скамит и по сей день, к этому я не имею никакого отношения

Альт как прожать? Так не воркает:

С++:
RakNet::BitStream bs;
    bs.ResetWritePointer();
    Synchronization::OnfootData onfootData{};
    std::memcpy(&onfootData,
                &RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData,
                sizeof(Synchronization::OnfootData));
    onfootData.m_controllerState.m_bPedWalk = 1;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(1024);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
  
    onfootData.m_controllerState.m_bPedWalk = 0;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(0);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
А так прожимает только 1 раз + ко всему - костыль
C++:
input[0].type = INPUT_KEYBOARD;
    input[0].ki.wVk = 0;
    input[0].ki.dwFlags = KEYEVENTF_SCANCODE;
    input[0].ki.wScan = 0x38;

    input[1].type = INPUT_KEYBOARD;
    input[1].ki.wVk = 0;
    input[1].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
    input[1].ki.wScan = 0x38;

    SendInput(2, input, sizeof(INPUT));
Актуально, парни, помогите кликнуть злой альт на Радмире. 215 пакет не отправляется от клиента (при нажатии альта его просто нет - вход в квартиру)
 
Последнее редактирование:
  • Ха-ха
Реакции: XRLM

yorenov

Участник
64
62
Альт как прожать? Так не воркает:

С++:
RakNet::BitStream bs;
    bs.ResetWritePointer();
    Synchronization::OnfootData onfootData{};
    std::memcpy(&onfootData,
                &RefNetGame()->GetPlayerPool()->GetLocalPlayer()->m_onfootData,
                sizeof(Synchronization::OnfootData));
    onfootData.m_controllerState.m_bPedWalk = 1;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(1024);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
   
    onfootData.m_controllerState.m_bPedWalk = 0;
    onfootData.m_controllerState.m_value = static_cast<uint8_t>(0);
    bs.Write(static_cast<BYTE>(ID_PLAYER_SYNC));
    bs.Write(reinterpret_cast<PCHAR>(&onfootData), sizeof(Synchronization::OnfootData));
    rakhook::send(&bs, HIGH_PRIORITY, RELIABLE_SEQUENCED, 1);
А так прожимает только 1 раз + ко всему - костыль
C++:
input[0].type = INPUT_KEYBOARD;
    input[0].ki.wVk = 0;
    input[0].ki.dwFlags = KEYEVENTF_SCANCODE;
    input[0].ki.wScan = 0x38;

    input[1].type = INPUT_KEYBOARD;
    input[1].ki.wVk = 0;
    input[1].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
    input[1].ki.wScan = 0x38;

    SendInput(2, input, sizeof(INPUT));
Актуально, как на синхре прожимать альт? Или я что то не так делаю? Вроде же m_value - это specialKey?

Актуально, как на синхре прожимать альт? Или я что то не так делаю? Вроде же m_value - это specialKey?
m_value - short (16 бит), а я кастил к uint8_t, т.е.
1024 (0x0400) превращался в 0 у меня (низкий байт), и в итоге бит вообще не ставится))) + Я перезатирал все остальные клавиши, вместо того, чтобы просто добавить бит walk)
 
Последнее редактирование:

undefine

Участник
35
14
какая функция в гта отвечает за рендер build-object? типо пробывал CEntity::Render оно онли игроков с машинами, или же при
C++:
for (int i = 0; i < objectsPool->m_nSize; i++) {
                CBuilding* obj = objectsPool->GetAt(i);
}
static RpAtomic* atomic_callback(RpAtomic* atomic, void* obj) {
    if (atomic->geometry) {
        atomic->geometry->flags |= rpGEOMETRYMODULATEMATERIALCOLOR;
        RpGeometryForAllMaterials(atomic->geometry, material_callback, obj);
    }
    return atomic;
}

static RpMaterial* material_callback(RpMaterial* material, void* obj)
{
    if (!material || !material->texture)
        return material;

    material->color.blue = 255;
    material->color.red = 0;
    material->color.green = 0;

    return material;
}

и при попытке передать в atomic_callback крашит
 
Последнее редактирование:

вайега52

Налуашил состояние
Модератор
2,998
3,124
какая функция в гта отвечает за рендер build-object? типо пробывал CEntity::Render оно онли игроков с машинами, или же при
C++:
for (int i = 0; i < objectsPool->m_nSize; i++) {
                CBuilding* obj = objectsPool->GetAt(i);
}
static RpAtomic* atomic_callback(RpAtomic* atomic, void* obj) {
    if (atomic->geometry) {
        atomic->geometry->flags |= rpGEOMETRYMODULATEMATERIALCOLOR;
        RpGeometryForAllMaterials(atomic->geometry, material_callback, obj);
    }
    return atomic;
}

static RpMaterial* material_callback(RpMaterial* material, void* obj)
{
    if (!material || !material->texture)
        return material;

    material->color.blue = 255;
    material->color.red = 0;
    material->color.green = 0;

    return material;
}

и при попытке передать в atomic_callback крашит
CCustomBuildingPipeline::CustomPipeAtomicSetup
Возможно оно
 
  • Нравится
Реакции: undefine