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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
MorbidAngel
Posts: 51
Joined: 2004-08-26 16:47:05

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

Post 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) и когда в мешочке закончатся семена складывал его в в сумку с пустыми мешками, открывал новый с семенами, опять сажал...и так пока с сервера не придет сообщение что месность перегружена...я вот чтото написал подобное, но к сожалению работает както не стабильно...то полные мешки начинает к пустым класть...то не останавливается когда сфера сообщает что уже низзя воткнуть еще один росток...помогите пожалуйста...очень буду благодарен....если надо будет чара и дом где потестить скрипт, предоставлю....
Rivory
Posts: 205
Joined: 2005-01-06 11:49:28

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

Post 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

Хз.. я покомментировал только мелкие недочёты.. а серьёзных ошибок не нашёл
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post 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') 
MorbidAngel
Posts: 51
Joined: 2004-08-26 16:47:05

Post 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:
MorbidAngel
Posts: 51
Joined: 2004-08-26 16:47:05

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

Post 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

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

Спасибо, щас буду тестить...клики остались из старого скрипта на крафт этих самых семян...чтобы увидеть когда мешок заполнился...ммм...по русски...хмммм...так она частенько скрипт то останавливает....значит читает...
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Пытался объяснить что хотел сказать-не получилось.

Распиши скрипт на мелочи и всё. Сначало чтобы он брал 1 мешок ,затем пустой убирал, затем отличал пустой мешок от полного, затем сажал, затем всё это соедини вместе и будет тебе собственный скрипт в котором ты уже будешь разбираться и уверен на 100%.
ADEPT_ABP
Posts: 223
Joined: 2006-05-12 08:03:45
Contact:

Post by ADEPT_ABP »

Scripts Writer wrote:Распиши скрипт на мелочи и всё.


Да, распиши, я хоть посмотрю, как надо расписывать правильные скрипты... :mrgreen:
Э-эхх... Чой-то мне весело. К "дождю-сь", наверное. :roll:
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

ADEPT_ABP wrote:
Scripts Writer wrote:Распиши скрипт на мелочи и всё.


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


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

Code: Select all

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


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

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

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

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

5. ...

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

п.с. но это было давно. Сейчас уже всё в одной функции всё сразу а потом уже небольшие корректировки.
ADEPT_ABP
Posts: 223
Joined: 2006-05-12 08:03:45
Contact:

Post by ADEPT_ABP »

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

Code: Select all

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


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

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

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

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

5. ...

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

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


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

Я кстати так и делаю, с заглядыванием в HELP инжекта.
Вот и спросил, что даёт резервирование переменных, до начала "тела функции". Пробежался по ФАК-у, - не нашёл, завтра буду шерстить Уроки.
Хочу сократить скрипт на BS(тема BlackSmithing).
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Нет, блок схема это блок схема, а я тебе расписал алгоритм.

Блок схема это операторы и вызовы функций в схеме :) (прямоугольник для операторов, ромб для условных операторов, вызов функций в прямоугольниках с полосками побокам) :)
ADEPT_ABP
Posts: 223
Joined: 2006-05-12 08:03:45
Contact:

Post by ADEPT_ABP »

Scripts Writer wrote:Нет, блок схема это блок схема, а я тебе расписал алгоритм.

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


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

Post by Scripts Writer »

ADEPT_ABP wrote:
Scripts Writer wrote:Нет, блок схема это блок схема, а я тебе расписал алгоритм.

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


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