Помимо новых функций, sfall также добавляет глобальные скрипты. Они выполняются независимо от любых загруженных карт, но не имеют прикрепленного объекта (т.е. использование функции self_obj без использования специальной функции set_self приведет к сбою скрипта).
Чтобы использовать глобальный скрипт, у скрипта должно быть имя, начинающееся с gl и содержащий процедуру с именем start.
Процедура start будет выполнена один раз, когда игрок загружает сохраненную игру или запускает новую игру.
Глобальный скрип также может содержать необязательные процедуры map_enter_p_proc, map_exit_p_proc или map_update_p_proc, которые будут выполняться один раз при входе, выходе, и обновлении карты соответственно.
Порядок или приоритет выполнения глобальных скриптов зависит от имени файла глобального скрипта, и определяется прямым алфавитным порядком, так например скрипт с именем gl_AAA.int будет выполняться первым чем скрипт gl_zzz.int.
Если вы хотите, чтобы сценарий выполнялся циклически (повторно), вызовите функцию set_global_script_repeat при первом же запуске процедуры start, используя в качестве аргумента значение задержки повторных запусков, 0 - отключает выполнение (по умолчанию), 1 - запускает скрипт каждый кадр, 2 - запускает скрипт каждый второй кадр и т.д.
Глобальные скрипты имеют несколько режимов, которые можно задать с помощью функции set_global_script_type.
В режиме 0 (т.е. в режиме по умолчанию) их выполнение связано с циклом игры на локальной карте, поэтому скрипт не будет выполняться в интерфейсных окнах или на карте мира.
В режиме 1, их выполнение связано с вводом (input) игрока, поэтому скрипт будет выполняться всякий раз, когда курсор мыши виден на экране, включая карту мира, диалоги персонажей и т.д.
В режиме 2, выполнение связано с циклом карты мира, поэтому скрипт будет выполняться только на карте мира, но не на локальной карте или в каких-либо интерфейсных окнах.
Режим 3 представляет собой комбинацию режимов 0 и 2, поэтому скрипт будут выполняться как на локальных картах, так и на карте мира, но не в интерфейсных окнах.
Обе функции set_global_script_repeat, и set_global_script_type влияют только на скрипты, из которых они были вызваны. А каждый глобальный скрипт нуждается в собственном блоке game_loaded, чтобы правильно установить тип скрипта и частоту повторения процедуры start.
ВНИМАНИЕ: set_global_script_repeat не будет иметь никакого эффекта, если её использовать вне глобального скрипта.
Функции set_perk_*** могут использоваться для настройки параметров как ванильных так и дополнительных перков, дополнительные перки добавляются функцией add_extra_perk, или в файле перков опции PerksFile.
The set_fake_trait and set_fake_perk can be used to add additional traits and perks to the character screen. They will be saved correctly when the player saves and reloads games, but by themselves they will have no further effect on the character. For perks, the allowed range for levels is between 0 and 100; setting the level to 0 removes that perk. For traits, the level must be 0 or 1. The image is a numeric id that corresponds to an entry in skilldex.lst. The name is limited to 63 characters and the description to 255 characters by sfall, but internal Fallout limits may be lower.
The has_fake_trait and has_fake_perk return the number of levels the player has of the perks/traits with the given name or ID of extra perk.
The perk_add_mode, set_selectable_perk, set_perkbox_title, hide_real_perks, show_real_perks and clear_selectable_perks control the behaviour of the select a perk box. set_selectable_perk can be used to add additional items by setting the active parameter to 1, and to remove them again by setting it to 0. set_perkbox_title can be used to change the title of the box, or by using "" it will be set back to the default. hide and show_real_perks can be used to prevent the dialog from displaying any of the original 119 perks. perk_add_mode modifies what happens when a fake perk is selected from the perks dialog. It is treated as a set of flags - if bit 1 is set then it is added to the player’s traits, if bit 2 is set it is added to the player’s perks, and if bit 3 is set it is removed from the list of selectable perks. The default is 0x2. clear_selectable_perks restores the dialog to its default state.
The fs_* functions are used to manipulate a virtual file system. Files saved here should have paths relative to the data folder, and use backslashes as the directory separator. They will take precedence over files stored in the normal data folder. They will also be saved into save games if you set a flag for them using fs_resize(fileId, -1), so be avoid creating large files. Using fs_copy followed by fs_read_xxx, you can read the contents of existing files.
Функция apply_heaveho_fix может использоваться для того, чтобы изменить применяемую формулу для перка “Размах”, это снимет требование к силе и изменит расчет для максимальной дальности метания на +6 для каждого уровня перка при этом, дальность не будет ограничена максимальной дальностью оружия. Вы можете изменять модификатор дальности.
Функции read_* принимают в качестве параметра адрес памяти и могут читать произвольные фрагменты адресного пространства Fallout.
Функции write_* эквивалентны функциям чтения, за исключением того, что они записывают в произвольные адреса памяти (не рекомендуется).
Для использования этих функций опция AllowUnsafeScripting в ddraw.ini должна быть включена.
Функции call_offset_* позволяют вызывать функций игры Fallout непосредственно из кода движка. Разные версии этих функций используются для вызова функций с разным количеством аргументов.
ВНИМАНИЕ: По умолчанию для sfall v5.1.0.0 все вызовы функций игры c помощью этих функций являются небезопасными, т.к. большенство функций игры были переписаны непосредственно в код sfall, и вызов старых функций из кода движка Fallout является небезопасным, обратитесь к разработчикам sfall с просьбой добавить требуемую функцию в список разрешенных, т.к. при вызове не разрешенных функций игроки будут получать уведомление о вызове небезопасной функции.
Для разрешенных вызовов функций, не требуется установка опции AllowUnsafeScripting.
Функция unsafe_script разрешает скрипту использовать расширенные возможности небезопасных сценариев (для функции read_* и write_* возможность чтения/записи значений в произвольные адреса вне пространства Fallout, для call_offset_* вызовы небезопасных функций разрешены без уведомления), для этого вы должны в папке где расположен скрипт (обычно это папка scripts) создать файл (пустой) с именем как у скрипта с расширением .unsafe. Затем в скрипте вызвать функцию unsafe_script, это активирует для скрипта расширенные возможности использования небезопасных функций.
Графические функции доступны только в том случае, если пользователь использует графический режим 4 или 5 (DirextX 9). Для проверки этого используйте graphics_funcs_available, он возвращает 1, если вы можете их использовать, или 0, если не можете.
Вызов графических функций, когда graphics_funcs_available возвращает 0, ничего не даст.
Функции ввода доступны только в том случае, если в файле ddraw.ini включен ввод. Для проверки этого используйте input_funcs_available.
Функция available_global_script_types возвращает доступные типы глобальных скритов.
Функции set_eax_environment, nb_create_char ничего не делают.
ВНИМАНИЕ: Перечисленные здесь опкоды функций могут быть заменены в любой момент на другие функции.
Типы данных, упомянутые в этом документе:
| Тип | Описание |
|---|---|
void |
Означает, что функция не возвращает никакого значения |
any |
Любой тип |
int |
Целое число |
float |
Число с плавающей запятой |
string |
Строковое (текстовое) значение |
object |
Указатель на игровой объект (фактически целое число) |
array |
Идентификатор массива для использования в функциях, связанных с массивами (фактически целое число) |
bool |
Булевы значения: True или False (фактически это целое число 1 или 0) |
procedure |
Имя процедуры скрипта (фактически это целое число, определяющее номер процедуры в скрипте) |
Arrays are created and manipulated with the xxx_array functions. An array must first be created with create_array or temp_array, specifying how many data elements the array can hold. You can store any of int, float and string in an array, and can mix all 3 in a single array. The ID returned by create_array or temp_array can then be used with the other array functions. Arrays are shared between all scripts. (i.e. you can call create_array from one script, and then use the returned id from another script.) They are also saved across savegames. You must remember to free any arrays you create with create_array when you are done with them, or you will leak memory. arrays created with temp_array will be automatically freed at the end of the frame. These functions are safe, in that supplying a bad id or trying to access out of range elements will not crash the script. create_array is the only function that returns a permanent array, all other functions which return arrays (string_split, list_as_array etc,) all return temp arrays. You can use fix_array to make a temp array permanent.
NOTE: the above description only applies when ArraysBehavior is set to 0 in ddraw.ini. Refer to arrays.md for detailed description of new arrays behavior.
int list_begin(int type)
void list_end(int list)
void list_next(int list)
list_begin возвращает идентификатор, и принимает аргумент, сообщающий, какой тип объектов (определено в sfall.h) вы хотите перебирать в списке.list_next вы сможете просматривать список, передав в ее аргумент идентификатор созданного списка функцией list_begin.list_end, иначе это приведет к утечке памяти.list_as_array.array list_as_array(int type)
type: Тип объекта карты (см. определение в sfall.h), которые будет помещены в созданный массив.int typeof(any value)
VALTYPE_INT, VALTYPE_FLOAT или VALTYPE_STR.int game_loaded()
set_global_script_repeat).int get_sfall_global(int/string gVariable)
int set_sfall_global(int/string gVariable)
gVariable: Аргумент имени переменной может принимать как числовое значение номера переменной, так и строковое имя.get_sfall_global всегда будет возвращать 0.int show_iface_tag(int tag)
int hide_iface_tag(int tag)
int is_iface_tag_active(int tag)
is_iface_tag_active может также использоваться для проверки SNEAK, POISONED и RADIATED состояний.sneak_mode_on, sneak_mode_off.int get_proto_data(int pid, int offset)
void set_proto_data(int pid, int offset, int value)
offset: смещение относится к смещению в памяти к данным которые вы хотите получить или изменить. Все валидные смещения (константы PROTO_) определены в файле define_extra.h.void set_stat_min(int stat, int value)
void set_stat_max(int stat, int value)
void set_pc_stat_min(int stat, int value)
void set_pc_stat_max(int stat, int value)
void set_npc_stat_min(int stat, int value)
void set_npc_stat_max(int stat, int value)
get_critter_stat, будут ограничены этими установленными диапазонами.set_pc_stat_* действуют только на игрока, а функции set_npc_stat_* только на других криттеров, при этом функции set_stat_* действуют на всех.void set_pc_base_stat(int stat, int value)
void set_pc_extra_stat(int stat, int value)
void set_critter_base_stat(object critter, int stat, int value)
void set_critter_extra_stat(object critter, int stat, int value)
set_critter_stat.int get_pc_base_stat(int stat)
int get_pc_extra_stat(int stat)
int get_critter_base_stat(object critter, int stat)
int get_critter_extra_stat(object critter, int stat)
get_critter_stat, чтобы получить правильно скорректированное значение по перкам и ограниченное по диапазону статистику.int get_critter_skill_points(object critter, int skill)
void set_critter_skill_points(object critter, int skill, int value)
critter_mod_skill.set_skill_points для криттера повлияет на всех криттеров, имеющих тот же прототип. Используйте функцию set_proto_data для изменения значений в прототипе.void set_pyromaniac_mod(int modValue)
int get_critical_table(int critterType, int bodyPart, int effectLevel, int valueType)
void set_critical_table(int critterType, int bodyPart, int effectLevel, int valueType, int setValue)
void reset_critical_table(int critterType, int bodyPart, int effectLevel, int valueType)
critterType: Номер типа криттера в критической таблице (см. определения KILL_TYPE_* в define.h) для которого будет происходить изменения.bodyPart: Номер части тела (см. определения BODY_HIT_* в define_extra.h).effectLevel: Уровень эффекта таблицы от 0 до 6.valueType: Изменяемый параметр в таблице от 0 до 7.reset_critical_table, позволяет сбросить изменения указанного значения таблицы к значению по умолчанию.int play_sfall_sound(string file, int mode)
void stop_sfall_sound(int fileID)
file: Имя и путь к файлу. Указанный путь является относительным к папке Fallout.mode: Укажите режим 1 - чтобы зациклить воспроизведение файла, 2 - чтобы заменить текущую фоновую музыку игры на воспроизведение указанного файла в режиме зацикливания, или 0 чтобы воспроизвести файл один раз.play_sfall_sound возвращает ID для зацикленного воспроизведенного файла, который можно передать обратно в stop_sfall_sound, когда вы хотите остановить эффект, иначе функция возвращает 0.mode для уменьшения громкости звука.0xZZZZ000YZZZZ - является значением уменьшения громкости в диапазоне от 0 до 32767 (значение 32767 - полностью приглушено), а Y - режим воспроизведения.void set_pipboy_available(int mode)
MOVIE_VSUIT как “просмотренный”.void inc_npc_level(int pid)
void inc_npc_level(string name) // deprecated
PID номер члена партии, или имя NPC (устарело и используется для совместимости с sfall 4.1.5 и более ранними версиями).int get_npc_level(int pid)
int get_npc_level(string name) // deprecated
PID номер члена партии, или имя NPC (устарело и используется для совместимости с sfall 4.1.5 и более ранними версиями).void set_car_current_town(int town)
void force_aimed_shots(int weaponPID)
void disable_aimed_shots(int weaponPID)
force_aimed_shots позволит оружию делать прицельные выстрелы, даже если обычно оно не может этого делать.disable_aimed_shots не позволит оружию делать прицельные выстрелы, даже если оно обычно может это делать.weaponPID: Номер прототипа оружия к которому нужно применить данное правило. Используйте значение равное 0, для рукопашной атаки (Unarmed).force_aimed_shots не переопределяет эффект от трейта Fast Shots.void set_bodypart_hit_modifier(int bodyPart, int hitMod)
bodyPart: Часть тела. Допустимые идентификаторы частей тела BODY_HIT_* определены в define_extra.h.BODY_UNCALLED не является прицельным модификатором, этот модификатор влияет на общий шанс попадания.int get_bodypart_hit_modifier(int bodyPart)
void set_unspent_ap_bonus(int bonusValue)
int get_unspent_ap_bonus()
void set_unspent_ap_perk_bonus(int bonusValue)
int get_unspent_ap_perk_bonus()
int get_ini_setting(string setting)
|.get_ini_setting("MyConfig.ini|SectionName|KeyName|DefaultValue");
\\ (или один /).:, путь к файлу указывайте без привязки к имени .dat папки.get_config_setting.string get_ini_string(string setting)
"" если DefaultValue в аргументе был опущен.get_ini_setting см. ее описание выше.int get_game_mode()
in_world_map.set_shader_mode.int get_uptime()
GetTickCount()).bool in_world_map()
int get_world_map_x_pos()
int get_world_map_y_pos()
x и y игрока на карте мира.void force_encounter(int map)
force_encounter_with_flags с установленным флагом ENCOUNTER_FLAG_NO_CAR.void force_encounter_with_flags(int map, int flags)
force_encounter, но позволяет указать некоторые дополнительные опции (доступные флаги см. в sfall.h).int get_light_level()
get_light_level, может не полностью совпадать со значением, установленным set_light_level, так как set_light_level применяет модификаторы от перка Night Vision.void set_map_time_multi(float multi)
float, где 1.0 обычная скорость.set_map_time_multi(0.5), и наличия двух уровней перка Pathfinder приведет к тому, что время на карте мира будет идти со скоростью 25% от обычной.int get_script(object obj)
scriptID (номер строки в scripts.lst), или 0, если объект не имеет прикрепленного скрипта.void set_script(object obj, int scriptid)
create_object_sid).start и map_enter_p_proc прикрепленного скрита.map_enter_p_proc к аргументу номера скрипта scriptID вы должны добавить значение флага 0x80000000.set_script на self_obj приведет к разного рода странным побочным эффектам, и это следует избегать.void remove_script(object obj)
void set_self(object setObj)
self_obj для следующего вызова скриптовой функции.self_obj (например, функция drop_obj). Функция set_self также может использоваться из обычных скриптов.self_obj вернется к своему исходному значению после следующего вызова скриптовой функции.set_self(0) также вернет self_obj к исходному значению. Рекомендуется вызывать это после каждого использования set_self в обычных скриптах, для того чтобы избежать непредвиденных побочных эффектов.use_obj, use_obj_on_obj требуется дважды использовать set_self.source_obj, target_obj будут возвращать ноль, если им предшествует вызов set_self.void get_critter_current_ap(object critter)
void set_critter_current_ap(object critter, int value)
get_critter_current_ap вне боя обычно возвращает максимальные AP криттера, но не стоит полагаться на это поведение. В частности, если криттер никогда раньше не вступало в бой, то это скорее всего вернет его базовые AP, игнорируя любые дополнительные бонусы от перков и т. д.void set_weapon_knockback(object weapon, int type, int/float knockbackValue)
void set_attacker_knockback(object critter, int type, int/float knockbackValue)
void set_target_knockback(object critter, int type, int/float knockbackValue)
type: Значение аргумента может быть 0 или 1:knockbackValue, применяются в порядке: weapon -> attacker -> target, поэтому оружие с модификатором множителя 2, который владеет установленным абсолютным значением 6, попав в цель с множителем 0.5, отбросит цель на 3 гекса назад.void remove_weapon_knockback(object weapon)
void remove_attacker_knockback(object critter)
void remove_target_knockback(object critter)
void mod_skill_points_per_level(int bonus)
bonus принимает значение в диапазоне от -100 до 100.void set_perk_level_mod(int modValue)
void set_perk_freq(int value)
int get_perk_freq()
void remove_trait(int traitID)
object get_last_attacker(object critter)
object get_last_target(object critter)
void set_base_hit_chance_mod(int max, int mod)
max: Заменяет 95% предел шанса вероятности попадания (так что вы можете установить 100% максимальный шанс), любое отрицательное значение пропустит установку.mod: Добавит столько процентов к шансу попадания (например, если ваш шанс равен 50%, а значение mod 20, то фактический процент шанса составит 70%).void set_hit_chance_max(int max)
set_base_hit_chance_mod функция устанавливает только максимальный предел шанса вероятности попадания в диапазоне от 0 до 999.void set_critter_hit_chance_mod(object critter, int max, int mod)
set_base_hit_chance_mod, но модификаторы применяется только к определенному криттеру.void set_base_pickpocket_mod(int max, int mod)
max: Заменяет 95% предел шанса на успех кражи (так что вы можете установить 100% максимальный шанс), любое отрицательное значение пропустит установку.mod: Добавит столько процентов к каждому шансу на успех (например, если ваш шанс равен 50%, а значение mod 20, то фактический процент успеха составит 70%).void set_pickpocket_max(int max)
set_base_pickpocket_mod функция устанавливает только максимальный предел шанса кражи в диапазоне от 0 до 999.void set_critter_pickpocket_mod(object critter, int max, int mod)
set_base_pickpocket_mod, но модификаторы применяется только к определенному криттеру.void set_skill_max(int max)
void set_base_skill_mod(int mod)
void set_critter_skill_mod(object critter, int mod)
int get_window_under_mouse()
void reg_anim_combat_check(int state)
reg_anim_* в бою (включая ванильные функции), если в аргумент функции передано значение 0.reg_anim_begin();
... // здесь должны быть вызовы функций
reg_anim_end();
Добавлено несколько дополнительных функций reg_anim_*. Все они работают по той же схеме, что и ванильные функции, и используют тот же базовый код.
void reg_anim_destroy(object obj)
void reg_anim_animate_and_hide(object obj, int animID, int delay)
reg_anim_animate, но объект будет автоматически скрыт после последнего кадра анимации (но не уничтожаться).animID, значение -1 выполнит анимацию сразу после того как закончится предыдущая анимация последовательности.void reg_anim_light(object obj, int light, int delay)
light: Задает радиус света в диапазоне 0..8, и его интенсивность от 0 до 65535, для указания уровня интенсивности необходимо использовать старшие 2 байта (пример: 0xFFFF0008 где интенсивность 65535 и радиус 8). Если старшие 2 байта равны 0, то интенсивность не изменяется.void reg_anim_change_fid(object obj, int fid, int delay)
art_change_fid_num, но в анимируемой последовательности reg_anim.void reg_anim_take_out(object obj, int weaponCode, int delay)
weaponCode (см. определения WPN_ANIM_* в файле define_extra.h).void reg_anim_turn_towards(object obj, int tile, int delay)
delay не используется.void reg_anim_callback(procedure proc)
macrovoid sfall_func4("reg_anim_animate_and_move", object obj, int tile, int animID, int delay)
delay: Задержка до выполнения указанной анимации в аргументе animID, значение -1 выполнит анимацию сразу после того как закончится предыдущая анимация в последовательности.int metarule2_explosions(int arg1, int arg2, int arg3)
array metarule2_explosions(int arg1, int arg2, int arg3)
void set_attack_explosion_pattern(int x, int y)
y is not used and x means: 1 - reduced explosion pattern (3 effects are spawned instead of 7), 0 - full pattern.void set_attack_explosion_art(int x, int y)
y is not used and x is a misc frame ID (last 3 bytes, without object type) to use for the next explosion.void set_attack_explosion_radius(int x)
void set_attack_is_explosion_fire()
HOOK_AFTERHITROLL), it will produce explosion effects (and radius damage) just like “explosion” type, but all targets will still receive fire damage.void set_explosion_radius(int grenade, int rocket)
array get_explosion_damage(int itemPid)
void set_dynamite_damage(int minDmg, int maxDmg)
void set_plastic_damage(int minDmg, int maxDmg)
void set_explosion_max_targets(int x)
void register_hook_proc(int hookId, procedure proc)
register_hook, но позволяет указать (вместо start), какую процедуру использовать для данного скрипта крючка.proc должна быть передана ссылка на процедуру скрипта так же, как вы передаете процедуры таким функциям, как gsay_option, giq_option и т.д. (имя процедуры без кавычек).void register_hook_proc_spec(int hookId, procedure proc)
register_hook_proc, но позволяет зарегистрировать сценарий в конце всей цепочки выполнения (т.е. скрипт будет выполняться после всех ранее зарегистрированных скриптов того же самого типа крючка, включая скрипт hs_*.int).register_hook_proc.string message_str_game(int fileId, int messageId)
message_str, за исключением того, что вы получаете сообщения из файлов расположенных в папке Game (т.е. text\<language>\game\).GAME_MSG_* или mstr_* из sfall.h для использования определенного msg-файла.fileId, начиная с 0x2000 до 0x2FFF (например, если вы установите ExtraGameMsgFileList=foo,bar так, то foo.msg будет связан номером с 0x2000, а bar.msg с 0x2001).0x2000 + присвоенный номер, а следующий за ним файл получит следующий номер (например, ExtraGameMsgFileList=foo,bar:2,foobar, то bar.msg будет связан с 0x2002, а foobar.msg с 0x2003), поэтому не допускайте присваивание номеров в середине цепочки.int sneak_success()
HOOK_WITHINPERCEPTION крючка).int tile_light(int elevation, int tileNum)
int get_tile_fid(int tile)
tile начиная с версии sfall 5.0.5 может использоваться ввиде шаблона 0xMEXXTTTT, для того чтобы указать новые режимы работы.M позволяет указать то, что вы хотите получить, значение: 0 - FID земли (по умолчанию), 1 - FID крыши, 2 - одновременно FID крыши и земли.E позволяет указать требуемый уровень карты (0-2). Поля TTTT используются для указания требуемой плитки.get_tile_ground_fid, get_tile_roof_fid доступны в sfall.h.object obj_blocking_line(object objFrom, int tileTo, int blockingType)
objFrom к плитке tileTo с помощью указанного типа блокировки.blockingType: Тип используемой функции блокировки (см. константы BLOCKING_TYPE_* в sfall.h).objFrom всегда исключается из вычислений, но он обязан быть действительным объектом.object obj_blocking_tile(int tileNum, int elevation, int blockingType)
array tile_get_objs(int tileNum, int elevation)
array party_member_list(int includeHidden)
obj_dude.includeHidden: 0 - будут возвращены только живые и видимые объекты криттеров, 1 - все объекты, включая багажник и т.д.array path_find_to(object objFrom, int tileTo, int blockingType)
object create_spatial(int scriptID, int tile, int elevation, int radius)
scriptID, на заданной плитке и радиусом.int art_exists(int artFID)
artFID в игре.art_exists((artFid bwand 0xFFFF0FFF) bwor (weaponAnim * 0x1000))
int obj_is_carrying_obj(object invenObj, object itemObj)
obj_is_carrying_obj_pid просто возвращает общее количество предметов для всех стеков с тем-же PID номером.any get_config_setting(string section, string key, any default)
section: Имя секции в конфигурационном файле.key: Имя опции в конфигурационном файле.default: Возвращаемое значение по умолчанию (от типа зависит возвращаемый тип значения ключа).int set_config_setting(string section, string key, any value)
section: Имя секции в конфигурационном файле.key: Имя опции в конфигурационном файле.value: Значение устанавливаемого ключа, поддерживается любой тип значения.int load_shader(string shaderFile)
free_shader..fx расположенного в директории <GameRoot>\<master_patches>\shaders\, начиная с версии sfall v5.0.8 функция может загрузить файл находящийся в файловой системе игры.void free_shader(int shaderID)
void set_shader_mode(int shaderID, int mode)
shaderID: Идентификационный номер загруженного шейдера.mode: Параметр представляет собой набор из 32 флагов, определяющих режимы интерфейсов на которых шейдер будет отключен, при этом если установлен бит 32, то в этом случае шейдер будет активен только на данных режимах. Список флагов всех определений режимов см. в sfall.h.void set_shader_type(int shaderID, int type)
shaderID: Идентификационный номер загруженного шейдера.type: Набор флагов для шейдинга:int get_shader_version()
int force_graphics_refresh()
array string_split(string text, string splitChar)
strlen(get_array(string_split(haystack, needle), 0));
string substr(string text, int start, int length)
start и до length символов. Первая позиция символа начинается с 0 (ноль).start отрицательный - это указывает на начальную позицию от конца строки, например: substr("test", -2, 2) это вернет последние 2 символа, т.е. “st”.length отрицательный - это означает, то столько символов будет опущено то конца строки, например: substr("test", 0, -2) это вернет строку без последних 2-х символов, т.е. “te”.length равен нулю - возвращается строка от начальной позиции до конца строки (новое поведение для sfall 4.2.2).int strlen(string text)
string sprintf(string format, any value)
printf (подробности формата см. в разделе printf языка С).string_format.ASCII коду %c.int atoi(string text)
float atof(string text)
atof) из его строкового предоставления.int charcode(string text)
ASCII для первого символа в заданной строке.float log(float x)
x.float exponent(float x)
e ^ x.int ceil(float x)
float ceilf(float x)
x до ближайшего дробного или целого числа, которое не меньше x.int round(float x)
x до ближайшего целого числа.float roundf(float x, int n)`
x до ближайшего значения.n задает число знаков после запятой для округления.float sqrt(float x)`
x.int abs(int/float x)
float abs(int/float x)
x.float sin(float x)
x.float cos(float x)
x.float tan(float x)
x.float arctan(float x, float y)
x.y не используется, просто передайте 1.operator (unsigned int division)3 + (20 div 5).float, то div будет выполнять знаковые деление так же, как и ванильный оператор деления.operator (exponentiation)5 ^ ( 1 / 3).NaN с отрицательным основанием.any sfall_funcX(string funcName, ...)
string).array sfall_func0("get_metarule_table")
sfall_funcX.bool sfall_func1("metarule_exist", string metaruleName)
True, если указанное имя функции sfall_funcX существует в текущей версии sfall.int sfall_func1("spatial_radius", object obj)
create_spatial.obj: Фиктивный объект к которому присоединен пространственный скрипт.object sfall_func2("critter_inven_obj2", object invenObj, int type)
critter_inven_obj, но позволяет правильно получить предмет в руке неактивного слота игрока.void sfall_func0("intface_redraw")
void sfall_func1("intface_redraw", int winType)
winType: Номер типа окна интерфейса для перерисовки (см. константы WINTYPE_* в sfall.h), или передайте -1 для перерисовки всех окон интерфейсов.void sfall_func0("intface_hide")
void sfall_func1("intface_hide", int winType)
winType: Номер типа окна интерфейса (см. константы WINTYPE_* в sfall.h).interface_hide(winType).void sfall_func0("intface_show")
void sfall_func1("intface_show", int winType)
winType: Номер типа окна интерфейса (см. константы WINTYPE_* в sfall.h)intface_hide без аргументов, применяется счетчик количество сокрытий, поэтому чтобы отобразить окно, должно быть вызвано тоже самое количество раз, сколько было использовано функций intface_hide.interface_show(winType).int sfall_func0("intface_is_hidden")
void sfall_func0("exec_map_update_scripts")
map_update_p_proc для всех объектов на карте, включая любые sfall скрипты с этим обработчиком.int sfall_func1("floor2", float value)
value.floor, эта функция правильно округляет число для отрицательных значений.floor выполняет округление к нулю (т.е. отбрасывает дробную часть числа, наподобие функция trunc в C/C++), может использоваться в качестве преобразования типа float к int.int sfall_func1("item_weight", object obj)
float sfall_func1("item_weight", object obj)
float).int sfall_func1("get_outline", object obj)
OUTLINE_* контура подсветки объекта, или 0 если объект не выделяется.void sfall_func2("set_outline", object obj, int color)
color: Цвет контура. Значения макросов OUTLINE_* определены в sfall.h, 0 означает отключение контура подсветки.0xCC00, где CC - индекс палитры (доступно с sfall 4.2.7)tile_refresh_display после изменения контура объектов для обновления сцены карты.object sfall_func0("outlined_object")
int sfall_func1("get_flags", object obj)
void sfall_func2("set_flags", object obj, int flags)
get_flags и используйте bwor, bwand для установки или удаления битового флага.void sfall_func0("tile_refresh_display")`
object sfall_func1("set_dude_obj", object critter)
dude_obj будет возвращать объект установленного криттера.object sfall_func0("real_dude_obj")
set_dude_obj.array sfall_func1("get_ini_config", string config)
array sfall_func2("get_ini_config", string config, bool searchDB)
lookup map), в котором ключи соответствуют названиям секций, а их значения это идентификатор на постоянный ассоциативный массив, в котором в строковом типе содержатся ключи и значения секции, пример доступа к значению: value = iniArray["section"]["option"]
value = iniArray.section_name.option_name
config: Имя и путь к INI-файлу.searchDB: Передача значение True укажет, что поиск файла будет происходить в файловой системе Fallout (т.е. поиск будет осуществлен во всех DAT-файлах и папках игры)..dat файла или его папки, например: cfg\\mymod.ini.free_array, иначе это просто будет занимать память.get_ini_config_dat, free_ini_config.array sfall_func1("get_ini_sections", string file)
file: Путь и имя к файлу относительно корневого каталога игры.file должен содержать символ :, в этом случае путь к директории файла указывайте без привязки к имени .dat папки. (sfall 5.0.8).array sfall_func2("get_ini_section", string file, string section)
file: Путь и имя к файлу относительно корневого каталога игры.file должен содержать символ :, в этом случае путь к директории файла указывайте без привязки к имени .dat папки. (sfall 5.0.8).string.int sfall_func4("get_ini_setting", string section, string key, any default, string file)
int sfall_func5("get_ini_setting", string section, string key, any default, string file, bool searchDB)
section: Имя секции в файле.key: Имя опции из которой будет возвращено значение.default: Возвращаемое значение и его тип по умолчанию (поддерживаются типы int, float, string).file: Имя конфигурационного файла.searchDB: Передача значение True укажет, что поиск файла будет происходить в файловой системе Fallout.int sfall_func2("set_ini_setting", string setting, int/string value)
setting полностью соответствует формату функции get_ini_setting, где вам требуется разделять имя файла, секцию и ключ символом |.get_ini_setting). Не записывает в INI-файлы упакованные в DAT.int sfall_func4("set_ini_setting", string section, string key, any value, string file)
int sfall_func5("set_ini_setting", string section, string key, any value, string file, bool searchDB)
section: Имя секции в файле.key: Имя опции в которую будет произведена запись значения.value: Записываемое значение, поддерживаются типы int, float, string.file: Имя конфигурационного файла.searchDB: Передача значение True укажет, что поиск и запись в файл будет происходить в файловой системе Fallout. В этом случае путь к директории файла указывайте без привязки к имени .dat папки.int sfall_func0("car_gas_amount")
metarule(METARULE_GIVE_CAR_GAS, amount), аргумент amount может быть положительным или отрицательным.void sfall_func1("set_car_intface_art", int artIndex)
int sfall_func0("get_cursor_mode")
CURSOR_* в sfall.h).void sfall_func1("set_cursor_mode", int mode)
int sfall_func0("get_cursor_type")
CURSOR_TYPE_* в sfall.h).void sfall_func0("display_stats")
int sfall_func1("lock_is_jammed", object)
void sfall_func1("unjam_lock", object)
use_skill_on_p_proc.void sfall_func1("set_unjam_locks_time", int time)
array sfall_func0("get_map_enter_position")
[tile, elevation, rotation], при входе на карту через сетки выхода (exit grids).tile будет равно -1.map_enter_p_proc для получения корректных данных о положении.void sfall_func3("set_map_enter_position", int tile, int elevation, int rotation)
tile в 0 поместит игрока на стартовый гекс карты (тайл по умолчанию и уровень высоты).map_enter_p_proc.void sfall_func1("set_rest_heal_time", int minutes)
void sfall_func1("set_rest_mode", int mode)
RESTMODE_* режимов в sfall.h).mode приводит к сбросу режима. Это также будет сбрасываться каждый раз, когда игрок перезагружает игру.int sfall_func0("attack_is_aimed")
void sfall_func3("set_iface_tag_text", int tag, string text, int color)
tag: Значение такое же, как и для show_iface_tag, hide_iface_tag и is_iface_tag_active. Диапазон допустимых значений от 5 до (4 + значение BoxBarCount в ddraw.ini) или номер последнего пользовательского бокса, добавленного с помощью функции add_ifaca_tag.text: Текст уведомления (ограничено 19 символами).color: Доступные цвета 0 - green, 1 - red, 2 - white, 3 - yellow, 4 - dark yellow, 5 - blue, 6 - purple, 7 - dull pink.int sfall_func0("add_iface_tag")
int sfall_func1("add_iface_tag", int msgNum)
int sfall_func2("add_iface_tag", int msgNum, int color)
msgNum: Используемый номер строки сообщения из файла INTRFACE.MSG.color: Используемый цвет для текста, 0 - зеленый (по умолчанию), 1 - красный.add_iface_tag) добавляет бокс уведомления без текста, в этом случае вам придется воспользоваться функцией set_iface_tag_text для установки текста.void sfall_func0("inventory_redraw")
void sfall_func1("inventory_redraw", int invType)
WINTYPE_INVENTORY).invType: Аргумент указывает, какой список предметов должен быть перерисован: 0 - PC, 1 - контейнер/NPC, -1 - обе стороны (то же, что и без аргумента).void sfall_func3("item_make_explosive", int pid, int activePid, int damage)
void sfall_func4("item_make_explosive", int pid, int activePid, int min, int max)
activePid: PID-номер для предмета с активным таймером, номер может совпадать с указанным номером основного предмета (аргумент pid).min max: Минимальный и максимальный наносимый ущерб (damage) от взрыва.Misc Item и иметь установленный флаг действия Use.int sfall_func1("get_string_pointer", string text)
void sfall_func1("dialog_message", string text)
int sfall_func1("get_current_inven_size", object)
void sfall_func5("create_win", string winName, int x, int y, int width, int height)
void sfall_func6("create_win", string winName, int x, int y, int width, int height, int flags)
CreateWin, но создает окно с флагом MoveOnTop, если аргумент flags не указан, или позволяет установить дополнительные флаги для создаваемого окна.MoveOnTop позволяет разместить создаваемое окно поверх игрового интерфейса.void sfall_func3("set_can_rest_on_map", int mapNum, int elev, bool value)
can_rest_here в maps.txt.mapNum: Номер карты из файла maps.txt.elev: Уровень карты для которой устанавливается значение, передача значения -1 в аргумент приведет к установке для всех уровней карты.int sfall_func2("get_can_rest_on_map", int mapNum, int elev)
set_can_rest_on_map.can_rest_here из файла maps.txt игнорируются).object sfall_func1("obj_under_cursor", int objType)
object sfall_func2("obj_under_cursor", int objectType, bool checkDude)
objectType: Значение типа объекта, который требуется получить, при этом будут игнорироваться перекрываемые объекты другого типа, или передайте значение -1, для того чтобы получить самый верхний объект расположенный под курсором.checkDude: В том случае если требуется возвратить объект dude_obj, предайте значение true в аргумент, иначе объект будет игнорироваться.tile_under_cursor.object sfall_func0("dialog_obj")
object sfall_func0("loot_obj")
WINTYPE_INVENLOOT).int sfall_func2("get_object_data", object, int offset)
OBJ_DATA_* в define_extra.h).void sfall_func3("set_object_data", object obj, int offset, int data)
int sfall_func2("get_object_ai_data", object critter, int aiParam)
AI_CAP_* из define_extra.h для аргумента aiParam, чтобы получить значение AI.void sfall_func0("art_cache_clear")
void sfall_func1("npc_engine_level_up", bool toggle)
void sfall_func3("set_drugs_data", int type, int pid, int value)
Drugs [установленные в конфигурационном файле, опции DrugsFile в файле ddraw.ini].type тип изменяемого параметра:int sfall_func1("set_unique_id", object obj)
int sfall_func2("set_unique_id", object obj, int flag)
0x10000000 до 0x7FFFFFF.sfall_func2("get_object_data", obj, OBJ_DATA_ID).flag.void sfall_func1("draw_image", string/int artFile)
void sfall_func3("draw_image", string/int artFile, int frame)
void sfall_func4("draw_image", string/int artFile, int frame, int x, int y)
void sfall_func5("draw_image", string/int artFile, int frame, int x, int y, bool noTransparent)
void sfall_func1("draw_image_scaled", string/int artFile)
void sfall_func2("draw_image_scaled", string/int artFile, int frame)
void sfall_func6("draw_image_scaled", string/int artFile, int frame, int x, int y, int width, int height)
CreateWin или с помощью sfall функции create_win.artFile: Путь к файлу PCX/FRM (например art\\inven\5mmap.frm), или его идентификационный номер FRM (например 0x7000026, см. спецификацию формата FID).Необязательные аргументы:
frame: Номер кадра в FRM изображении (первый кадр начинается с нуля).x y: Координаты точки относительно левого верхнего угла окна, с которой начнется рисование.width height: Размер изображения, используемый для масштабирования изображения при его рисовании. Передайте -1 к ширине или высоте, чтобы сохранить соотношение сторон при масштабировании.noTransparent: Передайте True, чтобы отобразить изображение без прозрачного фона.draw_image_scaled вызывается без аргументов x y width height, изображение будет масштабированно так, чтобы поместиться в окно без прозрачного фона.int sfall_func6("draw_line", int winType, int x0, int y0, int x1, int y1, int color)
x0 y0, до координат точки x1 y1.winType: Номер типа окна интерфейса (см. константы WINTYPE_* в sfall.h), если передано значение -1, то рисование будет происходить в текущем скриптовом окне.color: Индекс цвета в палитре игры (от 0 до 255).int sfall_func2("has_fake_perk_npc", object npc, string namePerk)
int sfall_func2("has_fake_trait_npc", object npc, string nameTrait)
void sfall_func5("set_fake_perk_npc", object npc, string namePerk, int level, int image, string desc)
void sfall_func5("set_fake_trait_npc", object npc, string nameTrait, int active, int image, string desc)
void sfall_func5("set_selectable_perk_npc", object npc, string namePerk, int active, int image, string desc)
has_fake_perk, has_fake_trait, set_fake_perk, set_fake_trait и set_selectable_perk, set_selectable_trait, но применяются к указанному NPC-члену группы (включая dude_obj).int sfall_func1("add_extra_msg_file", string fileName)
int sfall_func2("add_extra_msg_file", string fileName, int fileNumber)
0x3000 до 0x3FFF, чтобы функция message_str_game могла получать сообщения из этого файла.fileName: Имя файла пользовательского сообщения (включая расширение .msg) расположенного в директории пути text\<language>\game\. Если MSG-файл не существует в текущем языковом каталоге, функция попытается загрузить его из директории text\english\game\.fileNumber: Идентификационный номер файла для функции message_str_game. Доступный диапазон от 0x2000 до 0x2FFF (см. опцию ExtraGameMsgFileList в ddraw.ini). Используйте это в том случае, если вы хотите добавить файл сообщения без редактирования ddraw.ini, или существующих скриптов для поддержки старого способа.void sfall_func1("unwield_slot", object critter, int slot)
void sfall_func2("unwield_slot", object critter, int slot, int refresh)
slot: 0 - слот брони, 1 - правый слот, 2 - левый слот (см. INVEN_TYPE_* в define.h).refresh: передайте 0 - чтобы предотвратить обновление слота на панели интерфейса игрока (необязательный аргумент, по умолчанию всегда обновляет).void sfall_func1("add_trait", int traitID)
int sfall_func0("get_inven_ap_cost")
void sfall_func2("add_g_timer_event", int time, int fixedParam)
timed_event_p_proc в текущем глобальном скрипте.time: Количество игровых тиков (для примера см. ONE_GAME_* определения), после которого срабатывает таймер события.fixedParam: Значение, передаваемое процедуре timed_event_p_proc для функции fixed_param.add_global_timer_event(time, fixedParam).void sfall_func0("remove_timer_event")
void sfall_func1("remove_timer_event", int fixedParam)
fixedParam: Удаляет все события таймера с указанным значением для текущего глобального скрипта.mixed sfall_func1("get_sfall_arg_at", int argNum)
argNum: Запрашиваемый номер аргумента (первый аргумент начинается с нуля).mixed sfall_func1("get_sfall_return", int argNum)
set_sfall_return, например в предыдущем скрипте крючка.int sfall_func0("get_sfall_return")
set_sfall_return значений выполняемого в данный момент крючка.void sfall_func0("hide_window")
void sfall_func1("hide_window", string winName)
winName: имя окна, присвоенное окну функцией CreateWin или create_win.void sfall_func0("show_window")
void sfall_func1("show_window", string winName)
sfall_func0("hide_window").winName: имя окна, присвоенное окну функцией CreateWin или create_win.void sfall_func3("set_window_flag", string winName, int flag, bool value)
void sfall_func3("set_window_flag", int winID, int flag, bool value)
winName: имя окна, присвоенное окну функциями CreateWin или create_win.winID: идентификационный номер интерфейса или скриптового окна, полученного с помощью функции get_window_under_mouse или 0 для текущего интерфейса игры.flag: номер флага который необходимо изменить (см. константы WIN_FLAG_* в define_extra.h).value: True - устанавливает флаг, False - сбрасывает флаг.int sfall_func1("get_text_width", string text)
bool sfall_func2("string_compare", string str1, string str2)
bool sfall_func3("string_compare", string str1, string str2, int codePage)
True если две строки совпадают.codePage: Номер кодовой страницы для правильного сравнения национальных символов в диапазоне 128..255 ASCII таблицы. Доступные кодировки: 1250-1252, 866.string sfall_func2("string_format", string format, any val1, ...)
sprintf (подробности формата см. в разделе printf языка C).%s, и %d.array sfall_func3("objects_in_radius", int tile, int radius, int elevation)
array sfall_func4("objects_in_radius", int tile, int radius, int elevation, int type)
OBJ_TYPE_* в define_extra.h) в указанном радиусе от заданного гекса.type, или опустить его.int sfall_func3("tile_at_distance", int startTile, int endTile, int distance)
startTile endTile: Гексы для построения прямой линии от startTile к endTile.distance: Дистанция (от стартового гекса) для получения вычисляемого номера гекса, допускается значение дистанции выходящее за пределы гекса endTile.int sfall_func2("tile_by_position", int x, int y)
x, y относительно левого верхнего угла игрового экрана.string sfall_func2("string_to_case", string text, int toCase)
toCase: 0 - строчный (lowercase), 1 - прописной (uppercase).A-Z и a-z.string sfall_func0("get_terrain_type")
string sfall_func2("get_terrain_type", int x, int y)
TERRAIN_TYPE_* в define_extra.h) для суб-тайла на карте мира по указанным координатам, или по текущей позиции игрока, если функция вызывается без аргументов.string sfall_func0("get_terrain_name")
string sfall_func2("get_terrain_name", int x, int y)
void sfall_func3("set_terrain_name", int x, int y, string name)
int sfall_func1("get_window_attribute", int winType)
int sfall_func2("get_window_attribute", int winType, int attrType)
attrType.winType: Номер типа окна интерфейса (см. константы WINTYPE_* в sfall.h)attrType:winID (может использоваться для сравнения с get_window_under_mouse)[left, top, right, bottom], определяющие положение прямоугольника окна (доступ к значениям стандартно для массивов, пример: map.top, map.bottom)void sfall_func3("set_town_title", int areaID, string knownTitle)
void sfall_func3("set_town_title", int areaID, string knownTitle, string unknownTitle)
areaID: Идентификационный номер города из файла city.txt.knownTitle: Строка текста которая будет использоваться, если город ранее посещался.unknownTitle: Строка текста которая будет использоваться, если город еще не был посещен.unknownTitle был опущен, будет использоваться текст из knownTitle для обоих состояний.int sfall_func4("message_box", string message, int flags, int color1, int color2)
message: Текст в диалоговом окне. Используйте управляющий символ \n для переноса текста на новую строку (пример: “Hello\nWorld!”).Необязательные аргументы:
flags: Флаги режима диалогового окна (см. константы MSGBOX_* в define_extra.h). Передайте -1, чтобы не устанавливать флаги (по умолчанию флаги NORMAL и YESNO).color1 color2: Индекс цвета текста в палитре Fallout. color1 - задает цвет для первой строки, color2 - для всех последующих строк текста (по умолчанию индекс цвета 145).int sfall_func1("get_stat_min", int stat)
int sfall_func2("get_stat_min", int stat, bool who)
int sfall_func1("get_stat_max", int stat)
int sfall_func2("get_stat_max", int stat, bool who)
set_stat_min, set_stat_max).who: Передача значения False или пропуск аргумента возвращает установленное значения для игрока, True возвращает значения, установленные для всех NPC.int sfall_func4("interface_art_draw", int winType, string/int artFile, int x, int y)
int sfall_func5("interface_art_draw", int winType, string/int artFile, int x, int y, int frame)
int sfall_func6("interface_art_draw", int winType, string/int artFile, int x, int y, int frame, array param)
int sfall_func8("interface_art_draw", int winType, string/int artFile, int x, int y, int frame, int w, int h, int direction)
winType: Номер типа окна интерфейса (см. константы WINTYPE_* в sfall.h). Это также принимает значение флага 0x1000000 для предотвращения немедленной перерисовки окна интерфейса.artFile: Путь к PCX/FRM файлу (пример art\\\inven\\5mmap.frm), или его идентификационный номер FRM (например 0x7000026, см. спецификацию формата FID).x y: Координаты начало рисования картинки (смещение относительно левого верхнего угла окна).w h: Новая высота и ширина картинки для масштабирования спрайта.Необязательные аргументы:
frame: Номер кадра в анимированном FRM (первый кадр начинается с нуля).direction: Направление спрайта (0-5) для для много-направленного FRM.param: Переданный массив, задающий дополнительные параметры [direction, width, height] или [x, y, width, height]int sfall_func5("interface_print", string text, int winType, int x, int y, int color)
int sfall_func6("interface_print", string text, int winType, int x, int y, int color, int width)
SetFont для установки шрифта.text: Строка текста для печати. Используйте управляющий символ \n для переноса текста на новую строку (пример: “Hello\nWorld!”).winType: Номер типа интерфейсного окна (см. константы WINTYPE_* в sfall.h).x y: x и y позиция печати, относительно левого верхнего угла окна.color: Индекс цвета в палитре Fallout. Передайте 0, если цвет текста был ранее установлен функцией SetTextColor.bwor) для отображения текста:0x0010000 - добавляет тень к тексту, константа компилятора textshadow0x1000000 - чтобы предотвратить немедленную перерисовку окна интерфейса, константа компилятора textdirect (работает наоборот)0x2000000 - заполняет фон текста черным цветом, константа компилятора textnofill (работает наоборот)width: Максимальная ширина текста. Текст будет обернут так, чтобы поместиться в указанную ширину.mixed sfall_func0("combat_data")
C_ATTACK_* для текущего хода боевой атаки (см. определенные константы в define_extra.h).get_object_data и set_object_data. sfall_func3("set_object_data", sfall_func0("combat_data"), C_ATTACK_UNUSED, 255);
int sfall_func0("win_fill_color")
int sfall_func5("win_fill_color", int x, int y, int width, int height, int color)
color: Индекс цвета в палитре игры (от 0 до 255).int sfall_func3("interface_overlay", int winType, int mode, int id)
int sfall_func7("interface_overlay", int winType, int mode, int id, int x, int y, int w, int h)
overlay_set_draw).winType: Номер типа окна интерфейса (см. константы WINTYPE_* в sfall.h).mode:overlay_destroy). Все окно прорисовывается.overlay_create).x, y, w, h (макросы overlay_clear, overlay_clear_rectangle).overlay_set_draw).overlay_clear_redraw, overlay_clear_rect_redraw).id: Номер ранее созданной поверхности (см. описание макроса overlay_create).macroint sfall_func2("interface_overlay", int winType, 1)
macroint sfall_func2("interface_overlay", int winType, 3, int id)
id, вернет отрисовку обратно на основную поверхность интерфейса (рекомендуется это сделать после того как закончили рисовать).macroint sfall_func2("interface_overlay", int winType, 0)
void sfall_func2("set_quest_failure_value", int gvarNumber, int thresholdValue)
gvarNumber: Номер глобальной переменной, управляющей квестом.thresholdValue: Значение глобальной переменной, при котором квест считается провальным.void sfall_func1("set_scr_name", string name)
"" в аргумент name или его отсутствие позволит игре получить имя объекта из файлов pro_*.msg.bool sfall_func1("obj_is_openable", object obj)
True, если объект можно открыть (т.е. имеет анимацию открытия/закрытия), иначе False.int sfall_func7("add_button", int winType, int x, int y, int w, int h, string upPic, string downPic)
int sfall_func8("add_button", int winType, int x, int y, int w, int h, string upPic, string downPic, string hoverPic)
upPic downPic: Имя PCX файлов изображения для нажатой и отпущенной кнопки.hoverPic: Имя PCX файла для изображения кнопки, когда курсор мышки будет находиться над кнопкой (необязательный аргумент).button_free чтобы освободить ресурсы используемые кнопкой.void sfall_func1("button_free", int buttonID)
add_button.void sfall_func2("set_button_proc", int buttonID, int pressProc)
void sfall_func3("set_button_proc", int buttonID, int pressProc, int releaseProc)
void sfall_func4("set_button_proc", int buttonID, int pressProc, int releaseProc, int enterProc)
void sfall_func5("set_button_proc", int buttonID, int pressProc, int releaseProc, int enterProc, int leaveProc)
add_button) скриптовые обработчики для событий кнопки нажатия/отпускания, и входа/выхода курсора мышки.pressProc: Процедура обработчик для события нажатия левой кнопки мышки по региону.Необязательные аргументы:
releaseProc: Процедура обработчик для события отпускания левой кнопки мышки в регионе.enterProc: Процедура обработчик для события входа курсора мышки в регион.leaveProc: Процедура обработчик для события выхода курсора мышки из региона.& перед именем процедуры (подробнее см. описание компилятора в sslc.md).void sfall_func3("set_button_state", string name, int mode, int state)
name: Имя созданной кнопки.mode:state указывает флаг).state определяет: 1 - нажато, 0 - отжато.state: устанавливаемое значение.int sfall_func2("get_attack_damage", object critter, int attackType)
int sfall_func3("get_attack_damage", object critter, int attackType, int mode)
critter: Указатель на криттер (допустимо на данный момент только для dude_obj, и real_dude_obj).attackType: Тип рукопашной атаки (см. константы ATKTYPE_* в sfall.h).mode: Значение режима функции, 0 возвращает максимальное значение, 1 минимальное значение повреждение рукопашной атаки.get_attack_damage_min, get_attack_damage_max.int sfall_func2("get_attack_range", object critter, int attackType)
critter: Указатель на криттер.attackType: Тип атаки (см. константы ATKTYPE_* в sfall.h).int sfall_func3("get_weapon_damage", object weapon, int attackType, object critter)
int sfall_func4("get_weapon_damage", object weapon, int attackType, object critter, int mode)
weapon: Указатель на предмет оружия.attackType: Режим атаки оружия (см. константы ATKTYPE_* в sfall.h).critter: Криттер владелец оружия.mode: Значение режима функции, 0 возвращает максимальное значение, 1 минимальное значение повреждение у оружия.get_weapon_damage_min, get_weapon_damage_max.int sfall_func2("get_weapon_type", object weapon, int attackType)
WEAPON_TYPE_* в define_extra.h).weapon: Указатель на предмет оружие (если указатель равен 0, то возвращается WEAPON_TYPE_UNARMED).attackType: Режим атаки для оружия (см. константы ATKTYPE_* в sfall.h).int sfall_func2("get_weapon_radius", object weapon, int attackType)
weapon: Указатель на предмет оружие.attackType: Режим атаки для оружия (см. константы ATKTYPE_* в sfall.h).int sfall_func3("get_weapon_range", object weapon, int attackType, object critter)
weapon: Указатель на предмет оружия.attackType: Режим атаки для оружия (см. константы ATKTYPE_* в sfall.h).critter: Криттер для которого рассчитывается значение дистанции, передайте значение 0 (или опустите аргумент), чтобы получить дистанцию без модификаторов.macrobool sfall_func1("is_party_member", object critter)
True если криттер является потенциальным партийцем игрока, т.е. прописан в файле party.txt.int sfall_func0("get_hit_chance_max")
int sfall_func1("get_hit_chance_max", int hitChance)
int sfall_func2("get_hit_chance_max", int hitChance, object critter)
set_hit_chance_max и set_base_hit_chance_mod.hitChance: Переданное значение шанса, которое требуется модифицировать или ограничить до максимального установленного значения в случае его превышения.critter: Криттер для которого ранее был установлен модификатор и максимальный шанс функцией set_critter_hit_chance_mod.int sfall_func2("add_extra_perk", int ePerkID, array data)
ePerkID: ID добавляемого дополнительного перка (валидные номера 119…255).data: Массив с настройки параметров для дополнительного перка. Массив должен иметь 10 элементов, с последовательно идущими данными от Stat1 до Skill5Mod (см. формат файла Perks.ini).set_perk_name, set_perk_desc, set_perk_ranks.array sfall_func3("make_path_to", object objFrom, int tileTo, int blockingType)
path_find_to (см. ее описание), с той разницей, что нет необходимости пошагово вычислять требуемую плитку построенного пути.void sfall_func4("set_spray_settings", int centerMult, int centerDiv, int targetMult, int targetDiv)
ComputeSpray в ddraw.ini).HOOK_TOHIT или HOOK_AMMOCOST.centerDiv targetDiv: Минимальное значение делителя является 1.centerMult targetMult: Значения множителей ограничены значениями делителей.ComputeSpray опций в ddraw.ini для получения подробной информации о распределении пуль для атак очередью.int sfall_func0("get_combat_free_move")
set_combat_free_move.void sfall_func1("set_combat_free_move", int value)
HOOK_STDPROCEDURE совместно с событием combat_p_proc, или из HOOK_COMBATTURN в начале хода (в этом случае не будет работать для dude_obj).int sfall_func2("string_find", string text, string findString)
int sfall_func3("string_find", string text, string findString, int position)
findString в строкe text, или -1 если искомое значение не было найдено (первая позиция символа начинается с нуля).position: Позиция, с которой следует начать поиск в строкe text. Если задано отрицательное значение, то это указывает на позицию, начинающуюся с конца строки.string_find_from.void sfall_func3("set_object_light", object obj, int intensity, int distance)
obj_set_light_level за исключением того, что интенсивность света устанавливается непосредственным значением в диапазоне от 0 до 65536.int sfall_func5("combat_critter_damage", object source, object critter, int minDamage, int maxDamage, int dmgType)
int sfall_func6("combat_critter_damage", object source, object critter, int minDamage, int maxDamage, int dmgType, int attackType)
critter_dmg, за исключением того, что функцию рекомендуется применять в начале текущей атаки боя, например в крючке HOOK_COMBATDAMAGE, или же в крючках взрыва HOOK_ONEXPLOSION, HOOK_EXPLOSIONDAMAGE.explosion или critter_dmg, чтобы изменить расчет на общую формулу передайте в аргумент dmgType, значение -1 (см. ниже).source: Источник урона, это может быть объект взрыва или атакующий криттер.critter: Криттер которому будет нанесены повреждения.dmgType: Тип нанесенных повреждений (аналогично critter_dmg), или -1 чтобы использовался тип повреждений от используемого оружия атакующего.attackType: Указывает режим атаки атакующего (см. определения ATKTYPE_* в sfall.h). Необязательный аргумент, используется только в случае указания значения -1 в аргументе dmgType.int sfall_func6("add_region", int winType, string regionName, int x, int y, int width, int height)
x y и указанным размером.winType: Тип окна интерфейса (см. определения WINTYPE_* в sfall.h).regionName: Имя для создаваемого региона (длина ограничена 31 символами).int sfall_func2("delete_region", int winType, string regionName)
add_region.winType: Тип окна интерфейса (см. определения WINTYPE_* в sfall.h).regionName: Имя региона.int sfall_func3("set_region_proc", int winType, string regionName, int enter)
int sfall_func4("set_region_proc", int winType, string regionName, int enter, int leave)
int sfall_func5("set_region_proc", int winType, string regionName, int enter, int leave, int press)
int sfall_func6("set_region_proc", int winType, string regionName, int enter, int leave, int press, int release)
int sfall_func7("set_region_proc", int winType, string regionName, int enter, int leave, int press, int release, int pressRight)
int sfall_func8("set_region_proc", int winType, string regionName, int enter, int leave, int press, int release, int pressRight, int releaseRight)
winType: Тип окна интерфейса (см. определения WINTYPE_* в sfall.h).regionName: Имя созданного региона.enter: Процедура обработчик для события входа курсора мышки в регион.Необязательные аргументы:
leave: Процедура обработчик для события выхода курсора мышки из региона.press: Процедура обработчик для события нажатия левой кнопки мышки по региону.release: Процедура обработчик для события отпускания левой кнопки мышки в регионе.pressRight releaseRight: Процедуры обработчики для события нажатия/отпускания правой кнопки мышки.macroarray sfall_func1("art_frame_data", string/int fileID)
array sfall_func2("art_frame_data", string/int fileID, int frame)
array sfall_func3("art_frame_data", string/int fileID, int frame, int direction)
[width, height].fileID: Путь к файлу (например art\\inven\\5mmap.frm), или его идентификационный номер FRM (например 0x7000026, см. спецификацию формата FID).Необязательные аргументы:
frame: Номер кадра (первый кадр начинается с нуля).direction: Направление, для которого нужно получить кадр.macroint sfall_func2("art_frame_data", int artFID, -1)
int sfall_func2("art_frame_data", string file, -1)
artFID: Идентификационный номер FRM-файла (см. спецификацию формата FID).file: Путь к FRM-файлу (например art\\critters\\hanpwraa.frm).void sfall_func1("set_worldmap_heal_time", int minutes)
void sfall_func3("add_message_game", int msgFileNum, int msgLineNum, string msgText)
msgFileNum: Номер игрового файла сообщений (см. определения констант GAME_MSG_* в sfall.h).msgLineNum: Номер строки сообщения в текстовом файле сообщений.msgText: Новая текстовая строка, которая будет добавлена или заменена.void sfall_func0("signal_close_game")
void sfall_func0("dialog_terminate")
int sfall_func2("get_next_event_time", int eventType, object obj)
eventType: Тип искомого события (доступные события EVENT_* определены в define_extra.h), или -1 для первого найденного события.obj: Объект к которому принадлежит событие, если аргумент опущен или указано ноль, будет найдено первое доступное событие в очереди.Обратитесь к другим файлам документации Arrays.md, HookScripts.md для ссылок на связанные функции.