• Страница 1 из 2
  • 1
  • 2
  • »
Создание нового оружия
Дата: Вторник (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". То что и соответствует тому, что мы высчитали. smile Удачи.


Сообщение отредактировал Nik-1 - Вторник, 11.09.2012, 14:00
| Страна: RU
Дата: Среда (12.09.2012) | Время: 05:45 | Сообщение № 2
Сержант



Сообщений: 33
Награды: 1
Репутация:
Статус:

а если я хочу создать новое оружие на подобия гаусс плазмамёт и чтобы оно было у гг в самом начале что для этого нужно сделать?

| Страна: RU
Дата: Среда (12.09.2012) | Время: 06:00 | Сообщение № 3
Майор



Сообщений: 319
Награды: 9
Репутация:
Статус:

Дягтерёв,Ну это из зоны паражения надо брать скрипт
| Страна: RU
Дата: Среда (12.09.2012) | Время: 08:00 | Сообщение № 4
Сержант



Сообщений: 33
Награды: 1
Репутация:
Статус:

а как создать новый костюм в зов Припяти?

| Страна: RU
Дата: Среда (12.09.2012) | Время: 08:14 | Сообщение № 5
Майор



Сообщений: 319
Награды: 9
Репутация:
Статус:

Дягтерёв,На счет брони пиши в нужную тему!!!
| Страна: RU
Дата: Среда (12.09.2012) | Время: 10:45 | Сообщение № 6
Сержант



Сообщений: 33
Награды: 1
Репутация:
Статус:

СОРИ

| Страна: 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
Дата: Воскресенье (27.03.2016) | Время: 00:54 | Сообщение № 10
Рядовой



Сообщений: 2
Награды: 0
Репутация:
Статус:

Ну допустим сделал. Но как иконку для неё запилить? Плевать какую, любую, хоть хлеб. Буду стрелять хлебом biggrin
| Страна: BY
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: