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
Во я дурик, не заметил :)
вот

Code: Select all

UO.Cast('Poison', 'Self')
тут ошибка, иши :))))

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

Code: Select all

UO.Cast('Poison', 'Self')
тут ошибка, иши :))))

Code: Select all

 UO.Cast('Poison','self') 
- А вот так работает =).

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()