Курс Молодого бойца: Пишим Скрипт на "КАМНИ"

Anything and all.

Moderators: Murderator+, Murderator

Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post 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


Сложновато получилось, но работать должно :) Описание незнакомых команд смотрим в хэлпе
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Post 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]

спасибо , щас попробую разобраться и сделать в игре.....потом опять сюда... -))
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

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

Ладно мне на работу надо сгонять, час у тя на эксперементы :)
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Post 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
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post 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
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

аааа вечно я эти OR и AND путаю :) Вообщем исправь и все зашелестит.
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Post 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
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

много или 13 раз? Если тринадцать то исправлять ничего не надо!
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Post by Gromiz »

Savage wrote:много или 13 раз? Если тринадцать то исправлять ничего не надо!


посчитал... пишет ровно 13 раз
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

проверь тип кирпича под ногами может его нет в списке массива.....
или пора расставлять паузы :)
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post 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

Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Post by Gromiz »

Savage wrote:проверь тип кирпича под ногами может его нет в списке массива.....
или пора расставлять паузы :)


проверил... усе есть...там 3 камня и они есть в списке..
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Post 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
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post 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


Тогда изменим проверку, наверное у камне нет такого параметра как количество :)
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

А фор рулит )
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

666Man666 wrote:А фор рулит )

В данном случае не катит фор.
666Man666
Junior Expert
Posts: 474
Joined: 2004-11-13 00:43:55
Location: Киберзадроцк
Contact:

Post by 666Man666 »

Savage wrote:В данном случае не катит фор.
ПочАму?
Фор с циклом рулит помойму....
Last edited by 666Man666 on 2005-02-09 17:58:48, edited 1 time in total.
Gromiz
Posts: 444
Joined: 2005-02-08 18:39:50
Location: Moscow

Post 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 камень обработал потом еще раз нажимаешь старт и так пока под ногами камней не будет
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Рунтайм выдает потому что ты выходишь за границу массива. Исправь 13 на 12 там где while. Он и должен обрабатывать по одному камню, потому что в тебя их сколько летит за еденицу времени?
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post 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

Post Reply