Page 1 of 1
Поправьте скрипт на переплавку плиз
Posted: 2009-02-27 21:52:03
by ynkemer
Добрый день. Написал вот такой вот скриптик. Вроде работает, но через какое-то время выдает еррор на линии 35 (такой даже нет в скрипте). Помогите пожалуйста. Это мой первый скрипт.
Code: Select all
sub plavka()
while not UO.Dead()
var i
var backpack
var Sunduk='0x400b7e27'
var arm='0x1415'
sb:
UO.FindType(arm,'0x0000',Sunduk) ;Cóíäóê ñ èíãàìè
wait(1000)
UO.Grab('1','finditem')
wait(1000)
If UO.GetQuantity('finditem') then
UO.WaitTargetObject('finditem')
UO.UseObject(0x40395596) ; Ôîðæ
wait(1000)
if uo.weight > 500 then
UO.SetReceivingContainer(Sunduk)
wait(200)
UO.FindType('0x1bef')
if UO.GetQuantity('finditem')>0 then
UO.Grab('0','finditem')
wait(200)
end if
UO.UnSetReceivingContainer()
end if
wait(1000)
goto sb
end sub
Re: Поправьте скрипт на переплавку плиз
Posted: 2009-02-27 22:04:29
by Kynep
Пробуй, я не тестил.
Code: Select all
sub plavka()
var i
var backpack
var Sunduk = '0x400b7e27'
var arm = '0x1415'
var forge = '0x40395596'
UO.FindType(arm,'0x0000', Sunduk)
If UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '1', 'backpack')
wait(1000)
UO.FindType(arm, '0x0000', 'backpack')
If UO.FindCount() > 0 then
UO.WaitTargetObject('finditem')
UO.DeleteJournal()
UO.UseObject(forge)
repeat
wait(100)
until UO.InJournal('smelt')
wait(500)
else
UO.Print('В паке ничего нет! Стоп!')
UO.Exec('terminate plavka')
endif
if uo.weight > 500 then
UO.FindType('0x1bef', '-1', 'backpack')
if UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '-1', Sunduk)
wait(1000)
UO.FindType('0x1bef', '-1', 'backpack')
until NOT UO.FindCount()
end if
end if
UO.FindType(arm,'0x0000',Sunduk)
until NOT UO.FindCount()
UO.Print('В сундуке ничего нет! Стоп!')
UO.Exec('terminate plavka')
endif
UO.Print('В сундуке ничего нет! Стоп!')
UO.Exec('terminate plavka')
end sub
Posted: 2009-02-27 22:43:59
by ynkemer
Спасибо,мне интересно где в моем ошибка
Posted: 2009-02-27 22:53:24
by Kynep
ynkemer wrote:Спасибо,мне интересно где в моем ошибка
Везде.

Это ваш, немного подрихтованный, вот и сравните, где ошибка

