Page 1 of 2

А есть справочник ?

Posted: 2006-09-24 21:27:17
by slonopotam
Например описание что значат wait() и CheckLag() и в каких случаях они применяются? И так по всем функциям и т.д. По всем командам не нашел не одного справочника. Если есть у кого, скиньте пожалуйста. Меня интересует все, начиная от sab form () и заканчивая (random).

Posted: 2006-09-24 22:49:09
by Edred
1. Раздел Хелп этого форума, прилепленные темы с уроками
2. http://yoko.netroof.net/help/index.php?lang=rus
3. Раздел FAQ этого форума
4. Чеклаг - это вообще функция, написанная пользователем. И таких более-менее стандартных функций много. В разделе Скрипты форума была прилепленная тема про это.

Если тебе хочется чтобы все это было в одном флаконе - возьми и сделай.

Posted: 2006-09-24 23:23:54
by slonopotam
Эт все хорошо, но мало. Нигде не написано например про то, когда какую паузу сделать. Незная этого как я буду правильно использовать тот же чек лаг?

Posted: 2006-09-25 06:39:56
by Nmy
slonopotam wrote:Эт все хорошо, но мало. Нигде не написано например про то, когда какую паузу сделать. Незная этого как я буду правильно использовать тот же чек лаг?

нету! ненравится- стери инжу :arrow: :!:

Posted: 2006-09-25 08:41:27
by Edred
slonopotam wrote:Эт все хорошо, но мало. Нигде не написано например про то, когда какую паузу сделать. Незная этого как я буду правильно использовать тот же чек лаг?


Учись по чужим скриптам. Никто не удосужился написать полный развернутый учебник по инжекту. И вряд ли кто когда сподобится на такое.

ЗЫ: Ты не находишь, что у кем-то заранее разжеванной для тебя пище - вкус другой? :roll:

Posted: 2006-09-25 21:44:57
by slonopotam
Edred wrote:Ты не находишь, что у кем-то заранее разжеванной для тебя пище - вкус другой? :roll:

Ты про слюни ??? :shock:

Объясните пожалуйста тогда хотябы этот пример, в каком случае какую паузу ставить. Просто я не очень дружу ни с делфи, ни с базиком.

Posted: 2006-09-25 22:07:44
by DerMeister =)
При чём тут это? Чтобы писать скрипты достаточно уметь создавать алогитмы (кстате, это чисто логическо-математическая задача), а уж как их реализовывать не принципиально. Если имеешь представление хотябы о паскале, то изучить другой язык струда не составит. Повторюсь, главное - "шарить" в алгоритмах.

Posted: 2006-09-25 22:17:55
by slonopotam
Не в алгоритме проблема, а в данном случае в паузе. Когда какую лудше ставить? Когда нужно wait заменить на чеклаг.

Posted: 2006-09-25 22:24:05
by DerMeister =)
slonopotam wrote:Не в алгоритме проблема, а в данном случае в паузе. Когда какую лудше ставить? Когда нужно wait заменить на чеклаг.

Это как раз часть алгоритма, отвечающая за "правила игры" или качество связи. Где их ставить, это чисто логическая задача. Кароче, давай на конкретном примере попробуем разобраться, а то так мы тока воду лём. надо больше конкретики.

Posted: 2006-09-25 22:27:38
by slonopotam

Code: Select all

sub Ogo()
uo.print('Click on balalaika')
uo.exec('addobject balalaika')
while uo.targeting()
repeat
uo.useskill("Stealth")
wait(5000)
UO.Say( "Guards" )
wait(50)
uo.useskill("Animal Lore",'self')
wait(5000)
UO.Say( "Guards" )
wait(50)
uo.useskill("Hiding")
wait(5000)
UO.Say( "Guards" )
wait(50)
uo.useskill("Evaluating Intelligence",'self')
wait(5000)
UO.Say( "Guards" )
wait(50)
uo.usetype('0x097B')
wait(50)
UO.Say( "Guards" )
wait(50)
UO.UseObject('balalaika')
wait(5000)
until uo.dead()
end sub

