Модостроение. Редактирование и создание скриптов
|
|
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 за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 17.03.2014, 20:08 | Сообщение # 451 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| makdm, Понятие группа в данном случае условное. Монстры спавнятся функциями zat_monster_w1_2_spawned по 10-11 штук. Отслеживается только кол-во убитых мутантов. Параметр zat_monster_w1_deaths при убийстве мутанта увеличивается на 1. По мере увеличения числа убитых зверей спавнятся следующие. Можно было сделать так, как задумал автор. Спавнить зверей через таймер. Но если игрок не успеет выбить группу за 20 секунд, то отреспится следующая и т.д. Многочисленные монстры тормозят систему. Данная схема ограничивает кол-во зверей в районе баржи. Прочее аналогично авторскому замыслу. При определенном числе убитых зверей происходит автосейв и спавнятся контролер. Поэтому я отслеживаю число убитых монстров в ходе выполнения квеста.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Пн, 17.03.2014, 20:35 | Сообщение # 452 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| sergej5500, тогда как-то так
function zat_monster_w1_1_killed(actor, npc, p) if p and p [ 1 ] then local count = tonumber( p[ 1 ] ) if sgm_functions.read_variable("zat_monster_w1_deaths")~=nil and sgm_functions.read_variable("zat_monster_w1_deaths")>=count then return true end return false end end
Вызов функции
{=zat_monster_w1_1_killed(9)} или {=zat_monster_w1_1_killed(18)}
Терпение...... И все получится!
Сообщение отредактировал makdm - Пн, 17.03.2014, 20:40 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
strelok200 | Дата: Вт, 18.03.2014, 19:25 | Сообщение # 453 |
Бывалый
Свобода
Сообщений: 126
| Почему нельзя заспавнить мину через скрипт, как аномалию? Или там другая структура нет-пакета?
|
|
|
Эти 0 пользователя(ей) поблагодарили strelok200 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 18.03.2014, 20:35 | Сообщение # 454 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| strelok200, А кто сказал, что нельзя? Именно так они и спавняться.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
strelok200 | Дата: Ср, 19.03.2014, 10:28 | Сообщение # 455 |
Бывалый
Свобода
Сообщений: 126
| Цитата denis2000 ( ) strelok200, А кто сказал, что нельзя? Именно так они и спавняться. Нет, при попытке заспавнить аномалию класса Z_MBALD происходит вылет [cut noguest=лог][error]Expression : assertion failed [error]Function : CCustomZone::CalcDistanceTo [error]File : D:\prog_repository\sources\trunk\xrGame\CustomZone.cpp [error]Line : 1469 [error]Description : nearest_s[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили strelok200 за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 19.03.2014, 15:25 | Сообщение # 456 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата strelok200 ( ) при попытке заспавнить аномалию класса Z_MBALD происходит вылет ЧТО!? Вы же просили мину! Спавн работает без вопросов: Код alife():create("zat_mine_trap",vector():set(-126.5,-25.9,-463.8),129275,1936)
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
strelok200 | Дата: Ср, 19.03.2014, 19:09 | Сообщение # 457 |
Бывалый
Свобода
Сообщений: 126
| Цитата denis2000 ( ) ЧТО!? Вы же просили мину! Спавн работает без вопросов: Ну так мины и относятся к этому классу (zone_mine_field)
|
|
|
Эти 0 пользователя(ей) поблагодарили strelok200 за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 19.03.2014, 20:02 | Сообщение # 458 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата strelok200 ( ) Ну так мины и относятся к этому классу (zone_mine_field)
Не смущает, что это класс аномальной зоны гравитационного типа, а мина это объект класса физический-разрушаемый?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Ср, 19.03.2014, 21:56 | Сообщение # 459 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Добрый вечер всем!!Насчет аномалий, очень удобно проделано на движке тч, ставишь аномалию, затем шейп, атач, и без всяких сюрпризов, и скриптов аномалия готова!!Почему бы разработчикам не сделать на все версии, ну да ладно я не об этом, вопрос однозначно редкостный, но как мы все помним агропром начало его, когда гг бежит на помощь Кроту, в один момент поднимается камера и несет нас на обзор всех солдатиков, и смотр обьекта, у меня вопрос, есть ли там логика? Или все очень просто бежишь, тыкаешь невидимую камеру она нам показывает все с верху???Навряд-ли, и если и есть логика на камеру , то где бы мне ее найти ??Помогите пожалуста разобраться в этом вопросе, решил сделать видеоанимацию A в sdk рестиктор создать то можно??Дело в том что через all.spavnне работаю да и не умею!!
Сообщение отредактировал alex_xp_77 - Чт, 20.03.2014, 14:25 |
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 19.03.2014, 23:02 | Сообщение # 460 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, В all.spawn рестриктор по имени agr_space_restrictor_0001
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
FantomICW | Дата: Чт, 20.03.2014, 00:49 | Сообщение # 461 |
Лидер «Свободы»
Свобода
Сообщений: 4438
| Доброй ночи! Хотел бы узнать, можно ли скриптом закрыть окно обыска трупа? Пока что на ум приходят две идеи: 1. Через actor_menu.script. Но вот не помню, работу функций скрипта...Ими только проверку и отслеживание делать можно или также осуществлять сам контроль над окнами? 2. Через действие: Код get_hud():HideActorMenu() Но это еще более сомнительно. Не уверен, что считается самим меню актера...
|
|
|
Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 20.03.2014, 11:06 | Сообщение # 462 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| FantomICW, 1. actor_menu.script не осуществляет управление окнами, а только отслеживает их состояние (используй его для отслеживания открытия окна обыска) 2. get_hud():HideActorMenu() - самое то, более того я в той-же ситуации его бес проблем использовал (закрытие окна обыска скриптом) - скрывает все видимые окна на ХУД-е (диалог, торговля, обыск, апгрейд и т.д.), кроме специфического интерфейса ПДА: get_hud():HidePdaMenu()
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Чт, 20.03.2014, 14:52 | Сообщение # 463 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Добрый День Люди добрые!!У меня просьба, обьясните как в Тени Чернобыля прописать выброс, не знаю где даже и искать, помогите разобраться !!И еще очень заманчиво было бы создать в шопе карту действия радиационного поля от выброса, некая шкала, которая будет показывать силу выброса по той, или иной локации, новинки даются оч тяжело, надеюсь более грамотные коллеги отзовутся, и прояснят тему???
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 20.03.2014, 17:20 | Сообщение # 464 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата alex_xp_77 ( ) У меня просьба, обьясните как в Тени Чернобыля прописать выброс, не знаю где даже и искать Скриптами нужно прописать. А лучше всего взять классический от АМК или изначально делать АМК-base.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Чт, 20.03.2014, 18:17 | Сообщение # 465 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Я не скриптер Денис, не сочтите за наглость, подскажите где мне искать скрипты на выброс, мне сложно соорентироватся в том чего не понимаю, но то что необходимо сделать, у меня старых карт не будет, будут все новые!!Темный лес
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
|