Как сделать чтобы оружие не убиралось

Добавил пользователь Евгений Кузнецов
Обновлено: 18.09.2024

Сегодня мы разберем то, каким образом можно редактировать оружие в игре - от характеристик до описания. Характеристики оружия хранятся здесь:

. \S.T.A.L.K.E.R\gamedata\config\weapons\w_[. ].ltx

Разбор структуры конфига

Возьмем, для примера, конфиг w_g36.ltx. Он делится на разделы:

Первый раздел

Здесь хранится общая информация о оружии - его класс, тип, ссылки на спавн и т.д. Нас интересуют следующие строки:

  • description = enc_weapons1_wpn-g36 - ссылка на string_id, из которого игра подгружает описание этого оружия.
  • ef_main_weapon_type = 2 - основной тип, к которому принадлежит оружие
  • ef_weapon_type = 6 - подтип, к которому принадлежит оружие
  • default_to_ruck = false - значит, если при пустой ячейке под автомат, подобрать автомат он будет помещён в ячейку; если true автомат в ячейку помещён не будет
  • sprint_allowed = true - эта строка означает можно ли бегать с данным оружием (true-можно;false-нельзя)

Второй раздел

Содержит модификаторы, которые даются к углу зрения/дальности обзора NPC, держащего это оружие в руках:

  • holder_range_modifier = 1.85 - во сколько раз увеличивается eye_range
  • holder_fov_modifier = 0.3 - во сколько раз увеличивается eye_fov

Третий раздел

Содержит данные о самом оружии, его некоторых характеристиках:

  • cost = 18000 - базовая цена (торговцы умножают её на некоторый коэффициент)
  • weapon_class = assault_rifle - класс оружия (здесь - штурмовая винтовка)
  • ammo_mag_size = 30 - размер магазина
  • ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap - типы используемых патронов
  • grenade_class = ammo_m209 - тип используемых гранат
  • fire_modes = 1, -1 - режимы ведения огня
  • hand_dependence = 1 - засивимость о рук (?) - возможно, речь идет о качании ствола
  • single_handed = 0 - держится ли только в одной руке
  • slot = 2 - слот в инвентаре
  • animation_slot = 2 - вид анимации (для пистолета/для винтовки)
  • inv_name = wpn-g36 - ссылка на имя, отображаемое в инвентаре, тоже берется из string table, как и описание
  • inv_name_short = wpn-g36 - короткое имя; в данном случае используется то же самое
  • inv_weight = 3.6 - вес
  • inv_grid_width = 5 - длина иконки (кол-во клеток по х)
  • inv_grid_height = 2 - высота иконки (кол-во клеток по у)
  • inv_grid_x = 0 - координаты первого угла иконки по x
  • inv_grid_y = 10 - координаты первого угла иконки по y

Четвертый раздел

В четвертом разделе хранится информация о износе/отдаче оружия. Практически все параметры там снабжены комментариями, поэтому приведу лишь самые интересные:

  • cam_relax_speed = 5.7 - скорость возврата в исходное положение
  • cam_dispersion = 0.2 - увеличения угла (в градусах) с каждым выстрелом
  • fire_dispersion_condition_factor = 5 - увеличение дисперсии в процентах при максимальном износе
  • misfire_probability = 0.003 - вероятность осечки при максимальном износе
  • misfire_condition_k = 0.05 - порог (в данном случае - 5%), после которого оружие может заклинивать
  • condition_shot_dec = 0.0002 - увеличение износа при каждом выстреле

Пятый раздел

Здесь хранится множество параметров, из которых наиболее интересны эти:

  • PDM_disp_base = 3.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ (Главный Герой) стоит на месте в полный рост;
  • PDDM_disp_vel_factor = 1.3 - множитель, на который умножается базовая дисперсия оружия, когда ГГ крутит оружием или бежит;
  • PDM_disp_accel_factor = 1.3 - множитель, на который умножается базовая дисперсия оружия, когда ГГ бежит в спринте;
  • PDM_crouch = 1.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ идет пригнувшись;
  • PDM_crouch_no_acc = 1.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ стоит на месте, пригнувшись;
  • hit_power = 0.50, 0.54, 0.57, 0.60 - сила выстрела
  • hit_impulse = 105 - импульс пули (сила, которую летящая пуля передает жертве, влияет на поведение ragdoll-тела)
  • hit_type = fire_wound - тип причиняемых повреждений, в данном случае - пулевые ранения (параметр в синглплеере ни на что не влияет)
  • fire_distance = 600 - максимальная дистанция для выстрела
  • bullet_speed = 925 - начальная скорость пули
  • hud = wpn_g36_hud - внешний вид оружия

Шестой раздел

  • position = -0.026, -0.132, 0.0 - позиция по отношению к игроку (?)
  • orientation = 0, 0, 0 - направление, в которое смотрит ствол (?)

Седьмой раздел

