Page 1 of 2
редакция скрипта, сортировка по паку
Posted: 2011-11-16 12:16:21
by Gromiz
решил весь автолоад прогнать через
http://nmy.id.lv/codesweeper.htm, прибраться так сказать.
так вот там есть 1 мой скрипт, который давно составлялся. Сам скрипт работает и ошибок не вылетает, но codesweeper ругается на структуру скрипта, может я что-то не так синтаксис сделал?
не пугайтесь объема скрипта, хоть он и большой, но в нем просто повторяются блоки.
описание скрипта:
расставляет необходимые нам предметы по координатам в бекпаке, если нет предмета к расстановке, то переходит следующему пункту.
Code: Select all
sub Sort_new()
DIM R[1]
DIM D[1]
DIM B[1]
DIM Z[1]
var c
R[1] = 0x0A3E # Ящик с регами
D[1] = 0x14FB # отмычки
B[1] = 0x0EFA # книга магии
Z[1] = 0x0F9E # ножницы
# Ящик с регами
wait(100)
for c=1 to 1
UO.FindType(R[c],"0","backpack")
if UO.FindCount()>0 Then
UO.MoveItem("finditem","0","backpack","150","40","0")
wait(100)
Endif
wait(100)
# Отмычки
wait(100)
for c=1 to 1
UO.FindType(D[c],"0","backpack")
if UO.FindCount()>0 Then
UO.MoveItem("finditem","0","backpack","65","40","0")
wait(100)
Endif
wait(100)
# Книга магии
wait(100)
for c=1 to 1
UO.FindType(B[c],"0","backpack")
if UO.FindCount()>0 Then
UO.MoveItem("finditem","0","backpack","50","40","0")
wait(100)
Endif
wait(100)
# Ножницы
wait(100)
for c=1 to 1
UO.FindType(Z[c],"0","backpack")
if UO.FindCount()>0 Then
UO.MoveItem("finditem","0","backpack","95","40","0")
wait(100)
Endif
wait(100)
# Rune
wait(100)
UO.FindType('0x1F14','0x048D',"0","backpack")
if UO.FindCount()>0 Then
UO.MoveItem("finditem","0","backpack","130","43","0")
wait(100)
Endif
wait(100)
uo.print(' -= Done =- ')
End sub
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-16 12:57:47
by ZeroDX
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-16 13:01:55
by Mirage
Зашибись. Обманул программу
В структуре скрипта ошибка которую указали выше.
НО она не КРИТИЧНА так как переменная не перещелкивается - это частный случай, синоним var
Вобще весь скрипт можно заменить на
Code: Select all
sub sort()
uo.exec ("moveitem '_0x0EFA' '0' 'backpack' 25 20 0");spellbook
uo.exec ("moveitem '_0x0F9E' '0' 'backpack' 40 20 0");Silver Scissors
uo.exec ("moveitem '_0x1012' '0' 'backpack' 25 20 0");Key
uo.exec ("moveitem '_0x1012' '0' 'backpack' 25 23 0");Key
uo.exec ("moveitem '_0x0E9B' '0' 'backpack' 50 20 0");ступка
uo.exec ("moveitem '0x40380220' '0' 'backpack' 170 20 0");руна
uo.exec ("moveitem '0x40F03AEC' '0' 'backpack' 150 20 0");руна
uo.exec ("moveitem '0x40F03791' '0' 'backpack' 160 20 0");руна
uo.exec ("moveitem '^0x0A3E' '0' 'backpack' 160 170 0");сундук
end sub
(старый вариант - новый не нашел

)
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-16 13:32:09
by Gromiz
ZeroDX wrote:Не закрытые
for
Пример
спасибо, теперь все красиво
Mirage wrote:
uo.exec ("moveitem '_0x0EFA' '0' 'backpack' 25 20 0");spellbook
Зашибись, опять двадцать пять.
весь мой гемор в сотню строчек уместил в 1.
спасибо, это еще лучше
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-16 13:44:44
by Gromiz
хотя не, оно по цвету не ищет

Re: редакция скрипта, сортировка по паку
Posted: 2011-11-16 15:18:36
by Mirage
Только что сам понял что скрипт работает с любым цветом не различая заданного
Да и фиг с ним.
Code: Select all
UO.FindType('0x1F14','0x048D',"0","backpack")
if UO.FindCount()>0 Then
UO.MoveItem("finditem","0","backpack","130","43","0")
wait(100)
Endif
ниже моих строк добавить и все.
А вот нашел нонешний вариант:
Code: Select all
sub sort()
uo.moveitem ('_0x0EFA', '0', 'backpack', 25, 20, 0);spellbook
uo.moveitem ('_0x0F9E', '0', 'backpack', 40, 20, 0);Silver Scissors
uo.moveitem ('_0x1012', '0', 'backpack', 25, 20, 0);Key
uo.moveitem ('_0x1012', '0', 'backpack', 25, 23, 0);Key
uo.moveitem ('_0x0E9B', '0', 'backpack', 50, 20, 0);ступка
uo.moveitem ('^0x0A3E', '0', 'backpack', 160, 170, 0);сундук
uo.moveitem ('0x40380220', '0', 'backpack', 170, 20, 0);руна
uo.moveitem ('0x40F03AEC', '0', 'backpack', 150, 20, 0);руна
uo.moveitem ('0x40F03791', '0', 'backpack', 160, 20, 0);руна
end sub
Пофигу на цвет, руны по ID задаются

Re: редакция скрипта, сортировка по паку
Posted: 2011-11-16 15:50:37
by ZeroDX
Это всё ньюби вещи? Если руны слутают - будет не очень удобно каждый раз залезать в скрипт и править id
Можно же сделать что-то универсальное и громоздкое в 300 строк, и не парится с id. Если принципиально какая руна где лежит - можно сортировать по имени.
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-17 08:16:07
by Gromiz
удобнее покрас использовать для этого, поиск по цвету и нужен ))
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-17 10:27:38
by Mirage
на вкус и цвет как говорится. Просто мне не очень понятно - зачем рунки сортировать если они покрашены и зачем красить если они отсортированы?

Re: редакция скрипта, сортировка по паку
Posted: 2011-11-18 11:38:10
by Gromiz
я просто еще 4 вида бутылок "подшиваю" в сумке, а они отличаются, только цветом.
блиин, жаль в эту строчку не добавляется цвет, вообще шикарно было бы
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-18 21:15:42
by Sirocco
вторая цифра это цвет.
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-18 21:43:13
by ZeroDX
вторая цифра это количество
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-18 21:51:32
by Sirocco
возможно я ошибся.
вывод тут один - пользуйтесь универсальными ф-циями с параметрами.
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-20 11:33:42
by Gromiz
хмм, скрипт не всегда с первого раза расставляет итемы по координатам

иногда приходиться запускать по 2-3 раза, чтобы все итемы расставлял.
никто не сталкивался и в чем может быть проблема? (про скрипт из 1го поста)
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-20 13:51:11
by ZeroDX
Он их не находит или просто не передвигает? Если второй вариант, то на
сервере может стоять защита от быстрого перемещения итемов
+1
Увеличить паузу до 500-700 мсек ©Mirage
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-21 13:55:05
by Gromiz
не передвигает, в паке они есть.
увеличил задержку - полет нормальный.
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-21 22:53:12
by ZeroDX
Как вариант...
Code: Select all
sub perekladka3()
var i, moveDelay = 1100
Dim Slot[8]
Slot[0] = '0x0EFA -1 25 20 0 ' ;SpellBook
Slot[1] = '0x1012 -1 35 20 0 ' ;Key
Slot[2] = '0x1012 -1 38 20 0 ' ;Key
Slot[3] = '0x0E9B -1 50 20 0 ' ;Mortar
Slot[4] = '0x1F14 -1 140 20 0 ' ;Rune
Slot[5] = '0x0F7B -1 150 20 0 ' ;Rune
Slot[6] = '0x0F7B -1 160 20 0 ' ;Rune
Slot[7] = '0x0F7B -1 170 20 0 ' ;Rune
For i = 0 to 7
UO.FindType(GetWord(Slot[i], 1, ' '), GetWord(Slot[i], 2, ' '), 'backpack')
If UO.FindCount() then
UO.Print(UO.GetSerial('finditem'))
UO.MoveItem('finditem', -1, 'backpack', GetWord(Slot[i], 3, ' '), GetWord(Slot[i], 4, ' '), GetWord(Slot[i], 5, ' '))
UO.Ignore('finditem')
Wait(moveDelay)
Endif
Next
UO.IgnoreReset()
Endsub
Sub GetWord(str, num, div)
var tmpst, i, dlin, kol = 0, start = 0
dlin = len(str)
For i = 0 to dlin - 1
If mid(str, i, 1) == div or i == dlin - 1 then
kol = kol + 1
If kol == num then
tmpst = mid(str, start, i - start)
Return tmpst
else
While mid(str, i, 1) == div
i = i + 1
Wend
If kol == num - 1 then
start = i
Endif
Endif
Endif
Next
tmpst = ''
Return tmpst
Endsub
Строки массива:
1) Тип 2) Цвет 3-5) Координаты в паке
В конце строки обязательно должен стоять пробел
В скрипте есть гетворд эдреда
p.s. когда тестил, вместо типов рун засунул тип блуд моса... работает =)
pss с дрв постоянно дискает
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-21 23:09:58
by Mirage
Вот ты черт - я забыл про getword... И главное ведь когда я спрашивал про массив с элементом в виде координат "X Y Z" никто не подсказал.
ZeroDX респект и уважуха за вариант.
Ушел переписывать свои координатные скрипты

Re: редакция скрипта, сортировка по паку
Posted: 2011-11-21 23:15:18
by ZeroDX
Этот гетворд немного подделан, в оригинале нельзя было указать разделитель. Я не помню зачем я его переделал...
Вспомнил.. что-то там связанное с названиями скиллов.
Code: Select all
var string = 'Animal Lore@Animal Taming@'
UO.Print(GetWord(string, 1, '@'))
Endsub
Re: редакция скрипта, сортировка по паку
Posted: 2011-11-22 06:56:53
by Sirocco
Ненормальные люди, вы действительно считаете, что ф-ция гетворд работает быстрее чем простая ф-ция с аргументами?