HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 11.05.2025, 10:57
moreveal
Постоянный
Регистрация: 01.08.2020
Сообщений: 988
С нами: 3043831

Репутация: 163


По умолчанию

Цитата:
Сообщение от thelupa1488  

Здравствуйте, сделал хук "0x33BA0" (Внешний) отправки пакета серверу, но не пойму, как прочитать агрумент с bitstream
C++:





Код:
struct
BitStream
{
int
numberOfBitsUsed
;
int
numberOfBitsAllocated
;
int
readOffset
;
uint8_t
*
data
;
bool
copyData
;
uint8_t
stackData
[
256
]
;
}
;


кастишь к указателю на эту структуру и работаешь с ней:

C++:





Код:
// int pBitStream - аргумент с твоей функции
auto
bitStream
=
reinterpret_cast

(
pBitStream
)
;


(боюсь спросить почему у тебя это внутри фрейма имгуи)
 
Ответить с цитированием

  #2  
Старый 11.05.2025, 11:01
thelupa1488
Новичок
Регистрация: 16.12.2020
Сообщений: 13
С нами: 2846858

Репутация: 53
По умолчанию

Цитата:
Сообщение от moreveal  

C++:





Код:
struct
BitStream
{
int
numberOfBitsUsed
;
int
numberOfBitsAllocated
;
int
readOffset
;
uint8_t
*
data
;
bool
copyData
;
uint8_t
stackData
[
256
]
;
}
;


кастишь к указателю на эту структуру и работаешь с ней:

C++:





Код:
// int pBitStream - аргумент с твоей функции
auto
bitStream
=
reinterpret_cast

(
pBitStream
)
;


(боюсь спросить почему у тебя это внутри фрейма имгуи)
Спасибо большое, только ты написал под internal, но попробую её на external

А на счёт ImGui, это вывод для внешнего окна, не самого меню (Просто для теста, чтобы рядом было )

 
Ответить с цитированием

  #3  
Старый 16.05.2025, 00:16
0xff65
Познающий
Регистрация: 23.01.2022
Сообщений: 36
С нами: 2267665

Репутация: 8
По умолчанию

Приветствую, пытаюсь собрать plugin-sdk. Возникает такая проблема -

Код:





Код:
1>CCoronas.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected: No such file or directory,
1>CCover.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected: No such file or directory,
1>CCoverPoint.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected: No such file or directory,
1>CCredits.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected:


Сборка выполняется на Visual Studio 19
 
Ответить с цитированием

  #4  
Старый 17.05.2025, 03:46
san0
Постоянный
Регистрация: 15.12.2013
Сообщений: 412
С нами: 6530249

Репутация: 133
По умолчанию

Цитата:
Сообщение от 0xff65  

Приветствую, пытаюсь собрать plugin-sdk. Возникает такая проблема -

Код:





Код:
1>CCoronas.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected: No such file or directory,
1>CCover.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected: No such file or directory,
1>CCoverPoint.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected: No such file or directory,
1>CCredits.cpp
1>D:\plugin-sdk-master\safetyhook\safetyhook.hpp(38,10): fatal error C1083: Не удается открыть файл включение: expected:


Сборка выполняется на Visual Studio 19
Код:
std::expected
это часть редакции стандарта C++23 (https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html).

