Перейти к содержанию

Сообщения от Скрипты

В ответ пользователю Олегарх
Аватар пользователя
#1504
Олегарх
Погуглил, нашел это:

try
... (block) ...
end

If error occurs in the block, the control immediately jumps to the first statement after END, and
the error will be ignored.

another form,

try
... (block) ...
catch err do
... (handler) ...
end
Это не луа. Работать не будет.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1505
хмм, странно, вот ссылка: http://lua-users.org/lists/lua-l/2008-01/msg00650.html
и первая же фраза:
I just wrote a TRY..CATCH extension for Lua, and adapted it into version 5.1.3

тогда, может, сработает pcall?
pcall (f, arg1, ···)
Вызывает функцию f с данными параметрами в защищенном режиме (protected mode). Это значит, что при возникновении любой ошибки внутри функции f она дальше не передается; напротив, pcall перехватывает ошибку и возвращает статус.
Мои карты:
Town
Готовится:Чума (40%), Сосиска(42%), Война Грааля
В ответ пользователю Олегарх
Аватар пользователя
#1506
Олегарх
хмм, странно, вот ссылка: http://lua-users.org/lists/lua-l/2008-01/msg00650.html
и первая же фраза:
I just wrote a TRY..CATCH extension for Lua, and adapted it into version 5.1.3

тогда, может, сработает pcall?
pcall (f, arg1, ···)
Вызывает функцию f с данными параметрами в защищенном режиме (protected mode). Это значит, что при возникновении любой ошибки внутри функции f она дальше не передается; напротив, pcall перехватывает ошибку и возвращает статус.
Да, он написал. Но это расширение для языка, а не встроенная конструкция, и оно не для внедрения в игру.
Версия lua в игре не 5.1, а 4.0.
Разработчики убрали почти все встроенные функции.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1507
RedHeavenHero
startThread не подходит?
Нет. Много потоков получается одновременных. К тому же на каждую даже стандартную функцию нужна эта обходилка. Да и даже в самой простой ситуации приходится перед разрабовскими функциями писать много условий, чтобы те в ошибку не улетели.

Неужели нет никаких даже обработок исключений хотя бы. Самому чтоле писать))
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
В ответ пользователю Dyrman
Аватар пользователя
#1508
Dyrman
Нет. Много потоков получается одновременных. К тому же на каждую даже стандартную функцию нужна эта обходилка. Да и даже в самой простой ситуации приходится перед разрабовскими функциями писать много условий, чтобы те в ошибку не улетели.

Неужели нет никаких даже обработок исключений хотя бы. Самому чтоле писать))
Потоки начинаются и заканчиваются...
Что, надо, чтобы все-все функции работали без ошибок вне зависимости от того, что передать в них в качестве параметров?
Что эти обработки исключений должны делать?
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1509
RedHeavenHero
Потоки начинаются и заканчиваются...
Что, надо, чтобы все-все функции работали без ошибок вне зависимости от того, что передать в них в качестве параметров?
Что эти обработки исключений должны делать?
Для тестовой базы должны быть бесконечные потоки. Совмещение в один поток чревато задержками скрипта и невозможностью выполнять свои функции, плюс высокая возможность убиения скрипта. Разбиение во много потоков чревато задержками самой игры.
Пока есть выход использовать смешанную систему: часть последовательно, часть параллельно, но при стремлении системы к бесконечности, задержка вырастет. Самым оптимальным решением как раз бы оказались пропуски тех функций, которые дают сбои. Как ни странно, даже сбойная функция может послужить во благо.
В одиночной игре это все не так критично, но в сетевой(не хот сит) это полный абзац! )

Существует возможность создания стековой системы замещения на неполной обработке одной функции другой, дабы сэкономить ресурсы. Но такая система плоха в тестировании.

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

