скрипт на Stealing (воровство) для "короли Махаона"

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Пиквил
Posts: 4
Joined: 2009-08-15 17:52:37
Contact:

скрипт на Stealing (воровство) для "короли Махаона"

Post by Пиквил »

Скрипт на Махаон
Встаём в тихое, тёплое местечко. Мульту даём рунбуки и/или связки ключей, т.к. их нельзя вытащить и поэтому всегда есть ЧТО вытаскивать.
У себя же в паке открываем холодильник со стейками. Запускаем скрипт.
Идеальный кач идёт только когда перс "сыт и доволен", поэтому изначально делаем его сытым, и при первом признаке голода, он будет есть стейки.

Code: Select all

#######################################
##Автор скрипта: Пиквил [VoA]        ##
##Сервер: Короли Махаона (uolife.ru) ##
##Цельевой скил: Stealing (воровство)##
#######################################

sub Stealing()
uo.DeleteJournal()
uo.print('Кого?:')
uo.exec('addobject Targ')
while uo.targeting()
wait(100)
wend
while UO.DEX < 250
  if not uo.hidden() then
    UO.UseSkill('Hiding')
    wait(3000)   
  end if
  if uo.hidden() then
    UO.WaitTargetObject('Targ')
    UO.UseSkill('Stealing')
   repeat
   Wait(500)
   until uo.InJournal('You must wait to perform another action.') or uo.InJournal('Предмет выскальзывает из ваших пальцев.') or uo.InJournal('... потом успешно прячете в свой карман.') or uo.InJournal('Ваше поведение привлекает внимание!') or uo.InJournal('... но он намертво зацепился.') or uo.InJournal('... но ваши руки дрожат и предмет выпадает.') or uo.InJournal('Нужно подойти поближе!')
  end if
  if uo.InJournal('Вы слегка голодны.') then
   Wait(2500)
   Uo.UseType('0x097B')
  end if
 Uo.DeleteJournal()
wend
end sub


PS: эта строка должна быть одной строчкой

Code: Select all

until uo.InJournal('You must wait to perform another action.') or uo.InJournal('Предмет выскальзывает из ваших пальцев.') or uo.InJournal('... потом успешно прячете в свой карман.') or uo.InJournal('Ваше поведение привлекает внимание!') or uo.InJournal('... но он намертво зацепился.') or uo.InJournal('... но ваши руки дрожат и предмет выпадает.') or uo.InJournal('Нужно подойти поближе!') 
Last edited by Пиквил on 2009-08-16 20:42:49, edited 1 time in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: скрипт на Stealing (воровство) для "короли Махаона&

Post by Mirage »

Скрипт номральный. Но зачем писать проверку журнала таким макаром? Можно вот так сделать:

Code: Select all

until uo.InJournal('must wait to perform|выскальзывает|успешно прячете |привлекает внимание|намертво зацепился|предмет выпадает') 

Имхо короче и несколько универсальнее. Хотя есть свои подводные камни
Пиквил
Posts: 4
Joined: 2009-08-15 17:52:37
Contact:

Re: скрипт на Stealing (воровство) для "короли Махаона&

Post by Пиквил »

Mirage wrote:Скрипт номральный. Но зачем писать проверку журнала таким макаром? Можно вот так сделать:

Code: Select all

until uo.InJournal('must wait to perform|выскальзывает|успешно прячете |привлекает внимание|намертво зацепился|предмет выпадает') 

Имхо короче и несколько универсальнее. Хотя есть свои подводные камни


Попробую, спасибо. Но что за подводные камни, можно хотя-бы намекнуть, ибо путь познания порой бывает тернист. Заранее, и ещё раз спасибо.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

1) именно про сокращенные меню - ктото рядом стоящий может сказать то что ожидает скирпт и цикл со скочит с паузы не дождавшись завершения действия.
2)я бы добавил сообщение "Вы слегка голодны" в until
3)и еще бы добавил временную паузу (или счетчик тактов или таймер). Потому как иногда бывает такой глюк - фраза проскакивает в журнале а за ней сразу другая и почему то скрипт не видит нужную.
4)паузу у пряталки тоже можно сделать с использованием журнала - она сократиться немножко.
5) ОБЫЧНО Uo.DeleteJournal() ставят в начале скрипта (цикла) так как если ты остановил скрипт руками, потом запустил - в журнале то фраза все равно будет => словишь глюк.
6)конструкцию

Code: Select all

  if uo.InJournal('Вы слегка голодны.') then
   Wait(2500)
   Uo.UseType('0x097B')
  end if

