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.
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.
Чесно говоря я не гуру по скриптам и по програмированию...скрипты я пишу не с нуля, а переделываю существующие под свои нужды...вот то чего ты написал я вообще не понял

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:Распиши скрипт на мелочи и всё.
Да, распиши, я хоть посмотрю, как надо расписывать правильные скрипты...
Э-эхх... Чой-то мне весело. К "дождю-сь", наверное.

Posted: 2007-07-13 19:18:21
by Scripts Writer
ADEPT_ABP wrote:Scripts Writer wrote:Распиши скрипт на мелочи и всё.
Да, распиши, я хоть посмотрю, как надо расписывать правильные скрипты...
По пунктам на маленькие отрывки. Обычно я начинал с
1. указать сундук, открыть сундук, взять мешок, присвоить его ID какой то переменной. Написали, запустили, проверили -всё работает, идём дальше.
2. думаем что делать с ингами (брать с пола или из сундука) и пишем для этого отдельную функцию, тестируем, идём дальше.
3. пишем функцию крафта в которой будет у нас меню, цикл проверки на журнал и динамическая пауза
4. добавляем к пункту 3 цикл и тестируем в создании 255 вещей + перекладка в определённый мешок.
5. ...
n. соединяем всё воедино и тестируем конечный вариант + правим если что.
п.с. но это было давно. Сейчас уже всё в одной функции всё сразу а потом уже небольшие корректировки.
Posted: 2007-07-13 19:46:58
by ADEPT_ABP
Scripts Writer wrote:По пунктам на маленькие отрывки. Обычно я начинал с
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:Нет, блок схема это блок схема, а я тебе расписал алгоритм.
Блок схема это операторы и вызовы функций в схеме

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

Умеешь неотвечать на важные вопросы.
С другой стороны, буду знать, что такое алгоритм. Спасибо.
Posted: 2007-07-13 20:10:00
by Scripts Writer
ADEPT_ABP wrote:Scripts Writer wrote:Нет, блок схема это блок схема, а я тебе расписал алгоритм.
Блок схема это операторы и вызовы функций в схеме

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

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