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

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

Работа над ошибками

Статус
В этой теме нельзя размещать новые ответы.

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
  • Первое сообщение
  • #1
Сообщайте о найденных ошибках GEngine, и я постараюсь их исправить.
Разумеется, чтобы я мог исправить ошибку, сообщение о ней должно быть вразумительным. Очень желательно, чтобы ошибка была воспроизводимой, т.е. чтобы вы могли описать последовательность действий, которая с большой вероятностью приводит к ошибке.

Для выявления момента, когда происходит ошибка, полезно использовать совместимость сохраненок между GothicMod.exe v1.08k и GEngine. Т.е. сохраняемся перед ошибкой, выходим, запускаем оригинальный экзешник, загружаемся, проверяем. Если найдено существенное отличие между оригинальным экзешником и GEngine не в пользу последнего, то ошибка детектирована.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
В соседней теме упоминался оверлей, поэтому вспомнил баг с ним. В скрипте Лестера есть несколько аналогичных фрагментов:

func void PC_Psionic_SMITH_Info()
{
AI_Output(self,other,"PC_Psionic_SMITH_Info_05_01"); //Это кузница. Я могу ждать тебя не больше часа, потом мне придется уйти.
LesterGuide = 0;
Npc_ExchangeRoutine(self,"START");
AI_StopProcessInfos(self);
TA_BeginOverlay(self);
TA_Stay(0,0,1,0,"PSI_SMITH_IN");
TA_EndOverlay(self);

};

Предполагается, что Лестер подождёт игровой час и уйдёт к своему постоянному месту. Но этого не происходит, Лестер не выходит из режима ожидания.

То ли оверлей в данном примере используются не верно, то ли имеет место недоработка оверлея. *???*
 

yurkech

Участник форума
Регистрация
19 Янв 2010
Сообщения
2.005
Благодарности
450
Баллы
280
В версии 1.18.1 цвет пыли из под ног и дыма более реальный- белый.В версии 1.18.2 возврат к оригиналу- неестественный зеленый.
 

Вложения

  • GEngine 2012-12-03 19-25-47-23.JPG
    GEngine 2012-12-03 19-25-47-23.JPG
    75,8 KB · Просмотры: 268
  • GEngine 2012-12-03 19-22-15-73.JPG
    GEngine 2012-12-03 19-22-15-73.JPG
    82 KB · Просмотры: 259

FIRE DRAGON

