Ôîðóì HeroesWorld-à - Ïîêàçàòü ñîîáùåíèå îòäåëüíî - Ñêðèïòû äëÿ íà÷èíàþùèõ
Ïîêàçàòü ñîîáùåíèå îòäåëüíî
#207
Ñòàðûé 14.06.2019, 22:19
  #207
^
Ment
 
Àâàòàð äëÿ Ment
📖
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ðåãèñòðàöèÿ: 30.10.2009
Àäðåñ: Íàöèîíàëüíûé çàïîâåäíèê
Ñîîáùåíèÿ: 30704
Ïî óìîë÷àíèþ
Re: Ñêðèïòû äëÿ íà÷èíàþùèõ

А можно узнать, что конкретно пишет? А то у меня маловато идей. Только что в функцию a1 передаётся номер игрока, на самом деле, но по идее это не должно влиять.
Novik в своём руководстве пишет, как делать хуки, можно воспользоваться
void errorHook( fCallback )

Позволяет установить перехватчик ошибки. По умолчанию при возникновении ошибки скрипта текущий поток завершает свою работу. Благодаря данной функции у Вас есть возможность откорректировать это поведение – перед остановом управление будет передано функции fCallback.
Пример:
function onError()
print("Error occured ")
end

function SetArtefactUntrans(nArtefactName)
errorHook(onError)
RemoveArtefact("Berein",nArtefactName)
GiveArtefact("Berein",nArtefactName,1)
end
при возникновении ошибки в функции SetArtefactUntrans (например, требуемого артефакта у героя нет) в консоль будет выдана строка "Error occured ". Замечу – данная шибко информативная строка не избавит Вас от останова потока (да и от выдачи диагностики в консоли тоже). Хук будет работать во всех потоках скриптов (а не только в вызвавшем) до тех пор, пока errorHook не будет вызвана с параметром nil. Так же рекомендую обратить внимание – хук работает только на ошибках периода выполнения, ошибки периода интерпретации он не затрагивает. Что касается приведенного примера, то гораздо разумнее вместо использования хука проверять героя на предмет наличия должного артефакта.
Ment ñåé÷àñ íà ôîðóìå
Îòâåòèòü ñ öèòèðîâàíèåì