Общие сведения

Консоль позволяет конфигурировать игру "по ходу дела", применять некоторые читы, получать информацию о игре и т.п. Для того, чтобы разрешить включение консоли необходимо добавить в конец файла autoexec.cfg строку wirbelwind и организовать в файле input.cfg привязку на bind-id console. Последнее уже выполнено патчем, вызов консоли привязан к кнопке "~" (тильда).
Механизм консольных команд используется во всех конфигурационных файлах игры (*.seq, *.cfg). Многие команды представляют по сути глобальные переменные, значения которых используются в разных режимах игры. Ряд переменных (например, cheat_global_xcom) должны быть выставлены в желаемое значение перед загрузкой игры (в случае cheat_global_xcom - перед попаданием на глобальную карту), изменение же значений других оказывает моментальное воздействие (cameramode). Состояние переменных при выходе из игры не сохраняется. Число доступных команд в разных режимах игры различно, некоторые можно использовать только после загрузки сохраненной игры или старта кампании.

Список команд

Команда Параметры Описание
addmedalpoints Любой. Необходим. Что значит - бог весть. Добавляет всей команде по 40mp с последующей проверкой на получение наград (и пересчетов шансов на будующее получение). Результаты выводятся на консоль. Команда доступна только при загруженной игре.
autoplay Нет Автобой, обе команды управляются компьютером.
autoplay_templates Идентификатор карты. Задание карты для autoplay. Внимание! При задании несуществующего идентификатора при выдаче команды autoplay игра зациклится. Здравствуй кнопка reset.
autoplay_units Идентификатор юнита. Задание юнита, из которого будут состоять команды в autoplay. Вероятно, можно задавать несколько идентификаторов, как это сделать - не нашел.
bind   Команды формирования клавиатурных привязок. Кое-что можно посмотреть в соответствующем разделе
bind_update
bindconfigure
bindsection
cameramode PC, MAYA или FPS Режим работы камеры. PC - как обычно в игре, MAYA - как обычно в редакторе, FPS - "вид из глаз".
camerapos Нет Показывает текущие координаты камеры.
chapter Идентификатор тактической карты (3..28) Показать тактическую карту.
cheat_allow_headshot 0 или 1 В случае 0 запрещает попадания в голову. По умолчанию 1.
cheat_ap    
cheat_blood 0 или 1 В случае 0 пятна крови не показываются. По умолчанию 1.
cheat_football    
cheat_global_xcom 0 или 1 Команда меняет вид глобальной карты. При значении 1 игра не функциональна, сделано просто for fun. Рекомендуется выдавать команду перед загрузкой сохраненной игры, т.е. в главном меню игры. В противном случае скорее всего никаких изменений не увидите.
cheat_golden_shot 0 или 1 Каждое попадание приводит к "дизинтеграции" бойца. Внимание! Это касается и Ваших бойцов тоже. (Режим godmode 1 не спасает)
cheat_heads_off 0 или 1 В случае 1 каждое попадание считается попаданием в голову с последующей смертью бойца. Внимание! Это касается и Ваших бойцов тоже. (Режим godmode 1 не спасает)
cheat_showall 0 или 1 В случае 1 показывает всех противников на карте. Включая тех, которых Ваши бойцы не видят.
cheat_slomo 0 или 1 В случае 1 при смерти бойца показывает slomo. Т.е. камера делает оборот вокруг тела.
cheat_zoneautocomplete    
clear Нет Очистка текста на консоли.
console_writelog 0 или 1 При значении 1 часть текста, выдаваемого на консоль будет также записываться в файл Console.txt в директории игры.
credits Нет Показывает список авторов игры. Аналогично соответcтвующему пункту в главном меню игры.
d_animation    
d_awt    
d_create_animation    
d_idle_animation    
exec    
game_autosaves    
game_camera_accelerate_time    
game_camerasensivity    
game_dblclkmoveinrealtime    
game_eq_on_grenades    
game_forceturnbased    
game_invertscrollx    
game_invertscrolly    
game_invertturnx    
game_invertturny    
game_noai 0 или 1 В случае 1 отключает AI юнитов, которые находятся под контролем машины.
game_pathinrealtime    
game_profile    
game_scrollsensivity    
game_selectionsensivity    
game_skipvideo    
game_tbs_on_enemy_spot 0 или 1 В случае 1 при обнаружении противника игра переходит в походовый режим.
getitem Идентификатор вещи. Брать тут. Помещает в инвентарь выбранного бойца желаемую вещь.
gfx_16bit_mode    
gfx_16bit_textures    
gfx_anisotropic_filter    
gfx_autodetect    
gfx_block_buffering    
gfx_blur_sun 0 или 1  
gfx_cl 0 или 1  
gfx_cl_blur 0 или 1  
gfx_cl_cube_resolution    
gfx_cl_select_pl    
gfx_cl_sky_textures    
gfx_cl_use_bump 0 или 1  
gfx_cl_use_bump_always    
gfx_cl_use_precise_shadows    
gfx_decals 0 или 1  
gfx_depth_tex_resolution    
gfx_fastest 0 или 1  
gfx_fill_2d    
gfx_fill_transp    
gxf_fix_ban_np2    
gfx_fix_nv_np2_hack    
gfx_fog 0, 1 или 2  
gfx_fsaa    
gfx_fullscreen    
gfx_gamma    
gfx_hqshot_mag    
gfx_hsr    
gfx_hw_hsr 0 или 1  
gfx_low_ram    
gfx_maxlag    
gfx_nopixelshaders 0 или 1  
gfx_notexture    
gfx_particles 0 или 1  
gfx_point_specular 0 или 1  
gfx_recreate    
gfx_register_resolution    
gfx_resolution    
gfx_shadows 0 или 1  
gfx_showcache_2d    
gfx_showcache_linear    
gfx_showcache_transp    
gfx_showcache_transplm    
gfx_specular 0 или 1  
gfx_static_nooverwrite    
gfx_stats    
gfx_stencil_shadows 0 или 1  
gfx_swvertexprocess 0 или 1  
gfx_terrain_565    
gfx_texture_mip    
gfx_texture_usedxt    
gfx_tnl_mode -1, 0 или 1  
gfx_update    
gfx_validate    
global Идентификатор глобальной карты (1, 3..6) Начинает новую кампанию за выбранную сторону. Идентификатор берется из таблицы GlobalMaps. На настоящий момент 3 - Axis, 4 - Allies, 6 - DemoAxis, 1 и 5 - тест. К сожалению, поиграть в демо-кампанию не получится - разработчики убрали с первой ее зоны улики, что приводит к завершению кампании секунд через пять после начала :)
godmode 0 или 1 В случае 1 Вашим бойцам опасаться нечего. Если не задействованы другие читы (см. cheat_golden_shot и cheat_heads_off)
help Нет Выдает на консоль список консольных команд, доступных в данном режиме. Навигация по списку - клавишами PgUp и PgDn.
i_am_an_alien 0 или 1 В случае 1 меняет текстуры бойцов на нечто полупрозрачное a'la "Хищник". Рекомендуется выдавать команду перед загрузкой сохраненной игры, т.е. в главном меню игры. В противном случае скорее всего никаких изменений не увидите.
load имя игры Загрузить игру с указанным именем.
lua_showlog 0 или 1 В случае 1 выдает на консоль имена и диагностику отрабатываемых скриптов.
mainmenu Нет Показывает главное меню игры.
map [идентификатор варианта карты] [идентификатор 1 юнита] [идентификатор 2 юнита]...[идентификатор N юнита] vs [идентификатор 1 юнита] [идентификатор 2 юнита]...[идентификатор К юнита] Очень похоже на команду template. В отличие от последней вместо идентификатора карты используется идентификатор варианта карты.
mission_camera_attenuation    
mission_camera_limits    
mission_camera_minheight    
mission_camera_pitch_speed    
mission_camera_scroll_acceleration    
mission_camera_scroll_speed    
mission_camera_softattenuation    
mission_camera_softlimits    
mission_camera_yaw_acceleration    
mission_camera_yaw_speed    
mission_camera_zoom_acceleration    
mission_camera_zoom_speed    
multiplayer Нет Включает режим hot-sit, выдает к заполнению форму, в которой надо сформировать команды и указать идентификатор карты, на которой будет происходить сия глобальная битва. Специально под данную команду оформлены карты с номерами 4412, 4413, 4414. Однако на картах, не заточенных под multiplayer, будете иметь проблемы с расстановкой команд.
open_zone    
phoutput Нет Вывести на консоль параметры физической модели.
phaddrestrict Нет Включает/выключает параметр физической модели Additional restrictions
phfriction Число Устанавливает параметр физической модели friction.
phstiffness Число Устанавливает параметр физической модели Stiffness.
phstoprule   Изменяет параметр физической модели. (?)
phtimestep Число Устанавливает параметр физической модели Time step.
phvis Нет Включает/выключает параметр физической модели Visualization.
phdefault Нет Устанавливает параметры физической модели по умолчанию.
profile    
save имя игры Сохранить игру с указанным именем.
scenario LIST, DRAW или [имя сценария] LIST выводит список всех допустимых сценариев. Выполнение команды с именем сценария в качестве параметра случайным (?) образом открывает одну игровую зону сценария. Выполнение команды с параметром DRAW приводит к вылету игры, если текущей зоной на настоящий момент не является зона с базой. В противном случае генерируется файл scenario.dot, содержащий граф текущего сценария.
scenetemplate Идентификатор карты. Грузит указанную карту с видом сверху. Скроллировать карту нельзя, для чего сделали команду - непонятно.
script_rnd    
script_run имя скрипта Выполнить указанный скрипт на Lua. Файл должен лежать в директории scripts.
script_show    
scripterror    
seeall    
sequence zone [scenario] [zone] [clue1] [clue2]...[pers1] [pers2]...  
setvar имя переменной = значение Альтернативный способ задания глобальных переменных, которыми, по сути, являются большинство описанных тут команд. К примеру последовательности setvar cheat_global_xcom=1 и cheat_global_xcom 1 делают одно и тоже. В случае, если значение переменной строка, его надо заключать в кавычки.
setxplevel Номер уровня Устанавливает выбранному бойцу желаемый уровень. Скиллы и перки будут так же скорректированы.
showbind bind-id Посмотреть на консоли клавиатурную привязку. Список bind-id's смотреть в соответствующем разделе
sound_autodetect    
sound_mode    
sound_musicvolume    
sound_outputmode    
sound_sfxvolume    
sound_update    
summonunit Идентификатор юнита. Поиметь под свою команду указанный юнит. После можно передать его противнику, или сделать нейтральным, но уже с помощью Lua.
teleport    
template [идентификатор карты] [идентификатор 1 юнита] [идентификатор 2 юнита]...[идентификатор N юнита] vs [идентификатор 1 юнита] [идентификатор 2 юнита]...[идентификатор К юнита] "Облегченная" версия команды multiplayer. В отличие от последней идентификатор карты и команды игроков формируются в командной строке. Если опущены идентификаторы юнитов после "vs" сформированная команда просто перемещается в указанную карту. Если опущены все идентификаторы юнитов, команда формируется из отладочных немецких "трех мушкетеров". Идентификатор карты обязателен.
ui_charresponses    
ui_charresponsessubtitles    
ui_followcamera    
ui_germanversion    
ui_hwcursor    
ui_messages    
ui_showhints    
ui_showicons    
ui_showtooltips    
ui_tooltipdelay    
unbind bind-id Убрать указанную клавиатурную привязку. Список bind-id's смотреть в соответствующем разделе.
unbindall Нет Убрать все клавиатурные привязки.
unsummonunit Идентификатор юнита. Убрать указанный юнит с карты.
wirbelwind Нет Шаманство, которое нужно прописать в конце autoexec.cfg чтобы получить возможность включить консоль.
zone zone [scenario] [zone] [clue1] [clue2]...[pers1] [pers2]...  