и подобные лучше изобразить:

Code: Select all

  if uo.InJournal('Вы слегка голодны.') then
   Wait(500)
   Uo.UseType('0x097B')
   Wait(2000)
  end if
Хотя именно тут наверное сойдет и так как у тебя, если работает.


PS все поправки чисто косметического характера.
Пиквил
Posts: 4
Joined: 2009-08-15 17:52:37
Contact:

Post by Пиквил »

Mirage wrote:1) именно про сокращенные меню - ктото рядом стоящий может сказать то что ожидает скирпт и цикл со скочит с паузы не дождавшись завершения действия.
2)я бы добавил сообщение "Вы слегка голодны" в until
3)и еще бы добавил временную паузу (или счетчик тактов или таймер). Потому как иногда бывает такой глюк - фраза проскакивает в журнале а за ней сразу другая и почему то скрипт не видит нужную.
4)паузу у пряталки тоже можно сделать с использованием журнала - она сократиться немножко.
5) ОБЫЧНО Uo.DeleteJournal() ставят в начале скрипта (цикла) так как если ты остановил скрипт руками, потом запустил - в журнале то фраза все равно будет => словишь глюк.
6)конструкцию

Code: Select all

  if uo.InJournal('Вы слегка голодны.') then
   Wait(2500)
   Uo.UseType('0x097B')
  end if

и подобные лучше изобразить:

Code: Select all

  if uo.InJournal('Вы слегка голодны.') then
   Wait(500)
   Uo.UseType('0x097B')
   Wait(2000)
  end if
Хотя именно тут наверное сойдет и так как у тебя, если работает.


PS все поправки чисто косметического характера.


1) Оставлю тогда так как есть. Until заточен исключительно под системные события. Если в журнале будет не 'Предмет выскальзывает из ваших пальцев.', а 'Вася Пупкин сказал: Предмет выскальзывает из ваших пальцев.', то ничего не произойдёт. А так, да, твой вариант более красивый, найду применение и ему. Его можно использовать находясь в тихом месте, где никто не ходит, в доме например.
2) Специально вынес в отдельный блок, т.к. когда until увидит "Вы слегка голодны", тогда после, всё равно нужна будет проверка, по какой причине сработал until. Как вариант, можно запихать блок проверки в сам until.
3) Да, есть такое, он появляется когда скрипт завязан на задержку, а не на событие. И как раз на этот случай, и на случай лага в until стоит ('You must wait to perform another action.')
4) Пауза самая оптимальная. Меньше не получится, как не крути. Вот тут как-раз блок и закручен на задержку.
5) Скрипт изначально и по возможности разрабатывался стрессоустойчивым, единственный трабл который может случиться, это когда мульт вдруг куда-то отошёл. (уже исправлено)
6) Тут можно вообще без задержки, т.к. проверка стоит после until, который по сути проверяет закончилось-ли действие или нет. Задержку на всякий случай прописал. Повторюсь, чтобы скрипт был максимально стрессоустойчивым.

PS: Немного подрихтовал, until оставил прежним. Спасибо за конструктивные замечания.
Пиквил
Posts: 4
Joined: 2009-08-15 17:52:37
Contact:

Post by Пиквил »

Хм, всё тоже самое, только оказалось, что со 100% до 120% стилинга, в хайд прятаться уже не нужно (убран блок) .

Code: Select all

#######################################
##Автор скрипта: Пиквил [VoA]        ##
##Сервер: Короли Махаона (uolife.ru) ##
##Цельевой скил: Stealing (воровство)##
#######################################

sub Stealing()
uo.DeleteJournal()
uo.print('Кого?:')
uo.exec('addobject Targ')
while uo.targeting()
wait(100)
wend
while UO.DEX < 250
   UO.WaitTargetObject('Targ')
   UO.UseSkill('Stealing')
   repeat
    Wait(500)
   until uo.InJournal('You must wait to perform another action.') or uo.InJournal('Предмет выскальзывает из ваших пальцев.') or uo.InJournal('... потом успешно прячете в свой карман.') or uo.InJournal('Ваше поведение привлекает внимание!') or uo.InJournal('... но он намертво зацепился.') or uo.InJournal('... но ваши руки дрожат и предмет выпадает.') or uo.InJournal('Нужно подойти поближе!')
  end if
  if uo.InJournal('Вы слегка голодны.') then
   Wait(2500)
   Uo.UseType('0x097B')
  end if
 Uo.DeleteJournal()
wend
end sub
Post Reply