★★★★★★★★★
Супермодератор
Регистрация
5 Ноя 2012
Сообщения
3.949
Благодарности
5.672
Баллы
1.615
При нажатии кнопок tab + alt то есть сворачивании окна, игра вылетает=(...
Можно ли это как то исправить?
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
ElderGamer, пожалуйста проверь, работает ли похожий оверлей у Стоуна (условие - ГГ попросил его усилить доспех из магической руды):
func void DIA_GRD_219_Stone_Exit_Info()
{
var C_Npc Stone;
if(Npc_KnowsInfo(hero,DIA_GRD_219_Stone4))
{
AI_StopProcessInfos(self);
Stone = Hlp_GetNpc(GRD_219_Stone);
TA_BeginOverlay(Stone);
TA_Min(Stone,0,0,0,5,ZS_Position,"OCC_MERCS_HALLWAY_BACK");
TA_Min(Stone,0,5,0,10,ZS_Position,"OCC_MERCS_ENTRANCE");
TA_Min(Stone,0,10,0,15,ZS_Position,"OCC_SHADOWS_CORNER");
TA_Min(Stone,0,15,0,20,ZS_Position,"OCC_STABLE_ENTRANCE");
TA_Min(Stone,0,20,72,0,ZS_Position,"OCC_STABLE_LEFT_FRONT");
TA_EndOverlay(Stone);

AI_Output(self,other,"Info_EXIT_06_02"); //Увидимся.
AI_StopProcessInfos(self);
}
else
{
AI_Output(self,other,"Info_EXIT_06_03"); //Увидимся.
AI_StopProcessInfos(self);
};
};
Возможно, что в TA функциях нужно указывать не относительное, а абсолютное время (в часах и минутах). Во всяком случае, в daily routine всегда указывается абсолютное время, например, вот расписание патрулирования СЛ Шакалом:
func void Rtn_start_201()
{
TA_Guard(6,0,7,0,"OCR_CAMPFIRE_F_1");
TA_Guard(7,0,8,0,"OCR_OUTSIDE_HUT_42");
TA_Guard(8,0,9,0,"OCR_CAMPFIRE_F_1");
TA_Guard(9,0,10,0,"OCR_NORTHGATE_RAMP_BELOW");
TA_Guard(10,0,11,0,"OCR_CAMPFIRE_F_1");
TA_Guard(11,0,12,0,"OCR_OUTSIDE_HUT_42");
TA_Guard(12,0,13,0,"OCR_CAMPFIRE_F_1");
TA_Guard(13,0,14,0,"OCR_NORTHGATE_RAMP_BELOW");
TA_Guard(14,0,15,0,"OCR_CAMPFIRE_F_1");
TA_Guard(15,0,16,0,"OCR_OUTSIDE_HUT_42");
TA_Guard(16,0,17,0,"OCR_CAMPFIRE_F_1");
TA_Guard(17,0,18,0,"OCR_NORTHGATE_RAMP_BELOW");
TA_Guard(18,0,19,0,"OCR_CAMPFIRE_F_1");
TA_Guard(19,0,20,0,"OCR_OUTSIDE_HUT_42");
TA_Guard(20,0,21,0,"OCR_CAMPFIRE_F_1");
TA_Guard(21,0,22,0,"OCR_NORTHGATE_RAMP_BELOW");
TA_Guard(22,0,23,0,"OCR_CAMPFIRE_F_1");
TA_Guard(23,0,0,0,"OCR_OUTSIDE_HUT_42");
TA_Guard(0,0,1,0,"OCR_CAMPFIRE_F_1");
TA_Guard(1,0,2,0,"OCR_NORTHGATE_RAMP_BELOW");
TA_Guard(2,0,3,0,"OCR_CAMPFIRE_F_1");
TA_Guard(3,0,4,0,"OCR_OUTSIDE_HUT_42");
TA_Guard(4,0,5,0,"OCR_CAMPFIRE_F_1");
TA_Guard(5,0,6,0,"OCR_NORTHGATE_RAMP_BELOW");
};

К сожалению, в G1 и G2 нет функций Wld_GetHour(), Wld_GetMinute() и Wld_GetTime(), но здесь можно найти их реализацию через функцию Wld_IsTime().
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
ElderGamer, пожалуйста проверь, работает ли похожий оверлей у Стоуна (условие - ГГ попросил его усилить доспех из магической руды)

Стоуна не стал проверять, поленился искать подходящую сохранёнку. Я этот оверлей у него вообще заблокировал в мод-фиксе, не смог уразуметь, в чём заключается логика столь странного его поведения. Зато попробовал тот же самый способ организации оверлея применить в скрипте Лестера. Не помогло, Лестер так же не выходит из режима ожидания. Вывести его из этого состояния может обращение к нему. Тогда он "вспоминает", что у него есть распорядок дня. Это работает и в оригинале, и в эксперименте.

Кстати, в чём то схожая проблема была с рудокопом Дасти, который никак не хотел выходить из режима следования по приходу к Тондралу. В оригинале с ним нужно поговорить ни о чём, чтобы он перешёл к новому распорядку. Проблема, если не путаю, решилась после уменьшения временнЫх задержек в алгоритме следования за ГГ.

А по поводу абсолютного времени в оверлее... не знаю... мне кажется, это противоречит самой идее оверлея. *???* Есть ли примеры использования оверлеев в скриптах Г2а? Как ОНО там организовано?
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
ElderGamer, я использовал оверлеи в Саге. Работают, как можно догадаться. *flowers*
 

Ur-tRall

Участник форума
Регистрация
16 Май 2009
Сообщения
4.100
Благодарности
2.123
Баллы
475
Лично у меня возникали в Готике 1 странности с Лестером. Когда я приходил с ним на какую либо точку, он там стоял и ждал. Ни разу не было такого, чтобы он самостоятельно уходил. Но стоит Лестера оставить в таком положении и скрыться с зоны его видимости, как он возвращался к воротам. И замечу, что в игре есть одна старнность при команде, как пройти к воротам Лагеря. Он уже не бежит к ним, а отправляется самостоятельно пешком. Быть может изначально было задумано, чтобы команда действовала примерно таким образом, но вышла ошибка? И может быть Лестер сказал про час времени, а сам реагирует на зону видимости? Не успел проверить, что стало в ДжиЭнджине, но думаю подобная проблема осталась.
 

FIRE DRAGON

★★★★★★★★★
Супермодератор
Регистрация
5 Ноя 2012
Сообщения
3.949
Благодарности
5.672
Баллы
1.615
Когда ты с ним пришёл к месту назначения, лучше ему сказать иди к воротам лагеря, он сам пешком пойдёт, это ещё с оригинала осталось.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
ElderGamer, я использовал оверлеи в Саге. Работают, как можно догадаться. *flowers*

Можешь привести примеры использования оверлеев в Саге? А то из-за использования различных расширений её скрипты фиг декомпилируешь без ошибок.
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
func void dia_visp_iagree_dress()
{
....
TA_BeginOverlay(Draks);
TA_Min(Draks,0,0,23,0,ZS_DS_LaughAt_GG,"OM_LEVEL_01_BAG_SLAVE_STAY_02");
TA_Min(Draks,23,0,72,0,ZS_DS_LaughAt_GG,"OM_LEVEL_01_BAG_SLAVE_STAY_02");
TA_EndOverlay(Draks);
...
};


func void dia_visp_Attack_Kill()
{
...
TA_RemoveOverlay(Draks);
...
};
 

FIRE DRAGON

★★★★★★★★★
Супермодератор
Регистрация
5 Ноя 2012
Сообщения
3.949
Благодарности
5.672
Баллы
1.615
А на мой предпоследний пост как я понял, никто не собирается отвечать?:-\
 

yurkech

Участник форума
Регистрация
19 Янв 2010
Сообщения
2.005
Благодарности
450
Баллы
280
А на мой последний пост как я понял, никто не собирается отвечать?:-\
FIRE DRAGON, ты указал на ошибку ,и она наверняка принята к сведению,возможно в данный момент решения нет,поэтому стоит подождать будущих обновлений GE,в которых эта ошибка будет исправлена.
 

OneMaxs

Участник форума
Регистрация
28 Май 2011
Сообщения
89
Благодарности
0
Баллы
155
Нет возможности проверить мод, поэтому один вопрос. Был такой баг: сохраняешься во время боя с монстрами, загружаешь эту запись, монстры просто уходят на свои законные места, в это время можно спокойно наносить удары сзади. Исправлен ли этот баг?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Поэкспериментировал и не обнаружил этого ни в оригинале, ни в GE. Состояние атаки у монстров, конечно, после загрузки сохранения сбрасывается. Но, поскольку расстояние до ГГ соответствует расстоянию проявления агрессии, монстры снова переходят к атаке, либо сразу, либо после обычного предупреждения. О том, что они перестают реагировать на ГГ, речи не идёт. :)
 

OneMaxs

Участник форума
Регистрация
28 Май 2011
Сообщения
89
Благодарности
0
Баллы
155
Поэкспериментировал и не обнаружил этого ни в оригинале, ни в GE. Состояние атаки у монстров, конечно, после загрузки сохранения сбрасывается. Но, поскольку расстояние до ГГ соответствует расстоянию проявления агрессии, монстры снова переходят к атаке, либо сразу, либо после обычного предупреждения. О том, что они перестают реагировать на ГГ, речи не идёт. :)

Оригинал от снежков или руссомбита? Я впервые познакомился с этим багом именно в чистой руссомбитовской версии. Реакция монстров на ГГ постостью изчезала, независимо от расстояния, если не нанести удары снова.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Версия от Снежков. Руссобитки не имею, проверить не могу. Но даже, если это баг там имеется, в GE он исправлен. :)
 

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
А на мой предпоследний пост как я понял, никто не собирается отвечать?:-\

Писал уже про это. Исправить полностью сложно, и вдобавок явно есть задачи поактульнее. Если тебе необходимо часто переключаться между окнами, запускай игру в оконном режиме, так она гораздо лучше переносит Alt-Tab. Но даже если игра запущена в оконном режиме, то при нажатии Alt-Tab могут быть проблемы, если ты переключаешься в приложение, активно использующее текстуры - например, в другую игру или проигрыватель видео.
 

FIRE DRAGON

★★★★★★★★★
Супермодератор
Регистрация
5 Ноя 2012
Сообщения
3.949
Благодарности
5.672
Баллы
1.615
:)Ясно, спасибо за совет*flowers*
 

DenZanuda


Архивариус
Регистрация
4 Ноя 2011
Сообщения
941
Благодарности
476
Баллы
245
столкнулся с таким багом:

если бежать с активированной руной в руке - самопроизвольно в несколько раз увеличивается чувствительность стрелочек (бегаю с клавиатуры, управление в стиле г1) и иногда достаточно одного короткого нажатия вправо или влево, чтоб герой поворачивался сразу на 180 градусов.

при "дезактивации" магии управление возвращается к нормальной чувствительности.
 

Ur-tRall

Участник форума
Регистрация
16 Май 2009
Сообщения
4.100
Благодарности
2.123
Баллы
475
Тоже с такой проблемой столкнулся. что и у Дена Зануды. В руках держал руну, а потом проверил и на обычном заклинании. Опробовал телекинез в Диккурике. Вроде с ним было всё в порядке. Хотя нажимал на стрелочки влево и вправо, а предмет в сторону не двигался. Возможно поменяли кнопку.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу