Page 1 of 1
помогите со скриптом
Posted: 2008-02-06 22:40:05
by GambiT
пишу скрипт на мининг чтобы заносил в файл координаты и так далее
Code: Select all
f.open()
f.create()
s=safe call f.writeln(Count)
for i=1 to Count
s=safe call f.writeln(str(RockT[i])+' '+str(RockX[i])+' '+str(RockY[i]))
next
f.close()
выдает ошибку в при выполнении
Code: Select all
s=safe call f.writeln(str(RockT[i])+' '+str(RockX[i])+' '+str(RockY[i]))
причем компилится нормально
массивы определены и вроде заполняются
Code: Select all
dim RockX[500],RockY[500],RockT[500]
var Count=0
while not flag ==1
uo.usetype ('0x0E85')
WaitForTarget()
while uo.targeting()
wait(100)
wend
if uo.LastTile(1)==UO.GetX("self") then
if uo.lastTile(2)==UO.GetY("self") then
flag=1
endif
else
RockX[Count]=uo.LastTile(1)
RockY[Count]=uo.lastTile(2)
RockT[Count]=uo.LastTile(0)
uo.print('Найдена кочка: x='+str(uo.lasttile(1))+' y='+str(uo.lastTile(2)))
Count = Count+1
endif
wend
подскажите в чем кривизна моих рук
Posted: 2008-02-07 10:24:49
by AGRS
Ну если предположить что код 1 идет после кода 3, то тогда for i=1 to Count это явный перебор, надо останавливаться на 1 раньше. (мало вероятно, потому что если чтение координат и запись в файл в одном скрипте, то нафиг нужен промежуточный массив)
А если это отдельные скрипты, то там Count вобще не определен.
Кроме того файл не задан, хз как оно работать будет.
Ниче не понимаю... дерьмовый из меня телепат.

Posted: 2008-02-07 11:31:35
by GambiT
исправляюсь

вот весь код
Code: Select all
sub collecting()
var i,s=0,flag=0
var f=file("F:\rock1.txt")
dim RockX[500],RockY[500],RockT[500]
var Count=0
while not flag ==1
uo.usetype ('0x0E85')
WaitForTarget()
while uo.targeting()
wait(100)
wend
if uo.LastTile(1)==UO.GetX("self") then
if uo.lastTile(2)==UO.GetY("self") then
flag=1
endif
else
RockX[Count]=uo.LastTile(1)
RockY[Count]=uo.lastTile(2)
RockT[Count]=uo.LastTile(0)
uo.print('Найдена кочка: x='+str(uo.lasttile(1))+' y='+str(uo.lastTile(2)))
Count = Count+1
endif
wend
#################################################
################Запись в файл####################
#################################################
f.open()
f.create()
s=safe call f.writeln(Count)
for i=0 to Count
s=safe call f.writeln(str(RockT[i])+' '+str(RockX[i])+' '+str(RockY[i]))
next
f.close()
end sub
Posted: 2008-02-07 11:42:41
by AGRS
Ну во, другое дело.

Тогда я хороший телепат
AGRS wrote:Ну если предположить что код 1 идет после кода 3, то тогда for i=1 to Count это явный перебор, надо останавливаться на 1 раньше.
for i=0 to Count
s=safe call f.writeln(str(RockT[i])+' '+str(RockX[i])+' '+str(RockY[i]))
next
заменить на
for i=0 to Count-1
s=safe call f.writeln(str(RockT[i])+' '+str(RockX[i])+' '+str(RockY[i]))
next
Posted: 2008-02-07 12:34:30
by GambiT
спасибо

теперь координаты записываются
.... пошел делать вторую часть скрипта

.....
Posted: 2008-02-07 12:57:10
by GambiT
подолжаю мучаться ....
вот скрипт на ходилку по координатам
Code: Select all
sub mining()
var i,flag
var Count
var f=file("F:\rock1.txt")
dim RockX[500],RockY[500],RockT[500]
#################################################
###############Загружаем из файла################
#################################################
uo.print('Загружаем координаты из файла...')
f.open()
Count=safe call f.readNumber()
uo.print("Загружено "+str(Count)+ " кочек")
for i=0 to Count
RockT[i]=safe call f.ReadNumber()
RockX[i]=safe call f.ReadNumber()
RockY[i]=safe call f.ReadNumber()
next
f.close()
#################################################
###############Ходим по координатам##############
#################################################
for i=0 to Count
uo.print('Идем к кочке '+str(i)+': x='+str(RockX[i])+' y='+str(RockY[i]))
flag=gotoxy(RockX[i],RockY[i])
while not flag==1
wait (200)
wend
GetRock(str(RockT[i]),str(RockX[i]),str(RockY[i]),str(uo.getz()))
uo.print ("Выкопано")
next
end sub
##################################################################
sub GetRock(type,x,y,z)
while not UO.InJournal("Try") and not UO.InJournal("location") and not UO.InJournal("Попробуйте") and not UO.InJournal("far away") and not UO.InJournal("nothing") and not UO.InJournal ("Тут не осталось руды") and not UO.InJournal("дотянуться")
UO.DeleteJournal()
UO.Waittargettile(type,x,y,z)
UO.Usetype("0x0E85")
while not UO.InJournal("You put") and not UO.InJournal("location") and not UO.InJournal("Попробуйте") and not UO.InJournal("дотянуться") and not UO.InJournal("no ore") and not UO.InJournal ("Тут не осталось руды") and not UO.InJournal("but fail") and not UO.InJournal("nothing") and not UO.InJournal("Try")
wait (1000)
wend
wend
return 0
в этой строчке пишет что переменная уже определена
Code: Select all
GetRock(str(RockT[i]),str(RockX[i]),str(RockY[i]),str(uo.getz()))
дополнительные функции ( может в них глюк ) :
Code: Select all
##########################################
#############Дополнительные###############
################Функции###################
##########################################
sub abs(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub
sub gotoXY(x,y)
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
for i=1 to 60
MyX=uo.getX();
MyY=uo.getY();
if LastX==MyX AND LastY==MyY then
halt=halt+1
else
halt=0
end if
if halt>=10 then
if uo.GetDir()==1 then
for z=0 to 8
uo.press(40)
next
end if
if uo.GetDir()==3 then
for z=0 to 8
uo.press(37)
next
end if
if uo.GetDir()==5 then
for z=0 to 8
uo.press( 38 )
next
end if
if uo.GetDir()==7 then
for z=0 to 8
uo.press(39)
next
end if
halt=15
end if
if abs(x-myX)<=1 AND abs(y-myY)<=2 then
return 1
end if
if x<=MyX then
if y<=MyY then
for z=0 to 3
uo.press( 38 )
next
else
for z=0 to 3
uo.press(37)
next
end if
else
if y<=MyY then
for z=0 to 3
uo.press(39)
next
else
for z=0 to 3
uo.press(40)
next
end if
end if
lastX=myX
lastY=myY
wait(200)
next
return 0
end sub
sub WaitForTarget()
for var i=0 to 50
if uo.Targeting()==1 then
return 1
end if
wait(200)
next
return 0
end sub
Posted: 2008-02-07 14:26:15
by AGRS
Повторю еще раз.
AGRS wrote:for i=1 to Count это явный перебор, надо останавливаться на 1 раньше.

Уважаемый, вам не на форум инжекта, а в школу на математику.

ночью оторвали зеркало
Posted: 2008-02-07 14:41:01
by GambiT
СТОП! на мой взгляд, хотя и не всегда игроки помнили про правила, и не всегда мне было смешно.Но иногда все же было Никак не ожидала, что полиция нравов появится в Сочи)А Стэнлик начнет повто
Второй сезон, товарищи, внимание Мы проведем в том самом хитром люке под землей Благодарю вас за признание! Итак, Спускаться первой в люк решила Кейт За ней Джон Локк и Жека Шеппард
подарки себе очень полезны
Posted: 2008-02-07 16:27:58
by GambiT
Сегодня на Ярославском такой цирк устроили, жуть! Я решила первый раз в жизни проехать на электричке с остановками Лосиноостровская-Подлипки-далее везде. Стою на перроне, жду когда на табло путь
Posted: 2008-02-07 16:45:42
by Edred
Code: Select all
while not UO.InJournal("Try") and not UO.InJournal("location") and not UO.InJournal("Попробуйте") and not UO.InJournal("far away") and not UO.InJournal("nothing") and not UO.InJournal ("Тут не осталось руды") and not UO.InJournal("дотянуться")
UO.DeleteJournal()
UO.Waittargettile(tile,x,y,z)
uo.print ("используем кирку")
UO.Usetype("0x0E85")
while not UO.InJournal("You put") and not UO.InJournal("location") and not UO.InJournal("Попробуйте") and not UO.InJournal("дотянуться") and not UO.InJournal("no ore") and not UO.InJournal ("Тут не осталось руды") and not UO.InJournal("but fail") and not UO.InJournal("nothing") and not UO.InJournal("Try")
wait (500)
wend
wend
Удивительная конструкция. "На свете есть многое, друг Горацио, что и не снилось нашим мудрецам"...
Удивительно, что он просто подходит к тайлу и стоит... А должен был бы орать благим матом, типа "скриптера - на кол!"
ЗЫ: По существу. Я понимаю, до конструкции repeat...until ты в уроках не добрался. Но стирать журнал
после того, как проверил его на сообщение - это что-то новое в скриптописании. Обычно стирают
до, потом копают и проверяют наличие сообщения. Ты же проверяешь, стираешь, копаешь. Хитро задумано.
простейшее изменение цвета кнопки
Posted: 2008-02-07 18:07:05
by GambiT
Wb band: Леха "Щепа" - бас гитара Женек "Панк" - гитара, вокал Паша - ударный вокал Три парня падонка, объединились для общей темы-для самовыражения в стиле-панк рок! Молодая Группа играюща
мухаха а че вы так переживаете прально, опустить ее, эту Тарью, жила не по правилам, будь терпима к последствиям бугагага хз, вроде не слышала ничего подобного, Морбид темнит ксати, я куплю именно