Копка скал подскажите как копать тайл по типу ?

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Копка скал подскажите как копать тайл по типу ?

Post by Tyoma »

собственно данный саб обкапывает всё в округе .. можно ли задать ему копание только по типу тайла ? (скал) или не по типу а какими-то обходнымы путями чтобы копал только скалы ) мб по Z заставить его ? но будет ли он пытаться копать воздух ? =)))
заранее спасибо =)

Code: Select all

sub kopka() 
hiding() 
myXX=uo.getX(); запоминает место откуда начал копать 
myYY=uo.getY(); 
var PX, PY, PZ, IX, IY, IZ 
    PX=0 
    PY=0 
    UO.DeleteJournal() 
         PX = UO.GetX() 
         PY = UO.GetY() 
         PZ = UO.GetZ() 
    For Iy=-4 to 4 
       For Ix=-4 to 4 
        For Iz=-4 to -2 
   if UO.Weight <= (uo.str*4+20) then 
       while not UO.InJournal('There is no ore') and not UO.InJournal("You have no line") and not UO.InJournal("That is to far away") and not UO.InJournal("You can't think") and not UO.InJournal("You have no line of") and not UO.InJournal("too far away") and not UO.InJournal("mining in rock.") 
            UO.DeleteJournal() 
            if not uo.hidden() then 
            autohide() 
               while not uo.injournal("You have hidden") 
                  wait(200) 
               wend 
            endif 
             ws() 
             UO.WaitTargetTile(-1,Str(PX+Ix),Str(PY+Iy),Str(PZ+IZ)) 
            uo.usetype(kirka) 
            while not UO.InJournal("You put the") and not UO.InJournal("You loosen some") and not UO.InJournal("You can't think") and not UO.InJournal("That is to far away") and not UO.InJournal("There is no ore") and not UO.InJournal("You have no line of") and not UO.InJournal("too far away") and not UO.InJournal("mining in rock.") 
               Wait(200) 
            wend 
      wend 
   endif        
        UO.DeleteJournal() 
         next 
      next 
     next 
       if UO.Weight > (uo.str*4+20) then 
      RunebookRecalla(1) 
       UO.exec('exec GotoHomeT') 
         else 
      endif 
end sub 
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Что в твоём понятии тип скалы?
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

при инфотайле первое число = тип текстуры = тип тайла . но я только что заметил что у скал и травы там 0 О_о
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Попробуйте, после ручного тыка:
,infotile 'lasttile'

Все равно нуль ?
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

угумс .. пример последнего -
0 2286 1255 3 что по ласттайлу что так ..

судя по вашему выражению мне надо переделывать скрипт полностью под точные координаты ? по типу не прокатит ?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

я бы предложил воспользоваться uo.privategettile если потянет версия инжекта и через инсайд переписать все типы которые интересны для копания.

Или по 0 Х Y жестко.
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

как это реализовать в моём скрипте ? и наскоко это небезопасно посравнению с точечным копанием ? версия 505.18 гамп фикс в2 и что вобще за приваттаргеттайл ? порылся в поиске и неособо понял его функцию О_о
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

попробуй запустить. На 505 вроде работало:

Code: Select all

################ Рудокоп #################
Sub Mine()
	VAR Shovel1 = '0x0F3A'
	VAR Shovel2 = '0x0F39'
	VAR Pickaxe1 = '0x0F39'
	VAR Pickaxe2 = '0x0F39'
	VAR MaxRange = 2
	VAR X, Y, Z, Tiles
	VAR mX, mY, mZ
	VAR MaxVes = 610
	;	UO.Set('quiet','0')
	UO.Msg(".resync")
	mX = UO.GetX('self')
	mY = UO.GetY('self')
	mZ = UO.GetZ('self')
	for Y = MaxRange - ( MaxRange * 2 ) to MaxRange
		for X = MaxRange - ( MaxRange * 2 ) to MaxRange
			Tiles = MiningTiles(mX+X, mY+Y)
			if Tiles then
				UO.DeleteJournal()
				repeat
					UO.Set('quiet','1')
					UO.DeleteJournal()
					UO.Warmode(0)
					UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ)
	UO.FindType(Shovel1,-1,'my')
		if UO.FindCount() then
			UO.UseType(Shovel1)
		else
	UO.FindType(Shovel2,-1,'my')
		if UO.FindCount() then
			UO.UseType(Shovel2)
		else
	UO.FindType(Pickaxe1,-1,'my')
		if UO.FindCount() then
			UO.UseType(Pickaxe1)
		else
	UO.FindType(Pickaxe2,-1,'my')
		if UO.FindCount() then
			UO.UseType(Pickaxe2)
		else
			UO.Set('quiet','0')
				UO.Print("ERROR: Нечем копать!!!")
			return
		endif
		endif
		endif
		endif
					LastTimer=UO.Timer()
					repeat
						wait(100)
					until UO.InJournal("%|destroyed|useable|выкопали|0xAD00|0xA867|0xA2DE|0xAD03|0x5DE0|0x5DE1|0x5DE2|0x5DE3|0x5DE4|0x5DE5|0x5DE6|0x5DE7|Вы положили|put the|is nothing here to mine|Wthere do you|Вам не удалось|У вас нет|have no line|ничего|Тут ничего|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+100 || UO.Weight > MaxVes || UO.Dead()
				until UO.InJournal("%|destroyed|0xAD00|0xA867|0xA2DE|Тут ничего|is nothing here to mine|нет руды|У вас нет|have no line|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+500 || UO.Weight > MaxVes || UO.Dead()
				############################
				#ПЕРЕГРУЗ!!!#
				############################
				If UO.Weight > MaxVes Then
					UO.Print('Перегруз!')
					wait(500)
					return
				endif
				############################
			endif
		next
	next
	UO.Set('quiet','0')
	UO.Print("Все")
	UO.Sound(100)
	return 0
end sub

Sub MiningTiles(X,Y)
	var i
	if UO.PrivateGetTile(X, Y, -1, 616, 618) then
		for i=616 to 618
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 1339, 1363) then
		for i=1339 to 1363
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 2272, 2282) then
		for i=2272 to 2282
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 4963, 4973) then
		for i=4963 to 4973
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 6001, 6012) then
		for i=6001 to 6012
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13121, 13369) then
		for i=13121 to 13369
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13446, 13455) then
		for i=13446 to 13455
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13484, 13492) then
		for i=13484 to 13492
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	if UO.PrivateGetTile(X, Y, -1, 13625, 13628) then
		for i=13625 to 13628
			if UO.PrivateGetTile(X, Y, -1, i, i) then
				return i
			end if
		next
	end if
	return 0; No Mining Tiles
end sub
Если будет ругаться значит не судьба. Если не будет ругаться то должен и по стенам и по сталактитам и по всему что может содержать руду копать. лопата кирка пофигу какая лишь бы в паке лежала.
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

сначала ругался на ласт таймеры =) я их убрал =) 52-51 строки =) потом на ресинк начал ругаться ) тоже вырубил ) в итоге при запуске скрипта пишет уопринтом "все" и вырубаеться ..
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Mirage, у его тайлов нулевой тайп..

Хрен его знает, как у него копка по скалам вообще работает..

Tyoma, проще будет записать все "правильные" тайлы в табличку и по ней уже проходиться и капать.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

Destruction wrote:Mirage, у его тайлов нулевой тайп..

Хрен его знает, как у него копка по скалам вообще работает..

Tyoma, проще будет записать все "правильные" тайлы в табличку и по ней уже проходиться и капать.
я уже так и понял ))) попробую )
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

Code: Select all

var tSeif='000000000' 
var Kirka='0x0E85' 

sub main() 
 while not uo.dead() 
  go(1528,1119,1)#k=1 капаем k<>1 холостой ход 
minround()
  go(1528,1120,1)
minround()
  go(1529,1119,0)
  go(1529,1120,1)
minround()
  go(1530,1119,0)
  go(1530,1120,1)
minround()
  go(1531,1119,0)
  go(1531,1120,1)
minround()
  go(1532,1119,0)
  go(1532,1120,1)
minround()
  go(1544,1112,0)#подходим к сундуку 
  UnLoad()#выкладываем руду 
wend 
endsub 

sub minround() 
VAR Kirka = '0x0F39' 
VAR TileNum = '1339' 
VAR x, y, t, k 
VAR MaxTime = 100  
VAR ms1 = "There is no ore here to mine" 
VAR ms2 = "You can't use" 
VAR ms3 = "You put the" 
VAR ms4 = "You loosen some rocks" 
VAR ms5 = "You are too far away" 
VAR ms6 = "Try mining in rock" 
VAR ms7 = "You can't see that" 
var kolr,per 
for y=-1 to 1 
for x=-1 to 1  
  k = 0 
  repeat 
    UO.DeleteJournal() 
    t = UO.Timer() 
    k = k + 1 
    if uo.targeting() then 
     UO.CancelTarget() 
    endif 
    CheckLag() 
    wait(300) 
    UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0) 
    UO.UseType( Kirka ) 
    repeat 
     wait(300) 
    until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR ((t + MaxTime) < UO.Timer()) 
    uo.findtype('0x19B9','-1','backpack') 
    kolr=uo.getquantity('finditem') 
    per=uo.str*4+30-uo.weight 
    uo.print("kol-vo irona " + str(kolr) + " do perevesa " + str(per)) 
    if per<=30 then 
     uo.exec('terminate all') 
     wait(700) 
    endif      
  until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) OR (k > 10) ) 
 next 
next 
endsub 

Sub go(x,y,k) 
 
end sub 

помогите пожалуста переделать под точечную копалку ? в мэйн пример координат .. нужно чтобы там где 1 он копал (именно эти указаные координаты) а там где 0 двигался (собсна как мы щас и имеем) но он обкапывает всё вокруг а надо только ту координату с 1 .. подправьте пожалуста минраунд немного .. заранее спс .. или подскажите как правильно подправить ? а то непонимаю каким образом он может считовать те координаты что я указал с 1 ..
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

всё намано всё сделал ) вопрос номер два .. чёто некоректно работает килялка елементала со скрола ..

Code: Select all

Sub mining_pomos()
repeat
uo.findtype('0x000E','-1','ground') 
if uo.findcount() then 
uo.waittargetobject('finditem') 
wait(500)
uo.usetype('0x1F2D')
wait(2000)
endif
end sub
суть в том чтобы юзнуть на Елементала скрол .. и чем быстрее тем лудше .. если физл то повторить .. что скажите ? =)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

патамушто гладиолус :)

Code: Select all

Sub mining_pomos()
 repeat ; начало цикла
   uo.findtype('0x000E','-1','ground') 
   if uo.findcount() then 
      uo.waittargetobject('finditem') 
      uo.usetype('0x1F2D')
      wait(2000)
   endif
;ни че тут не забыл?
end sub
ps у них там не определяющаяся статика копается (реально скалы с 0 тайлом) - какойто безумный мир :lol:
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

Mirage wrote:патамушто гладиолус :)

Code: Select all

Sub mining_pomos()
 repeat ; начало цикла
   uo.findtype('0x000E','-1','ground') 
   if uo.findcount() then 
      uo.waittargetobject('finditem') 
      uo.usetype('0x1F2D')
      wait(2000)
   endif
;ни че тут не забыл?
end sub
ps у них там не определяющаяся статика копается (реально скалы с 0 тайлом) - какойто безумный мир :lol:
делейт журнала ? ну всёравно как-то я или криво его вставляю или незнаю .. долго юзает .. ор появляеться а он ещё секунд 10 бывает стоит ..

вычислил проблему .. поиск идёт по граунду .. а ор когда появляеться (пока не ударит или ещё чего не сделает/кастанёт) подвешен в воздухе .. есть какие решения ?
Tyoma
Posts: 18
Joined: 2009-10-15 13:58:29

Post by Tyoma »

разобрались тему клоц =) спс миражу :!:
Swint
Posts: 27
Joined: 2009-06-29 13:53:36

Post by Swint »

Меня интересует вопрос: "Что делает этот скрипт"?

Code: Select all

################ Рудокоп ################# 
Sub Mine() 
   VAR Shovel1 = '0x0F3A' 
   VAR Shovel2 = '0x0F39' 
   VAR Pickaxe1 = '0x0F39' 
   VAR Pickaxe2 = '0x0F39' 
   VAR MaxRange = 2 
   VAR X, Y, Z, Tiles 
   VAR mX, mY, mZ 
   VAR MaxVes = 610 
   ;   UO.Set('quiet','0') 
   UO.Msg(".resync") 
   mX = UO.GetX('self') 
   mY = UO.GetY('self') 
   mZ = UO.GetZ('self') 
   for Y = MaxRange - ( MaxRange * 2 ) to MaxRange 
      for X = MaxRange - ( MaxRange * 2 ) to MaxRange 
         Tiles = MiningTiles(mX+X, mY+Y) 
         if Tiles then 
            UO.DeleteJournal() 
            repeat 
               UO.Set('quiet','1') 
               UO.DeleteJournal() 
               UO.Warmode(0) 
               UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ) 
   UO.FindType(Shovel1,-1,'my') 
      if UO.FindCount() then 
         UO.UseType(Shovel1) 
      else 
   UO.FindType(Shovel2,-1,'my') 
      if UO.FindCount() then 
         UO.UseType(Shovel2) 
      else 
   UO.FindType(Pickaxe1,-1,'my') 
      if UO.FindCount() then 
         UO.UseType(Pickaxe1) 
      else 
   UO.FindType(Pickaxe2,-1,'my') 
      if UO.FindCount() then 
         UO.UseType(Pickaxe2) 
      else 
         UO.Set('quiet','0') 
            UO.Print("ERROR: Нечем копать!!!") 
         return 
      endif 
      endif 
      endif 
      endif 
               LastTimer=UO.Timer() 
               repeat 
                  wait(100) 
               until UO.InJournal("%|destroyed|useable|выкопали|0xAD00|0xA867|0xA2DE|0xAD03|0x5DE0|0x5DE1|0x5DE2|0x5DE3|0x5DE4|0x5DE5|0x5DE6|0x5DE7|Вы положили|put the|is nothing here to mine|Wthere do you|Вам не удалось|У вас нет|have no line|ничего|Тут ничего|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+100 || UO.Weight > MaxVes || UO.Dead() 
            until UO.InJournal("%|destroyed|0xAD00|0xA867|0xA2DE|Тут ничего|is nothing here to mine|нет руды|У вас нет|have no line|Попробуйте|Try mining elsewhere") || UO.Timer()>LastTimer+500 || UO.Weight > MaxVes || UO.Dead() 
            ############################ 
            #ПЕРЕГРУЗ!!!# 
            ############################ 
            If UO.Weight > MaxVes Then 
               UO.Print('Перегруз!') 
               wait(500) 
               return 
            endif 
            ############################ 
         endif 
      next 
   next 
   UO.Set('quiet','0') 
   UO.Print("Все") 
   UO.Sound(100) 
   return 0 
end sub 

Sub MiningTiles(X,Y) 
   var i 
   if UO.PrivateGetTile(X, Y, -1, 616, 618) then 
      for i=616 to 618 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 1339, 1363) then 
      for i=1339 to 1363 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 2272, 2282) then 
      for i=2272 to 2282 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 4963, 4973) then 
      for i=4963 to 4973 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 6001, 6012) then 
      for i=6001 to 6012 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 13121, 13369) then 
      for i=13121 to 13369 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 13446, 13455) then 
      for i=13446 to 13455 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 13484, 13492) then 
      for i=13484 to 13492 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   if UO.PrivateGetTile(X, Y, -1, 13625, 13628) then 
      for i=13625 to 13628 
         if UO.PrivateGetTile(X, Y, -1, i, i) then 
            return i 
         end if 
      next 
   end if 
   return 0; No Mining Tiles 
end sub
Как я понял,он копает скалы.Но у меня есть проблема,начинает копать,когда выкапывает все из кочки я подхожу к другой,но чето-то не копает...Или он не так работает,а как-то подругому,т.е. принцип скрипта не тот?(= :oops: [/quote]
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

то что просил автор выглядит несколько иначе :)

ЭТОТ скрипт копает тайлы перечисленные в нижней части скрипта (например с 6001 по 6012 и так далее). Не копает если нет инструмента, вес больше 500. Одноразовая копка до всего чего можно достать стоя на месте в радиусе 2 тайла от персонажа. Это просто модуль копания. Если ты сам ходишь то надо запускать каждый раз процедуру Mine()

Если хочешь с хождением сделать то надо делать чтото типо этого:

Code: Select all

GoToXY(X1,Y1,0)
Mine()
GoToXY(X2,Y2,0)
Mine()
GoToXY(X3,Y3,0)
Mine()
PS надо переписать типы лопат и кирок - это черновой вариант скрипта.
Swint
Posts: 27
Joined: 2009-06-29 13:53:36

Post by Swint »

Ммм ясно! А какую команду удалить,чтобы он когда выкапывал вырубал скрипт...а то висит он!(
Post Reply