Никогда не пользовался UO.NS - может она просто не работает? Попробуй поставить тестовый оператор
Code: Select all
UO.Print('ostalos ' + str( UO.NS ) +' nightshade')
в скрипт после каста и посмотри, правильно ли на экран выводится количество найтшэда. Если неправильно - заменяй UO.NS на UO.Count('тип найтшэда')
Вообще, возьми за правило если что-то не работает или работает не так, расставлять в скрипте тестовые выводы различной информации через UO.Print(), весьма помогает локализовать проблему. Это стандартная программистская практика. Я вообще когда пишу длинные скрипты сразу ставлю в начале главного модуля строки:
Code: Select all
UO.SetGlobal( 'Otladka', '0' )
UO.SetGlobal( 'NumOtladka', '0' )
И после каждого значимого действия в скриптах вставляю вызов функции
Ну и добавляю в конец файла функцию:
Code: Select all
sub pt()
VAR i
If UO.GetGlobal( 'Otladka' ) == '1' Then
i = val( UO.GetGlobal( 'NumOtladka' ) ) + 1
UO.Print( 'step ' + str(i) )
UO.SetGlobal( 'NumOtladka', str(i) )
Endif
endsub
соответственно чтобы включить отладку с выводом сообщений в написанном скрипте достаточно вначале заменить 0 на 1 в установке глобальной переменной Otladka. Отключить - заменить обратно. Когда скрипт отлажен - вызовы функции удаляются из скрипта простым поиском с заменой.