Posted: 2006-09-25 22:51:24
by DerMeister =)
Завтро распишу всё с комментариями где чего лучше вставить. А счас я заниматся - завтро лаба.

Posted: 2006-09-27 22:39:01
by slonopotam
Ивот уже наступило после завтра, а мы все ждемс ...

Posted: 2006-09-28 15:07:08
by DerMeister =)
Ну, :wink: , конечный выбор остаётся за тобой. Я бы сделал так:
Кста, у тя скрипт не рабочий! Был :wink:

Code: Select all

sub Ogo() 

uo.print('Click on balalaika')
uo.exec('addobject balalaika') #смотри пункт 2 комментариев

  while uo.targeting()  #тут ошибочка была
    wait(200)  #нужно так
  wend

  repeat
    uo.useskill("Stealth")
    wait(5000)  #смотри пункт 2 комментариев
    UO.Say( "Guards" )
    wait(50) #зачем задержка???
    uo.useskill("Animal Lore",'self')
    wait(5000) 
    UO.Say( "Guards" )
    wait(50)  #ну зачем?? ;)
    uo.useskill("Hiding")
    wait(5000)
    UO.Say( "Guards" )
    wait(50)  #....
    uo.useskill("Evaluating Intelligence",'self')
    wait(5000)
    UO.Say( "Guards" )
    wait(50)
    uo.usetype('0x097B')
    wait(50) #смотри пункт 3 комментариев
    UO.Say( "Guards" )
    wait(50) #кхм ;)
    UO.UseObject('balalaika')
    wait(5000)
  until uo.dead()

end sub


Комментарии (общнго типа, тоесть не только касаемо конкретно этого скрипта):
1)Вообще иногда имеет смысл перед этим написать

Code: Select all

...
var balalaika
if uo.targeting() then
uo.canceltarget()
end if
uo.addobject('balalaika')
...

2)Тут можно по журналу (как в пункте 3)

Code: Select all

...
uo.deletejournal() #главное не забыть обнулить журнал. Посмотри пунк 4
uo.useskill("Stealth")
while not uo.injournal('я в стелсе')
wait(100)
wend
...

3)Тут всё зависит от того, что произойдёт после того, как ты используешь этот предмет... я хз что это. Наверное еда, а после приёма еды обычно появляется надпись, поэтому можно замутить так:

Code: Select all

...
uo.deletejournal()
uo.usetype('0x097B')
while not uo.injournal('тут то, что появляется после применения')
wait(100)
wend
...

если же после uo.usetype должен появится прицел, то можно так:

Code: Select all

...
uo.usetype('0x097B')
while not uo.targeting()
wait(100)
wend
...

конечно можно влепить тут и чеклаг, но надо быть осторожным с УНСП.
Вообще, если тебе обязательно нужно, чтобы этот предмет использовался всегда, то используй 1 из трёх вариантов, или комбинируй их. В другом случае прокатит и wait(). Для повышения надёжности, uo.usetype можно захуярить в цикл. Скажем так:

Code: Select all

...
uo.deletejournal()
repeat
i=0
  uo.usetype('0x097B')
  while not uo.injournal('тут то, что появляется после применения') or i<20   #это выход из цыкла по счётчику
    i=i+1
    wait(100)
  wend
until uo.injournal('тут то, что появляется после применения')
...

4)Вообще, команда uo.deletejournal() обнуляет весь журнал, что не всегда хорошо, если используешь сложные условия выхода/входа, или если у тебя несколько скриптов параллельно запущены. Есть такая процедура, которая удаляет из журнала только заданную строку. Вот она:

Code: Select all

Sub DeleteJournal( string1 ) 
   VAR nom = UO.InJournal( string1 )
   If nom > 0 Then
      UO.SetJournalLine( Nom - 1, 'string replaced' )
      DeleteJournal( string1 )
   Endif
endsub


Еще бывает полезно обнулять журнал в начале каждого скрипта, если это не помешает другим скриптам.
P.S: Да, вообщето есть такая тема, называется Наследство от Edred-а. В ней много полезного.

Еще вопросы :?:

Posted: 2006-09-29 10:45:00
by slonopotam
Спасибо :D

Да еще есть вопросы.

1) Почему не рекомендуется использовать "left click"?

2) Что надежней "auto menu", или "cancel menu"?

3) В каких случаях необходим именно checklag, а не wait?

4) Как в инжект дабавить шрифты из УО?

Posted: 2006-09-29 16:54:45
by DerMeister =)
1) Кто сказал? :shock:

2) Это разные вещи, как лягушка и корова.

3) Еслиб он был необходим, то его бы запихнули в стандартные функции. Я им никогда не пользуюсь. ( у меня коннект хороший, не лагает ;) )

4) Чего-чего? :shock: У тебя проблемы с русскими буквами или ты очём то другом???

Posted: 2006-09-29 17:01:48
by Edred
DerMeister =) wrote:3) Еслиб он был необходим, то его бы запихнули в стандартные функции. Я им никогда не пользуюсь. ( у меня коннект хороший, не лагает ;) )


Адрес шарда, на котором никогда не бывает сэйвов мира в студию!

Posted: 2006-09-29 17:57:06
by slonopotam
DerMeister =) wrote:1) Кто сказал? :shock:

2) Это разные вещи, как лягушка и корова.

3) Еслиб он был необходим, то его бы запихнули в стандартные функции. Я им никогда не пользуюсь. ( у меня коннект хороший, не лагает ;) )

4) Чего-чего? :shock: У тебя проблемы с русскими буквами или ты очём то другом???


1) Много слышал, "нестоит лефт клик использовать, ненадежно".

2) И в чем разница?? :shock:

3) Ну зачемто он нужен же...

4) Прочел недавно топ про шард где журнальные сообщения перевели на русский.

Posted: 2006-09-29 19:36:41
by Edred
1. Ненадежно, так как эти координаты легко могут измениться простым драгом мышки (случайным)

2. automenu - ловушка на выбор меню, cancelmenu - удаляет все ловушки меню из памяти. Ты, наверное, хотел сравнивать с waitmenu... Разница в времени действия. waitmenu - одноразовая ловушка, удаляется после выбора. automenu - постоянно действующая ловушка. Последняя надежнее в скриптах. Ведь если ты в цикле крафтишь что-то и используешь одноразовую ловушку прямо в цикле, в один прекрасный момент у тебя может легко произойти временный сбой (лаг, например, сейв мира и т.д.) и ловушка не сработает. Но в следующем цикле ты в память засовываешь новую! Вот так и до терминэйт клиент недалеко. automenu ты устанавливаешь один раз в начале скрипта до цикла, не забудь в конце скрипта cancelmenu. Но automenu имеет свои ограничения. Я устал излагать, иди в хелп, там все разжевано.

Posted: 2006-10-02 17:42:15
by DerMeister =)
Edred wrote:
DerMeister =) wrote:3) Еслиб он был необходим, то его бы запихнули в стандартные функции. Я им никогда не пользуюсь. ( у меня коннект хороший, не лагает ;) )


Адрес шарда, на котором никогда не бывает сэйвов мира в студию!


Хмм... Этож чё, после каждого действия чеклаг вставлять? Мне казалось, что защита от сейва выглядит немножечко подругому... хотя, вы же не хотите пинжект юзать ;)

Posted: 2006-10-02 21:58:06
by Edred
DerMeister =) wrote:Хмм... Этож чё, после каждого действия чеклаг вставлять?


После каждого не надо, а после всех перемещений объектов обязательно. И, кстати, пинжект тут тебе ничем не поможет.