Page 1 of 1

Помогите с дороботкой

Posted: 2007-07-10 20:46:35
by MorbidAngel

Code: Select all

VAR sunduk
var SundukPust
var Empty=1
var beltpouch
VAR x
VAR y
sub posadka()
UO.Exec("set distance 0")
UO.FindType('0x0E75','0x0000','ground')
uo.addobject('sunduk','finditem')
wait(1000)
UO.FindType('0x0E75','0x00AD','ground')
uo.addobject('SundukPust','finditem')
UO.UseObject('sunduk')
wait(1000)
UO.UseObject('SundukPust')
while UO.InJournal("Эта местность")==0
if Empty == 1 then
         UO.FindType('0x0E76','-1','sunduk')
         uo.click('finditem')
         wait(500)
         if (UO.FindCount() > 0) then
            uo.addobject('beltpouch','finditem')
         Else
            UO.FindType('0x0E79','-1','sunduk')
            uo.click('finditem')
            wait(500)
            if (UO.FindCount() > 0) then
               uo.addobject('beltpouch','finditem')
            Else
               UO.FindType('0x09B0','-1','sunduk')
               uo.click('finditem')
               wait(500)
               if (UO.FindCount() > 0) then
                  uo.addobject('beltpouch','finditem')
               Else
                  uo.Print('Выберите мешок: ')
                  uo.exec('addobject beltpouch')
                  while uo.targeting()
                     wait(100)
                  wend
               Endif
            Endif
         Endif
UO.UseObject('beltpouch')

UO.Findtype( '0x18E3', '-1', 'beltpouch' )
while UO.FindCount() > 0

for x = -3 to 3
for y= -3 to 3

UO.FindType('0x18E3', -1, 'beltpouch')
if UO.FindCount() > 0 then
uo.drop("1",STR(x),STR(y),"0",'finditem')
end if
UO.DeleteJournal()
wait (700)
UO.Exec("set distance 3")
if UO.FindCount() > 0 then
while UO.CountGround('0x18E3') > 0 and UO.InJournal("Эта местность")==0
UO.Usefromground('0x18E3')
wait (100)
wend
end if
next
next
wend
Empty=0
UO.Findtype( '0x18E3', '-1', 'beltpouch' )
 if UO.FindCount() == 0 then
         UO.MoveItem('beltpouch', 0, 'SundukPust')
         Empty=1
      end if
wend
end sub

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

Re: Помогите с дороботкой

Posted: 2007-07-11 14:13:57
by Rivory
[quote="MorbidAngel"]

Code: Select all

#VAR sunduk #####эти переменные
#var SundukPust ###обьявлять не надо
var Empty=1
#var beltpouch###эту тоже
VAR x
VAR y
sub posadka()
UO.Exec("set distance 0")
UO.FindType('0x0E75','0x0000','ground')
uo.addobject('sunduk','finditem')
wait(1000)
UO.FindType('0x0E75','0x00AD','ground')
uo.addobject('SundukPust','finditem')
UO.UseObject('sunduk')
wait(1000)
UO.UseObject('SundukPust')
while UO.InJournal("Эта местность")==0 ## уверен что инжа читает по русски ?
if Empty == 1 then
         UO.FindType('0x0E76','-1','sunduk')
         uo.click('finditem')  #зачем кликаем ?
         wait(500)
         if (UO.FindCount() > 0) then
            uo.addobject('beltpouch','finditem')
         Else
            UO.FindType('0x0E79','-1','sunduk')
            uo.click('finditem')    #зачем кликаем ?
            wait(500)
            if (UO.FindCount() > 0) then
               uo.addobject('beltpouch','finditem')
            Else
               UO.FindType('0x09B0','-1','sunduk')
               uo.click('finditem')
               wait(500)
               if (UO.FindCount() > 0) then
                  uo.addobject('beltpouch','finditem')
               Else
                  uo.Print('Выберите мешок: ')
                  uo.exec('addobject beltpouch')
                  while uo.targeting()
                     wait(100)
                  wend
               Endif
            Endif
         Endif
UO.UseObject('beltpouch')

UO.Findtype( '0x18E3', '-1', 'beltpouch' )
while UO.FindCount() > 0

for x = -3 to 3
for y= -3 to 3

UO.FindType('0x18E3', -1, 'beltpouch')
if UO.FindCount() > 0 then
uo.drop("1",STR(x),STR(y),"0",'finditem')
end if
UO.DeleteJournal()
wait (700)
UO.Exec("set distance 3")
if UO.FindCount() > 0 then
while UO.CountGround('0x18E3') > 0 and not UO.InJournal("Эта местность") ## тут чуток поправил
UO.Usefromground('0x18E3')
wait (100)
wend
end if
next
next
wend
Empty=0
UO.Findtype( '0x18E3', '-1', 'beltpouch' )
 if UO.FindCount() == 0 then
         UO.MoveItem('beltpouch', 0, 'SundukPust')
         Empty=1
      end if
wend
end sub

Хз.. я покомментировал только мелкие недочёты.. а серьёзных ошибок не нашёл

Posted: 2007-07-11 15:26:01
by Scripts Writer
Через прицелы цикл не делается- по завершении первой иттерации он попросит указать мешок второй раз, а скрипт как я понял расчитан на отсутствие игрока у компа. Делай через

Code: Select all

uo.FindType()
if uo.FindCount() then
  variable= uo.GetSerial()
end if


2.

Code: Select all

uo.set('finddistance','3') 

Posted: 2007-07-12 13:27:06
by MorbidAngel
Scripts Writer wrote:Через прицелы цикл не делается- по завершении первой иттерации он попросит указать мешок второй раз, а скрипт как я понял расчитан на отсутствие игрока у компа. Делай через

Code: Select all

uo.FindType()
if uo.FindCount() then
  variable= uo.GetSerial()
end if


2.

Code: Select all

uo.set('finddistance','3') 

Чесно говоря я не гуру по скриптам и по програмированию...скрипты я пишу не с нуля, а переделываю существующие под свои нужды...вот то чего ты написал я вообще не понял :oops:

Re: Помогите с дороботкой

Posted: 2007-07-12 13:28:39
by MorbidAngel
Rivory wrote:
MorbidAngel wrote:

Code: Select all

#VAR sunduk #####эти переменные
#var SundukPust ###обьявлять не надо
var Empty=1
#var beltpouch###эту тоже
VAR x
VAR y
sub posadka()
UO.Exec("set distance 0")
UO.FindType('0x0E75','0x0000','ground')
uo.addobject('sunduk','finditem')
wait(1000)
UO.FindType('0x0E75','0x00AD','ground')
uo.addobject('SundukPust','finditem')
UO.UseObject('sunduk')
wait(1000)
UO.UseObject('SundukPust')
while UO.InJournal("Эта местность")==0 ## уверен что инжа читает по русски ?
if Empty == 1 then
         UO.FindType('0x0E76','-1','sunduk')
         uo.click('finditem')  #зачем кликаем ?
         wait(500)
         if (UO.FindCount() > 0) then
            uo.addobject('beltpouch','finditem')
         Else
            UO.FindType('0x0E79','-1','sunduk')
            uo.click('finditem')    #зачем кликаем ?
            wait(500)
            if (UO.FindCount() > 0) then
               uo.addobject('beltpouch','finditem')
            Else
               UO.FindType('0x09B0','-1','sunduk')
               uo.click('finditem')
               wait(500)
               if (UO.FindCount() > 0) then
                  uo.addobject('beltpouch','finditem')
               Else
                  uo.Print('Выберите мешок: ')
                  uo.exec('addobject beltpouch')
                  while uo.targeting()
                     wait(100)
                  wend
               Endif
            Endif
         Endif
UO.UseObject('beltpouch')

UO.Findtype( '0x18E3', '-1', 'beltpouch' )
while UO.FindCount() > 0

for x = -3 to 3
for y= -3 to 3

UO.FindType('0x18E3', -1, 'beltpouch')
if UO.FindCount() > 0 then
uo.drop("1",STR(x),STR(y),"0",'finditem')
end if
UO.DeleteJournal()
wait (700)
UO.Exec("set distance 3")
if UO.FindCount() > 0 then
while UO.CountGround('0x18E3') > 0 and not UO.InJournal("Эта местность") ## тут чуток поправил
UO.Usefromground('0x18E3')
wait (100)
wend
end if
next
next
wend
Empty=0
UO.Findtype( '0x18E3', '-1', 'beltpouch' )
 if UO.FindCount() == 0 then
         UO.MoveItem('beltpouch', 0, 'SundukPust')
         Empty=1
      end if
wend
end sub

Хз.. я покомментировал только мелкие недочёты.. а серьёзных ошибок не нашёл

Спасибо, щас буду тестить...клики остались из старого скрипта на крафт этих самых семян...чтобы увидеть когда мешок заполнился...ммм...по русски...хмммм...так она частенько скрипт то останавливает....значит читает...

Posted: 2007-07-13 08:09:06
by Scripts Writer
Пытался объяснить что хотел сказать-не получилось.

Распиши скрипт на мелочи и всё. Сначало чтобы он брал 1 мешок ,затем пустой убирал, затем отличал пустой мешок от полного, затем сажал, затем всё это соедини вместе и будет тебе собственный скрипт в котором ты уже будешь разбираться и уверен на 100%.

Posted: 2007-07-13 19:03:54
by ADEPT_ABP
Scripts Writer wrote:Распиши скрипт на мелочи и всё.


Да, распиши, я хоть посмотрю, как надо расписывать правильные скрипты... :mrgreen:
Э-эхх... Чой-то мне весело. К "дождю-сь", наверное. :roll:

Posted: 2007-07-13 19:18:21
by Scripts Writer
ADEPT_ABP wrote:
Scripts Writer wrote:Распиши скрипт на мелочи и всё.


Да, распиши, я хоть посмотрю, как надо расписывать правильные скрипты... :mrgreen:


По пунктам на маленькие отрывки. Обычно я начинал с

Code: Select all

*К примеру скрипт на тинкер*


1. указать сундук, открыть сундук, взять мешок, присвоить его ID какой то переменной. Написали, запустили, проверили -всё работает, идём дальше.

2. думаем что делать с ингами (брать с пола или из сундука) и пишем для этого отдельную функцию, тестируем, идём дальше.

3. пишем функцию крафта в которой будет у нас меню, цикл проверки на журнал и динамическая пауза

4. добавляем к пункту 3 цикл и тестируем в создании 255 вещей + перекладка в определённый мешок.

5. ...

n. соединяем всё воедино и тестируем конечный вариант + правим если что.

п.с. но это было давно. Сейчас уже всё в одной функции всё сразу а потом уже небольшие корректировки.

Posted: 2007-07-13 19:46:58
by ADEPT_ABP
Scripts Writer wrote:По пунктам на маленькие отрывки. Обычно я начинал с

Code: Select all

*К примеру скрипт на тинкер*


1. указать сундук, открыть сундук, взять мешок, присвоить его ID какой то переменной. Написали, запустили, проверили -всё работает, идём дальше.

2. думаем что делать с ингами (брать с пола или из сундука) и пишем для этого отдельную функцию, тестируем, идём дальше.

3. пишем функцию крафта в которой будет у нас меню, цикл проверки на журнал и динамическая пауза

4. добавляем к пункту 3 цикл и тестируем в создании 255 вещей + перекладка в определённый мешок.

5. ...

n. соединяем всё воедино и тестируем конечный вариант + правим если что.

п.с. но это было давно. Сейчас уже всё в одной функции всё сразу а потом уже небольшие корректировки.


Ну-у... Если мне не изменяет память - это ж блок-схема, только по-строчно.

Я кстати так и делаю, с заглядыванием в HELP инжекта.
Вот и спросил, что даёт резервирование переменных, до начала "тела функции". Пробежался по ФАК-у, - не нашёл, завтра буду шерстить Уроки.
Хочу сократить скрипт на BS(тема BlackSmithing).

Posted: 2007-07-13 19:49:16
by Scripts Writer
Нет, блок схема это блок схема, а я тебе расписал алгоритм.

Блок схема это операторы и вызовы функций в схеме :) (прямоугольник для операторов, ромб для условных операторов, вызов функций в прямоугольниках с полосками побокам) :)

Posted: 2007-07-13 20:02:27
by ADEPT_ABP
Scripts Writer wrote:Нет, блок схема это блок схема, а я тебе расписал алгоритм.

Блок схема это операторы и вызовы функций в схеме :) (прямоугольник для операторов, ромб для условных операторов, вызов функций в прямоугольниках с полосками побокам) :)


Умеешь неотвечать на важные вопросы. :mrgreen:
С другой стороны, буду знать, что такое алгоритм. Спасибо.

Posted: 2007-07-13 20:10:00
by Scripts Writer
ADEPT_ABP wrote:
Scripts Writer wrote:Нет, блок схема это блок схема, а я тебе расписал алгоритм.

Блок схема это операторы и вызовы функций в схеме :) (прямоугольник для операторов, ромб для условных операторов, вызов функций в прямоугольниках с полосками побокам) :)


Умеешь неотвечать на важные вопросы. :mrgreen:
С другой стороны, буду знать, что такое алгоритм. Спасибо.
:wink: