Page 1 of 1

Tile

Posted: 2007-08-18 22:27:28
by motxu
Is there a way to check the tile where player is and if its not desired one end script? :)

Posted: 2007-08-19 01:20:50
by Ururu
Как я понял нужно искать в заданном тайле?
В АСМ это есть вроде:

asmWaitTragetStaticTile(string LogicType, number X, number Y, number Map)

Если на карте Map в координатах X,Y есть статичный объект, принадлежащий логическому типу LogicType по таблице статики, функция установит на него ловушку прицела UO.WaitTargetTile(***) и вернет 1. В противном случае функция вернет 0.

Пример:

Code: Select all

sub main()
Var CanMine
  UO.asmTLMapOpen('TLMapRock.txt'); Загрузим таблицу типов карты для скал
  UO.asmTLStaticOpen('TLStaticRock.txt'); Загрузим таблицу типов статики для скал
  CanMine=UO.asmWaitTargetMapTile('rock',UO.GetX(),UO.GetY(),0); Попытаемся установить прицел на карту
  If CanMine Then; Если получилось
    UO.UseType('0x0E85'); Используем кирку
  Else; Если не получилось
    CanMine=UO.asmWaitTargetStaticTile('rock',UO.GetX(),UO.GetY(),0); Попытаемся установить прицел на статику
    If CanMine Then; Если получилось
      UO.UseType('0x0E85'); Используем кирку
    EndIf
  EndIf
end sub


З.Ы.Хотя фиг знае что ему надо =)
"ту милион доларс ... нипанятна ... фак ю спилберг" ©

Posted: 2007-08-19 01:31:29
by Grin
easy way to use uo.privategettile(x, y, -1, StartIndex, EndIndex)
Function return number of tiles maching to range StartIndex-EndIndex

example:

Code: Select all

if uo.privategettile(x, y, -1, 1339, 1341) then
uo.print("We have a mine tile!!!")
endif

Posted: 2007-08-19 01:48:36
by Ururu
а для простых смертных, незнающих языка великого B.G. не переведеш?

Кстати не подскажеш способ занести в таблицу .txt не статику =) Например дома, заборы ... :)

Posted: 2007-08-19 02:24:42
by Grin
по этой команде много примеров и описания написано...

второй вопрос не корректно сформулирован...

Posted: 2007-08-19 02:48:16
by Ururu

Code: Select all

  UO.asmTLMapOpen('TLMapRock.txt'); Загрузим таблицу типов карты для скал 
  UO.asmTLStaticOpen('TLStaticRock.txt'); Загрузим таблицу типов статики для скал


Можно такое вытворять с деревьями, скалами и т.д. не выходя из дома.

А реально записать txt с тайлами на которых дома (тоесть любые непроходные тайлы), так же находясь на 1 месте, а не бегая по карте, переписывая все на 10 или 50 тайлов? Тоесть txt уже не с типами, а с координатами. :roll:

Posted: 2007-08-19 03:06:13
by Grin
вот честно бредовые вопросы...
Асму нехватило пару фич для полноты рабьоты с файлами...
Достаточно ьбыло из тайл даты брать флаги проходимости и тд... дальше рисовать ваши бит карты проходимости...

по твоему вопросу могу ответить следующие...

Любой дом (а именно мультис), есть 1 предмет, это клиент его рисует уже составным... uo.privategettile должен видить все детали мири (куски дома тоже), асм же не в силах по происку среди динамики...

по этому берем инсайд уо, и выписываем диапозоны тайлов которые поподают под определение "не проходимые"... разумно будет жертвовать "проходимыми" тайлами, чтоб не разрывать диапозоны (не дробить на более мелкие)

Дальше скрипт с uo.privategettile покаждому из диапозонов... ну а дальше и так ясно...

Posted: 2007-08-19 12:20:39
by motxu
thanks guys :)
this is What Ive scripted

Code: Select all

sub pp()
VAR mx, my
VAR tile1 = 5260
VAR tile2 = 3354
mx = UO.GetX("self")
my = UO.GetY("self")
   if mx <> tile1 then
   uo.print ("FUCK WE ARE NOT ON TILE")
   else
   uo.print ("5260 ! !")
   end if
   if my <> tile2 then
   uo.print ("FUCK WE ARE NOT ON TILE")
   else
   uo.print ("3354 ! !")
   end if
end sub

Posted: 2007-08-19 12:54:00
by Grin

Code: Select all

sub pp() 
VAR mx, my
VAR tile1 = 5260
VAR tile2 = 3354
mx = UO.GetX("self")
my = UO.GetY("self")
   if uo.privategettile(mx, my, -1, tile1, tile1) then
       uo.print ("5260 ! !")
   else
       uo.print ("FUCK WE ARE NOT ON TILE")
   end if
   if uo.privategettile(mx, my, -1, tile2, tile2) then
       uo.print ("3354 ! !")
   else
       uo.print ("FUCK WE ARE NOT ON TILE")
   end if
end sub