тогда, может, сработает pcall? pcall (f, arg1, ···) Вызывает функцию f с данными параметрами в защищенном режиме (protected mode). Это значит, что при возникновении любой ошибки внутри функции f она дальше не передается; напротив, pcall перехватывает ошибку и возвращает статус.
Мои карты: Town Готовится:Чума (40%), Сосиска(42%), Война Грааля
тогда, может, сработает pcall? pcall (f, arg1, ···) Вызывает функцию f с данными параметрами в защищенном режиме (protected mode). Это значит, что при возникновении любой ошибки внутри функции f она дальше не передается; напротив, pcall перехватывает ошибку и возвращает статус.
Да, он написал. Но это расширение для языка, а не встроенная конструкция, и оно не для внедрения в игру. Версия lua в игре не 5.1, а 4.0. Разработчики убрали почти все встроенные функции.
Нет. Много потоков получается одновременных. К тому же на каждую даже стандартную функцию нужна эта обходилка. Да и даже в самой простой ситуации приходится перед разрабовскими функциями писать много условий, чтобы те в ошибку не улетели.
Неужели нет никаких даже обработок исключений хотя бы. Самому чтоле писать))
Нет. Много потоков получается одновременных. К тому же на каждую даже стандартную функцию нужна эта обходилка. Да и даже в самой простой ситуации приходится перед разрабовскими функциями писать много условий, чтобы те в ошибку не улетели.
Неужели нет никаких даже обработок исключений хотя бы. Самому чтоле писать))
Потоки начинаются и заканчиваются... Что, надо, чтобы все-все функции работали без ошибок вне зависимости от того, что передать в них в качестве параметров? Что эти обработки исключений должны делать?
Потоки начинаются и заканчиваются... Что, надо, чтобы все-все функции работали без ошибок вне зависимости от того, что передать в них в качестве параметров? Что эти обработки исключений должны делать?
Для тестовой базы должны быть бесконечные потоки. Совмещение в один поток чревато задержками скрипта и невозможностью выполнять свои функции, плюс высокая возможность убиения скрипта. Разбиение во много потоков чревато задержками самой игры. Пока есть выход использовать смешанную систему: часть последовательно, часть параллельно, но при стремлении системы к бесконечности, задержка вырастет. Самым оптимальным решением как раз бы оказались пропуски тех функций, которые дают сбои. Как ни странно, даже сбойная функция может послужить во благо. В одиночной игре это все не так критично, но в сетевой(не хот сит) это полный абзац! )
Существует возможность создания стековой системы замещения на неполной обработке одной функции другой, дабы сэкономить ресурсы. Но такая система плоха в тестировании.
Добавлено через 5 минут Придётся выбрать просто обычную оптимальную систему, в которой уже наверняка исключены ошибки(стековую), но и создать и вторую среду для тестирования(распараллеленную). Протестирую - погляжу.
Добавлено через 8 минут Максимальное количество действующих героев на одной карте - 127. Это на самом деле и будет лимит "бесконечности". Но 127 одновременных бесконечных потоков - жесть!
Но других способов обойти ошибку, кроме как использовать startThread, вроде бы и нет.
Плохо :( Кстати, я твоего Хафада переделаю: сделаю чтобы на героев его абилка тоже действовала, даже если те сидят в городе. Можешь, конечно, и сам сделать) Нужна будет только одна функция без триггеров и принудительных соприкосновений.
Плохо :( Кстати, я твоего Хафада переделаю: сделаю чтобы на героев его абилка тоже действовала, даже если те сидят в городе. Можешь, конечно, и сам сделать) Нужна будет только одна функция без триггеров и принудительных соприкосновений.
Позволяет установить перехватчик ошибки. По умолчанию при возникновении ошибки скрипта текущий поток завершает свою работу. Благодаря данной функции у Вас есть возможность откорректировать это поведение – перед остановом управление будет передано функции fCallback Нашел у Новика. Если это не поможет-тогда больше вариантов нет)
Мои карты: Town Готовится:Чума (40%), Сосиска(42%), Война Грааля
Позволяет установить перехватчик ошибки. По умолчанию при возникновении ошибки скрипта текущий поток завершает свою работу. Благодаря данной функции у Вас есть возможность откорректировать это поведение – перед остановом управление будет передано функции fCallback Нашел у Новика. Если это не поможет-тогда больше вариантов нет)
В первом миссии и во второй меняется только число около target mission. Копировал, вроде, с файла разработчиков, c небольшими изменениями. Однако, герой в следующую миссию с недавнего времени переходить перестал. Не могу понять, в чем дело...
Мне нужно, чтобы в городах под руководством игрока 1 вообще никогда не появлялись герои-некроманты, маги, орки и тэльфы. Вроде, по описанию, ф-ия подходит, но только при попытке её написать скрипт ругается на nil в третьем параметре, хотя я ума не приложу, в мануале написано true/nil ....
В первом миссии и во второй меняется только число около target mission. Копировал, вроде, с файла разработчиков, c небольшими изменениями. Однако, герой в следующую миссию с недавнего времени переходить перестал. Не могу понять, в чем дело...
Как я понимаю, данный кусок сохраняет героев, имена которых указаны в pool, какими они были в этой миссии на конец игры. М.б. использовал @Win() и герой остался первого уровня, поэтому и перешел в следующую миссию ни с чем. TargetMission должен быть равен текущей миссии. Можно попробовать написать в TargetCampaign имя файла кампании.