помогите с написанием скрипта

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
WazzupP
Posts: 15
Joined: 2009-09-01 20:01:00

помогите с написанием скрипта

Post by WazzupP »

скрипт на кормление животного:

Code: Select all

sub oclock()
horse() #слазиет с лошади
UO.DeleteJournal()
ock:
UO.UseObject(oSeif) #открывает сейф с кормом для лошади
UO.FindType(oEat,'0x0000',oSeif) #находит корм в сейфе
UO.MoveItem('finditem','1',ock) #бросает корм на лошадь
wait(1000)
if not uo.injournal('eat') then
UO.FindType(oEat,'0x0000','backpack') #если лошадь не ест то ищет корм в бекпаке
UO.MoveItem('finditem','1',oSeif) #переносит корм обратно в сейф
horse1() # садится на лошадь
else
goto ock #если лошадь сьедает корм то начинает с начала
end if
end sub

sub horse1()
   UO.Say("all stop")
   UO.Useobject(ock)
end sub

sub horse()
   uo.UseObject('self')
   uo.waittargetobject('laststatus')   
end sub

люди, простите если поместил тему в нетот топик... помогите с написанием скрипта... вроде всё правильно написанно... почему он не зацикливается? вроде написал что пока лошадь не наестся то он будет кидать на неё по одной морковке.... только ненадо говорить что такой скрипт уже есть... посматрите мой пожалуйста... начинал скриптовать и хочу сам чтонибудь написать...
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Значит начнём по-порядку.

1. goto использовать можно, но не желательно- я бы даже сказал не нужно, т.к. 99% скриптов можно написать с использованием таких прекрасных конструкций как циклы- благо в инжекте их есть аж 3 типа(repeat/until с поздним условием, while/wend с ранним условием, for/next с заданным кол-вом повторений).

2. Вызов второстепенных функций несколько усложняет и написание и чтения скрипта, поэтому там где можно без них обойтись- желательно обходиться без них.

3. oSeif, oEat,ock- что это за переменные? Всё таки здесь и в самом деле не телепаты собрались, и раз уж выкладываешь скрипт- переменные желательно чтобы так же были видны. Да и объявлять их лучше внутри главной функции.

4. UseObject/FindType. А где задержка? Всё таки требуется некоторое время чтобы сундук открылся и с ним можно было бы работать.

5. MoveItem/horse1(). А после MoveItem и подавно без задержки не обойтись. Либо краш словишь либо блокировку от сервера за слишком быстрое перемещение вещей.

6.

Code: Select all

uo.waittargetobject('laststatus') 
это что? Какой ластстатус?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

1)учи уроки - там написано.
2)ошибка в goto
3)зачем вообще так зацикливать таким макаром?
WazzupP
Posts: 15
Joined: 2009-09-01 20:01:00

Post by WazzupP »

а у меня всё работает! а зачем писать переменные? разве както поможет то что вы будете знать ид сундука или лошади которую я кормлю? вот работающий скрипт:

Code: Select all

sub horse1()
   UO.Say("all stop")
   UO.Useobject(ock)
end sub

sub horse()
   uo.UseObject('self')
   UO.Say("all stop")
end sub

sub oclock()
horse() #слазит с лошади
UO.DeleteJournal()
ock:
UO.UseObject(oSeif) #открывает сундук с кормом
UO.FindType(oEat,'0x0000',oSeif) #находит в сундуке корм
UO.MoveItem('finditem','1',ock) #кидает одну морковку на лошадь
wait(1000)
if uo.injournal('the carrots') then
UO.FindType(oEat,'0x0000','backpack') #если лошадь не ест, то ищет корм  в бэкпаке
UO.MoveItem('finditem','2',oSeif) #перетаскивает морковку обратно в сейф
horse1() #садится на лошадь
else
goto ock #если лошадь съела то возвращается в начало скрипта
end if
end sub
Post Reply