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
end sub
А почему в 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()