ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Секреты моддинга (Вопросница) | страница 44 |
|
|
|
Звездные волки 2: Гражданская война »
МОДовый отсек: «Секреты моддинга (Вопросница)» |
|
|
valv 62 EGP
Рейтинг канала: 2(23) Репутация: 7 Сообщения: 96 Откуда: Odessa Зарегистрирован: 14.10.2011 |
|
negat!ve : |
Создать персонажа в спасательной капсуле в космосе ?
|
1. Создаешь в нужном месте "истребитель".
2. Сажаешь туда своего "персонажа".
3. Взрываешь истребитель.
Cкрытый текст (кликните здесь для просмотра)
У меня это есть в готовом виде, в скрипте:
engine_update_ru.dat\data\Scripts\include\starrover_mk1\rescue_pod.script.
(эт где второй подъем пилота), и посмотри еще скрипт:
engine_update_ru.dat\data\Scripts\AI_mk1\Case_Eject_mk1.script
Из особенностей:
- триггер подъема пилота на борт корабля-базы не срабатывает, если пилот не из команды игрока (отсюда у меня и перекидывание пилотов между командами);
- в качестве "истребителя" я использовал объявленный мной каркас (<Interceptor name="RescuePod_mapsource">) с мешем NULL.
|
negat!ve : |
1.Можно как нибудь реализовать телепортацию между системами без порталов, по диалогу либо как-то еще ?
|
Да хоть с игровой консоли ([Shift]+[~]), причем в любое время (надо только ручками набрать одну строчку текста и нажать на [Enter]).
Функция CustomTeleportate(last_location, target_location,VideoDescrFileName);
пример, если с консоли игры:
runscript CustomTeleportate('pegas','ahilles','random_jump')
--эт с учетом того, что в системе 'ahilles' есть портал, ведущий из системы 'pegas', и именно оттуда и появится корабль-база.
negat!ve : |
Есть ли функция в скриптах, которая срабатывает постоянно при старте истребителя ?
|
? --Функция расстановки звеньев при вылете из ангара ?
/* которая указанна именно для текущего корабля-базы игрока */
В скриптовом АИ, новый истребитель игрока тоже вполне таки можно отловить.
Cкрытый текст (кликните здесь для просмотра)
/* функции ModifyShipMaxSpeed, ModifyShipSteeringPower, и пр. для его пилота точно начнут вызываться (если скриптовый АИ включен в AI.ini), вопрос только в том, что среди очень большого количества вызовов надо отлавливать первое появление в космосе связки пилот_игрока-истребитель, и обнулять данные по этой связке при стыковке с базой или гибели истребителя. т.е. технически можно, но мороки достаточно много */
|
Третий вариант - попробовать реализовать оповещение о старте истребителей игрока через триггеры, навешанные на корабль-базу.
valv: (относительно последнего вопроса)
Может кто знает лучший вариант, или уже пробовал реализовать подобное "событие" ?
_________________ Если мечтать, то ни в чём себе не отказывать :)
Последний раз редактировалось: valv (03:32 01-08-2015), всего редактировалось 8 раз(а) |
|
|
negat!ve 57 EGP Репутация: -2 Сообщения: 70
Зарегистрирован: 24.07.2015 |
|
Спасибо, посмотрю эти скрипты.Сейчас смотрю как сделаны спешиалы ...
И там вообще не понятно откуда берутся эти
<SummonNAVY>
<summonNavyFunction>
Неуже-ли они зашиты в движке игры и новый спешл не добавить ?
И как понимать это ?
Ai.ini
[PilotManager]
;использовать ли вычисление перков посредством скриптовых функций
;по умолчанию - 0 - обработка идет посредством движка
useLUAPerkProcessor = 0
pilotSoundPercentToPlay = 70
Не знал, что в игре есть консоль
А где посмотреть на список всех команд ?
В идеале я хотел бы создать тестовый скрипт, позволяющий телепортироваться по выбору игрока из диалога в любую систему.Но не понял на что повесить вызов диалога.Кроме того там нужно как-то фиксить перемещение корабля базы, что-бы он респавнился канонично у портала, и камера фокусировалась на нем, я еще не изучил как это связать
Последний раз редактировалось: negat!ve (14:07 01-08-2015), всего редактировалось 2 раз(а) |
|
|
valv 62 EGP
Рейтинг канала: 2(23) Репутация: 7 Сообщения: 96 Откуда: Odessa Зарегистрирован: 14.10.2011 |
|
negat!ve : |
не понятно откуда берутся эти <SummonNAVY> <summonNavyFunction>
|
Из \Data\Scripts\AI\Specials.script
negat!ve : |
И как понимать это ? Ai.ini [PilotManager]
;использовать ли вычисление перков посредством скриптовых функций
;по умолчанию - 0 - обработка идет посредством движка
useLUAPerkProcessor = 0
pilotSoundPercentToPlay = 70
|
Так и понимать. Если не поменяешь useLUAPerkProcessor на 1, то скриптовые функции АИ,
которые в оригинале игры загружаются из скриптов, находящихся в \Data\Scripts\AI\, просто не будут вызываться движком игры.
pilotSoundPercentToPlay - это параметр, определяющий какой % реплик пилотов,
находящихся в \Data\LocData\Russian\Voice\, будет проигрываться при соотв. игровых ситуациях.
negat!ve : |
Не знал, что в игре есть консоль
|
Она есть во всех версиях волков.
Мой текстовый файлик по использованию консоли лежит вот тут (текст, кодовая страница 1251, команды игровой консоли и их параметры). Оно же:
Cкрытый текст (кликните здесь для просмотра)
Информация по командам игровой консоли "Star Wolves 2"
/*
****************************
* valv, version 2012-02-26
****************************
*/
документация проекта "Retrospection"
Инициализация игровой консоли:
В файле main.ini в блоке GAME допишите параметр DebugMode = 1
В игре нажмите [SHIFT] + [~], откроется игровая консоль.
Получить список команд:
написать "cmdlist", и нажать на [ENTER]
Вводить команды в формате:
команда + ПРОБЕЛ + параметр + ПРОБЕЛ + параметр...
например: g_cheats 1
Ввод команды без параметров:
вывести текущее значение.
Ввод команды с неправильным количеством параметров:
вывести справку по использованию команды.
например: g_cheats 9 9 9 9 9
выведет:
'g_cheats': illegal number of arguments: required 1, but passed 1.
usage:
g_cheats <BOOL 'flag'>
Установка начальных значений:
прописать в файле "default.cfg",
расположенном в корневой директории игры (рядом с папкой "DATA").
Запуск скриптов:
ввести runscript <script code>
для вывода результата на консоль использовать функцию SLOG(<string>)
и функцию tostring() для приведения выводимого результата к строке.
внутри <script code> пробелы недопустимы.
для блокировки "управляющих последовательностей" и спецсимволов,
строки ограничивать не кавычками, а ограничителями '[[' и ']]'
при отладке,использование функций Lua: type(), tag(), getinfo(), ...
с консоли, позволяет получить дополнительную информацию (и вполне удобно)
при запуске с консоли обработка ошибок перехватывается,
и можно, на ввод функции с недопустимымии аргументами,
просто получить об этом сообщение, а не обрыв скрипта
Console command list:
--------------------------------------------------------------------------------
command name param count params
--------------------------------------------------------------------------------
exec 1 <String 'filename'>
cmdlist 1 [String 'command']
echo 1 [String 'message']
cls 0
ui_bind 3 <String 'key code'><String 'command(s)'>[BOOL 'global flag']
ui_unbind 1 <String 'key code all'>
ui_add_action 3 <String 'action name'><String 'action flag'>[String 'action desc']
ui_remove_action 1 <String 'action name all'>
ui_exec_action 1 <String 'action name'>
ui_inertion_rotation 1 <FLOAT '0.5..0.99'>
ui_inertion_move 1 <FLOAT '0.5..0.99'>
ui_inertion_movetofocus 1 <FLOAT '0.5..0.99'>
ui_inertion_cameramove 1 <FLOAT '10.0..100.0'>
__pstr_dump 0
__clear_slog 0
quit 0
g_showinvisible 1 <BOOL 'flag'>
g_cheats 1 <BOOL 'flag'>
gr_init_resolution 4 <INT 'XRes'><INT 'YRes'><INT 'BitDepth'><BOOL 'FullScreen'>
texture_detail 1 <INT 'detail_level'>
mip_mapping 1 <BOOL 'flag'>
/* управление отображением "указателей", в игре - клавиша "H"*/
ai_showstate 1 <BOOL 'flag'>
ai_showpointers 1 <BOOL 'flag'>
ai_togglepointers 0
__localization_folder 1 <String 'path'>
volume_sound 1 <FLOAT 'volume'>
volume_music 1 <FLOAT 'volume'>
_ui_before_repeat_delay 1 <FLOAT>
_ui_repeat_delay 1 <FLOAT>
_ui_dclick_time 1 <FLOAT>
_gui_hint_pause 1 <FLOAT>
_gui_hint_delay 1 <FLOAT>
_gui_max_drag_mouse_offset 1 <FLOAT>
gui_toggleconsole 1 [FLOAT 'fast_flag']
gui_con_color 4 <FLOAT 'r'><FLOAT 'g'><FLOAT 'b'><FLOAT 'a'>
gui_con_fontcolor 3 <FLOAT 'r'><FLOAT 'g'><FLOAT 'b'>
gr_showmissbound 1 <BOOL>
gr_showfps 1 <BOOL 'flag'>
gr_togglefps 0
gr_showfpscounter 0
runscript 1 <String 'string'>
mouse_sensitivity 1 <FLOAT 'sensitivity'>
wheel_sensitivity 1 <FLOAT 'sensitivity'>
invert_mouse 1 <BOOL 'flag'>
mouse_scrolling 1 <BOOL 'flag'>
_ui_selection_range 1 <FLOAT 'max_range'>
_ui_focus_range 1 <FLOAT 'max_range'>
_ui_attack_range 1 <FLOAT 'max_range'>
_ui_move_range_h 1 <FLOAT 'max_range'>
_ui_move_range_v 1 <FLOAT 'max_range'>
g_current_profile 1 <String 'name'>
g_dump 1 <String 'classname'>
g_delete 1 <String 'objectUID'>
g_storeworld 1 <String 'filename'>
g_restoreworld 1 <String 'filename'>
g_tradestationdlg 0
g_storelocation 1 <String 'filename'>
g_restorelocation 1 <String 'filename'>
g_initplayerteam 0
g_initlocation 0
g_teleport_to_location 1 <String 'filename'>
g_quest_start 1 <String 'name'>
g_recruits 2 <String 'questName'><INT 'recruitsNum'>
g_test 0
g_togglepause 1 [BOOL 'IsPaused']
g_clear_level 0
exit_to_menu 0
g_win_mission 1 [INT 'exit code']
g_fail_mission 0
--обучалка
__team_dump 0
|
Дополнительная информация, для тех, у кого установлено мое дополнение engine_update_ru.dat к ЗВ2.ГВ
Cкрытый текст (кликните здесь для просмотра)
Функции которыми я пользуюсь при работе с игровой консолью объявлены в
engine_update_ru.dat\data\Scripts\include\starrover_mk1\misc\debug_log.script.
/* в версии от 25-01-2015, в некоторых местах, надо подправить путь: заменить \\include\\starrover\\ на \\include\\starrover_mk1\\ */
Из наиболее удобного, это функция log_return(...), которая работает как прозрачные программные скобки, и кроме возврата всех переданных ей параметров, еще и выводит в консоль информацию об их типах. Используется для просмотра результатов вызова любой функции, или просмотра текущего значения любой переменной из контекста Луа.
Применять ее во время отладки скриптов тоже достаточно удобно.
Еще стоит обратить внимание на функцию log_globals(data_source, show_values, tag_filter), выводящую в консоль игры (и в лог-файл) список глобальных переменных, либо содержимое любой указанной таблицы. Описание параметров есть в самом скрипте. Примеры:
runscript log_globals(nil,nil,18) --вывести список порталов в текущей локации ГВ
runscript log_globals(Dest_Ships_List,nil,nil) --вывод таблицы Dest_Ships_List, объявленной в скрипте ObjectList.script
runscript log_globals(nil,TRUE,5) --вывести полный список доступных функций (не быстро).
Перекинуть результаты вызова из лог-файла в excel - вопрос нескольких минут.
Кстати, есть еще объявленные движком в табличке _CLASS методы игровых объектов, которые можно и посмотреть, и (если это надо) вывести их список в лог-файл.
Функция log_name() выводит в лог имя той функции, откуда она вызывается. Если надо в поиске места ошибки, проследить порядок срабатывания функций квеста, то внутри нужных функций квеста просто расставляется ее вызов.
Функция log_call() выводит в лог всю цепочку вызовов той функции, откуда она вызывается, и значения всех локальных переменных (в месте вызова).
|
negat!ve : |
на что повесить вызов диалога.
|
На любую свободную "горячую клавишу".
Посмотри мой gui_update_ru.dat/data/GUI/controls.cfg.
_________________ Если мечтать, то ни в чём себе не отказывать :)
Последний раз редактировалось: valv (19:18 02-08-2015), всего редактировалось 13 раз(а) |
|
|
negat!ve 57 EGP Репутация: -2 Сообщения: 70
Зарегистрирован: 24.07.2015 |
|
valv : |
negat!ve : |
не понятно откуда берутся эти <SummonNAVY> <summonNavyFunction>
|
Из \Data\Scripts\AI\Specials.script
|
А там они откуда берутся ?!
т.е. я хочу сделать свой собственный спешиал, там еще есть XMLScheme для них, но добавив там свой тег не получилось
Так-же не получается вызвать диалог из спешиал скрипта ... хотя файл диалога я поместил рядом со скриптом
А по свободным хоткеям получится вызвать диалог ?
Последний раз редактировалось: negat!ve (16:08 01-08-2015), всего редактировалось 1 раз |
|
|
valv 62 EGP
Рейтинг канала: 2(23) Репутация: 7 Сообщения: 96 Откуда: Odessa Зарегистрирован: 14.10.2011 |
|
negat!ve : |
я хочу сделать свой собственный спешиал
|
Содержимое \Data\XMLScheme\ менять бессмысленно - оно движком вроде даже не читается.
По спешиалам, можно только заменить какой-то из стандартных вызовов поддержки на свою функцию.
По другому - эт только к тем, кто имеет и "права", и желание сделать новую версию движка (.exe)
/* а таких вроде уже нету. проект "заморожен" (т.е. помер) */
negat!ve : |
не получается вызвать диалог из спешиал скрипта.
|
Единственный известный мне баг движка ГВ (ver.1.12), при котором может таки не вызываться диалог, эт отсутствие у игрока корабля-базы.
В других случаях, все правильно написанное вроде работает. Отлаживай.
/* хотя-бы посмотри как сделаны в ГВ диалоги "бродячих торговцев", и где они лежат */
P.S. По "горячей клавише" через runscript можно вызвать (с параметрами) совсем любую функцию Луа,
а уж насколько она корректно написана и отлажена - это уж проблемы только ее автора.
_________________ Если мечтать, то ни в чём себе не отказывать :)
Последний раз редактировалось: valv (17:49 01-08-2015), всего редактировалось 9 раз(а) |
|
|
negat!ve 57 EGP Репутация: -2 Сообщения: 70
Зарегистрирован: 24.07.2015 |
|
хз почему диалог не работает из спешиала, но из скрипта квеста он вызывается, и работает корректно, скрипт спешиала, то-же работает пока не вписать туда вызов диалога.
Корабль база присутствует.
Про спешиал я имею ввиду, что я клонировал спешиал вызова предтеч, поскольку полностью свой я создать не смог, именно этот клонировал потому-что там есть вызов луа функции.Типа так хотел сделать запуск телепортации в любую систему, а их список добавить в диалог, типа игрок нажимает на спешиал и телепортируется куда захочет
добавлено спустя 15 минут:
valv : |
По спешиалам, можно только заменить какой-то из стандартных вызовов поддержки на свою функцию.
|
Т.е. в игру никак не добавить новый тип спешиал правильно ?
Но ведь ничего плохого не случится если я буду использовать теги от <SummonNAVY>
<summonNavyFunction> для своих фитч ?
добавлено спустя 3 минуты:
Код: |
<SummonPREC>
<prerequisites>
<AtMost>
<specialActionType>SummonPREC</specialActionType>
<specialActionLevel>0</specialActionLevel>
</AtMost>
</prerequisites>
<internal_name>teleport_1</internal_name>
<name>#M_Teleport_perk</name>
<description>#M_Teleport_perk_desk</description>
<icon>SpecPrecur3</icon>
<level>1</level>
<charges>3</charges>
<rechargeTime>100</rechargeTime>
<auraFX>hack</auraFX>
<upgrade_cost>0</upgrade_cost>
<summonPRECFunction>TeleportPerkFunction</summonPRECFunction>
</SummonPREC> |
добавлено спустя 9 минут:
Т.е. всего в игре 19 уникальных типов для спешиалов
Которые можно использовать и на их основе делать свои ...
<Boost></Boost>
<Burst></Burst>
<Finesse></Finesse>
<Lucky></Lucky>
<MissleSalvo></MissleSalvo>
<Inspire></Inspire>
<SnakeAttack></SnakeAttack>
<WeakSpot></WeakSpot>
<CoupDeGrace></CoupDeGrace>
<Depolarization></Depolarization>
<Polarization></Polarization>
<Jinxed></Jinxed>
<HackShip></HackShip>
<HackBerserk></HackBerserk>
<SnipeOut></SnipeOut>
<SummonNAVY></SummonNAVY>
<SummonKFNI></SummonKFNI>
<SummonBerserk></SummonBerserk>
<SummonPREC></SummonPREC>
добавлено спустя 3 минуты:
Только я не понял как передается аргумент для функций типа
<summonPrecFunction>SummonPrecLevel_1</summonPrecFunction>
В скриптах она имеет аргументы, которые в XML не пишутся, значит пишутся где-то еще ? или передаются движком игры ?
function SummonPrecLevel_1(x, y, z, ship, duration)
SummonPrecFunction(x, y, z, ship, duration, 1);
end;
Последний раз редактировалось: negat!ve (18:42 01-08-2015), всего редактировалось 5 раз(а) |
|
|
valv 62 EGP
Рейтинг канала: 2(23) Репутация: 7 Сообщения: 96 Откуда: Odessa Зарегистрирован: 14.10.2011 |
|
negat!ve : |
всего в игре 19 уникальных типов для спешиалов
|
Думаю это число стоит сократить до тех типов спешиалов, которые таки вызывают скриптовые функции Луа.
/* т.е исключить все типы, полностью реализованные внутри движка, и не вызывающие ничего из контекста Луа. Моддеру поменять в них ничего не получится. */
Cкрытый текст (кликните здесь для просмотра)
<SummonNAVY></SummonNAVY>
<SummonKFNI></SummonKFNI>
<SummonBerserk></SummonBerserk>
<SummonPREC></SummonPREC>
|
negat!ve : |
как передается аргумент для функций типа
<summonPrecFunction>SummonPrecLevel_1</summonPrecFunction>
|
Никак. Строка с именем вызываемой функции прописывается в данных тега <summonPrecFunction>.
Для счетчика вызовов используются глобальные переменные.
Открой скрипт, и прочитай написанные на русском языке комментарии.
Cкрытый текст (кликните здесь для просмотра)
Пример из скрипта \Data\Scripts\AI\Specials.script:
-- инициализируем счетчик для создания локальных переменных
local_num2 = 0;
init_team2 = 0;
...
function SummonPrecFunction(x, y, z, ship, duration, level)
local flight_usage;
-- с каждым вызовом увеличиваем счетчик
local_num2 = local_num2 + 1;
...
|
P.S. Вообще-то передавать аргументы в те функции, которые игровой движок вызывает просто по сохраненной строке их имени вполне можно.
Cкрытый текст (кликните здесь для просмотра)
В этом случае движок пытается вызвать функцию из контекста Луа как имя_функции+"()".
Передачу параметров я делал через объявление своей "пустышки" NOP() (No Operation), и строку вызываемой функции указывал как имя_функции(<параметры>)+";NOP".
Тогда движок вызывает имя_функции(<параметры>)+";NOP"+"()", что синтаксически корректно и не приводит к ошибкам.
Список параметров может быть или заранее преобразованным к их текстовым значениям, или переданным (сформированным) во время вызова функции, поскольку вызов функции движком идет аналогично dostring.
Пример такого имени: my_action_name = "my_action(my_param);NOP"
где-то так.
2015-08-04: Исправил в тексте глупую описку по dostring. Использование оной удобно, если нужно передать как параметры результаты обработки блока кода (преобразование параметров), а в единичных случаях - оно просто лишнее.
|
Посмотри в руководстве Луа 4.0.1 типы и видимость переменных (локальные, глобальные, вызов функций upvalue, unpack, ...)
/* в данном случае, функции upvalue, unpack, это не имена функций Lua 5, а аналогичные им скриптовые функции из моей добавки к Lua 4.0.1,
находящейся в engine_update_ru.dat\data\Scripts\include\starrover_mk1\lua_lib_ext.script */
_________________ Если мечтать, то ни в чём себе не отказывать :)
Последний раз редактировалось: valv (00:02 05-08-2015), всего редактировалось 15 раз(а) |
|
|
negat!ve 57 EGP Репутация: -2 Сообщения: 70
Зарегистрирован: 24.07.2015 |
|
valv : |
В этом случае движок пытается вызвать функцию из контекста Луа как имя_функции+"()".
Передачу параметров я делал через объявление своей "пустышки" NOP() (No Operation), и строку вызываемой функции указывал как имя_функции(<параметры>)+";NOP".
Тогда движок вызывает имя_функции(<параметры>)+";NOP"+"()", что синтаксически корректно и не приводит к ошибкам.
Список параметров может быть или заранее преобразованным к их текстовым значениям, или переданным (сформированным) во время вызова функции через dostring.
Пример такого имени: my_action_name = "my_action(dostring('return my_param'));NOP"
где-то так.
|
Что я не так делаю ?
Cкрытый текст (кликните здесь для просмотра)
Код: |
--моя функция в скрипте(рабочая) :
function add_best_amt(amt)
add_ships(fighters_best, amt);
add_ships(fighters_2gen, amt);
add_items(BS_turrets_ms_best, amt);
add_items(GKs_best, amt);
add_items(BS_Sys_best, amt);
add_items(F_guns_best, amt);
add_items(F_sys_best, amt);
add_items(F_rockets_best, amt);
end;
--Функция пустышка:
function nopfunc()
end;
<!--Часть диалога из которой происходит вызов(диалог рабочий)-->
<DialogAnswer name="ans02">
<answer>#M_Add_300_eqp</answer>
<lua_function>add_best_amt(300);nopfunc</lua_function>
<go_message_name />
<multi_pass>true</multi_pass>
<sound_name />
</DialogAnswer>
--Вызываю диалог из скрипта миссии
StartDialog("Add_items");
;Либо вызываю его из controls.cfg
ui_bind "NUMPAD1" "runscript StartDialog([[Add_items]])" |
|
Последний раз редактировалось: negat!ve (22:29 01-08-2015), всего редактировалось 2 раз(а) |
|
|
valv 62 EGP
Рейтинг канала: 2(23) Репутация: 7 Сообщения: 96 Откуда: Odessa Зарегистрирован: 14.10.2011 |
|
negat!ve : |
Что я не так делаю ?
|
проверил. передача параметров, работающая в AttachAction триггеров
/* __test_trigger:AttachAction('trigger_test_action("2_15");NOP'); */
в диалогах, при указании в теге <lua_function> примерно того же самого, таки блокируется.
/* проверял обе функции - и StartDialog, и StartTradeDialog. */
Возможно там есть дополнительная проверка на существование функции перед ее запуском (? через lua_getinfo ?).
Сейчас пробую как-то все же решить этот вопрос (с передачей параметров).
P.S. уточнил. в функциях спешиалов вызова поддержки, параметры передаются игровым движком при их вызове.
в отличии от счетчика срабатываний, эт не глобальные переменные.
_________________ Если мечтать, то ни в чём себе не отказывать :)
Последний раз редактировалось: valv (10:39 02-08-2015), всего редактировалось 6 раз(а) |
|
|
Michael_Moon 100 EGP
Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011 |
|
Диалог не вызывается, потому что должен в квесте существовать, - самая распространенная ошибка (у меня).
|
|
|
negat!ve 57 EGP Репутация: -2 Сообщения: 70
Зарегистрирован: 24.07.2015 |
|
valvСпасибо
Michael_Moon : |
Диалог не вызывается, потому что должен в квесте существовать, - самая распространенная ошибка (у меня).
|
Если ты о моем диалоге со спешиалом, то я его переделал в трейдерский диалог(что-бы наверняка), но и обычный диалог все-таки вызывался и работал пару раз, а остальное время крашил игру на рабочий стол, с трейдерским то-же самое.От чего зависит успех/крэш я зависимости не нашел
Последний раз редактировалось: negat!ve (14:25 02-08-2015), всего редактировалось 1 раз |
|
|
valv 62 EGP
Рейтинг канала: 2(23) Репутация: 7 Сообщения: 96 Откуда: Odessa Зарегистрирован: 14.10.2011 |
|
Упсь. У меня обе версии диалогов работают, но крэш может таки идти, если:
1. Диалога, вызываемого в функции StartTradeDialog, нет в папке \data\Scripts\Trade\
2. Диалога, вызываемого в функции StartDialog, нет в папке текущей миссии.
3. В передаваемой этим функциям строке, указать не только имя файла диалога, но и расширение ".xml".
Для запихивания диалога (используемого в StartDialog) в нужное место (в папку миссии), я его просто туда копирую.
/* для получения имени миссии, просто перекрыл функцию движка QuestStart своей, запоминающей имя текущей миссии. */
/* для копирования файла средствами Луа написал свою простенькую функцию */
Как приведу эти добавки из просто "работающего" вида, в более-менее приличный - где-то выложу.
_________________ Если мечтать, то ни в чём себе не отказывать :) |
|
|
negat!ve 57 EGP Репутация: -2 Сообщения: 70
Зарегистрирован: 24.07.2015 |
|
Я же говорю что диалог исправен и находится игрой, крэш может быть из-за чего-то сопутствующего диалогу, а из-за чего я не знаю.
Диалог лежит в папке Trade, функция в скрипте special.script саму функцию пробовал и с аргументами как у оригинальной, так и без аргументов. Спешиал.XML уже показывал, и сам спешиал так-же рабочий
--вот функция
--function TeleportPerkFunction()--это первоначальный вариант, так-же работал и так-же крашился
function TeleportPerkFunction(x, y, z, ship, duration)
StartTradeDialog("Teleport");
--TeleportToLocation("torr");--так я типа проверял что спешиал работает и делает то что нужно.
end;
Specials.XML
<summonPRECFunction>TeleportPerkFunction</summonPRECFunction>
Т.е. оно как бы иногда работает, а иногда выкидывает на рабочий стол.
|
|
|
ironHAMMER.ms 50 EGP Репутация: 0 Сообщения: 4
Зарегистрирован: 10.01.2016 |
|
Хотелось бы узнать мнение опытных ресурсокопателей по такому вопросу: возможно ли заменить искусственный интеллект базы на полноценного пилота? И, если этот финт таки возможен, был бы крайне признателен за наводку, в каком направлении копать.
|
|
|
Michael_Moon 100 EGP
Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011 |
|
ironHAMMER.ms : |
Хотелось бы узнать мнение опытных ресурсокопателей по такому вопросу: возможно ли заменить искусственный интеллект базы на полноценного пилота? И, если этот финт таки возможен, был бы крайне признателен за наводку, в каком направлении копать.
|
В какой части игры?
|
|
|
ironHAMMER.ms 50 EGP Репутация: 0 Сообщения: 4
Зарегистрирован: 10.01.2016 |
|
Michael_Moon : |
В какой части игры?
|
Гражданская Война
|
|
|
Tigerrat 50 EGP Репутация: 0 Сообщения: 2
Зарегистрирован: 30.12.2015 |
|
Доброго времени суток, уважаемые! Есть вопрос, в котором нужна помощь людей с прямыми руками) Максимальное количество истребителей в звене - 6. В каком файле и где конкретно прописано их расположение относительно друг-друга? А-то хотел устроить хардкор, увеличить до 10, а нет. Все истребители сверх 10 генерируются ровно посреди карты. Отсюда столпотворение в этой точке. Заранее спасибо)
|
|
|
Aleksey_SR 73 EGP Рейтинг канала: 4(67) Репутация: 6 Сообщения: 175 Откуда: Новокузнецк Зарегистрирован: 13.12.2015 |
|
Вижу, тут разрабы говорили, что для торговли нужно начинать новую игру. В принципе, такой способ проверки "нового" магазина рабочий на 100%. Однако я посмотрел файл InitTradeSystem.script и внимательно изучил записи лога при начале новой игры, где как раз таки запускается этот файл. В этом файле при его открытии прописана одна исполняемая функция, где указываются таблицы наполнения магазинов с ценами и рандомом появления. И в конце файла идет запуск этой функции (она вроде так называется: __InitTradeSystem() ). То есть, при открытии этого файла, эта функция вызывается. Я это к тому, что (я ДУМАЮ) магазин можно менять вне зависимости от начала новой игры. А делается это с помощью вызова этой функции ЧЕРЕЗ КОНСОЛЬ. Это действительно правда, или действительно даже такой способ не работает? Впрочем, я проверю и отпишусь.
UPD: не сработает. Игра не загружает сам файл при запуске сохраненки, а значит, через консоль нельзя вызывать функции через этот файл. Тем более, если его открыть через консоль, то все равно добавить что-то в магазин таким образом не получится, так как наложение одного ассортимента на другой (идентичный + нововведения) могут привести к непредсказуемым последствиям. Поэтому, тут есть 2 варианта:
1. Заново создавать магазины, предварительно уничтожив существующие функцией DestroyShop(shop) и открытие файла InitTradeSystem через консоль заново;
2. Тупо добавлять новое в магазины через консоль или через файлы.
_________________ Discord: shadowvinyl
Последний раз редактировалось: Aleksey_SR (17:35 04-06-2018), всего редактировалось 1 раз |
|
|
miv79 69 EGP
Репутация: 0 Сообщения: 124
Зарегистрирован: 08.03.2009 |
|
Подскажите плиз как изменить дальность и скорость сбора лута ?
|
|
|
valv 62 EGP
Рейтинг канала: 2(23) Репутация: 7 Сообщения: 96 Откуда: Odessa Зарегистрирован: 14.10.2011 |
|
miv79 : |
Подскажите плиз как изменить дальность и скорость сбора лута ?
|
файл: \data\AI\AI.ini
раздел: [KeepLevel] ; строка 50
параметры:
; радиус сферы, внутри которой собираются "ничейные" модули
moduleAdsorbtionRadius = 120
; скорость втягивания модулей в корабль
moduleAdsorbtionSpeed = 12
открыть файл и поменять цифры.
P.S. если стоит моё обновление к игровому движку, то отредактировать этот же файл внутри engine_update_ru.dat (это ZIP архив).
_________________ Если мечтать, то ни в чём себе не отказывать :)
Последний раз редактировалось: valv (18:12 28-01-2017), всего редактировалось 1 раз |
|
|
|
|
|
Звездные волки 2: Гражданская война ->
МОДовый отсек: «Секреты моддинга (Вопросница)» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Один глаз на сервер, другой в конфу, третий в чат... (портрет Alone'a от Loki)
|
» Секреты моддинга (Вопросница) | страница 44 |
|