Содержит описания визуальной стороны оружия и некоторые другие параметры:

  • startup_ammo = 90 - как нетрудно догадаться, стартовое количество патронов (в синглплеере ни на что не влияет)
  • visual = weapons\g36\wpn_g36.ogf - модель оружия, используемая NPC, а также игроком при виде от третьего лица
  • ph_mass = 4 - физическая масса, используемая при расчетах
  • scope_status = 1 - ситуация со съемным прицелом
  • silencer_status = 0 - ситуация со съемным глушителем
  • grenade_launcher_status = 0 - ситуация с подствольным гранатометом
  • Параметры:
    • 0 - нет, новый прикрепить нельзя
    • 1 - уже есть, несъемный
    • 2 - нет, но можно установить новый
    • zoom_enabled = true - есть ли зум (прицеливание)
    • scope_zoom_factor = 33.3 - какой зум дает прицеливание (здесь - 1.8х)
    • scope_texture = wpn\wpn_crosshair_g36 - текстура прицельной сетки
    • shell_point = 0.15, 0.0, -0.05 - точка вылета гильз
    • shell_dir = 0.0, 1.0, 0.0
    • fire_point = -0.000000,0.062000,0.134000 - точка выстрела
    • fire_point2 = 0.30, 0.00, 0.05 - точка выстрела (2)
    • fire_bone = wpn_body
    • orientation = 0, 0, 0 - направление
    • position = 0, 0, 0 - позиция
    • visual = weapons\g36\wpn_g36_hud.ogf - модель, отображаемая у нас в руках

    Изменение описаний

    Описания оружия хранятся в файле: . \S.T.A.L.K.E.R\gamedata\config\text\rus\string_table_enc_weapons.xml

    В нем хранятся строки с названиями и описаниями, на которые ссылаются конфиги оружия. Например, тот же G36 ссылается сюда:

    Меняя их содержимое, мы меняем описания/названия данного оружия.

    Изменение патронов

    Параметры патронов хранятся в файле:

    . \S.T.A.L.K.E.R\gamedata\config\weapons\weapons.ltx

    Найдем, например, раздел, отвечающий за патроны к тому же G36 (о них мы узнали из параметра ammo_class), и разберем, что означает каждый параметр:


    По факту, в КС, чтобы что то не исчезало после смерти, это что то нужно повторно выдать при респавне. (При смерти там куча ресетов всего, при респавне тоже несколько).
    До смерти, сохрани где то инфу о том что у игрока есть этот итем, и при респавне выдай его повторно.

    Skiptik

    Ayk, Подскажите тогда как сохранять данное оружие, массив я создал, а вот в какой момент нужно записывать наше кастомное оружие в массив я не могу понять, ведь массив надо еще и вернуть в положение false если оружие сменено
    new bool:iKnifeHas[MAX_PLAYERS + 1] Надеюсь поможете мне

    twisterniq

    Skiptik, зачем что-то куда-то сохранять? Всё что нужно это заново выдать. В PlayerSpawn у Вас 3 ошибки: как сказал Ayk, нужно указать ID игрока а не оружия; Вы не сделали проверку на жив ли игрок; Вы используете PLUGIN_HANDLED .

    Skiptik

    w0w, вот изменил, не совсем уверен что правльно возвращаю return значение, ибо не совсем понимаю какое нужно возвратить, и какая замена PLUGIN_HANDLED, и такой вопрос а как плагин поймет какое оружие мне надо выдать при спавне, если я его не сохраню где то?

    fantom

    Skiptik, нож убирается после смерти или каждую смену раунда?
    Если каждую смену, то на всех картах или например на awp_india или 35hp только?

    Skiptik

    fantom, Сейчас ножик выдается всегда даже если ты его не выбираешь, а так же он выдается даже если выбрал другой нож вот код что сейчас

    ps я понимаю что можно через bool функцию записать при вызове функции CmdGive что нож взят, но у меня возникает вопрос как поставить bool функцию в false когда выбрали другой нож
    И если эта тема расширилась от изначальной, не создавать же +100500 тем с похожими вопросами

    fantom

    Skiptik

    fantom, нож пропадает и при смерти и при смене карты, при смене карты он и должен пропадать, а вот при смерти он должен остаться, до момента смены карты или смены ножа на другой. Смущает, что выдаю всем, но по другому как это сделать пока я не знаю, был бы благодарен если вы поможете мне в этом вопросе.

    fantom

    Так это же стандартное поведение. При смерти удаляется все оружие со всех слотов и выдается стандартное (RG_CBasePlayer_GiveDefaultItems).

    fantom

    Skiptik

    Skiptik

    fantom , в твоем примере найден баг, после смерти выдается нож последний который вписан в plugins.ini

    CustomKnifeSpeed.amxx debug
    CustomKnifeGravity.amxx debug
    CustomKnifeGold.amxx debug
    CustomKnifeUltra.amxx debug

    ---------------------------------------------
    А что пробовали? Можно как-то подробнее?
    Если у вас игра без правок, давайте сейв поближе к Тени Монолита. Если с правками тогда и паку gamedata.
    П.С.
    Буду позже или уже аж завтра.

    Тень Монолита из All.spawn-а 2.09--2
    [2607]

    ; cse_abstract properties
    section_name = stalker_sakharov
    name = labirint_shade_monolit
    position = -273.086212158203, 42.4740295410156, 196.001724243164
    direction = 0.367561399936676, 0, 0.929999232292175
    id = 65535
    version = 118
    script_version = 6
    spawn_id = 474

    ; cse_alife_trader_abstract properties
    money = 5000
    character_profile = labirint_shade_monolit

    подскажите пожалуйста в каких файлах правится псевдодок, собака и контролер. Хочу убрать у них пси воздействие и пси удар.

    section_name = stalker
    name = bar_killer_attackers_15
    .


    ui\ui_icons_task
    arhara_dialog.naemn_shturm_poluch_have -- .
    naemn_shturm_poluch_have --.



    blue_location
    bar_dolg_general_voronin
    naemn_shturm_poluch_done

    function shax_start()
    return has_alife_info("tel_dcity_kanaliy") and has_alife_info("volna_day4_done")
    end


    and has_alife_info("volna_day4_done") -- лишнее в условии, ибо:
    function akim_panic()-- вызывается этим же поршнем:

    ,
    и эта же функция
    if shax_start() -- повторно проверяет наличие того же поршня -- брррр.
    Плюс рестриктор в МГ запускает:

    function otkr_perex_zaton_sms2()
    news_manager.send_tip(db.actor, "%c[255,160,160,160]".."НОРМАН:".."\\n".."%c[255,255,128,128]Эй, мужики! Я с вами! Нечего мне тут больше делать.".."".."\n", nil, nil, 15000)
    amk.start_timer("run", 7, "arhara_dialog.acv_sol()")
    amk.start_timer("run2", 7, "oksana_spawn.akim_panic()")
    end

    Во что играем. Вот прям такого нет в ОП-2.

    Проверял. Ни Прапор,ни Ворон со мной не говорят. И Аким конечно тоже молчит. А сейв нужен какой? последний(чтобы не переигрывать). Или после Волны Монстров? Выложил два сейва.
    --------------------------------------------


    А разве я не написал какой?
    Не знаю что вам и ответить. Грузанул я ваш сейв, получил два достижения, перешел с Затона на Кордон к Акиму и вуаля!

    Вот ваш сейв после разговора с Акимом на чистой 2.09--2: тык! Диалог прочтёте в КПК. Далее Свалка.
    Если у вас другой патч и фикс звыняйте, экстрасенсов у нас нема.
    Эс.

    [error]Expression : no_assert
    [error]Function : CXML_IdToIndex ::GetById
    [error]File : e:\stalker\sources\trunk\xr_3da\xrgame\xml_str_id_loader.h
    [error]Line : 112
    [error]Description : item not found, id
    [error]Arguments : acv_ment

    И что же выходит? На 2.09--1 поставлены правки для 2.09--2 .
    Эс.

    Собираете противогазы для коллекции или планируете открыть магазин? Тогда понятно, зачем убили больше 50 снорков: нравится бесплатная доставка - они сами приносят нужное.\n \n \n \n \n

    Или попробовать поставить эти файлы из 2.09--2. А вообще переходите на 2.09--2 со всеми прежними правками, только не ставьте те правки, что на 2.09--1. Да и ставить по необходимости.

    Наверняка вы знаете, что в игре есть специальные зоны, в которых автоматически убирается оружие. К этим зонам относятся: бункер Сидоровича, Бар "100 Рентген" и Бункер Учёных.

    Однако мало кто знает, что достать и использовать оружие в этих зонах проще простого. Для этого достаточно выполнить несколько несложных шагов.

    Шаг 1. Подготовка

    Тут всё просто - встаём перед той границей, при пересечении которой оружие сложится. Также не забываем его разрядить.

    Шаг 2. Прыжок

    Прыгаем вперёд, и во время прыжка через эту зону нажимаем одновременно две кнопки: "Сложить оружие" и "Выстрел". Должно произойти следующее: оружие начнёт убираться и в следующий момент ГГ начнёт его перезаряжать.

    Шаг 3. Итог

    Здесь всё просто - стреляем по предметам или торговцам в помещении)) Стоит отметить, что стрельба по Бармену почти со 100% вероятностью приведёт игру к вылету.

    У многих игроков могла возникнуть ситуация, когда он подходил к какому-нибудь нейтральному сталкеру и получал в лицо грубое: "Ты это, ствол-то убери, там и поговорим". А если это был один из блатных ребят в черных плащах, можно было услышать ещё и несколько лестных отзывов о себе и своём стальном друге.

    В целом, для мира Зоны подобное дружелюбие вполне оправдано, ведь тыкать в незнакомых сталкеров волыной — не очень хороший тон. Дальше вы узнаете как убрать оружие в Сталкер Зов Припяти.

    Как спрятать оружие в Сталкер Зов Припяти

    Есть несколько вариантов, при которых игра и NPC могут счесть, что у вас нет оружия в руках. Рассмотрим все возможные варианты, скриншоты прилагаются.


    Вариант 1. Достать бинокль, болты или детектор

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


    Вне безопасной зоны NPC спокойно относятся и к болтам, даже если они летят им в голову.


    Вариант 2. Нажать повторно клавишу, отвечающую за выбор оружия

    Для того чтобы убрать оружие, можно повторно нажать клавишу, отвечающую за него. По умолчанию: 1 - нож, 2 - первый слот оружия, 3 - второй слот оружия.



    То есть, имея в руках АК, который вы носите во втором слоте, можете нажать клавишу 3, и персонаж спрячет его.



    Заключение

    Теперь вы знаете как спрятать оружие в Сталкер Зов Припяти. Не светите волыной. Если долго стоять напротив сталкера, направив на него ствол, он просто ударит вас прикладом, и вы выроните своё оружие. Чтобы избежать похождений в кустах с зажатой клавишей F (показывает предметы, лежащие рядом с персонажем), пользуйтесь советами из нашей подсказки.

    Читайте также: