Page 1 of 3
Вопросик
Posted: 2005-01-16 00:58:05
by KrafteR
Code: Select all
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(). Сам разобраться не смог... Вот хочу узнатть у вас, к чему бы это?
Posted: 2005-01-16 01:58:38
by Edred
тупое предположение - в сериале русских букв нету? Ну и, как мне только что подсказал Йоко, '-1' - в кавычках пиши на всяк случай в финдтайпе.
Posted: 2005-01-16 02:10:44
by 666Man666
UO.Grab(str(Kolvo), 'NS') замени на UO.Grab(str(Kolvo), 'finditem')
Posted: 2005-01-16 13:09:54
by KrafteR
Edred wrote:тупое предположение - в сериале русских букв нету? Ну и, как мне только что подсказал Йоко, '-1' - в кавычках пиши на всяк случай в финдтайпе.
Русских букв нету, не в ручную сериал вводил. '-1'- Не помогло.
666Man666 wrote:UO.Grab(str(Kolvo), 'NS') замени на UO.Grab(str(Kolvo), 'finditem')
Случайно описался, и даже не в этом дело.
--------------------------------------------------------------------------------------
Так и не нашёл ошибки... Ребят проверьте мой Grab(), а то в первый раз пишу со взятием предметов скрипт.
Posted: 2005-01-16 13:44:07
by 666Man666
Во я дурик, не заметил
вот
тут ошибка, иши

)))
Posted: 2005-01-16 14:01:59
by KrafteR
666Man666 wrote:Во я дурик, не заметил

вот
тут ошибка, иши

)))
- А вот так работает =).
Code: Select all
UO.FindType('NS', '-1', Sunduk)
UO.Grab(str(Kolvo), 'finditem')
- Тут мне кажется есть ошибка, т.к. теперь пишет: NS=>0x019F -вот эту строчку я не понимаю.
Items Found: 0
Posted: 2005-01-16 14:13:55
by 666Man666
Раз ноль фонд значит нету в яшике регов....
Posted: 2005-01-16 14:25:45
by KrafteR
666Man666 wrote:Раз ноль фонд значит нету в яшике регов....
Я забыл написать, что они там точно есть и проблемма не в этом.
Posted: 2005-01-16 20:31:28
by Edred
а версия клиента какая?
Posted: 2005-01-16 23:57:53
by KrafteR
Edred wrote:а версия клиента какая?
2.0.3.
Code: Select all
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
- В этом скрипте берёт реги из сундука.
Code: Select all
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
- А в этом нет.
Posted: 2005-01-17 00:29:43
by Edred
А почему в Findtype ты NS в кавычках пишешь? Это же у тебя переменная. А так поиск пытается искать предопределенный объект NS которого у тебя, насколько я понимаю, нету. Убери кавычки.
Posted: 2005-01-17 00:47:20
by KrafteR
Edred wrote:А почему в Findtype ты NS в кавычках пишешь? Это же у тебя переменная. А так поиск пытается искать предопределенный объект NS которого у тебя, насколько я понимаю, нету. Убери кавычки.
И впрямь помогло, большое человеческое тебе =). И новый вопрос:
Code: Select all
While NOT UO.InJournal("You lack Nightshade") OR UO.InJournal("You lack sufficient")
UO.Cast('Poison', 'self')
wait(3000)
wend
- я писал это с уверенностью, что это означает:
Code: Select all
Пока не найдёшь в журнале("You lack Nightshade") или ("You lack sufficient")
Кастовать пойзон на себя
ждать 3 секунды
конец цыкла
Оказывается это означает что-то другое. Если не трудно обьясните, где я накосячил.
Posted: 2005-01-17 06:05:19
by 666Man666
Нот во втором инджорнале забыл
Posted: 2005-01-17 07:51:05
by Edred
И очистить журнал перед циклом забыл... Так что он может легко мессаги с предыдущего каста находить и не работать. Именно для таких целей и существует цикл repeat...until
Code: Select all
repeat
UO.DeleteJournal()
UO.Cast(...)
Wait(...)
until UO.InJournal(...) or UO.InJournal(...)
Posted: 2005-01-17 10:16:53
by Yoko
KrafteR wrote:Code: Select all
While NOT UO.InJournal("You lack Nightshade") OR UO.InJournal("You lack sufficient")
UO.Cast('Poison', 'self')
wait(3000)
wend
- я писал это с уверенностью, что это означает:
Code: Select all
Пока не найдёшь в журнале("You lack Nightshade") или ("You lack sufficient")
Кастовать пойзон на себя
ждать 3 секунды
конец цыкла
Оказывается это означает что-то другое. Если не трудно обьясните, где я накосячил.
обычная булева алгебра.
NOT A OR B это не то же самое что NOT (A or B) потому что NOT действует с высшим приоритетом на ближайший операнд
Posted: 2005-01-17 23:56:05
by KrafteR
Спасибо всем, кто помагал, но у меня ещё куча проблем с этим скриптом, если у кого-то есть свободное время, то можно было бы обменяться ICQ, дабы меня взяли в учиники.
Posted: 2005-01-18 00:13:34
by Edred
KrafteR wrote:Спасибо всем, кто помагал, но у меня ещё куча проблем с этим скриптом, если у кого-то есть свободное время, то можно было бы обменяться ICQ, дабы меня взяли в учиники.
Лучше здесь. Один устанет - другой поможет, да и может еще кому пригодится. Не стесняйся. У меня, например, вызывают раздражение только требования выдать кому-то готовый рабочий скрипт, настроенный уже под этого кого-то, причем аргументом является то, что этот кто-то в скриптах ничего не понимает и понимать не хочет. А если кто-то хочет учиться - завсегда пожалуйста.
Posted: 2005-01-18 00:35:19
by KrafteR
Edred wrote:Лучше здесь. Один устанет - другой поможет, да и может еще кому пригодится. Не стесняйся. У меня, например, вызывают раздражение только требования выдать кому-то готовый рабочий скрипт, настроенный уже под этого кого-то, причем аргументом является то, что этот кто-то в скриптах ничего не понимает и понимать не хочет. А если кто-то хочет учиться - завсегда пожалуйста.
Ну пасиб, а то я уж было подумал, что я всех достал со своими вопросами =). Сам скрипты только брал, а тут решил сесть и написать, и затянуло, вот уже третью неделю мастерю и постоянно куча вопросов, вобщем щас пару новых идей появилась, как их опробую задам новые вопросы.
Posted: 2005-01-18 01:15:52
by KrafteR
Code: Select all
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
Вот что хотел, а строку "Ждать" не получается сделать, почему-то скрипт постоянно юзает медитацию. Если можно, хочется услышать альтернативные примеры медитации в ваших скриптах.
Posted: 2005-01-18 02:45:22
by Edred
KrafteR wrote:Code: Select all
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()