Fallout2 Opcode Playground

Opcodes: 8000-801F, 8020-803F, 8040-805F,
8060-807F, 8080-809F, 80A0-80BF, 80C0-80DF,
80E0-80FF, 8100-811F, 8120-813F, 8140-8155
 
List Opcodes:Used in Fallout 2Named
Known to DecompilerDescribed

Descriptions for 80B7

Opcode80B7, CreateObj
>> subfunction   CreateObj

Author: Wasteland Ghost

07.02.05 15:27:48

Синтаксис оригинального компилятора:
ObjectPtr create_object_sid(int pid, int tile_num, int elev, int sid) - создать объект
Аргументы:
pid - номер прототипа объекта (см. CRITRPID.H - PID криттеров, ITEMPID.H - PID предметов, SCENEPID.H - PID элементов пейзажа)
tile_num - номер тайла (связь с координатами x,y: tile_num = 200 * y + x)
elev - этаж (0, 1 и 2)
sid - идентификатор скрипта (см. SCRIPTS.H). Если sid = -1, то привязывается скрипт, указанный в файле прототипа, если в файле прототипа скрипт не уаказан, то скрипт не привязывается.
Возвращаемое значение:
указатель (ObjectPtr) на созданный объект
Author: Wasteland Ghost

16.01.03 9:08:15

CreateObj (objID, pos, floor, script_n) - создаёт объект (и помещает его на карту)

Аргументы:
objID     - тип объекта
pos - позиция на карте или 0 (если объект не помещается на карту)
floor - этаж или 0 (если объект не помещается на карту)
script_n - номер скрипта объекта или -1 (если скрипта нет)
Возвращаемое значение:
    Адрес (objAddr) созданного объекта (Вопрос: если объект не создан, то возвращает NULL?)
Пример:
loc0 := CreateObj (41, 0, 0, -1);
Author: legacy information

22.06.02 13:29:01

Предмет создается последовательностью <ItemID>;0;0;-1;80B7, которая возвращает ItemAddr вновь созданного объекта. ItemAddr можно сохранить и использовать в команде 8116 для добавления произвольного количества созданных предметов какому-либо персонажу. При создании предметов не определяется количество таковых - оно определяется добавлением. Что означают 2-й, 3-й и 4-й аргументы команды 80В7 - пока не известно.

Уточнение к формату 80B7: четвертый аргумент - номер скрипта создаваемого объекта. Создавать можно не только вещи, но и криттеров, которые после этого помещаются в локацию вышеописанной командой. Таким образом 1-й аргумент это "тело" криттера, а 4-й - его "душа". 2-й аргумент - если не 0, то координаты в локации.

Еще одно уточнение к формату команды 80B7 - 3-й аргумент (после 2-го - координат) означает этаж (он же уровень) в локации.