Доброго времени суток! Решил открыть отдельную тему для своих авторских мини-уроков. Заказы принимаются, но я не даю 100% гарантию, что сделаю такой тутор. В случае отказа причину укажу. Записки с различными практичными фишками и способами их реализации. Много того, что когда-то лично мне пригодилось и запомнилось. Все заметки делаются специально для текстовых редакторов с подсветкой синтаксиса! Я использую Notepad++.
Скрипты - разные функции, действия, разборы и т. д. (в формате lua)
Логика - различные действия, сценки, эффекты и т. д. (в формате ini, ранее - properties)
Некоторые заметки будут нести и то, и другое, так как многие конфигурационные, логические и скриптовые темы связаны
- Заметки можно читать - Заметки можно для начала скачать - Можно не читать - Можно тупо копипастить - С пищей не принимать! - Легко читается - Не косноязычно - Предназначено не для самых зеленых новичков - Есть пояснения - Рассмотрены более интересные и практические вопросы реализации различных элементов
FantomICW, день добрый! Не могли бы вы сделать урок "Создание и спавн НПС через скрипты в ЧН" по скольку толкового урока я не нашел. Буду надеяться на ваш опыт.
так как с оригинальной логикой я почти не работал, а пользовался схемой xr_move
ЦитатаColR_iT ()
Такой схемы нет
Это СГМовская схема для НПС. есть еще аналог для мобов.
Добавлено (17.02.2014, 20:06) --------------------------------------------- X_A_M_E_L_E_O_N, понимаешь, тут такое дело...эта тема очень много раз затрагивалась. И не важно, ЧН или ЗП. Конфиг НПС везде примерно один и тот же. Профайл, класс, спавн секция. В ЗП и ЧН НПС лучше спавнить через сквад. Лично я другие способы в своей работе не использую, не считая спавна трупов через скрип с логикой через кастом_дату и всяких actor_visual_stalker для кат-сцен. Сам спавн через скрипт все равно сведется, так или иначе, к alife():create.
Добавлено (17.02.2014, 20:07) --------------------------------------------- Ребята, всем спасибо за поддержку!
Пока что в планах следующее: 1. Создание нового предмета attachable_item (на базе старых, к примеру, новый напиток) для анимпоинта, регистрация в конфигах и скриптах. 2. Регистрация простейших анимаций для ремарка и валкера в скриптах (на примере восстановления билдовских анимок). В дальнейшем, возможно, будет отдельный урок по восстановлению билдовских анимаций на ЗП. 3. Регистрация визуалов НПС для анимаций еды в анимопинтах (легко, микро-тутор). 4. Жду ваших предложений по логическим сценкам. Самому по логике туторы делать интересно. Выбирайте, господа, что в первую очередь, заказывайте...
FantomICW, Привет, раз сам говоришь интересно с логикой возиться, тогда предложение: Напиши урок, как в секцию mob_home добавить к примеру оверрайд npc_friendly.
А чего там добавлять то? Неужели ты так и не научился пользоваться поиском?
Открываете нужную вам схему, в которой нет оверрайдов; речь идёт о: actor_friendly, npc_friendly, friendly и braindead. Первый, делает для моба под текущей схемой актора "другом", т.е. на него НПС нападать не будет, пока протагонист не выстрелит в несчастную зверушку. Второй, делает тоже самое, но для НПС. Третий, тоже самое, но для всех - и ГГ, и НПС. Четвёртый, "отключает мозг" скотине даже если в него стрелять. Открыв управляющий файл нужной вам схемы, в самом низу файла ищите функцию set_scheme. Определите в ней в какую переменную записывается то, что возвращает функция assign_storage_and_bind, обычно это st (это важно!). И чуть-чуть пониже, в этой же функции вписываете вот такую строку:
Здесь обратите внимание, что стоит обращение к переменной (в сущности своей таблица) st, вам нужно писать ту переменную, в которую возвращается значение из функции в самой первой стоке функции set_scheme. Затем в самое начало (!) метода update, вписываете вот такую проверку:
Код
if mob_alife_mgr.alife_control(self.object, db.actor, self.st.alife_mode) then return end
Всё!
Сообщение отредактировал ColR_iT - Вторник, 18.02.2014, 12:48
SG, вот тебе вся папка с папками с вставками, наработками, уроками и прочим) http://yadi.sk/d/dXnOySYAMNQPt На самом деле, наработок и прочего материалы у меня еще куча гигов на компе) Текстуры есть у vamprinik'а, а все остальное солью, когда буду уходить из моддинга
Сообщение отредактировал FantomICW - Воскресенье, 13.04.2014, 21:09
FantomICW, Прикольно, но партыклы, звук и т.д. будут наследоваться от выбранной секции. Для этого удобней отыграть партикл от объекта, в xr_effects.script добавив ф-ию:
function play_particle_pos(actor, npc, p) local name = p[1] local nps = level_object_by_sid(p[2]) if name == nil or nps == nil then return end pos = nps:position() local particle = particles_object(name) particle:play_at_pos(pos) end
, звук (=play_snd_from_obj(sound:sid), см. xr_effects.script нанести ему хит (=hit_npc или =hit_obj) см. xr_effects.script и если он может разбиться этого будет достаточно. В противном случае просто его удалить.
Логика: %=play_particle_pos(particle:sid) =play_snd_from_obj(sound:sid) =hit_npc(см. xr_effects.script) или =hit_obj(см. xr_effects.script)%
П.С. В xr_effects.script нет удаления, но надеюсь написать ф-ию, сможет каждый. По крайней мере, это просто поможет понять "верхушку" этого скрипта, принцип его работы, и заодно вызова из логики.
ins33, да, такое тоже можно, вполне. Я лично такой примерно схемой пользуюсь для скриптовых сценок, где кого-то разрывает аномалия и т. д. (пройдите квестик Звездочета в СВ2 ).
Добавлено (13.04.2014, 22:02) --------------------------------------------- Кстати, залил записки в английской вариации (для публики на moddb) на MediaFire. Там их можно в онлайне читать. Причем, с подсветкой синтаксиса для ini. Гляньте: http://www.mediafire.com/view....OC).ini Ну что, онлайн версии на MediaFire, может, заливать?
Сообщение отредактировал FantomICW - Воскресенье, 13.04.2014, 22:13
На данный момент оверрайды подключены только в mob_walker и mob_kicker. А в некоторых моментах необходимо подключить игнор боя и в других схемах. И вот, как это сделать:
В функцию mob_*:reset_scheme() Добавляем xr_logic.mob_capture(self.object, not self.st.no_reset) В функцию mob_*:update(delta) Добавляем if mob_alife_mgr.alife_control(self.object, actor, self.st.alife_mode) then return end
-- Монстр после выхода из alife может уже быть не под скриптом, поэтому взять опять под скрипт if not xr_logic.mob_captured(self.object) then self:reset_scheme () return false end
В функцию set_scheme(npc, ini, scheme, section, gulag_name) local storage = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
Здесь обратите внимание, что стоит обращение к переменной (в сущности своей таблица) st, вам нужно писать ту переменную, в которую возвращается значение из функции в самой первой стоке функции set_scheme.
Проверял в ТЧ, на mob_home.script и mob_camp.script Спасибо за помощь BozKurt, и Arist
Сообщение отредактировал ins33 - Четверг, 17.04.2014, 15:29