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