Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
IMHO это уже куда-то не туда...
Если проводить аналогии с С++, то и оригинальный вариант тоже не плох:
Код:
Daedalus C++
имя файла gothic.src main.cpp
содержимое file1.d #include "file1.h" // в одном из
file2.d #include "file2.h" // этих файлов
file3.d #include "file3.h" // содержится
file4.d #include "file4.h" // ф-ия start()
void main()
{
start();
}
Т.е. в С++ тоже можно весь функционал разместить в заголовочных файлах, а единственный cpp-файл будет их просто все включать.
src-файл является аналогом cpp-файла, а d-файл - аналогом h-файла в вышеприведенной программе.
Я это все к чему: IMHO не надо стремиться все напрочь поменять, лучше по-возможности сохранять старую систему, тем более что все к ней привыкли. Предварительная декларация - вещь полезная, но не для того, чтобы избавляться от src-файлов, а для всяких фокусов типа косвенной рекурсии (функция f() вызывает функцию g(), которая вызывает функцию f() ).
Я согласен, иногда напрягает, что надо при вставке нового файла в GothicSourcer угадывать для него место среди остальных файлов в gothic.src. Ну так это можно исправить аккуратнее, например, можно заставить GothicSourcer самому находить правильную позицию для вставленного файла, исходя из того, какие функции этот файл вызывает, и какие определяет сам. Я имею в виду, можно изменить принцип работы GothicSourcer'а, но не компилятора, а GUI: сделать так, чтобы при вставке нового файла в проект никаких запросов типа "Выберите позицию для вставки" не появлялось, GothicSourcer просто сам добавит новый файл в сначала в конец gothic.src, а потом, перед первой компиляцией расставит все строки gothic.src в правильном порядке. Мне кажется, так было бы лучше. И с совместимостью все было бы ОК.
UPD: В целом, мне кажется, лучше реализуй вначале макросы, а потом, если получится, можно будет еще пообсуждать этот вопрос.
Я имею в виду, можно изменить принцип работы GothicSourcer'а, но не компилятора, а GUI: сделать так, чтобы при вставке нового файла в проект никаких запросов типа "Выберите позицию для вставки" не появлялось, GothicSourcer просто сам добавит новый файл в сначала в конец gothic.src, а потом, перед первой компиляцией расставит все строки gothic.src в правильном порядке. Мне кажется, так было бы лучше. И с совместимостью все было бы ОК.
Есть один маленький нюанс, я не знаю с чем он связан, но иногда при перемещении "стандартных" функций/файлов *.d в Gothic.src (получается когда добавляешь свою и она не может найти место, приходится перемещать стандартные), при компиляции ошибок и вниманий нет после перемещения - могут появляться необъяснимые глюки. Типа, начинаешь новую игру, играешь, все в шоколаде, все работает - попытка перейти в Яркендар - вылет на рабочий стол. Все прописано корректно. Вот как это будет отслеживаться и с чем оно связано?
Dimmel,
Боюсь, я не знаю точного ответа.
Насколько я знаю, стандартные файлы в списке gothic.src можно перемещать, в разумных пределах. Правда, не совсем понятно, зачем это делать: по идее, ты либо добавляешь свои файлы, либо редактируешь их, либо удаляешь (причем последнее делается только для самых простых файлов). Менять стандартные файлы местами в gothic.src смысла вроде бы нет. И, как кажется, куда бы ты не добавлял свои файлы (в разумных пределах, понятно - т.е. чтобы все необходимое было уже определено), глюки от этого возникнуть не должны были.
По твоему описанию можно заподозрить, что ты не начал новую игру после замены скриптов, но ты говоришь, что начал... Или что-то случилось с функцией STARTUP_AddonWorld...
Kerrax,
Я когда тестирую важные изменения всегда начинаю новую игру и чищу дампы. Это уже дурная привычка. Причем тестирую без марвина, а только наигрышем. Да, тупыми забегами по локации, часто даже без рун телепорта.
Если добавлять простейшие функции - то да, проблем нет. А если например делать как написано с очисткой инвентаря торговцев через B_ClearRuneInv(self) ЗДЕСЬ мы получаем что вызов функции B_ClearRuneInv(self) идет раньше, чем она прописана в порядке файлов в Gothic.src. Пошел нубским путем (просто хотел проверить работу функции, у меня очистка шла по другому пути) - передвинул выше ZS_MagicFreeze в списке. Скомпилировал без ошибок и проблем. Начал новую игру, ГГ появился не в башне Ксардаса как положено, а в незатекстуренном порту Хориниса. Вот как таких косяков избежать? И почему такое было?
ЗЫ, Это из последних "экспериментов" с перемещением файлов в Gothic.src, после таких косяков использую просто свои нубские функции, пусть длиннее, тупее и т.д. но прописанные прямолинейно и независимо от других.
ЗЫЫ. Есть еще одна уникальная ошибка вылета - StackOverflow при смене локации и она может быть вызвана чем угодно и когда угодно, отследить причину просто невозможно.
Dimmel, а я 2-3 дня потратил на то, чтобы перепахать все то, что надекомпилил GothicSourcer, собрал всех нпц одной гильдии в соответствующие файлы, все предметы разделил на декларацию предмета и их функции (при надевании и тд.), сделал базовые файлы...короче теперь более менее удобно, можно в любой момент сделать функцию какую тебе нужно и засунуть ее гарантированно в список без проблем...
сделать и засунуть можно, вопрос в том, как это будет в игре. Замечено, что некоторые косяки имеют эффект мины замедленного действия - сразу все шоколадно, а возвращаешься из Миненталя - висяк, а причина - хз.
Пока мы имеем структуру файлов предложенную Соурсером, и Соурсер будет собирать их обратно. И вот надо или научить его сделать это более красиво и правильно, или не учить его по причинам...невозможности, сложности и т.д.То что каждый для себя делает со структурой скриптов и как - это его проблемы и умения/желания. Изначально мы имеем скрипты оригинала Г2а декомпилированные Соурсером.
maggi1221, слушай, так это... Запили тогда попутно чтобы можно было определять "встроенные функции" тоесть.
Создал я на г2ексте функцию Npc_SetAsPlayer(var C_NPC), но сорсером ее ессно не скомпилить, тк она не где не объявляется, вот мне и нужно, чтобы можно было брать объявление встроенных функций из какогонить файла типа Externals.d.
Как идея?
А никто не подскажет ссылку на руководство по ошибкам Готик Соусера? А то они лежат на старом домене этого сайта и их не открыть. Сам столкнулся с одной ошибкой при компилировании 35.
А никто не подскажет ссылку на руководство по ошибкам Готик Соусера? А то они лежат на старом домене этого сайта и их не открыть. Сам столкнулся с одной ошибкой при компилировании 35.
Соусер у меня версии 3.13. Про ошибку такую не нашёл в соседних документах. Пишет переопределённый идентификатор: TOPIC_OUTTEACHER. Хотя я слышал, что из-за разных версий возникают ошибки, до этого я кажется работал в 3.14.
Последняя версия 3.14 используй ее, ибо с 3.13 есть гарантия нарваться на кучу подарков в виде исчезновения целых кусков кода из файлов при компилляции и декомпилляции.
Сурсер качаем отсюда (первый линк): https://worldofplayers.ru/node/565
Пишет переопределённый идентификатор: TOPIC_OUTTEACHER.
Это означает что данная переменная уже где-то используется ранее, и была прописана/декларирована повторно, ищем ее дубликат и удаляем его в своем проекте.
Вообще, все ошибки расписаны давно, читать только нужно, вот твоя:
8. Redefined identifier: - повторная декларация переменной (данное имя задекларировано в скриптах более одного раза).
Зы, При переходе на версию 3.14 проверь(точнее сверь, его с немецким оригиналаом) последний файл который прописан в срц, на целостность кода, ибо из него выпиливались куски кода, если я правильно помню.
Проблема следующего характера.
Сижу я значит, перевожу скрипты gothic.dat, не декомпилируя предварительно, всё идет успешно. Переодически, кстати, делаю резервные копии, потому что практически всегда, когда я пытаюсь напечатать точку, программа завершает свою работу. Но и не в этом вся проблема! А в том, что когда я сохранил датник и перезагрузил комп, и открыл этот датник, чтобы продолжить перевод - что я увидел? Одну, сплошную строку NUL, и больше ничего. Как бы, вообще ничего. При том, что файл весит столько же, сколько и его копии, выполненные часами ранее. Я в ужасе - 6 часов перевода коту под хвост? Что делать, помогите...
Жан-Жак Грущу, Научится правильно работать со скриптами их компиляцией и декомпиляцией. Если не можешь сам попроси других, может кто поможет.
Всю справку по работе с Сурсером смотри на сайте моды модостроение, или в корне установленной программы файлы Ридми и т.д.
Зы, Перевод может осуществляется только в файлах с расширением *.d, т.е. декомпилированных.
Когда захочу, тогда и декомпилирую, в чем проблема? Мод над каторым я работаю не поддаеться декомпиляции на соусе, а спейсер я сейчас не хочу устанавливать. Где смотреть статьи по скриптологии и возможные ошибки я знаю. Кстати, моей ошибки нет ни в редми, ни на сайте.
Конкретный ответ на конкретный вопрос того, как это случилось и возможен ли факт восстановления кто-нибудь может дать?
Жан-Жак Грущу, Проблема в том что кто-то не внимательно читает что ему пишут.
Со всеми вопросами по компиляции/декомпиляции скриптов пишем в тему скриптов.
Здесь обсуждается только программа и ее работа.
MaGoth, А я и обсуждаю здесь только программу и её работу. Я обсуждал написание скриптов? Я жаловался, почему такая-сякая программа не хочет декомпелировать мод? Нет! Я спросил как решить проблему восстановления файла, сохранение которого реализует данная программа. В данном случее сохранение произошло неккоректно, либо произошло нечто иное. Поэтому я спрашиваю (в особенности это касаеться авторов программы), в чем проблема?
И да, Вы правы, проблема именно в том, что вы сказали. Я не хочу вступать в распри с администрацией, но если вам нечего сказать по существу, лучше промолчать, не? Политика на форуме именно такая.
Жан-Жак Грущу,
1. Я тебе уже писал раньше в своих ответах: что скрипты этого мода Сурсером декомпилировать нельзя. Что из этого тебе непонятно?
2. Будешь продолжать флудить в теме по этому поводу последуют банные процедуры. Коли тебе лень читать, мне лень отвечать по десять раз.
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.