Вопросик

Ask for help

Moderators: Murderator+, Murderator

KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Вопросик

Post 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(). Сам разобраться не смог... Вот хочу узнатть у вас, к чему бы это?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

тупое предположение - в сериале русских букв нету? Ну и, как мне только что подсказал Йоко, '-1' - в кавычках пиши на всяк случай в финдтайпе.
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

UO.Grab(str(Kolvo), 'NS') замени на UO.Grab(str(Kolvo), 'finditem')
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post by KrafteR »

Edred wrote:тупое предположение - в сериале русских букв нету? Ну и, как мне только что подсказал Йоко, '-1' - в кавычках пиши на всяк случай в финдтайпе.

Русских букв нету, не в ручную сериал вводил. '-1'- Не помогло.
666Man666 wrote:UO.Grab(str(Kolvo), 'NS') замени на UO.Grab(str(Kolvo), 'finditem')

Случайно описался, и даже не в этом дело.
--------------------------------------------------------------------------------------
Так и не нашёл ошибки... Ребят проверьте мой Grab(), а то в первый раз пишу со взятием предметов скрипт.
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

Во я дурик, не заметил :)
вот

Code: Select all

UO.Cast('Poison', 'Self')
тут ошибка, иши :))))
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post 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
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

Раз ноль фонд значит нету в яшике регов....
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post by KrafteR »

666Man666 wrote:Раз ноль фонд значит нету в яшике регов....

Я забыл написать, что они там точно есть и проблемма не в этом.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

а версия клиента какая?
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post 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
- А в этом нет.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

А почему в Findtype ты NS в кавычках пишешь? Это же у тебя переменная. А так поиск пытается искать предопределенный объект NS которого у тебя, насколько я понимаю, нету. Убери кавычки.
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post 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 секунды
конец цыкла
Оказывается это означает что-то другое. Если не трудно обьясните, где я накосячил.
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

Нот во втором инджорнале забыл
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

И очистить журнал перед циклом забыл... Так что он может легко мессаги с предыдущего каста находить и не работать. Именно для таких целей и существует цикл repeat...until

Code: Select all

repeat
   UO.DeleteJournal()
   UO.Cast(...)
   Wait(...)
until UO.InJournal(...) or UO.InJournal(...)
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post 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 действует с высшим приоритетом на ближайший операнд
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post by KrafteR »

Спасибо всем, кто помагал, но у меня ещё куча проблем с этим скриптом, если у кого-то есть свободное время, то можно было бы обменяться ICQ, дабы меня взяли в учиники.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

KrafteR wrote:Спасибо всем, кто помагал, но у меня ещё куча проблем с этим скриптом, если у кого-то есть свободное время, то можно было бы обменяться ICQ, дабы меня взяли в учиники.


Лучше здесь. Один устанет - другой поможет, да и может еще кому пригодится. Не стесняйся. У меня, например, вызывают раздражение только требования выдать кому-то готовый рабочий скрипт, настроенный уже под этого кого-то, причем аргументом является то, что этот кто-то в скриптах ничего не понимает и понимать не хочет. А если кто-то хочет учиться - завсегда пожалуйста.
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post by KrafteR »

Edred wrote:Лучше здесь. Один устанет - другой поможет, да и может еще кому пригодится. Не стесняйся. У меня, например, вызывают раздражение только требования выдать кому-то готовый рабочий скрипт, настроенный уже под этого кого-то, причем аргументом является то, что этот кто-то в скриптах ничего не понимает и понимать не хочет. А если кто-то хочет учиться - завсегда пожалуйста.

Ну пасиб, а то я уж было подумал, что я всех достал со своими вопросами =). Сам скрипты только брал, а тут решил сесть и написать, и затянуло, вот уже третью неделю мастерю и постоянно куча вопросов, вобщем щас пару новых идей появилась, как их опробую задам новые вопросы.
KrafteR
Posts: 260
Joined: 2004-07-22 16:07:11
Contact:

Post 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

Вот что хотел, а строку "Ждать" не получается сделать, почему-то скрипт постоянно юзает медитацию. Если можно, хочется услышать альтернативные примеры медитации в ваших скриптах.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

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