Новое на сайте:
Новости:
Файлы:
Статьи:
Топ пользователей:
Обновления сайта:
Группа "Гости" не имеет права просмотра модуля
| Форум S.T.A.L.K.E.R. - Моддинг Разбираем S.T.A.L.K.E.R. Разборочная комната ТЧ (Задаем вопросы по скриптам/конфигам и другим файлам игры) |
| Разборочная комната ТЧ |
|
Дата: Вторник, 17.04.2012, 22:43
Сообщение #1
Вы задаёте интересующий вас вопрос и тот, кто может вам на него ответить, пишет свой ответ. Правила темы: 1. Прежде чем задать вопрос, желательно прочитать все предыдущие страницы темы. Даже если вы не найдете там нужного ответа - я уверен, вы узнаете много нового. Второй вариант - воспользоваться поиском по ключевому слову. 2. Вы можете задавать вопросы, только непосредственно касающиеся создания модификаций и редактирования файлов игры 3. Личные вопросы не допускаются 4. Отвечать на вопросы желательно достаточно развернуто, задевая все аспекты касающиеся конкретного вопроса 5. Отвечать вы можете только в том случае если уверены в правильности ответа, если не знаете - просто не отвечайте. Авторы неправильных, вводящих в заблуждение ответов будут наказываться. 6.Соблюдайте грамотность и правильность построения вопросов и ответов, во избежание их удаления. "Спасибо / пожалуйста / не знаю" и прочие односложные и не несущие смысловой нагрузки сообщения, будут удаляться немедленно, а их авторы - наказываться. Основная цель темы - помочь новичкам-модостроителям, второстепенная - свести на нет тенденцию создания новых тем по каждому интересующему новичков вопросу.
|
|
Дата: Четверг, 02.05.2013, 14:06
Сообщение #401
Цитата (volazar) Graff46, Невозможно сделать то, что вы хотите. Движок по дефолту читает текстуры из папки textures. Ни из какой другой он это делать не будет. Только если вы его не перепишите. Ну так я этим и пользуюсь "Движок по дефолту читает текстуры из папки textures" - если есть две папки с текстурами и только одна имеет имя textures - читается движком, а другая папка имеет другое имя, специально что бы не читалась движком. А вот функция которую я ищу, должна вызвать батник который переименует папки, т. е. папку textures в другое имя (что бы не читалась движком), а вторую папку(которая имела имя НЕ textures) переименовывается в textures и с этого момента читается движком... Сообщение отредактировал Graff46 - Четверг, 02.05.2013, 14:07 |
|
Дата: Четверг, 02.05.2013, 14:41
Сообщение #402
Graff46, я говорю про переименование. Для того, чтобы игра могла инициализировать папку - она должна перезагрузиться. Просто так из диалога сразу инициализировать новую папку - нельзя.
Во вторых - нельзя работать с файловой системой из луа сталкера. Это не предусмотрено. А про батник: Код move c:\textures c:\textures_osen' move c:\textures_zima c:\textures Переименовываем стандартную папку в textures_osen', а папку textures_zima переименовываем в просто textures. |
|
Дата: Четверг, 02.05.2013, 16:46
Сообщение #405
Цитата (volazar) Секция on_death в логике. Сама выдача через on_info. Да, я этот вариант рассматривал, конкретно у меня надо выдать инфопоршень о том что убиты 5 НПС, у них у всех в логике одна одинаковая секция на смерть Код on_death = death@killer Код [death@killers] on_info = %+esc_open_lager_fire +esc_open_killer_fire% Сообщение отредактировал Graff46 - Четверг, 02.05.2013, 16:47 |
|
Дата: Четверг, 02.05.2013, 16:50
Сообщение #408
Graff46, Если просто схематично, то действия примерно такие:
Есть несколько НПС(для примера возьмем троих) с какой либо логикой, и еще у них в логике должны быть например такие блоки: у первого НПС Код [logic] on_death = death [death] on_info = %+pomer1% у второго НПС Код [logic] on_death = death [death] on_info = %+pomer2% у третьего НПС Код [logic] on_death = death [death] on_info = %+pomer3% т.е. здесь мы видим, что при смерти первого НПС выдается инфопоршень pomer1, при смерти второго выдается инфопоршень pomer2, при смерти третьего выдается инфопрошень pomer3. Необходимо, чтобы они были зарегестрированы в файле info_локация.xml в таком виде: Код <info_portion id="pomer1"> </info_portion> <info_portion id="pomer2"> </info_portion> <info_portion id="pomer3"> </info_portion> <info_portion id="pomerli_vse"> </info_portion> затем нам надо отследить эти инфопоршни, для этого создаем функцию: Код function kto_u_nas_pomer(task, info) if db.actor and db.actor:has_info("pomer1") and db.actor:has_info("pomer2") and db.actor:has_info("pomer3")then return db.actor:give_info_portion("pomerli_vse") end return false end В принципе подготовительная часть закончена. При смерти этих НПС будут выданы нужные инфопоршни, функция отследит их и выдаст "общий" инфопоршень pomerli_vse на котором уже можно "привязать" завершение задания, появление нужного диалога ну и т.д. |
|
Дата: Четверг, 02.05.2013, 16:57
Сообщение #409
и вот
Код [logic@esc_killer3_raid] active = walker@esc_killer3_raid on_hit = hit@killers on_death = death@killers combat_ignore = combat_ignore и так все киллер 1, киллер2, киллер3 и тд до 5го Добавлено (02.05.2013, 16:52) --------------------------------------------- Цитата (Frankenshtayn) Если просто схематично, то действия примерно такие: Так же в туторах написано, но не хотелось трогать логику нпсов Добавлено (02.05.2013, 16:57) Сообщение отредактировал Graff46 - Четверг, 02.05.2013, 16:57 |
|
Дата: Четверг, 02.05.2013, 17:37
Сообщение #410
Graff46, А задание то выдано? Значит где то нестыковка. Задание обновляет 1 поршень, а при смерти выдается другой. Пропишите свои и проверьте.
Цитата (Graff46) но не хотелось трогать логику нпсов Если нужно, что бы все было хорошо - без логики не обойтись. |
|
Дата: Четверг, 02.05.2013, 19:42
Сообщение #412
Graff46, хорошо, спрошу по другому - проверка поршней прописана? Выложите код квеста. Самое простое - скриптовая ф-ия, которая проверяет наличие у актора этих самых 5 поршней. Затем в квесте проверка такого вида:
Код <function_complete>файл.функция</function_complete> |
|
Дата: Четверг, 02.05.2013, 20:06
Сообщение #413
Всё, я сделал. Пошарил в нэте и нашёл вот что:
Код Проверка смарттераили(лагеря) на количество НПС в нем: function smart_pust() if (xr_gulag.getGulagPopulation("название смарта") <= 0) --знак менше либо равно, вы должны знать со школы что оно такое, знаки бывают <=(менше либо равно), >=(больше либо равно), ==(просто равно) then return true else return false end end Эти пять нпсов были все в одном гулаге esc_killers, и кроме них его не кто занять не мог (проверял). Далее по логике вещей думаю понятно)) Добавлено (02.05.2013, 20:06) Сообщение отредактировал Graff46 - Четверг, 02.05.2013, 20:05 |
|
Дата: Четверг, 02.05.2013, 20:13
Сообщение #414
Цитата (Graff46) on_death = death@killers Праввильно, а далее выдается два инфопоршня: Код [death@killers] on_info = %+esc_open_lager_fire +esc_open_killer_fire% не буду утверждать, (точно не помню этот момент), но могу предположить, что в данном случае проверяется гибель смарта, а не каждого НПС в отдельности. А смысл в общем-то тот же самый. |
|
Дата: Четверг, 02.05.2013, 22:52
Сообщение #415
Какую нужно прописать ф-цию что бы ГГ в самом начале игры стартовал пьяным(как от 2х бутылкок водки)?
Добавлено (02.05.2013, 22:52) --------------------------------------------- И ещё, можно ли заспавнить скриптом оружие уже поломанное(с котороткой полосой состояния)? Сообщение отредактировал Graff46 - Пятница, 03.05.2013, 16:47 |
|
Дата: Суббота, 04.05.2013, 11:35
Сообщение #417
Graff46, Насчет значения db.actor:alcohol не знаю (да и существует ли оно вообще?). Можете попробовать спавнить пару бутылок водки и сразу их выпивать. Съесть что-то можно так:
Код local alc = db.actor:object("vodka") if alc then db.actor:eat(alc) end Насчет сломанного оружия - нужно назначать здоровье предмета через net_packet (если скриптово). Либо ищите секцию в алл спавне и таким макаром спавните то, что нужно. perez, Открываете конфиг нужного оружия и находите там значение slot и ставите цифру 1. ЗЫ: Не забываем, что пистолетный слот не предусмотрен для больших пушек - клеток не хватит и будет все криво. |
|
Дата: Воскресенье, 05.05.2013, 03:33
Сообщение #418
Цитата (volazar) Насчет сломанного оружия - нужно назначать здоровье предмета через net_packet (если скриптово). Как реализовать скриптово? Я спавнил так: Код function habar_fan () alife():create("dolg_outfit",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_rgd5",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_rgd5",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_rgd5",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_f1",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) Код alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) Сообщение отредактировал Graff46 - Воскресенье, 05.05.2013, 03:34 |
|
Дата: Воскресенье, 05.05.2013, 10:54
Сообщение #419
Цитата (Graff46) Как реализовать скриптово? Должен быть установлен АМК мод или библиотека net_packet (на АМК лежит за авторством Artos и Co). Пример скриптового спавна подсказать не смогу, не было причин спавнить порченое оружие Можете заспавить через алл спавн, пример: Код [20073] ; cse_abstract properties section_name = wpn_ognemet name = jup_gun_2 position = -390.73,12.77,-16.55 direction = 0,4.7,0 ; cse_alife_object properties game_vertex_id = 3708 distance = 0 level_vertex_id = 57647 object_flags = 0xffffff07 ; cse_visual properties visual_name = weapons\fn2000\wpn_fn2000_old ; cse_alife_item properties condition = 1 upd:num_items = 0 ; cse_alife_item_weapon properties ammo_current = 90 upd:condition = 255 upd:weapon_flags = 0 upd:ammo_elapsed = 50 upd:addon_flags = 0 upd:ammo_type = 0 upd:weapon_state = 0 upd:weapon_zoom = 0 upd:current_fire_mode = 0 Важная строчка - condition = 1. ЗЫ: Вашу ф-ию можно сократить: Код function habar_fan() local tbl_obj = { "dolg_outfit", "wpn_mp5_m2", "grenade_f1", "ammo_9x19_pbp", "ammo_9x19_pbp", "ammo_9x19_pbp", "ammo_9x19_pbp", "ammo_9x19_pbp", "grenade_rgd5", "grenade_rgd5", "grenade_rgd5" } -- таблица с нужными предметами for _, obj in pairs(tbl_obj) do alife():create(obj,vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) end end |
| |||












