Перейти к содержанию

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

 
 
5 минут назад, Stalkervernite сказал:

Paracetamol Понял. Тебе же надо что бы именно у группировок портилось? Или у гг с группировками отношения портились?

Именно группировки. Хочу масштабную сценку сделать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paracetamol Понял. Тогда не знаю, извини. Щас поищу, может найду...


Дополнено 1 минуту спустя

Paracetamol https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/391/

Нашел, там как раз твой вопрос.

Изменено пользователем Stalkervernite
  • Лайк 1
  • Хабар 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Восстанавливал бюрера. Вылет после его смерти. В гугле есть что-то похожее, но всё равно не то. gamedata\scripts\xr_statistic.script пробовал поковыряться, но всё равно не могу понять почему вылет. 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...s\xray_sdk_0.4\gamedata\scripts\sim_statistic.script:12: attempt to index global 'xr_statistic' (a nil value)

в остальных файлах прописано вот так

gamedata\config\creatures\monsters.ltx 

#include "m_burer.ltx"

добавил иконку

Спойлер

;===========================================================================
; BURER
;===========================================================================
[m_burer_e]:monster_base
GroupControlSection        = spawn_group
SpaceRestrictionSection = space_restrictor,zone_mosquito_bald,zone_radioactive
;$spawn                    = "monsters\old\burer"            ; option for Level Editor
$npc                    = on                        ; option for Level Editor
$prefetch                  = 16
visual                    = monsters\burer\burer
corpse_visual            = monsters\burer\burer
MaxHealthValue            = 100                        ; range [0..200]
icon                     = ui_npc_monster_poltergeist
Spawn_Inventory_Item_Section = mutant_burer_hand
Spawn_Inventory_Item_Probability = 0.2

;------------------------------------------------------------------------
; Offline Alife
;------------------------------------------------------------------------
Scheduled                = on                        ; option for ALife Simulator
Human                     = off                        ; option for ALife Simulator
Health                    = 400                        ; option for ALife Simulator
MinSpeed                = 1.0                        ; option for ALife Simulator
MaxSpeed                = 5.0                        ; option for ALife Simulator
going_speed                = 3;4.5                          ; option for ALife Simulator
search_speed            = 1.5                       ; option for ALife Simulator
smart_terrain_choose_interval    = 00:15:00

;---------------------------------------------------------------------
; Physics
;---------------------------------------------------------------------
ph_box0_center             = 0.0,  0.7,  0.0
ph_box0_size             = 0.35, 0.7,  0.35
ph_box1_center             = 0.0,  0.6,  0.0
ph_box1_size             = 0.35, 0.6,  0.35
ph_crash_speed_min            = 10
ph_crash_speed_max            = 30
ph_collision_damage_factor    = 0.1
ph_mass                 = 70;    100

destroyed_vis_name     = physics\Dead_Body\trupik_crash

;----------------------------------------------------------------------------
ph_skeleton_airr_lin_factor   = 2.0 ;550.0 (изменно из-за того, что убрано домножение коэффициент 0.002 из кода)
ph_skeleton_airr_ang_factor   = 0.0 ;0.0 (изменно из-за того, что убрано домножение на коэффициент 0.3 из кода (0.0*0.3=0.0))
ph_skeleton_hinger_factor1    = 1.0 ;1.0 (изменно из-за того, что убрано домножение на коэффициент 5.0 из кода)
ph_skeleton_ddelay               = 15.0 ;Время изменения значения трения в суставе с момента создания шелла, сек

ph_skel_fatal_impulse_factor  = 6.0
ph_after_death_velocity_factor= 0.75
ph_skel_shot_up_factor        = 0.25
;----------------------------------------------------------------------------

;----------------------------------------------------------------------------
; Movement::Velocities & Acceleration
;----------------------------------------------------------------------------

; speed factors            linear | angular_real | angular_path | min |  max
Velocity_Stand            = 0,        6.0,            6.0,        0.2,    0.5
Velocity_RunFwdNormal    = 5.0,        2.5,            2.5,        0.2,    1    
Velocity_RunFwdDamaged    = 3.5,      3.0,            3.0,        0.2,    1
Velocity_WalkFwdNormal    = 1.6,        3.0,            3.0,        0.02,    1.5
Velocity_WalkFwdDamaged    = 1.0,        3.0,            3.0,        0.5,    2.0    
Velocity_Drag            = 1.0,        3.0,            3.0,        1,        1
Velocity_Steal            = 1.5,        3.0,            3.0,        1,        1

; acceleration
Accel_Generic            = 1.5
Accel_Calm                = 1.5
Accel_Aggressive        = 200 ;6.5

;--------------------------------------------------------------------------
; Attack parameters
;--------------------------------------------------------------------------
MinAttackDist            = 1.5
MaxAttackDist            = 2.5
as_min_dist                = 0.5
as_step                    = 0.3

attack_effector            = m_burer_attack_effector
attack_params            = m_burer_attack_params

Melee_Rotation_Factor    = 1.8
;-------------------------------------------------------------------------
; Entity Conditions
;-------------------------------------------------------------------------

satiety_v                = 0.0001                    ;скорость уменьшения сытости со временем
radiation_v                = 0.00001                    ;скорость уменьшения радиации
satiety_power_v            = 0.001                        ;увеличение силы при уменьшении сытости 
satiety_health_v        = 0.00007                    ;увеличение здоровья при уменьшении сытости 
satiety_critical        = -1.0                        ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться
radiation_health_v        = 0.01                        ;уменьшение здоровья при воздействии радиации
morale_v                = 0.01                        ;скорость восстановления морали
health_hit_part            = 0.5                        ;процент хита, уходящий на отнимание здоровья
power_hit_part            = 1.0                        ;процент хита, уходящий на отнимание силы
psy_health_v            = 0.1                        ;скорость восстановления psy-здоровья

immunities_sect            = burer_immunities

;открытые раны
bleeding_v                        = 0.05                        ;потеря крови при номинальной ране в секунду
wound_incarnation_v                = 0.04                ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду)
min_wound_size                    = 0.01

sleep_health                    = 1.0        ;1.5                ;коэффициенты скоростей изменения параметров во время сна
sleep_power                        = 1.0        ;1.5
sleep_satiety                    = 1.0        ;0.8
sleep_radiation                    = 1.0        ;1.1
sleep_psy_health                = 1.0

eat_freq                        = 5.0        ; частота укусов в сек
eat_slice                        = 0.01    ; увеличение сытости при 1 укусе
eat_slice_weight                = 10.0    ; уменьшение еды у трупа

DayTime_Begin            = 0            ; начала дня для монстра
DayTime_End                = 21        ; конец дня для монстра
Min_Satiety                = 0.6        ; мин. норма сытости (меньше - уже голодный)
Max_Satiety                = 0.9        ; макс. норма сытости (больше - очень сытый)

satiety_threshold        = 0.5                            ; below this value monster fill hunger
;---------------------------------------------------------
; Sounds and sound parameters
;---------------------------------------------------------

sound_idle                = monsters\burer\burer_idle_
sound_eat                = monsters\burer\burer_idle_
sound_aggressive            = monsters\biting\def_
sound_attack_hit        = monsters\burer\burer_attack_
sound_take_damage        = monsters\burer\burer_telekinetic_
sound_die                = monsters\burer\burer_attacking_
sound_threaten            = monsters\biting\def_
sound_landing            = monsters\biting\def_
sound_steal                = monsters\biting\def_
sound_panic                = monsters\burer\burer_attacking_
sound_growling            = monsters\biting\def_
sound_gravi_attack        = monsters\burer\burer_gravi_attack_
sound_tele_attack        = monsters\biting\def_
sound_gravi_wave        = monsters\burer\burer_gravi_wave_0
sound_die_in_anomaly    = monsters\burer\burer_attacking_

killer_clsids                = Z_MINCER,Z_GALANT,ZS_BFUZZ,ZS_MBALD,ZS_GALAN,ZS_MINCE

idle_sound_delay        = 55000;5000
eat_sound_delay            = 3000
attack_sound_delay        = 14000;4000


sound_distant_idle            = monsters\burer\burer_idle_
distant_idle_sound_delay    = 80000
distant_idle_sound_range    = 100.0    


SoundThreshold            = 0.06             ; range [0..1]
max_hear_dist            = 60

;-------------------------------------------------------------------------
; Vision
;-------------------------------------------------------------------------
DynamicObjectsCount        = 32
eye_fov                    = 130
eye_range                = 110

min_view_distance           = 0.6                ; коэффициент, который множится на eye_range, в зависимости от угла
max_view_distance             = 1.0                ; коэффициент, который множится на eye_range, в зависимости от угла
visibility_threshold         = 100.0                ; значение, при достижении суммой которого объект считается видимым
always_visible_distance     = 0.3
time_quant                    = 0.001
decrease_value                = 0.01                ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам
velocity_factor                 = 0.5
luminocity_factor            = 0.5                 ; фактор освещения (только для Актёра)
transparency_threshold        = 0.25

;-------------------------------------------------------------------------
; Morale
;-------------------------------------------------------------------------

Morale_Hit_Quant                = 0.1
Morale_Attack_Success_Quant        = 0.2
Morale_Take_Heart_Speed            = 0.1
Morale_Despondent_Speed            = 0.1
Morale_Stable_Speed                = 0.1
Morale_Despondent_Threashold    = 0.5


;-------------------------------------------------------------------------
; Gravi Ability
;-------------------------------------------------------------------------
Gravi_Speed                    = 76    ; meter/sec    
Gravi_Step                    = 2        ; meter
Gravi_Time_To_Hold            = 1200    ; milisec
Gravi_Radius                = 3.0
Gravi_Impulse_To_Objects    = 60.0
Gravi_Impulse_To_Enemy        = 400.0
Gravi_Hit_Power                = 50.0

;-------------------------------------------------------------------------
; Tele Ability
;-------------------------------------------------------------------------
Tele_Max_Handled_Objects = 1;3    
Tele_Time_To_Hold         = 600
Tele_Object_Min_Mass     = 30.0
Tele_Object_Max_Mass     = 1000.0
Tele_Find_Radius         = 7.0

sound_tele_hold            = monsters\burer\burer_tele_hold
sound_tele_throw        = monsters\burer\burer_tele_throw

;-------------------------------------------------------------------------
; Scanner
;-------------------------------------------------------------------------
scan_critical_value        = 25.0    ; граничное значение 
scan_radius                = 50.0  ; радиус сканирования
scan_velocity_threshold    = 4.0    ; граничная скорость, до которой движение актера игнорируется
scan_decrease_value        = 0.3    ; уменьшение текущей суммы в секунду
scan_trace_time_freq    = 2        ; частота трейса скорости (for programmer only) (1 = 2 раза в сек)

scan_sound                = monsters\burer\burer_scan_affect_0
scan_effector_section    = m_burer_scan_effector

;-------------------------------------------------------------------------
; Particles
;-------------------------------------------------------------------------
Particle_Tele_Object    = static\fire_distort
Particle_Gravi_Wave        = anomaly2\burer_wave
Particle_Gravi_Prepare    = anomaly2\burer_prepare
Particle_Shield            = anomaly2\burer_shield_01

;-------------------------------------------------------------------------
; Other Stuff (refactoring needed)
;-------------------------------------------------------------------------
critical_wound_threshold        = -1
critical_wound_decrease_quant    = 0.

ef_creature_type        = 18                            ; option for evaluation functions
ef_weapon_type            = 12
ef_detector_type        = 1
panic_threshold            = 0.1

cform                    = skeleton                    ; collision class
class                    = SM_BURER                    ; AI class

script_binding          = bind_monster.bind

bone_torso                = bip01_spine1                 ; bone name
bone_head                = bip01_head                ; bone name
bone_fire                = bip01_head                ; bone name
weapon_usage            = 0                            ; boolean
actor_restrictor        = medium_monster ;medium_monster,stalker,none


distance_to_corpse        = 1.2        ; дист. до трупа, при которой он переходит в состояние еды

selector_approach        =  20.0,            1.0,                 1000.0,             0.0,               0.0,              1000.0,                10000.0,      
terrain                    = burer_terrain
hit_type                = wound

DamagedThreshold        = 0.5

material                = creatures\large
step_params                = m_burer_step_params
LegsCount                = 2
damage                    = m_burer_damage

;species of monster
species                    = burer
rank                    = 0
spec_rank                = weak
community                = burer
monster_type            = indoor

;=================================================================================
; Burer Attack Params
;=================================================================================
[m_burer_attack_params]
;---------------------------------------------------------------------------------------------------------------------------------------------
;    anim            | time[0..1] | hit_power | impulse | impulse_dir (x,y,z)  |    Field of hit_test  (left,right, bottom, top ) |    Test Dist
;---------------------------------------------------------------------------------------------------------------------------------------------
;Left hand Strike
stand_attack_0 =          0.4,          0.40,         100,        2.0, 1.0, 0.5,         -1.6, 1.6, -1.6, 1.6,                  2.5


;=================================================================================
; Burer Attack Effector
;=================================================================================

[m_burer_attack_effector]

duality_h            = 0.1; 0.01 
duality_v            = 0.01; 0.01
blur                = 0.01
gray                = 0.5
noise_intensity        = 0.1;0.0
noise_grain            = 1
noise_fps            = 30
color_base            = 0.65,0.15,0.1
color_gray            = 0.333,0.333,0.333
color_add            = 0.0,0.0,0.0
time                = 3.00
time_attack            = 0.05        ; fade in
time_release        = 0.50        ; fade out

; camera effects
ce_time                = 0.30 ;time 
ce_amplitude        = 12.0 
ce_period_number    = 2.0 
ce_power            = 1.0 ;0.7 ; power 


;=================================================================================
; Burer Step Params
;=================================================================================

[m_burer_step_params]
;---------------------------------------------------------------------------
;    anim            | Cycles | time1 | power1 | time2 | power2 |
;---------------------------------------------------------------------------
stand_walk_fwd_0     =       1,      0.4,    1,      0.9,    0.7,    
stand_walk_dmg_0     =       1,      0.4,    1,      0.9,    0.7,    
stand_run_fwd_0         =       1,      0.4,    1,      0.9,    0.6,    
stand_run_dmg_0        =       1,      0.4,    1,      0.9,    0.6,    

;===========================================================================
; BURER IMMUNITIES
;===========================================================================
[burer_immunities]
burn_immunity            = 1.0
strike_immunity            = 1.0
shock_immunity            = 1.0
wound_immunity            = 1.0
radiation_immunity        = 0.0
telepatic_immunity        = 1.0
chemical_burn_immunity    = 1.0
explosion_immunity        = 0.5
fire_wound_immunity        = 0.5

;=================================================================================
; Burer Damage
;=================================================================================

[m_Burer_damage]
;bone_name         = <hit_scale>,-1,<wound_scale>
;<hit_scale>    - коэфф. изменения хита (уменьшения здоровья) 
;<wound_scale>    - коэфф. изменения величины открытой раны

default                = 0.05, -1, 0.1

bip01_pelvis             = 0.2, -1, 0.1
bip01_spine             = 0.3, -1, 0.1
bip01_spine1             = 0.3, -1, 0.1
bip01_neck                 = 0.3, -1, 0.5
bip01_head                 = 1.0, -1, 0.2
;=================================================================================
; Burer Scan Effector
;=================================================================================
[m_burer_scan_effector]
duality_h            = 0.003
duality_v            = 0.002
blur                = 1.5
gray                = 0.3
noise_intensity        = 0.0
noise_grain            = 2
noise_fps            = 8
color_base            = 0.55,0.5,0.5;0.637,0.442,0.456
color_gray            = 0.333,0.333,0.333
color_add            = 0.05,0.0,0.0
time                = 10.00
time_attack            = 0.3        ; fade in
time_release        = 0.85        ; fade out

;=================================================================================
; Terrain
;=================================================================================
[burer_terrain]
    255,000,255,255

;=================================================================================
; *** PROFILES *******************************************************************
;=================================================================================


[burer_arena]:m_burer_e
$spawn            = "monsters\arena\burer_arena"
visual                = monsters\burer\burer_1
panic_threshold        = 0.05
species                = arena_monstr
spec_rank            = weak
rank                = 0
community            = burer

explosion_immunity        = 0.2
fire_wound_immunity        = 0.1

; Gravi Strike
Gravi_Speed                    = 76    ; meter/sec    
Gravi_Step                    = 2        ; meter
Gravi_Time_To_Hold            = 1200    ; milisec
Gravi_Radius                = 3.0
Gravi_Impulse_To_Objects    = 60.0
Gravi_Impulse_To_Enemy        = 400.0
Gravi_Hit_Power                = 0.5

; Tele Strike
Tele_Max_Handled_Objects = 3    ;1;3    
Tele_Time_To_Hold         = 100    ;600
Tele_Object_Min_Mass     = 30.0
Tele_Object_Max_Mass     = 2000.0 ;1000.0
Tele_Find_Radius         = 15    ;7.0


[m_burer_normal]:m_burer_e
$spawn        = "monsters\burers\burer_normal"
monster_type        = indoor
rank                = 0
spec_rank            = weak
community            = burer
Tele_Time_To_Hold    = 200

[m_burer_normal_black]:m_burer_e
$spawn        = "monsters\burers\burer_normal_black"
visual                = monsters\burer\burer_1
monster_type        = indoor
rank                = 0
spec_rank            = weak
community            = burer
Tele_Time_To_Hold    = 200

[burer_indoor]:m_burer_normal
$spawn            = "monsters\burers\burer_indoor"
monster_type    = indoor
Tele_Time_To_Hold         = 200

[burer_outdoor]:m_burer_normal
$spawn            = "monsters\burers\burer_outdoor"
;monster_type    = outdoor

Спойлер


local killCountProps = {
    neutral_novice = 1, neutral_experienced = 2, neutral_veteran = 3, neutral_master = 4,
    monolith_novice = 1, monolith_experienced = 2, monolith_veteran = 3, monolith_master = 4,
    military_novice = 1, military_experienced = 2, military_veteran = 3, military_master = 4,
    killer_novice = 1, killer_experienced = 2, killer_veteran = 3, killer_master = 4,
    ecolog_novice = 1, ecolog_experienced = 2, ecolog_veteran = 3, ecolog_master = 4,
    dolg_novice = 1, dolg_experienced = 2, dolg_veteran = 3, dolg_master = 4,
    freedom_novice = 1, freedom_experienced = 2, freedom_veteran = 3, freedom_master = 4,
    bandit_novice = 1, bandit_experienced = 2, bandit_veteran = 3, bandit_master = 4,
    zombied_novice = 1, zombied_experienced = 2, zombied_veteran = 3, zombied_master = 4,
    
    tushkano_weak = 1,
    flesh_weak = 1, flesh_normal = 2, flesh_strong = 3,
    boar_weak = 1, boar_normal = 2, boar_strong = 3,
    dog_weak = 1, dog_normal = 2, dog_strong = 3,
    pseudodog_weak = 1, pseudodog_normal = 2, pseudodog_strong = 3,
    psy_dog_weak = 1, psy_dog_normal = 2, psy_dog_strong = 3,
    snork_weak = 2, snork_normal = 3, snork_strong = 4,
    poltergeist_weak = 2,
    pseudo_gigant_weak = 4,
    controller_weak = 4,
    bloodsucker_weak = 1, bloodsucker_normal = 2, bloodsucker_strong = 3,
    m_burer_e = 1
}

local sect_alias = {    
    tushkano_normal = "tushkano_weak", tushkano_strong = "tushkano_weak",
    poltergeist_normal = "poltergeist_weak", poltergeist_strong = "poltergeist_weak",
    pseudo_gigant_normal = "pseudo_gigant_weak", pseudo_gigant_strong = "pseudo_gigant_weak",
    controller_normal = "controller_weak", controller_strong = "controller_weak",
    psy_dog_weak = "psy_dog", psy_dog_normal = "psy_dog", psy_dog_strong = "psy_dog", rad_psy_dog = "psy_dog"
}

monster_classes = {
            [clsid.tushkano_s    ] = "tushkano",
            [clsid.flesh_s       ] = "flesh",
            [clsid.boar_s        ] = "boar",
            [clsid.dog_s         ] = "dog",
            [clsid.pseudodog_s   ] = "pseudodog",
            [clsid.psy_dog_s     ] = "psy_dog",
            [clsid.psy_dog_phantom_s] = "NIL",
            [clsid.snork_s       ] = "snork",
            [clsid.poltergeist_s ] = "poltergeist",
            [clsid.gigant_s      ] = "pseudo_gigant",
            [clsid.controller_s  ] = "controller",
            [clsid.bloodsucker_s ] = "bloodsucker"
            [clsid.burer_s ]       = "burer"
        }        


function addKillCount(npc)
    local props, sect = getNpcType(npc)
    if props == nil then
        return
    end

    local sect_name
    if sect_alias[sect] ~= nil then
        sect_name = sect_alias[sect]
    else
        sect_name = sect
    end

    if killCountProps[sect_name] == nil then
--'        print_table(sect_alias)
--'        abort("Statistic ERROR: required section [%s] not present, based [%s]", tostring(sect_name), tostring(sect))
        return
    end
    actor_stats.add_points(props, sect_name, 1, killCountProps[sect_name])
    db.actor:set_character_rank(db.actor:character_rank() + killCountProps[sect_name])
end


function getNpcType(npc)
    if IsStalker(npc) then
        local community = "neutral"
        if npc:character_community() == "monolith" then
            community = "monolith"
        elseif npc:character_community() == "military" then
            community = "military"
        elseif npc:character_community() == "killer" then
            community = "killer"
        elseif npc:character_community() == "ecolog" then
            community = "ecolog"
        elseif npc:character_community() == "dolg" then
            community = "dolg"
        elseif npc:character_community() == "freedom" then
            community = "freedom"
        elseif npc:character_community() == "bandit" then
            community = "bandit"
        elseif npc:character_community() == "zombied" then
            community = "zombied"
        end
        local rank = ranks.get_obj_rank_name(npc)
        return "stalkerkills", community.."_"..rank
    else
        local community = monster_classes[get_clsid(npc)]
        if community == nil then
            abort("Statistic ERROR: cannot find monstr class for [%s]", npc:name())
        end
        if community == "NIL" then
            return nil,nil
        end
        
        local rank = ranks.get_obj_rank_name(npc)
        return "monsterkills", community.."_"..rank
    end    
end

дальше вот так

gamedata\scripts\class_registrator.script

    cs_register    (object_factory, "CBurer",          "se_monster.se_monster",    "SM_BURER",    "burer_s")

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
3 минуты назад, Pepel сказал:

    m_burer_e = 1

Вместо этого напиши:
    burer_weak = 1, burer_normal = 2, burer_strong = 3,

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, imcrazyhoudini сказал:

Вместо этого напиши:
    burer_weak = 1, burer_normal = 2, burer_strong = 3,

я вот пытался burer_weak = 1 написать, но тоже ничего не поменялось. У меня кстати, даже сдк крашенулся, да так, что видеокарта два монитора отправила в сон. Сдк запустился, но сцена - всё черным-черно и вот такой лог. Пойду перезапускать машину.

FATAL ERROR
 
[error]Expression    : Device lost
[error]Function      : S:\sources\Editors\ECore\Editor\Device.cpp
[error]File          : S:\sources\Editors\ECore\Editor\Device.cpp
[error]Line          : 337
[error]Description   : HW.pDevice->Present( NULL, NULL, NULL, NULL )

 
 


Дополнено 42 минуты спустя
46 минут назад, imcrazyhoudini сказал:

Вместо этого напиши:
    burer_weak = 1, burer_normal = 2, burer_strong = 3,

всё равно пишет

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...s\xray_sdk_0.4\gamedata\scripts\sim_statistic.script:12: attempt to index global 'xr_statistic' (a nil value)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

del

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

Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

oleg19966 что ты братишка агрессируешь? Не видишь я новенький?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Добрый день. Такой вопрос интересный...часа 2 не могу решить проблему спавна ГГ. All.spawn распаковал, секцию с одного alife перенес на локацию другого alife, прописал координаты. Все равно спавнится в родном месте.  Может ли быть какая то проблема, связанная с тем что я снёс весь оригинальный сюжет? :u1F913:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
7 минут назад, NachtSpinne сказал:

Добрый день. Такой вопрос интересный...часа 2 не могу решить проблему спавна ГГ. All.spawn распаковал, секцию с одного alife перенес на локацию другого alife, прописал координаты. Все равно спавнится в родном месте.  Может ли быть какая то проблема, связанная с тем что я снёс весь оригинальный сюжет? :u1F913:

не понял причем тут alife. У всех спавн-элементов координаты прописаны в определенных секциях. Ты что-то другое поменял.


Дополнено 3 минуты спустя

просто пример из секции своего урока. Здесь прописан сталкер которого я делал через all.spawn

[871] 
; cse_abstract properties
section_name = stalker                ;
name = esc_stream6oy                ;
position = -239, -20, -161            ; место появления на карте. можно целые числа.
direction = 0, 0, 0                    ;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
11 минут назад, Pepel сказал:

не понял причем тут alife. У всех спавн-элементов координаты прописаны в определенных секциях. Ты что-то другое поменял.


Дополнено 3 минуты спустя

просто пример из секции своего урока. Здесь прописан сталкер которого я делал через all.spawn

[871] 
; cse_abstract properties
section_name = stalker                ;
name = esc_stream6oy                ;
position = -239, -20, -161            ; место появления на карте. можно целые числа.
direction = 0, 0, 0                    ;

Странно, я нашел урок о том, что типа надо перенести секцию спавна игрока с alife кордона, на alife своей локации, и дополнительно прописать свои координаты...сейчас попробую не переносить ничего, а просто забить координаты. 


