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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стремитесь оценить работы в ежегодном литературном конкурсе от "Ордена Хранителей"! В этот раз темой конкурса являются тайные организации. Ждем именно вас.

    Ссылка на конкурсную тему - тык

Gratt


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

RU EN

 
Последнее редактирование:

keepcheyn

Участник форума
Регистрация
2 Фев 2015
Сообщения
8
Благодарности
1
Баллы
150
Это то понятно... Хотелось узнать примерно сколько ждать... На неделе выйдет, через месяц, через год... Хочется с озвучкой поиграть на Union. Тем более как я понял поддержка ogg уже сделана.. Может есть возможность выкатить обновление с поддержкой ogg?
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.377
Благодарности
7.863
Баллы
995
Это то понятно... Хотелось узнать примерно сколько ждать... На неделе выйдет, через месяц, через год... Хочется с озвучкой поиграть на Union. Тем более как я понял поддержка ogg уже сделана.. Может есть возможность выкатить обновление с поддержкой ogg?
+- месяц, джва..
Пока все не будет проверено, перепроверено и учтено, никаких вариантов выхода раньше этого нет..
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.439
Благодарности
4.790
Баллы
625
+- месяц, джва..
Пока все не будет проверено, перепроверено и учтено, никаких вариантов выхода раньше этого нет..
Да ну не, если за выходные я не успею разобраться с обновлением менеджера ресурсов, то выложу промежуточную сборку с маркировкой 1.0c
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Долго не мог сообразить в чем дело.
C++:
//G2A
player->trafoObjToWorld.PostRotateY(2.0); // не работает
player->RotateWorldY(2.0); // работает

Что-то там не так с PostRotateY, в астах он работал.

ИЛи он работал раньше неправильно. В любом случае, сейчас я не замечаю никаких действий после его использования.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.439
Благодарности
4.790
Баллы
625
Долго не мог сообразить в чем дело.
C++:
//G2A
player->trafoObjToWorld.PostRotateY(2.0); // не работает
player->RotateWorldY(2.0); // работает

Что-то там не так с PostRotateY, в астах он работал.

ИЛи он работал раньше неправильно. В любом случае, сейчас я не замечаю никаких действий после его использования.
Ок там все должно быть. У мен вся логика на матрицах завязана, не помню чтобы там что-то не работало. Пруф
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Gratt, может я какой-то уникальный(нет), но у меня все еще не работает. Версия Union 1.0b. Чекнул только что.
C++:
//работает
/*if (KeyPress(KEY_Q)) {
        player->RotateWorldY(-1.5f);
    }

    if (KeyPress(KEY_E)) {
        player->RotateWorldY(1.5f);
    }*/
//не работает
    if (KeyPress(KEY_Q)) {
        player->trafoObjToWorld.PostRotateY(-1.5f);
    }

    if (KeyPress(KEY_E)) {
        player->trafoObjToWorld.PostRotateY(1.5f);
    }

Ради интереса, удалил сдк и шаблон плагина, поставил чистую готику. Через менеджер скачал сдк, создал плагин. Накатил патч на готику, поставил 1.0b. Проверил все те же строчки, что указаны выше. Не работает.
 
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.147
Благодарности
2.022
Баллы
320
Там сигнатура в zAlgebra.h неправильная. Угол по значению должен передаваться, а не по ссылке.
Вот так будет работать:
C++:
    CInvoke<void(__thiscall*)(zMAT4*, float a0)> Ivk_zMAT4_PostRotateY(0x00517780, 0x00000000, IVK_DISABLED);

    void Game_Loop() {
        Ivk_zMAT4_PostRotateY(&player->trafoObjToWorld, -1.5f);
    }
 
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.147
Благодарности
2.022
Баллы
320
Еще один баг в zAlgebra.h:
C++:
    zVEC2( const zVEC2& a0 )
    {
      n[0] = a0[0];
      n[1] = a0[0];
    }

UPDATE:
C++:
    template <class T, class E>
    bool CompareI(const T& x, const E& y)
    {
        return ((string)x).CompareI((string)y);
    }
Error C2440 'type cast' : cannot convert from 'const Gothic_I_Addon::zSTRING' to 'Common::string'
С другими платформами работает.
 
Последнее редактирование:

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
А можно выпилить из фикса мыши все, кроме собственно, фикса X оси? Имеются ввиду: лок правой клавиши мыши на Г1, занятая чем-то там "Mouse X2"(одна из боковых клавиш на мыши). А может там еще что есть, это только то - что при беглом осмотре увидел.
 

akrabat114

Участник форума
Регистрация
1 Дек 2017
Сообщения
133
Благодарности
25
Баллы
190
Будет ли перенос в2.0 или АБ на юнион?
 

akrabat114

Участник форума
Регистрация
1 Дек 2017
Сообщения
133
Благодарности
25
Баллы
190
Спроси это у авторов в2 или АБ. Скорее всего да.
уже спросил и получил ответ, оказывается они ждут поддержку ogg формата для музыки. А так уже все готово.
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Проверил как работает загрузка сторонних DAT файлов в память.
Помимо DLL можно подсовывать и расширения на скрипты вообще не затрагивая оригинал.
А этот момент уже сделан? Или только в будущем планируется?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.439
Благодарности
4.790
Баллы
625
А этот момент уже сделан? Или только в будущем планируется?
Дак это делается двумя строчками. На каждый DAT файл приходится свой экземпляр класса zCParser движка. Определяешь новый объект zCParser и выбираешь необходимое действие, например LoadDAT. Все действия будут эквивалентны тем, что ты применяешь в отношении стандартного указателя на parser (Gothic.DAT). Единственное что я еще не посмотрел - это как поведет себя датник, если скормить в него сторонний .d файл и пересобрать его.
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Gratt, а что с сохранением? Вот загрузил я датник, изменил переменные, сохранился. При следующей загрузке переменные сохранят свои значения?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.439
Благодарности
4.790
Баллы
625
Gratt, а что с сохранением? Вот загрузил я датник, изменил переменные, сохранился. При следующей загрузке переменные сохранят свои значения?
Архиватором уже научился пользоваться? В момент сохранения игры похукай какую-нибудь удобную тебе пару методов Archive/Unarchive и в SaveGlobalVars/LoadGlobalVars подсунь ссылку на zCArchiver.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.439
Благодарности
4.790
Баллы
625
alexeich2019
Единственное что я еще не посмотрел - это как поведет себя датник, если скормить в него сторонний .d файл и пересобрать его.

Проверил. В датник прямо на ходу можно скормить что угодно :) Либо каждый запуск даешь ему исходный .d/.src контент, либо пересохраняешь этот несчастный .dat в другой файл. Все новое содержимое запишется и будет юзабельно. Никаких декомпиляций или исходного кода при этом иметь не нужно *right*
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Все проверялось на G2A
Как добавить статическое свойство классу? Интересует конкретно:
C++:
0x008D8368 public: static class zCCollisionObjectDef zCCollObjectProjectile::s_oCollObjClass

Посмотрел в engineNames, там их много, таких свойств. Но в Union присутствует лишь одно:
C++:
0x008D835C public: static class zCCollisionObjectDef zCCollObjectCharacter::s_oCollObjClass
Но я таки не нашел как оно инициализировано в коде, неужели достаточно просто написать строчку в коде без адреса? Или это ошибка и поле не инициализировано? В общем, я в недоумении.

К слову, попытался использовать:
C++:
zCCamera*& activeCame = zCCamera::activeCam;
// Ничего не получилось, ловлю вылет. Тогда попробовал по другому. Посмотрел что там.
zCCamera*& zCCamera::activeCam = *(zCCamera**)0x008D7F88;
// Нашел по адресу 0x008D7F88
// 0x008D7F88 public: static class zVEC3 zCCamera::activeCamPos

//0x008D7F94 public: static class zCCamera * zCCamera::activeCam
zCCamera*&    pCamera = *(zCCamera**)0x008D7F94;
//Вот так работает, в engineNames это одно и тоже, по идее.
В итоге видим, что там ошибка в адресе, в инициализации zCCamera::activeCam.
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.439
Благодарности
4.790
Баллы
625
Я уже добавил интерфейс коллизий и сами статики в обновление api. Вечером дам если надо.

Статические свойства в идеале указывать ссылочно, а ссылки определять по адресу в cpp. Примеры таких статиков смотри в classDef.cpp

Upd по второму вопросу да, это следствие слишком быстро написанного парсера. Некоторые адреса брались из других переменных, имена которых имели подстроку схожую с именем искомого объекта. Сейчас это тоже исправлено.
 
Последнее редактирование:
Сверху Снизу