[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 3 из 4«1234»
Форум » Игры серии GTA » GTA San Andreas » [SA|C++]Plugin SDK. Обсуждение.
[SA|C++]Plugin SDK. Обсуждение.
DK22Pac
Друзья
TOP Скриптер
31.10.13 05:47
Offline
В этой теме обсуждаем Plugin SDK.

Список изменений
03.10.2013
Добавлен модуль CTxdStore для работы с txd-архивами;
Добавлен модуль CSprite2d для рисования.

29.09.2013
Добавлен модуль CFileMgr для работы с файлами;
Добавлен этап FUNC_INITIALISE_RW - при инициализации игры;
Добавлен этап FUNC_SHUTDOWN_RW - при закрытии игры.

16.10.2013
Добавлено очень много.
Некоторые модули - под перспективу, некоторые - вполне работающие уже сейчас.
Расскажу об основном:

Добавлены этапы:
FUNC_INIT_GAME - при инициализации игры (первая загрузка)
FUNC_RE_INIT_GAME - повторная загрузка
FUNC_GAME_PROCESS - при процессинге игры (обработка основных игровых событий)
FUNC_GAME_PROCESS_BEFORE_SCRIPTS - перед обработкой скриптов
FUNC_GAME_PROCESS_AFTER_SCRIPTS  - после обработкой скриптов
Добавлены модули:
Модули, связанные с моделью коллизии - CColBoxCColSphereCColLineCColPointCColTriangleCColTrianglePlaneCColData (не завершен), CColModel (не завершен).
Модули базовых игровых субьектов - CPlaceableCEntityCBuildingCDummyCPhysical (в разработке), CPed (совсем не разработан).
Модуль для работы с коронами - CCoronas.
Добавлен модуль common для функций, не принадлежащих ни одному из игровых классов.
Также:
Добавлен шаблонный класс CPool для работы с пулами (ещё в разработке).

Очередное обновление от 31.10.13
Отредактировал DK22Pac - Четверг, 17.10.13, 01:45

DK22Pac
Друзья
TOP Скриптер
04.08.15 09:35
Offline
Сейчас работаю над обновлением для sdk.
Пришлось отказаться от кое-каких принципов предыдущей версии в сторону стабильности и простоты.
Улучшена работа с расширениями для игровых структур (CVehicle, CPed, CObject), добавлены новые События (в пред. версии - Функции).
Небольшой пример - покраска пешеходов в рандомный цвет. Цвет генерируется при создании пешехода (конструктор PedColor).
Прикрепления: TestDll.txt(3Kb)

wmysterio
Администраторы
Скриптер
13.08.15 19:14
Offline
отлично! обновишь ссылку в теме, когда обновление будет готово.

Код
CPools::ms_pPedPool->m_Size
я так понял, это выражение возвращает текущее количество актёров. Думаю неплохо было бы сделать упрощение, например в
Код
CPed::Count
Или что-то в этом духе.

DK22Pac
Друзья
TOP Скриптер
14.08.15 14:01
Offline
Поле m_Size - это кол-во элементов в пуле (т.е. макс. количество педов в игре).
Пытаюсь делать так, как было у R*. К тому же, сделать это статической переменной довольно проблематично.
При желании можно обойтись этим
Код
#define MAX_PEDS CPools::ms_pPedPool->m_Size

DK22Pac
Друзья
TOP Скриптер
14.08.15 14:14
Offline
Ещё один пример, похожий на предыдущий.
Сканируем обькеты, проверяем на соприкосновение с игроком.
У обьектов, с которыми соприкасался игрок, выводим надпись "Touched". Если обьект и игрок не пересекались - "Not touched".
Для записи статуса соприкосновения выделяем дополнительное поле для класса CObject (bPlayerTouchedMe).

Отредактировал DK22Pac - Пятница, 14.08.15, 14:15
Прикрепления: object_extensio.txt(2Kb)

wmysterio
Администраторы
Скриптер
14.08.15 19:17
Offline
Цитата DK22Pac ()
т.е. макс. количество педов в игре
В текущий момент или вообще в игре?
Цитата DK22Pac ()
Пытаюсь делать так, как было у R*. К тому же, сделать это статической переменной довольно проблематично.
Ну, можно и метод сделать, например:
Код
int CPed::Count(){
     return CPools::ms_pPedPool->m_Size;
}
Можно схитрить smile И получится немного короче чем вызов поля статического экземпляра для класса CPools. В принципе здесь и так ясно, но раз решил сделать для простоты, то пример вполне подходит.

Вот ещё вопросец:
Код
Events::drawingEvent += CheckAndDraw;
Выражение подписывается на событие рисования. Возможно я плохо учил С/С++, но разве есть поддержка событий вообще в этом ЯП? Или это от Майкрософт фишка используется?

DK22Pac
Друзья
TOP Скриптер
14.08.15 21:17
Offline
Цитата wmysterio ()
В текущий момент или вообще в игре?
Вообще. Кол-во слотов в пуле.
Из кода можно понять, что мы "проходимся" по всем слотам пула (Итерация от 0 до CPool::m_Size). Вызываем метод CPool::GetAt. Этот метод возвращает элемент по его индексу. Если слот с этим индексом не занят, то метод возвращает нулевой указатель. Отсюда и проверка
Код
if (object) {

Цитата wmysterio ()
Выражение подписывается на событие рисования. Возможно я плохо учил С/С++, но разве есть поддержка событий вообще в этом ЯП? Или это от Майкрософт фишка используется?
На самом деле, здесь просто перегружен оператор +=. Ну а далее уже sdk делает магию - инжектит хуки и добавляет функцию на стек вызовов.
Что-то вроде такого
Код
template <typename FunctionType> class EventHandler {
public:
      vector<FunctionType> functions;

      EventHandler& operator+=(FunctionType function) {
          ::Inject_if_not_injected_yet();
          functions.push_back(function);
          return *this;
      }
};
Отредактировал DK22Pac - Пятница, 14.08.15, 21:29

wmysterio
Администраторы
Скриптер
15.08.15 19:48
Offline
Цитата DK22Pac ()
На самом деле, здесь просто перегружен оператор +=.

Ну это я понял. В шарпе тоже так используется оператор для подписки.
Цитата DK22Pac ()
Ну а далее уже sdk делает магию - инжектит хуки и добавляет функцию на стек вызовов.
А вот это уже интересно. Получается, программа/игра просто вызывает зарегистрированные методы со списка "functions" где-то в коде цикла либы, а регистрация методов происходит при вызове перегруженного оператора +. Это мне нравится! Простой и удобный механизм! Я читал о похожем способе, но до этих пор никак не мог понять как всё устроено, но теперь я получил +1 к методам проектирования smile

DK22Pac
Друзья
TOP Скриптер
15.05.16 19:43
Offline
Обновленная версия plugin-sdk
https://github.com/DK22Pac/plugin-sdk
Работает с Visual Studio 2015.
Есть 3 примера и шаблон проекта для студии.
PS сайт жутко тормозит.

wmysterio
Администраторы
Скриптер
17.05.16 20:51
Offline
Цитата DK22Pac ()
Обновленная версия plugin-sdk
Есть какие-то детали, или там просто небольшие/большие ошибки исправлены?
Цитата DK22Pac ()
PS сайт жутко тормозит.
Работаю над оптимизацией. Для начала, попробуй удалить все личные сообщения(входящие и исходящие) в профиле. Сайт намного быстрее работает, когда таких сообщений нет или мало.

DK22Pac
Друзья
TOP Скриптер
26.06.16 14:41
Offline
У меня пустой список ЛС.

Добавлено (26.06.16, 13:41)
---------------------------------------------
Теперь plugin-sdk доступен и для Vice City.


Уже есть первый пример - рисование с ID3DXFont.
https://github.com/DK22Pac/plugin-sdk/tree/master/examples/VC_DXFont


wmysterio
Администраторы
Скриптер
12.07.16 19:27
Offline
Цитата DK22Pac ()
У меня пустой список ЛС.
Тогда придётся изменить дизайн, что конечно уже поднадоело :(
Цитата DK22Pac ()
еперь plugin-sdk доступен и для Vice City.
Отлично! Правда я так и не понял как-же сделать плагин(вовсе любой). Постоянно каких-то файлов не хватает. Этот С++ меня убьёт скоро своей требовательностью smile

DK22Pac
Друзья
TOP Скриптер
29.07.16 21:57
Offline
wmysterio, у тебя 2015 студия?

PS небольшое видео
Отредактировал DK22Pac - Суббота, 30.07.16, 00:40

wmysterio
Администраторы
Скриптер
03.09.16 18:44
Offline
Цитата DK22Pac ()
у тебя 2015 студия?
Да, но у меня нет плагина в меню "Templates". И я понятия не имею как правильно его так прислинить к этим шаблонам.

GoldFish
Пользователи
17.01.17 05:30
Offline
Цитата DK22Pac ()
wmysterio, у тебя 2015 студия?PS небольшое видео


DK22Pac, с горем пополам заставил видеть пути инклудов. Возможно не доглядел, но описание установки проекта в студии не полное. Для того, чтобы подружить пути нужно еще править эти пути



Просмотрел еще раз тему про настройку проекта. Вроде понятно. Изночально читал README.MD на гитхабе)
Отредактировал GoldFish - Вторник, 17.01.17, 18:13

DK22Pac
Друзья
TOP Скриптер
05.07.17 12:44
Offline
Смотри вики
https://github.com/DK22Pac....%D1%8F)
И тему на ещё одном форуме.
http://forum.gtabuilder.ru/index.php?topic=337.0

Добавлено (02.07.17, 00:53)
---------------------------------------------
Обновлены все статьи по plugin-sdk.
http://ru-script.3dn.ru/publ/programirovanie/sozdaniye_asi_plaginov/18

Добавлено (05.07.17, 12:44)
---------------------------------------------
Проводим эксперименты по сборке plugin-sdk в компиляторе mingw-64.
https://github.com/DK22Pac....ingw-64


wmysterio
Администраторы
Скриптер
06.12.17 01:46
Offline
Установил, но при компиляции, как всегда, находит ошибку. На этот раз: "не удается открыть входной файл "paths.lib" FirstScript D:\GitHubClonePath\plugin-sdk\examples\FirstScript\FirstScript\LINK". Код банальный:
#include "plugin.h"
//#include "CMessages.h"

using namespace plugin;

class FirstScript {
public:
FirstScript() {

// Добавьте здесь код инициализации плагина
Events::gameProcessEvent.Add([] {
//CMessages::AddMessageJumpQ("My first text", 1, 0, false);
});

}
} firstScript;
При создании проекта, создаётся совсем не такая структура файлов и папок, как в примерах.

DK22Pac
Друзья
TOP Скриптер
06.12.17 08:01
Offline
wmysterio, этот пункт сделал?

wmysterio
Администраторы
Скриптер
06.12.17 09:03
Offline
DK22Pac, да, делал.
------
СКОМПИЛИРОВАЛО!!!! Блин, ну ничего же не менял в коде...

DK22Pac
Друзья
TOP Скриптер
06.12.17 21:39
Offline
Эта ошибка означает, что библиотека paths.lib не найдена.
Библиотека paths.lib - это часть plugin-sdk, и создаётся она при сборке самого plugin-sdk.

Библиотеки plugin-sdk находятся в папке plugin-sdk\output\lib (Visual Studio 2015-2017) или plugin-sdk\output\mingw\lib (Visual Studio 2010-2013, Code::Blocks).
Отредактировал DK22Pac - Среда, 06.12.17, 21:41

wmysterio
Администраторы
Скриптер
07.12.17 11:04
Offline
Цитата DK22Pac ()
Эта ошибка означает, что библиотека paths.lib не найдена.
Да, поисковик мне так и сообщил. Возможно в момент компиляции не все файлы успели подгрузится. Иначе не могу объяснить почему при втором запуске проекта всё отработало на ура ) Сейчас думаю что бы это такое написать ) Возможностей столько, что не хватит фантазии. Наверное, склею "пенальти v2". Может удастся физику полёта мяча легче реализовать.

Форум » Игры серии GTA » GTA San Andreas » [SA|C++]Plugin SDK. Обсуждение.
Страница 3 из 4«1234»
Поиск: