Home API Manuals About Forum
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

SetBadObject

Marks objects of a given type and color as impassable within a specified radius for the pathfinding engine.

ObjType — graphic (type) of the object to block. Use $FFFF to match any type.

Color — color (hue) of the object to block. Use $FFFF to match any color.

Radius — the radius (in tiles) around the object within which tiles are treated as blocked.

After calling this method, tiles occupied by matching objects will be treated as impassable by the pathfinder (MoveXY, MoveXYZ, GetPathArray, GetPathArray3D).

This is useful for avoiding specific world objects that are technically passable but should be treated as obstacles (e.g., energy fields, fire fields).

Use ClearBadObjectList to clear all bad object entries.

Does nothing if the character is not connected or UO data is not loaded.

Помечает объекты заданного типа и цвета как непроходимые в указанном радиусе для системы поиска пути.

ObjType — graphic (тип) блокируемого объекта. $FFFF — любой тип.

Color — цвет блокируемого объекта. $FFFF — любой цвет.

Radius — радиус (в тайлах) вокруг объекта, в пределах которого тайлы считаются заблокированными.

После вызова тайлы, занятые совпадающими объектами, будут считаться непроходимыми системой поиска пути (MoveXY, MoveXYZ, GetPathArray, GetPathArray3D).

Полезно для обхода определённых мировых объектов, технически проходимых, но требующих обхода (например, энергетические поля, огненные поля).

Используйте ClearBadObjectList для очистки всего списка заблокированных объектов.

Не выполняет действий, если персонаж не подключён или данные UO не загружены.

Pascal

procedure SetBadObject(ObjType: Word; Color: Word; Radius: Byte);

Python

def SetBadObject(ObjType: int, Color: int, Radius: int) -> None: ...

Pascal Example

const
  FIRE_FIELD = $398C;
begin
  // Block fire field objects within 2 tiles
  SetBadObject(FIRE_FIELD, $FFFF, 2);
  AddToSystemJournal('Fire fields marked as obstacles');

  MoveXY(1234, 5678, True, 1, True);
end.

Python Example

FIRE_FIELD = 0x398C

# Block fire field objects within 2 tiles
SetBadObject(FIRE_FIELD, 0xFFFF, 2)
AddToSystemJournal('Fire fields marked as obstacles')

MoveXY(1234, 5678, True, 1, True)

See Also

ClearBadObjectList, SetBadLocation, MoveXY, GetPathArray