Перейти к содержанию

Hardtmuth

Модераторы
  • Публикаций

    4 132
  • Зарегистрирован

  • Посещение

  • Победитель дней

    107

Весь контент Hardtmuth

  1. Название: Поиски Чернобыльского Шахматиста или Тайна биоробота Фрица Платформа: Народная Солянка+DMX 1.3.5.ООП.МА.К Разработчики: Zizon975, azrael1325, frankenshtayn, Fagot Дата выхода: 01.06.2013
  2. Как самому сделать флешку для плеера
  3. Название: Аддон "Белая Мгла Разработчик: _K_L_I_N_, Максим Ратниченко, Sho0oT
  4. Разработчик: Johny_Lucker Две недели ушло у меня на работу, перебирая всё что по нраву мне. Принимать работу или нет дело ваше. Сразу говорю мод - чисто графический. Что использовано: Зелёнка для травы Шейдеры Зова припяти Худ ЗП Апокалипсис 3 и другое....не упомнить Ссылки на загрузку: Скриншоты:
  5. Готовые и настроеные шейдеры для Народной Солянки Идут на все версии Солянок и на любой мод! Sky4CE -=SkyGRAPHICS=- MOD v2.0 RC4.1 были изменены и настроены. Теперь нету сильных галюнов при падении фпс и нету ряби освещение при просмотре панорамы из бинокля или прицела винтовки. Графика смотрится замечательно!
  6. Адаптация Народной солянки DMX 1.3.5 ООП.К.МА под Panoramic
  7. Название: Пропавшая экспедиция \ The Lost Expedition Платформа: Тень Чернобыля | Патч: 1.0004 Разработчик: XT-Team Дата выхода: 12.01.2017 На Верхних Болотах обитает Болотный доктор и неожиданно ученым от него что-то потребовалось, но через некоторое время они пропадают. После чего, профессор Сахаров поручает бывалому одиночке по кличке Арчи контракт на поиск ученых в районе Болот.
  8. Название: Народная Солянка 2016 Платформа: Тень Чернобыля | Патч: 1.0004 или 1.0006 Разработчик: Arhara Дата выхода: 30 Апреля, 2017 г. Дополненная Народная солянка с новыми локациями и финалом сюжетной линии. Игровой мир мода раскинулся более, чем на три десятка игровых уровней, а геймплей игры был кардинально расширен и доработан. Новая сюжетная линия поведает игрокам новые истории и предложит сотни новых заданий.
  9. Вероятнее всего, никто и не найдёт, откуда эти ноги, кроме официальных ребят с движка. Однако, как заметил наш модератор @AziatkaVictor, редактор загружается отдельно от основной странице, т.е. после загрузки самой страницы. И после этого возникла мысль, что иногда редактор может непрогружаться, ибо все ресурсы интернета юзера направлены на загрузку сайта и прочего, а на редактор не хватает (просто личная мысль). Я, поскольку у меня слабый интернет и я гружу его постоянно до самого максимума, ежедневно, несколько раз (иногда и более) встречаю эту проблему что на форуме в редакторе, что при написании статуса на странице профиля. Для меня это обычное дело, что встречается эта проблема. Было бы очень круто, если бы разработчики поработали над редактором и решением этой проблемы, если нашли причины её появления. Будем ждать и надеяться на лучшее. Кстати, небольшой личный вопрос (для личного развития и утолить интерес). Как думаете, в случае переноса сайта на новую версию, это как-то появлияет на него? Например, в плане отказа некоторых нестандартных скриптов, установленных к сайту? Так, чисто взгляд со стороны.
  10. [SoC] Система постепенной регенерации жизни Автор статьи: Fireman3000 Дополнил: Darkscape А так же спасибо: Lurk моду и ABC. Статья взята из: stalker inside Для начала создадим скрипт. Например health_effect.scripts: Теперь создаёте скрипт abc_medkit.script: Лезем в bind_stalker.scripts: Далее идем в файл config\misc\items.ltx:
  11. [SoC] Телепортация через скрипт Функция доступна только для Тень Чернобыля, в остальных сериях наблюдаются вылеты! Создаем скрипт, в него вставляем: Телепортация: Функция телепортации: function poleteli() create_level_changer(20101, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), 10193, 2437, vector():set(66.210,15.040,4.250), vector():set(0.0, 0.0, 0.0), "l12u_sarcofag", 1) end Функция удаления: function delete_poleteli() -- функция удаления(если нужно) local sim = alife() local se_obj = sim:story_object(20101) if se_obj then sim:release(se_obj, true) end local actor = db.actor end Информация: 20101 - STORY_ID нового level_changer 10193 - level_vertex_id 2437 - game_vertex_id vector():set(66.210,15.040,4.250) - координаты vector():set(0.0, 0.0, 0.0) - направление взгляда актёра "l12u_sarcofag" - название локации Функцию телепортации, можно вызывать любым способом.
  12. [SoC] Урок по созданию respawn монстров Автор: ins33 Рано или поздно, каждый модостроитель задаётся вопросом респавна. Как и все, я не исключение. Первые пробы, создать респавнер, увенчались частичным успехом. О не удаче, читайте в коце поста. Помучив респавнер пару дней, я отложил сие занятие, на дальнюю полку. И вот пришло время, но на сей раз, мне надо было заспавнить мобов. И это оказалось на порядок проще! И так, приступим: Первое, что необходимо запомнить: Респавнер срабатывает, при условиях: 1) Есть свободная работа в смарте. 2) Секции респавнера, совпадают с секциями смарта. 3) Соблюдены условия работы респавнера: conditions Для начала создадим смарт, с одной работай: В папку ACDC\all создадим alife_l01_escape_test.ltx и way_l01_escape_test.ltx. Сделаем это для удобства, при запаковке, всё добавленное окажется в файлах локации, куда это добавляется. В acdc\all\all.ltx добавим alife_l01_escape_test.ltx, и way_l01_escape_test.ltx. В alife_l01_escape_test.ltx добавим смарт: Смарттерей, мы создали, добавим моба для этого смарта: Зверушка есть, добавим пути. Откроем way_l01_escape_test.ltx: Теперь, нам надо создать логику, и условия работы. Для этого создадим gamedata\config\misc\gulag_escape_test.ltx. В gulag_task.ltx зарегистрируем новый гулаг #include "gulag_escape_test.ltx" и напишем в gulag_escape_test.ltx простую логику: Логику, написали, теперь добавим условие. Создадим скрипт gulag_escape_test.script, зарегистрируем его в xr_gulag.script добавив в level_gulags = {*, gulag_escape_test}. В gulag_escape_test.script пропишем: Сделали. Тепрь у нас есть смарт с одной зверушкой. Давайте проверим, работате ли наш смарт? Загрузим игру, и прогуляемся в сторону вагончика на предбаннике, рядом с раненым. С кабанчиком познакомились, давайте добавим респавнер. В alife_l01_escape_test.ltx добавим: Респавнер, сделали. Теперь, было бы здорово, не ждать когда он сам сработает, а заставить сработать его, когда нам это надо. Для этого сделаем спейсрестриктор? Рядом с входом в бункер Сидоровича, который и вызовет респавнер: Собираем all.spawn начинаем НИ, идём убиваем кабана, возвращаемся к входу в бункер, спускаемся по лестнице, и идём обратно, к смарту кабана. Поздравляю, вы сделали респавнер Домашнее задание:
  13. Как заставить НПС смотреть в заданную точку Автор: Jоhann Что бы НПС стоял на месте можно использовать логику walker и чтобы он смотрел в заданную точку. Снимаем координаты где он стоит, пишем их в all.spawn и сдесь. И снимаем координаты куда он смотрит, в какую точку: [logic] active = walker [walker] path_walk = название точки где стоит нпс path_look = название точки куда смотрит нпс Это пишем в way_***.ltx в распакованом all.spawn. Координата, где стоит НПС, должна быть такой же, что и писали в самом alife_**.ltx: [название точки где стоит нпс] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -258.846771,-17.546392,-127.127708 ; ваши координаты p0:game_vertex_id = 934 ; ваши гаме вертексы p0:level_vertex_id = 8288 ; ваши левел вертексы [название точки куда смотрит нпс] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -256.672241,-17.875896,-127.18396 ; ваши координаты p0:game_vertex_id = 934 ; ваши гаме вертексы p0:level_vertex_id = 9137 ; ваши левел вертексы
  14. Справочник по функциям и классам Такая тема уже давно существует на АМК форуме, и курирует ее malandrinus, но по выводам из ответов/вопросов в теме Модострой: Вопросница (и не только), я понял, что у многих не доходят руки покопать в интернете и найти всем известный АМК форум... потому решил создать такую же тему, здесь... Но так как там вся информация идет не организована и в разброс, здесь я сделаю всю информацию в шапке темы и под спойлерами: Слова автора темы на AMK: Оглавление Основы: Класс alife_simulator. Базовые операции с серверными объектами: Пространства имён. Глобальные функции для большого числа задач: Вступление: Безымянное пространство имён: Пространство имён game: Пространство имён level:
  15. Как заспавнить физический объект Автор: KitkaT.Net Редактирование: Pihan13 В этой статье вы узнаете как создать спавнящийся физический объект. Выбираем нужную модель из папки gamedata\meshes. Создаем в файле misc\items.ltx (или своем конфиге) новую секцию, которая будет выглядеть так: [vedro]:identity_immunities ;vedro — название спавн-секции предмета (Потом мы будем через него спавнить). Пишется латиницей. $spawn = "dynamic_objects\el_tehnika\komp_klava" ;путь спавн-секции в дереве спавн-объектов в СДК (если не пользуетесь СДК, то особой важности не имеет). visual = objects\dynamics\decor\vedro_01.ogf ;Путь до модели физического объекта из папки meshes. cform = skeleton ; Движковые классы (донт тач) class = P_SKELET remove_time = 4 ;Время через которое объект исчезнет. Число до от 0 до 9999, если поставить 9999 то он просуществует очень долго Второй вариант: [vedro]:identity_immunities ;vedro — название спавн-секции предмета (Потом мы будем через него спавнить). Пишется латиницей. $spawn = "physics\object" ;путь спавн-секции в дереве спавн-объектов в СДК (если не пользуетесь СДК, то особой важности не имеет). visual = objects\dynamics\decor\vedro_01.ogf ;Путь до модели физического объекта из папки meshes. class = O_PHYS_S remove_time = 60000 ;Время через которое объект исчезнет. Число до от 0 до 9999, если поставить 9999 то он просуществует очень долго. Так вроде лучше. Сохраняем файл. Далее уже стандартно — создаем в скриптовом файле функцию типа: function spawn () alife():create("vedro",vector():set(координаты X,Y,Z),level_vertex_id,game_vertex_id) end И вызываем эту функцию через диалог или другой скрипт.
  16. Делаем свечение у артефактов Автор: AMK + дополнения от Nikitos817 Что бы артефакты ярче светили, надо сделать следующие манипуляции. Открываешь artefacts.ltx из gamedata\config\misc: Ищешь артефакт и меняешь параметры (если нет, добавляешь): ;подсветка арта lights_enabled = true(false) (включено(отключено)) trail_light_color = х, х, х (R,G,B.) trail_light_range = х (радиус свечения) Теперь я объясню, что это: 1. trail_light_color = х, х, х (R,G,B.) - это цвет. RGB - это Red Green Blue (Красный, Зелёный, Синий). Максимальное значение вроде 1.0. Если trail_light_color = 1.0, 0.0, 0.0, то артефакт будет светиться ярко красным цветом. 2. trail_light_range = х - радиус свечения. Максимальный радиус вроде 9.9 (9 метров, 99 сантиметров).
  17. [SoC] Вывод другого варианта часов на HUD Автор основного урока: steelrat. Автор правок: LaRento. Благодарность за урок по классу CTime: malandrinus. Здравствуйте. Данный короткий урок посвящён выводу часов, имеющие дату и пару изменений со временем. Прошу не обвинять данный урок как плагиаторство основного урока по добавлению часов на HUD. Понадобятся следующие файлы: новый_скрипт.script bind_stalker.script ui_custom_msgs.xml 1. Создание функции отображения уже всем знакомых часов: Открываем ваш новый_скрипт.script, который вы назовёте как захотите и пишем туда следующее. Функция содержит пояснения. 2. Регистрация или постоянный вызов функции: Открываем bind_stalker.script и в функцию actor_binder:update(delta), допустим после строки: game_stats.update (delta, self.object) пишем: новый_скрипт.add_clock() 3. Добавление самих часиков на худ: Открываем файл ui_custom_msgs.xml и пишем следующее в конце внутри тегов <header>: <hud_clock_static x="852" y="17" width="156" height="52"> <text complex_mode="0" x="65" y="0" font="letterica16" r="255" g="255" b="255" a="130" align="c"/> <texture>ui_hud_frame_clock</texture> </hud_clock_static> <hud_show_time x="870" y="45" width="156" height="52"> <text x="0" y="0" font="graffiti19" r="255" g="255" b="255" a="140" align="c"/> </hud_show_time> <hud_show_date x="875" y="17" width="156" height="52"> <text x="0" y="0" font="letterica16" r="255" g="255" b="255" a="130" align="c"/> </hud_show_date> Либо можете поставить стандартный шрифт времени, как на таймере. Для этого используете это с заменой: <hud_show_time x="875" y="40" width="156" height="52"> <text x="0" y="0" font="graffiti32" r="238" g="155" b="23" align="c"/> </hud_show_time> Вот собственно и всё. Можете спокойно идти и проверять У вас должно получиться вот так:
  18. [SoC] Blowout Mod - реализация рандомного выброса Что для этого потребуется: конечно же S.T.A.L.K.E.R. - Shadow of Chernobyl, любой версии, с модификацией Blowout Mod. К чему этот урок: многие уже наверное знают что в модификации "Blowout Mod" выброс наступает по указанному времени, а в этом уроке я поясню как сделать функцию рандома, т.е чтобы "выброс" мог начинаться в любое время. Итак, приступим: В папке с "gamedata", которая из под модификации, находим папку "scripts", там находим файл "ogsm_funcs.script", открываем его и находим такие строчки: g_start_timer("bl1",0, vars.t_surge+math.random(-4,4), 0) и g_start_timer("bl1", 0, vars.t_start, 0) И заменяем их на такие: g_start_timer("bl1",0, math.random(1,24), 0) и g_start_timer("bl1",0, math.random(1,24), 0) Всё, скрипт "vars" можете смело удалять, он больше не пригодится, время начало выброса будет работать по рандому.
  19. Отсылаем сообщения главному герою методом разработчиков Автор: Scouser Здравствуйте. Я решил создать маленький урок по выявлению сообщения ГГ. Спасибо модостроителю ColR_iT за некоторые правки. Существует несколько вариантов отослать сообщение ГГ на ПДА: схемой [sr_tip] логики объекта Space Restrictor, методом give_game_news. Однако разработчики пользовались функцией send_tip из скрипта news_manager. Так вот, эта функция спокойной отсылает сообщение на ПДА главного героя. Но стоит учитывать, что она построена на методе give_game_news класса game_object. Для меня это самый удобный способ, имхо. 1. Разберём саму функцию: function name (actor, npc) news_manager.send_tip(db.actor, "new_sms_text", 10000, "ecolog", 18000, 902) end Теперь поэтапно: 2. Добавляем озвучку во время отправки сообщения: Достаточно просто открыть файл news_manager.script и мы увидим вначале и немного вниз множество ссылок на звуковые файлы. В нашем случае пишем: new_sms_text = xr_sound.get_safe_sound_object([[characters_voice\sound]]), Теперь посмотрим, что тут всё это значит: Ну вот собственно и всё. Очень простой способ, которым пользовались разработчики. Желаю удачи вам в моддинге, творите с удовольствием!
  20. Даём квест ГГ при входе в определённую зону Автор: LaRento Здравствуйте, с вами LaRento. В этой статье я хочу объяснить модмейкерам, как можно получить квест или его выполнение при входе в определённую зону. Введение: часто игроки хотят выдать квест или выполнение его минизадач и даже его самого при входе в какое-нибудь место. Но не многие знают о такой вещи, как Space Restrictor. Это определённый объект, который выдаёт инфпоршни, вызывает функции из скриптов при входе в зону. Так же я объясню, как можно это сделать с задержкой времени. Хоть и существуют туторы по рестрикторам, но я хочу привести примеры, ведь новички порой не знают что такое Спейс рестриктор. 1. Распаковываем all.spawn и открываем alife_локация.ltx. Пишем туда следующую секцию Спейс Рестриктора: 2. Открываем info_локация.xml и пишем: Писать о создании квеста я не буду, думаю, вы найдёте такие статьи. В рестрикторе можно указать любой поршень: начало квеста, завершение подзадачи, завершение самого квеста. Выдача квеста с задержкой времени: Для этого достаточно поменять логику: Вызываем функцию: Стоит поменять логику и вписать важу функция в xr_effects.script: 1. Открываем этот скрипт и пишем вашу функцию. 2. Меняем логику: Проигрывание звука: Тоже дело в логике: Ну вот собственно и всё. Надеюсь, что у вас всё получится. Всего хорошего, удачи.
  21. Как привязать к игре другой файл спавна Автор: Wookie Наверное многие копались в Freeplay Start, и видили, что в нем другой файл спавна, не all.spawn, а freeplay.spawn. На самом деле это делается очень просто: 1. Копируем all.spawn (чистый, или который используется в вашем моде) в папку gamedata/spawns. 2. Переименовываем его в любое удобное вам название, например в new.spawn. 3. Создаем папку scripts, если в вашем моде ее еще нет и копируем туда файл ui_main_menu.script (опять же - если его нет, если есть - просто открываем). 4. В скрипте ищем строку с таким содержимым: console:execute("start server(all/single/alife/new) client(localhost)") и заменяем all на название вашего нового файла спавна
  22. Создание полоски здоровья, меняющей цвет Для этого нам понадобятся стандартные файлы: config/ui/maingame.xml config/ui/ui_custom_msgs.xml scripts/bind_stalker.script 1. Создаём файл new_hud_health.script в папке gamedata/scripts и пишем в него: 2. Создаём файл new_hud_health.ltx в папке gamedata/config/scripts и пишем в него: 3. В файле ui_custom_msgs.xml прописываем: 4. Открываем файл maingame.xml и находим строчки: 5. Открываем файл bind_stalker.script и пишем после:
  23. Эффект критического ранения Автор: XMK 1. Создаем файл effect_blood.script и записываем туда следующее: lite_treshold = 0.05 -- насколько должно уменьшиться здоровье с предыдущего обновления чтоб экран окрасился в красный crit_treshold = 0.30 -- насколько должно уменьшиться здоровье с предыдущего обновления чтоб ГГ начало шатать drop_item_on_crit_prob = 0.20 -- вероятность того что ГГ выронит оружие effector_power_coeff = 0.7 prev_health = -1 chk_h_t = 0 function wounded_pp_update() if (chk_h_t or 0) < time_global() then chk_h_t = time_global()+1000 if prev_health > (db.actor.health + lite_treshold) then level.add_pp_effector("fire_hit.ppe", 2011, false) local effector_power = (prev_health - db.actor.health)*100*effector_power_coeff level.set_pp_effector_factor(2011, effector_power) if prev_health > db.actor.health + crit_treshold then level.add_cam_effector("camera_effects\\fusker.anm", 999, false, "") local snd_obj = xr_sound.get_safe_sound_object([[actor\pain_3]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) if math.random() < drop_item_on_crit_prob then local active_item = db.actor:active_item() if active_item and active_item:section() ~= "bolt" and active_item:section()~= "wpn_knife" then db.actor:drop_item(active_item) end end end end prev_health = db.actor.health end end 2. Далее открываем bind_stalker.script и после строчек: function actor_binder:update(delta) object_binder.update(self, delta) local time = time_global() game_stats.update (delta, self.object) пишем: effect_blood.wounded_pp_update()
  24. [CoP] Создание новых достижений Автор: Zeka1996Korneev Нам понадобятся файлы: configs\gameplay\info_zaton.xml configs\misc\achievements.ltx configs\text\rus\st_achievement.xml configs\ui\textures_descr\ui_actor_achivments.xml scripts\xr_statistic.script scripts\xr_conditions.script textures\ui\ui_actor_achivments.dds Чтобы их найти, нужен распаковщик ресурсов игры. 1. Открываем файл achievements.ltx и добавляем в конец секцию нашего ачивмента: [sucker] icon = ui_inGame2_lopuh hint = st_sp_achievement_22_hint name = st_sp_achievement_22_name desc = st_sp_achievement_22_descr functor = xr_statistic.sucker_functor Подробно: [sucker] <----- В рамке любое название icon = ui_inGame2_lopuh <------ Иконка hint = st_sp_achievement_22_hint <------ Описание в ПДА при наведении на ачивку. name = st_sp_achievement_22_name <---- Название desc = st_sp_achievement_22_descr <----- Описание functor = xr_statistic.sucker_functor <----- Функция получения 2. Открываем st_achievement.xml и пишем: <string id="st_sp_achievement_22_hint"> <text>Вы постараетесь больше не попадать впросак. :)</text> </string> <string id="st_sp_achievement_22_descr"> <text>Вы отдали артефакт мошеннику.</text> </string> <string id="st_sp_achievement_22_name"> <text>Лопух</text> </string> 3. Открываем xr_statistic.script и пишем рядом с функциями других ачивментов: function sucker_functor() <--- Название if not has_alife_info("sucker_achievement_gained") then <--- Проверка, получили ли вы уже этот ачивмент ранее. if has_alife_info("zat_b14_give_item_stalker") <---- Инфопоршень получения ачивмента then xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 200}) <----- Прибавление репутации по отношению сталкеров к ГГ. Если написать -200 то репа будет отрицательной. xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"freedom", 200}) <---- Прибавление репутации по отношению свободы к ГГ. xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"dolg", 200}) <--- Прибавление репутации по отношению долга к ГГ. xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"bandit", 200}) <---- Прибавление репутации по отношению бандосов к ГГ. news_manager.send_tip(db.actor, "st_ach_diplomat", nil, "diplomat", nil, nil) <--- Сообщить о получении ачивмента на ПДА db.actor:give_info_portion("sucker_achievement_gained") <--- Выдать ачивмент end end return has_alife_info("sucker_achievement_gained") end 4. Открываем xr_conditions.script и ищем: sucker_functor = xr_statistic.sucker_functor добавляем ниже: friend_of_stalkers_functor = xr_statistic.friend_of_stalkers_functor 5. В ui_actor_achivments.dds рисуем нашу иконку. 6. В ui_actor_achivments.xml пишем координаты текстуры.