Дополнено 9 минуты спустя

Pepel NachtSpinne не, не помогло. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
6 минут назад, NachtSpinne сказал:

Странно, я нашел урок о том, что типа надо перенести секцию спавна игрока с alife кордона, на alife своей локации, и дополнительно прописать свои координаты...сейчас попробую не переносить ничего, а просто забить координаты. 

Спойлер

[63]

; cse_abstract properties
section_name = actor
name = level_prefix_actor_0001
position = -246.726303100586, -24.7932605743408, -134.433868408203
direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974
s_flags = 0x29
version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 4
distance = 0.699999988079071
level_vertex_id = 11713
object_flags = 0xffffffbf
custom_data = <<END
[dont_spawn_character_supplies]

[spawn]
wpn_binoc
detector_simple
novice_outfit
device_torch
END

; cse_visual properties
visual_name = actors\hero\stalker_novice

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
dynamic_out_restrictions = 
dynamic_in_restrictions = 

; cse_alife_trader_abstract properties
money = 40
trader_flags = 0
character_profile = actor

; cse_ph_skeleton properties

; cse_alife_creature_actor properties
upd:health = 1
upd:timestamp = 0x75732029
upd:creature_flags = 0x70
upd:position = -246.726303100586, -24.7932605743408, -134.433868408203
upd:o_torso = -1.39625442028046, 0.00431653670966625, 0
upd:actor_state = 0xd20
upd:actor_weapon = 110

Зеленым в первом варианте позиция меченого. В upd:position дублируется значение. Я не знаю за что этот параметр отвечает (возможно кто-нибудь ответит что это из более опытных), просто сделай их одинаковыми. Другим цветом отметил game и level vertex, тут тоже значения свои установи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
10 минут назад, Pepel сказал:
  Вот оригинальная секция из alife_l01_escape.ltx (Скрыть контент)

[63]

; cse_abstract properties
section_name = actor
name = level_prefix_actor_0001
position = -246.726303100586, -24.7932605743408, -134.433868408203
direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974
s_flags = 0x29
version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 4
distance = 0.699999988079071
level_vertex_id = 11713
object_flags = 0xffffffbf
custom_data = <<END
[dont_spawn_character_supplies]

[spawn]
wpn_binoc
detector_simple
novice_outfit
device_torch
END

; cse_visual properties
visual_name = actors\hero\stalker_novice

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
dynamic_out_restrictions = 
dynamic_in_restrictions = 

; cse_alife_trader_abstract properties
money = 40
trader_flags = 0
character_profile = actor

; cse_ph_skeleton properties

; cse_alife_creature_actor properties
upd:health = 1
upd:timestamp = 0x75732029
upd:creature_flags = 0x70
upd:position = -246.726303100586, -24.7932605743408, -134.433868408203
upd:o_torso = -1.39625442028046, 0.00431653670966625, 0
upd:actor_state = 0xd20
upd:actor_weapon = 110

Зеленым в первом варианте позиция меченого. В upd:position дублируется значение. Я не знаю за что этот параметр отвечает (возможно кто-нибудь ответит что это из более опытных), просто сделай их одинаковыми. Другим цветом отметил game и level vertex, тут тоже значения свои установи.

Я это все сделал. Кроме жёлтого. Это же вроде позиционирование актора в пространстве, если не ошибаюсь. Их можно не трогать или нужно? Если нужно, то я их не менял, так как вообще хз откуда значения брать для жёлтого. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 минут назад, NachtSpinne сказал:

Я это все сделал. Кроме жёлтого. Это же вроде позиционирование актора в пространстве, если не ошибаюсь. Их можно не трогать или нужно? Если нужно, то я их не менял, так как вообще хз откуда значения брать для жёлтого. 

я прикручивал скрипт который снимал координаты через esc-титры. Там все координаты выводились на экран когда вернешься в игру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Вот это обязательно менять 

game_vertex_id = 4
level_vertex_id = 11713

А вот это как раз и отвечает за положение актора вернее его ориентации взгляда. Вернее поворота гг при спавне.

direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974

Позишен информер в помощь.

  • Сталкерский лайк 1
  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
36 минут назад, stalkersof сказал:

Вот это обязательно менять 

game_vertex_id = 4
level_vertex_id = 11713

А вот это как раз и отвечает за положение актора вернее его ориентации взгляда. Вернее поворота гг при спавне.

direction = 0.00431653670966625, -1.39625442028046, -0.00068671052576974

Позишен информер в помощь.

Все, спасибо. Позиционер вещь, а то я через консоль координаты писал. Но там не вся инфа и одна из координат почему то вообще не то значение показывало. Все получилось, можно продолжать идти дальше. :u1F913:

  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Посоны, как убрать тряску камеры на ЧАЭС-2? Хотя бы просто визуально, чтобы ГГ не трясся)

  • Клоун 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Три дня и три ночи я вот уже не могу добавить себе крысу. Тренился на бюрере по уроку ниже

Спойлер

 

в итоге - как был вылет так он и остался. забил на бюрера, решил попробовать восстановить крысу - копировал, исправлял, копировал, снова исправлял. Как была ошибка "Can't create entity:m_rat_e", так она и осталась. Что посоветуете господа хорошие?:u1F62D:


Дополнено 1 минуту спустя

ПЫС: добавлял из скаченного мода. Так и назывался мод на тч "Крысы".


Дополнено 16 минуты спустя

Изменил класс в настройках на настроки тушканчика, ошибка исчезла. В игре пока не пробовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Господа, как заспавнить труп НПС вне аи-сетки. Отключал использования аи сетки в сдк - нет толку. Спавнил скриптом труп - нет толку. Может знает кто как починить этот недуг?

Движок ОГСР.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
9 часов назад, Hunter сказал:

Посоны, как убрать тряску камеры на ЧАЭС-2? Хотя бы просто визуально, чтобы ГГ не трясся)

Вот тут посмотри. Я сам отключал но это было давно не помню уже как. Но вроде бы статья толковая. Это все надо сделать для фриплея. Там в скрипте условие добавляется по которому действия не происходят. В частности если выдан инфопоршень то условие не выполняется. 

http://stalkerin.gameru.net/wiki/index.php?title=SoC._Создаем_фриплей_за_пару-тройку_минут.#.D0.97.D0.B5.D0.BC.D0.BB.D0.B5.D1.82.D1.80.D1.8F.D1.81.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.BF.D0.BE.D0.B4.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BA.D1.80.D0.B8.D0.BF.D1.82.D0.BE.D0.B2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel 

2 часа назад, Pepel сказал:

Изменил класс в настройках на настроки тушканчика, ошибка исчезла. В игре пока не пробовал.

Да это и так понятно. ТЕБЕ ВСЕ ГОВОРЯТ УЖЕ ПОМЕНЯЙ КЛАСС. Тебе взять просто буквально и поменять одну строчку

С class                = AI_RAT_G Поменять на  class                = SM_CAT_S    


Дополнено 1 минуту спустя

Pepel 

2 часа назад, Pepel сказал:

Три дня и три ночи я вот уже не могу добавить себе крысу. Тренился на бюрере по уроку ниже

  Восстановление вырезанных монстров: зомби, бюрер, ползающий полтергейст (Показать контент)

 

в итоге - как был вылет так он и остался. забил на бюрера, решил попробовать восстановить крысу - копировал, исправлял, копировал, снова исправлял. Как была ошибка "Can't create entity:m_rat_e", так она и осталась. Что посоветуете господа хорошие?:u1F62D:


Дополнено 1 минуту спустя

ПЫС: добавлял из скаченного мода. Так и назывался мод на тч "Крысы".


Дополнено 16 минуты спустя

Изменил класс в настройках на настройки тушканчика, ошибка исчезла. В игре пока не пробовал. 

... Тебе надо лимит поставить на сообщение... Или хотя бы в личку писать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

NachtSpinne тутор от меня. былдо создано 3 нпс по этому тутору. Все работали корректно

Спойлер

Просмотр данного файла желателен через программу Notepad++ для корректного отображения скриптов и конфигов.

<1. Снятие координата в которой заспавнится нпс>
Функция спавна имеет вид alife():create(section,position,levelvertex,gamevertex)  
Где:  section - имя того/чего спавним  position,levelvertex,gamevertex - координаты, позиция вершины обьекта, и сектора карты. 
Заходим, предварительно распаковав, в каталог gamedata/scripts/, в файле ui_main_menu.script в конце дописываем: 

function main_menu:OnButton_credits_clicked()
local text
local vid
local gvid
local a = vector()
local text
a = db.actor:position()
vid = db.actor:level_vertex_id()
gvid = db.actor:game_vertex_id()
text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end

Теперь в игре идём на то место (или ногами или деморекордом), где будет спавниться обьект, выходим в меню игры, и жмём на клавишу СОЗДАТЕЛИ или ТИТРЫ (CREDITS) - соответственно нашему взоры не предстаёт никакой список создателей, а мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Скриним или записываем координаты.

Спавнить нпс мы будем рядом с деревней новичков (справа от выхода из бункера Сидоровича) возле кладбища.
В нашем случае:
position= -245, -19, -163
level_vertex= 12032
game_vertex= 47

Примечание через ~вводим demo_record и просматриваем в режиме бога всё что происходит вокруг

Задание: снять координаты для 10 новых сталкеров в разных точках карты (escape)
</конец обзаца>

<2. Персонаж.>
Для создания персонажа необходимо создать его профиль, описание и спаун-секцию.

2.1 Создание профиля персонажа
Чтобы создать профиль персонажа, необходимо в файл 
«gamedata\config\gameplay\npc_profile.xml» добавить строки:

    <character id="esc_grave1_stalker_leader">            ;идентификатор профиля
        <class>esc_grave1_stalker_leader</class>        ;идентификатор класса
    </character>
</2>
<Идентификатор профиля конструируется как>
<префикс_уровня>_<идентификатор_сцены>_<группировка_персонажа>_<описательное_название>, 
например, zat_b7_stalker_raider_leader. Во избежание путаницы, класс персонажа указывается такой 
же, как идентификатор профиля. Класс персонажа используется для связи профиля и описания 
персонажа.

</конец обзаца>

<2.2.    Создание описания персонажа>
    
    С одним профилем персонажа может быть ассоциировано несколько описаний персонажей. 
Это позволяет, добавив в игру несколько персонажей с одним и тем же профилем, получить в 
результате персонажей с различным набором вещей, разным внешним видом (visual), и т.д. Для того 
чтобы создать описание персонажа, необходимо в файл
«gamedata\config\gameplay\character_desc_имя_уровня.xml» добавить следующую конструкцию:


