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

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