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

Oleg1337228

Участник
237
12
Asi:
rtdhook* hook;

void* __fastcall AttachEntityToEntity(uintptr_t ptr, void* edx, uintptr_t entityTo, CVector offset, CVector rotation)
{
uint8_t type = *reinterpret_cast<uint8_t*>(entityTo + 0x36);
if ((type & 7) == 2) // If entity is attaching to vehicle
*reinterpret_cast<uint32_t*>(ptr + 0x1C) &= 0xFFFFFFFE;

return reinterpret_cast<void* (__thiscall*)(uintptr_t, uintptr_t, CVector, CVector)>
(hook->trampoline)(ptr, entityTo, offset, rotation);
}

int main()
{
hook = new rtdhook(0x54D570, reinterpret_cast<DWORD>(&AttachEntityToEntity));
hook->install();
return 0;
}
Как добавить активацию и деактиваю самп?
 
  • Эм
Реакции: Z3roKwq

why ega

РП игрок
Модератор
2,550
2,242
Как зарегать cmd без использования какого то апи? Короче говоря, пишу плагин, надо чтоб юзер передавал аргумент в функу через cmd, как реализовать не прибегая к использованию какого либо апи?
Аналогия сф апи - SF->getSAMP()->registerChatCommand("text", text); // юзер пишет "/test 1" в чате, вызывается функция test("1") с параметром 1. Думаю ясно объяснил что мне надо короче
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как сделать самостоятельное окно imgui, чтобы было без панели управления окном directx9
1701100736957.png

вот я имею в виду такое окно, что обвел и показал стрелочкой, но без ебучего окна которое под крестиком
1701100755408.png

ВСЕМ СПАСИБО ЧАТГПТ МЕНЯ СМОГ УСЛЫШАТЬ
C++:
HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui Standalone Window",
                            WS_POPUP,
                            100, 100, 1280, 800, nullptr, nullptr, wc.hInstance, nullptr);
 
Последнее редактирование:

y0dir1ga

Новичок
5
0
Если через cmake, то можешь за образец взять это. Если попроще, то можешь использовать Visual Studio Code, настроив проект по этому гайду
Дело в том что мне нужно перебиньдить кнопку активации с Insert на F3 в прикреплённом файле, кнопку в KeyHook.cpp заменил а как скомпилировать не понимаю.
 

Вложения

  • StealthRemastered.asi
    814.5 KB · Просмотры: 8

why ega

РП игрок
Модератор
2,550
2,242
Пишу обертку на sol2 под Lua для перегруженной функции. Почему-то, когда добавляю вторую функцию, я не могу корректно вызвать функцию из под Lua
C++:
RakClientType["RPC"] = sol::overload(
    [](RakClient &pRakClient, int rpcId, BitStream *bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, bool shiftTimestamp, NetworkID networkId, BitStream *replyFromTarget)
    {
        return pRakClient.RPCd(&rpcId, bitStream, priority, reliability, orderingChannel, shiftTimestamp, networkId, replyFromTarget);
    },

    [](RakClient &pRakClient, int rpcId, const char *data, unsigned int bitLength, PacketPriority priority, PacketReliability reliability, char orderingChannel, bool shiftTimestamp, NetworkID networkId, BitStream *replyFromTarget)
    {
        return pRakClient.RPC(&rpcId, data, bitLength, priority, reliability, orderingChannel, shiftTimestamp, networkId, replyFromTarget);
    }
);
На lua вызываю ее так:
Lua:
rakClient:RPC(rpcId, bitstream, RakCore.PacketPriority.HIGH_PRIORITY, RakCore.PacketReliability.RELIABLE_ORDERED, 0, false, RakCore.UNASSIGNED_NETWORK_ID, nil)
Странно, что ошибка появляется если добавить вторую перегрузку (вместо bitStream data и lenght), когда оставляю только одну перегрузку (также через sol::overload), все работает корректно. Ошибка в Lua:
Код:
sol: no matching function call takes this number of arguments and the specified types
 

nonelike

Известный
4
0
1. Может кто подробно объяснить как снять лимиты с машин в сампе? И как после этого добавить кастомные?
 
  • Эм
Реакции: Z3roKwq

AKTPUCCA

Новичок
3
0
У меня вопрос по многофайловым проектам на языке C++. Допустим у меня в проекте следующие файлы:
main.cpp
sum.cpp // определение функции sum(int a, int b) {return a+b};
sum.h // объявление функции

В sum.cpp мы подключаем заголовочный файл (как это говорят делать) #include "sum.h"
В main.cpp мы так же подключаем заголовочный файл #include "sum.h"

Теперь вопрос: если директива "#include" просто вставляет текст из файла, который он подключает, то как нахуй работает заголовочный файл; ведь подключая "sum.h" в "main.cpp" мы по сути вставляем ТОЛЬКО объявление функции в main.cpp, но каким-то чудом тут еще и определение из sum.cpp работает, хотя мы его не подключаем, а ДАЖЕ НАОБОРОТ, ЭТО sum.cpp вставляет в себя текст sum.h. Что в итоге: sum.h не содержит в себе текст из sum.cpp, и main.cpp не содержит в себе текст sum.cpp. main.cpp вставляет текст sum.h, а sum.h НЕ вставляет в себя определение функции sum(), то есть НЕ инклудит в себя sum.cpp. Это заставляет меня сомневаться в знании "#include".

В моем понимании, чтобы функция работала, мы должны подключить ее определение, а тут с заголовками мы не подключаем определение (sum.cpp), мы подключаем заголовочный "sum.h", но в самом заголовочном мы не подключаем определение в "sum.cpp". Объясните почему так, ПОЧЕМУ ТАК?! Мозг ломается.
 

N08I40K

Известный
224
106
У меня вопрос по многофайловым проектам на языке C++. Допустим у меня в проекте следующие файлы:
main.cpp
sum.cpp // определение функции sum(int a, int b) {return a+b};
sum.h // объявление функции

В sum.cpp мы подключаем заголовочный файл (как это говорят делать) #include "sum.h"
В main.cpp мы так же подключаем заголовочный файл #include "sum.h"

Теперь вопрос: если директива "#include" просто вставляет текст из файла, который он подключает, то как нахуй работает заголовочный файл; ведь подключая "sum.h" в "main.cpp" мы по сути вставляем ТОЛЬКО объявление функции в main.cpp, но каким-то чудом тут еще и определение из sum.cpp работает, хотя мы его не подключаем, а ДАЖЕ НАОБОРОТ, ЭТО sum.cpp вставляет в себя текст sum.h. Что в итоге: sum.h не содержит в себе текст из sum.cpp, и main.cpp не содержит в себе текст sum.cpp. main.cpp вставляет текст sum.h, а sum.h НЕ вставляет в себя определение функции sum(), то есть НЕ инклудит в себя sum.cpp. Это заставляет меня сомневаться в знании "#include".

В моем понимании, чтобы функция работала, мы должны подключить ее определение, а тут с заголовками мы не подключаем определение (sum.cpp), мы подключаем заголовочный "sum.h", но в самом заголовочном мы не подключаем определение в "sum.cpp". Объясните почему так, ПОЧЕМУ ТАК?! Мозг ломается.
 
  • Нравится
Реакции: why ega, Z3roKwq и yorenov

AKTPUCCA

Новичок
3
0
Там не описано каким образом .h присоединяет определение из .cpp без инклуда
 

D0glian

Новичок
13
0
Итак, помогите мне выполнить упражнение на C++, нужно сделать это с включением iostream и использованием пространства имен std на базовом языке. Это упражнение пользователь должен визуализировать на следующем рисунке: 5 звездочек и тире ( *****-) под 4 звездочками и двумя тире ****-- под 3 звездочками два тире и ноль ( ** *--0) под двумя звездочками два тире и два нуля ( **--00) под звездочкой два тире три нуля ( *--000) под двумя тире и 4 нуля ( --0000)
 

Вложения

  • asdasd.png
    asdasd.png
    2.3 KB · Просмотры: 23

AKTPUCCA

Новичок
3
0
Итак, помогите мне выполнить упражнение на C++, нужно сделать это с включением iostream и использованием пространства имен std на базовом языке. Это упражнение пользователь должен визуализировать на следующем рисунке: 5 звездочек и тире ( *****-) под 4 звездочками и двумя тире ****-- под 3 звездочками два тире и ноль ( ** *--0) под двумя звездочками два тире и два нуля ( **--00) под звездочкой два тире три нуля ( *--000) под двумя тире и 4 нуля ( --0000)
это прям база база, просто std::cout << "*****_" << std::endl;
std::cout << "****__" << std::endl; И так далее.
Если суть в автоматизации, то почитай про класс стринг std::string и его методы
 
  • Злость
  • Эм
Реакции: ARMOR и 4el0ve4ik