Добавлено через 8 минут
Максимальное количество действующих героев на одной карте - 127. Это на самом деле и будет лимит "бесконечности". Но 127 одновременных бесконечных потоков - жесть!
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
В ответ пользователю Dyrman
Аватар пользователя
#1510
Но других способов обойти ошибку, кроме как использовать startThread, вроде бы и нет.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
#1511
RedHeavenHero
Но других способов обойти ошибку, кроме как использовать startThread, вроде бы и нет.
Плохо :(
Кстати, я твоего Хафада переделаю: сделаю чтобы на героев его абилка тоже действовала, даже если те сидят в городе.
Можешь, конечно, и сам сделать) Нужна будет только одна функция без триггеров и принудительных соприкосновений.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
В ответ пользователю Dyrman
Аватар пользователя
#1512
Dyrman
Плохо :(
Кстати, я твоего Хафада переделаю: сделаю чтобы на героев его абилка тоже действовала, даже если те сидят в городе.
Можешь, конечно, и сам сделать) Нужна будет только одна функция без триггеров и принудительных соприкосновений.
Может, подойдет errorHook?
void errorHook( fCallback )

Позволяет установить перехватчик ошибки. По умолчанию при возникновении ошибки скрипта текущий поток завершает свою работу. Благодаря данной функции у Вас есть возможность откорректировать это поведение – перед остановом управление будет передано функции fCallback
Нашел у Новика. Если это не поможет-тогда больше вариантов нет)
Мои карты:
Town
Готовится:Чума (40%), Сосиска(42%), Война Грааля
Аватар пользователя
#1513
RedHeavenHero
На героев не слишком ли мощно будет? Там всё-таки чума убивает довольно большой процент всего количества.
Будет убивать меньше ;)

Добавлено через 59 секунд
Олегарх
Может, подойдет errorHook?
void errorHook( fCallback )

Позволяет установить перехватчик ошибки. По умолчанию при возникновении ошибки скрипта текущий поток завершает свою работу. Благодаря данной функции у Вас есть возможность откорректировать это поведение – перед остановом управление будет передано функции fCallback
Нашел у Новика. Если это не поможет-тогда больше вариантов нет)
Это не то.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
Аватар пользователя
#1514
< HeroesPool >
< Count >1< /Count >
< Heroes >
< Item >
< HeroScriptName >RedHeavenHero01< /HeroScriptName >
< TargetCampaign/ >
< TargetMission >1< /TargetMission >
< /Item >
< /Heroes >
< /HeroesPool >

В первом миссии и во второй меняется только число около target mission. Копировал, вроде, с файла разработчиков, c небольшими изменениями. Однако, герой в следующую миссию с недавнего времени переходить перестал. Не могу понять, в чем дело...

Whatever
Аватар пользователя
#1516
Так, ладно, а как быть с ф-ией

AllowPlayerTavernRace ?

Мне нужно, чтобы в городах под руководством игрока 1 вообще никогда не появлялись герои-некроманты, маги, орки и тэльфы. Вроде, по описанию, ф-ия подходит, но только при попытке её написать скрипт ругается на nil в третьем параметре, хотя я ума не приложу, в мануале написано true/nil ....

Whatever
В ответ пользователю Heroist
Аватар пользователя
#1517
Третий параметр должен быть 0.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#1518
ааа. (В мануале, однако, четко написано nil) Благодарю.

Whatever
В ответ пользователю Heroist
Аватар пользователя
#1519
Heroist
< HeroesPool >
< Count >1< /Count >
< Heroes >
< Item >
< HeroScriptName >RedHeavenHero01< /HeroScriptName >
< TargetCampaign/ >
< TargetMission >1< /TargetMission >
< /Item >
< /Heroes >
< /HeroesPool >

В первом миссии и во второй меняется только число около target mission. Копировал, вроде, с файла разработчиков, c небольшими изменениями. Однако, герой в следующую миссию с недавнего времени переходить перестал. Не могу понять, в чем дело...
Как я понимаю, данный кусок сохраняет героев, имена которых указаны в pool, какими они были в этой миссии на конец игры. М.б. использовал @Win() и герой остался первого уровня, поэтому и перешел в следующую миссию ни с чем.
TargetMission должен быть равен текущей миссии.
Можно попробовать написать в TargetCampaign имя файла кампании.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4

Статистика

Приветствуем новейшего участника: leyu