Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Редактирование и создание скриптов
denis2000Дата: Пн, 10.10.2011, 21:17 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Редактирование и создание скриптов

Редактирование и создание скриптов на языке LUA

Если у вас появились вопросы по применению скриптов в игре. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[ Если у вас не открывается файл CHM(Этот текст скрыт от гостей) ]


[ Где найти лог игры после вылета ]
[ Получение более подробной информации о вылете (ХОВАН) ]



Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Вс, 02.03.2014, 13:44 | Сообщение # 436
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата NIV ()
Как использовать выражение return, чтобы функция возвращала 2 (или n) значений?

Так: return 1,2, где 1 и 2 независимые передаваемые значения функции
Или так: return table, где table - таблица из n элементов.
Цитата NIV ()
Вопрос - можно ли поменять описание для hint, аналогично, как это делали командой InitTexture для текстуры?

Можно прописать hint текстуре - это конечно хорошо, но функции меняющей hint у выведенной текстуры вроде нет. Мне по крайней мере такая функция не известна (см. lua_help.script)
Цитата NIV ()
Какова должна быть последовательность действий? Может есть пример в каком-то моде?

Знал-бы сказал. Вернее так последовательность конечно хорошо известна, а вот ее реализация средствами LUA игры - нет.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Пн, 03.03.2014, 08:47 | Сообщение # 437
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Цитата denis2000 ()
Знал-бы сказал

ОК :). Я обратил внимание, что в ТЧ не было всплывающих окон, а инфа выводилась по клике на объекте. Можно попробовать сделать так (т.е. через кнопку?). А для всплывющих окон, наверное, нужно отслеживать положение курсора. Похоже, проблема в этом?


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
denis2000Дата: Пн, 03.03.2014, 16:10 | Сообщение # 438
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, Можно отрабатывать шелчек левой/правой кнопки мыши (WINDOW_LBUTTON_UP или WINDOW_RBUTTON_UP), можно перемещение курсора над формой (по идее это WINDOW_MOUSE_MOVE), можно проверить другие события класса ui_events. Если использовать класс листбокс, то есть события клик и выделение объекта в списке (LIST_ITEM_CLICKED LIST_ITEM_SELECT).

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
strelok200Дата: Ср, 05.03.2014, 18:52 | Сообщение # 439
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

У меня такой вопрос - каким образом можно проапгрейдить все, например, пистолеты ПМ, что есть в игре. А проще говоря, чтобы у всех стволов увеличился определенный параметр, допустим настильность

Добавлено (05.03.2014, 13:27)
---------------------------------------------
Или такое вообще невозможно?

Бинго! denis2000
Есть конечно вариант пройтись по всем объектам игры удалить все ПМ, и в том-же месте заспавнить другой ПМ с измененным параметром, но опять таки ценой потери апгрейдов на этих стволах. denis2000

Добавлено (05.03.2014, 18:52)
---------------------------------------------
Нет, это не вариант, по крайней мере для меня. Вопрос закрыт

 
makdmДата: Пн, 10.03.2014, 09:40 | Сообщение # 440
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата strelok200 ()
по крайней мере для меня. Вопрос закрыт

strelok200, я тут на праздниках ( было время ) посмотрел вашу идею.
Сделать то, что вы хотите можно, но есть несколько нюансов.

После того, как скриптом проапгрейдить оружие, то для того чтобы изменения вступили в силу необходимо перевести оружие в оффлайн, а затем снова а онлайн. Для оружия, находящегося на не активных локациях всё гуууд. А вот на активной сложнее.
Если оружие бесхозное, то проблем нет ( оно переводится в офлайн-онлайн одной движковой функцией ), а вот если оружие имеет "хозяина" ( лежит в трупе, в инвентарном ящике, находится у НПС в рюкзаке ), то необходимо в оффлайн - онлайн переводить владельца оружия. Если с инвентарным ящиком всё просто ( он имеет прозрачную текстуру ), то с НПС выглядит некрасиво, если они находятся в радиусе видимости ГГ.
Поэтому лучше использовать скрипт при переходе ГГ с локации на локацию( выполнить функцию до перемещения ГГ в левел ченджер ).

Вызов скрипта из логики, например на все винторезы в игре установить настильность в 20 %

%=upgrade_weapon(wpn_vintorez:up_firstd_vintorez)%

Сам скрипт в xr_effects.script

Первый вариант: бесхозное оружие и ящики

[ Первый вариант(Этот текст скрыт от гостей) ]


Второй вариант: бесхозное оружие, ящики и сквады.

[ Второй вариант(Этот текст скрыт от гостей) ]


Терпение......
И все получится!
 
denis2000Дата: Пн, 10.03.2014, 14:39 | Сообщение # 441
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

makdm, Как быть с оружием в руках ГГ? Вываливать под ноги, переводить в офлайн, затем в онлайн и подбирать?

PS: Ведь насколько я понял речь идет о реализации некоего скилла, повышающего навык владения оружием ГГ. То есть если скилл получен все оружие попадающее в руки ГГ (или находящееся в руках) должно увеличит свой параметр например настильность. Установить параметр у оружия можно двумя способами - апгрейд оружия (скриптово или у механника) или переспавн оружия с другим значением настильности. Апгрейд хорошо, но не красиво поскольку он будет виден и это будет странно, все оружие (а точнее попадающее в руки ГГ будет иметь апгрейд и это странно). Переспавн - лучше, но нужно перенести апгрейды и аддоны. Отсюда вопрос озвученный выше - как это реализовать корректно и не привлекая внимания игрока.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
makdmДата: Пн, 10.03.2014, 15:20 | Сообщение # 442
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

denis2000, именно так и можно сделать. Другого я тоже ничего не придумал, поэтому в функции это и не прописывал.
И поэтому пишу, что лучше это делать при переходе с локации на локацию. Тогда изменённые параметры оружия у ГГ автоматом будут загружены в нет пакет при новом спавне ГГ на другой локации.


Терпение......
И все получится!
 
denis2000Дата: Пн, 10.03.2014, 15:26 | Сообщение # 443
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

makdm, Но игрок может еще долго бегать по текущей локации, не имея заявленного преимущества и получит его только при переходе с локации на локацию.

К стати я пробовал делать апгрейд ствола из инвентаря ГГ предварительно выкинув его под ноги - апгрейд не установился и офлайн-онлайн не помогал. У тебя есть конкретный код для этого?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
makdmДата: Пн, 10.03.2014, 15:38 | Сообщение # 444
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата denis2000 ()
Переспавн - лучше, но нужно перенести апгрейды и аддоны

Как раз перенести апгрейды и аддоны не сложно. Алгоритм примерно такой.
Прочитать установленные апгрейды из нет пакета оружия в таблицу.
Проспавнить новое оружие под ногами ГГ со скиллом. Записать новому оружию в нет пакет считанные ранее апгрейды. Перевести в оффлай, а затем в онлайн. Установить аддоны с помощью clon_addons. Удалить старое оружие. Поднять и вставить в слот новое оружие.
Единственный минус, что нужно создать кучу секций оружия с предустановленными скиллами.

Добавлено (10.03.2014, 15:38)
---------------------------------------------

Цитата denis2000 ()
У тебя есть конкретный код для этого?

Сейчас нарисую.


Терпение......
И все получится!
 
denis2000Дата: Пн, 10.03.2014, 15:46 | Сообщение # 445
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата makdm ()
Алгоритм примерно такой.

Алгоритм то известен, а вот какой конкретно для этого код нужен нет. И проблема в том, что это все таки заметно для игрока будет, нужно делать затемнение - например, а следовательно делать это в катсцене или во время сна или во время перехода на локацию.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
makdmДата: Пн, 10.03.2014, 17:06 | Сообщение # 446
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

denis2000, вот скрипт апгрейда оружия у ГГ скриптом.

[ Читать далее(Этот текст скрыт от гостей) ]


Осталось только поднять оружие в рюкзак.


Терпение......
И все получится!


Сообщение отредактировал makdm - Пн, 10.03.2014, 18:50
 
NIVДата: Вт, 11.03.2014, 22:45 | Сообщение # 447
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

makdm, I'm sorry,
Цитата makdm ()
Осталось только поднять оружие в рюкзак.
а как это делается? Просто интересно.


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
denis2000Дата: Вт, 11.03.2014, 23:08 | Сообщение # 448
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV,
Код
db.actor:transfer_item(obj,db.actor)


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Пн, 17.03.2014, 14:55 | Сообщение # 449
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый день. Переделал квест Ноя из СГМ (Защита Баржи) под логику рестриктора.
Имею такой результат.

[ Результат ]
 
makdmДата: Пн, 17.03.2014, 19:47 | Сообщение # 450
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата sergej5500 ()
При убийстве определенного числа зверей спавнится следующая группа и происходит удаление трупов.


sergej5500, квест "волна мутантов" в SGM устроен немного по другому.
1. Первая волна - 5 групп мутантов.
2. Вторая волна - 6 групп мутантов
3. Третья волна - 7 групп мутантов.

Спавн групп мутантов происходит через каждые 20 секунд независимо от гибели мутантов в группах.
Поэтому отслеживается только один параметр - количество отстрелянных мутантов ( а вы отслеживаете гибель групп ). При достижении определённого количества волна прерывается, трупы зачищаются и выдаётся квест на убийство контролёра.
Поэтому логика вашего рестриктора написана уже с ошибками, так как не повторяет оригинальный квест, как он был задуман автором.
Перепишите правильно логику рестриктора и вопрос должен отпасть сам собой.


Терпение......
И все получится!
 
Поиск: