Перейти к контенту
Zeka1996Korneev

Уроки по модостроению

Рекомендуемые сообщения

Просьба к куратору темы заменить в этом посте ссылку на энциклопедию.

Вот: https://yadi.sk/d/OzLu-NeoeAFaY

Добавлено  Murarius,

Готово.

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

Ссылка на комментарий

Товарищи - скриптеры, помогите разобраться со скриптом.

В проблема с одним из примеров от @amik,

Скрытый текст

local obj = alife():story_object( 6 ) -- 6 - сид Волка

local obj_id = obj.id

function add_spot_on_map(obj_id,type,text)

    if obj_id then        

       if not text then text = "no_text" end

        level.map_add_object_spot_ser(obj_id, type, text)

    end

end

Вызываем:

function add_spot_on_map2(obj_id,type,text)    

 имя_файла.add_spot_on_map(obj.id,"green_location","Текст")

end

Метку можно убрать вот так:

local obj = alife():story_object( 6 )

local obj_id = obj.id

function remove_spot_from_map(obj_id,type)

    if obj_id and level.map_has_object_spot(obj_id, type) ~= 0 then        

       level.map_remove_object_spot(obj_id, type)

    end

end

эту вызывать:

function remove_spot()    

 this.remove_spot_from_map(obj.id,"green_location")

end

Во первых в функциях вызова допущена ошибочка - аргумент obj.id точку нужно заменить на видимый пробел, иначе будет вылет с руганью на index global 'obj'.

Во вторых, скрипт работает но метку вешает по чему-то на гг, а не на того на кого хочу повесить - на Толика, в чём причина?

Рассматриваю код уже пол часа и не понимаю в чём причина, функции простые как автомат Калашникова, всё вроде правильно...:unknw::kez_12:

Изменено пользователем UriZzz

Моя нычка номер 1, Нычка номер 2

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

@UriZzz, вот так попробуй

 

function add_spot()
  local sid = 6
  local obj = alife():story_object(sid)
  if obj then
    level.map_add_object_spot_ser(obj.id, "blue_location", obj:name())
  else
    get_console():execute("load ~~~ object with story_id "..tostring(sid).."not found")
  end
end
--------------------
function remove_spot()
  local sid = 6
  local obj = alife():story_object(sid)
  if obj then
    level.map_remove_object_spot(obj.id, "blue_location")
  else
    get_console():execute("load ~~~ object with story_id "..tostring(sid).."not found")
  end
 end

Вместо sid пишешь нужный story_id.

Изменено пользователем naxac
  • Спасибо 1
  • Нравится 1
  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Всем привет, помогите плиз разобраться с скриптом. Это фрагмент из скрипта мода Сталкер Аномалия 1.5 (3.0) на верстак с апгрейдом\ремонтом снаряжения.

Хотел убрать взаимоисключение апгрейдов. Я в скриптах не силен, но кое что накопал, если не ошибаюсь, то это этот фрагмент:

Скрытый текст

    local function check_same_group(gr,idx)
        local tbl = {
            [1] = 2,
            [2] = 1,
            [3] = 4,
            [4] = 3,
            [5] = 6,
            [6] = 5,
        }
        local oth = tbl[idx]
        local sec = self.upgr[gr][oth] and self.upgr[gr][oth].section 
        return not (sec and self.inst_upgr[sec])
    end
    
    local function check_upgr_scheme(gr,idx)
        local tbl = {
            [3] = {1,2},
            [4] = {1,2},
            [5] = {3,4},
            [6] = {3,4},
        }
        local pre = tbl[idx]
        if (not pre) then return true end
        
        local sec_i = self.upgr[gr][pre[1]] and self.upgr[gr][pre[1]].section
        local sec_j = self.upgr[gr][pre[2]] and self.upgr[gr][pre[2]].section
        
        return (sec_i and self.inst_upgr[sec_i]) or (sec_j and self.inst_upgr[sec_j]) or false
    end
    
    local function check_con(con, col)
        local tbl = {
            [1] = 30,
            [2] = 60,
            [3] = 90,
        }
        return tbl[col] < con
    end

 

Изменено пользователем Дмитрий Михалик
Ссылка на комментарий
Spoiler

Этот код:


-- проверяндус есть ли у нас жертва обстоятельств
	if victim ~= nil then

		local whocls = get_clsid(who)

		monster_classes = {
			[clsid.bloodsucker_s] 			= "неудачно подошёл к кровососу",
			[clsid.boar_s] 					= "неудачная охота на кабана",
			[clsid.dog_s] 					= "загрызён собакой",
			[clsid.flesh_s] 				= "неудачная охота на плоть",
			[clsid.pseudodog_s] 			= "загрызён псевдособакой",
			[clsid.burer_s] 				= "нарвался на бюрера",
			[clsid.cat_s] 					= "кошка перебежала дорогу",
			[clsid.chimera_s] 				= "нарвался на химеру",
			[clsid.controller_s] 			= "стал зомби и умер",
			[clsid.poltergeist_s] 			= "полтергейст",
			[clsid.gigant_s] 				= "растоптал псевдогигант",
			[clsid.zombie_s] 				= "попрощался с мозгами",
			[clsid.snork_s] 				= "неудачно нашёл снорка",
			[clsid.tushkano_s] 				= "умер от стаи тушканов",
			[clsid.psy_dog_s] 				= "загрызён пси собакой",
			[clsid.psy_dog_phantom_s] 		= "загрызён пси собакой"
		}

		local death_komment = {
	        "Ещё один...",
	        "Мдя, ни дня без этого.",
	        "Одним больше, одним меньше...",
	        "Все там будем",
	        "Помянуть надо бы...",
	        "Зона тебе пухом.",
			"Был пацан, не стало пацана"
	    }

	    --
	    --
		-- victim_name - имя жертвы
		-- killer_name - имя убивайца
		-- killer_comm - групировка убивайца
		-- victim_comm - групировка жертвы
		--
		--

	 	local m_game_vertex = who:game_vertex_id()
		local lvert = game_graph():vertex(m_game_vertex)
		local lid = lvert:level_id()
		local mlevel = alife():level_name(lid)
		local m_s_level = mlevel
		local victim_name  = victim:character_name()
		local killer_name  = who:character_name()
		local victim_comm = victim:character_community()
		local killer_comm = nil
		if IsStalker(who) then
			if killer_name == victim_name then
				killer_name = "аномалия"
				killer_comm = "monster"
			else
				killer_comm = who:character_community()
				-- Чтобы показывать имя, кто убил удали строку ниже
				killer_name = "пулевое ранение"
			end
		else
			killer_comm = "monster"
			if whocls ~= nil then
				killer_name = monster_classes[whocls]
			end
		end
		 
		if killer_comm ~= nil then
			if killer_name == nil then
				-- это если имя убийцы неизвестно или мутантик какой неизвестен
				killer_name = "%c[230,255,0,0][DATA DELETED]"
			end
		    local m_text_kill_string="Умер сталкер "..victim_name.."\\nЛокация: "..game.translate_string(m_s_level).."\\nПричина смерти: "..killer_name
			local news_text = "%c[230,255,128,64]"..m_text_kill_string
			local news_caption = game.translate_string("DeadMans")
		    local texture = "ui_iconsTotal_weapons"
		 	local shans = math.random(1,100)
		    db.actor:give_game_news(news_caption, news_text, texture, 2*1000, 2*1000)
			if shans > 70 then
				local dead_news = death_komment[math.random(table.getn(death_komment))]
	 	    	db.actor:give_game_news(game.translate_string("Анонимное сообщение"), dead_news, "ui_iconsTotal_grouping", 5*1000, 5*1000)
	 		end
		end
	end

вставляем в файл gamedata\scripts\xr_motivator.script после строки function motivator_binder:death_callback(victim, who)

 

 

Ссылка на комментарий

Всем привет! Возможно банальный вопрос. Добавил несколько стволов в ЗП. Создал не отдельно .ltx файлы, а дописал в gamedata\configs\weapons\w_ak74.ltx
Вот полный текст файла:
 

Скрытый текст

[wpn_ak74]:identity_immunities,weapon_probability,default_weapon_params
GroupControlSection     = spawn_group
$spawn                      = "weapons\ak-74"        ; 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
description          = st_wpn_ak74_descr

ef_main_weapon_type     = 2
ef_weapon_type          = 8

default_to_ruck         = false
sprint_allowed          = true

;-------------------------------------------------------------------------------
cost                   = 4000            ; the price of the item
weapon_class         = assault_rifle      ; the type of the box that will be used in buy-menu in multiplayer mode
inv_weight        = 3.3                      ; weight in inventory

upgrades                = up_gr_firstab_ak74, up_gr_seconab_ak74, up_gr_thirdab_ak74, up_gr_fourtab_ak74, up_gr_fifthab_ak74, up_gr_fifthcd_ak74
installed_upgrades      =
upgrade_scheme          = upgrade_scheme_ak74

;-ТТХ---------------------------------------------------------------------------
hit_power            = 0.31, 0.31, 0.31, 0.31
hit_impulse          = 100    ; size of physic impulse by bullet
hit_type             = fire_wound            ; [] type of the wound
fire_distance           = 200 ;1000                  ; maximum fire distance that bullet can fly
bullet_speed            = 550                ; starting bullet speed
rpm                     = 570    ; max round per minute
rpm_empty_click         = 200

;настройки для глушителя
silencer_hit_power      = 0.3, 0.3, 0.3, 0.3
silencer_hit_impulse    = 100
silencer_fire_distance  = 200
silencer_bullet_speed   = 500

use_aim_bullet          = false                ;Поддерживается ли первая суппер пуля
time_to_aim             = 3.0

hud                     = wpn_ak74_hud

misfire_probability        = 0.005 ;вероятность осечки при максимальном износе  !!!old - now not working
;изношенность, при которой появляется шанс осечки
misfire_start_condition        = 0.6
;изношеность при которой шанс осечки становится константным
misfire_end_condition        = 0.1
;шанс осечки при изношености больше чем misfireStartCondition
misfire_start_prob             = 0.003
;шанс осечки при изношености больше чем misfireEndCondition
misfire_end_prob             = 0.043
;увеличение изношености при одиночном выстреле
condition_shot_dec          = 0.0005
;увеличение изношености при выстреле очередью
condition_queue_shot_dec    = 0.00055

ammo_elapsed         = 30           ; obsolete
ammo_mag_size        = 40           ; clip (magazine) size
fire_modes           = 1, -1

ammo_class           = ammo_5.45x39_fmj, ammo_5.45x39_ap  ; name of the ltx-section of used ammo
grenade_class        = ammo_vog-25         ; name of the ltx-section of used grenades

launch_speed            = 0
hand_dependence         = 1
single_handed           = 0

;-Доф----------------------------------------------------------------------
zoom_dof             = 0.5, 1.0, 180
reload_dof           = 0.0, 0.5, 5, 2;1.7

;-Дисперсия----------------------------------------------------------------------
;params of weapon recoil
fire_dispersion_base           = 0.33    ;угол (в градусах) базовой дисперсии оружия (оружия зажатого в тисках)
control_inertion_factor        = 1.2f
crosshair_inertion            = 6

;отдача
cam_return                    = 0
cam_relax_speed             = 10        ;скорость возврата в исходное положение
cam_relax_speed_ai          = 360
cam_dispersion              = 1.0        ;увеличения угла (в градусах) с первым выстрелом
cam_dispersion_inc             = 0.5        ;увеличениe cam_dispersion с каждым выстрелом
cam_dispersion_frac            = 1.0        ;ствол будет подыматься на cam_dispersion*cam_dispersion_frac +- cam_dispersion*(1-cam_dispersion_frac)
cam_max_angle                = 50.0      ;максимальный угол отдачи
cam_max_angle_horz             = 5.0      ;(degree) maximum shot horizontal degree
cam_step_angle_horz            = 0.35        ;(degree) size of step camera moved in horizontal position while shooting

zoom_cam_relax_speed         = 10        ; scope & ironsight
zoom_cam_relax_speed_ai      = 360
zoom_cam_dispersion          = 0.9
zoom_cam_dispersion_inc      = 0.45
zoom_cam_dispersion_frac     = 0.7
zoom_cam_max_angle           = 50.0
zoom_cam_max_angle_horz      = 5.0
zoom_cam_step_angle_horz     = 0.3

PDM_disp_base                 = 0.5
PDM_disp_vel_factor         = 2.0
PDM_disp_accel_factor         = 2.0
PDM_disp_crouch                 = 1.0
PDM_disp_crouch_no_acc         = 1.0

fire_dispersion_condition_factor    = 15         ;увеличение дисперсии в процентах при максимальном износе

;-------------------------------------------------------------------------------
holder_range_modifier   = 1.0                       ; во сколько раз увеличивается eye_range
holder_fov_modifier     = 1.0              ; во сколько раз увеличивается eye_fov

min_radius           = 30           ; [] for AI
max_radius           = 100          ; [] for AI

hit_probability_gd_novice  = 0.80
hit_probability_gd_stalker = 0.80
hit_probability_gd_veteran = 0.80
hit_probability_gd_master  = 0.80

;-------------------------------------------------------------------------------
slot                    = 2                ; // secondary
animation_slot          = 2                ; type of the animation that will be used

position                = -0.026, -0.175, 0.0
orientation             = 0, 0, 0

fire_point              =  0,0.218,0.656        ; position (3rd person view) for particles of fire
fire_point2             =  0,0.161,0.583        ; position (3rd person view) for particles of fire (when shooting with secondary fire)

flame_particles         = weapons\generic_weapon05 ; particles for shooting effects
smoke_particles         = weapons\generic_shoot_00
grenade_flame_particles = weapons\generic_weapon01

shell_point             = 0,0.216,0.174            ; position (3rd person view) for shell to throw out
shell_particles         = weapons\generic_shells   ; name of the particles for shells
shell_particles         = weapons\generic_shells

;-------------------------------------------------------------------------------
inv_name          = st_wpn_ak74                    ; name in inventory
inv_name_short    = st_wpn_ak74

inv_grid_width       = 5    ; position and size of the icon that will be used to display weapon in the inventory menu
inv_grid_height      = 2    ; all icons are on the texture ui_icon_equipment.dds,
inv_grid_x           = 5  ; position and size are in terms of 64x64 squares
inv_grid_y           = 5

upgr_icon_x            = 304
upgr_icon_y            = 627
upgr_icon_width        = 295
upgr_icon_height       = 110

kill_msg_x        = 0
kill_msg_y        = 28
kill_msg_width    = 84
kill_msg_height   = 28

;--STRAP PARAMETERS-----------------------------------------------------------------
;под мишкой
strap_position          = -0.26,-0.11,0.25                                ; position (offset) and orientation of the weapon when it is strapped
strap_orientation       = -15,-9,110                                        ; (3rd person view in degrees)
strap_bone0             = bip01_spine2
strap_bone1             = bip01_spine1

startup_ammo            = 90
visual                  = dynamics\weapons\wpn_ak74\wpn_ak74.ogf

light_disabled                                = false
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                 = 4

;addons
scope_status               = 0                     ; 0 - no addon
silencer_status            = 2                   ; 1 - permanent
grenade_launcher_status    = 2                  ; 2 - attachable

zoom_enabled            = true                                                ; (on,off)zoom mode (right mouse button)
zoom_rotate_time        = 0.25
scope_zoom_factor       = 50                                                ; fov for zoom mode

silencer_name           = wpn_addon_silencer    ; section name for the attachable silencer
silencer_x              = 224                ; offset in inventory icon
silencer_y              = 13
grenade_launcher_name   = wpn_addon_grenade_launcher
grenade_launcher_x      = 126
grenade_launcher_y      = 24
scopes_sect                = scope_ak74, scope_x2.7_ak74, scope_live_detector_ak74, scope_night_ak74

;звуки
snd_draw                = weapons\ak74_draw
snd_holster             = weapons\generic_holster
snd_shoot               = weapons\ak74_shoot2
snd_shoot1               = weapons\ak74_shoot2

snd_empty               = weapons\gen_empty, 0.5
snd_reload              = weapons\groza_reload_2, 0.7
snd_shoot_grenade       = weapons\gen_grenshoot
snd_reload_grenade      = weapons\gen_grenload, 1.0, 0.8
snd_switch              = weapons\groza_switch_2, 1.0, 0.5
snd_bore        = weapons\ak74_bore, 0.7

;silencer_flame_particles  = weapons\generic_weapon01
silencer_smoke_particles   = weapons\generic_shoot_00

snd_silncer_shot        = weapons\ak74_shoot_sil
snd_silncer_shot1        = weapons\ak74_shoot_sil1

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


[wpn_ak74_hud]
zoom_hide_crosshair        = true
attach_place_idx        = 0
item_visual                = dynamics\weapons\wpn_ak74\wpn_ak74_hud.ogf

hands_position                = -0.120500,-0.180999,0.132501
hands_orientation            = -2.599998,0.000000,-2.549999

hands_position_16x9                = -0.119500,-0.199000,0.091000
hands_orientation_16x9            = -0.750000,1.700000,-4.199999

item_position                = 0.004111,0.008527,-0.005906
item_orientation            = -15.488927,-3.320898,367.220154

shell_point                = 0.017,0.054,0.17
shell_dir               = 0.0, 1.0, 0.0
shell_bone                = wpn_body

fire_point            = 0,0.042,0.684
fire_bone                            = wpn_body
fire_point2                        = 0.0,-0.011,0.553
fire_bone2                = wpn_body

anm_show                        = ak74_draw
anm_hide                = ak74_holster
anm_idle                = ak74_idle
anm_idle_sprint         = ak74_idle_sprint
anm_idle_moving         = ak74_idle_moving
anm_shots               = ak74_shoot
anm_reload              = ak74_reload
anm_idle_aim            = ak74_idle_aim

anm_switch              = ak74_switch_off           ;abakan_switch_off
anm_switch_g            = ak74_switch_on           ;abakan_switch_on
anm_bore                = ak74_idle_bore

anm_hide_w_gl           = ak74_holster_w_gl
anm_show_w_gl           = ak74_draw_w_gl
anm_idle_w_gl           = ak74_idle_w_gl
anm_shots_w_gl          = ak74_shoot_w_gl
anm_reload_w_gl         = ak74_reload_w_gl
anm_idle_w_gl_aim       = ak74_idle_aim_w_gl
anm_idle_sprint_w_gl    = ak74_idle_sprint_w_gl
anm_idle_moving_w_gl    = ak74_idle_moving_w_gl
anm_bore_w_gl           = ak74_idle_bore_w_gl

anm_show_g              = ak74_draw_w_gl                            ;abakan_draw_grenade
anm_hide_g              = ak74_holster_w_gl                        ;abakan_holster_grenade
anm_idle_g              = ak74_idle_w_gl                            ;abakan_idle_grenade
anm_reload_g            = ak74_reload_grenade
anm_idle_g_aim          = ak74_idle_aim_w_gl                        ;abakan_idle_grenade
anm_shots_g             = ak74_shoot_grenade
anm_idle_sprint_g       = ak74_idle_sprint_w_gl                    ;abakan_idle_sprint_grenade
anm_idle_moving_g       = ak74_idle_moving_w_gl                    ;abakan_idle_moving_grenade
anm_bore_g              = ak74_idle_bore_w_gl


aim_hud_offset_pos                = -0.101500,0.012500,-0.018000
aim_hud_offset_rot                = -0.032500,-0.032500,0.020000

aim_hud_offset_pos_16x9                = -0.100000,0.033500,0.029000
aim_hud_offset_rot_16x9                = 0.002500,-0.002500,-0.007500

gl_hud_offset_pos               = 0,0,0;-0.053000,-0.059000,0.000000
gl_hud_offset_rot               = 0,0,0;-0.145000,0.000000,0.000000

gl_hud_offset_pos_16x9            = 0,0,0;-0.130000,0.003500,0.000500
gl_hud_offset_rot_16x9            = 0,0,0;0.052500,0.045000,-0.010000

lean_hud_offset_pos        = 0,0,0
lean_hud_offset_rot        = 0,0,0

[scope_ak74]
scope_name                     = wpn_addon_scope
scope_x                  = 47                 ; offset in inventory icon
scope_y                 = 0

[scope_x2.7_ak74]
scope_name                     = wpn_addon_scope_x2.7
scope_x                  = 47                 ; offset in inventory icon
scope_y                 = 0

[scope_live_detector_ak74]
scope_name                     = wpn_addon_scope_detector
scope_x                  = 47                 ; offset in inventory icon
scope_y                 = 0

[scope_night_ak74]
scope_name                     = wpn_addon_scope_night
scope_x                  = 47                 ; offset in inventory icon
scope_y                 = 0

;-----------------------------------------------------------------------------
; Уникальный АКМ-74 «Скорострельный»
;-----------------------------------------------------------------------------
[wpn_ak74_nimble]:wpn_ak74

$spawn                  = "weapons\wpn_ak74_nimble"
description             = st_wpn_ak74_nimble_descr
inv_name                = st_wpn_ak74_nimble

cost                   = 4800

upgrades                = up_gr_firstab_ak74, up_gr_seconab_ak74, up_gr_thirdab_ak74, up_gr_fourtab_ak74, up_gr_fifthab_ak74, up_gr_fifthcd_ak74
installed_upgrades      =
upgrade_scheme          = upgrade_scheme_ak74

inv_grid_width       = 5
inv_grid_height      = 2
inv_grid_x           = 11
inv_grid_y           = 38

ammo_mag_size = 50

condition_shot_dec          = 0.0009
condition_queue_shot_dec    = 0.00009

cam_dispersion              = 0.75
cam_dispersion_inc             = 0.3
cam_dispersion_frac            = 0.75
cam_max_angle           = 35.0
cam_max_angle_horz      = 3.5
cam_step_angle_horz     = 0.15

fire_distance           = 300 ;1000
bullet_speed            = 600
rpm                     = 700
rpm_empty_click         = 250

;звуки
snd_draw                = weapons\ak74_draw
snd_holster             = weapons\generic_holster
snd_shoot               = weapons\ak74_shoot1
snd_shoot1               = weapons\ak74_shoot1

snd_empty               = weapons\gen_empty, 0.5
snd_reload              = weapons\groza_reload_2, 0.7
snd_shoot_grenade       = weapons\gen_grenshoot
snd_reload_grenade      = weapons\gen_grenload, 1.0, 0.8
snd_switch              = weapons\groza_switch_2, 1.0, 0.5
snd_bore        = weapons\ak74_bore, 0.7

hud                     = wpn_ak75_hud
visual                  = dynamics\weapons\wpn_ak75\wpn_ak75.ogf

[wpn_ak75_hud]:hud_base
zoom_hide_crosshair        = true
attach_place_idx        = 0
item_visual                = dynamics\weapons\wpn_ak75\wpn_ak75_hud

hands_position                = -0.120500,-0.180999,0.132501
hands_orientation            = -2.599998,0.000000,-2.549999

hands_position_16x9                = -0.119500,-0.199000,0.091000
hands_orientation_16x9            = -0.750000,1.700000,-4.199999

item_position                = 0.004111,0.008527,-0.005906
item_orientation            = -15.488927,-3.320898,367.220154

shell_point                = 0.017,0.054,0.17
shell_dir               = 0.0, 1.0, 0.0
shell_bone                = wpn_body

fire_point            = 0,0.042,0.684
fire_bone                            = wpn_body
fire_point2                        = 0.0,-0.011,0.553
fire_bone2                = wpn_body

anm_show                        = ak74_draw
anm_hide                = ak74_holster
anm_idle                = ak74_idle
anm_idle_sprint         = ak74_idle_sprint
anm_idle_moving         = ak74_idle_moving
anm_shots               = ak74_shoot
anm_reload              = ak74_reload
anm_idle_aim            = ak74_idle_aim
anm_switch              = ak74_switch_off           ;abakan_switch_off
anm_switch_g            = ak74_switch_on           ;abakan_switch_on
anm_bore                = ak74_idle_bore

anm_hide_w_gl           = ak74_holster_w_gl
anm_show_w_gl           = ak74_draw_w_gl
anm_idle_w_gl           = ak74_idle_w_gl
anm_shots_w_gl          = ak74_shoot_w_gl
anm_reload_w_gl         = ak74_reload_w_gl
anm_idle_w_gl_aim       = ak74_idle_aim_w_gl
anm_idle_sprint_w_gl    = ak74_idle_sprint_w_gl
anm_idle_moving_w_gl    = ak74_idle_moving_w_gl
anm_bore_w_gl           = ak74_idle_bore_w_gl

anm_show_g              = ak74_draw_w_gl                        
anm_hide_g              = ak74_holster_w_gl                        
anm_idle_g              = ak74_idle_w_gl                            
anm_reload_g            = ak74_reload_grenade
anm_idle_g_aim          = ak74_idle_aim_w_gl                        
anm_shots_g             = ak74_shoot_grenade
anm_idle_sprint_g       = ak74_idle_sprint_w_gl                    
anm_idle_moving_g       = ak74_idle_moving_w_gl                    
anm_bore_g              = ak74_idle_bore_w_gl

aim_hud_offset_pos                = -0.101500,0.012500,-0.018000
aim_hud_offset_rot                = -0.032500,-0.032500,0.020000

aim_hud_offset_pos_16x9                = -0.100000,0.033500,0.029000
aim_hud_offset_rot_16x9                = 0.002500,-0.002500,-0.007500

gl_hud_offset_pos               = 0,0,0;-0.053000,-0.059000,0.000000
gl_hud_offset_rot               = 0,0,0;-0.145000,0.000000,0.000000

gl_hud_offset_pos_16x9            = 0,0,0;-0.130000,0.003500,0.000500
gl_hud_offset_rot_16x9            = 0,0,0;0.052500,0.045000,-0.010000

lean_hud_offset_pos        = 0,0,0
lean_hud_offset_rot        = 0,0,0

;-----------------------------------------------------------------------------
; АКМ-74 под калибр 11.43x23
;-----------------------------------------------------------------------------
[wpn_ak74_nimble_colt]:wpn_ak74

$spawn                  = "weapons\wpn_ak74_nimble_colt"
description             = st_wpn_ak74_nimble_colt_descr
inv_name                = st_wpn_ak74_nimble_colt

cost                   = 4900

hit_power                   = 0.43, 0.43, 0.43, 0.43
hit_impulse                     = 75

ammo_class              = ammo_11.43x23_fmj, ammo_11.43x23_hydro

upgrades                = up_gr_firstab_ak74, up_gr_seconab_ak74, up_gr_thirdab_ak74, up_gr_fourtab_ak74, up_gr_fifthab_ak74, up_gr_fifthcd_ak74
installed_upgrades      =
upgrade_scheme          = upgrade_scheme_ak74

inv_grid_width       = 5
inv_grid_height      = 2
inv_grid_x           = 14
inv_grid_y           = 24

fire_distance           = 180 ;1000
bullet_speed            = 500
rpm                     = 570
rpm_empty_click         = 200

;звуки
snd_draw                = weapons\ak74_draw
snd_holster             = weapons\generic_holster
snd_shoot               = weapons\ak74_shoot4
snd_shoot1               = weapons\ak74_shoot4

snd_empty               = weapons\gen_empty, 0.5
snd_reload              = weapons\groza_reload_2, 0.7
snd_shoot_grenade       = weapons\gen_grenshoot
snd_reload_grenade      = weapons\gen_grenload, 1.0, 0.8
snd_switch              = weapons\groza_switch_2, 1.0, 0.5
snd_bore        = weapons\ak74_bore, 0.7

hud                     = wpn_ak73_hud
visual                  = dynamics\weapons\wpn_ak73\wpn_ak73.ogf

[wpn_ak73_hud]:hud_base
zoom_hide_crosshair        = true
attach_place_idx        = 0
item_visual                = dynamics\weapons\wpn_ak73\wpn_ak73_hud

hands_position                = -0.120500,-0.180999,0.132501
hands_orientation            = -2.599998,0.000000,-2.549999

hands_position_16x9                = -0.119500,-0.199000,0.091000
hands_orientation_16x9            = -0.750000,1.700000,-4.199999

item_position                = 0.004111,0.008527,-0.005906
item_orientation            = -15.488927,-3.320898,367.220154

shell_point                = 0.017,0.054,0.17
shell_dir               = 0.0, 1.0, 0.0
shell_bone                = wpn_body

fire_point            = 0,0.042,0.684
fire_bone                            = wpn_body
fire_point2                        = 0.0,-0.011,0.553
fire_bone2                = wpn_body

anm_show                        = ak74_draw
anm_hide                = ak74_holster
anm_idle                = ak74_idle
anm_idle_sprint         = ak74_idle_sprint
anm_idle_moving         = ak74_idle_moving
anm_shots               = ak74_shoot
anm_reload              = ak74_reload
anm_idle_aim            = ak74_idle_aim
anm_switch              = ak74_switch_off           ;abakan_switch_off
anm_switch_g            = ak74_switch_on           ;abakan_switch_on
anm_bore                = ak74_idle_bore

anm_hide_w_gl           = ak74_holster_w_gl
anm_show_w_gl           = ak74_draw_w_gl
anm_idle_w_gl           = ak74_idle_w_gl
anm_shots_w_gl          = ak74_shoot_w_gl
anm_reload_w_gl         = ak74_reload_w_gl
anm_idle_w_gl_aim       = ak74_idle_aim_w_gl
anm_idle_sprint_w_gl    = ak74_idle_sprint_w_gl
anm_idle_moving_w_gl    = ak74_idle_moving_w_gl
anm_bore_w_gl           = ak74_idle_bore_w_gl

anm_show_g              = ak74_draw_w_gl                        
anm_hide_g              = ak74_holster_w_gl                        
anm_idle_g              = ak74_idle_w_gl                            
anm_reload_g            = ak74_reload_grenade
anm_idle_g_aim          = ak74_idle_aim_w_gl                        
anm_shots_g             = ak74_shoot_grenade
anm_idle_sprint_g       = ak74_idle_sprint_w_gl                    
anm_idle_moving_g       = ak74_idle_moving_w_gl                    
anm_bore_g              = ak74_idle_bore_w_gl

aim_hud_offset_pos                = -0.101500,0.012500,-0.018000
aim_hud_offset_rot                = -0.032500,-0.032500,0.020000

aim_hud_offset_pos_16x9                = -0.100000,0.033500,0.029000
aim_hud_offset_rot_16x9                = 0.002500,-0.002500,-0.007500

gl_hud_offset_pos               = 0,0,0;-0.053000,-0.059000,0.000000
gl_hud_offset_rot               = 0,0,0;-0.145000,0.000000,0.000000

gl_hud_offset_pos_16x9            = 0,0,0;-0.130000,0.003500,0.000500
gl_hud_offset_rot_16x9            = 0,0,0;0.052500,0.045000,-0.010000

lean_hud_offset_pos        = 0,0,0
lean_hud_offset_rot        = 0,0,0

;-----------------------------------------------------------------------------
; АКМ-74 под калибр 9x18
;-----------------------------------------------------------------------------
[wpn_ak74_nimble_pm]:wpn_ak74

$spawn                  = "weapons\wpn_ak74_nimble_pm"
description             = st_wpn_ak74_nimble_pm_descr
inv_name                = st_wpn_ak74_nimble_pm

cost                   = 4900

hit_power                   = 0.3, 0.3, 0.3, 0.3
hit_impulse                     = 80

ammo_class              = ammo_9x18_fmj, ammo_9x18_pmm

upgrades                = up_gr_firstab_ak74, up_gr_seconab_ak74, up_gr_thirdab_ak74, up_gr_fourtab_ak74, up_gr_fifthab_ak74, up_gr_fifthcd_ak74
installed_upgrades      =
upgrade_scheme          = upgrade_scheme_ak74

inv_grid_width       = 5
inv_grid_height      = 2
inv_grid_x           = 15
inv_grid_y           = 26

fire_distance           = 200 ;1000
bullet_speed            = 480
rpm                     = 570
rpm_empty_click         = 200

;звуки
snd_draw                = weapons\ak74_draw
snd_holster             = weapons\generic_holster
snd_shoot               = weapons\ak74_shoot5
snd_shoot1               = weapons\ak74_shoot5

snd_empty               = weapons\gen_empty, 0.5
snd_reload              = weapons\groza_reload_2, 0.7
snd_shoot_grenade       = weapons\gen_grenshoot
snd_reload_grenade      = weapons\gen_grenload, 1.0, 0.8
snd_switch              = weapons\groza_switch_2, 1.0, 0.5
snd_bore        = weapons\ak74_bore, 0.7

hud                     = wpn_ak76_hud
visual                  = dynamics\weapons\wpn_ak76\wpn_ak76.ogf

[wpn_ak76_hud]:hud_base
zoom_hide_crosshair        = true
attach_place_idx        = 0
item_visual                = dynamics\weapons\wpn_ak76\wpn_ak76_hud

hands_position                = -0.120500,-0.180999,0.132501
hands_orientation            = -2.599998,0.000000,-2.549999

hands_position_16x9                = -0.119500,-0.199000,0.091000
hands_orientation_16x9            = -0.750000,1.700000,-4.199999

item_position                = 0.004111,0.008527,-0.005906
item_orientation            = -15.488927,-3.320898,367.220154

shell_point                = 0.017,0.054,0.17
shell_dir               = 0.0, 1.0, 0.0
shell_bone                = wpn_body

fire_point            = 0,0.042,0.684
fire_bone                            = wpn_body
fire_point2                        = 0.0,-0.011,0.553
fire_bone2                = wpn_body

anm_show                        = ak74_draw
anm_hide                = ak74_holster
anm_idle                = ak74_idle
anm_idle_sprint         = ak74_idle_sprint
anm_idle_moving         = ak74_idle_moving
anm_shots               = ak74_shoot
anm_reload              = ak74_reload
anm_idle_aim            = ak74_idle_aim
anm_switch              = ak74_switch_off           ;abakan_switch_off
anm_switch_g            = ak74_switch_on           ;abakan_switch_on
anm_bore                = ak74_idle_bore

anm_hide_w_gl           = ak74_holster_w_gl
anm_show_w_gl           = ak74_draw_w_gl
anm_idle_w_gl           = ak74_idle_w_gl
anm_shots_w_gl          = ak74_shoot_w_gl
anm_reload_w_gl         = ak74_reload_w_gl
anm_idle_w_gl_aim       = ak74_idle_aim_w_gl
anm_idle_sprint_w_gl    = ak74_idle_sprint_w_gl
anm_idle_moving_w_gl    = ak74_idle_moving_w_gl
anm_bore_w_gl           = ak74_idle_bore_w_gl

anm_show_g              = ak74_draw_w_gl                        
anm_hide_g              = ak74_holster_w_gl                        
anm_idle_g              = ak74_idle_w_gl                            
anm_reload_g            = ak74_reload_grenade
anm_idle_g_aim          = ak74_idle_aim_w_gl                        
anm_shots_g             = ak74_shoot_grenade
anm_idle_sprint_g       = ak74_idle_sprint_w_gl                    
anm_idle_moving_g       = ak74_idle_moving_w_gl                    
anm_bore_g              = ak74_idle_bore_w_gl

aim_hud_offset_pos                = -0.101500,0.012500,-0.018000
aim_hud_offset_rot                = -0.032500,-0.032500,0.020000

aim_hud_offset_pos_16x9                = -0.100000,0.033500,0.029000
aim_hud_offset_rot_16x9                = 0.002500,-0.002500,-0.007500

gl_hud_offset_pos               = 0,0,0;-0.053000,-0.059000,0.000000
gl_hud_offset_rot               = 0,0,0;-0.145000,0.000000,0.000000

gl_hud_offset_pos_16x9            = 0,0,0;-0.130000,0.003500,0.000500
gl_hud_offset_rot_16x9            = 0,0,0;0.052500,0.045000,-0.010000

lean_hud_offset_pos        = 0,0,0
lean_hud_offset_rot        = 0,0,0

;-----------------------------------------------------------------------------
; АКМ-74 под калибр 9x19
;-----------------------------------------------------------------------------
[wpn_ak74_nimble_mp5]:wpn_ak74

$spawn                  = "weapons\wpn_ak74_nimble_mp5"
description             = st_wpn_ak74_nimble_mp5_descr
inv_name                = st_wpn_ak74_nimble_mp5

cost                   = 5100

hit_power                   = 0.35, 0.35, 0.35, 0.35
hit_impulse                     = 100

ammo_class              = ammo_9x19_fmj, ammo_9x19_pbp

upgrades                = up_gr_firstab_ak74, up_gr_seconab_ak74, up_gr_thirdab_ak74, up_gr_fourtab_ak74, up_gr_fifthab_ak74, up_gr_fifthcd_ak74
installed_upgrades      =
upgrade_scheme          = upgrade_scheme_ak74

inv_grid_width       = 5
inv_grid_height      = 2
inv_grid_x           = 15
inv_grid_y           = 28

fire_distance           = 200 ;1000
bullet_speed            = 480
rpm                     = 620
rpm_empty_click         = 200

;звуки
snd_draw                = weapons\ak74_draw
snd_holster             = weapons\generic_holster
snd_shoot               = weapons\ak74_shoot6
snd_shoot1               = weapons\ak74_shoot6

snd_empty               = weapons\gen_empty, 0.5
snd_reload              = weapons\groza_reload_2, 0.7
snd_shoot_grenade       = weapons\gen_grenshoot
snd_reload_grenade      = weapons\gen_grenload, 1.0, 0.8
snd_switch              = weapons\groza_switch_2, 1.0, 0.5
snd_bore        = weapons\ak74_bore, 0.7

hud                     = wpn_ak77_hud
visual                  = dynamics\weapons\wpn_ak77\wpn_ak77.ogf

[wpn_ak77_hud]:hud_base
zoom_hide_crosshair        = true
attach_place_idx        = 0
item_visual                = dynamics\weapons\wpn_ak77\wpn_ak77_hud

hands_position                = -0.120500,-0.180999,0.132501
hands_orientation            = -2.599998,0.000000,-2.549999

hands_position_16x9                = -0.119500,-0.199000,0.091000
hands_orientation_16x9            = -0.750000,1.700000,-4.199999

item_position                = 0.004111,0.008527,-0.005906
item_orientation            = -15.488927,-3.320898,367.220154

shell_point                = 0.017,0.054,0.17
shell_dir               = 0.0, 1.0, 0.0
shell_bone                = wpn_body

fire_point            = 0,0.042,0.684
fire_bone                            = wpn_body
fire_point2                        = 0.0,-0.011,0.553
fire_bone2                = wpn_body

anm_show                        = ak74_draw
anm_hide                = ak74_holster
anm_idle                = ak74_idle
anm_idle_sprint         = ak74_idle_sprint
anm_idle_moving         = ak74_idle_moving
anm_shots               = ak74_shoot
anm_reload              = ak74_reload
anm_idle_aim            = ak74_idle_aim
anm_switch              = ak74_switch_off           ;abakan_switch_off
anm_switch_g            = ak74_switch_on           ;abakan_switch_on
anm_bore                = ak74_idle_bore

anm_hide_w_gl           = ak74_holster_w_gl
anm_show_w_gl           = ak74_draw_w_gl
anm_idle_w_gl           = ak74_idle_w_gl
anm_shots_w_gl          = ak74_shoot_w_gl
anm_reload_w_gl         = ak74_reload_w_gl
anm_idle_w_gl_aim       = ak74_idle_aim_w_gl
anm_idle_sprint_w_gl    = ak74_idle_sprint_w_gl
anm_idle_moving_w_gl    = ak74_idle_moving_w_gl
anm_bore_w_gl           = ak74_idle_bore_w_gl

anm_show_g              = ak74_draw_w_gl                        
anm_hide_g              = ak74_holster_w_gl                        
anm_idle_g              = ak74_idle_w_gl                            
anm_reload_g            = ak74_reload_grenade
anm_idle_g_aim          = ak74_idle_aim_w_gl                        
anm_shots_g             = ak74_shoot_grenade
anm_idle_sprint_g       = ak74_idle_sprint_w_gl                    
anm_idle_moving_g       = ak74_idle_moving_w_gl                    
anm_bore_g              = ak74_idle_bore_w_gl

aim_hud_offset_pos                = -0.101500,0.012500,-0.018000
aim_hud_offset_rot                = -0.032500,-0.032500,0.020000

aim_hud_offset_pos_16x9                = -0.100000,0.033500,0.029000
aim_hud_offset_rot_16x9                = 0.002500,-0.002500,-0.007500

gl_hud_offset_pos               = 0,0,0;-0.053000,-0.059000,0.000000
gl_hud_offset_rot               = 0,0,0;-0.145000,0.000000,0.000000

gl_hud_offset_pos_16x9            = 0,0,0;-0.130000,0.003500,0.000500
gl_hud_offset_rot_16x9            = 0,0,0;0.052500,0.045000,-0.010000

lean_hud_offset_pos        = 0,0,0
lean_hud_offset_rot        = 0,0,0

;-----------------------------------------------------------------------------
; Старый АКМ74 старика Дегтярёва
;-----------------------------------------------------------------------------
[wpn_ak74_old]:wpn_ak74

$spawn                  = "weapons\wpn_ak74_old"
description             = st_wpn_ak74_old_descr
inv_name                = st_wpn_ak74_old

cost                   = 3500

hit_power                   = 0.25, 0.25, 0.25, 0.25
hit_impulse                     = 100

upgrades                = up_gr_firstab_ak74, up_gr_seconab_ak74, up_gr_thirdab_ak74, up_gr_fourtab_ak74, up_gr_fifthab_ak74, up_gr_fifthcd_ak74
installed_upgrades      =
upgrade_scheme          = upgrade_scheme_ak74

inv_grid_width       = 5
inv_grid_height      = 2
inv_grid_x           = 15
inv_grid_y           = 30

condition_shot_dec          = 0.001
condition_queue_shot_dec    = 0.0012

ammo_mag_size        = 30

fire_distance           = 180 ;1000
bullet_speed            = 450
rpm                     = 590
rpm_empty_click         = 200

;звуки
snd_draw                = weapons\ak74_draw
snd_holster             = weapons\generic_holster
snd_shoot               = weapons\ak74_shoot3
snd_shoot1               = weapons\ak74_shoot3

snd_empty               = weapons\gen_empty, 0.5
snd_reload              = weapons\groza_reload_2, 0.7
snd_shoot_grenade       = weapons\gen_grenshoot
snd_reload_grenade      = weapons\gen_grenload, 1.0, 0.8
snd_switch              = weapons\groza_switch_2, 1.0, 0.5
snd_bore        = weapons\ak74_bore, 0.7

hud                     = wpn_ak78_hud
visual                  = dynamics\weapons\wpn_ak78\wpn_ak78.ogf

[wpn_ak78_hud]:hud_base
zoom_hide_crosshair        = true
attach_place_idx        = 0
item_visual                = dynamics\weapons\wpn_ak78\wpn_ak78_hud

hands_position                = -0.120500,-0.180999,0.132501
hands_orientation            = -2.599998,0.000000,-2.549999

hands_position_16x9                = -0.119500,-0.199000,0.091000
hands_orientation_16x9            = -0.750000,1.700000,-4.199999

item_position                = 0.004111,0.008527,-0.005906
item_orientation            = -15.488927,-3.320898,367.220154

shell_point                = 0.017,0.054,0.17
shell_dir               = 0.0, 1.0, 0.0
shell_bone                = wpn_body

fire_point            = 0,0.042,0.684
fire_bone                            = wpn_body
fire_point2                        = 0.0,-0.011,0.553
fire_bone2                = wpn_body

anm_show                        = ak74_draw
anm_hide                = ak74_holster
anm_idle                = ak74_idle
anm_idle_sprint         = ak74_idle_sprint
anm_idle_moving         = ak74_idle_moving
anm_shots               = ak74_shoot
anm_reload              = ak74_reload
anm_idle_aim            = ak74_idle_aim
anm_switch              = ak74_switch_off           ;abakan_switch_off
anm_switch_g            = ak74_switch_on           ;abakan_switch_on
anm_bore                = ak74_idle_bore

anm_hide_w_gl           = ak74_holster_w_gl
anm_show_w_gl           = ak74_draw_w_gl
anm_idle_w_gl           = ak74_idle_w_gl
anm_shots_w_gl          = ak74_shoot_w_gl
anm_reload_w_gl         = ak74_reload_w_gl
anm_idle_w_gl_aim       = ak74_idle_aim_w_gl
anm_idle_sprint_w_gl    = ak74_idle_sprint_w_gl
anm_idle_moving_w_gl    = ak74_idle_moving_w_gl
anm_bore_w_gl           = ak74_idle_bore_w_gl

anm_show_g              = ak74_draw_w_gl                        
anm_hide_g              = ak74_holster_w_gl                        
anm_idle_g              = ak74_idle_w_gl                            
anm_reload_g            = ak74_reload_grenade
anm_idle_g_aim          = ak74_idle_aim_w_gl                        
anm_shots_g             = ak74_shoot_grenade
anm_idle_sprint_g       = ak74_idle_sprint_w_gl                    
anm_idle_moving_g       = ak74_idle_moving_w_gl                    
anm_bore_g              = ak74_idle_bore_w_gl

aim_hud_offset_pos                = -0.101500,0.012500,-0.018000
aim_hud_offset_rot                = -0.032500,-0.032500,0.020000

aim_hud_offset_pos_16x9                = -0.100000,0.033500,0.029000
aim_hud_offset_rot_16x9                = 0.002500,-0.002500,-0.007500

gl_hud_offset_pos               = 0,0,0;-0.053000,-0.059000,0.000000
gl_hud_offset_rot               = 0,0,0;-0.145000,0.000000,0.000000

gl_hud_offset_pos_16x9            = 0,0,0;-0.130000,0.003500,0.000500
gl_hud_offset_rot_16x9            = 0,0,0;0.052500,0.045000,-0.010000

lean_hud_offset_pos        = 0,0,0
lean_hud_offset_rot        = 0,0,0
 


При попадании в монстров, игра зависает.  Вот лог с ошибкой.
 

Скрытый текст

FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : No such operator defined
 

stack trace:


Добавил инфу с оружием в
 

Скрытый текст

gamedata\configs\misc\inventory_upgrades.ltx
gamedata\configs\misc\stalkers_upgrade_info.ltx
gamedata\configs\mp\mp_ranks.ltx


Ну и добавил новые файлы в папку meshes\dynamics\weapons\
В чем может быть проблема зависаний и как это исправить?

Ссылка на комментарий

@Antolich, прежде всего вы ошиблись темой. Здесь публикуют готовые примеры кода, который новисы потом могут использовать в своих работах, так шта геть в ковырялку.

Моя нычка номер 1, Нычка номер 2

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

На тему дизайна освещения и визуальных приемов получения сочной картинки

DEAD AIR 1.0 капитан Графоний в деле

Ссылка на комментарий
26.05.2020 в 19:07, misterok21 сказал(а):

Как сделать некролог (сообщение о смерти)

Функция не работает.

Моя нычка номер 1, Нычка номер 2

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

@UriZzz , xex... а там просто скромно умалчивается, что рассчитано на использование в старших платформах.

Сравни форматы вывода новостных сообщений ТЧ vs ЧН в news_manager.script, например.

Т.е. для ТЧ будет что-то наподобие такого:

Скрытый текст

    if killer_comm ~= nil then
...
        local task_texture, task_rect = get_texture_info("ui_iconsTotal_weapons")
        local news_text = news_caption .. "%c[230,255,128,64]" .. m_text_kill_string
        db.actor:give_game_news(news_text, task_texture, task_rect, 5*1000, 5*1000)
        if shans > 70 then
                local task_texture, task_rect = get_texture_info("ui_iconsTotal_grouping")
                local dead_news = dead_caption .. death_komment[math.random(table.getn(death_komment))]
                db.actor:give_game_news(dead_news, task_texture, task_rect, 5*1000, 5*1000)
        end
    end

news_caption = '...', dead_caption = '...' - соответствующие строковые заголовки для типов сообщений (кто погиб и комментарии).

 

Ссылка на комментарий

Всем привет! В интернете легко найти уроки по созданию группировки в Сталкер ТЧ и ЗП,(хотя в первом случаи они неполные), а про ЧН ничего нет, а способ создания группировки в этой части, имеет некоторые свои особенности. В этом уроке я разберу создание группировки + восстановление уже имеющихся, но "неполноценных" (экологи, военные, Монолит и наёмники).

Что-ж начнем.

Скрытый текст

 

В файле: game_relations.ltx:

В строчке communities в конце дописываем свою группировку:

communities = actor, 0, actor_bandit, 1, actor_dolg, 2, actor_freedom,3, actor_stalker, 4, arena_enemy, 5, bandit, 6, csky, 7, dolg, 8, ecolog, 9, freedom, 10, killer, 11, army, 12, monolith, 13, monster, 14, stalker, 15, trader, 16, zombied, 17, actor_csky, 18, renegade, 19, ваша группировка, 20

Далее в таблицу под названием [communities_relations] добавляете свою группировку и отношения к другим (1000 и выше-друг,0-нейтрал,-1000 и ниже-враг), не забывайте прописывать как с правой стороны так и наверху.

[actor_communities] можете прописать, если в группировку планируется вступление. Через запятую перечислены параметры войны группировок, первая ваша группировка, вторая группировка-враг (параметр "actor, actor" значит что вы в войне группировок не участвуете) (небольшое примечание, если вы пишите что-то необычное, например, "ваша группировка, бандиты", или "наёмники, Свобода", то надо ещё редактировать файл  pda.script, но в этом уроке я его разбирать не буду, так сам его не редактировал).

[communities_sympathy] коэффициенты "сочувствия" можно скопировать с другой.

[monster_relations] таблица отношений между мутантами, там все так как и в [communities_relations]. Можете добавить свою группировку и прописать нейтралитет к определенным мутантам.

 

Скрытый текст

 

Открываем любой character_desc_... и создаем профили, аналогично этому примеру:

 

<!-- ecolog novice -->

  <specific_character id="sim_default_ecolog_0_default_0" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_0</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>300</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog</visual>

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_walther \n

      ammo_9x19_pbp  = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

<specific_character id="sim_default_ecolog_0_default_1" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog_military</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_0</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>300</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog_military</visual>

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_sig220 = 1 \n

      ammo_11.43x23_fmj = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

<!-- ecolog expirienced -->

  <specific_character id="sim_default_ecolog_1_default_0" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_1</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>400</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog</visual>

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_mp5 \n

      ammo_9x19_fmj = 1 \n

      wpn_walther \n

      ammo_9x19_fmj = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

  <specific_character id="sim_default_ecolog_1_default_1" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_1</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>400</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog</visual>

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_ak74u \n           

      ammo_5.45x39_fmj = 1 \n

      wpn_walther \n

      ammo_9x19_fmj = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

  <specific_character id="sim_default_ecolog_1_default_2" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog_military</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_1</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>400</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog_military</visual>

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_mp5 \n

      ammo_9x19_fmj = 1 \n

      wpn_walther \n

      ammo_9x19_fmj = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

    <!-- ecolog veteran -->

  <specific_character id="sim_default_ecolog_2_default_0" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_2</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>600</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog</visual>

 

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_l85 \n

      ammo_5.56x45_ss190 = 1 \n

      wpn_walther \n

      ammo_9x19_fmj = 1 \n

      grenade_rgd5 = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

 

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

  <specific_character id="sim_default_ecolog_2_default_1" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog_military</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_2</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>600</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog_military</visual>

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_lr300 \n

      ammo_5.56x45_ss190 = 1 \n

      wpn_sig220 = 1 \n

      ammo_11.43x23_fmj = 1 \n

      grenade_rgd5 = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

  <specific_character id="sim_default_ecolog_2_default_2" team_default = "1">

    <name>GENERATE_NAME_science</name>

    <icon>ui_npc_u_stalker_ecolog_military</icon>

    <map_icon x="1" y="0"></map_icon>

    <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

    <class>sim_default_ecolog_2</class>

    <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect>

    <snd_config>characters_voice\human_03\ecolog\</snd_config>

 

    <rank>600</rank>

    <reputation>0</reputation>

 

    <visual>actors\stalker_ucheniy\stalker_ecolog_military</visual>

    <supplies>

      [spawn] \n

      device_torch \n

      wpn_ak74 \n

      ammo_5.45x39_fmj = 1 \n

      wpn_walther \n

      ammo_9x19_fmj = 1 \n

      grenade_rgd5 = 1 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

    </supplies>

#include "gameplay\character_criticals_4.xml"

#include "gameplay\character_dialogs.xml"

  </specific_character>

 

 Далее открываем файл npc_profile.xml и пишем в нём к примеру:

                               <!-- sim ecolog -->

                <character id="sim_default_ecolog_0">

                               <class>sim_default_ecolog_0</class>

                </character>

                <character id="sim_default_ecolog_1">

                               <class>sim_default_ecolog_1</class>

                </character>

                <character id="sim_default_ecolog_2">

                               <class>sim_default_ecolog_2</class>

                </character>

 Далее файл spawn_sections_general.ltx

 

;***** sim ecolog *****

 

[sim_default_ecolog_0]:stalker

$spawn                     = "respawn\sim_default_ecolog_0"

character_profile     = sim_default_ecolog_0

spec_rank = regular

community = ecolog

 

[sim_default_ecolog_1]:stalker

$spawn                     = "respawn\sim_default_ecolog_1"

character_profile     = sim_default_ecolog_1

spec_rank = experienced

community = ecolog

 

[sim_default_ecolog_2]:stalker

$spawn                     = "respawn\sim_default_ecolog_2"

character_profile     = sim_default_ecolog_2

spec_rank = veteran

community = ecolog

 

Всё.

 

 

Скрытый текст

 

В нем к примеру пишем:(после ;— пояснение копировать не надо)

 

[settings];— дополнительные отряды за захват контрольных точек.

glory_0 = 0

glory_1 = 1

glory_2 = 2

glory_3 = 3

glory_4 = 4

glory_5 = 5

 

[spawn_by_resource];— какие профили спаунятся в зависимости от ресурсов (ресурсы дают ресурсные точки, например АТП), и их процентное взаимоотношение.

0 = sim_default_ecolog_0, 80, sim_default_ecolog_1, 20

1 = sim_default_ecolog_0, 60, sim_default_ecolog_1, 30, sim_default_ecolog_2, 10

2 = sim_default_ecolog_0, 30, sim_default_ecolog_1, 50, sim_default_ecolog_2, 20

3 = sim_default_ecolog_1, 50, sim_default_ecolog_2, 50

 

[spawn_by_level];— какие профили спаунятся на локации(?) Честно не заметил их влияние на что либо.

marsh          = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

escape        = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

garbage      = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

darkvalley   = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

agroprom    = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

yantar         = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

red_forest   = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

military        = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

limansk        = sim_default_ecolog_0, 40, sim_default_ecolog_1, 30, sim_default_ecolog_2, 30

 

[expansion_base]

base_squad_number = 0

precondition_power = -1 ;— не совсем понял что это, но важно именно это число, или не будет спама

respawn_idle_time = 75

respawn_hours = 6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 ;— время суток когда происходит респам бойцов группировки

 

[expansion_0]:expansion_base

precondition_cond = {+fc_disable_story_line_quest} true, false ;— предварительное условие (мое не копируйте, то если у вас Faction commander), задается чтобы группировка не начала симуляцию раньше времени, к примеру чтобы бандиты и сталкеры не начали воевать с самого начала игры, пока Шрам ещё на Болоте, им задано такое условие {+esc_take_habar_complete}, то бишь начало войны после возвращения хабара Сидоровичу.

sim_prior = prior_0

 

[expansion_1]:expansion_base

base_squad_number = 15 ;— базовое количество сквадов на этом этапе войны группировок

precondition_power = 0.3

precondition_target = yan_smart_terrain_6_4 ;— смарт-террейн(ы) которые группировка будет пытаться захватить на этом этапе

 

[expansion_2]:expansion_base

base_squad_number = 20

precondition_target = yan_smart_terrain_5_3

 

[expansion_3]:expansion_base

base_squad_number = 25

precondition_target_optional = yan_smart_terrain_zombi_in_sci_base6, yan_smart_terrain_4_5

 

[expansion_4]:expansion_base

base_squad_number = 30

precondition_target_optional = yan_smart_terrain_3_4

 

[expansion_5]:expansion_base

base_squad_number = 35

precondition_target_eliminate = yan_smart_terrain_zombi_in_sci_base5

 

[start_position];— отряды группировки, которые будут находиться на заданном смарт-террейне с самого начала игры.

;red_squad_test_in_sci_base = red_smart_terrain_3_2

;red_squad_test_in_sci_base2 = red_smart_terrain_3_2

 

Скрытый текст

 

Далее файл sim_board.script добавляем под "--' Активность группировок по времени суток. В таблицах забито повышение за 1 час ожидания." Вашу группировку, либо экологов, остальные там есть.

 

Следующий файл death_manager.script строчка

function init_drop_settings()

                local community_list = { "stalker", "dolg", "freedom", "renegade", "bandit", "army", "zombied", "ecolog", "killer", "monolith", "csky", "actor_dolg" , "arena_enemy", "ваша группировка" }

 

Далее файл death_items_by_communities.ltx

 

[ecolog]:stalker ;— первое ваша группировка

;Еда ;— вообщем-то можно любые вещи прописать

vodka                                                 = 0.01

medkit                                                = 0.1

medkit_scientic                                  = 0.2

antirad                                                = 0.3

 

Скрытый текст

 

sim_defend_smart_ecolog

sim_defend_smart_delay_ecolog

sim_capture_smart_ecolog

sim_eliminate_smart_ecolog

sim_eliminate_resource_smart_ecolog

sim_eliminate_path_smart_ecolog

 

[sim_defend_smart_ecolog]:sim_defend_smart

faction = ecolog

reward_money = {~50} 3000, 2500 ;— денежная награда

reward_item = {~50} grenade_f1:ammo_5.45x39_ap:ammo_5.45x39_ap, medkit_scientic:medkit_scientic:antirad:antirad ;— награда вещами

prior = 5

 

[sim_defend_smart_delay_ecolog]:sim_defend_smart_delay

faction = ecolog

(Награда-приоритет по шаблону предыдущего)

[sim_capture_smart_ecolog]:sim_capture_smart

faction = ecolog

(Награда-приоритет)

[sim_eliminate_smart_ecolog]:sim_eliminate_smart

faction = ecolog

(Награда-приоритет)

[sim_eliminate_resource_smart_ecolog]:sim_eliminate_resource_smart

faction = ecolog

(Награда-приоритет)

[sim_eliminate_path_smart_ecolog]:sim_eliminate_path_smart

faction = ecolog

(Награда-приоритет)

 

Всё теперь задания по защите/нападению/и т.д. смартов готовы, правда давать их будет редко, если вы насколько я понял, не состоите в группировке, только если без вашей помощи ни как. Также общие для всех группировок задания (найти пулемет в Рыжем лесу и т.п.), будут автоматически выдаваться и вашей группировкой.

 

 

Скрытый текст

 

Выбираете локацию на которой будет база вашей группировки alife_....ltx, если создаете новую группировку или восстанавливаете Экологов то в конце файла пишите (для наёмников, Монолита и Армии не нужно, у них уже есть):

 

[11568];— номер по порядку

 

; cse_abstract properties

section_name = sim_faction

name = yan_sim_faction_ecolog ;— ваше название

position = 14.6198530197144, -11.9344539642334, -266.481781005859;— скорее всего sim_faction можно в любом месте ставить, но я ставил в районе смарт-террейна где будет спауниться моя группировка, для надежности.

direction = 0, 0, 0 ;— направление взгляда, можно написать нули

id = 65535

version = 124

script_version = 8

spawn_id = 8639 ;— по порядку

 

; cse_alife_object properties

game_vertex_id = 792 ;— вместе с координатами

distance = 3.5

level_vertex_id = 331462 ;— вместе с координатами

object_flags = 0xffffff3e

custom_data = <<END

[faction]

name = ecolog ;— название группировки

base_smart = yan_smart_terrain_6_4

settings = misc\faction_ecolog.ltx ;— адрес файла faction_..., который мы создали ранее.

END

 

; cse_shape properties

shapes = 1

shape_0:type = sphere

shape_0:offset = 0,0,0

shape_0:radius = 1

 

; cse_alife_space_restrictor properties

restrictor_type = 0

 

; se_sim_faction properties

last_spawn_time = 255

squad_target_cache =

random_tasks =

current_attack_quantity =

squads = 0

 

Дальше ищите подходящий смарт-террейн в котором будет база группировки и прописываете в нем (я для примера взял Холл Завода в ТД, где подземная лаборатория и где спаунятся наёмники):

 

[9135]

 

; cse_abstract properties

section_name = smart_terrain

name = val_smart_terrain_1_2

position = 158.19631958008, -0.72822391986847, -260.88854980469

direction = -0.0116630000993609, 6.90000015310943e-005, 0.00593400001525879

id = 65535

version = 124

script_version = 8

spawn_id = 4838

 

; cse_alife_object properties

game_vertex_id = 815

distance = 28

level_vertex_id = 329923

object_flags = 0xffffff3e

custom_data = <<END

[smart_terrain]

targets = val_smart_terrain_9_6, val_smart_terrain_8_7, val_smart_terrain_8_9

sim_type = default ;— можете прописать base, тогда этот смарт станет базой вашей группировки, она должна быть одна на всю Зону.

sim_value = 3

squad_capacity = 5

sim_avail = {-val_strike_antenna_two_captured +val_destroy_killer_base_done} false, true  ;— предполагаю что условия отключения респама

squad_id = 3

att_restr = val_smart_terrain_1_2_attack

def_restr = val_smart_terrain_1_2_defence

respawn_sector = {+val_deliver_pda_done} killer;— прописываем эту строчку, {+val_deliver_pda_done} — означает предварительное условие, как мы уже разобрали выше, если убрать, отряды заспаунятся с самого начала игры, killer — название группировки. Точек респама может быть много, на разных смартах.

actor_hides= val_vibros..... ;(там идет дальше, не копирую все запись)

 

Скрытый текст

 

Ну  и последнее, если вы прописали вашей группировке квесты, то нужно прописать того кто будет награду выдавать. Вы можете создать нового НПС, или же прописать уже существующему, как я профессору Сахарову к примеру:

 

[11470]

 

; cse_abstract properties

section_name = stalker_sakharov

name = yan_stalker_sakharov

position = 27.9391098022461, -11.7167835235596, -272.380462646484

direction = 0, 0, 0

id = 65535

version = 124

script_version = 8

spawn_id = 8654

 

; cse_alife_trader_abstract properties

money = 5000

character_profile = yan_stalker_sakharov

 

; cse_alife_object properties

game_vertex_id = 1312

distance = 0.69999999

level_vertex_id = 72763

object_flags = 0xffffffbb

custom_data = <<END

[logic]

cfg = scripts\yantar\yan_saharov.ltx

 

[task_manager] ;— вот эти две строчки, вместо ecolog можете свою группировку

reward = ecolog

 

[spawn]

hand_radio = 1

END

 и т.д....

 

Ну в соответствующем профиле НПС дописываем диалог награды, пример:

                <specific_character id="yan_stalker_sakharov" team_default = "1">

                               <name>yan_st_sakharov_name</name>

                               <icon>ui_npc_u_ucheniy_1</icon>

                               <map_icon x="1" y="0"></map_icon>

                               <bio></bio>

 

                               <class>yan_stalker_sakharov</class>

                               <community>ecolog</community>                     

<terrain_sect>sakharov_terrain</terrain_sect>

                               <snd_config>characters_voice\human_01\stalker\</snd_config>

 

                               <rank>400</rank>

                               <reputation>0</reputation>

                               <money min="20000" max="50000" infinitive="1"/>

                               <visual>actors\stalker_ucheniy\stalker_ucheniy_1</visual>

                               <crouch_type>0</crouch_type>

                               <supplies>

                                               [spawn] \n

                                               hand_radio = 1 \n

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

                               </supplies>

#include "gameplay\character_criticals_1.xml"

    <start_dialog>yan_scientist_hello_dialog</start_dialog>

    <actor_dialog>yan_scientist_go_diggers</actor_dialog>

    <actor_dialog>yan_scientist_about_strelok</actor_dialog>

    <actor_dialog>yan_scientist_about_stalkers</actor_dialog>

    <actor_dialog>yan_scientist_about_zombie</actor_dialog>

    <actor_dialog>yan_scientist_bring_documents</actor_dialog>

    <actor_dialog>tm_reward_task</actor_dialog> ;— вот этот

    <actor_dialog>treasure_dialog</actor_dialog>

  </specific_character>

 

 

Вроде всё, не забудьте, если создаете новую группировку приписать диалог медпомощи в dialog_manager.ltx, а то будет вылет при помощи раненым, ну можете свои диалоги прописать. Надеюсь, урок кому нибудь пригодиться, хотя я сам не обладаю большим опытом, по идеи ошибок быть не должно.

Ссылка на комментарий

 

В чем прикол вылета? Буквально вчера появился после того как я не много подредактировал логику [meet] нпс, локация загружается спокойно, но спустя 10 секунд игры, при подходе к нпс с редактированой логикой вылет, решил вернуть все как есть, но снова такой же вылет, что я сделал не так?

 

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : C stack overflow

 

Изменено пользователем black_stalker1337
Ссылка на комментарий
1 час назад, black_stalker1337 сказал:

В чем прикол вылета?

 

Самый что нинаесть прикольный прикол, а вас приколистов во всех этих ваших интернетах (гуглах,яндексах и иже с ними) забанили?

по всем видам вылетов, написано столько справочников и гидов, что нинайти ответ может только ленивый,

только на нашем форуме поиск выдаёт овер 400 результатов по запросу    raii_guard::~raii_guard,

ищущий да обрящет!!!

Ссылка на комментарий

Здравствуйте. Хочу написать метод возвращения в ЧН губной гармошки. В интернете есть статьи для ТЧ, но в ЧН требуются дополнительные действия, которые пришлось поискать.

Сначала открываем файл xr_kamp.script по адресу gamedata/scripts

Скрытый текст

 

Здесь в строчке  self.trans_kamp = { idle  = { idle = 0, pre_harmonica = 0, pre_guitar = 50, story = 50}, выставляем вероятность pre_harmonica выше нуля, я например сделал так:  self.trans_kamp = { idle  = { idle = 0, pre_harmonica = 20, pre_guitar = 30, story = 50} но в сумме должно получиться не больше 100. Параметр pre_harmonica — это вероятность с которой НПС начнет играть на гармошке, pre_guitar —  соответственно вероятность игры на гитаре, и story — предположительно вероятность рассказа анекдотов. Далее ищем в файле этот отрывок и убираем черточки впереди:      
--        if npc:object("harmonica_a") then
--            self.npc[npc_id].states["play_harmonica"] = true
--            self.npc[npc_id].states["wait_harmonica"] = true
--            self.kamp_states["pre_harmonica"] = true
--            self.kamp_states["harmonica"] = true
--            self.kamp_states["post_harmonica"] = true
--        else
            self.npc[npc_id].states["play_harmonica"] = false
            self.npc[npc_id].states["wait_harmonica"] = false
            self.kamp_states["pre_harmonica"] = false
            self.kamp_states["harmonica"] = false
            self.kamp_states["post_harmonica"] = false
--        end

 

Дальше находим файл character_items.xml по адресу gamedata/configs/gameplay

Где в список добавляем: harmonica_a = 1, prob=0.6 \n, это позволит гармошке появляться в инверторе НПС, где первая цифра кол-во предметов, а вторая (0.6) вероятность появления, можете написать свою, но она должна быть не больше 1

Далее файл script_sound_music_and_stories.ltx по адресу gamedata/configs/misc:
 

Скрытый текст

 

В нем пишем в самом начале под:

intro_music
play_guitar
reac_music
play_harmonica ;- добавляем это

 

Далее под:

 

[reac_music]
type = npc
avail_communities = csky, stalker, bandit, dolg, freedom, army, renegade, killer, ecolog
npc_prefix = true
path = reactions\music\reaction_music_
shuffle = rnd
idle = 1,1,100
group_snd = true

 

[play_harmonica]
type = npc
avail_communities = csky, stalker, bandit, dolg, freedom, army, renegade, killer, ecolog 
;- здесь группировки которые будут играть на гармошке.
npc_prefix = true
path = music\harmonica_ 
;- адрес звуковых файлов
shuffle = rnd
idle = 1,1,100

 

Ну и последнее, в ЧН вместо звуковых файлов стоят "заглушка"  файл без звука, поэтому вам придется искать звуковые файлы на стороне. Я брал из Call of Chernobyl. Когда найдете их переименуйте в harmonica_номер по порядку, и скиньте в папку music, по адресу gamedata/sounds/characters_voice/human_номер(придется добавлять во все)/(группировка, к примеру bandit)/music. И ещё, необходимо будет начать новую игру, иначе вылет.

Ссылка на комментарий

Некролог (оповещение о смерти сталкера)
Сложность: легко

Автор скрипта: 
Weanchester, взято из stalkerin.gameru
Доработал: Hind
 

Скрытый текст

Создаём скрипт в папке gamedata/scripts и называем его как хотим (в данном случае dmb.script)
Туда пишем:

local level_name = {
  ["l01_escape"] = "Кордон",
  ["l02_garbage"] = "Свалка",
  ["l03_agroprom"] = "НИИ Агропром",
  ["l03u_agr_underground"] = "Подземелье НИИ Агропром",
  ["l04_darkvalley"] = "Тёмная долина",
  ["l04u_labx18"] = "Лаборатория X-18",
  ["l05_bar"] = "Бар",
  ["l06_rostok"] = "Дикая территория",
  ["l07_military"] = "Арм.склады",
  ["l08_yantar"] = "Янтарь",
  ["l08u_brainlab"] = "Лаборатория X-16",
  ["l10u_bunker"] = "Лаборатория X-10",
  ["l10_radar"] = "Радар",
  ["l11_pripyat"] = "Припять",
  ["l12_stancia"] = "ЧАЭС",
  ["l12_stancia_2"] = "ЧАЭС",
  ["l12u_sarcofag"] = "Саркофаг",
  ["l12u_control_monolith"] = "Управление Монолитом"
            }
 
local community = {
    ["stalker"] = "Одиночка",
    ["monolith"] = "Монолит",
    ["military"] = "Военные",
    ["bandit"] = "Бандит",
    ["killer"] = "Наемник",
    ["ecolog"] = "Эколог",
    ["dolg"] = "Долг",
    ["freedom"] = "Свобода",
    ["zombied"] = "Зомбированный",
    ["trader"] = "Торговец"
            }
 
function kill_npc(victim, who)
  if victim and IsStalker(victim) then
local t = time_global()
local dead_news = "%c[0,255,0,0]ПОГИБ СТАЛКЕР \\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Кличка: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""
db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 3000, 4000)
elseif t > time_global() + 3000 then
dmb2.news_sound()
end
end

Дальше идём в xr_motivator.script и туда после function motivator_binder:death_callback(victim, who) пишем  dmb.kill_npc(victim, who)
Должно выйти так:

function motivator_binder:death_callback(victim, who)
    dmb.kill_npc(victim, who)
    if who:id() == db.actor:id() then
        xr_statistic.addKillCount(self.object)
    end

И последнее - создаём ещё один скрипт (в данном случае dmb2.script) и туда пишем:

function news_sound()
local snd_obj
snd_obj = xr_sound.get_safe_sound_object([[device\pda\pda_tip]]) -- путь до звукового файла
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 1, vector(), 1.0)
end

 


Вот и всё! Теперь после смерти сталкеров, спустя 3 секунды у нас будет оповещение о смерти со звуком! 


З.Ы. Статья создана новичком, поэтому и оформлена по васяновски. Прошу меня простить если не понятно :)

Рабочая гитара 

Сложность: средне

Автор скрипта: Hind

*некоторые функции брал из открытых источников. к сожалению авторов не помню

Лежала как то без дела гитара, поделюсь с народом.:drinks:

В этом уроке рассмотрим создание рабочей гитары, которая будет играть ту музыку, которую мы захотим. Нам надо всего 3 файла: bind_stalker.script, ваш_скрипт1.script, ваш_скрипт2.script (в моём случае это dmb и dmb2 соответственно)

 

Скрытый текст

Итак, в bind_stalker.script пишем:

В function actor_binder:net_destroy(), пишем self.object:set_callback(callback.use_object, nil),

В function actor_binder:reinit() пишем     self.object:set_callback(callback.use_object, self.use_object, self)

И где хотим добавляем следующую функцию 
function actor_binder:use_object(obj)
  dmb.use_item(obj)    
  dmb.use_snd(obj)
end



Далее идём в наш созданный скрипт (в данном случае у меня это dmb.script), и там пишем следующее:

 

Скрытый текст

 

local tSound ={
gitara      = "interface\\inv_gitara",    <-- путь до нашего звука при юзании предмета. Вместо него ставим какой хотим, разумеется
}

function use_item(obj) 
    local obj = obj:section()
    if obj then  
        if obj == "gitara" then  <-- наш предмет (в данном случае я уже создал юзабельный предмет, и подогнал его как Гитару)
            dmb2.start_timer() <-- включаем таймер
        end
    end

end

function use_snd(obj)
   if obj and tSound[obj:section()]  then 
      local snd = xr_sound.get_safe_sound_object(tSound[obj:section()])
      if snd then 
      snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0)
      end
   end
   
end    

 


и идём во второй наш скрипт, где пишем:

 

Скрытый текст

   function action_timer()
      alife():create("gitara", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())
   end
 
   function start_timer() <-- функция на которую мы ссылались при юзании в первом скрипте
      local iTimer = time_global() + 17000 <-- наше время песни, т.е. 17 секунд. Спустя 17 секунд, гитара нам вернется в инвентарь.
 
      local function check_timer()
         return time_global() > iTimer
      end
 
      level.add_call(check_timer, action_timer)
   end



Ну, и вроде всё! Не забудьте проверить правильность копирования, убрать стрелочки, с помощью которых я указывал на что либо, и воуаля.

Если где то ошибся, или не работает, маякните :biggrin:

Ссылка на комментарий

Присоединиться к обсуждению

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

Гость
К сожалению, ваш пост содержит слова, запрещенные в нашем сообществе. Пожалуйста, измените ваш текст так, чтобы в нем не оставалось слов, указанных ниже. Помните, что публикация вами даже видоизмененного запрещенного слова может нарушать законодательство РФ и Правила форума.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...