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
действительно решило все проблемы