Current time: 28.01.2023, 15:37 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Мод "WoG Scripts"
Author Message
igrik Offline
Administrators

Posts: 2684
Post: #91

А Berserker у нас, оказывается, ещё тот шутник 96-copy


game bug fixes extended.dll || My Plugins
06.04.2020 13:31
Visit this user's website Find all posts by this user Quote this message in a reply
Night Offline

Posts: 462
Post: #92

igrik, да ваще, везде заговор!! От нас всё скрывают... от меня уж точно, как всегда =)


Опять (снова, очередной, внезапный....) крит вылетел с просмотром свитка при навыке Волшебство. В этот раз на обычные свитки заклинаний, раньше такого точно не было. Данный краш связан как-то с модом "Z-Трансендентые комбо артефакты" - без него играю по сети, всё отлично. Решил в одиночную поиграть, создаю карту и критует, смотрю если или нажимаю на свиток. Даже если отключить скрипт, F12 прожать, save/alt+F4/load - все равно. Что-то на уровне создания ставится, что отключение и перезагрузка скриптов не влияет.
https://dropmefiles.com/pv1ot

Может кто-нибудь посмотреть приложенный архив Debug'a, это чья проблема - Z-трансенденты комбо или всё тот же многострадальный 78 wog - wogify.erm? Раньше как-то без всех выше-описанных ранее махинаций с 78 wogify, мод Zur'a13 такого не выдавал.

   К кому в итоге надо будет идти на поклон, чтобы исправить?)
(This post was last modified: 07.04.2020 08:43 by Night.)
07.04.2020 08:41
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 788
Post: #93

Night, у меня с твоим сэйвом вылета нет.
У меня вот так, что тоже в общем-то непорядок:

Image: fc4cc54631e2.png

Ничего не обещаю, но посмотрю.

Так, в свитке несуществующее заклинание №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]

Вроде здесь все ровно. Не пойму, где ошибка.
(This post was last modified: 07.04.2020 10:12 by wessonsm.)
07.04.2020 09:10
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3821
Post: #94

(07.04.2020 09:10)wessonsm Wrote:  Подозреваю, что все та же $spell$.

Может ее уже убрать нафиг? (Click to View)


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
07.04.2020 09:38
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 788
Post: #95

(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 переписал)
(This post was last modified: 07.04.2020 10:09 by wessonsm.)
07.04.2020 09:57
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3821
Post: #96

(07.04.2020 09:57)wessonsm Wrote:  Но босс здесь igrik, ему решать.
Не босс, а куратор. Предлагай свою реализацию, если она лучше имеющейся, почему не заменить?

Босс сказал, что священных коров больше нет 96-copy


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
07.04.2020 10:10
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 788
Post: #97

Algor, я думаю (99%), что вылет у Night не из-за $spell$, а из-за скрипта, который ее вызывает (скорее всего 53 wog - map options.erm).
А $spell$ при всех её недостатках, как ни крути, делает свое дело - она возвращает 99, если введены некорректные начальные параметры.
Откуда, блин, берется некорректный уровень заклинания?
Может добавить проверку на y-99=99?
Идея.
Может это из-за x6, который пропущен?
Раньше он автоматически считался 0, но сейчас вроде надо все инициализировать?

Значит, надо исправить
на:
и в других местах тоже.
А вдруг поможет?
x6 тоже проверяется в $spell$, и если <0 или >9, параметр считается некорректным и функция возвращает 99.
(This post was last modified: 07.04.2020 10:45 by wessonsm.)
07.04.2020 10:22
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 788
Post: #98

Пока я предлагаю внести такие исправления в 53 wog - map options.erm:
https://dropmefiles.com/e73pj
С таким вариантом скрипта есть небольшой риск, что в святынях, свитках и у ученых могут остаться забаненные заклинания, но хотя бы вылетов не будет.

Кто скачал скрипт по ссылке раньше, перекачайте, я там накосячил был, сейчас исправил.
(This post was last modified: 07.04.2020 11:36 by wessonsm.)
07.04.2020 11:02
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2684
Post: #99

(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, не так ли?!), и я пока что при всём своём желании не могу её разместить в базовой поставке скриптов.


game bug fixes extended.dll || My Plugins
07.04.2020 13:05
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 788
Post: #100

(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
(This post was last modified: 07.04.2020 13:27 by wessonsm.)
07.04.2020 13:22
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2684
Post: #101

(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. Не уменьшится ли функционал существующих скриптов от этого.

Если все три данные пункта будут выполнены и наше сообщество будет ЗА замену скрипта - мы заменим скрипт в базовой поставке скриптов.
Лично я не вижу ни каких препятствий для этого


game bug fixes extended.dll || My Plugins
07.04.2020 13:27
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 788
Post: #102

Возвращать "магическую стрелу" вместо 99 или -1 - очень хорошая идея имхо.
Я за.
07.04.2020 13:33
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2684
Post: #103

Обновление.

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, а внутри них всё хорошо со всеми скриптовыми файлами


game bug fixes extended.dll || My Plugins
07.04.2020 15:17
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15923
Post: #104

igrik, нужно для репозитория локального первым делом отключить autocrlf.
git config core.autocrlf false


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
07.04.2020 15:52
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 788
Post: #105

igrik, в 53 wog еще нужно обязательно добавить вот эту правку:
http://wforum.heroes35.net/showthread.ph...#pid109893
Она нужна потому, что !!SC:L для ученого возвращает не номер заклинания, а номер заклинания + 1024.
Если этого не сделать, потом при проверке ученого отнимается 1024 и получается отрицательный номер заклинания (вылет).
Только я сомневаюсь, как лучше:
!!VRy-99:+1024; [прибавить 1024]
или
!!VRy-99:|1024; [установить бит 1024]
Вроде результат один и тот же, но может есть нюансы?
(This post was last modified: 07.04.2020 16:22 by wessonsm.)
07.04.2020 16:06
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2023 MyBB Group