В MSVC(CL) он доступен начиная с Visual Studio 2022 17.3 (_MSC_VER >= 1933) (https://github.com/microsoft/STL/com...0304223308ac8b).

Сам проект должен быть настроен с использованием
Код:
/std:c++23preview
или
Код:
/std:c++latest
(https://learn.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version). А для проверке на этапе сборки можно воспользоваться макросом
Код:
__cpp_lib_expected
(https://en.cppreference.com/w/cpp/feature_test#cpp_lib_expected).

Если такая функциональность нужна в том окружении, где последние реализации недоступны, то можно воспользоваться похожими абстракциями из популярных библиотек типа StatusOr из abseil или checked из Boost.Outcome. И кстати не стоит забывать за возможность поставить относительно портабельный и легковесный mingw (https://www.mingw-w64.org/, https://github.com/mstorsjo/llvm-mingw/releases), хотя думаю там также могут быть понадобиться модификации кода.

В Вашем случае полагаю проще будет или поставить любой бекпорт:

GitHub - TartanLlama/expected: C++11/14/17 std::expected with functional-style extensions

C++11/14/17 std::expected with functional-style extensions - TartanLlama/expected

github.com


Либо просто взять старую версию plugin-sdk:

История изменений => https://github.com/DK22Pac/plugin-sd...safetyhook.cpp

Предыдущий коммит до добавления safetyhook => https://github.com/DK22Pac/plugin-sd...b151308dd85b53

И конечно можно еще сделать git revert (https://git-scm.com/docs/git-revert) в master ветке, отменив кокретно добавление этой библиотеки, но это требует небольшого знания системы контроля версий, а также потребует некоторых изменений в коде, тем более что Вы не указали контекст использования (например, safetyhook - осознанный выбор в связи с поддержкой 64 битной трилогии которая unreal engine)
 
Ответить с цитированием

  #5  
Старый 24.05.2025, 21:13
TokyoQq
Новичок
Регистрация: 14.01.2024
Сообщений: 20
С нами: 1228197

Репутация: 3
По умолчанию

как получить cped гташки через sampapi по id
 
Ответить с цитированием

  #6  
Старый 25.05.2025, 17:05
Wowisky
Новичок
Регистрация: 03.03.2025
Сообщений: 3
С нами: 632211

Репутация: 3
По умолчанию

Цитата:
Сообщение от TokyoQq  

how to get gta cped via sampapi by id
Код:





Код:
auto* playerPool = samp::RefNetGame()->GetPlayerPool();
    playerPool->GetAt(ID)->m_pPlayer->m_pPed; //samp CPed
    playerPool->GetAt(ID)->m_pPlayer->m_pPed->m_pGamePed; //GTA CPed
 
Ответить с цитированием

  #7  
Старый 30.05.2025, 01:27
TheLeftExit
Познающий
Регистрация: 07.01.2021
Сообщений: 38
С нами: 2814874

Репутация: 23
По умолчанию

Приветы, а можно как-то внутри C++ хука, зарегистрированного в registerChatCommand, асинхронно ждать внутри своего кода?

Допустим, у меня есть такое:

псевдокод:





Код:
SF->getCLEO()->callOpcode("0C8F: samp process_chat_input \"1\"");
// спать 300
SF->getCLEO()->callOpcode("0C8F: samp process_chat_input \"2\"");
// спать 300
SF->getCLEO()->callOpcode("0C8F: samp process_chat_input \"3\"");


На деле код спит полсекунды и затем все три строки в чат одновременно выдаёт (и две из них отлетают антифлудом). Cleo/sampfuncs дают какой-то способ поставить свой код в очередь выполняться через X мс?

Или если я могу сам подождать в соседнем треде, а потом отправить остальной код выполняться в нужный (как Control.Invoke), так ещё лучше.

upd: похоже, я могу спокойно гонять callOpcode из соседнего треда, в котором sleep ничего не блокирует. Вопрос снят
 
Ответить с цитированием

  #8  
Старый 01.06.2025, 16:11
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

Репутация: 213
По умолчанию

Цитата:
Сообщение от TheLeftExit  

Приветы, а можно как-то внутри C++ хука, зарегистрированного в registerChatCommand, асинхронно ждать внутри своего кода?
Допустим, у меня есть такое:

псевдокод:





Код:
SF->getCLEO()->callOpcode("0C8F: samp process_chat_input \"1\"");
// спать 300
SF->getCLEO()->callOpcode("0C8F: samp process_chat_input \"2\"");
// спать 300
SF->getCLEO()->callOpcode("0C8F: samp process_chat_input \"3\"");


На деле код спит полсекунды и затем все три строки в чат одновременно выдаёт (и две из них отлетают антифлудом). Cleo/sampfuncs дают какой-то способ поставить свой код в очередь выполняться через X мс?

Или если я могу сам подождать в соседнем треде, а потом отправить остальной код выполняться в нужный (как Control.Invoke), так ещё лучше.

upd: похоже, я могу спокойно гонять callOpcode из соседнего треда, в котором sleep ничего не блокирует. Вопрос снят
Цитата:
Сообщение от TheLeftExit  

Вопрос выше снова актуален. Оказывается, вызов клео из соседних тредов небезопасен; я в одной функции добавил вообщение в чат (AddChatMessage) и запустил тред, который добавляет другое сообщение в чат, и в итоге второе сообщение превратилось в какую-то юникодную букву (вылечилось только комментированием AddChatMessage из кода соседнего треда).

Либо в принципе как-то потоко-безопасно выполнять код, когда игрок нажмёт нужные мне кнопки. Я могу чекать в цикле isKeyPressed/isKeyDown, но непонятно как в C++ это делать и не блокировать игру. В Lua делают wait(0), я полагаю moonloader это интерпретирует как "вернуться к скрипту в следующий фрейм", вот мне надо как-то сделать то же самое в C++.
Изначально использовать клео опкоды в С/C++ - бред, когда у тебя под рукой есть возможность напрямую вызывать методы по адресам. Белиберда у тебя из-за того, что ты пытаешься из двух разных потоков писать/читать в одну область памяти, из-за чего происходит гонка потоков, которая вызывает UB. В обычном случае игра просто должна вылететь. Советую ознакомиться с std::mutex / std::lock_guard, но в твоем случае, можно и одним потоком обойтись, просто написав примитивный таймер на GetTickCount64() (win), либо std::chrono (под любую платформу)
 
Ответить с цитированием

  #9  
Старый 01.06.2025, 14:20
TheLeftExit
Познающий
Регистрация: 07.01.2021
Сообщений: 38
С нами: 2814874

Репутация: 23
По умолчанию

Вопрос выше снова актуален. Оказывается, вызов клео из соседних тредов небезопасен; я в одной функции добавил вообщение в чат (AddChatMessage) и запустил тред, который добавляет другое сообщение в чат, и в итоге второе сообщение превратилось в какую-то юникодную букву (вылечилось только комментированием AddChatMessage из кода соседнего треда).

Либо в принципе как-то потоко-безопасно выполнять код, когда игрок нажмёт нужные мне кнопки. Я могу чекать в цикле isKeyPressed/isKeyDown, но непонятно как в C++ это делать и не блокировать игру. В Lua делают wait(0), я полагаю moonloader это интерпретирует как "вернуться к скрипту в следующий фрейм", вот мне надо как-то сделать то же самое в C++.
 
Ответить с цитированием

  #10  
Старый 01.06.2025, 17:49
RTD
Постоянный
Регистрация: 18.03.2017
Сообщений: 410
С нами: 4818548

Репутация: 133
По умолчанию

Цитата:
Сообщение от TheLeftExit  

Вопрос выше снова актуален. Оказывается, вызов клео из соседних тредов небезопасен; я в одной функции добавил вообщение в чат (AddChatMessage) и запустил тред, который добавляет другое сообщение в чат, и в итоге второе сообщение превратилось в какую-то юникодную букву (вылечилось только комментированием AddChatMessage из кода соседнего треда).

Либо в принципе как-то потоко-безопасно выполнять код, когда игрок нажмёт нужные мне кнопки. Я могу чекать в цикле isKeyPressed/isKeyDown, но непонятно как в C++ это делать и не блокировать игру. В Lua делают wait(0), я полагаю moonloader это интерпретирует как "вернуться к скрипту в следующий фрейм", вот мне надо как-то сделать то же самое в C++.
Исходник - ktcoro_wait - задержки без потоков

ktcoro_wait Приостановка выполенения функции на время основанное на корутинах C++20 Примеры кода #include #include #include "ktcoro_wait.hpp" ktwait bar() { using namespace std::chrono_literals; while (true) { std::cout

www.blast.hk
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.