Пользователей: 0
Гостей: 1775
Всего: 1775

» Подробно
» Сегодня

Привет, гость!









Автор Сообщение
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
12-01-2011 12:23 GMT3 час. #1416263   
Всем привет!
Короче вопрос такой, почему логика у НПСа, заспавненного скриптом, не работает?

Вот его секция:
[monolith_sniper_limansk]:stalker
$spawn = "respawn\monolith_sniper_limansk_01"
character_profile = monolith_sniper_limansk
spec_rank = regular
community = monolith
cfg = scripts\monolith_sniper_limansk.ltx

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


SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
12-01-2011 12:40 GMT3 час. #1416269   
Mehanik Yar, потому что надо присвоить логику через нет-пакеты, если уж скриптом спавнишь.


Хочешь работать нормально, работай один!
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
12-01-2011 12:45 GMT3 час. #1416270   
А как это делается через нет-пакеты?


erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
12-01-2011 13:08 GMT3 час. #1416279   
Mehanik Yar
Не нужно никаких нетпакетов - просто писать надо правильно:
не cfg, а
custom_data = scripts\имя_файла.ltx


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
nexus_13
    
Посты: 4
Откуда:
Возраст:
12-01-2011 13:14 GMT3 час. #1416284   
вопрос?
почему умина ни получица распаковать Level

----------------------------------------------------------------------------------------------------------------
E:\S.T.A.L.K.E.R\level_editor\converter -level l01_escape -out 01_escape -mode le
log statted
path $maps$ does not exist
path $objects$ does not exist

E:\S.T.A.L.K.E.R\level_editor>pause
----------------------------------------------------------------------------------------------------------------
вот файл converter.ini
================
; Имена профилей
; <имя_профиля> = <секция_профиля>
;
; Profile names
; =
[profiles]
1098 = 1098_config
1114 = 1114_config
1154 = 1154_config
2215 = 2215_config
2945 = 2945_config
default = 2947_config
3120 = 3120_config
cs = 3456_config
aitest = aitest_config

; пути только абсолютные!
; absolute paths only
[1098_config]
$game_levels$ = c:\temp\1\gamedata.1098\levels\
shader_substs = 1098_shader_substs

[1098_shader_substs]
; 1098
def_aref = def_shaders\def_aref
def_vertex = def_shaders\def_vertex
def_vertex_for_fog = def_shaders\def_vertex
def_leaf = flora\leaf_wave
def_leaf2 = flora\leaf_wave
particle_add = particles\add
glow = effects\glow
rockwalls7_detail = default ; FIXME
def_vertex_ghost = def_shaders\def_vertex
def_burning_vein = default ; FIXME
def_specular_vein = default ; FIXME
def_amb = default ; FIXME
_collide = default ; FIXME
landscape_lev5aztec = default ; FIXME
fx_fog1 = default ; FIXME
fx_lava1 = default ; FIXME
fx_fluids2 = default ; FIXME


; 1114, 1154
[1114_config]
$game_levels$ = c:\temp\1\gamedata.1114\levels\
shader_substs = 11xx_shader_substs
texture_substs = 11xx_texture_substs
auto_gamemtls = 11xx_auto_gamemtls

[1154_config]
$game_levels$ = c:\temp\1\gamedata.1154\levels\
shader_substs = 11xx_shader_substs
texture_substs = 11xx_texture_substs
auto_gamemtls = 11xx_auto_gamemtls

[11xx_shader_substs]
flora\leaf = flora\leaf_wave
flora\leaf_sux = flora\leaf_wave
flora\trunk = flora\trunk_wave
levels\l1_escape\terrain = levels\escape_grass
levels\l1_escape\terrain_00 = levels\escape_grass

[11xx_texture_substs]
trees\trees_topolgreen = trees\trees_topolgreenv
glass3 = fx\shadow ; FIXME

; в 1114/1154 материалов ещё не было, поэтому назначаем по текстуре.
; замена происходит _после_ подстановки текстур в соответствии с
; предыдущей секцией.
;
; Game materials were introduced in post 1114/1154 builds, so we
; have to auto-assign game material by texture. Note this happens
; after the texture substition is done according to previous section.
[11xx_auto_gamemtls]
$shadertest = default
corp\corp_dog = materials\cloth
corp\corp_human1 = materials\cloth
corp\corp_human2 = materials\cloth
corp\corp_human3 = materials\cloth
corp\corp_rat = materials\cloth
corp\corp_stalker = materials\cloth
corp\corp_zomby1 = materials\cloth
crete\crete_border1 = materials\concrete
crete\crete_border2 = materials\concrete
crete\crete_floor1 = materials\concrete
crete\crete_floor3 = materials\concrete
crete\crete_floor4 = materials\flooring_tile
crete\crete_floor4a = materials\flooring_tile
crete\crete_floor_linol = materials\flooring_tile
crete\crete_girder1 = materials\concrete
crete\crete_golima_daxa = materials\concrete
crete\crete_pol_t = materials\flooring_tile
crete\crete_potolok_gr = materials\stucco
crete\crete_railborder1 = materials\concrete
crete\crete_railborder2 = materials\concrete
crete\crete_roof1 = materials\shifer
crete\crete_roof1_border = materials\concrete
crete\crete_roof2 = materials\shifer
crete\crete_schiffer1 = materials\shifer
crete\crete_schiffer2 = materials\shifer
crete\crete_schiffer2a = materials\shifer
crete\crete_schiffer3 = materials\shifer
crete\crete_stena_kraska_02 = materials\stucco
crete\crete_walls1 = materials\stucco
crete\crete_walls10 = materials\stucco
crete\crete_walls11 = materials\flooring_tile
crete\crete_walls12 = materials\concrete
crete\crete_walls13 = materials\stucco
crete\crete_walls14 = materials\flooring_tile
crete\crete_walls16 = materials\wood
crete\crete_walls16a = materials\wood
crete\crete_walls17 = materials\stucco
crete\crete_walls17a = materials\stucco
crete\crete_walls18 = materials\stucco
crete\crete_walls18a = materials\stucco
crete\crete_walls19 = materials\stucco
crete\crete_walls2 = materials\wood
crete\crete_walls20 = materials\wood
crete\crete_walls3 = materials\concrete
crete\crete_walls4 = materials\concrete
crete\crete_walls5 = materials\concrete
crete\crete_walls6 = materials\stucco
crete\crete_walls7 = materials\stucco
crete\crete_walls8 = materials\stucco
crete\crete_walls8a = materials\stucco
crete\crete_walls8b = materials\stucco
crete\crete_walls9 = materials\stucco
crete\crete_walls9a = materials\stucco
crete\crete_walls9_a = materials\stucco
crete\crete_walls_tual = materials\flooring_tile
crete\crete_walls_tual_a = materials\flooring_tile
crete\crete_walls_tual_b = materials\flooring_tile
det\det_kustsux1 = materials\cloth
door\door_j02 = materials\metal_plate
door\door_j03alfa = materials\metal_plate
fbr\fbr_linoleum1 = default
fx\fx_fire1 = default
fx\fx_sun = default
fx\shadow = default
glas\glas_dirt = materials\glass
glas\glas_windows1 = materials\glass
glas\glas_windows1a = materials\glass
glas\glas_windows2a = materials\glass
glas\glas_windows2b = materials\glass
glas\glas_windows2c = materials\glass
glas\glas_windows2d = materials\glass
glas\glas_windows3 = materials\glass
glas\glas_windows3a = materials\glass
glas\glas_windows3b = materials\glass
glas\glas_windows4 = materials\glass
glas\glas_windows5b = materials\glass
glas\glas_windows5c = materials\glass
glas\glas_windows6 = materials\glass
glas\glas_windows6b = materials\glass
grnd\grnd_asphalt1 = materials\asphalt
grnd\grnd_asphalt1_border = materials\asphalt
grnd\grnd_asphalt2 = materials\asphalt
grnd\grnd_asphalt2 = materials\asphalt
grnd\grnd_asphalt2a = materials\asphalt
grnd\grnd_asphalt3 = materials\asphalt
grnd\grnd_drygrass1 = materials\earth
grnd\grnd_drygrass1a = materials\earth
grnd\grnd_dry_j02 = materials\earth
grnd\grnd_garbage1 = materials\earth
grnd\grnd_grass2 = materials\grass
grnd\grnd_grass4 = materials\grass
grnd\grnd_hangbush1 = materials\grass
grnd\grnd_mudwalls1 = materials\sand
grnd\grnd_mudwalls2 = materials\sand
grnd\grnd_obriv_a = materials\sand
grnd\grnd_railroad1 = materials\earth
grnd\grnd_road_a = materials\earth
grnd\grnd_road_a1 = materials\earth
levels\l1_escape\terrain = materials\earth
levels\l1_escape\terrain_00 = materials\earth
mtl\mtl_angar_a = materials\metal_plate
mtl\mtl_angar_a_d = materials\metal_plate
mtl\mtl_bochka_01 = materials\tin
mtl\mtl_bochka_02 = materials\tin
mtl\mtl_bochka_03_r = materials\tin
mtl\mtl_fence1 = materials\setka_rabica
mtl\mtl_fence2 = materials\setka_rabica
mtl\mtl_fence2n = materials\setka_rabica
mtl\mtl_fence3 = materials\setka_rabica
mtl\mtl_fence4 = materials\setka_rabica
mtl\mtl_gate_j01a = materials\metal_plate
mtl\mtl_metall_02_a = materials\metal_plate
mtl\mtl_perehod01 = materials\tin
mtl\mtl_perehod02 = materials\tin
mtl\mtl_railroad_04 = materials\gravel
mtl\mtl_railroad_04_bok = materials\metal
mtl\mtl_railroad_05 = materials\gravel
mtl\mtl_rails1 = materials\metal
mtl\mtl_resh_reil = materials\metal
mtl\mtl_resh_reil_a = materials\metal
mtl\mtl_resh_reil_b = materials\metal
mtl\mtl_resh_reil_c = materials\metal
mtl\mtl_shkaf = materials\tin
mtl\mtl_steps1 = materials\metal_plate
mtl\mtl_trub_z_01 = materials\metal_pipe
mtl\mtl_tubes1 = materials\metal_pipe
mtl\mtl_tubes2 = materials\metal_pipe
mtl\mtl_tubes3 = materials\metal_pipe
mtl\mtl_tubes3a = materials\metal_pipe
mtl\mtl_tubes4 = materials\metal_pipe
mtl\mtl_tubes51 = materials\metal_pipe
mtl\mtl_tubes6 = materials\metal_pipe
mtl\mtl_tubes_05_a = materials\metal_pipe
mtl\mtl_vorota_a = materials\metal_plate
mtl\mtl_walls1 = materials\metal_plate
mtl\mtl_walls10 = materials\metal_plate
mtl\mtl_walls11 = materials\metal_plate
mtl\mtl_walls12 = materials\metal_plate
mtl\mtl_walls13 = materials\metal_plate
mtl\mtl_walls14 = materials\metal_plate
mtl\mtl_walls15 = materials\metal_plate
mtl\mtl_walls16 = materials\metal_plate
mtl\mtl_walls1a = materials\metal_plate
mtl\mtl_walls2 = materials\metal_plate
mtl\mtl_walls3 = materials\metal_plate
mtl\mtl_walls3a = materials\metal_plate
mtl\mtl_walls4 = materials\metal_plate
mtl\mtl_walls5 = materials\metal_plate
mtl\mtl_walls6 = materials\metal_plate
mtl\mtl_walls7 = materials\metal_plate
mtl\mtl_walls8 = materials\metal_plate
mtl\mtl_walls9 = materials\metal_plate
mtl\mtl_walls9a = materials\metal_plate
mtl\mtl_x-support1 = materials\metal_plate
mtl\mtl_x-support2 = materials\metal_plate
prop\prop_barbwire1 = materials\setka_rabica
prop\prop_barbwire2 = materials\setka_rabica
prop\prop_barbwire3 = materials\setka_rabica
prop\prop_barrel1_small = materials\tin
prop\prop_batarea_p = materials\metal_plate
prop\prop_bathhole1 = default
prop\prop_bathhole2 = default
prop\prop_bed1 = materials\setka_rabica
prop\prop_bed1a = materials\setka_rabica
prop\prop_bed2 = materials\cloth
prop\prop_bed2a = materials\cloth
prop\prop_bed2b = materials\cloth
prop\prop_bed2c = materials\cloth
prop\prop_bed2d = materials\cloth
prop\prop_bed2h = materials\cloth
prop\prop_box1 = materials\cloth
prop\prop_box1a = materials\cloth
prop\prop_box1b = materials\cloth
prop\prop_box2 = materials\cloth
prop\prop_box2a = materials\cloth
prop\prop_box2b = materials\cloth
prop\prop_braiding1 = default
prop\prop_busdead1 = materials\metal_plate
prop\prop_busdead1a = materials\metal_plate
prop\prop_busdead1b = materials\metal_plate
prop\prop_busdead1c = materials\metal_plate
prop\prop_busdead1f = materials\metal_plate
prop\prop_ceil = materials\stucco
prop\prop_chair1 = materials\wooden_board
prop\prop_chair1a = materials\wooden_board
prop\prop_clock1 = materials\glass
prop\prop_cloth2 = materials\cloth
prop\prop_crate1 = materials\metal_plate
prop\prop_crate2 = materials\metal_plate
prop\prop_crush_ceil = materials\stucco
prop\prop_door1 = materials\wooden_board
prop\prop_door2 = materials\metal_plate
prop\prop_door3 = materials\wooden_board
prop\prop_door4 = materials\metal_plate
prop\prop_door5 = materials\metal_plate
prop\prop_door6 = materials\wooden_board
prop\prop_door7 = materials\metal_plate
prop\prop_door8 = materials\wooden_board
prop\prop_door9 = materials\wooden_board
prop\prop_door_a = materials\wooden_board
prop\prop_door_tual = materials\wooden_board
prop\prop_electricalunit1 = materials\tin
prop\prop_electricalunit2 = materials\tin
prop\prop_electricalunit3 = materials\tin
prop\prop_electricalunit3a = materials\tin
prop\prop_electricalunit3b = materials\tin
prop\prop_electroengine1 = materials\metal_plate
prop\prop_elektr = materials\tin
prop\prop_garbage1 = materials\metal
prop\prop_govno = default
prop\prop_grate1 = default
prop\prop_grate2 = default
prop\prop_grate4 = default
prop\prop_hanger1 = default
prop\prop_hanger2 = default
prop\prop_hanglock1 = materials\metal
prop\prop_hanglock2 = materials\metal
prop\prop_house_door1 = materials\wooden_board
prop\prop_kniga = default
prop\prop_konserv1 = materials\tin
prop\prop_konserv2 = materials\tin
prop\prop_konserv3 = materials\tin
prop\prop_kruchok = default
prop\prop_lampa_g = default
prop\prop_lampa_galogen = default
prop\prop_lampa_galogen_2s = default
prop\prop_lampa_g_red2 = default
prop\prop_lampa_o = materials\tin
prop\prop_lamppost1 = default
prop\prop_lamppost1a = default
prop\prop_lamppost1b = default
prop\prop_lamppost2 = default
prop\prop_lamppost2a = default
prop\prop_lep1 = default
prop\prop_lep1a = default
prop\prop_lift_button = default
prop\prop_lift_door = materials\wooden_board
prop\prop_locker1 = materials\wooden_board
prop\prop_locker1_s = materials\wooden_board
prop\prop_mattress1 = materials\cloth
prop\prop_musor_01 = materials\metal_plate
prop\prop_number1 = materials\tin
prop\prop_ognetushit = materials\tin
prop\prop_paper = materials\fake
prop\prop_plafond1 = materials\glass
prop\prop_plitka_lab = materials\flooring_tile
prop\prop_priluki = default
prop\prop_primab = default
prop\prop_primar = default
prop\prop_prozektor = materials\glass
prop\prop_pult1 = materials\tin
prop\prop_radiator1 = materials\metal
prop\prop_radiator2 = materials\metal
prop\prop_roadblock1 = materials\concrete
prop\prop_roadborder1 = materials\metal_plate
prop\prop_roadborder1_rear = materials\metal_plate
prop\prop_roadborder2 = materials\concrete
prop\prop_roadborder21 = materials\concrete
prop\prop_sheet = materials\cloth
prop\prop_shirma1 = materials\cloth
prop\prop_shitok = materials\tin
prop\prop_sigarets = default
prop\prop_socket1 = default
prop\prop_stupeni_a = materials\concrete
prop\prop_stupeni_b = materials\concrete
prop\prop_switch1 = default
prop\prop_tabl = materials\wooden_board
prop\prop_table1 = materials\wooden_board
prop\prop_table1a = materials\wooden_board
prop\prop_table1b = materials\wooden_board
prop\prop_table1c = materials\wooden_board
prop\prop_tempmeter1 = materials\tin
prop\prop_tor3 = default
prop\prop_tor4 = default
prop\prop_trainwheel1 = materials\metal
prop\prop_trainwheel1a = materials\metal
prop\prop_trainwheel2 = materials\metal
prop\prop_trube = materials\metal_pipe
prop\prop_truckdead1 = materials\wooden_board
prop\prop_truckdead1a = materials\metal_plate
prop\prop_truckdead1b = materials\metal_plate
prop\prop_tubedetails1 = materials\metal_pipe
prop\prop_tubedetails2 = materials\metal_pipe
prop\prop_ukazatel = materials\tin
prop\prop_vac = materials\metal_plate ; ???
prop\prop_vagon01 = materials\wooden_board
prop\prop_vagon01a = materials\metal_plate
prop\prop_vagon01b = materials\metal_plate
prop\prop_vagon01c = materials\metal_plate
prop\prop_vagon01d = materials\metal_plate
prop\prop_vagon01e = materials\metal_plate
prop\prop_vagon02 = materials\metal_plate
prop\prop_vagon02a = materials\metal_plate
prop\prop_vagon02b = materials\metal_plate
prop\prop_vagon02e = materials\metal_plate
prop\prop_vagon04 = materials\metal_plate
prop\prop_vagon04a = materials\metal_plate
prop\prop_voda1 = materials\glass
prop\prop_wardrobe1 = materials\wooden_board
prop\prop_wardrobe1a = materials\wooden_board
prop\prop_wardrobe2 = materials\wooden_board
prop\prop_wardrobe2a = materials\wooden_board
prop\prop_waterpump1_step = materials\metal_plate
prop\prop_wheel1_small = materials\metal_plate
prop\prop_wheel2_small = materials\metal_plate
prop\prop_wires1 = materials\fake
prop\prop_woodenreel1 = materials\wooden_board
prop\prop_yantar = materials\cloth
sign\sign_stop1 = materials\tin
sign\sign_stop1_rear = materials\tin
sign\sign_voltage1 = materials\tin
sign\sign_ziggyroad1 = materials\tin
sign\sign_ziggyroad1_rear = materials\tin
ston\ston_asfalt_a = materials\asphalt
ston\ston_asfalt_a_r = materials\asphalt
ston\ston_asfalt_b = materials\asphalt
ston\ston_asfalt_c = materials\asphalt
ston\ston_big_kirp = materials\bricks
ston\ston_bordur_j01 = materials\concrete
ston\ston_bordur_j03 = materials\concrete
ston\ston_bricks1 = materials\bricks
ston\ston_bricks10 = materials\bricks
ston\ston_bricks11 = materials\bricks
ston\ston_bricks12 = materials\bricks
ston\ston_bricks12a = materials\bricks
ston\ston_bricks2 = materials\bricks
ston\ston_bricks3 = materials\bricks
ston\ston_bricks4 = materials\bricks
ston\ston_bricks5 = materials\bricks
ston\ston_bricks6 = materials\bricks
ston\ston_bricks7 = materials\bricks
ston\ston_bricks8 = materials\bricks
ston\ston_bricks9 = materials\bricks
ston\ston_bricks_1973 = materials\bricks
ston\ston_kirpichi_a = materials\bricks
ston\ston_osnova = materials\concrete
ston\ston_plints1 = materials\concrete
ston\ston_plints2 = materials\concrete
ston\ston_rocks1 = materials\concrete
ston\ston_ros_wall_03 = materials\stucco
ston\ston_stena_04a = materials\concrete
ston\ston_stena_04b = materials\concrete
ston\ston_stena_04c = materials\concrete
ston\ston_stena_04d = materials\concrete
ston\ston_stena_04e = materials\concrete
ston\ston_stena_04f = materials\concrete
ston\ston_stena_04g = materials\concrete
ston\ston_stena_04h = materials\concrete
ston\ston_stena_05b = materials\stucco
ston\ston_stena_06a = materials\bricks
ston\ston_stena_07_a = materials\stucco
ston\ston_stena_07_c = materials\stucco
ston\ston_stena_07_d = materials\stucco
ston\ston_stena_07_e = materials\stucco
ston\ston_stolb_rail = materials\concrete
ston\ston_walls1 = materials\concrete
ston\ston_walls2 = materials\concrete
ston\ston_walls3 = materials\concrete
ston\ston_walls4 = materials\concrete
ston\ston_walls4_border = materials\concrete
ston\ston_zabor_02 = materials\concrete
terrain\terrain_l1escape = materials\earth
terrain\terrain_rainbow = materials\earth
trees\trees_bark = materials\tree_trunk
trees\trees_byaka = materials\bush
trees\trees_elka = materials\bush
trees\trees_elkabark = materials\tree_trunk
trees\trees_forestwall1 = default
trees\trees_forestwall2 = default
trees\trees_kustik1 = materials\bush
trees\trees_topolgreenv = materials\tree_trunk
trees\trees_vetka = materials\bush
trees\trees_vetka1 = materials\bush
trees\trees_vetkabig = materials\bush
trees\trees_vetkabig = materials\bush
trees\trees_vetkagreen = materials\bush
trees\trees_vetkagreen3 = materials\bush
trees\trees_vetkagreen3 = materials\bush
trees\trees_vetkagreen5 = materials\bush
trees\trees_vetkatopol = materials\bush
veh\veh_btr = materials\metal
veh\veh_btr_br = materials\metal
veh\veh_diesel1 = materials\metal
veh\veh_diesel1b = materials\metal_plate
veh\veh_diesel1c = materials\metal_plate
veh\veh_diesel1d = materials\metal_plate
veh\veh_diesel2 = materials\metal
veh\veh_diesel2b = materials\metal_plate
veh\veh_diesel2c = materials\metal_plate
veh\veh_diesel2d = materials\metal_plate
veh\veh_lada1 = materials\metal_plate
veh\veh_ladawheels1 = materials\cloth
veh\veh_moskvitch1 = materials\metal_plate
veh\veh_niva1 = materials\metal_plate
veh\veh_nivawheels1 = materials\cloth
veh\veh_nivawheels1a = materials\cloth
veh\veh_raf1 = materials\metal_plate
veh\veh_rafwheel1 = materials\cloth
water\water_pool1 = materials\water
wind\wind_04 = materials\glass
wind\wind_05 = materials\glass
wind\wind_j06b = materials\glass
wind\wind_okno_a_01 = materials\glass
wind\wind_okno_a_02 = materials\glass
wood\wood_chipboard1 = materials\wood
wood\wood_doski = materials\wooden_board
wood\wood_perila = materials\wooden_board
wood\wood_plank1 = materials\wooden_board
wood\wood_plank2 = materials\wooden_board
wood\wood_plank3 = materials\wooden_board
wood\wood_plank4 = materials\wooden_board
wood\wood_plank5 = materials\wooden_board
wood\wood_plank6 = materials\wooden_board
wood\wood_plank7 = materials\wooden_board
wood\wood_platband1 = materials\wooden_board
wood\wood_tor = materials\wooden_board
wood\wood_walls1 = materials\wood
wood\wood_walls10 = materials\wood
wood\wood_walls11 = materials\wood
wood\wood_walls2 = materials\wood
wood\wood_walls3 = materials\wood
wood\wood_walls4 = materials\wood
wood\wood_walls4a = materials\wood
wood\wood_walls5 = materials\wood
wood\wood_walls6 = materials\wood
wood\wood_walls6a = materials\wood
wood\wood_walls7 = materials\wood
wood\wood_walls7a = materials\wood
wood\wood_walls8 = materials\wood
wood\wood_walls9 = materials\wood
wood\wood_wire = materials\wooden_board


; 2215
[2215_config]
$game_data$ = c:\temp\1\gamedata.2215\
$game_levels$ = c:\temp\1\gamedata.2215\levels\
shader_substs = 2215_shader_substs
fake_mu_gamemtls = 2xxx_fake_mu_gamemtls
fake_gamemtls = 2xxx_fake_gamemtls
inadhesive_shaders = 2xxx_inadhesive_shaders
wallmark_shaders = 2xxx_wallmark_shaders

[2215_shader_substs]
levels\terazoid_exp-bath_r = levels\mp_atp_asfalt
levels\terazoid_exp-bath_t = levels\mp_atp_grass
levels\mp_factory_cy2701 = levels\mp_factory_grass
levels\mp_factory_cy27 = levels\mp_factory_asfalt
levels\l_lenin\terrain_grass = levels\mp_railroad_grass
levels\frodo_dd_asfalt = levels\mp_railroad_asfalt
levels\frodo_dd_pesok = levels\mp_railroad_sand

; фильтр для зашитых в геометрию декалей
;
; filter to detect compiled-in wallmarks (level.wallmarks is redundant)
[2xxx_wallmark_shaders]
effects\wallmark
effects\wallmarkset
effects\wallmarkblend
effects\wallmarkmult

; к MU-моделям можно подклеивать CFORM-кусочки только с
; перечисленными материалами.
;
; Only CFORM-cuts with game materials listed below will be merged.
[2xxx_fake_mu_gamemtls]
materials\bush
materials\tree_trunk

; в _fake.object будут попадать лишь CFORM-кусочки
; с перечисленными материалами.
;
; _fake.object will contain only CFORM-cuts with
; game materials listed here.
[2xxx_fake_gamemtls]
materials\fake
materials\death

; кусочки с такими engine_shader'ами нельзя приклеивать к чему-либо
;
; geometry cuts with engine shaders listed below cannot be merged
[2xxx_inadhesive_shaders]
effects\water
effects\waterstuden
effects\waterryaska
effects\lightplanes
;selflight


; 2945
[2945_config]
$game_data$ = E:\S.T.A.L.K.E.R\Gamedata\
$game_levels$ = E:\S.T.A.L.K.E.R\Gamedata\levels\
fake_mu_gamemtls = 2xxx_fake_mu_gamemtls
fake_gamemtls = 29xx_fake_gamemtls
inadhesive_shaders = 2xxx_inadhesive_shaders
wallmark_shaders = 2xxx_wallmark_shaders

[29xx_fake_gamemtls]:2xxx_fake_gamemtls
materials\earth_death


; 2947+ (финалка включая обновления)
[2947_config]:2945_config
$game_data$ = E:\S.T.A.L.K.E.R\Gamedata\
$game_levels$ = E:\S.T.A.L.K.E.R\Gamedata\levels\

[test_config]:2947_config

$game_data$ = E:\S.T.A.L.K.E.R\temp\Gamedata\
$game_levels$ = E:\S.T.A.L.K.E.R\temp\test_levels\

[3120_config]:2947_config
$game_data$ = E:\S.T.A.L.K.E.R\temp\Gamedata\
$game_levels$ = E:\S.T.A.L.K.E.R\temp\test_levels\


; 3456+ (Clear Sky включая обновления)
[3456_config]:2947_config
$game_data$ = c:\temp\1\gamedata.3502\
$game_levels$ = c:\temp\1\gamedata.3502\levels\
fake_mu_gamemtls = 34xx_fake_mu_gamemtls
fake_gamemtls = 34xx_fake_gamemtls

[34xx_fake_mu_gamemtls]:2xxx_fake_mu_gamemtls
materials\bush_sux

[34xx_fake_gamemtls]:2xxx_fake_gamemtls
materials\water_radiation


; далее идут независимые от профиля настройки (лучше их не трогать).
;
; profile-independent settings follow (it is better to not touch these).

[settings]
debug_texture = temp\temp_purewhite1 ; для отладки. не трогать.
fake_gamemtl = materials\fake ; забыл, гг
ladders_gamemtl = materials\fake_ladders; лестницы
ghost_eshader = effects\lightning ; для подсветки невесомой геометрии (с -dbgcfrm)

; здесь указывается текстура и, возможно, шейдеры для восстановленной из CFORM геометрии
; = <текстура>[, [, ]]
;
; presets to set shaders/material for CFORM geometry
; = [, [, ]]
[collider_presets]
materials\bush = trees\trees_fuflo, def_shaders\def_trans, flora\flora_collision
materials\bush_sux = trees\trees_fuflo, def_shaders\def_trans, flora\flora_collision
materials\tree_trunk = trees\trees_bark_a_01, def_shaders\def_trans, flora\flora_collision
materials\fake_ladders = prop\prop_fake_ladder, def_shaders\def_vertex
materials\death = prop\prop_fake_dead, def_shaders\def_vertex, def_shaders\def_kolizion
materials\fake = prop\prop_fake_kollision, def_shaders\def_vertex, def_shaders\def_kolizion
materials\glass = glas\glas_temp, def_shaders\def_vertex, def_shaders\def_kolizion
materials\water_radiation = water\water_normal, def_shaders\def_vertex, def_shaders\def_kolizion

; для раскраски геометрии по game_material (с -dbgcfrm)
; = <текстура>
;
; to paint geometry according to game material (with -dbgcfrm option)
; =
[debug_cform_textures]
default = sign\sign_gerb
materials\asphalt = ston\ston_asfalt_b
materials\bricks = ston\ston_bricks3
materials\bush = trees\trees_fuflo ; если надо видеть фуфло
;materials\bush = tree\tree_fuflo ; в 3120 фуфло только такое
materials\cloth = andy\andy_btn_fake
materials\concrete = crete\crete_concrete_03
materials\death = prop\prop_fake_dead
materials\dirt = grnd\grnd_dirt1
materials\earth = grnd\grnd_zemlya2_iov
materials\earth_slide ; намеренно пустая строка
materials\fake ; намеренно пустая строка
materials\fake_ladders ; намеренно пустая строка
materials\flooring_tile = crete\crete_plitka2
materials\glass = glas\glas_temp
materials\grass = grnd\grnd_grass1
materials\gravel = grnd\grnd_dtr_iov
materials\metal = mtl\mtl_bayda_con
materials\metal_pipe = mtl\mtl_tubes7
materials\metal_plate = mtl\mtl_angar_a_b
materials\sand = grnd\grnd_sand
materials\setka_rabica = mtl\mtl_fence2n
materials\shifer = crete\crete_schiffer1
materials\stucco = crete\crete_stuccowall_iov
materials\tin = prop\prop_banka2
materials\tree_trunk = trees\trees_bark_a_01
materials\water = water\water_ryaska1
materials\water_radiation = water\water_ryaska1
materials\wood = wood\wood_jasik
materials\wooden_board = wood\wood_chipboard1
objects\glass ; намеренно пустая строка

; для замены имени карты (на диске) на более осмысленное (только без -out)
;
; to auto-rename some levels (works without -out option only)
[scene_names]
lev5_aztec = aztec
escape_koanyvrot = escape1114
level1_game = escape1154
level1_car = escape1154c
level2_game = agroprom1154
level2_car = agroprom1154c
=================================================
и fsconverter.ltx

$sdk_root$ = false| false| E:\S.T.A.L.K.E.R\
$sdk_root_raw$ = false| false| $sdk_root$| rawdata\
$local_root$ = false| false| $sdk_root$
$server_backup$ = true| false| $sdk_root$| backup\
;
$game_data$ = false| true| $sdk_root$| gamedata\
$game_ai$ = true| false| $game_data$| ai\
$game_spawn$ = true| false| $game_data$| spawns\
$game_levels$ = true| false| $game_data$| levels\
$game_meshes$ = true| true| $game_data$| meshes\| *.ogf;*.omf| Game Object files
$game_anims$ = true| true| $game_data$| anims\| *.anm;*.anms| Animation files
$game_dm$ = true| true| $game_data$| meshes\| *.dm| Detail Model files
$game_shaders$ = true| true| $game_data$| shaders\
$game_sounds$ = true| true| $game_data$| sounds\
$game_textures$ = true| true| $game_data$| textures\
$game_saves$ = true| false| $sdk_root$| savedgames\| *.sav| Saved games
$game_scripts$ = true| false| $game_data$| scripts\| *.script| Game script files
$game_config$ = true| false| $game_data$| config\
;
$level$ = false| false| $game_levels$
$logs$ = true| false| $sdk_root$| logs\| *.err| Log files
$sounds$ = true| true| $sdk_root_raw$| sounds\| *.wav| Wave files
$textures$ = true| true| $sdk_root_raw$| textures\
$objects$ = true| true| $sdk_root_raw$| objects\| *.object;*.lwo| XRay objects
$clips$ = true| true| $sdk_root_raw$| objects\| *.clip| Object clips
$maps$ = true| true| $sdk_root$| maps\| *.level| XRay levels
$groups$ = true| true| $sdk_root$| groups\| *.group| XRay groups
$temp$ = true| false| $sdk_root$| temp\
$import$ = true| true| $sdk_root$| import\| *.object;*.lwo;*.txt;*.xr;*.wav;*.obj;*.ltx| Files
$detail_objects$ = true| true| $import$| | *.dti| Detail indices
$omotion$ = true| true| $import$| | *.anm| Object animation files
$omotions$ = true| true| $import$| | *.anms| Object animation list files
$smotion$ = true| true| $import$| | *.skl;*.skls| Skeleton motion files
$sbones$ = true| true| $import$| | *.bones| Skeleton bone data files
===============================


помогите пожалуйсто :-G

Большие тексты прячь под спойлер!

Модератор

отредактировал(а) Шалун: 12-01-2011 14:44 GMT3 час.

nexus_13
    
Посты: 4
Откуда:
Возраст:
12-01-2011 14:01 GMT3 час. #1416294   
одна и тажа ошибка

converter -level l01_escape -mode le -with_lods
pause

=====================
path $maps$ does not exist
path $objects$ does not exist
=====================

может штота в файл converter.ini и fsconverter.ltx ни верно. а цо учеба в этих файлах ?


Artos
    
Посты: 4176
Откуда:
Возраст: 65
12-01-2011 14:30 GMT3 час. #1416306   
Хотелось бы получить ответ от модератора(ов) раздела на вопрос:

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

Уже не просто спрашивать/отвечать ..., читать топик нет никакого желания.

отредактировал(а) Artos: 12-01-2011 14:36 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
nexus_13
    
Посты: 4
Откуда:
Возраст:
12-01-2011 14:45 GMT3 час. #1416314   
ха ха проблема била в $sdk_root$ = false| false| E:\S.T.A.L.K.E.R\

$sdk_root$ = false| false| E:\S.T.A.L.K.E.R\level_editor


Шалун
    
Посты: 9602
Откуда: Берлин
Возраст: 29
12-01-2011 14:50 GMT3 час. #1416317   
Artos, отвечаю:

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

Касательно самого раздела: буквально на днях поднимался вопрос по поводу его нынешнего состояния. Меры будут приняты.


Орден имени Святого Сталкера

Artos
    
Посты: 4176
Откуда:
Возраст: 65
12-01-2011 15:31 GMT3 час. #1416329   
Шалун
Спасибо за ответ.
Однако: (ИМХО) ответственность модераторов заключается конечно же не в нарушении правил самими пользователями, но и(!) не только в созерцании ... бардака.
Если пользователь неопытен - можно и поравить/подсказать/напомнить.
Если уперт - банометы и пр.меры никто у модераторов не отменял. Одного/двух лентяев-"граматеев" отправить на пару дней в R/O и чище будет и, как правило, желание читать и думать появляется ...
(сорри за оффтопик, но созерцать бардак уже нет терпения)

отредактировал(а) Artos: 12-01-2011 15:50 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Silver Raven
    
Посты: 415
Откуда:
Возраст:
12-01-2011 16:01 GMT3 час. #1416347   
Artos

Несколько дней назад, на этот пост пытались ответить Stalk15 и тов. erlik.
Правда решение так и небыло найдено... Хотелось бы услышать ваше мнение
об этой проблемке.

ЦИТАТА:

Вобщем, трениро**5001b67681f3126adde4**da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description :
[error]Arguments : LUA error: ...ое Издание\shoc\gamedata\scripts\task_manager.script:210: attempt to index field '?' (a nil value)[/code]


Что писал:

> В misc\task_manager:
[code]

    ;----------Trader--------------------------------------------------
    ;----------AleX MOD tasks----------
    ;-----------Monster Part------------
    trader_find_monster_part_zombie_hands

    [trader_find_monster_part_zombie_hands]
    type = monster_part
    community = actor
    text = trader_find_monster_part_zombie_hands_text
    description = trader_find_monster_part_zombie_hands_descr
    parent = trader
    target = mutant_zombie_hand, 2
    reward_money = 300
    reward_reputation = +5
    reward_rank = 1
    time = 172800
    prior = 10[/code]


> В gameplay\storyline_info_taskmanager:
[code];---------Monster Part--------------
;---------trader--------------
;----------AleX MOD Tasks----------

trader_find_monster_part_zombie_hands_descr
[/code]


> В text\rus\stable_task_manager_alex_mod:
[code]


Притащить две руки зомби


Притащить две руки гражданского зомби


Тут недавно ко мне один сталкер-шаман заходил, оставил заказ на две руки гражданских зомби. Хрен его знает зачем ему эта дрянь... Вобщем, говорят у нас на Кордоне, видели несколько этих... Как только они сюда добрели - неизвестно. Ну, что берёшся?

[/code]

(зарегестрирован в localization.ltx)

ГДЕ косяк?


Artos
    
Посты: 4176
Откуда:
Возраст: 65
12-01-2011 16:23 GMT3 час. #1416364   
Stalker_Alex333
Неплохо бы уточнять: строка, на которую ругается лог у тебя 'оригинальная' или же скрипт уже был модифицирован.
Если ругается на строку: self.task_info[id].enabled = p:r_bool() , то можно сказать следующее:
1. Никакие storyline_info_taskmanager, stable_task_manager_alex_mod, localization.ltx тут не виноваты.
2. Ошибка идет при считывании уже сохраненной игры. Добавлял ли ты свой новый квест ПОСЛЕ сэйва?
Если да - то в этом и кроется ошибка. Таск менеджер запоминает в сэйвах все квесты в игре и любое изменение в кол-ве или порядке следования запомненных квестов - приводит к фатальной ошибке при чтении сэйва. Т.е. (почти) любое изменение в наименованияъ/кол-вах заданий требует новой игры или спец.мер по адаптации старых сэйвов.

Если ошибка проявляется на новой игре - то поставь в 210-ую строку таск-менедэера вывод в лог считываемого идентификатора (id) квеста ... Возможно ты напортачил с компонентами имени своего квеста.

В строке/параметре: target = mutant_zombie_hand, 2 - точно ошибка. Цель может быть только в единственном числе.

СтОит помнить, что исходный таск-менеджер завязан на версии патча игры и для 1.0004 имеются особенности, по сравнению с 1.0005/6.
Я давно уже переделал на универсальный вариант + сжатый формат записи в сэйвы ... Именно оригинальный таск-менеджер очень прожорлив на объем в сторадже актра и не не замечен в аккуратности (мусора хранит немало).


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Artos
    
Посты: 4176
Откуда:
Возраст: 65
12-01-2011 20:08 GMT3 час. #1416537   
nexus_13
Прочти Правила раздела /форума!

6. Пишите грамотно! Посты типа "а я вот тоже падумал и ришил што хачу пааварить аб анамалиях и гыгыг манстярках хехе такии смишныи крысски гыгыгы" будут удаляться без предупреждения. Используйте знаки препинания, Заглавные буквы в предложениях, проверяйте свои посты на наличие пропусков букв и элементарных ошибок. Это культурный форум а не чат, где важнее всего скорость набора фраз.


Просишь о помощи, ждешь ответа на вопрос - уважай тех, кто читает твои опусы!


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
nexus_13
    
Посты: 4
Откуда:
Возраст:
12-01-2011 20:18 GMT3 час. #1416544   
я с трудом пишу на русом извинит :blink :-G

ешо один вопрос ?
умнея проблема. в со загрузчика без ошейник но когда я нажиму compile > build
очень много фалов textures ни хватит



There is no texture 'gamedata\textures\lod\lod_levels_l02_garbage_l02_garbage_lod0072.dds'
There is no texture 'gamedata\textures\lod\lod_levels_l02_garbage_l02_garbage_lod0072_nm.dds'
ERROR: Validate 'Scene Object' failed!
Capturing unused face...
Validation FAILED!
ERROR: Validation failed. Invalid scene.


и я ни нахожу их помогите наитие пожалуйсто


Silver Raven
    
Посты: 415
Откуда:
Возраст:
12-01-2011 20:20 GMT3 час. #1416546   
Artos

Действительно, вся соль оказалась в старых сохранениях. И это очень обидно, т.к. перепроходить игру из-за новых квестов, мягко говоря не хочется...
Я заметил, вы упомнали о своей (облегченной) версии скрипта task_manager, ее можно где либо скачать?

Есть ли способ подключить новые квесты (как простые, так и более сложные) "динамически", без начала новой игры?

З.Ы. Каким способом в квесте, указать кол-во разыскиваемых ГГ предметов более одного?


Artos
    
Посты: 4176
Откуда:
Возраст: 65
12-01-2011 21:16 GMT3 час. #1416587   
Stalker_Alex333
Не задавай сразу несколько вопросов ... Портянку ответа писать не самое легкое и полезное ... :-)

1. Модифицированную версию таск-менеджера (task_manager.script) можно взглянуть в сборке Симбиона (ТЧ) в любом последнем инификсе.
Также делал специальные варианты для NLC6, т.н. минимод "Адаптер игровых патчей", в котором и таск- и диалог- менеджеры отвязаны от патчей игры и введена 'компрессия' данных и даже автопатчер (автоподстройка под установленный игровой патч) введена. Но ... что-о Сяк так и не ввел в мод ...
В принципе не сложно и оригинальный(ые) менеджер(ы) адаптировать по уже имеющимся вариантам.

2. Освежин немного в памяти алгоритм сохранок таск-менеджера. В принципе подключать новые квесты не сложно. Основное правило для старых сэйвов: имена квестов, которые были в игре и сохранены НЕ должны меняться. Также не должны меняться их поля 'type' и 'parent', т.е. то из чего расчитывается 'complex_type'.
Если используешь АМК-вариант таск-менеджера, то важны совпадения сохраненных в сэйве хешей.
При удалении/изменении старых названий/параметров квестов для совместимости можно вводить заглушки, которые должны обходить фатальные ошибки при отсутствии записей/квестов. Пример для хешей можно посмотреть в рудиментарном коде в сборке Симбион.

3. Т.к. параметр 'target' используется для ВСЕХ типов квестов/заданий и его чтение (т.е. содержание) жестко регламентировано исходным кодом то ... при желании указывать кол-ва потребуется изменить формат этого параметра.
СтОит помнить, что для некоторых типов по нему определяется (стори)идентификатор цели. Если ввести свою читалку-парсер этого параметра - то и кол-ва можно встроить в параметры заданий.
Но это уже мы ударяемся в собственно в разработку кодов, суть же: для указания количеств целевых предметов требуется доработка исходника.

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


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
goust
    
Посты: 24
Откуда: Энгельс
Возраст: 33
12-01-2011 21:58 GMT3 час. #1416603   
При попытки адоптации болтов от Charsi, к NLC Начало 6.08 происходит вылет:
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ....-Тени Чернобыля\gamedata\scripts\bolt_binder.script:42: attempt to index field 'actor' (a nil value)
что это значит и как это исправить?Ссылка на болты от Charsi.


Artos
    
Посты: 4176
Откуда:
Возраст: 65
12-01-2011 22:35 GMT3 час. #1416628   
goust
Твой кусок лога говорит о том, что при появлении некоего болта в игре - объекта актора в игре или еще нет или уже нет.
Подобная ошибка возможна вероятнее всего при неправильной адаптации, когда вызов спавна болта происходит ранее создания клиентского объекта актора (db.actor). Версию, когда актор уже исчез из игры не рассматриваем, все же NLC - сингл.
Правильно исправить - подобрать инициализацию/спавн болтов только тогда, когда объект актор уже в игре.
Обойти фатальную ошибку можно и заплаткой типа:

function BBolt:net_spawn(data)
  if db.actor and self.object:position():distance_to(db.actor:position()) < 2 then
    table.insert( bolt_mod.new_bolt_id, self.object:id() )
  end
  return object_binder.net_spawn(self, data)
end


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
MRN$
    
Посты: 114
Откуда:
Возраст: 16
12-01-2011 23:16 GMT3 час. #1416654   

З.Ы. Каким способом в квесте, указать кол-во разыскиваемых ГГ предметов более одного?
Stalker_Alex333

Но это уже мы ударяемся в собственно в разработку кодов, суть же: для указания количеств целевых предметов требуется доработка исходника.
Artos


Если нет специального параметра "количество" - остаётся только "отдельное задание на каждый предмет". Разве в Сталкере нет штатных "вложенных заданий"? Но даже если таких нет - их можно эмулировать: на каждый предмет выдать отдельное задание и, плюс, выдать ещё одно задание, условием которого будет выполнение всех остальных заданий... ну и так далее.


всё легко
goust
    
Посты: 24
Откуда: Энгельс
Возраст: 33
12-01-2011 23:16 GMT3 час. #1416655   
Artos
Поставил твою заплатку и вылет:
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...r.-Тени Чернобыля\gamedata\scripts\se_respawn.script:466: attempt to index field 'actor' (a nil value)
Вот se_respawn.script
--[[------------------------------------------------------------------------------------------------------------------
Respawner. Схема обновления популяции всего всего всего в симуляции.
by Stohe(Диденко Руслан)
--------------------------------------------------------------------------------------------------------------------]]

--function printf()
--end

local section_name = "respawn"
local i,k,v = 0,0,0

-- Таблица ограничений на спаун: всего в симуляции не должно быть больше, чем указано.
local simMaxCount = {
stalker_novice = 26, stalker_regular = 24, stalker_veteran = 22, stalker_master = 10,
monolith_novice = 20, monolith_regular = 15, monolith_veteran = 17, monolith_master = 15,
military_novice = 20, military_regular = 16, military_veteran = 22, military_master = 20,
killer_novice = 20, killer_regular = 15, killer_veteran = 15, killer_master = 20,
ecolog_novice = 15, ecolog_regular = 20, ecolog_veteran = 20, ecolog_master = 10,
dolg_novice = 20, dolg_regular = 17, dolg_veteran = 18, dolg_master = 8,
freedom_novice = 25, freedom_regular = 10, freedom_veteran = 13, freedom_master = 10,
bandit_novice = 15, bandit_regular = 20, bandit_veteran = 19, bandit_master = 15,
zombied_novice = 10, zombied_regular = 7, zombied_veteran = 5, zombied_master = 5,
sniper_novice = 20, sniper_regular = 17, sniper_veteran = 15, sniper_master = 15,
green_novice = 15, green_regular = 25, green_veteran = 25, green_master = 15,

rat_weak = 300, rat_normal = 300, rat_strong = 300,
tushkano_weak = 300,tushkano_normal = 300,
flesh_weak = 48, flesh_normal = 116, flesh_strong = 82,
boar_weak = 144, boar_normal = 116, boar_strong = 94,
dog_weak = 166, dog_normal = 232, dog_strong = 312,
pseudodog_weak = 59, pseudodog_normal = 80, pseudodog_strong = 60,
psy_dog_weak = 15, psy_dog_normal = 15, psy_dog_strong = 15,
zombie_weak = 61, zombie_normal = 50, zombie_strong = 35,
snork_weak = 100, snork_normal = 61, snork_strong = 15,
poltergeist_weak = 30,m_poltergeist_normal_tele = 20,m_poltergeist_normal_flame = 10,
pseudo_gigant_weak = 43,
controller_weak = 36,
burer_weak = 40,
bloodsucker_weak = 14, bloodsucker_normal = 80, bloodsucker_strong = 30
}

local idle_spawn_preset = {
seldom = 60*60*24,
medium = 60*60*12,
often = 60*60*3,
--seldom = 60*60*6,
--medium = 60*60*3,
--often = 60*60,
once = -100000
}

-- Список респавнеров, для сбора статистики
local respawners = {}
local respawners_by_parent = {}
----------------------------------------------------------------------------------------------------------------------
-- Разные полезные функции
----------------------------------------------------------------------------------------------------------------------
function r_bool(spawn_ini, section, line, default)
if spawn_ini:line_exist(section, line) then
return spawn_ini:r_bool(section, line)
else
return default
end
end

function r_str(spawn_ini, section, line, default)
if spawn_ini:line_exist(section, line) then
return spawn_ini:r_string(section, line)
else
return default
end
end

function r_num(spawn_ini, section, line, default)
if spawn_ini:line_exist(section, line) then
return spawn_ini:r_float(section, line)
else
return default
end
end

function r_2nums(spawn_ini, section, line, def1, def2)
if spawn_ini:line_exist(section, line) then
-- если default-ов больше, чем значений в ini, то забить недостающие последним значением из ini
local t = parse_names(spawn_ini:r_string(section, line))
local n = table.getn(t)

if n == 0 then
return def1, def2
elseif n == 1 then
return t[1], def2
else
return t[1], t[2]
end
else
return def1, def2
end
end

function parse_names(s)
local t = {}
for name in string.gfind(s, "([%w_%-.\\]+)%p*") do
table.insert(t, name)
end
return t
end

function r_spawns(spawn_ini, section, line, sectSpawnProps)
if spawn_ini:line_exist(section, line) then
--' если default-ов больше, чем значений в ini, то забить недостающие последним значением из ini
local t = parse_names(spawn_ini:r_string(section, line))
local n = table.getn(t)

local ret_table = {}
local k = 1
while k <= n do
local spawn = {}
spawn.section = t[k]
-- Проверяем что это не последняя запись
if t[k+1] ~= nil then
local p = tonumber(t[k+1])
-- проверяем что вторым числом задана вероятность, а не другая секция спавну
if p then
-- забиваем число
spawn.prob = p
k = k + 2
else
-- забиваем дефолт 1
spawn.prob = 1
k = k + 1
end
else
spawn.prob = 1
k = k + 1
end
table.insert(ret_table, spawn)

-- Вычитываем настройки секций респавна и кешируем их.
if sectSpawnProps[spawn.section] == nil then
local respawn_ini = system_ini()

local community = r_str(respawn_ini, spawn.section, "community", "nil")
local rank = r_str(respawn_ini, spawn.section, "spec_rank", "nil")
local check = true
local custom_data = r_str(respawn_ini, spawn.section, "custom_data")
if custom_data ~= nil then
local custom_data_ltx = ini_file(custom_data)
if custom_data_ltx:section_exist("smart_terrains") then
if custom_data_ltx:line_exist("smart_terrains", "none") then
if r_str(custom_data_ltx, "smart_terrains", "none") == "true" then
check = false
end
end
if custom_data_ltx:line_exist("smart_terrains", "respawn_check") then
if r_str(custom_data_ltx, "smart_terrains", "respawn_check") == "false" then
check = false
end
end
end
end

sectSpawnProps[spawn.section] = {community = community, rank = rank, check = check}
end

end
return ret_table
end
return nil
end
----------------------------------------------------------------------------------------------------------------------
-- Серверный объект спавнера
----------------------------------------------------------------------------------------------------------------------
class "se_respawn"(cse_alife_smart_zone)
function se_respawn:__init(section) super(section)
self.spawned_obj = {}
-- Таблица для кеширования свойств секций респавна.
self.sectSpawnProps = {}
self.rt_read = false
self.proxy_initialized = false
end
-- сохранение
function se_respawn:STATE_Write(packet)
cse_alife_smart_zone.STATE_Write(self, packet)

local table_size = table.getn(self.spawned_obj)
-- --printf("SPAWNER SAVE table_size[%d]", table_size)
-- print_table(self.spawned_obj)

packet:w_u8(table_size)
for i=1,table_size do
packet:w_u16(self.spawned_obj)
end

utils.w_CTime(packet, self.respawn_time)

if self.respawn_time == nil then
self.respawn_time = game.CTime()
end
--sak.dbglog("%s write respawn_time %s %s", tostring(self:name()), self.respawn_time:dateToString(0), self.respawn_time:timeToString(1))
end

-- восстановление
function se_respawn:STATE_Read(packet, size)
cse_alife_smart_zone.STATE_Read(self, packet, size)

if editor() then
return
end

local table_size = packet:r_u8()

for i=1,table_size do
table.insert(self.spawned_obj, packet:r_u16())
end

-- --printf("SPAWNER READ table_size[%d]", table_size)
-- print_table(self.spawned_obj)

if not packet:r_eof() then
self.respawn_time = utils.r_CTime(packet)
self.rt_read = true
--sak.dbglog("%s read respawn_time %s %s", tostring(self:name()), self.respawn_time:dateToString(0), self.respawn_time:timeToString(1))
end
end

-- инициализация объекта.
-- вызывается симулятором.
function se_respawn:on_register()
cse_alife_smart_zone.on_register(self)
----printf("RESPAWN: [%s] se_respawn on_register", tostring(self:name()))
init_respawn_params(self)
end
-- Создаем объект
function se_respawn:create(prob)
if tostring(prob)=="true" then
prob=80
elseif tostring(prob)=="false" then
prob=0
end
if tonumber(prob) == nil then
print_table(self.conditions)
abort("RESPAWN[%s]spawn probability doesn't set", tostring(self:name()))
prob = 0
end

if math.random(100) <= tonumber(prob) then
local spawn_section = ""
local sum = 0
-- Производим рандомную взвешенную выборку
-- с учетом уже заспавленного количества человек.
for k,v in pairs(self.respawn_section) do
--' local tt = self.sectSpawnProps[v.section]
--' local community_rank = tt.community.."_"..tt.rank
--' local s_count = simMaxCount[community_rank]
--' if s_count == nil then
--' s_count = 0
--' end
--' if tt.check == false or
--' self.item_spawn == true or
--' sim_statistic.simNpcCount(tt.community, tt.rank) < s_count
--' then
sum = sum + v.prob
--' end
end
sum = math.random(0, sum)
for k,v in pairs(self.respawn_section) do
--' local tt = self.sectSpawnProps[v.section]
--' local community_rank = tt.community.."_"..tt.rank
--' local s_count = simMaxCount[community_rank]
--' if s_count == nil then
--' s_count = 0
--' end
--' if tt.check == false or
--' self.item_spawn == true or
--' sim_statistic.simNpcCount(tt.community, tt.rank) < s_count
--' then
sum = sum - v.prob
if sum <= 0 then
spawn_section = v.section
break
end
--' end
end

if spawn_section == "" then
-- --printf("SPAWNING [%s], CANT SPAWN, SIMULATION POPULATION EXCEED", tostring(self:name()))
--sak.dbglog("SPAWNING [%s], CANT SPAWN, SIMULATION POPULATION EXCEED", tostring(self:name()))
return false
end

local parent_id = nil
if self.parent ~= nil then
local s_obj = alife():story_object(self.parent)
if s_obj == nil then
abort("SPAWNING [%s], cant find parent with SID [%s]", self:name(), self.parent)
return
end
parent_id = s_obj.id
end

local obj
if parent_id == nil then
obj = alife():create(spawn_section,
self.position,
self.m_level_vertex_id,
self.m_game_vertex_id)
else
obj = alife():create(spawn_section,
self.position,
self.m_level_vertex_id,
self.m_game_vertex_id,
parent_id)
end

amk.on_REspawn(obj,self)
local tt = self.sectSpawnProps[spawn_section]

-- --printf("SPAWN [%s] -> [%s]", tostring(self:name()), obj:name())
--sak.dbglog("SPAWN [%s] -> [%s]", tostring(self:name()), obj:name())

if self.item_spawn == false then
if tt.check == true and not self.amk_name then
obj:brain():update()
local smart_terrain_id = obj:smart_terrain_id()

--sak.dbglog("SPAWN [%s] move_offline [%s], interactive [%s], smart_terrain_id [%s]", tostring(self:name()), tostring(self:move_offline()), tostring(self:interactive()), smart_terrain_id)
----printf("SPAWN [%s] move_offline [%s], interactive [%s], smart_terrain_id [%s]", tostring(self:name()), tostring(self:move_offline()), tostring(self:interactive()), smart_terrain_id)

if smart_terrain_id ~= 65535 then
table.insert(self.spawned_obj ,obj.id)
local pos = obj.position
-- --printf("SPAWNING [%s] -> [%s], position [%s][%s][%s]", tostring(self:name()), spawn_section, pos.x, pos.y, pos.z)
local sm_obj = alife():object(smart_terrain_id)

-- --printf("SPAWNING for SMART [%s] : [%s] -> [%s]", self:name(), obj:name(), sm_obj:name())
--sak.dbglog("SPAWNING for SMART [%s] : [%s] -> [%s]", self:name(), obj:name(), sm_obj:name())

return true
else
alife():release(obj, true)

--sak.dbglog("SPAWNING [%s] -> [%s], CANT SPAWN. NO SMART_TERRAIN AVAILABLE!!!", tostring(self:name()), spawn_section)
-- --printf("SPAWNING [%s] -> [%s], CANT SPAWN. NO SMART_TERRAIN AVAILABLE!!!", tostring(self:name()), spawn_section)
return false
end
end
end
table.insert(self.spawned_obj ,obj.id)
return true
end
end
-- Попытка спаунить объекты. Анализируется сколько уже заспавнено и выбирается один из механизмов - либо
-- мы доспавниваем до минимального количества, либо спавним с заданной вероятностью
function se_respawn:spawn()
-- --printf("RESPAWN: [%s] spawn execute", tostring(self:name()))
--sak.dbglog("RESPAWN: [%s] spawn execute", tostring(self:name()))
if not self.spawn_once then
-- Пробегаемся по списку уже заспавненных объектов и удаляем из них мертвые либо уничтоженные.
for k,v in pairs(self.spawned_obj) do
local obj = level.object_by_id(v)
if obj == nil then
obj = alife():object(v)
end

if obj ~= nil then
if(IsStalker(obj) or IsMonster(obj)) and obj:alive() ~= true then
table.remove(self.spawned_obj, k)
end
else
table.remove(self.spawned_obj, k)
end
end
end
if xr_logic.pick_section_from_condlist(db.actor_proxy, self, self.conditions) == "0" then
-- --printf("SPAWNING [%s], CANT SPAWN. PROBABILITY ZERO!!!", tostring(self:name()))
--sak.dbglog("SPAWNING [%s], CANT SPAWN. PROBABILITY ZERO!!!", tostring(self:name()))
sim_statistic.respawn_enabled(self, false)
return
end
sim_statistic.respawn_enabled(self, true)

if self.spawn_once and not self.already_once_spawned then
self.already_once_spawned = true
end
-- экстренный спаун минимального количества объектов
if table.getn(self.spawned_obj) < self.min_count then
while table.getn(self.spawned_obj) < self.min_count do
--sak.dbglog("RESPAWN: [%s] very small object", tostring(self:name()))
if self:create(100) == false then
return
end
end
return
end

-- делаем несколько попыток заспаунить объект.
for i=1,self.max_spawn do
if self.max_count ~= -1 and table.getn(self.spawned_obj) >= self.max_count then
--sak.dbglog("RESPAWN: [%s] max count reached", tostring(self:name()))

-- --printf("SPAWNING [%s], CANT SPAWN. MAX COUNT REACHED!!!", tostring(self:name()))
return
end
if self:create(xr_logic.pick_section_from_condlist(db.actor_proxy, self, self.conditions)) == false then
return
end
end
end
--' Удаляем уже заспавненный объект из списка заспавненных
--' Используется только для ящиком со шмотками в смарттеррейнах
function se_respawn:remove_spawned(id)
for k,v in pairs(self.spawned_obj) do
if id == v then
table.remove(self.spawned_obj, k)
end
end
end
-- Обновление респавнера. В зависимости от настроек обновляется либо только в офлайне, либо и там и там.
function se_respawn:execute()
-- --printf("RESPAWN: [%s] se_respawn execute", tostring(self:name()))
if self.already_once_spawned==true then return end
--' Выходим, если у нас установлен событийный спавн.
if self.idle_spawn_min == -1 then
return
end

if self.respawn_time < game.get_game_time() then
-- if not self.proxy_initialized then
-- db.actor_proxy:init()
-- self.proxy_initialized = true
-- end
local idle_time = game.CTime()
local now = game.get_game_time()

--idle_time:setHMSms(0, 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) --посмотрим?
idle_time:setHMSms(math.random(48, 72), 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) -- по моему тут дни получаются?
self.respawn_time = now + idle_time

--sak.dbglog("RESPAWN: [%s] se_respawn execute %s %s", tostring(self:name()), now:dateToString(0), now:timeToString(1))
--sak.dbglog("next respawn %s %s", self.respawn_time:dateToString(0), self.respawn_time:timeToString(1))
-- Производим попытку заспаунить объекты
self:spawn()


-- --printf("spawn_count = %s", table.getn(self.spawned_obj))
end
end
-- Обновление в офлайне
function se_respawn:update()
cse_alife_smart_zone.update(self)

--'--printf("RESPAWN: [%s] se_respawn update_offline", tostring(self:name()))

self:execute()
end
-- Обновление в онлайне
function se_respawn:update_online()
--'cse_alife_smart_zone.update(self)

--'--printf("RESPAWN: [%s] se_respawn update_online", tostring(self:name()))

if self.respawn_radius == -1 then
sim_statistic.respawn_enabled(self, false)
return
end
if db.actor:position():distance_to(self.position) >= self.respawn_radius then
self:execute()
else
sim_statistic.respawn_enabled(self, false)
end
end

function spawn(name)

local spawner = respawners[name]
if spawner == nil then
return
end

--sak.dbglog("spawn("..tostring(spawner:name())..")")

for i=1,spawner.max_spawn do
if spawner.max_count ~= -1 and table.getn(spawner.spawned_obj) >= spawner.max_count then
-- --printf("SPAWNING [%s], CANT SPAWN. MAX COUNT REACHED!!!", tostring(spawner:name()))
return
end
if spawner:create(xr_logic.pick_section_from_condlist(db.actor_proxy, spawner, spawner.conditions)) == false then
return
end
end
end

function get_respawner_by_parent(parent_id)
return respawners_by_parent[parent_id]
end

-- Сбор статистики
function stats()
local total_spawned = 0
local total_avail = 0
local total = 0
--printf("***************** RESPAWN STATISTIC *********************")
for k,v in pairs(respawners) do
local s = xr_logic.pick_section_from_condlist(db.actor_proxy, v, v.conditions)
local pops = "DISABLE"
if s ~= "nil" and s ~= "0" then
pops = table.getn(v.spawned_obj)
end
local str_pops
if v.max_count == pops then
str_pops = "FULL "..tostring(pops)
else
str_pops = tostring(pops)
end
--printf("[%s] spawns [%s] object", tostring(v:name()), str_pops)
print_table(v.respawn_section)
-- Увеличиваем общие счетчики
total = total + v.max_count
if pops ~= "DISABLE" then
total_avail = total_avail + v.max_count
total_spawned = total_spawned + pops
end
end
--printf("*** SUMMARY ***")
--printf(" total = %s", total)
--printf(" total_avail = %s", total_avail)
--printf(" total_spawned = %s", total_spawned)
--printf("***************")
end



-- Сбор продвинутой статистики статистики по лимитам
function lstats()
local can_spawn = {}
--printf("***************** LIMITS STATISTIC *********************")
for k,v in pairs(respawners) do
-- Запоминаем максимальное количество весов для данного респавнера
local wage = 0
for kk,vv in pairs(v.respawn_section) do
wage = wage + vv.prob
end

-- Заносим максимальное количество всех типов чуваков, которые данный респавнер может наспаунить.
for kk,vv in pairs(v.respawn_section) do
local tt = v.sectSpawnProps[vv.section]
local community_rank = tt.community.."_"..tt.rank
if can_spawn[community_rank] == nil then
can_spawn[community_rank] = {community = tt.community, rank = tt.rank}
end
end
end
-- Выводим все это в общей статистике
local total_max, total_prob, total_current, total_limit = 0,0,0,0
for k,v in pairs(can_spawn) do
local cs = sim_statistic.simNpcCount(v.community, v.rank)
local gl = simMaxCount[k]
if gl == nil then gl = 0 end

total_current = total_current + cs
total_limit = total_limit + gl

--printf("%s current=%s limit=%s", k, cs, gl)
end
--printf("TOTAL: current=%s limit=%s", total_current, total_limit)
end


-- Сбор статистики по ненастроенным объектам
function estats()
--printf("***************** SPAWN ERROR STATISTIC *********************")
for k,v in pairs(respawners) do
-- Заносим максимальное количество всех типов чуваков, которые данный респавнер может наспаунить.
for kk,vv in pairs(v.respawn_section) do
local tt = v.sectSpawnProps[vv.section]
if tt.community == "nil" or tt.rank == "nil" then
--printf("respawner [%s]", tostring(v:name()))
--printf("Section [%s] community[%s] rank [%s]", vv.section, tt.community, tt.rank)
end
end
end
end



function create_ammo(section, position, lvi, gvi, pid, num)
local ini = system_ini()

local num_in_box = ini:r_u32(section, "box_size")

while num > num_in_box do
alife():create_ammo(section, position, lvi, gvi, pid, num_in_box)
num = num - num_in_box
end
alife():create_ammo(section, position, lvi, gvi, pid, num)
end

local amk_respawner_control={}
local amk_named_respawner_control={}

function init_respawn_params(obj)
amk_respawner_control[obj:name()] = obj
-- Вычитываем настройки спауна
local ini = obj:spawn_ini()
if not ini:section_exist(section_name) then
return
end

obj.respawn_section = r_spawns(ini, section_name, "respawn_section", obj.sectSpawnProps)
if obj.respawn_section == nil then
abort("RESPAWN: [%s] field 'respawn_section' doesn't exist.", obj:name())
end

obj.spawned_goes_online = r_bool(ini, section_name, "spawned_goes_online", nil)

obj.spawn_once = r_bool(ini, section_name, "spawn_once", false)

obj.amk_name = r_str(ini, section_name, "amk_name", nil)
if obj.amk_name then amk_named_respawner_control[obj.amk_name] = obj end

obj.min_count = r_num(ini, section_name, "min_count", 0)
obj.max_count = r_num(ini, section_name, "max_count", -1)
if obj.min_count > obj.max_count and
obj.max_count ~= -1
then
abort("RESPAWN: [%s] min_count > max_count", obj:name())
end
--' FOR DEBUG ONLY, please don't forget to delete
--'if obj.max_count > 0 then
--' obj.min_count = obj.max_count
--'end

obj.max_spawn = r_num(ini, section_name, "max_spawn", 1)
obj.idle_spawn_min, obj.idle_spawn_max = r_2nums(ini, section_name, "idle_spawn")
if obj.idle_spawn_min == nil then
abort("RESPAWN: [%s] field 'idle_spawn' doesn't exist.", obj:name())
end
if obj.idle_spawn_max == nil then
obj.idle_spawn_max = obj.idle_spawn_min
end

--' Вычитка пресетов
if idle_spawn_preset[obj.idle_spawn_min] ~= nil then
obj.idle_spawn_min = idle_spawn_preset[obj.idle_spawn_min]
else
obj.idle_spawn_min = tonumber(obj.idle_spawn_min)
end
if idle_spawn_preset[obj.idle_spawn_max] ~= nil then
obj.idle_spawn_max = idle_spawn_preset[obj.idle_spawn_max]
else
obj.idle_spawn_max = tonumber(obj.idle_spawn_max)
end

--sak.dbglog("spawn_min %d spawn_max %d", obj.idle_spawn_min, obj.idle_spawn_max)

obj.str_conditions = r_str(ini, section_name, "conditions", 100)
obj.conditions = xr_logic.parse_condlist(obj, section_name, "conditions", obj.str_conditions)
obj.respawn_radius = r_num(ini, section_name, "respawn_radius", -1)
--' Спешкейс, чтобы сохранить совместимость сейвов.
if obj:name() == "mil_freedom_barier_respawn_1" then
obj.respawn_radius = -1
end
obj.parent = r_num(ini, section_name, "parent", nil)
obj.item_spawn = r_bool(ini, section_name, "item_spawn", false)

-- производим первичную инициализацию
if obj.rt_read == false then
obj.respawn_time = game.CTime()
--sak.dbglog("INIT [%s] %s %s", tostring(obj:name()), obj.respawn_time:dateToString(0), obj.respawn_time:timeToString(1))
end

-- Для сбора статистики сохраняем указатель на респавнер
respawners[obj:name()] = obj
if obj.parent ~= nil then
respawners_by_parent[obj.parent] = obj
end

--' Отметка респавнера мапспотом(для статистики)
sim_statistic.register_respawn(obj)

end

function reinit_spawner_params(name)
if amk_respawner_control[name] then
init_respawn_params(amk_respawner_control[name])
end
end

function get_respawner_by_name(name)
if amk_named_respawner_control[name] then
return alife():object(amk_named_respawner_control[name].id)
end
end

Помоги плиз,а то я в скриптах плоховато.


Artos
    
Посты: 4176
Откуда:
Возраст: 65
13-01-2011 00:08 GMT3 час. #1416677   

goust: Помоги плиз,а то я в скриптах плоховато.
Если под помощью ты подразумеваешь 'сделай за меня' - то ты ошибся адресом. Тут топик для тех, кто САМ что-то хочет сделать/переделать.
Судя по тому, что поставив заплатку, ты попал на точно такую же фатальную ошибку но в другом скрипте и не утруждаешь себя применить уже полученные сведения ... мое предположение верно. :-(
Сорри, но тратить на эту поделку время не считаю для себя целесообразным.

Попробуй немного напрячь свои познания в скриптах и воспользоваться первой частью рекомендации:

Правильно исправить - подобрать инициализацию/спавн болтов только тогда, когда объект актор уже в игре.
P.S. посмотрев коды болта могу сказать, что срастить с NLC не тривиальная задачка, т.к. в моде (NLC) рюкзак и слоты контролируемы своими скриптами и ... помятуя, что и так немало глюков с рюкзаком-подсумком-разгрузкой, дополнительные сторонние спавны и использование коллбэков только добавят глюков.


MRN$
Ну зачем же так категорично(?):

остаётся только "отдельное задание на каждый предмет"
если уже в цитируемых тобою же словах говорится о возможности внести свои правки/добавки в исходники.
Не так уж и сложно это сделать. Дополнительные поля/параметры давно уже вносятся разными модами в таск-менеджер (тот жен АМК) и неплохо приживаются. Иной вопрос целесообразности: делать штатными средствами, что порой приводит к "почесать правое ухо левой ногой" или же затеять возню с исходными скриптами, что чревато ошибками и битыми сэйвами ... на первых порах.

отредактировал(а) Artos: 13-01-2011 00:28 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
13-01-2011 00:41 GMT3 час. #1416682   
goust
Смотря но последним постам тут всё просто.
Тебе нужно всего лишь научиться правильно добавлять объекты в игру.=)
"Заплатка" рабочая. Вот потому она и передала ошибку дальше.
А теперь хоть понимай хоть нет. Твоё дело.
В 466-й строке вызывается функция, записанная в С-объекте(движке короче) в поле с ключем "update".
Эта функция "подбирает под себя" (правильнее конечно - индексирует поля. В частности поле 'асtоr') параметры (строка 168) секций подходящих объектов (не знаю как ещё объяснить).
И среди них секции 'асtor' нет.
Р.S.
И как это у вас получается залазить в такую зад...цу?
Научите.=)

отредактировал(а) Gun12: 13-01-2011 01:03 GMT3 час.

Не стань номинантом премии Дарвина.
goust
    
Посты: 24
Откуда: Энгельс
Возраст: 33
13-01-2011 01:00 GMT3 час. #1416685   
Gun12
Эта как ты вырозился зад...ца,иной раз сама в себя засасывает,Artos ладно буду пробовать,мои познания в скриптах настолько плохи-что там напрягать практически нечего,но я напрягу.


Artos
    
Посты: 4176
Откуда:
Возраст: 65
13-01-2011 01:17 GMT3 час. #1416687   
goust
Начни с того, что тебе по силам. Встрой этот "болтовый" мод в исходную игру и ... если получится попробуй более сложное.
В NLC6 строку: 'bolt_mod.net_spawn()' вставляй в самый конец (перед 'return true') 'actor_binder:net_spawn(data)'.
Но ... как уже писал выше, еще немало подводных камешков тебе придется преодолеть ...


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
goust
    
Посты: 24
Откуда: Энгельс
Возраст: 33
13-01-2011 02:10 GMT3 час. #1416697   
Artos
Я на гране нервного срыва,ни чё не получается,нпс все расходятся,ни чё не работает,и вообще мои познания скриптов заканчиваются на добавление какой нибудь функции в bind_stalker,значит не судьба с такими болтами поиграть.


Gun12
    
Посты: 773
Откуда: СССР
Возраст: 52
13-01-2011 02:40 GMT3 час. #1416700   
goust
Только что лазил по одному из сайтов, и наткнулся на ответ тебе.
Чтобы не назвали плагиатором цитирую и Пушкина и цитатора :


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

Прошу обратить внимание на определения: просвещенья дух, опыт и гений - ... а это формула открытий.


Делай выводы.
Ну Бог с ним. Гений не для всех. Но без просвещения и опыта в твоей ситуации делать совсем нечего.

отредактировал(а) Gun12: 13-01-2011 03:03 GMT3 час.

Не стань номинантом премии Дарвина.
Propavhiy
    
Посты: 21
Откуда: Южно-Сахалинск
Возраст:
13-01-2011 11:17 GMT3 час. #1416799   
Тут такой вопрос.
Устанавливал лицензию и поменял некоторые скрипты(правильно),но потом при попытке захода в игру тут вылазиит такая фигня.
Зафиксирована попытка использование эмулироющих программ для запуска приложение.
Вставьте пожалуста лицензионный диск деактивируйти все програмы-эмуляторы и попробуйте запустить приложение.
Вереустанавливал игру всё равно такая же фигня.
Помогите плиз.:-(

добавлено спустя 11 минут

Кто нибуть сталкивался с этип?

добавлено спустя 50 минут

Всё разобрался сам.Пока дождёшься от вас ответа или совета.

отредактировал(а) Propavhiy: 13-01-2011 12:19 GMT3 час.

Stalk15
    
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
13-01-2011 18:48 GMT3 час. #1417059   
В task_manager.script есть функция CRandomTask:action_give_task(actor, npc, p1, p2), мне не понятна **5001b67681f3126adde4**]task:load(task_desc.complex_type)[/code]
На АМК форуме написано, что метод load загружает параметры квеста из game_task.xml, а в task_manager.script загружаются квесты их файла task_manager.ltx ...Вообщем впопрос такой:
[code]task:load(что тут надо написать, чтоб квест загрузился из task_manager.ltx?)[/code]
В task_manager.script так сделано, но там код сложноватый и мне не понятно ни чоё.
И вообще, если я делаю квест на скриптах, зачем нужно обязательно квест от куда-то загружать?


Новые фишки для сталкера(см. журнал)
999Geka666
    
Посты: 89
Откуда: Ижевск
Возраст: 34
13-01-2011 19:08 GMT3 час. #1417076   
Можно как нибудь без декомпеляции уровня переместить точку входа на другую локу?:dedisnegurka:


С понедельника не пью.... со следующего....
Alex-San
    
Посты: 1015
Откуда:
Возраст: 51
13-01-2011 20:30 GMT3 час. #1417122   
999Geka666
Ну раз секции из олспавна можно удалять, а новые точки переходов создавать скриптом, то имхо да.
Интересно, а получается что так можно точку перехода сдвинуть :\




Форумы Архив » Свалка Вопросы и ответы (старое по 29.01.11)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»