Как сделать чтобы оружие не убиралось
Сегодня мы разберем то, каким образом можно редактировать оружие в игре - от характеристик до описания. Характеристики оружия хранятся здесь:
. \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 (показывает предметы, лежащие рядом с персонажем), пользуйтесь советами из нашей подсказки.
Читайте также: