помогите со скриптом

Ask for help

Moderators: Murderator+, Murderator

Post Reply
GambiT
Posts: 59
Joined: 2008-01-26 22:35:57

помогите со скриптом

Post 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
подскажите в чем кривизна моих рук
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Ну если предположить что код 1 идет после кода 3, то тогда for i=1 to Count это явный перебор, надо останавливаться на 1 раньше. (мало вероятно, потому что если чтение координат и запись в файл в одном скрипте, то нафиг нужен промежуточный массив)

А если это отдельные скрипты, то там Count вобще не определен.

Кроме того файл не задан, хз как оно работать будет.

Ниче не понимаю... дерьмовый из меня телепат. :(
GambiT
Posts: 59
Joined: 2008-01-26 22:35:57

Post 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
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Ну во, другое дело. :) Тогда я хороший телепат :lol:
AGRS wrote:Ну если предположить что код 1 идет после кода 3, то тогда for i=1 to Count это явный перебор, надо останавливаться на 1 раньше.
for i=0 to Count
s=safe call f.writeln(str(RockT)+' '+str(RockX)+' '+str(RockY))
next

заменить на

for i=0 to Count-1
s=safe call f.writeln(str(RockT)+' '+str(RockX)+' '+str(RockY))
next
GambiT
Posts: 59
Joined: 2008-01-26 22:35:57

Post by GambiT »

спасибо ;) теперь координаты записываются ;)

.... пошел делать вторую часть скрипта ;) .....
GambiT
Posts: 59
Joined: 2008-01-26 22:35:57

Post 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 
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Повторю еще раз.
AGRS wrote:for i=1 to Count это явный перебор, надо останавливаться на 1 раньше.
:idea: Уважаемый, вам не на форум инжекта, а в школу на математику.
:twisted:
GambiT
Posts: 59
Joined: 2008-01-26 22:35:57

ночью оторвали зеркало

Post by GambiT »

СТОП! на мой взгляд, хотя и не всегда игроки помнили про правила, и не всегда мне было смешно.Но иногда все же было Никак не ожидала, что полиция нравов появится в Сочи)А Стэнлик начнет повто
Второй сезон, товарищи, внимание Мы проведем в том самом хитром люке под землей Благодарю вас за признание! Итак, Спускаться первой в люк решила Кейт За ней Джон Локк и Жека Шеппард
Last edited by GambiT on 2009-12-20 21:42:38, edited 3 times in total.
GambiT
Posts: 59
Joined: 2008-01-26 22:35:57

подарки себе очень полезны

Post by GambiT »

Сегодня на Ярославском такой цирк устроили, жуть! Я решила первый раз в жизни проехать на электричке с остановками Лосиноостровская-Подлипки-далее везде. Стою на перроне, жду когда на табло путь
Last edited by GambiT on 2009-12-20 22:21:48, edited 3 times in total.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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
Удивительная конструкция. "На свете есть многое, друг Горацио, что и не снилось нашим мудрецам"...

Удивительно, что он просто подходит к тайлу и стоит... А должен был бы орать благим матом, типа "скриптера - на кол!" :lol:

ЗЫ: По существу. Я понимаю, до конструкции repeat...until ты в уроках не добрался. Но стирать журнал после того, как проверил его на сообщение - это что-то новое в скриптописании. Обычно стирают до, потом копают и проверяют наличие сообщения. Ты же проверяешь, стираешь, копаешь. Хитро задумано.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
GambiT
Posts: 59
Joined: 2008-01-26 22:35:57

простейшее изменение цвета кнопки

Post by GambiT »

Wb band: Леха "Щепа" - бас гитара Женек "Панк" - гитара, вокал Паша - ударный вокал Три парня падонка, объединились для общей темы-для самовыражения в стиле-панк рок! Молодая Группа играюща
мухаха а че вы так переживаете прально, опустить ее, эту Тарью, жила не по правилам, будь терпима к последствиям бугагага хз, вроде не слышала ничего подобного, Морбид темнит ксати, я куплю именно
Post Reply