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

GetMapCell, ReadStaticsXY

тут можно задать вопрос по скриптингу
Post Reply
murderinc
Neophyte
Neophyte
Posts: 17
Joined: 12.09.2011 15:46

GetMapCell, ReadStaticsXY

Post by murderinc »

Работал ли кто-то с GetMapCell? Она должна возвращать тип тайла и Z координату, но мне возвращает какой-то чес.

ReadStaticsXY, когда пытаюсь пройти, точки в цикле выбивает Out Of Range at 0....

Code: Select all

for TileX:= (GetX(self)-6) to (GetX(self) + 6) do begin
  for TileY:= (GetY(self)-6) to (GetY(self)+6) do begin   
  if TargetPresent then CancelTarget;
  W0:=1;
  Tile0:=ReadStaticsXY(TileX,TileY,W0);
    Addtosystemjournal(IntToStr(Tile0.Statics[0].Tile)+
      ' | X = ' +IntToStr(Tile0.Statics[0].X)+' | Y = ' +IntToStr(Tile0.Statics[0].Y)+' | Z = ' +IntToStr(Tile0.Statics[0].Z));
выбивает ошибку Out of Range 0.600 или 0.480

как еще можно получить тип тайла, по координатам?
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Re: GetMapCell, ReadStaticsXY

Post by Alex »

вот тут есть пример использования GetMapCell: http://stealth.od.ua/wiki/doku.php?id=getmapcell

а тут есть список ф-ий для работы с тайлами
Новый стелс лежит тут. Стелс это произведение искусства! :)
murderinc
Neophyte
Neophyte
Posts: 17
Joined: 12.09.2011 15:46

Re: GetMapCell, ReadStaticsXY

Post by murderinc »

Code: Select all

for TileX:= (GetX(self)) to (GetX(self) + 6) do begin
  for TileY:= (GetY(self)-6) to (GetY(self)) do begin   
  if TargetPresent then CancelTarget;
  W0:=1;
  Tile:= (GetMapCell(TileX,TileY,W0).Tile); 
  Addtosystemjournal('Tile = ' +IntToStr(GetMapCell(TileX,TileY,W0).Tile)+' | Z = ' +IntToStr(GetMapCell(TileX,TileY,W0).Z));

  Tile0:=ReadStaticsXY(TileX,TileY,W0);
    Addtosystemjournal(IntToStr(Tile0.Statics[0].Tile)+
      ' | X = ' +IntToStr(Tile0.Statics[0].X)+' | Y = ' +IntToStr(Tile0.Statics[0].Y)+' | Z = ' +IntToStr(Tile0.Statics[0].Z));
  end;
end; 

: Tile = 100 | Z = -15
: 6042 | X = 1465 | Y = 3753 | Z = -5
: Tile = 100 | Z = -15
: 6041 | X = 1465 | Y = 3754 | Z = -5
: Tile = 100 | Z = -15
: 6039 | X = 1466 | Y = 3748 | Z = -5
вот так оно работает, GetMapCell дает не тот результат, что я хотел.. но может я не понимаю, что оно должно давать..

а ReadStaticsXY дает, то что нужно, но перестает работать когда я цикл делаю не такой как тут, а:

Code: Select all

for TileX:= (GetX(self)-6) to (GetX(self) + 6) do begin
  for TileY:= (GetY(self)-6) to (GetY(self)+6) do begin   
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Re: GetMapCell, ReadStaticsXY

Post by Alex »

GetMapCell - возвращает номер тайла карты, к примеру земля или песок или болото

а ReadStaticsXY - возвращает ряд номеров тайлов статических обьектов в указанной точке, к примеру стена или лестница

в какой-то точке может и не быть лестницы и стены, соотв. Tile0.Statics будет пустой массив, и обращение к нулевому индексу пустого массива дает ту ошибку..проверять можно с помощью Tile0.StaticCount > 0
Новый стелс лежит тут. Стелс это произведение искусства! :)
murderinc
Neophyte
Neophyte
Posts: 17
Joined: 12.09.2011 15:46

Re: GetMapCell, ReadStaticsXY

Post by murderinc »

спасибо большое.
Tile0.StaticCount > 0

действительно решило все проблемы
Post Reply