Гайд API SF | Урок 1 - Основы

Тема в разделе "C/C++", создана пользователем CleanLegend, 8 авг 2018.

Статус темы:
Закрыта.
  1. CleanLegend

    Проверенный

    Регистрация:
    28 мар 2013
    Сообщения:
    221
    Симпатии:
    245
    Введение
    API предоставляет возможность использовать готовые функции плагина SAMPFUNCS в своих собственных плагинах. Вам больше не придется самому искать адреса для вызова функций из памяти, вам больше не придется вручную перехватывать вызов функций RakNet'а и D3DDevice. Парой кликов мыши происходит регистрация своей функции, которая будет вызвана SF в нужный момент.

    Основные возможности
    На данный момент реализован доступ к пяти основным классам:

    CGame — получение статусов нажатий клавиш, позиций курсора, эмуляция клавиш в игре, конвертация игровых координат, регистрация своей функции обработки нажатий клавиш и т.д.

    CSAMP — самый объёмный класс. Предоставляет такие функции как: получение статуса инициализации клиента, работа со всеми структурами и данными (Players, Vehicles, Chat, Dialog, DeathList и другие), готовые функции отправки некоторых данных серверу, регистрация клиентской команды в чате.

    CCLEO — на данный момент поддерживается регистрация собственных опкодов, а в будущих версиях будет добавлена возможность выполнения всех опкодов Cleo с привычным синтаксисом из SB.

    CRakNet — отправка пакетов, регистрация callback-функций для чтения отсылаемых/полученных данных, получение названия пакета и RPC по ID, кодирование/декодирование строк.

    CRender — позволяет создавать собственные шрифты и текстуры, рендер примитивов, регистрация callback-функций на всю таблицу методов Direct3D Device.

    Начало работы
    Для работы .sf плагинов требуется:

    1. Скачать последнюю версию плагина SAMPFUNCS.
    2. Из архива с плагином извлечь и разархивировать SFPlugin.zip. Это настроенный проект, готовый к работе с API.
    3. Скомпилированный .sf плагин положить в папку GTA San Andreas\SAMPFUNCS.
    Пример
    В качестве первого примера будет показана простая функция показа информации об игроке в чат.

    Для этого открываем скачанный проект и заходим в файл main.cpp.

    Перед функцией mainloop вставляем этот код:

    void CALLBACK cmd_show_info_player( std::string param )
    {
       if ( param.empty() ) return;
       int    i = std::stoi( param );
    
       char buf[128];
    
       stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];
    
       if(!pPlayer) return;
    
       sprintf( buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d",
           pPlayer->szPlayerName,
           pPlayer->iPing,
           pPlayer->iScore,
           pPlayer->iIsNPC,
           pPlayer->pPlayerData->iAFKState == 2 );
    
       SF->getSAMP()->getChat()->AddChatMessage( -1, buf );  
    };
    Затем в функции mainloop внутри условного блока if( !init ) перед операцией init = true; вставляем:

    SF->getSAMP()->registerChatCommand( "showinfo", cmd_show_info_player );
    Компилируем, закидываем в папку SAMPFUNCS полученный .sf плагин ( в папке bin ) и заходим в игру.

    Пишем в чат /showinfo < id игрока > и получаем примерно следующее:

    [​IMG]

    На этом урок окончен, в следующих примерах будут разобраны подробно каждый из классов API.

    Автор: urShadow
     
    checkdasound, mr.krabs, #kerosin и 3 другим нравится это.
Статус темы:
Закрыта.