|
Дата: Вторник (11.09.2012) | Время: 14:00 | Сообщение № 1
|
Майор
Сообщений: 319
Награды: 9
Репутация:
Статус:
|
|
Создание нового оружия
В этой теме мы научимся создавать новые образцы вооружения. Для начала, мы будем использовать модели из оригинальной игры. Если вы хотите создать оружие, имеющее уникальный внешний вид, ознакомьтесь с уроком по созданию моделей.
Добавим в игру АК101.
Содержание:
1 Внешний вид 1.1 Текстуры 1.2 Модели 1.3 Иконки 2 Конфиги 2.1 Свойства оружия 2.2 Регистрация 3 Добавление в игру 4 Авторы
Внешний вид
Позаботимся о том, чтобы наше оружие отличалось внешне от того же АК74.
Текстуры
Нарисуем для оружия новую текстуру. Подробно останавливаться на этом процессе не буду, ознакомьтесь с примером, приведенным здесь. Итак, основываясь на текстуре АК74, мы сделали вот такую текстуру:
Файлы текстур мы назвали: wpn_ak10.dds wpn_ak10_bump#.dds wpn_ak10_bump.dds
Модели
Новых моделей мы пока делать не станем, просто воспользуемся дублированными моделями от АК74. Скопируем папку: gamedata\meshes\weapons\ak47\ И назовем её ak-101. Содержимое, соответственно, переименуем в: wpn_ak101.ogf wpn_ak101_hud.ogf.
Теперь пропишем в эти модели созданные нами текстуры. Способ описан здесь.
Конфиги
Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Создадим АК101 на базе конфигов АК74.
Свойства оружия
Скопируем файл из папки:
gamedata\config\weapons\ak74.ltx
Назовем его ak101.ltx.
Отредактируем свойства по своему усмотрению (но лучше - в соответствии с достоверной информацией о характеристиках оружия, т.к. АК101 - всё-таки оружие реально существующее). Редактирование конфигов оружия подробно описано здесь. В данном случае конфиг был составлен таким образом:
Код ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [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
Регистрация
Итак, с характеристиками разобрались. Теперь зарегистрируем оружие в файле weapons.ltx. Для этого пропишем в него строку следующего вида: #include "w_ak101.ltx"
Также, необходимо прописать модели, используемые для отображения оружия, в prefetch.ltx: [...] 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 [...]
Так же не забудте в файле mp_ranks.ltx прописать после available_items (которое внизу) прописать название своего оружия. Это предотвратит вылет при убийстве ГГ.
Добавление в игру
Осталось добавить оружие в игру. Выдайте его некоторым NPC, расширьте ассортимент торговцев.
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 :
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 НАТО) и соответствующие магазины, в остальном автоматы идентичны.
Авторы
Статья создана: BAC9-FLCL
Статья подправлена: Хемуль и PHOENiX
По материалам мода Russian Guns за авторством: Tony lez0
P.P.S. Когда будете прописыватьв конфиге значения "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". То что и соответствует тому, что мы высчитали. Удачи.
Сообщение отредактировал Nik-1 - Вторник, 11.09.2012, 14:00 |
| Страна: RU
|
|
|
|
|
Дата: Среда (12.09.2012) | Время: 06:00 | Сообщение № 3
|
Майор
Сообщений: 319
Награды: 9
Репутация:
Статус:
|
|
Дягтерёв,Ну это из зоны паражения надо брать скрипт
|
| Страна: RU
|
|
|
|
|
Дата: Среда (12.09.2012) | Время: 08:14 | Сообщение № 5
|
Майор
Сообщений: 319
Награды: 9
Репутация:
Статус:
|
|
Дягтерёв,На счет брони пиши в нужную тему!!!
|
| Страна: RU
|
|
|
|
|
Дата: Понедельник (27.01.2014) | Время: 16:36 | Сообщение № 7
|
Рядовой
Сообщений: 5
Награды: 0
Репутация:
Статус:
|
|
Насчет гауссплазмомёта. Это можно скопировать файлы с гауссом и переправить конфиги, главное, чтобы получилось врезать в него автоогонь ( строка fire_modes =1 изменяем так: fire_modes =1, -1 -1 означает режим автоматического огня )
|
| Страна: RU
|
|
|
|
Дата: Четверг (05.03.2015) | Время: 23:36 | Сообщение № 8
|
Рядовой
Сообщений: 1
Награды: 0
Репутация:
Статус:
|
|
как иконку добавить для оружия
|
| Страна: RU
|
|
|
|
Дата: Вторник (27.10.2015) | Время: 00:36 | Сообщение № 9
|
Рядовой
Сообщений: 4
Награды: 0
Репутация:
Статус:
|
|
Доброго времени суток. Я добавил новое оружие. Подскажите пожалуйста, как теперь сделать, что-бы его можно было улучшать у техника? Ремонтировать техник (механик) его может. Но апгрейды не видит.
Сообщение отредактировал GRELIKYIKON - Вторник, 27.10.2015, 21:05 |
| Страна: RU
|
|
|
|