Модостроение. Редактирование и создание скриптов
|
|
denis2000 | Дата: Пн, 10.10.2011, 21:17 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Редактирование и создание скриптов Редактирование и создание скриптов на языке LUA Если у вас появились вопросы по применению скриптов в игре. Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7
Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML [cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл: 1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R]) 2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx" 3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо) Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#" Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти? Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда. Для того чтоб найти LOG необходимо зайти вот сюда:
В Win хр лог находится:
C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs
Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.
В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs
Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка: ... $app_data_root$ = true | false| $fs_root$| users\(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx) ... $logs$ = true| false| $app_data_root$| logs\(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи) ... [/cut][cut=Получение более подробной информации о вылете (ХОВАН)] Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...) Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так: Code function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Code Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil) Второй: Code Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic' [/cut]
Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы, статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
makdm | Дата: Пн, 13.01.2014, 19:12 | Сообщение # 391 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| strelok200, а в чём выражается неработоспособность? У вас, что вылет?
Возможно вот здесь
act_pos:distance_to_sqr(npc_pos) < 40
вы имели ввиду расстояние в 40 м?
Если так, то в игре это будет не 40 м, а корень квадратный из 40, т.е. примерно 6, 32 м.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 13.01.2014, 19:40 | Сообщение # 392 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| strelok200, 1. Написали функцию controller, а вызываете функцию controller_xray 2. Какой такой npc передается в функцию из логики рестриктора? 3. Что возвращает функция distance_to_sqr?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
FantomICW | Дата: Пн, 13.01.2014, 21:33 | Сообщение # 393 |
Лидер «Свободы»
Свобода
Сообщений: 4438
| NIV, ты скажи, для начала, что хочешь поправить...Может и без правки движка обойтись можно. Ведь достаточно отследить открытие элемента через actor_menu.script и функцию проверки, и можно новый элемент запустить.
|
|
|
Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
strelok200 | Дата: Вт, 14.01.2014, 19:49 | Сообщение # 394 |
Бывалый
Свобода
Сообщений: 126
| Цитата denis2000 ( ) 1. Написали функцию controller, а вызываете функцию controller_xray С вызовом все верно, это я на форум просто закинул аналогичную ф-цию Цитата denis2000 ( ) 2. Какой такой npc передается в функцию из логики рестриктора? Не совсем понял к чему этот вопрос Цитата denis2000 ( ) 3. Что возвращает функция distance_to_sqr? Можно и без проверки на расстояние, все равно не работаетЦитата makdm ( ) strelok200, а в чём выражается неработоспособность?У вас, что вылет? Нет, не выполняется функция gar_message, прописанная в xr_effects
Сообщение отредактировал strelok200 - Вт, 14.01.2014, 21:15 |
|
|
Эти 0 пользователя(ей) поблагодарили strelok200 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 14.01.2014, 20:28 | Сообщение # 395 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата strelok200 ( ) Не совсем понял к чему этот вопрос Это ключевой вопрос работоспособности вашей функции. Что за параметр npc, который ВЫ используете в ВАШЕЙ функции?
Цитата strelok200 ( ) Можно и без проверки на расстояние, все равно не работает Можно и бес проверки, тем более, что вы не понимаете примененную функцию. distance_to_sqr возвращает КВАДРАТ расстояния!
Цитата strelok200 ( ) не выполняется функция gar_message, прописанная в xr.effects Это от того, что condition-функция всегда дает false.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
strelok200 | Дата: Вт, 14.01.2014, 21:47 | Сообщение # 396 |
Бывалый
Свобода
Сообщений: 126
| Переделал ф-цию, теперь все работает Цитата denis2000 ( ) distance_to_sqr возвращает КВАДРАТ расстояния! Спасибо. А то я думал, что здесь возвращается обычное расстояние
|
|
|
Эти 0 пользователя(ей) поблагодарили strelok200 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 14.01.2014, 22:15 | Сообщение # 397 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| strelok200, Она конечно работает, но это ужас! Я бы писал так: Код function controller(actor, obj, p) local story_id = p[1] if story_id == nil then return false end local npc_id = get_story_object_id(story_id) if npc_id == nil then return false end local object = level.object_by_id(npc_id) if object then return npc_in_actor_frustrum(obj) else return false end end
А вызов так: Код on_info = {=controller(esc_polkovnik)}
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
strelok200 | Дата: Ср, 15.01.2014, 18:00 | Сообщение # 398 |
Бывалый
Свобода
Сообщений: 126
| Цитата denis2000 ( ) но это ужас! Если вызывать не через логику, то ничего ужасного
А если под водку с огурцом, то ваще ништяк denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили strelok200 за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 01.02.2014, 21:02 | Сообщение # 399 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер. В СГМ реализовано выпадение частей тел мутантов при их гибели. В результате много запчастей для монстров валяется на локации. Никто, кроме игрока их не подбирает. Это тормозит игру. Как сделать, чтобы сталкеры подбирали их с земли и забирали их при обыске трупов?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Сб, 01.02.2014, 22:37 | Сообщение # 400 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| sergej5500, если требуется только увеличение производительности, то сделайте уборщик конечностей. Можете взять за основу уборщик оружия, заменив секции:
http://sigerous.ru/forum/17-3149-1122703-16-1368886466
Если вопрос стоит именно в подборе конечностей сталкерами, то потребуется написание схемы поведения. Я бы взял за основу скрипт xr_corpse_detection.script и переписал его под подбор конечностей.
Терпение...... И все получится!
Сообщение отредактировал makdm - Сб, 01.02.2014, 22:37 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
by_gangster | Дата: Вс, 02.02.2014, 23:54 | Сообщение # 401 |
Научный сотрудник Бункера
Ученые сталкеры
Сообщений: 233
| Здравствуйте господа. Мне нужно вызвать вылеты X-Ray с разным текстом... Например с "Out of memory. Memory request: XXX K"
Вроде это можно сделать вписав в script. Но что я не знаю. Прошу помочь.
error_log("LOG"). XOBAH
|
|
|
Эти 0 пользователя(ей) поблагодарили by_gangster за это полезное сообщение: |
|
|
FantomICW | Дата: Пн, 03.02.2014, 00:32 | Сообщение # 402 |
Лидер «Свободы»
Свобода
Сообщений: 4438
| by_gangster, привет. Цитата by_gangster ( ) Вроде это можно сделать вписав в script. Хех, давно таких заказов не было. Как это сделать: 1. Открываешь любой файл игры блокнотом. 2. Начинаешь долбить по клавиатуре. 3. Сохраняешь. 4. Тестируешь. Но зачем, если на АМК есть целый сборник вылетов + оффлайн версия? А еще и сборник Хована. Вылет о нехватки памяти можно вызвать текстурами, ошибками в скриптах Гуи-окон, наваленным апдейтом в bind_stalker.script...Вопрос только, зачем? [off]Нет, правда, зачем? Тут мистики примерно столько, сколько в истории билда 1666 (кстати, погуглите ).[/off]
|
|
|
Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
strelok200 | Дата: Пн, 03.02.2014, 13:33 | Сообщение # 403 |
Бывалый
Свобода
Сообщений: 126
| Цитата FantomICW ( ) Нет, правда, зачем? Тут мистики примерно столько, сколько в истории билда 1666 (кстати, погуглите biggrin ). Помню как мы запугивали на ап-про некоторых товарищей этой историей, а они верили
Цитата F ( ) Здравствуйте господа. Мне нужно вызвать вылеты X-Ray с разным текстом... Например с "Out of memory. Memory request: XXX K"Вроде это можно сделать вписав в script. Но что я не знаю. Прошу помочь. Может вы имеете ввиду, чтобы стандартные вылеты выводились в лог с другим текстом? Если так, то все эти "тексты" заложены в xrGame.dll
Сообщение отредактировал strelok200 - Пн, 03.02.2014, 13:36 |
|
|
Эти 0 пользователя(ей) поблагодарили strelok200 за это полезное сообщение: |
|
|
asd123 | Дата: Ср, 05.02.2014, 00:47 | Сообщение # 404 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Всем доброго времени суток! Вообщем, я тут по поводу диалога "Чем сейчас занимаешься?", или "dm_traveler_dialog"..
Ситуация: Решил я создать сквады военных для СоР и у меня это получилось.. добавил их в спавн-мод, то, сё... но тут у меня возникла такая петрушка... у них из диалогов только: "Расскажи какую-нибуть историю"
Подскажите, что нужно сделать, чтобы военнные (а так же наёмный спецназ, рассвет, наёмники и прочие группировки) имели такие же диалоговые окна как у сталкеров.
за ранее - спасибо.
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Ср, 05.02.2014, 00:55 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
sergej5500 | Дата: Ср, 05.02.2014, 01:18 | Сообщение # 405 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| asd123, Файл scripts\travel_manager.script
Функция uni_traveler_precond. Минифункция типа
if npc:character_community() == "army" then return false end
блокирует у военных возможность водить ГГ по локации.
Наемный спецназ, наемники враждебны ГГ. Рассвет на Армейских складах диалоговые окна имеет. Рассвет на Юпитере состоит из несквадовых НПС. Такие неписи водить ГГ не могут.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|