06.04.2020, 13:31
07.04.2020, 08:41
igrik, да ваще, везде заговор!! От нас всё скрывают... от меня уж точно, как всегда =)
Опять (снова, очередной, внезапный....) крит вылетел с просмотром свитка при навыке Волшебство. В этот раз на обычные свитки заклинаний, раньше такого точно не было. Данный краш связан как-то с модом "Z-Трансендентые комбо артефакты" - без него играю по сети, всё отлично. Решил в одиночную поиграть, создаю карту и критует, смотрю если или нажимаю на свиток. Даже если отключить скрипт, F12 прожать, save/alt+F4/load - все равно. Что-то на уровне создания ставится, что отключение и перезагрузка скриптов не влияет.
https://dropmefiles.com/pv1ot
Может кто-нибудь посмотреть приложенный архив Debug'a, это чья проблема - Z-трансенденты комбо или всё тот же многострадальный 78 wog - wogify.erm? Раньше как-то без всех выше-описанных ранее махинаций с 78 wogify, мод Zur'a13 такого не выдавал.
К кому в итоге надо будет идти на поклон, чтобы исправить?)
Опять (снова, очередной, внезапный....) крит вылетел с просмотром свитка при навыке Волшебство. В этот раз на обычные свитки заклинаний, раньше такого точно не было. Данный краш связан как-то с модом "Z-Трансендентые комбо артефакты" - без него играю по сети, всё отлично. Решил в одиночную поиграть, создаю карту и критует, смотрю если или нажимаю на свиток. Даже если отключить скрипт, F12 прожать, save/alt+F4/load - все равно. Что-то на уровне создания ставится, что отключение и перезагрузка скриптов не влияет.
https://dropmefiles.com/pv1ot
Может кто-нибудь посмотреть приложенный архив Debug'a, это чья проблема - Z-трансенденты комбо или всё тот же многострадальный 78 wog - wogify.erm? Раньше как-то без всех выше-описанных ранее махинаций с 78 wogify, мод Zur'a13 такого не выдавал.
К кому в итоге надо будет идти на поклон, чтобы исправить?)
07.04.2020, 09:10
Night, у меня с твоим сэйвом вылета нет.
У меня вот так, что тоже в общем-то непорядок:

Ничего не обещаю, но посмотрю.
Так, в свитке несуществующее заклинание №99.
Остается выяснить, кто его туда поместил. Подозреваю, что все та же $spell$.
Похоже, трансцендентные артефакты здесь ни при чем.
В общем, засовывает заклинание в свиток скорее всего опять 53 wog - map options.erm, но не пойму, где здесь ошибка:
$spell$ возвращает в y-99 "99", если введены некорректные начальные параметры x1-x6.
Значит, с y-96 что-то не так. (y-96<0 или y-96>5)
А в y-96 !!SS:L в FU7779 возвращает уровень заклинания.
А номер заклинания берется отсюда: !!ARv2/v3/v4:V?y1; [Store spell number in y1]
Вроде здесь все ровно. Не пойму, где ошибка.
У меня вот так, что тоже в общем-то непорядок:

Ничего не обещаю, но посмотрю.
Так, в свитке несуществующее заклинание №99.
Остается выяснить, кто его туда поместил. Подозреваю, что все та же $spell$.
Похоже, трансцендентные артефакты здесь ни при чем.
В общем, засовывает заклинание в свиток скорее всего опять 53 wog - map options.erm, но не пойму, где здесь ошибка:
$spell$ возвращает в y-99 "99", если введены некорректные начальные параметры x1-x6.
Значит, с y-96 что-то не так. (y-96<0 или y-96>5)
А в y-96 !!SS:L в FU7779 возвращает уровень заклинания.
А номер заклинания берется отсюда: !!ARv2/v3/v4:V?y1; [Store spell number in y1]
Вроде здесь все ровно. Не пойму, где ошибка.
07.04.2020, 09:38
(07.04.2020 09:10)wessonsm Wrote: [ -> ]Подозреваю, что все та же $spell$.
Может ее уже убрать нафиг? (Click to View)
07.04.2020, 09:57
(07.04.2020 09:38)Algor Wrote: [ -> ](07.04.2020 09:10)wessonsm Wrote: [ -> ]Подозреваю, что все та же $spell$.
[spoiler=Может ее уже убрать нафиг?]
Algor, я бы с удовольствием, мне она тоже не нравится)
Выше я приводил список из 8 скриптов, где эта $spell$ используется.
Но босс здесь igrik, ему решать.
Я бы не только $spell$, а вообще весь скрипт 78 wog - wogify.erm переписал)
07.04.2020, 10:10
(07.04.2020 09:57)wessonsm Wrote: [ -> ]Но босс здесь igrik, ему решать.Не босс, а куратор. Предлагай свою реализацию, если она лучше имеющейся, почему не заменить?
Босс сказал, что священных коров больше нет

07.04.2020, 10:22
Algor, я думаю (99%), что вылет у Night не из-за $spell$, а из-за скрипта, который ее вызывает (скорее всего 53 wog - map options.erm).
А $spell$ при всех её недостатках, как ни крути, делает свое дело - она возвращает 99, если введены некорректные начальные параметры.
Откуда, блин, берется некорректный уровень заклинания?
Может добавить проверку на y-99=99?
Идея.
Может это из-за x6, который пропущен?
Раньше он автоматически считался 0, но сейчас вроде надо все инициализировать?
Значит, надо исправить
на:
и в других местах тоже.
А вдруг поможет?
x6 тоже проверяется в $spell$, и если <0 или >9, параметр считается некорректным и функция возвращает 99.
А $spell$ при всех её недостатках, как ни крути, делает свое дело - она возвращает 99, если введены некорректные начальные параметры.
Откуда, блин, берется некорректный уровень заклинания?
Может добавить проверку на y-99=99?
Идея.
Может это из-за x6, который пропущен?
Раньше он автоматически считался 0, но сейчас вроде надо все инициализировать?
Значит, надо исправить
на:
и в других местах тоже.
А вдруг поможет?
x6 тоже проверяется в $spell$, и если <0 или >9, параметр считается некорректным и функция возвращает 99.
07.04.2020, 11:02
Пока я предлагаю внести такие исправления в 53 wog - map options.erm:
https://dropmefiles.com/e73pj
С таким вариантом скрипта есть небольшой риск, что в святынях, свитках и у ученых могут остаться забаненные заклинания, но хотя бы вылетов не будет.
Кто скачал скрипт по ссылке раньше, перекачайте, я там накосячил был, сейчас исправил.
https://dropmefiles.com/e73pj
С таким вариантом скрипта есть небольшой риск, что в святынях, свитках и у ученых могут остаться забаненные заклинания, но хотя бы вылетов не будет.
Кто скачал скрипт по ссылке раньше, перекачайте, я там накосячил был, сейчас исправил.
07.04.2020, 13:05
(07.04.2020 10:22)wessonsm Wrote: [ -> ]x6 тоже проверяется в $spell$, и если <0 или >9, параметр считается некорректным и функция возвращает 99.Самый важный вопрос, из-за которого пошел весь этот сыр-бор и вылеты:
Что должна возвращать функция, если она не может найти необходимое заклинание?
1. Должна ли она искать заново спелл по заданным параметрам?
2. И если она НЕ нашла спелл даже после n-нного кол-ва проходов, что должна возвращать функция?
Именно в второй части вопроса и кроются решение проблемы данных вылетов.
Ни один из скриптов, которые используют функцию $spell$ НЕ проверяет на корректность!! номера спелла.
Что касается самой функции $spell$: возвращаемый номер 99 не может быть валидным возвращаемым числом (привет вылеты). Возвращать -1 тоже нельзя (привет вылеты).
Ответив на этот вопрос очень легко починить функцию.
Я лично за то, что при невозможности найти необходимый спелл, функция $spell$ возвращала Магическую стрелу (id:15). Вот и всё решение проблемы.
Algor, твоя функция несомненно лучше (и тебе, как опытному ERM-скриптеру я "доверяю" в 100500 раз больше, чем любому из WoG-Team авторов написавших WoG скрипты), но она использует новый ERM функционал (ZVSE2, не так ли?!), и я пока что при всём своём желании не могу её разместить в базовой поставке скриптов.
07.04.2020, 13:22
(07.04.2020 13:05)igrik Wrote: [ -> ]Самый важный вопрос, из-за которого пошел весь этот сыр-бор и вылеты:
Что должна возвращать функция, если она не может найти необходимое заклинание?
1. Должна ли она искать заново спелл по заданным параметрам?
2. И если она НЕ нашла спелл даже после n-нного кол-ва проходов, что должна возвращать функция?
Именно в второй части вопроса и кроются решение проблемы данных вылетов.
Ни один из скриптов, которые используют функцию $spell$ НЕ проверяет на корректность!! номера спелла.
В настоящее время $spell$ возвращает либо № сгенерированного заклинания, либо -1, если за 500 проходов не найдено заклинание, отвечающее заданным условиям, либо 99, если заданы некорректные параметры при вызове функции.
В фиксе для 53 wog - map options, который я выложил выше, я в числе прочего как раз добавил проверку на номер сгенерированного заклинания &y-99>-1/y-99<70
07.04.2020, 13:27
(07.04.2020 13:22)wessonsm Wrote: [ -> ]В настоящее время $spell$ возвращает либо № сгенерированного заклинания, либо -1, если за 500 проходов не найдено заклинание, отвечающее заданным условиям, либо 99, если заданы некорректные параметры вызова функции.Именно. Поэтому и вылеты. Но ты добавил проверку всего в один скрипт. И если следовать твоей логике - значит нужно дописать данные проверки и в другие. скрипты..
В фиксе для 53 wog - map options, который я выложил выше, я в числе прочего как раз добавил проверку на номер сгенерированного заклинания &y-99>-1/y-99<70
Но это не верный путь, ИМХО. Правильный: придумать правильную логику самой функции $spell$ и всегда возвращать корректное значение.
Про дописывание шестого параметра в вызов $spell$ я согласен, и уже проверил все вызовы на данную корректность. Да, шестого параметра не было только во всех 3-4 вызовах в 53 wog - map options. Я их уже дописал.
PS: если у тебя есть желание перписать весь скрипт 78 - перепиши. Но тут есть пара нюансов:
1. Нам всем нужно будет протестировать его на баги
2. Не упадёт ли функционал существующих скриптов от этого
3. Не уменьшится ли функционал существующих скриптов от этого.
Если все три данные пункта будут выполнены и наше сообщество будет ЗА замену скрипта - мы заменим скрипт в базовой поставке скриптов.
Лично я не вижу ни каких препятствий для этого
07.04.2020, 13:33
Возвращать "магическую стрелу" вместо 99 или -1 - очень хорошая идея имхо.
Я за.
Я за.
07.04.2020, 15:17
Обновление.
78 wog - wogify
1. Исправлен возвращаемый результат функции $spell$, который при неверных условиях создавал ряд вылетов из игры.
Сейчас при неверных параметрах функции, последняя будет всегда возвращать корректный номер заклинания: Магическая стрела (15) или Видения (2) в зависимости от запрашиваемого типа заклинания (x3 = type: 0=any, 1=adventure, 2=combat).
2. Правильно описаны биты школ магии (x4 = element: 0=any, 1=air, 2=fire, 4=water, 8=earth) согласно ERM-Help и функция с ними корректно работает
53 wog - map options
3. Добавлены отсутствующие параметры x6 в вызовы функции $spell$
PS: только обнаружил, что GitHub портит файлы ERT. Но это в нашем случае некритично, потому что ссылки на скачивание мода ведут на архивы 7z, а внутри них всё хорошо со всеми скриптовыми файлами
78 wog - wogify
1. Исправлен возвращаемый результат функции $spell$, который при неверных условиях создавал ряд вылетов из игры.
Сейчас при неверных параметрах функции, последняя будет всегда возвращать корректный номер заклинания: Магическая стрела (15) или Видения (2) в зависимости от запрашиваемого типа заклинания (x3 = type: 0=any, 1=adventure, 2=combat).
2. Правильно описаны биты школ магии (x4 = element: 0=any, 1=air, 2=fire, 4=water, 8=earth) согласно ERM-Help и функция с ними корректно работает
53 wog - map options
3. Добавлены отсутствующие параметры x6 в вызовы функции $spell$
PS: только обнаружил, что GitHub портит файлы ERT. Но это в нашем случае некритично, потому что ссылки на скачивание мода ведут на архивы 7z, а внутри них всё хорошо со всеми скриптовыми файлами
07.04.2020, 15:52
igrik, нужно для репозитория локального первым делом отключить autocrlf.
git config core.autocrlf false
git config core.autocrlf false
07.04.2020, 16:06
igrik, в 53 wog еще нужно обязательно добавить вот эту правку:
http://wforum.heroes35.net/showthread.ph...#pid109893
Она нужна потому, что !!SC:L для ученого возвращает не номер заклинания, а номер заклинания + 1024.
Если этого не сделать, потом при проверке ученого отнимается 1024 и получается отрицательный номер заклинания (вылет).
Только я сомневаюсь, как лучше:
!!VRy-99:+1024; [прибавить 1024]
или
!!VRy-99:|1024; [установить бит 1024]
Вроде результат один и тот же, но может есть нюансы?
http://wforum.heroes35.net/showthread.ph...#pid109893
Она нужна потому, что !!SC:L для ученого возвращает не номер заклинания, а номер заклинания + 1024.
Если этого не сделать, потом при проверке ученого отнимается 1024 и получается отрицательный номер заклинания (вылет).
Только я сомневаюсь, как лучше:
!!VRy-99:+1024; [прибавить 1024]
или
!!VRy-99:|1024; [установить бит 1024]
Вроде результат один и тот же, но может есть нюансы?