Создание нового оружия — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Создание нового оружия — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Внешний вид)
(Конфиги)
Строка 5: Строка 5:
 
27GKfK  <a href="http://ohbnugpimeva.com/">ohbnugpimeva</a>, [url=http://ptnwgodnxkij.com/]ptnwgodnxkij[/url], [link=http://kdtsmgqupynh.com/]kdtsmgqupynh[/link], http://kjwybadcqrlq.com/
 
27GKfK  <a href="http://ohbnugpimeva.com/">ohbnugpimeva</a>, [url=http://ptnwgodnxkij.com/]ptnwgodnxkij[/url], [link=http://kdtsmgqupynh.com/]kdtsmgqupynh[/link], http://kjwybadcqrlq.com/
  
==Конфиги==
+
comment4,
 
+
Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Создадим '''АК101''' на базе конфигов '''АК74'''.
+
 
+
===Свойства оружия===
+
 
+
Скопируем файл из папки:
+
 
+
'''gamedata\config\weapons\ak74.ltx'''
+
 
+
Назовем его '''ak101.ltx'''.
+
 
+
 
+
Отредактируем свойства по своему усмотрению (но лучше - в соответствии с достоверной информацией о характеристиках оружия, т.к. '''АК101''' - всё-таки оружие реально существующее). Редактирование конфигов оружия подробно описано в отдельном [[Редактирование оружия|уроке]]. В данном случае конфиг был составлен таким образом:
+
 
+
<pre>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
[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
+
 
+
;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</pre>
+
 
+
===Регистрация===
+
 
+
Итак, с характеристиками разобрались. Теперь зарегистрируем оружие в файле '''weapons.ltx'''. Для этого пропишем в него строку следующего вида:
+
 
+
<pre>#include "w_ak101.ltx"</pre>
+
 
+
Также, необходимо прописать модели, используемые для отображения оружия, в '''prefetch.ltx''':
+
 
+
<pre>[...]
+
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
+
[...]</pre>
+
 
+
Так же не забудте в файле '''mp_ranks.ltx''' прописать после '''available_items''' (которое внизу)
+
прописать название своего оружия. Это предотвратит вылет при убийстве ГГ а также вылет при выкидывании оружия из инвентаря.
+
  
 
==Добавление в игру==
 
==Добавление в игру==

Версия 10:44, 20 мая 2011

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

Добавим в игру АК101.

27GKfK <a href="http://ohbnugpimeva.com/">ohbnugpimeva</a>, [url=http://ptnwgodnxkij.com/]ptnwgodnxkij[/url], [link=http://kdtsmgqupynh.com/]kdtsmgqupynh[/link], http://kjwybadcqrlq.com/

comment4,

Добавление в игру

Осталось добавить оружие в игру.

Выдайте его некоторым NPC (как это сделать?), расширьте ассортимент торговцев (как это сделать?).

А вот как оно будет выглядеть в игре:

Russian Guns 3.jpeg

P.S. При создании нового оружия можно допустить некоторые ошибки в конфиге, что приведёт к вылету игры. При таком случае сразу после вылета игры заходим в любой текстовый редактор и нажимаем клавиши Ctrl+V (вставить) и внизу можно увидеть из-за какой ошибки вылетела игра, а там уже дело техники исправить ошибку...


«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'.»

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

(Чтобы в игре название и описание оружия были не от АК-74 а от нашей АК-101 делаем как написано в этой статье, всё начиная с "И description = enc_equipment_food_bread1 на description = enc_equipment_food_bread1_test" вам понадобится.) Информацию о оружии можно найти здесь.

АК-101 - Автомат Калашникова АК-101 является экспортной модификацией штатного автомата Российской армии АК-74М. Главным (и фактически единственным) отличием АК-101 от АК-74М является калибр - автомат "сотой" серии использует патроны калибра 5.56мм (5.56х45 НАТО) и соответствующие магазины, в остальном автоматы идентичны.

Авторы

Статья создана:

Статья подправлена:

По материалам мода Russian Guns за авторством:

Когда будете прописыватьв конфиге значения "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". То что и соответствует тому, что мы высчитали. :) Удачи.

Другие места
LANGUAGE