Page 1 of 1

GetMapCell, ReadStaticsXY

Posted: 12.09.2011 15:49
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

как еще можно получить тип тайла, по координатам?

Re: GetMapCell, ReadStaticsXY

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

а тут есть список ф-ий для работы с тайлами

Re: GetMapCell, ReadStaticsXY

Posted: 12.09.2011 16:56
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   

Re: GetMapCell, ReadStaticsXY

Posted: 12.09.2011 17:05
by Alex
GetMapCell - возвращает номер тайла карты, к примеру земля или песок или болото

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

в какой-то точке может и не быть лестницы и стены, соотв. Tile0.Statics будет пустой массив, и обращение к нулевому индексу пустого массива дает ту ошибку..проверять можно с помощью Tile0.StaticCount > 0

Re: GetMapCell, ReadStaticsXY

Posted: 12.09.2011 17:32
by murderinc
спасибо большое.
Tile0.StaticCount > 0

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