Page 3 of 6

Posted: 2005-02-09 15:59:44
by Savage
[quote="Gromiz"народ получилость
[/quote]
Гуд. Теперь можно подключать массив и циклы. Задача: при запуске скрипта чар должен поднять камень любого типа и распилить его:

Массивы определяются как DIM Name[Index] то есть к примеру
DIM st[7]

st[0]='0x0000'
...
st[6]='0x0000'

Цикл нам подойдет здесь такой while X wend за подробностями в учебник.
Вот что примерно должно получиться:

Code: Select all

sub st()
VAR Exit=0, i=0
DIM st[7]

st[0]='0x0000'
st[1]='0x0000'
st[2]='0x0000'
st[3]='0x0000'
st[4]='0x0000'
st[5]='0x0000'
st[6]='0x0000'

while Exit<>1 OR i<6
uo.findtype(st[i],-1,'ground')
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0000'); кирка
Exit=1
endif
i=i+1
wend
end sub


Сложновато получилось, но работать должно :) Описание незнакомых команд смотрим в хэлпе

Posted: 2005-02-09 16:02:24
by Gromiz
Savage wrote:[quote="Gromiz"народ получилость

Гуд. Теперь можно подключать массив и циклы. Задача: при запуске скрипта чар должен поднять камень любого типа и распилить его:

Массивы определяются как DIM Name[Index] то есть к примеру
DIM st[7]

st[0]='0x0000'
...
st[6]='0x0000'

Цикл нам подойдет здесь такой while X wend за подробностями в учебник.
Вот что примерно должно получиться:

Code: Select all

sub st()
VAR Exit=0, i=0
DIM st[7]

st[0]='0x0000'
st[1]='0x0000'
st[2]='0x0000'
st[3]='0x0000'
st[4]='0x0000'
st[5]='0x0000'
st[6]='0x0000'

while Exit<>1 OR i<6
uo.findtype(st[i],-1,'ground')
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0000'); кирка
Exit=1
endif
i=i+1
wend
end sub


Сложновато получилось, но работать должно :) Описание незнакомых команд смотрим в хэлпе[/quote]

спасибо , щас попробую разобраться и сделать в игре.....потом опять сюда... -))

Posted: 2005-02-09 16:09:02
by Savage
Сложновато выглядит из-за проверок. Вот допустим зачем нам юзать кирку на неизвестно что если камня такого типа нет? Это реализовано условием и командой uo.getquantity() если че-то есть то попилим. Ну опять же если распилил, то скорее всего больше ничего нет поэтому можно досрочно выйти из цикла. Переменной Exit присваивается значение 1 и вываливаемся.

Ладно мне на работу надо сгонять, час у тя на эксперементы :)

Posted: 2005-02-09 17:20:16
by Gromiz
вот скрипт....но ....в листе используемых функций в инже, она появляется и моментально исчезает ?? вроде все нормально сделал :?: :?:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.findtype(st[i],-1,'ground')
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
Exit=1
endif
i=i+1
wend
end sub

Posted: 2005-02-09 17:22:52
by Savage
Gromiz wrote:вот скрипт....но ....в листе используемых функций в инже, она появляется и моментально исчезает ?? вроде все нормально сделал :?: :?:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.findtype(st[i],-1,'ground')
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
Exit=1
endif
i=i+1
wend
end sub


Если что то не работает или работает подозрительно надо дебужить :)
Попробу так:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.print("V cikle")
uo.findtype(st[i],-1,'ground')
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
uo.print("Nashel kamen")
Exit=1
endif
i=i+1
wend
end sub

Posted: 2005-02-09 17:26:27
by Savage
аааа вечно я эти OR и AND путаю :) Вообщем исправь и все зашелестит.

Posted: 2005-02-09 17:27:49
by Gromiz
Savage wrote:
Gromiz wrote:вот скрипт....но ....в листе используемых функций в инже, она появляется и моментально исчезает ?? вроде все нормально сделал :?: :?:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.findtype(st[i],-1,'ground')
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
Exit=1
endif
i=i+1
wend
end sub


Если что то не работает или работает подозрительно надо дебужить :)
Попробу так:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.print("V cikle")
uo.findtype(st[i],-1,'ground')
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
uo.print("Nashel kamen")
Exit=1
endif
i=i+1
wend
end sub


:( неа не работает тока написало много раз
V cikle

Posted: 2005-02-09 17:30:24
by Savage
много или 13 раз? Если тринадцать то исправлять ничего не надо!

Posted: 2005-02-09 17:32:12
by Gromiz
Savage wrote:много или 13 раз? Если тринадцать то исправлять ничего не надо!


посчитал... пишет ровно 13 раз

Posted: 2005-02-09 17:33:51
by Savage
проверь тип кирпича под ногами может его нет в списке массива.....
или пора расставлять паузы :)

Posted: 2005-02-09 17:35:33
by Savage

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.print("V cikle")
uo.findtype(st[i],-1,'ground')
wait(1000) ;пауза.
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
uo.print("Nashel kamen")
Exit=1
endif
i=i+1
wend
end sub


Posted: 2005-02-09 17:36:12
by Gromiz
Savage wrote:проверь тип кирпича под ногами может его нет в списке массива.....
или пора расставлять паузы :)


проверил... усе есть...там 3 камня и они есть в списке..

Posted: 2005-02-09 17:39:48
by Gromiz
Savage wrote:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.print("V cikle")
uo.findtype(st[i],-1,'ground')
wait(1000) ;пауза.
if uo.getquantity('finditem')>0 then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
uo.print("Nashel kamen")
Exit=1
endif
i=i+1
wend
end sub



неа.. типа прога работает пишет V cikle и интервалом времени
там 3 камня

Type=0x1359
Type=0x1367
Type=0x1355

Posted: 2005-02-09 17:45:46
by Savage
Gromiz wrote:
Savage wrote:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.print("V cikle")
uo.findtype(st[i],-1,'ground')
if uo.findcount() then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
uo.print("Nashel kamen")
Exit=1
endif
i=i+1
wend
end sub


Тогда изменим проверку, наверное у камне нет такого параметра как количество :)

Posted: 2005-02-09 17:49:20
by 666Man666
А фор рулит )

Posted: 2005-02-09 17:51:23
by Savage
666Man666 wrote:А фор рулит )

В данном случае не катит фор.

Posted: 2005-02-09 17:58:08
by 666Man666
Savage wrote:В данном случае не катит фор.
ПочАму?
Фор с циклом рулит помойму....

Posted: 2005-02-09 17:58:23
by Gromiz
Savage wrote:
Gromiz wrote:
Savage wrote:

Code: Select all

sub st() 
VAR Exit=0, i=0
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while Exit<>0 OR i<13
uo.print("V cikle")
uo.findtype(st[i],-1,'ground')
if uo.findcount() then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
uo.print("Nashel kamen")
Exit=1
endif
i=i+1
wend
end sub


Тогда изменим проверку, наверное у камне нет такого параметра как количество :)


есть результат ...но из кучи камней он тока обрабатывает 1 из них и в конце появляется ошибка runtim eerror 21

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

Posted: 2005-02-09 18:02:35
by Savage
Рунтайм выдает потому что ты выходишь за границу массива. Исправь 13 на 12 там где while. Он и должен обрабатывать по одному камню, потому что в тебя их сколько летит за еденицу времени?

Posted: 2005-02-09 18:06:23
by Savage
Пора все наше хозяйство зациклить....

Code: Select all

sub st() 
VAR Exit, i
DIM st[13]

st[0]='0x1359'
st[1]='0x1354'
st[2]='0x1355'
st[3]='0x1360'
st[4]='0x1350'
st[5]='0x1361'
st[6]='0x1367'
st[7]='0x1364'
st[8]='0x134F'
st[9]='0x136A'
st[10]='0x1368'
st[11]='0x1358'
st[12]='0x1369'

while true
Exit=0
i=0
while Exit<>0 OR i<12
uo.findtype(st[i],-1,'ground')
if uo.findcount() then
uo.waittargetobject('finditem')
uo.usetype('0x0E86'); кирка
Exit=1
endif
i=i+1
wend
wend
end sub