<!---------------------------------------esc_stream6oy------------------------------------------------> ;комментарий. в данном случае вписан краткое название/имя персонажа. 
  <specific_character id="esc_grave1_stalker_leader" team_default = "1">                                ;идентификатор описания. Во избежание путаницы идентификатор описания: a) аналогичен идентификаторам класса и профиля в случае, если с профилем ассоциируется только одно описание; b) конструируется как <дентификатор_профиля>_ _default_<номер> (начиная с нуля), если с профилем ассоциируется несколько описаний.
        <name>@Stream6oy</name>                                                                            ;идентификатор строки имени.
        <icon>ui_npc_u_stalker_neytral_balon_1</icon>                                                    ;идентификатор текстуры иконки.
        <map_icon x="1" y="0"></map_icon>                                                                ;расположение иконки по оси координат х/у.
        <bio>esc_wolf_bio</bio>                                                                            ;идентификатор строки биографии (можно любое. пысы отказались от этой фичи, поэтому можно не прописывать.
    
        <class>esc_grave1_stalker_leader</class>                                                        ;идентификатор класса.
        <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>                        ;группировка персонажа.
    
        <rank>600</rank>                                                                                ;ранг. Число, определяющее относительную «крутизну» персонажа:0 - 300 – новичок (novice), 301 - 600 – опытный (experienced), 601 - 900 – ветеран (veteran), 901 - 999 – мастер (master)
        <reputation>5</reputation>                                                                        ;репутация.
        <money min="2" max="256" infinitive="0"/>                                                        ;деньги.
    
        <visual>actors\neytral\stalker_prizrak</visual>                                                    ;внешний вид. Путь к файлу «*.ogf» от папки «gamedata\meshes», содержащему внешний вид (visual) персонажа. Указывается без начальной «обратной косой», без точки и без расширения файла.От внешнего вида зависит бронированность персонажа.
        <snd_config>characters_voice\human_01\stalker\</snd_config>                                        ;папка озвучки. Существует три разных голоса human_01 - молодой, human_02 - более взрослый, human_02 - голос в противогазе
        <crouch_type>-1</crouch_type>                                                                    ;
        <panic_treshold>0</panic_treshold>                                                                ; от 0 до 1, сли функция оценки вероятности победы падает ниже указанного порога, то сталкер впадает в панику. сли установить 0 - в панику он впадать вообще не будет. Если ы 1 - то будет бегать от крысы.

        <supplies>                                                                                        ;то что спавнится в инвенате
        [spawn] \n                                                                                         ;секция спавна назначенных предметов
        wpn_bm16 \n                                                                                        ;wpn - оружие
        ammo_12x70_buck \n                                                                                ;ammo - партроны
#include "gameplay\character_items.xml"                                                                    ;#include (вероятность "выпадания" предметов из документа character_items.xml)
#include "gameplay\character_food.xml"                                                                    ;#include (вероятность "выпадания" предметов из документа character_food.xml)
#include "gameplay\character_drugs.xml"                                                                    ;#include (вероятность "выпадания" предметов из документа character_drugs.xml)
    </supplies>
    
#include "gameplay\character_criticals_4.xml"                                                            ;#include (вероятность "выпадания" предметов из документа character_items.xml)

    <start_dialog>hello_dialog</start_dialog>                                                            ;Стартовый диалог персонажа. Более подробно в описании диалогов.
  </specific_character>

</конец обзаца>

<3. Прописывание в секцию персонажа >
gamedata\config\creatures\spawn_sections.ltx
;--------имяуровня--------------                    ;чтобы отделить одних сталкеров от других
;--------имягруппировки------------                    ;чтобы точно понимать кто и где состоит
[esc_grave1_stalker_leader]:stalker
$spawn                = "respawn\esc_grave1_stalker_leader"
character_profile     = esc_grave1_stalker_leader
spec_rank             = novice
community             = stalker

</конец обзаца>

<4. Назначение файла с логикой поведения нпс>
Создаем по адресу gamedata\config\scripts файл с логикой в формате <префикс_уровня>_<идентификатор_сцены>_<группировка_персонажа>_<описательное_название>.ltx
В нашем случае esc_grave1_stalker_leader.ltx и лежит он в папке esc

Пример логики №1 (простой)
Пример логики при которой нпс находится на точке в которую его поставили. После прописывания файла в аллспавн логику можно изменить.

[logic]                                ;секция логики. здесь прописаны действия которые в последующих секциях выполняет нпс 
active = remark@start                ;первая фцнкция которую выполнит нпс. remark (замечание или реакция с которой начинается логика нпс) отправляет через домен (@) на старт, т.е. выполняет какое-то действие (см. секцию [remark@start])
combat_ignore = combat_ignore        ;логика боя. расписана в секции [combat_ignore]
danger = danger_condition            ;
 
[remark@start]                        
anim = wait                            ;анимация ремарка, по умолчанию wait (ожидание)
target = nil                        ;цель (направление взгляда, куда смотрит) = в пустоту (nil)
 
[combat_ignore]                        ;секция боя
combat_ignore_cond = always            ;

[danger_condition]                    ;условия реакции на опасность
ignore_distance = 0                    ;игнорирование дистанции на опасность. в нашем случае - ноль. Расстояние в метрах.
ignore_distance_corpse = 0            ;

Пример логики №2 (более сложный)

[logic]                                ;
active = walker@start                ;

[walker@start]                        ;
path_walk = stream6oy_walk            ;stream6oy_walk - данные связываются с командой прописанной в файле way_l01_escape.ltx all.spawn

В файле way_l01_escape.ltx (all.spawn) прописывется секция путей по которой сталкер будет ходить непрерывно возвращаясь 

[stream6oy_walk]                    ;секция ссылается на код прописанный в доке с логикой
points = p0,p1                        ;все пути (поинты)
p0:name = name00                    ;название нулевого поинта
p0:position = -239, -20, -161        ;координаты нулевого поинта
p0:game_vertex_id = 47                ;гейм-вертексы нулевого поинта
p0:level_vertex_id = 15547            ;левел-вертексфы нулевого поинта
p0:links = p1(1)                    ;переход (линия) от нулевого поинта к следующей точке (в нашем случае предыдущему поинту - p1)

p1:name = name01                             
p1:position = -255, -16, -174                                                         
p1:game_vertex_id = 41                                                                 
p1:level_vertex_id = 7836                                                            
p1:links = p2(2)                    ;переход/возврат к следующей/предыдущей точке

Если в строке задать через запятую точки как показано в примере, то нпс будет каждый раз возвращаясь в р0 (нулевой поинт/точку) отправляться в очередную точку.
p[0]:links = p1(1),p2(1),p3(1)
Нужно заметить, что после равенства не нужно прописывать сам поинт из которого следует нпс.

Задание: задать 5 разным персонажам логику из 1 примера и 5 из примера 1

</конец обзаца>

<5. Прописываем нпс в конфиги>
gamedata\config\game_story_ids.ltx
В самый конец вписываем 
  6001          = "esc_grave1_stalker_leader" ;порядковый номер и профиль
  
</конец обзаца>

<6. Прописывание в all.spawn>

[871]                                ;номер секции в которой будет нпс. если она будет повторяться, то игра вылетит.
; cse_abstract properties
section_name = stalker                ;
name = esc_stream6oy                ;
position = -239, -20, -161            ; место появления на карте. можно целые числа.
direction = 0, 0, 0                    ;

; cse_alife_trader_abstract properties
money = 256                            ;
character_profile = esc_grave1_stalker_leader    ;

; cse_alife_object properties
game_vertex_id = 47                    ;точка появления в игре
distance = 5
level_vertex_id = 15547                ;точка появления на уровне                                
object_flags = 0xffffffbf
custom_data = <<END

[logic]                                            ;секция с логикой
cfg = scripts\esc_grave1_stalker_leader.ltx        ;файл с логикой в скриптах который можно менять даже после компиляции all.spawn. НО только нпс из примера 1!

[smart_terrains]
none = true
END
story_id = 6001                                    ;(в конец) прописываем нпс в файл gamedata\config\game_story_ids.ltx

; cse_visual properties
visual_name = actors\neytral\stalker_prizrak    ;визуал. в нашем случае визуал призрака

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 5
dynamic_out_restrictions = 
dynamic_in_restrictions = 

; cse_alife_monster_abstract properties

; cse_alife_human_abstract properties
equipment_preferences = 0, 2, 0, 2, 0
main_weapon_preferences = 1, 2, 2, 0
smart_terrain_id = 65535

; cse_ph_skeleton properties

; se_stalker properties
upd:health = 1
upd:timestamp = 0x302e3020
upd:creature_flags = 0x36
upd:position = -239, -20, -161                ;еще раз прописываем позицию место появления на карте. можно целые числа.
upd:o_torso = 0, 0, 0                        ;
upd:g_squad = 1
upd:g_group = 5

; cse_alife_human_stalker properties
upd:start_dialog = 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

*Заметка: в секции [63] находится гг. Его можно переместить поменяв координаты в соответсвующих секциях описанных в изложенном материале.
Если нужно поставить путь, то переходим к 7му пункту

Задание по пункту 4 выполнить!
</конец обзаца>

<7.Логика>
Углубленное изучение логики
В секции all.spawn содержится строчка которая уводит на логику в файл esc_grave1_stalker_leader.ltx (gamedata\config\scripts) 
[logic]                                            ;секция с логикой
cfg = scripts\esc_grave1_stalker_leader.ltx        ;папка где лежал все скрипты с логикой к уровню на кордоне. *Удивительно что остальные файлы с логикой пысы додумались расфасовать по подпапкам

В котором содержится код с секцией логики. Скрипт logic управляет переключением схем. В customdata любого персонажа (кроме свободных) должна присутствовать сеция [logic].
Функции, на которые ссылается секция [logic] должны находится в файлах \gamedata\scripts\xr_effects.script или \gamedata\scripts\xr_conditions.script.

В секции должно присутствовать одно из полей: 
active = активная схема, запускающаяся первой. после = обычно следует схема walker (ходок).
cfg = имя_ltx_файла_с_настройками

Если задано поле cfg, то в качестве настроек персонажа будет использовано содержимое указанного файла. 
Пример. Настройки простого walker-а: 

[logic]
active = walker

[walker]
path_walk = walk1                ;путь движения нпс. если задана одна точка пути, то нпс не будет двигаться до определенных условий. в случае опасности, в прежнюю точку не вернется.
path_look = look1                ;направление взгляда нпс. если задана одна точка пути, то нпс не будет двигаться до определенных условий. в случае опасности, в прежнюю точку не вернется. иные функции - анимация в стоячем положении, анимации в движущемся положении расматривается в пункте 7.1

[logic]                            ;секция логики
active = walker@start            ;что будет выполняться в нашем случае черезе домен (собака) прописано дейсвие которое будет выполняться

[walker@start]                    ;действие
path_walk = stream6oy_walk        ;путь = пути в файле way_l01_escape.ltx (all.spawn) секция [stream6oy_walk]

=====================================
Простая логика при которой нпс будет стоять на одном месте. Если его что-то спугнет, то он на точку не вернется.

[logic]
active = remark@start                
combat_ignore = combat_ignore        
danger = danger_condition            
 
[remark@start]
anim = wait                            
target = nil                        
 
[combat_ignore]
combat_ignore_cond = always

[danger_condition]
ignore_distance = 0
ignore_distance_corpse = 0

<7.1. Работа с WayPoint`ами >

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

ВНИМАНИЕ!
ФЛАГИ НЕ БУДУТ РАБОТАТЬ если:

1. после строчки "p0:name = wp00|flag1|flag2" с прописанными флагами в секции [look] не прописать код "p0:flags = 0x1"
2. после строчки "p0:name = wp00|flag1|flag2" с прописанными флагами [look] прописать код "p0:flags = 0x1" то тоже ничего не сработает.
3. Игра вылетит если в секции [walk] после строчки "p0:name = wp00|flag1|flag2" был прописан код "p0:flags = 0x1", но не был прописан в секции [look].
4. после "p0:name = wp00|flag1|flag2" не будет "p0:flags = 0x1", то нпс просто ходит покругу, однако, если в секции [walk] прописать флаг анимации, то она будет работать.

[bar_a1_proveren_1_walk]
points = p0,p1,p2
*p0:name = wp00
*p0:flags = 0x1
p0:position = 115.718330383301,-5.30424022674561,12.8380241394043
p0:game_vertex_id = 1005
p0:level_vertex_id = 33757
p0:links = p1(1),p2(1)

*p1:name = wp01
*p1:flags = 0x2
p1:position = 114.466262817383,-5.30527496337891,19.9635791778564
p1:game_vertex_id = 1005
p1:level_vertex_id = 33621
p1:links = p0(1),p2(1)

*p2:name = wp02
*p2:flags = 0x3
p2:position = 114.42066192627,-5.30447292327881,17.8189525604248
p2:game_vertex_id = 1005
p2:level_vertex_id = 33491
p2:links = p0(1),p1(1)


[bar_a1_proveren_1_look]
points = p0,p1,p2
*p0:name = wp00|a=choose|t=40000
*p0:flags = 0x1
p0:position = 115.913108825684,-5.30524301528931,11.6880483627319
p0:game_vertex_id = 934
p0:level_vertex_id = 76465

*p1:name = wp01|a=choose|t=40000
*p1:flags = 0x2
p1:position = 113.710746765137,-5.30527496337891,19.9635791778564
p1:game_vertex_id = 1005
p1:level_vertex_id = 33494

*p2:name = wp02|a=ward|t=10000
*p2:flags = 0x3
p2:position = 113.741851806641,-5.30447292327881,17.8189525604248
p2:game_vertex_id = 1005
p2:level_vertex_id = 33492

</конец обзаца>

<8.1. Анимация >


</конец обзаца>

<>


</конец обзаца>

Секции нпс в allspawn на кордоне

[93]
esc_lager1

[98]
esc_lager6

[94]
esc_lager2

[95]
esc_lager3

[97]
esc_lager5

[100]
esc_wolf

[99]
esc_lager7

[96]
esc_lager4

 


Дополнено 5 минуты спустя

Stalkervernite я поменял класс, скопировал секции настроек из мода файла m_rat.ltx и вроде даже победил все основные ошибки. Но вот последнюю ошибку никак не могу победить. Выглядит она вот так

Expression    : count != 0
Function      : CControlAnimationBase::UpdateAnimCount
File          : E:\stalker\sources\trunk\xr_3da\xrGame\ai\Monsters\control_animation_base.cpp
Line          : 426
Description   : Error! No animation: stand_idle_ for monster l01_escape_m_rat_e

О боги моддинга, что не так? Все анимации есть, крыса в АЕ нормально работает. Где-то может быть прописан этот самый stand_idle_ который может быть логично будет удалить?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Paracetamol знаю как можно в оригинале через AC/DC. Только что проверил - Волк спавнится на крыше как и положено. Не знаю, сработает ли через СДК и на ОГСР движке. Напиши в личку, если надо.

Спойлер

ss_Олег_03-03-24_15-49-27_(l01_escape).jpg

 

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

Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Pepel Не найдена анимация stand_idle_

Тебе нужно взять анимацию крысы самой.

Щас скину.


Дополнено 0 минут спустя

rat_anim_3m_soc.ogfrat_animation.omfrat_anim_3m_soc.omf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн