Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Mapping/карта экрана

тут можно задать вопрос по скриптингу
Post Reply
Lokkie
Neophyte
Neophyte
Posts: 30
Joined: 02.08.2006 7:55

Mapping/карта экрана

Post by Lokkie »

Есть ли у кого мудрая мысль, как получить координаты всех точек (минимальных шагов/тайлов) в зоне видимости? Я пытался из карт вытянуть, но безуспешно :cry:
Просто идея майнинга не с 1 мавссивом, как в ламбере предложено, а с 2-я: 1й это рейл, 2-й список всех тайлов, которые можно майнить. А то "ручками" тыкая можно и пропустить.
:roll:
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

В инжекте пишешь скрипт который перебирает все тайлы в цикле и тыркает по ним командой ,infotile, записывая в текстовое окно перед этим инфу о позиции чара. Потом из текстового окна выдираешь получившийся текст, причесываешь и вуаля!
Lokkie
Neophyte
Neophyte
Posts: 30
Joined: 02.08.2006 7:55

Post by Lokkie »

Edred wrote:В инжекте пишешь скрипт который перебирает все тайлы в цикле и тыркает по ним командой ,infotile, записывая в текстовое окно перед этим инфу о позиции чара. Потом из текстового окна выдираешь получившийся текст, причесываешь и вуаля!
Дык сделать для инфотайла систему не сложно -

Code: Select all

sub Metka()           
repeat
uo.infotile()
wait(1000)
until false
end sub 
но вот как на экран кликать.
uo.target в самом описании сказано Реккомендуется не использовать эту команду тем кто не в курсе, что он делает.
или через lclic как-то?
Одним словом если у кого есть - поделитесь плз!
:oops: :roll:

p.s. или так пойти?

Code: Select all

uo.waittargettile("-1",str(uo.getx("self")-maxx),str(uo.gety("self")-maxy),str(uo.getz("self"))) 
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Угу. Если же не сработает - на фиг инжект, проще на изе написать скриптец.
Lokkie
Neophyte
Neophyte
Posts: 30
Joined: 02.08.2006 7:55

Post by Lokkie »

Edred wrote:проще на изе написать скриптец.
На инже не вышло, а изю совсем не знаю синтаксиса. на сайте нашел у них 2 вроде норм проги,
http://www.easyuo.com/forum/viewtopic.php?p=75479#75479
и
http://www.easyuo.com/forum/viewtopic.php?p=44142#44142
но как сделать вывод в файл не понял.
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

В изе нет команд для вывода в файл. Для этого привлекается обычно стандартный cmd.exe. Там есть команда для вызова внешней проги, вот cmd и вызывается с передачей параметром что записать. Ну а куда - стандарт доса:
>aaa.txt - создать (перезаписать) файл и записать в него
>>aaa.txt - добавить в файл в конец

Вызывай cmd.exe /? в командной строке или фаре и изучай.
SLAK
Novice
Novice
Posts: 65
Joined: 15.01.2006 3:20

Post by SLAK »

Lokkie wrote: На инже не вышло
Permit vars loopback был включен?
Lokkie
Neophyte
Neophyte
Posts: 30
Joined: 02.08.2006 7:55

Post by Lokkie »

SLAK wrote:Permit vars loopback был включен?
Как я пониммавю да. Проблема в том что tiletype я задаю как -1 в wait'e и олнон мне выдает 65к какойто номер, хоть я знаю, что там 1339 в большинстве своём (но не все)
:roll:
SLAK
Novice
Novice
Posts: 65
Joined: 15.01.2006 3:20

Post by SLAK »

Что-то типа такого?

Code: Select all

sub main()
var Tile,x,y,mx,my
mx = UO.GetX()
my = UO.GetY()
   for X = -50 to 50
      for Y = -50 to 50
       Tile = IsTile(mX+X, mY+Y)
        if tile then
           uo.print(str(Tile)+' '+str(mx+x)+' '+str(my+y))
        end if
      next
   next
end sub

sub IsTile(X,Y)
   if UO.PrivateGetTile(X, Y, -1, 1339, 1343) then
      for var i=1339 to 1343
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   return 0
end sub
Lokkie
Neophyte
Neophyte
Posts: 30
Joined: 02.08.2006 7:55

Post by Lokkie »

SLAK wrote:Что-то типа такого?
Да, именно так! Спасибо огромное!
Я вот его чуток доделал

Code: Select all

sub main()
var Tile,x,y,mx,my,z
UO.TextOpen()
   UO.TextClear()
mx = UO.GetX()
my = UO.GetY()
z = UO.GetZ()
   for X = -50 to 50
      for Y = -50 to 50
       Tile = IsTile(mX+X, mY+Y, z)
        if tile then
           uo.TextPrint(str(Tile)+' '+str(mx+x)+' '+str(my+y)+' '+str(z))
        end if
      next
   next
end sub

sub IsTile(X,Y,z)
   if UO.PrivateGetTile(X, Y, z, 1339, 1343) then
      for var i=1339 to 1343
         if UO.PrivateGetTile(X, Y, z, i, i) then
            return i
         end if
      next
   end if
   return 0
end sub 
:roll:
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

Code: Select all

UO.PrivateGetTile(X, Y, z, 1339, 1343)
впервіе вижу.. незадокументированная штука чтоли, что она делает ? зайти на сайт инжи не могу...
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

на форум инжи и в поиск
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

ну написал же
зайти на сайт инжи не могу...
ну в двух словах..
SLAK
Novice
Novice
Posts: 65
Joined: 15.01.2006 3:20

Post by SLAK »

ParadoX wrote: ну в двух словах..
если в точке Х,У есть тайл из указаного диапазона, то возвращает труъ.
Post Reply