Tile

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
motxu
Posts: 48
Joined: 2005-04-13 16:01:09
Contact:

Tile

Post by motxu »

Is there a way to check the tile where player is and if its not desired one end script? :)
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post 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


З.Ы.Хотя фиг знае что ему надо =)
"ту милион доларс ... нипанятна ... фак ю спилберг" ©
Шард Антарес
Ururu
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post 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
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

а для простых смертных, незнающих языка великого B.G. не переведеш?

Кстати не подскажеш способ занести в таблицу .txt не статику =) Например дома, заборы ... :)
Шард Антарес
Ururu
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

по этой команде много примеров и описания написано...

второй вопрос не корректно сформулирован...
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

Code: Select all

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


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

А реально записать txt с тайлами на которых дома (тоесть любые непроходные тайлы), так же находясь на 1 месте, а не бегая по карте, переписывая все на 10 или 50 тайлов? Тоесть txt уже не с типами, а с координатами. :roll:
Шард Антарес
Ururu
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

вот честно бредовые вопросы...
Асму нехватило пару фич для полноты рабьоты с файлами...
Достаточно ьбыло из тайл даты брать флаги проходимости и тд... дальше рисовать ваши бит карты проходимости...

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

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

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

Дальше скрипт с uo.privategettile покаждому из диапозонов... ну а дальше и так ясно...
motxu
Posts: 48
Joined: 2005-04-13 16:01:09
Contact:

Post 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
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post 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
Post Reply