Malandrinus 615 Опубликовано 28 Июня 2012 Поделиться Опубликовано 28 Июня 2012 Clayman, Еще вопрос - а двери-слайдеры в движке подрезаны? Никто не смог их восстановить? Не уверен, как насчёт того, были ли такие двери раньше в билдах и как они были там реализованы, но сейчас двери можно сказать не движковые, а скриптовые. Собственно дверь в игре - это физический объект общего вида с шарниром вращения. При нажатии на дверь скриптовая схема прилагает вращающий момент к нужной кости, что приводит к открытию/закрытию. Таким образом, никто не мешает сделать и сдвигающуюся дверь. Только вместо шарнира вращения нужно сделать сочленение с линейным перемещением и изменить схему с применения вращающего момента на силу. Ещё раз, движковые возможности это вполне позволяют, просто никто до сих пор этим не озаботился. lychagin0, Причём здесь "транспорт мод" и тем более какое отношение имеет БТР и его "шустрость" к вопросу о дверях? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
lychagin0 0 Опубликовано 28 Июня 2012 Поделиться Опубликовано 28 Июня 2012 Clayman, lychagin0, Причём здесь "транспорт мод" и тем более какое отношение имеет БТР и его "шустрость" к вопросу о дверях? Приношу свои извинения, вел диалог о БТР, и невнимательно прочитал вопрос. Подумал что речь идёт о юзании дверей и возможности езды на транспорте в ЗП. Ещё раз сори. Ссылка на комментарий
Tris 9 Опубликовано 28 Июня 2012 Поделиться Опубликовано 28 Июня 2012 Clayman, Еще вопрос - а двери-слайдеры в движке подрезаны? Никто не смог их восстановить? Сделать\портировать модель и настроить в SDK, и всё будет как в ТЧ. Вопрос: Что нужно прописать в логике, чтобы заспавненный мною сталкер стал лидером отряда? З.Ы извеняюсь если не туда написал. • Dead Forgetting Zone • Мои работы. Обновление: 24.08.2012 Ссылка на комментарий
Malandrinus 615 Опубликовано 28 Июня 2012 Поделиться Опубликовано 28 Июня 2012 lychagin0, Подумал что речь идёт о юзании дверей и возможности езды на транспорте в ЗП. Что касается машин, то двери там можно сделать таким же образом. Машина - это в целом физический объект, правда уже не общего вида, а специальный. Двери можно сделать по тому-же принципу: разблокировать шарниры, добавить схему управления открытием/закрытием. Только пользы с этого мало, поскольку уж анимации влезания/вылезания вырезаны начисто, и тяжело привязать эту манипуляцию дверями к моменту посадки/вылезания. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Clayman 104 Опубликовано 29 Июня 2012 Поделиться Опубликовано 29 Июня 2012 Да и не стоит эта возня, того, что мне нужно было. Хотел сделать контролируемый вход на базе бандитов на свалке от ЧН, поступил проще - зафиксировал кости ворот в ангаре, поставил между ними обычную стальную дверь и подправил аи-сетку. На все про все - 10 минут. Ссылка на комментарий
karonbaron 2 Опубликовано 30 Июня 2012 Поделиться Опубликовано 30 Июня 2012 (изменено) Ребята, подскажите, как сделать ремкомплект для ЗП? Нашел в инете Создание ремонт комплекта Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет. 1. Для начала нам нужно создать сам ремонт комплект, то есть предмет, а уже потом вешать на него функцию при использование. Для этого в config\misc\items.ltx в конец добавляем конфиг нашего предмета: [repair_kit_outfit]:identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "food and drugs\repair kit outfit" $prefetch = 32 class = II_ANTIR ;класс не трогаем! cform = skeleton visual = equipments\item_merger.ogf ;модель description = enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml inv_name = repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml inv_name_short = repair_kit_outfit_name ;тоже самое, что и inv_name inv_weight = 6.0 ;вес inv_grid_width = 2 ;ширина иконки inv_grid_height = 1 ;высота иконки inv_grid_x = 8 ;координата x иконки inv_grid_y = 18 ;координата y иконки cost = 10000 ;цена ;всё ниже написанное не трогаем, оно нам и не нужно eat_health = 0 eat_satiety = 0 eat_power = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = 1 animation_slot = 4 hud = wpn_vodka_hud 2. Теперь добавим название и описание. Для этого в файле config\text\rus\string_table_enc_equipment.xml в конец между </string> и </string_table> добавляем строки по аналогии с уже написсанными: <string id="repair_kit_outfit_name"> <text>Ремонт комплект ДПК</text> </string> <string id="enc_equipment_repair_kit_outfit"> <text>Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.</text> </string> Отлично, с предметом закончили. Теперь приступим к самому главному - скриптам. Работа со скриптами 1.Вешаем функцию починки при использовании нашего ремонт комплекта. Для этого в файле scripts\bind_stalker.script находим функцию: function actor_binder:reinit() и после строки self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: self.object:set_callback(callback.use_object, self.repair_outfit_start, self) Теперь в папке scripts создаёте свой скриптовой фаил ваше_название_скрипта.script. Но! Название должно быть написано на английском языке и вместо пробелов должен стоять знак "_". Опять открываем bind_stalker.script и в самый конец добавляем эту функцию: function actor_binder:repair_outfit_start(obj, who) if obj then if obj:section() == "repair_kit_outfit" then --здесь указываем предмет, при использование которого будет срабатывать функция ниже ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции end end end 2. Добавляем саму функцию ремонта. Для этого в файле ваше_название_скрипта.script пишем: -- Ремонт комплект для костюмов function repair_outfit() local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6) if item_s6 ~= nil and item_s6:condition() >=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%) item_s6:set_condition(1) local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) elseif item_s6 == nil then --когда костюма нет local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s6:condition() <0.30 then --когда костюм нельзя чинить (состояние меньше 30%) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) elseif item_s6:condition() ==1 then --когда костюм в отличном состояние local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end end Всё! Теперь заходим в игру и наслаждаемся. Небольшая заметка 1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов). Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2. 2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное. Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно. Автор статьи: Бага. Но у меня ГГ съедает ремкомплект. Понимаю, что это для "Теней...", но все таки, как подправить скрипты, чтобы работало для ЗП? Изменено 30 Июня 2012 пользователем karonbaron Ссылка на комментарий
Shredder 49 Опубликовано 30 Июня 2012 Поделиться Опубликовано 30 Июня 2012 karonbaron, если он не будет его съедать - то это получится какой-то читерский ремкомплект. Предполагается, что этот ремкомплект содержит расходный материал (типа бронепластины и т.д.) и естественно, что после ремонта он должен исчезать. Ну если тебе нужен такой, то переделай вот так: -- Ремонт комплект для костюмов function repair_outfit() alife():create("repair_kit_outfit", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6) if item_s6 ~= nil and item_s6:condition() >=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%) item_s6:set_condition(1) local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) elseif item_s6 == nil then --когда костюма нет local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) elseif item_s6:condition() <0.30 then --когда костюм нельзя чинить (состояние меньше 30%) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) elseif item_s6:condition() ==1 then --когда костюм в отличном состояние local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) end end И будет тебе счастье Ссылка на комментарий
karonbaron 2 Опубликовано 30 Июня 2012 Поделиться Опубликовано 30 Июня 2012 Все равно не работает. Он его просто съедает, и все. Никакого сообщения, даже если броник поврежден. Правда, я функцию actor_binder:repair_outfit_start немного переделал: function actor_binder:repair_outfit_start(obj) if (obj) then local s_obj = alife():object(obj:id()) if(s_obj) and (s_obj:section()=="repair_kit_outfit") then rkomplekt.repair_outfit() end end end Толку нет. Скрипт не срабатывает... Поделитесь, пожалуйста, кто-нибудь рабочими кодами... Ссылка на комментарий
Shredder 49 Опубликовано 30 Июня 2012 Поделиться Опубликовано 30 Июня 2012 karonbaron, я вспомнил, в ЗП броник в 7-ом слоте . Попробуй так: -- Ремонт комплект для костюмов function repair_outfit() alife():create("repair_kit_outfit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) local current_outfit = db.actor:item_in_slot(7) --объявляем переменную (current_outfit) if current_outfit ~= nil and current_outfit:condition() >=0.30 and current_outfit:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%) current_outfit:set_condition(1) local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) elseif current_outfit == nil then --когда костюма нет local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) elseif current_outfit:condition() <0.30 then --когда костюм нельзя чинить (состояние меньше 30%) local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) elseif current_outfit:condition() ==1 then --когда костюм в отличном состояние local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние." db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000) end end И нафига ты функцию actor_binder:repair_outfit_start немного переделал? Не вижу никакой логики, оставь как было. Ссылка на комментарий
karonbaron 2 Опубликовано 1 Июля 2012 Поделиться Опубликовано 1 Июля 2012 И так не срабатывает тоже. И если функцию поменять, не реагирует. Я кучу вариантов испробовал уже, без толку... Ну ладно, ремкоплект рабочий я выдернул из мизери мода. У меня такой, более сложный вопрос. Как восстановить выпадение частей монстров в ЗП? А то какой смысл их убивать, только патроны тратить... Ссылка на комментарий
Shredder 49 Опубликовано 1 Июля 2012 Поделиться Опубликовано 1 Июля 2012 Хоть уже и не важно, но подозреваю, что ты кое что пропустил: 1.Вешаем функцию починки при использовании нашего ремонт комплекта. Для этого в файле scripts\bind_stalker.script находим функцию: function actor_binder:reinit() и после строки self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: self.object:set_callback(callback.use_object, self.repair_outfit_start, self) Ссылка на комментарий
karonbaron 2 Опубликовано 5 Июля 2012 Поделиться Опубликовано 5 Июля 2012 Хоть уже и не важно, но подозреваю, что ты кое что пропустил: 1.Вешаем функцию починки при использовании нашего ремонт комплекта. Для этого в файле scripts\bind_stalker.script находим функцию: function actor_binder:reinit() и после строки self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: self.object:set_callback(callback.use_object, self.repair_outfit_start, self) Я первоначально все коды из той (см. выше мои посты) статьи вставлял в игру вообще без изменений. Не работало. Ну, ладно. Так что там с частями монстров? Выпадение их как в SGM моде не предлагать, меня это не устраивает. Видел в ARS-моде мутантера, когда можно через спецменю отрезать части тела, вот его бы в чистом виде. Может, есть у кого? Ссылка на комментарий
Clayman 104 Опубликовано 5 Июля 2012 Поделиться Опубликовано 5 Июля 2012 А мод Мясник не устраивает? Там как раз отрезаешь части мутантов, отличная штука! Я себе прикрутил в обязательном порядке... Ссылка на комментарий
Callisto 2 Опубликовано 8 Июля 2012 Поделиться Опубликовано 8 Июля 2012 Доброго времени суток. Есть такой вопрос: как единожды вызвать функцию при старте игры (напр. спавн)? Личные изыскания, к сожалению, результатов не дали. Ссылка на комментарий
ColR_iT 171 Опубликовано 8 Июля 2012 Поделиться Опубликовано 8 Июля 2012 Callisto, при начале новой игры, под ГГ находится рестриктор, его логика вынесена в отдельный файл, где-то в папке configs\scripts, этот рестриктор выдаёт основное сюжетное задание: "Узнать о причинах падения вертолётов". Как вариант, можешь сделать вызов функции через него. Ссылка на комментарий
Callisto 2 Опубликовано 8 Июля 2012 Поделиться Опубликовано 8 Июля 2012 ColR_iT, Думала об этом способе, и даже логику этого рестриктора нашла, но вот как в него добавить вызов функции не могу понять, как-то медленно идет изучение. Ссылка на комментарий
Painter 3 407 Опубликовано 9 Июля 2012 Поделиться Опубликовано 9 Июля 2012 (изменено) Callisto, 1. Открываем файл: scripts\xr_effects 2. Добавляем туда свою функцию: function test_func() ... end 3. Открываем файл логики рестриктора: configs\scripts\zaton\zat_b101_logic 4. Находим строчку: [sr_idle] on_info = {!black_screen -zat_b101_give_task +zat_a1_game_start} sr_idle@save %=give_task(zat_b101_heli_5_crash) +zat_b101_give_task =give_task(jup_b8_heli_4_crash) +jup_b8_give_task =give_task(zat_b28_heli_3_crash) =give_task(zat_b100_heli_2_crash) =give_task(jup_b9_heli_1_crash) +jup_b9_give_task =set_active_task(zat_b28_heli_3_crash)% 5. Заменяем на эту: [sr_idle] on_info = {!black_screen -zat_b101_give_task +zat_a1_game_start} sr_idle@save %=give_task(zat_b101_heli_5_crash) +zat_b101_give_task =give_task(jup_b8_heli_4_crash) +jup_b8_give_task =give_task(zat_b28_heli_3_crash) =give_task(zat_b100_heli_2_crash) =give_task(jup_b9_heli_1_crash) +jup_b9_give_task =set_active_task(zat_b28_heli_3_crash) =test_func% 6. Готово. Изменено 9 Июля 2012 пользователем Jurok Портфолио Ссылка на комментарий
Clayman 104 Опубликовано 9 Июля 2012 Поделиться Опубликовано 9 Июля 2012 Один раз случайно поймал вот такой случай - консоль забивается вот таким ворнингом: RENDER [Warning]: Too many occlusion queries were issued(>1536)!!! Причем так и не понял из-за чего это... потом все обегал раз 15, вроде не появляется... никто про эти буквы ничего не знает? Ссылка на комментарий
Akella-96 aka SvD 35 Опубликовано 10 Июля 2012 Поделиться Опубликовано 10 Июля 2012 Callisto, ещё вариант. Через скрипт. Создаем скрипт my_script.script и в него пишем function main() if db.actor:dont_has_info("new_game_start") then spawn_monster() db.actor:give_info_portion("new_game_start") end end ------------------------------------------------------------ function spawn_monster() alife():create("chimera_normal",vector():set(116.86434936523,-3.9353849887848,176.99018859863),1167207,138) end Вызывать так: В bind_stalker.script, после benchmark.main() --' Distemper 06.2008 -- Пишем : my_script.main() AWRP : Re - Load 0.2 © Ссылка на комментарий
Shredder 49 Опубликовано 10 Июля 2012 Поделиться Опубликовано 10 Июля 2012 Akella-96 aka SvD, для кого-то это совсем не вариант. Из-за одного вызова функции выполнять проверку if db.actor:dont_has_info("new_game_start") then всю игру - жесть как не рационально. В файле xr_effects.script находим функцию damage_actor_items_on_start() и в конце дописываем вызов нашей функции. Да и вообще из неё можно всё вырезать, чтобы ГГ начинал игру во всём новом Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти