• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Union SDK - Инструменты разработчика

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
  • Первое сообщение
  • #1
UnionProjectIcon.png


Union SDK

инструменты разработчика

Тема находится в состоянии наполнения



Короткие видеоролики, смысл которых максимально быстро погрузить смотрящего в устройство движка готики.

Рекомендуется смотреть на YouTube, поскольку там имеется сегментированный таймлайн.






Схемы классов движка
1600263933953.png
1600263981919.png
1600264017579.png
 

Вложения

  • sizeof.xlsx
    896,7 KB · Просмотры: 72
  • Union_SDK_1_0m.zip
    20,6 MB · Просмотры: 86
Последнее редактирование:

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
RPD, Ну первое:
что такое {} ?
Без {} такая ошибка
1731004665485.png

Дык int всегда должна возвращать значение...(return true/false)
Ну так в dll оно и возвращает значение. Но если я явно указываю в скриптах daedalus return 0 - возвращается этот 0, а не то, что должно по логике работы функции
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
но если я явно указываю в скриптах daedalus return 0 - возвращается этот 0, а не то, что должно по логике работы функции
это же внешняя функция. поэтому в Externals.d укажи return 0 . это норм. скомпилируй датник и проверь в игре что фактически она будет возвращать.
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
это же внешняя функция. поэтому в Externals.d укажи return 0 . это норм. скомпилируй датник и проверь в игре что фактически она будет возвращать.
Я это так и понимаю. Но, как я и сказал, возвращает этот ноль. Pow(3,3) - это 27
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
Закинь dll файл сюда
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
Закинь dll файл сюда
C++:
    int __cdecl Pow_External()
    {
        int FirstArgument;
        int SecondArgument;

        parser->GetParameter(SecondArgument);
        parser->GetParameter(FirstArgument);

        int result = pow(FirstArgument,SecondArgument);

        parser->SetReturn(result);
        return 0;
    }

C++:
  void Game_DefineExternals() {
      parser->DefineExternal("PowNums", Pow_External, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_VOID);
  }

У меня есть предположение, что парсер модуль math игнорирует
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
RPD,
C++:
    int Pow_External()
    {
        int FirstArgument;
        int SecondArgument;

        parser->GetParameter(SecondArgument);
        parser->GetParameter(FirstArgument);
       
        int result = pow(FirstArgument,SecondArgument);
       
        parser->SetReturn(result);
        return 0;
    }
    void Game_DefineExternals() {
        parser->DefineExternal("PowNums", Pow_External, zPAR_TYPE_VOID, zPAR_TYPE_INT, zPAR_TYPE_INT, 0);
    }

Daedalus:
func int PowNums(var int FirstArgument, var int SecondArgument);
 
Последнее редактирование:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
RPD, а если тип viod сделать в externals.d?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Я имею ввиду
func void PowNums(var int FirstArgument, var int SecondArgument);
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
Я имею ввиду
func void PowNums(var int FirstArgument, var int SecondArgument);
Daedalus:
func void PowNums(var int FirstArgument, var int SecondArgument);
Без {}; в конце всегда вылазят две ошибки: Переопределенный идентификатор POWNUMS и ожидается {},

C {} выдает ошибку: В функции отстутствует return int (что в принципе логично)
Пост автоматически объединён:

Daedalus:
func void PowNums(var int FirstArgument, var int SecondArgument);
Без {}; в конце всегда вылазят две ошибки: Переопределенный идентификатор POWNUMS и ожидается {},

C {} выдает ошибку: В функции отстутствует return int (что в принципе логично)
1731139263027.png
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
RPD, проблема в том, что ты не там объявляешь свою новую внешнюю функцию, чтобы работать с ней в Сорсере.
1. Нужно всё делать в файле
GothicSourcer V3.15\GothicSourcer\System\ExternalFuncs.d:
Daedalus:
int PowNums(int,int);

2. Ну и как уже правильно заметил коллега, ошибка в объявлении функции через парсер
parser->DefineExternal("PowNums", Pow_External, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_VOID);

3. Затем уже в Сорсере активируешь спец. режим компиляции:
1.jpg


2.jpg


4. И спокойно вызываешь эту функцию в скриптах, также как и с остальные.
5. Компилируешь, смотришь результат.

Ну и, наверное, нужно напомнить, что в данном контексте: переопределённый - лишний, а неопределённый - неизвестный или незнакомый.
 
Последнее редактирование:

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
RPD, проблема в том, что ты не там объявляешь свою новую внешнюю функцию, чтобы работать с ней в Сорсере.
1. Нужно всё делать в файле
GothicSourcer V3.15\GothicSourcer\System\ExternalFuncs.d:
Daedalus:
int PowNums(int,int);

2. Ну и как уже правильно заметил коллега, ошибка в объявлении функции через парсер
parser->DefineExternal("PowNums", Pow_External, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_VOID);

3. Затем уже в Сорсере активируешь спец. режим компиляции:
Посмотреть вложение 127003

Посмотреть вложение 127004

4. И спокойно вызываешь эту функцию в скриптах, также как и с остальные.
5. Компилируешь, смотришь результат.
Спасибо, обязательно протестирую. Пока вы здесь, прошу ответить на вопрос, который мучает меня уже 2 недели - Для работы с диалогами и диалоговыми окнами нужно использовать класс zCViewDialog? Какими методами объявлять?
Пост автоматически объединён:

RPD, проблема в том, что ты не там объявляешь свою новую внешнюю функцию, чтобы работать с ней в Сорсере.
1. Нужно всё делать в файле
GothicSourcer V3.15\GothicSourcer\System\ExternalFuncs.d:
Daedalus:
int PowNums(int,int);

2. Ну и как уже правильно заметил коллега, ошибка в объявлении функции через парсер
parser->DefineExternal("PowNums", Pow_External, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_VOID);

3. Затем уже в Сорсере активируешь спец. режим компиляции:
Посмотреть вложение 127003

Посмотреть вложение 127004

4. И спокойно вызываешь эту функцию в скриптах, также как и с остальные.
5. Компилируешь, смотришь результат.

Ну и наверное, нужно напомнить, что в данном контексте, переопределённый - лишний, а неопределённый - неизвестный или незнакомый.
У меня GS 3.16, это не важно?
1731140413483.png

в параметрах нет доп настроек.
А файла ExternalFuncs.d по такому пути нет. Я его создал, но функция "показать внешние функции" во вкладке помощь все равно открывает файл Externals.d
Пост автоматически объединён:

RPD, проблема в том, что ты не там объявляешь свою новую внешнюю функцию, чтобы работать с ней в Сорсере.
1. Нужно всё делать в файле
GothicSourcer V3.15\GothicSourcer\System\ExternalFuncs.d:
Daedalus:
int PowNums(int,int);

2. Ну и как уже правильно заметил коллега, ошибка в объявлении функции через парсер
parser->DefineExternal("PowNums", Pow_External, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_INT, zPAR_TYPE_VOID);

3. Затем уже в Сорсере активируешь спец. режим компиляции:
Посмотреть вложение 127003

Посмотреть вложение 127004

4. И спокойно вызываешь эту функцию в скриптах, также как и с остальные.
5. Компилируешь, смотришь результат.

Ну и наверное, нужно напомнить, что в данном контексте, переопределённый - лишний, а неопределённый - неизвестный или незнакомый.
У меня GS 3.16, это не важно?
1731140413483.png

в параметрах нет доп настроек.
А файла ExternalFuncs.d по такому пути нет. Я его создал, но функция "показать внешние функции" во вкладке помощь все равно открывает файл Externals.d
 
Последнее редактирование:

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
RPD, для начала опиши подробнее что ты хочешь реализовать, и желательно с картинками. Как должна работать и управляться эта система.
Потому что текстом, в двух предложениях - это иногда такое себе, абстрактное тех. задание...
И еще: Для работы над диалоговыми окнами (редактирование, добавление новых пустых), а также редактированием и форматированием текста мы используем ZСView?
Есть подозрение, что ты хочешь сделать что-то похожее из Архолоса. А там не всё так просто.
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
118
Благодарности
3
Баллы
40
RPD, для начала опиши подробнее что ты хочешь реализовать, и желательно с картинками. Как должна работать и управляться эта система.
Потому что текстом, в двух предложениях - это иногда такое себе, абстрактное тех. задание...
В целом окно, появляющееся во время выбора определенной ветви диалога.
У меня в моде есть питомцы, которым я хочу сделать наглядную менюшку улучшений. (Ну там, сколько-то мяса, еще чего-нибудь. Если достаточно - текст подсвечивается зеленым, можно улучшить. Недостаточно - наоборот)
Есть подозрение, что ты хочешь сделать что-то похожее из Архолоса. А там не всё так просто.
Очень точное подозрение, примерно это я и хочу реализовать.
 
Сверху Снизу