Posted: 2009-05-21 00:37:47
by ynkemer
Спасибо. Еще такой вопрос. А как можно вписать в скрипт несколько вещей. Я попробовал вот так
Code: Select all
sub plavka()
var backpack
var Sunduk = '0x403CBCC6'
var forge = '0x401D9F47'
var k
DIM arm[3]
arm[0]=0x1415
arm[1]=0x13BF
arm[2]=0x13BE
uo.UseObject(Sunduk)
while not uo.Dead()
for k = 0 to 2
UO.FindType(arm[k],'0x0000', Sunduk)
If UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '1', 'backpack')
wait(1000)
UO.FindType(arm[k], '0x0000', 'backpack')
If UO.FindCount() > 0 then
UO.WaitTargetObject('finditem')
UO.DeleteJournal()
UO.UseObject(forge)
repeat
wait(100)
until UO.InJournal('smelt')
wait(500)
else
UO.Print(' ïàêå íè÷åãî íåò! Ñòîï!')
UO.Exec('terminate plavka')
endif
if uo.weight > 500 then
UO.FindType('0x1bef', '-1', 'backpack')
if UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '-1', Sunduk)
wait(1000)
UO.FindType('0x1bef', '-1', 'backpack')
until NOT UO.FindCount()
end if
end if
UO.FindType(arm[k],'0x0000',Sunduk)
until NOT UO.FindCount()
UO.Print(' ñóíäóêå íè÷åãî íåò! Ñòîï!')
UO.Exec('terminate plavka')
endif
UO.Print(' ñóíäóêå íè÷åãî íåò! Ñòîï!')
UO.Exec('terminate plavka')
end sub
Он видет сколько вещей нужно плавить но после того как заканчиваются вещи arm[1] он останавливает скрипт[/code]
Posted: 2009-05-21 06:05:50
by Kynep
Posted: 2009-05-21 08:44:07
by ynkemer
Спасибо. Честно говоря, я только учусь работать со скриптами.
Сделал так. Убрал из скрипта terminate и заменил на next. Он успешно плавит вещь 1 типа, потом плавит 1 вещь другого типа и unhalted exception in parser. Не подскажете в чем проблема
Code: Select all
sub plavka()
var i
var k
var backpack
var Sunduk = '0x4005A13F'
var forge = '0x401D9F47'
DIM arm[8]
arm[0]='0x1415' #Platemail Пузо
arm[1]='0x13BF' #Chainmail пузо
arm[2]='0x1413' #ГОРГЕТКО
arm[3]='0x1412' #Plate Helm
arm[4]='0x1414' #Gloves
arm[5]='0x140C' #Bascinet
arm[6]='0x1410' #Плечи
arm[7]='0x13BE' #Chainmail ноги
arm[8]='0x13BB' #Chainmail БАШКА
repeat
uo.UseObject(Sunduk)
while not uo.Dead()
for k = 0 to 8
UO.FindType(arm[k],'0x0000', Sunduk)
If UO.FindCount() > 0 then
UO.MoveItem('finditem', '1', 'backpack')
wait(1000)
UO.FindType(arm[k], '0x0000', 'backpack')
If UO.FindCount() > 0 then
UO.WaitTargetObject('finditem')
UO.DeleteJournal()
UO.UseObject(forge)
repeat
wait(100)
until UO.InJournal('smelt')
wait(500)
else
next
endif
if uo.weight > 500 then
UO.FindType('0x1bef', '-1', 'backpack')
if UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '-1', Sunduk)
wait(1000)
UO.FindType('0x1bef', '-1', 'backpack')
until NOT UO.FindCount()
end if
end if
UO.FindType(arm[k],'0x0000',Sunduk)
until NOT UO.FindCount()
next
endif
next
end sub
Огромное спасибо. Вы мне очень помогаете.
Posted: 2009-05-21 10:17:21
by Kynep
Зачем столько next?
Достаточно одного в самом конце, после endif, но перед terminate. Который, в свою очередь, удалять не нужно. Предпоследний terminate лучше удалить

Posted: 2009-05-21 12:11:50
by ynkemer
вы гений! Спасибо. Все работает. Теперь последний вопрос)) Для идеальности скрипта. Как включить в него цикличность?
Этот скрипт после того как заканчиваются айтемы arm[4] останавливается, даже если добавить новых arm[1-3]
Как это можно исправить?
Огромное спасибо. Вы мне очень помогаете.
Posted: 2009-05-21 16:18:29
by Kynep
Ну он вроде плавит по очереди все итемы, которые указаны в массиве, т.е. если указано 8 типов, он будет плавить все 8, по очереди до конца, т.е. пока не кончится тип arm[0], он не перейдет на arm[1], я думаю, что когда он дойдет до arm[8] у вас пак пустой будет, зачем цикличность, или я что-то не так понял?
Posted: 2009-05-21 20:40:54
by ynkemer
Такое кол-во веса он и взять не сможет. Он берет из сундука. Просто есть определенное кол-во армора, которое берется из сундука. Чар скупщик делает свое дело гораздо быстрее, чем тот, кто плавит. Соответственно, постоянно происходит пополнение мешка. И после окончания arm[8] он не начинает плавить заново, хотя второй чар уже положил туда достаточное количество брони. Скрипт приходится повторно запускать вручную. На ночь, например, это дело оставить нельзя.
Я обратился к знакомому, он сказал, что я дебил, скрипт кривой и его нужно заново переписывать с 0, чтобы была цикличность. Так ли это?
Posted: 2009-05-21 21:08:39
by Kynep
Ыыыы, нет конечно, скажи знакомому, что он дибил и сам кривой, а для цикличности добавь
перед for, в начале скрипта. И wend после next, в конце скрипта, а лучше выложи полный скрипт, мало ли, может там есть ошибки.
З.Ы.Передай знакомому, за "кривой скрипт", сломаю нос

Если такой умный, пускай напишет свой и выложит, мы сравним, грамотей блин.

З.Ы.Ы. DIM arm[8] нужно исправить на DIM arm[9], итемов то 9 получается, счет с 0 начинается.

Code: Select all
arm[0]='0x1415' #Platemail Пузо
arm[1]='0x13BF' #Chainmail пузо
arm[2]='0x1413' #ГОРГЕТКО
arm[3]='0x1412' #Plate Helm
arm[4]='0x1414' #Gloves
arm[5]='0x140C' #Bascinet
arm[6]='0x1410' #Плечи
arm[7]='0x13BE' #Chainmail ноги
arm[8]='0x13BB' #Chainmail БАШКА
Элементов 9 получается, а массив обьявлен на 8.
Posted: 2009-05-23 23:59:21
by ynkemer
Видимо я что-то не правильно сделал. Скрипт плавит, но если армор добавить, то он его не плавит(
Вот сам скрипт
Code: Select all
sub plavka()
var i
var backpack
var Sunduk = '0x40389F20'
var forge = '0x403EF3F9'
DIM arm[4]
arm[1]=0x1B76
arm[2]=0x13BF
arm[3]=0x13BE
arm[4]=0x140C
while not uo.dead()
for i = 1 to 4
UO.FindType(arm[i],'0x0000', Sunduk)
If UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '1', 'backpack')
wait(1000)
UO.FindType(arm[i], '0x0000', 'backpack')
If UO.FindCount() > 0 then
UO.WaitTargetObject('finditem')
UO.DeleteJournal()
UO.UseObject(forge)
repeat
wait(100)
until UO.InJournal('smelt')
wait(500)
else
UO.Print('В паке ничего нет! Стоп!')
UO.Exec('terminate plavka')
endif
if uo.weight > 500 then
UO.FindType('0x1bef', '-1', 'backpack')
if UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '-1', Sunduk)
wait(1000)
UO.FindType('0x1bef', '-1', 'backpack')
until NOT UO.FindCount()
end if
end if
UO.FindType(arm[i],'0x0000',Sunduk)
until NOT UO.FindCount()
next
wend
UO.Print('В сундуке ничего нет! Стоп!')
UO.Exec('terminate plavka')
endif
UO.Print('В сундуке ничего нет! Стоп!')
UO.Exec('terminate plavka')
end sub
[/quote]
Posted: 2009-05-28 10:36:58
by Mirage
К чему такие загоны?
попробуй так. Берет из сундука любой предмет по 1 итему плавить скидывает инги под ноги.
Code: Select all
sub plavka()
var i
var backpack
var Sunduk = '0x40389F20'
var forge = '0x403EF3F9'
while not uo.dead()
UO.FindType(-1,-1, Sunduk)
If UO.FindCount() > 0 then
repeat
UO.MoveItem('finditem', '1', 'backpack')
wait(1000)
UO.DeleteJournal()
UO.WaitTargetObject('finditem')
UO.UseObject(forge)
repeat
wait(100)
until UO.InJournal('smelt|put|is consumed|fire is not')
wait(500)
if uo.weight > 500 then
UO.FindType('0x1bef', '-1', 'backpack')
UO.MoveItem('finditem', '-1', 'ground') ; или сундук 2.
wait(1000)
end if
UO.FindType(-1,-1,Sunduk)
until NOT UO.FindCount()
endif
UO.Print('В сундуке ничего нет! Стоп!')
UO.Exec('terminate plavka')
wend
end sub
Posted: 2009-06-03 09:15:22
by ynkemer
Спасибо огромное. Скрипт отлично работает