|
|
Строка 1: |
Строка 1: |
− | В этой статье мы научимся создавать новые образцы вооружения. Для начала, мы будем использовать модели из оригинальной игры. Если вы хотите создать оружие, имеющее уникальный внешний вид, ознакомьтесь с [[Создание моделей и их добавление в игру|уроком]] по созданию моделей.
| + | Требуются рабочие. Обработка зказов на дому. |
− | | + | |
− | Добавим в игру '''АК101'''.
| + | |
− | | + | |
− | ==Внешний вид==
| + | |
− | | + | |
− | Позаботимся о том, чтобы наше оружие отличалось внешне от того же '''АК74'''.
| + | |
− | | + | |
− | ===Текстуры===
| + | |
− | | + | |
− | Нарисуем для оружия новую текстуру. Подробно останавливаться на этом процессе не буду, ознакомьтесь с примером, приведенным [[Изменение текстур#Изменение текстур моделей|здесь]]. Итак, основываясь на текстуре '''АК74''', мы сделали вот такую текстуру:
| + | |
− | | + | |
− | [[Изображение:500px-AK101 texture.jpg]]
| + | |
− | | + | |
− | Файлы текстур мы назвали:
| + | |
− | | + | |
− | * '''wpn_ak10.dds'''
| + | |
− | * '''wpn_ak10_bump#.dds'''
| + | |
− | * '''wpn_ak10_bump.dds'''
| + | |
− | | + | |
− | ===Модели===
| + | |
− | | + | |
− | Новых моделей мы пока делать не станем, просто воспользуемся дублированными моделями от '''АК74'''. Скопируем папку:
| + | |
− | | + | |
− | '''gamedata\meshes\weapons\ak74\'''
| + | |
− | | + | |
− | И назовем её '''ak-101'''. Содержимое, соответственно, переименуем в:
| + | |
− | | + | |
− | * '''wpn_ak101.ogf'''
| + | |
− | * '''wpn_ak101_hud.ogf'''.
| + | |
− | | + | |
− | Теперь пропишем в эти модели созданные нами текстуры. Способ описан [[Изменение текстур#Создание новых visual для использования с новыми объектами|здесь]]'''.
| + | |
− | | + | |
− | P.S. от Кепа: Вобще, если вы создаёте новое оружие на основе старой модели, то удобней будет прописывать его через файл gamedata\config\misc\unique_items.ltx (в Тени чернобыля). В Чистом небе уникальные стволы лежат в файлах оружия.
| + | |
− | Смысл в том, что вам не нужно бутет переписывать все значения оружия в новый файл, а просто надо добавить ссылки на новые текстуры и описания, и перечислить свойства, которые Вы хотите заменить. Кроме того, создавая отдельный файл модели для нового оружия Вы тупо загружаете одну и туже информацию в память по второму кругу (это нехорошо, да). Всё остальное надо делать также как написано далее.
| + | |
− | | + | |
− | Если создаете оружие с новой моделью то обязательно не оставляйте её без изменений.Почему-то в игре не может быть двух оружий с одинаковыми моделями.И еще-если вы создаете прототипное оружие(меняете часть конфигов) то обязательно кладите конфиг в соответствующий файл(в ЧН и ЗП это файл с оружием-прототипом,а в ТЧ unique_items) иначе при загрузке игра будет вылетать,примерно так:
| + | |
− | argument:can not find section 'название вашего оружия'
| + | |
− | | + | |
− | ===Иконки===
| + | |
− | | + | |
− | Добавим в игру иконки, которыми оружие будет отображаться в инвентаре. Способ подробно описан [[Изменение текстур#Изменение иконок предметов|здесь]].
| + | |
− | | + | |
− | Вот, что получилось в конечном итоге:
| + | |
− | | + | |
− | [[Изображение:500px-AK101 icon.jpg]]
| + | |
− | | + | |
− | ==Конфиги==
| + | |
− | | + | |
− | Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Создадим '''АК101''' на базе конфигов '''АК74'''.
| + | |
− | | + | |
− | ===Свойства оружия===
| + | |
− | | + | |
− | Скопируем файл из папки:
| + | |
− | | + | |
− | '''gamedata\config\weapons\ak74.ltx'''
| + | |
− | | + | |
− | Назовем его '''ak101.ltx'''.
| + | |
− | | + | |
− | | + | |
− | Отредактируем свойства по своему усмотрению (но лучше - в соответствии с достоверной информацией о характеристиках оружия, т.к. '''АК101''' - всё-таки оружие реально существующее). Редактирование конфигов оружия подробно описано в отдельном [[Редактирование оружия|уроке]]. В данном случае конфиг был составлен таким образом:
| + | |
− | | + | |
− | <ini>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| + | |
− | [wpn_ak101]:identity_immunities
| + | |
− | GroupControlSection = spawn_group
| + | |
− | discovery_dependency =
| + | |
− | $spawn = "weapons\ak-101" ; name and section in level editor
| + | |
− | $npc = on
| + | |
− | $prefetch = 8
| + | |
− | scheduled = off ;[] option for ALife Simulator
| + | |
− | cform = skeleton
| + | |
− | class = WP_AK74 ; class of the weapon that corresponding to CPP class
| + | |
− | min_radius = 30 ; [] for AI
| + | |
− | max_radius = 100 ; [] for AI
| + | |
− | description = enc_weapons1_wpn-ak101
| + | |
− |
| + | |
− | ef_main_weapon_type = 2
| + | |
− | ef_weapon_type = 6
| + | |
− | | + | |
− | ;-----------------------------------------------------------------------------------
| + | |
− | holder_range_modifier = 1.0 ; во сколько раз увеличивается eye_range
| + | |
− | holder_fov_modifier = 0.7 ; во сколько раз увеличивается eye_fov
| + | |
− | ;-----------------------------------------------------------------------------------
| + | |
− | | + | |
− | cost = 2;4000
| + | |
− | weapon_class = assault_rifle
| + | |
− |
| + | |
− | ammo_limit = 210
| + | |
− | ammo_elapsed = 30
| + | |
− |
| + | |
− | ammo_mag_size = 30
| + | |
− | fire_modes = 1, -1
| + | |
− | | + | |
− | ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap
| + | |
− | grenade_class = ammo_vog-25, ammo_vog-25p
| + | |
− | launch_speed = 0
| + | |
− | | + | |
− | hand_dependence = 1
| + | |
− | single_handed = 0
| + | |
− |
| + | |
− | slot = 2
| + | |
− | animation_slot = 2
| + | |
− | inv_name = wpn-ak101
| + | |
− | inv_name_short = wpn-ak101
| + | |
− | inv_weight = 3.3
| + | |
− | | + | |
− | inv_grid_width = 5
| + | |
− | inv_grid_height = 2
| + | |
− | inv_grid_x = 11
| + | |
− | inv_grid_y = 29
| + | |
− | | + | |
− | kill_msg_x = 0
| + | |
− | kill_msg_y = 28
| + | |
− | kill_msg_width = 84
| + | |
− | kill_msg_height = 28
| + | |
− | | + | |
− | | + | |
− | ;-----------------------------------------------------------------------------------
| + | |
− | ;params of weapon recoil
| + | |
− | | + | |
− | fire_dispersion_base = 0.15;0.2
| + | |
− | control_inertion_factor = 1.1f;1.25f
| + | |
− | | + | |
− | ;отдача
| + | |
− | cam_relax_speed =6;5;3.5; 0.15
| + | |
− | cam_dispersion = 0.1;0.15
| + | |
− | cam_dispersion_inc = 0.2;0.3
| + | |
− | cam_dispertion_frac = 0.8;0.9
| + | |
− | cam_max_angle = 10.0
| + | |
− | cam_max_angle_horz = 20.0
| + | |
− | cam_step_angle_horz = 1.1;1
| + | |
− | | + | |
− | fire_dispersion_condition_factor = 5.7;5
| + | |
− | misfire_probability = 0.0055;0.003
| + | |
− | misfire_condition_k = 0.06;0.05
| + | |
− | condition_shot_dec = 0.00035;0.0001
| + | |
− | ;-----------------------------------------------------------------------------------
| + | |
− | | + | |
− | fire_point = 0,0.216,0.638
| + | |
− | fire_point2 = 0,0.216,0.730
| + | |
− | | + | |
− | flame_particles = weapons\generic_weapon05
| + | |
− | smoke_particles = weapons\generic_shoot_00
| + | |
− | grenade_flame_particles = weapons\generic_weapon01
| + | |
− |
| + | |
− | shell_point = 0,0.216,0.174
| + | |
− | shell_particles = weapons\generic_shells
| + | |
− | | + | |
− | PDM_disp_base = 1.0
| + | |
− | PDM_disp_vel_factor = 1.3
| + | |
− | PDM_disp_accel_factor = 1.3
| + | |
− | PDM_crouch = 1.0
| + | |
− | PDM_crouch_no_acc = 1.0
| + | |
− | | + | |
− | ; ttc
| + | |
− | hit_power = 0.36, 0.4, 0.43, 0.46
| + | |
− | hit_impulse = 140
| + | |
− | hit_type = fire_wound
| + | |
− | fire_distance = 1700
| + | |
− | bullet_speed = 1000
| + | |
− | rpm = 750
| + | |
− | | + | |
− | use_aim_bullet = true
| + | |
− | time_to_aim = 1.0
| + | |
− | | + | |
− | ;params when silencer is attached
| + | |
− | ;similar to corresponding params without prefix silencer_
| + | |
− | | + | |
− | silencer_hit_power = 0.38
| + | |
− | silencer_hit_impulse = 120
| + | |
− | silencer_fire_distance = 250
| + | |
− | silencer_bullet_speed = 600
| + | |
− | | + | |
− | hud = wpn_ak101_hud
| + | |
− | | + | |
− | position = -0.026,-0.172,0
| + | |
− | orientation = 0,0,0
| + | |
− | | + | |
− | ;--STRAP PARAMETERS-----------------------------------------------------------------
| + | |
− | strap_position = -0.16,-0.40,0.15
| + | |
− | strap_orientation = -10,-5,10
| + | |
− | strap_bone0 = bip01_spine2
| + | |
− | strap_bone1 = bip01_spine1
| + | |
− | | + | |
− | visual = weapons\ak-101\wpn_ak101
| + | |
− | | + | |
− | light_color = 0.6,0.5,0.3
| + | |
− | light_range = 5
| + | |
− | light_var_color = 0.05
| + | |
− | light_var_range = 0.5
| + | |
− | light_time = 0.2
| + | |
− | | + | |
− | ph_mass = 5
| + | |
− | | + | |
− | ;addons
| + | |
− | scope_status = 2
| + | |
− | silencer_status = 2
| + | |
− | grenade_launcher_status = 0;2
| + | |
− | | + | |
− | zoom_enabled = true
| + | |
− | scope_zoom_factor = 50
| + | |
− | | + | |
− | scope_name = wpn_addon_scope
| + | |
− | scope_x = 42
| + | |
− | scope_y = 3
| + | |
− | silencer_name = wpn_addon_silencer
| + | |
− | silencer_x = 218
| + | |
− | silencer_y = 13
| + | |
− | grenade_launcher_name = wpn_addon_grenade_launcher
| + | |
− | grenade_launcher_x = 116
| + | |
− | grenade_launcher_y = 23
| + | |
− | | + | |
− | ;sounds (name of the sound, volume (0.0 - 1.0), delay (sec))
| + | |
− | snd_draw = weapons\ak74_draw
| + | |
− | snd_holster = weapons\generic_holster
| + | |
− | snd_shoot = weapons\ak74_shot_0
| + | |
− | snd_shoot1 = weapons\ak74_shot_1
| + | |
− | snd_shoot2 = weapons\ak74_shot_2
| + | |
− | snd_shoot3 = weapons\ak74_shot_3
| + | |
− | snd_empty = weapons\gen_empty, 0.5
| + | |
− | snd_reload = weapons\ak74_reload, 0.7, 0.35
| + | |
− | snd_shoot_grenade = weapons\gen_grenshoot
| + | |
− | snd_reload_grenade = weapons\gen_grenload, 1.0, 0.8
| + | |
− | snd_switch = weapons\groza_switch, 1.0, 0.5
| + | |
− | | + | |
− | | + | |
− | ;params when silencer is attached
| + | |
− | ;similar to corresponding params without prefix silencer_
| + | |
− | | + | |
− | ;silencer_flame_particles = weapons\generic_weapon01
| + | |
− | silencer_smoke_particles = weapons\generic_shoot_00
| + | |
− | | + | |
− | snd_silncer_shot = weapons\w_ak74_shot1
| + | |
− | | + | |
− | silencer_light_color = 0.6,0.5,0.3
| + | |
− | silencer_light_range = 0.01
| + | |
− | silencer_light_var_color = 0.05
| + | |
− | silencer_light_var_range = 0.5
| + | |
− | silencer_light_time = 0.2
| + | |
− | | + | |
− | | + | |
− | ;-----------------------------------------------------------------------------
| + | |
− | ;-- HUD DESCRIPTION
| + | |
− | ;-----------------------------------------------------------------------------
| + | |
| | | |
− | [wpn_ak101_hud]
| + | Без вложений, на системе автоматического приёма и обработки заказов. |
− | allow_inertion = true
| + | |
− | | + | Более подробная информация на нашем сайте. ( obrabotka.zarplatt.ru ) |
− | ;similar to corresponding params in weapon section but for 1st person view
| + | |
− | | + | |
− | shell_point = -0.065000,0.000000,-0.045000
| + | |
− | shell_dir = 0.0, 1.0, 0.0
| + | |
− | | + | |
− | fire_point = 0.09,0.020,-0.06
| + | |
− | fire_point2 = 0.30, 0.00, 0.05
| + | |
− | fire_bone = wpn_body
| + | |
− | | + | |
− | orientation = 0, 0, 0
| + | |
− | position = 0, 0, 0.05
| + | |
− | visual = weapons\ak-101\wpn_ak101_hud
| + | |
− | | + | |
− | grenade_bone = wpn_grenade
| + | |
− | | + | |
− | ; animation names
| + | |
− | | + | |
− | anim_idle = idle
| + | |
− | anim_idle_aim = idle_aim
| + | |
− | anim_reload = reload
| + | |
− | anim_draw = draw_wo_gl
| + | |
− | anim_holster = holster_wo_gl
| + | |
− | anim_shoot = shoot
| + | |
− |
| + | |
− | ; animation names
| + | |
− | ; attached grenade launcher [GRENADE fire mode]
| + | |
− | anim_idle_g = idle_grenade
| + | |
− | anim_idle_g_aim = idle_g_aim
| + | |
− | anim_reload_g = reload_grenade
| + | |
− | anim_shoot_g = shoot_grenade
| + | |
− | anim_switch_grenade_on = switch_grenade
| + | |
− | anim_switch_grenade_off = switch_grenade_off
| + | |
− | anim_draw_g = draw_grenade_mode
| + | |
− | anim_holster_g = holster_grenade_mode
| + | |
− | | + | |
− | ; attached grenade launcher [NORMAL fire mode]
| + | |
− | anim_idle_gl = idle_w_gl
| + | |
− | anim_idle_gl_aim = idle_w_gl_aim
| + | |
− | anim_reload_gl = reload_w_gl
| + | |
− | anim_draw_gl = draw_w_gl
| + | |
− | anim_holster_gl = holster_w_gl
| + | |
− | anim_shoot_gl = shoot_w_gl
| + | |
− | anim_idle_sprint = idle_sprint
| + | |
− | | + | |
− | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
| + | |
− | ;HUD offset in zoom mode (to all)
| + | |
− | ;(use CONSOLE: hud_adjust_mode 0,1,2, then keys WSADQE and P to show current value in console)
| + | |
− | | + | |
− | zoom_offset = -0.112400,0.016800,-0.115000
| + | |
− | zoom_rotate_x = 0.000200
| + | |
− | zoom_rotate_y = 0.017500
| + | |
− | | + | |
− | zoom_hide_crosshair = true
| + | |
− | | + | |
− | | + | |
− | ; same as above, but for attached grenade launcher for
| + | |
− | ; in NORMAL shoot mode
| + | |
− | | + | |
− | grenade_normal_zoom_offset = -0.112500,0.014000,0.000000
| + | |
− | grenade_normal_zoom_rotate_x = -0.000900
| + | |
− | grenade_normal_zoom_rotate_y = 0.017200
| + | |
− | | + | |
− | ; same as above, but for attached grenade launcher for
| + | |
− | ; in GRENADE mode
| + | |
− | | + | |
− | grenade_zoom_offset = -0.039600,-0.433100,0.000000
| + | |
− | grenade_zoom_rotate_x = -0.538700
| + | |
− | grenade_zoom_rotate_y = -0.033800</ini>
| + | |
− | | + | |
− | ===Регистрация===
| + | |
− | | + | |
− | Итак, с характеристиками разобрались. Теперь зарегистрируем оружие в файле '''weapons.ltx'''. Для этого пропишем в него строку следующего вида:
| + | |
− | | + | |
− | <pre>#include "w_ak101.ltx"</pre>
| + | |
− | | + | |
− | Также, необходимо прописать модели, используемые для отображения оружия, в '''prefetch.ltx''':
| + | |
− | | + | |
− | <ini>[...]
| + | |
− | weapons\abakan\wpn_abakan
| + | |
− | weapons\abakan\wpn_abakan_hud
| + | |
− | weapons\ak-101\wpn_ak101
| + | |
− | weapons\ak-101\wpn_ak101_hud
| + | |
− | weapons\ak74\wpn_ak74
| + | |
− | weapons\ak74\wpn_ak74_hud
| + | |
− | [...]</ini>
| + | |
− | | + | |
− | Так же не забудте в файле '''mp_ranks.ltx''' прописать после '''available_items''' (которое внизу)
| + | |
− | прописать название своего оружия. Это предотвратит вылет при убийстве ГГ а также вылет при выкидывании оружия из инвентаря.
| + | |
− | | + | |
− | ==Добавление в игру==
| + | |
− | | + | |
− | Осталось добавить оружие в игру.
| + | |
− | | + | |
− | Выдайте его некоторым NPC ([[Редактирование NPC#Практика|как это сделать?]]), расширьте ассортимент торговцев ([[Редактирование торговцев#Расширяем ассортимент|как это сделать?]]).
| + | |
− | | + | |
− | А вот как оно будет выглядеть в игре:
| + | |
− | | + | |
− | [[Изображение:Russian_Guns_3.jpeg]]
| + | |
− | | + | |
− | P.S. При создании нового оружия можно допустить некоторые ошибки в конфиге, что приведёт к вылету игры.
| + | |
− | При таком случае сразу после вылета игры заходим в любой текстовый редактор и нажимаем клавиши Ctrl+V (вставить) и внизу можно увидеть из-за какой ошибки вылетела игра, а там уже дело техники исправить ошибку...
| + | |
− | | + | |
− | | + | |
− | <code>Expression : fatal error
| + | |
− | Function : CModelPool::Instance_Load
| + | |
− | File : E:\stalker\patch_1_0004\xr_3da\xrRender\ModelPool.cpp
| + | |
− | Line : 111
| + | |
− | Description : <no expression>
| + | |
− | Arguments : Can't find model file 'weapons\gaussmod\wpn_gauss_hud.ogf'.</code>
| + | |
− | | + | |
− | В данном примере видно, что либо вы не создали папку с необходимой моделью оружия, либо неправильно прописан путь к нужному файлу...
| + | |
− | | + | |
− | (Чтобы в игре название и описание оружия были не от АК-74 а от нашей АК-101 делаем как написано в этой [http://stalkerin.gameru.net/wiki/index.php/%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2 статье], всё начиная с "''И description = enc_equipment_food_bread1 на description = enc_equipment_food_bread1_test''" вам понадобится.)
| + | |
− | Информацию о оружии можно найти [http://world.guns.ru здесь.]
| + | |
− | | + | |
− | '''АК-101''' - ''Автомат Калашникова АК-101 является экспортной модификацией штатного автомата Российской армии АК-74М. Главным (и фактически единственным) отличием АК-101 от АК-74М является калибр - автомат "сотой" серии использует патроны калибра 5.56мм (5.56х45 НАТО) и соответствующие магазины, в остальном автоматы идентичны.''
| + | |
− | | + | |
− | ==Авторы==
| + | |
− | | + | |
− | Статья создана:
| + | |
− | *[[Участник:BAC9-FLCL|BAC9-FLCL]]
| + | |
− | | + | |
− | Статья подправлена:
| + | |
− | *[[Участник:Хемуль04|Хемуль04]]
| + | |
− | | + | |
− | По материалам мода [[Mod:Russian Guns|Russian Guns]] за авторством:
| + | |
− | *[[Участник:Tony|Tony]]
| + | |
− | *[[Участник:lez0|lez0]]
| + | |
− | | + | |
− | [[Категория:Конфигурационные_файлы]]
| + | |
− | | + | |
− | Когда будете прописыватьв конфиге значения "inv_grid_y" и "inv_grid_x" имейте в виду, что отсчет по сетке идет с верхнего левого угла и указывать нужно верхний левый угол картинки, которая должна отображатся в инвентаре. То есть координаты самого первого угла будут 0;0. Самая первая винтовка в файле ...\S.T.A.L.K.E.R\gamedata\textures\ui\ui_icon_equipment.dds это - СВД. И если вы посмотрите ее конфигурационный файл то увидете, что там указаны значения inv_grid_x = 0 inv_grid_y = 0. Отсчет по оси X идет по горизонтали с лева на право, а по оси Y - сверху вниз по возрастающей. Но считать с начала сетки - очень не удобно, поэтому вычисляйте координаты вашего обьекта по известным координатам уже существующего и реально правильно отображаемого файла в игре. Например мы имеем inv_grid_x= 5 inv_grid_y= 9 для fn2000(координаты верхнего левого угла) и мы хотим узнать координаты гранатф ф1, которая находится рядом. Для этого удобно использовать фотошоп с сеткой 50 на 50 пикселей. (как ее сделать описано по ссылке в статье к которой написана эта поправка.) И так мы видим что граната находится сразу справа порсле винтовки. То есть на 4-й клетке после квадрата угла винтовки без его учета. Она находится спраа, а значит нужно по оси X к 5 прибавить 4, и получится 9. По оси Y координтаы не изменились так как они находятся на одной линии с винтовкой. Таким образом получает коордитаны гранаты 9 по Х и 9 по Y. Если мы посмотрим конфиг гранаты то увидим там "inv_grid_x= 9" "inv_grid_y= 9". То что и соответствует тому, что мы высчитали. :) Удачи.
| + | |
Требуются рабочие. Обработка зказов на дому.
Без вложений, на системе автоматического приёма и обработки заказов.
Более подробная информация на нашем сайте. ( obrabotka.zarplatt.ru )