sub Magery() VAR NS='0x0F88' VAR Sunduk='0x40629E13' VAR Kolvo=10 While NOT UO.Dead() UO.Cast('Poison', 'Self') wait(3000) If UO.InJournal('You lack sufficient') Then While UO.Mana<UO.Int Repeat wait(100) until UO.InJournal('You are') OR ('You lose') Wend Else If UO.InJournal('You lack Nightshade') Then UO.FindType('NS', -1, Sunduk) UO.Grab(str(Kolvo), 'NS')
endif endif Wend end sub
Вот накарябал, для себя хорошенький скрипт на магию, но при запуске выдаёт: Invalid serial index. Причём выдаёт это, как через Uo.Print(). Сам разобраться не смог... Вот хочу узнатть у вас, к чему бы это?
Edred wrote:тупое предположение - в сериале русских букв нету? Ну и, как мне только что подсказал Йоко, '-1' - в кавычках пиши на всяк случай в финдтайпе.
Русских букв нету, не в ручную сериал вводил. '-1'- Не помогло.
666Man666 wrote:UO.Grab(str(Kolvo), 'NS') замени на UO.Grab(str(Kolvo), 'finditem')
Случайно описался, и даже не в этом дело.
--------------------------------------------------------------------------------------
Так и не нашёл ошибки... Ребят проверьте мой Grab(), а то в первый раз пишу со взятием предметов скрипт.
sub Magery() VAR NS='0x0F88' VAR Sunduk='0x4021C658' VAR Kolvo=10 VAR k = 0, j VAR LastTimer while NOT UO.Dead() -----------------------Часть со взятием рега------------------------------------ While UO.NS<=1 UO.FindType(NS, -1, Sunduk) If UO.FindCount()==0 Then UO.Print("NS not found, script terminated") else j = UO.GetQuantity( 'finditem' ) If j > Kolvo Then UO.Print("I can use" + str( j ) + "NS") else UO.Print("I can't use" + str( j ) + "NS") Endif If Kolvo == 1 Then UO.FindType( NS ) UO.MoveItem( 'finditem', '2', Sunduk ) wait(500) Else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) ------------------------------------------------------------------------------------- Endif Endif wend while UO.Mana>=9 UO.Cast('Poison','self') wait(3000) wend while UO.Mana<UO.Int LastTimer=UO.Timer() UO.UseSkill('Meditation') repeat wait(100) until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 UO.DeleteJournal() wait(2000) wend Wend end sub
sub Magery() VAR NS='0x0F88' VAR Sunduk='0x400BFED4' VAR Kolvo=10 While NOT UO.Dead() While NOT UO.InJournal("You lack Nightshade") OR UO.InJournal("You lack sufficient") UO.Cast('Poison', 'self') wait(3000) wend If UO.InJournal("You lack sufficient") Then While UO.Mana<UO.Int Repeat wait(100) until UO.InJournal("You are") OR UO.InJournal("You lose") Wend Else If UO.InJournal("You lack Nightshade") Then -----------------------Часть со взятием рега------------------------------------ UO.FindType('NS', '-1', Sunduk) UO.Grab(str(Kolvo), 'finditem') ------------------------------------------------------------------------------------- Wend
А почему в Findtype ты NS в кавычках пишешь? Это же у тебя переменная. А так поиск пытается искать предопределенный объект NS которого у тебя, насколько я понимаю, нету. Убери кавычки.
Edred wrote:А почему в Findtype ты NS в кавычках пишешь? Это же у тебя переменная. А так поиск пытается искать предопределенный объект NS которого у тебя, насколько я понимаю, нету. Убери кавычки.
И впрямь помогло, большое человеческое тебе =). И новый вопрос:
И очистить журнал перед циклом забыл... Так что он может легко мессаги с предыдущего каста находить и не работать. Именно для таких целей и существует цикл repeat...until
Спасибо всем, кто помагал, но у меня ещё куча проблем с этим скриптом, если у кого-то есть свободное время, то можно было бы обменяться ICQ, дабы меня взяли в учиники.
KrafteR wrote:Спасибо всем, кто помагал, но у меня ещё куча проблем с этим скриптом, если у кого-то есть свободное время, то можно было бы обменяться ICQ, дабы меня взяли в учиники.
Лучше здесь. Один устанет - другой поможет, да и может еще кому пригодится. Не стесняйся. У меня, например, вызывают раздражение только требования выдать кому-то готовый рабочий скрипт, настроенный уже под этого кого-то, причем аргументом является то, что этот кто-то в скриптах ничего не понимает и понимать не хочет. А если кто-то хочет учиться - завсегда пожалуйста.
Edred wrote:Лучше здесь. Один устанет - другой поможет, да и может еще кому пригодится. Не стесняйся. У меня, например, вызывают раздражение только требования выдать кому-то готовый рабочий скрипт, настроенный уже под этого кого-то, причем аргументом является то, что этот кто-то в скриптах ничего не понимает и понимать не хочет. А если кто-то хочет учиться - завсегда пожалуйста.
Ну пасиб, а то я уж было подумал, что я всех достал со своими вопросами =). Сам скрипты только брал, а тут решил сесть и написать, и затянуло, вот уже третью неделю мастерю и постоянно куча вопросов, вобщем щас пару новых идей появилась, как их опробую задам новые вопросы.
If UO.Mana<9 Then<--------------------------------------------------- Если мана меньше 9 тогда While UO.Mana<UO.Int<-------------------------------------------- Пока маны меньше интелекта UO.Useskill('Meditation')<--------------------------------------- Использовать скил медитацию Repeat wait(100)<--------------------------------------------------- Ждать until UO.InJournal("You are") OR UO.InJournal("You lose")<--- Пока не появятся надписи в журнале Wend
Вот что хотел, а строку "Ждать" не получается сделать, почему-то скрипт постоянно юзает медитацию. Если можно, хочется услышать альтернативные примеры медитации в ваших скриптах.
If UO.Mana<9 Then<--------------------------------------------------- Если мана меньше 9 тогда While UO.Mana<UO.Int<-------------------------------------------- Пока маны меньше интелекта UO.Useskill('Meditation')<--------------------------------------- Использовать скил медитацию Repeat wait(100)<--------------------------------------------------- Ждать until UO.InJournal("You are") OR UO.InJournal("You lose")<--- Пока не появятся надписи в журнале Wend
Вот что хотел, а строку "Ждать" не получается сделать, почему-то скрипт постоянно юзает медитацию. Если можно, хочется услышать альтернативные примеры медитации в ваших скриптах.
Та же проблема. Не забывай в начале вайла очистить журнал. То есть после While UO.Mana<UO.Int поставь UO.DeleteJournal()