Взаимодействие с Lua

Во первых строках настоятельно рекомендую ознакомиться с Reference manual for Lua 5.0. Впрочем, если Вы не собираетесь писать головоломные скрипты, а просто хотите немного поэксперементировать, этого не требуется - синтаксис языка интуитивно понятен.
Несколько общих положений.

  • В отличие от консольных команд регистр при вызове методов Lua играет роль.
  • Вызов метода из консоли должен начинаться с символа @.
  • Следует помнить, что это - функции, и не забывать расставлять скобки вокруг параметров.
При использовании Lua из консоли есть некоторые ограничения.
  1. Можно использовать только вызов одиночных методов
  2. Можно использовать только вызов методов которые
    • Не имеют параметров
    • Принимают в качестве параметров константы
    • Принимают в качестве параметров переменные, обьявленные в скрипте текущей зоны
    • Принимают в качестве параметров результаты других функции (стандартных, или реализованных в скрипте текущей зоны)
    • Принимают в качестве параметров обьекты, которые можно получить из комбинации клавиатурной привязки obj_under_cur и переменной ouc. (Подробнее см. в соответствующем разделе)
В принципе, пункт 1 можно немного обойти, написав свой скрипт и поместив файл с ним в директорию scripts. Тогда данный скрипт можно выполнить командой консоли script_run.
Несколько примеров использования Lua из консоли:
   @Difficulty(3)
Сменить уровень сложности текущей игры на "невозможный". Для прочих уровней сложности нужно использовать константы 1 и 2 соответственно.
   @UnitAIMode( ouc, false )
Отключить AI юнита, предварительно помещенного с помощью obj_under_cur в переменную ouc. Чтобы включить, второй параметр нужно поставить в true. Вообще удобный способ борьбы с "подвисами" игры на ходе союзников/противников.
   @UnitApplyCritical( ouc, 21 )
Причинить юниту, предварительно помещенному с помощью в переменную ouc, критическое повреждение. В данном случае - 21 - смерть. Табличку критических повреждений смотреть тут.
   @UnitGiveRandomPerks( ouc )
Выдать юниту в ouc полный набор рандомных перков. Чтобы перки действительно выдались, необходимо, чтобы место под перки уже имелось, т.е. предварительно надо повысить уровень юнита с помощью UnitSetXPLevel например. А вот такой вызов
   @UnitTakePerk( ouc, 8 )
Места под перк не требует. Более того, не требует вообще наличия дерева перков у юнита. Идентификаторы перков смотреть тут. Конкретно для данного случая - 8 - это повышенное уклонение при снижении VP.
   @UnitRegenerateVP( ouc, 1000 )
Вылечить 1000 VP у юнита в ouc.
   @UnitHealCriticals( ouc )
Вылечить критические повреждения у юнита в ouc.
   @UnitRemove(ouc)
Удалить юнит в ouc с карты.
   @UnitSetPlayer( ouс, 0 )
Определить контроль над юнитом. Вторым параметром указывается номер игрока, которому передается юнит. 0 - это Вы. Наличие прочих номеров зависит от того, сколько игроков в текущей игровой зоне и определяется создателем зоны. Например, в random encounter 1 - это противник. Четкой фиксации типа "1 - axis; 2 - allies; 3 - neitral" нет. Обычно данный вызов используется после summonunit. Кроме того при передаче юнита под контроль машины можно выставить ему поведение, например
   @UnitSetFearLogic( ouc )
   @UnitSetPanicLogic( ouc )
   @UnitSetNormalLogic( ouc )
   @UnitSetSkillMaxValue( ouc, ST_SNIPE, 70 )
Установить скилл снайперской стрельбы для юнита в ouc в 70. Полный список того, что можно менять данным методом можно найти в файле scripts\Constants.l. Перечислю:
  • ST_MELEE - рукопашный бой
  • ST_SHOOTING - стрельба
  • ST_THROWING - броски
  • ST_BURST - стрельба очередью
  • ST_SNIPE - снайперская стрельба
  • ST_STEALTH - скрытность
  • ST_SPOT - наблюдательность
  • ST_MEDICINE - медицина
  • ST_ENGINEERING - инженерия;
  • ST_VP - количество VP
  • ST_AP - количество AP
  • ST_IC - уклонение
  • ST_INTERRUPT - перехват
  • ST_STR - сила
  • ST_DEX - ловкость
  • ST_INT - интеллект
  • ST_LEVEL - уровень
Вызов данной функции часто идет в паре с другой - UnitSetSkill, с теми же параметрами, которая используется для установки текущего показателя параметра. К примеру, у раненого бойца текущее значение VP меньше от максимального.
Для установки уровня юнита можно использовать еще одну функцию:
   @UnitSetXPLevel( ouc, 4 )
Установить уровень юнита, предварительно помещенного с помощью в переменную ouc в 4. В отличие от UnitSetSkillMaxValue( ouc, ST_LEVEL, 4 ) данный вызов приведет к увеличению значений атрибутов и скиллов, т.е. эмулируется выдача юниту большого куска экспы.
   @KillEmAll()
Думаю, комментарии не требуются :)


К оглавлению
Hosted by uCoz