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

AdCKuY_DpO4uLa

Известный
287
477
Подскажи, пожалуйста, а как ты вообще включаешь курсор мыши?
 

skrrt

Активный
242
88
как в sampapi создается команда? дайте самый простой пример плз
 

why ega

РП игрок
Модератор
2,539
2,231
C++:
if (SampVersion == 1) sampapi::v037r1::RefInputBox()->AddCommand("test", ActivateCommand);
так же не стоит забывать, что необходимо при выгрузке плагина также удалять команду, иначе в последующем вводе команды, будет краш
 
  • Нравится
Реакции: Vintik, ARMOR и ChromiusJ

why ega

РП игрок
Модератор
2,539
2,231
как заменять лоадинг скрин через хук
иди в сторону функции CLoadingScreen::LoadSplashes, которая загружает txd в память - 0x5900B0
1711548503221.png
 

why ega

РП игрок
Модератор
2,539
2,231
  • Нравится
Реакции: skrrt

why ega

РП игрок
Модератор
2,539
2,231
У меня есть проект с такой структурой:
src/
├── hooks.hpp
├── hooks.cpp
├── patch.hpp
├── patch.cpp
├── network.hpp
├── network.cpp
├── main.hpp
└── main.cpp

Как я могу грамотно организовать получение основного класса Plugin в остальных классах, которые находятся в одноименных файлах?
C++:
#ifndef MAIN_HPP
#define MAIN_HPP


#include <vector>


#include "sampapi/sampapi.h"


#include "hooks.hpp"
#include "patch.hpp"
#include "network.hpp"



class Plugin
{
public:
    Plugin();
    ~Plugin();


    void Initialize();


    // Инициализация указателей происходит в методах клсса Plugin
    Patch* patch;
    Hooks* hooks;
    Network* network;
    // 

    std::uintptr_t SAMPHandle;
    std::vector<RakNet::BitStream> accessories;
    bool isKeyDown = false;
} plugin;



#endif

Покажу на примере класса Network (network.hpp):

C++:
#ifndef NETWORK_HPP
#define NETWORK_HPP



#include "rakhook/rakhook.hpp"

#include "sampapi/CPlayerPool.h"



class Network
{
private:
    static const char* clientVersion;

    // Необходимо как-либо получить доступ к объявлению класса Plugin
    Plugin* plugin;
    

public:
    Network(Plugin* plugin);
    ~Network();


    bool OnSendRPC(std::int32_t& id, RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& orderingChannel, bool& sh_timestamp);
    bool OnReceiveRPC(std::uint8_t& id, RakNet::BitStream* bs);
};




#endif
 

F0RQU1N and

Известный
1,310
494
У меня есть проект с такой структурой:
src/
├── hooks.hpp
├── hooks.cpp
├── patch.hpp
├── patch.cpp
├── network.hpp
├── network.cpp
├── main.hpp
└── main.cpp

Как я могу грамотно организовать получение основного класса Plugin в остальных классах, которые находятся в одноименных файлах?
C++:
#ifndef MAIN_HPP
#define MAIN_HPP


#include <vector>


#include "sampapi/sampapi.h"


#include "hooks.hpp"
#include "patch.hpp"
#include "network.hpp"



class Plugin
{
public:
    Plugin();
    ~Plugin();


    void Initialize();


    // Инициализация указателей происходит в методах клсса Plugin
    Patch* patch;
    Hooks* hooks;
    Network* network;
    //

    std::uintptr_t SAMPHandle;
    std::vector<RakNet::BitStream> accessories;
    bool isKeyDown = false;
} plugin;



#endif

Покажу на примере класса Network (network.hpp):

C++:
#ifndef NETWORK_HPP
#define NETWORK_HPP



#include "rakhook/rakhook.hpp"

#include "sampapi/CPlayerPool.h"



class Network
{
private:
    static const char* clientVersion;

    // Необходимо как-либо получить доступ к объявлению класса Plugin
    Plugin* plugin;
   

public:
    Network(Plugin* plugin);
    ~Network();


    bool OnSendRPC(std::int32_t& id, RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& orderingChannel, bool& sh_timestamp);
    bool OnReceiveRPC(std::uint8_t& id, RakNet::BitStream* bs);
};




#endif
всм просто инклудни main.hpp в network
 

skrrt

Активный
242
88
как сделать функцию, которая будет загружаться только после загрузочного экрана