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

[SoC] Ковыряемся в файлах


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

обыкновенный цикл по объектам, чтото типа

 

в котором нуно проверить идентификатор класса объекта через функцию get_clsid,

нас интересует идентификатор 83 :)

Так всё таки есть ID =)

 

Я собственно поискал таким образом объекты и не нашел ни кроватей ни матрасов. Может модели и сохранились в архивах, но скорее всего как физические объекты они были вырезаны и остались только как элементы декора. Детектировать их вряд ли получится. Проще явно расставить рестрикторы там, где визуально лежат матрасы, и потом на них ориентироваться. Хотя я конечно могу и ошибаться.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

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

85 - смотрю в луа_хелп это какойто switcher :huh:

на попытку прочесть этот объект нетпакетом послал куда подальше :angry:

если есть более разбирающиеся люди в этих тонкостях прошу помочь, интересно жеж :rolleyes:

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Всем привет. Скажите пожалуйста возможно ли сделать для пушки FN2000-Палач из Арсенал Мод стрельбу очередями? Я всяко пробовал не получается...

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

Scorpioser

Ты, наверное, имел ввиду из Зенобиана? С рамочками и переменным зумом?

Без ковыряния в движке - увы, никак. Даже для стрельбы одиночными пришлось лезть в движок и дать биноклю возможность стрелять. Как именно это сделали, и почему разрешили стрельбу только одиночными, сможет сказать разве что автор этой правки движка. Может, ради баланса, а может, в принципе очереди невозможны.

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий
Ты, наверное, имел ввиду из Зенобиана? С рамочками и переменным зумом?

Без ковыряния в движке - увы, никак. Даже для стрельбы одиночными пришлось лезть в движок и дать биноклю возможность стрелять. Как именно это сделали, и почему разрешили стрельбу только одиночными, сможет сказать разве что автор этой правки движка. Может, ради баланса, а может, в принципе очереди невозможны.

 

Понятно. А жаль.

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

Люди...подскажите пожалуйста, как убрать постоянный надоедливый звук крутящейся вертушки за пределами локации на Янтаре...?

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

Заранее благодарен.

P.S. Сбить вертушку - не предлагать...

Изменено пользователем DSR
Ссылка на комментарий

Знаю что большое количество инфопоршней увеличивает размер сэйвов и продолжительность загрузки. Может ли переизбыток инфопоршней привести к неработоспособности игры?

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

итак господа, динамический спавн аномалии амеба обнаружен :rolleyes:

вот скрипт, который спавнит амебу в 3 метрах от ГГ:

 
function spawn_ameba()
local pos = db.actor:position()
  local gvid = db.actor:game_vertex_id()
  local lvid = db.actor:level_vertex_id()
  pos.z = pos.z - 3
  local sobj = alife():create("zone_ameba1", pos, lvid, gvid)
  repack_visual_zone(sobj)
end

function repack_visual_zone(obj)
  if obj == nil then return obj end
  local data = read_zone_visual_params(obj)
  data.shapes[1]={}
  data.shapes[1].shtype=0
  data.shapes[1].center = vector():set(0,0,0)
  data.shapes[1].radius = 2
  data.max_power = 1
  data.idle_animation = "idle"
  data.attack_animation = "blast"
  write_zone_visual_params(data, obj)
  return obj
end

function parse_shape_packet(t,stpk,uppk)
    local shape_count = stpk:r_u8()
    t.shapes={}
    for i=1,shape_count do
        local shape_type = stpk:r_u8()
        t.shapes[i]={}
        t.shapes[i].shtype=shape_type
        if shape_type == 0 then
            -- sphere
            t.shapes[i].center = stpk:r_vec3()
            t.shapes[i].radius = stpk:r_float()
        else
            -- box
            t.shapes[i].v1 = stpk:r_vec3()
            t.shapes[i].v2 = stpk:r_vec3()
            t.shapes[i].v3 = stpk:r_vec3()
            t.shapes[i].offset = stpk:r_vec3()
        end
    end
end

function fill_object_packet(ret,stpk,updpk)
  stpk:w_u16(ret.gvid)
  stpk:w_float(ret.obf32u1)
  stpk:w_s32(ret.obs32u2)
  stpk:w_s32(ret.lvid)
  stpk:w_s32(ret.oflags)
  stpk:w_stringZ(ret.custom)
  stpk:w_s32(ret.sid)
  stpk:w_s32(ret.obs32u3)
end

function fill_shape_packet(t,stpk,updpk)
    stpk:w_u8(table.getn(t.shapes))
    for i=1,table.getn(t.shapes) do
        stpk:w_u8(t.shapes[i].shtype)
        if t.shapes[i].shtype == 0 then
            stpk:w_vec3(t.shapes[i].center)
            stpk:w_float(t.shapes[i].radius)
        else
            stpk:w_vec3(t.shapes[i].v1)
            stpk:w_vec3(t.shapes[i].v2)
            stpk:w_vec3(t.shapes[i].v3)
            stpk:w_vec3(t.shapes[i].offset)
        end
    end
end

function fill_visual_packet(ret,stpk,updpk)
  stpk:w_stringZ(ret.visual)
  stpk:w_u8(ret.vsu8u1)
end

function parse_object_packet(ret,stpk,updpk)
  ret.gvid=stpk:r_u16()
  ret.obf32u1=stpk:r_float()
  ret.obs32u2=stpk:r_s32()
  ret.lvid=stpk:r_s32()
  ret.oflags=stpk:r_s32()
  ret.custom=stpk:r_stringZ()
  ret.sid=stpk:r_s32()
  ret.obs32u3=stpk:r_s32()
  return ret
end

function parse_visual_packet(ret,stpk,updpk)
  ret.visual=stpk:r_stringZ()
  ret.vsu8u1=stpk:r_u8()
  return ret
end

function read_zone_visual_params(sobj)
  local stpk=net_packet()
  local uppk=net_packet()
  sobj:STATE_Write(stpk)
  sobj:UPDATE_Write(uppk)
  local size=stpk:w_tell()
  local size1=uppk:w_tell()
  stpk:r_seek(0)
  uppk:r_seek(0)
  local t={}
  parse_object_packet(t,stpk,uppk,size)
  parse_shape_packet(t,stpk,uppk,size)
  t.restrictor_type = stpk:r_u8()
  t.max_power = stpk:r_float()
  t.owner_id = stpk:r_s32()
  t.enabled_time = stpk:r_s32()
  t.disabled_time = stpk:r_s32()
  t.start_time_shift = stpk:r_s32()
  t.offline_interactive_radius = stpk:r_float()
  t.artefact_spawn_count = stpk:r_u16()
  t.artefact_position_offset = stpk:r_s32()
  parse_visual_packet(t,stpk,uppk)
  t.idle_animation = stpk:r_stringZ() 
  t.attack_animation = stpk:r_stringZ()
  return t
end

function write_zone_visual_params(t,sobj)
  local stpk=net_packet()
  local uppk=net_packet()
  fill_object_packet(t,stpk,uppk)
  fill_shape_packet(t,stpk,uppk)
  stpk:w_u8(t.restrictor_type)
  stpk:w_float(t.max_power)
  stpk:w_s32(t.owner_id)
  stpk:w_s32(t.enabled_time)
  stpk:w_s32(t.disabled_time)
  stpk:w_s32(t.start_time_shift)
  stpk:w_float(t.offline_interactive_radius)
  stpk:w_u16(t.artefact_spawn_count)
  stpk:w_s32(t.artefact_position_offset)
  fill_visual_packet(t,stpk,uppk)
  stpk:w_stringZ(t.idle_animation)
  stpk:w_stringZ(t.attack_animation)
  local size=stpk:w_tell()
  local size1=uppk:w_tell()
  stpk:r_seek(0)
  uppk:r_seek(0)
  sobj:STATE_Read(stpk,size)
  sobj:UPDATE_Read(uppk)
end

 

вызывать нужно функцию spawn_ameba

помимо всего, есть одна особенность этой аномалии: когда в неё попадаешь она срабатывает с задержкой, чтобы это устранить, поправьте в файлик zone_ameba.ltx

следующие параметры секции [zone_ameba1]

awaking_time = 10

blowout_time = 1000

accamulate_time = 1000

да, и еще, я получил вылет при попытке этой аномалии создать артефакты, чтобы этого избежать, делать аномалию не создающей арты, меняя её параметры

min_artefact_count = 0

max_artefact_count = 0

юзайте на здоровье B)

 

. Может ли переизбыток инфопоршней привести к неработоспособности игры?

может, если размер нетпакета будет превышать 7-7,5кб

Изменено пользователем Gonarh
  • Полезно 2
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий
Ximik

Вот содержимое файла в оригинале ТЧ. Скопипасти текст из спойлера, чтобы с файлообменниками не возиться :)

[actor_terrain]

255,255,000,255

 

[actor]:common_ph_friction_params_on_npc_death

GroupControlSection = spawn_group

$spawn = "actor"

$ed_icon = ed\ed_actor

$player = on

$prefetch = 16

cform = skeleton

class = O_ACTOR

money = 40;

rank = 3;

script_binding = bind_stalker.actor_init

visual = actors\hero\stalker_novice.ogf

destroyed_vis_name = physics\Dead_Body\skelet_crash

 

terrain = actor_terrain

 

max_item_mass = 50.0

jump_speed = 6.

crouch_coef = 0.45

climb_coef = 0.7

run_coef = 2.1

sprint_koef = 2.6

run_back_coef = 1.8

walk_back_coef = 0.8

air_control_param = 0.1

walk_accel = 17

 

;радиус в котром над предметами выводятся их названия

pickup_info_radius = 5 ;3

 

ef_creature_type = 17 ; option for evaluation functions

 

; attach params

attachable_items = device_torch,attachable_item,hand_radio

 

ph_box0_center = 0.0, 0.9, 0.0

ph_box0_size = 0.35, 0.9, 0.35

ph_box1_center = 0.0, 0.75, 0.0

ph_box1_size = 0.35, 0.75, 0.35

ph_box2_center = 0.0, 0.6, 0.0

ph_box2_size = 0.35, 0.6, 0.35

stalker_restrictor_radius = .55;0.55;0.75;0.9

stalker_small_restrictor_radius = .55;

medium_monster_restrictor_radius = 0.1

ph_crash_speed_min = 14

ph_crash_speed_max = 30

ph_collision_damage_factor = 1.0

ph_mass = 80

 

weapon_bone0 = bip01_r_finger1

weapon_bone1 = bip01_l_finger1

weapon_bone2 = bip01_r_finger11

 

damage = actor_damage

 

hit_probability_gd_novice = 0.20

hit_probability_gd_stalker = 0.30

hit_probability_gd_veteran = 0.40

hit_probability_gd_master = 0.50

hit_sounds = actor_hit_snds

;actor condition

 

immunities_sect = actor_immunities_gd_master

condition_sect = actor_condition

 

heavy_breath_snd = actor\breath_1 ;звук тяжелого дыхания при усталости

heavy_blood_snd = affects\heartbeat; heart\8

 

material = creatures\actor

camera_height_factor = 0.85

 

 

;дисперсия стрельбы с учетом ходьбы и бега

disp_base = 0.8 ;угол (в градусах) разлета пуль, когда актер стоит на месте

disp_aim = 0.04

disp_vel_factor = 2.0 ;на сколько увеличится дисперсия при скрости в 10 м/с (не обязательно при беге)

disp_accel_factor = 2.0 ;еще на сколько увеличится, если актер бежит (+ скорость)

disp_crouch_factor = -0.2 ;уменьшение если актер сидит

disp_crouch_no_acc_factor = -0.4 ;уменьшение если актер сидит + no acceleration

;disp_jump_factor = 2.0

 

missile_throw_offset = 0.3, 0.5, 0.5

 

body_remove_time = 60000 ;время уничтожения трупа (с учетом TimeFactor)

 

sleep_time_factor = 1000 ;400 ;во сколько раз время идет быстрее, когда актер спит

max_sleep_hours = 12

;species of monster

species = actor

 

 

;---STEP MANAGER------------------------------------------------------

LegsCount = 2

step_params = stalker_step_manager

foot_bones = stalker_foot_bones

 

memory_update_time = 100

 

; visibility parameters

DynamicObjectsCount = 32

min_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла

max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла

visibility_threshold = 1.0 ; значение, при достижении суммой которого объект считается видимым

always_visible_distance = 1.0

time_quant = 0.005

decrease_value = 0.1 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам

velocity_factor = 0.5

luminocity_factor = 0.5;0 ; фактор освещения (только для Актёра)

transparency_threshold = 0.4 ; 0.25

still_visible_time = 5000 ; время, которое объект всё ещё считается видимым, даже если он уже не во фрустуме

 

[actor_immunities_gd_novice]

burn_immunity = 0.5 ;коэффициенты иммунитета

strike_immunity = 0.5

shock_immunity = 0.5

wound_immunity = 0.5

radiation_immunity = 0.5

telepatic_immunity = 0.5

chemical_burn_immunity = 0.5

explosion_immunity = 0.1

fire_wound_immunity = 0.5

 

 

[actor_immunities_gd_stalker]

burn_immunity = 0.65 ;коэффициенты иммунитета

strike_immunity = 0.65

shock_immunity = 0.65

wound_immunity = 0.65

radiation_immunity = 0.65

telepatic_immunity = 0.65

chemical_burn_immunity = 0.65

explosion_immunity = 0.3

fire_wound_immunity = 0.65

 

[actor_immunities_gd_veteran]

burn_immunity = 0.8 ;коэффициенты иммунитета

strike_immunity = 0.8

shock_immunity = 0.8

wound_immunity = 0.8

radiation_immunity = 0.8

telepatic_immunity = 0.8

chemical_burn_immunity = 0.8

explosion_immunity = 0.6

fire_wound_immunity = 0.8

 

[actor_immunities_gd_master]

burn_immunity = 1.0 ;коэффициенты иммунитета

strike_immunity = 1.0

shock_immunity = 1.0

wound_immunity = 1.0

radiation_immunity = 1.0

telepatic_immunity = 1.0

chemical_burn_immunity = 1.0

explosion_immunity = 1.0

fire_wound_immunity = 1.0

 

[actor_condition]

satiety_v = 0.000015 ;скорость уменьшения сытости со временем

radiation_v = 0.0001 ;скорость уменьшения радиации

satiety_power_v = 0.000055 ;увеличение силы при уменьшении сытости

satiety_health_v = 0.0001 ;увеличение здоровья при уменьшении сытости

satiety_critical = 0.0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться

radiation_health_v = 0.004 ;уменьшение здоровья при воздействии радиации

morale_v = 0.0001 ;скорость восстановления морали

psy_health_v = 0.001 ;скорость восстановления psy-здоровья

alcohol_v = -0.0003

health_hit_part = 1.0 ;процент хита, уходящий на отнимание здоровья

power_hit_part = 0.1 ;процент хита, уходящий на отнимание силы

max_power_leak_speed = 0.0 ;накопление усталости (макс граница, до которой восстанавливается сила) в секунду игрового времени

max_walk_weight = 60

 

bleeding_v = 0.0005 ;потеря крови при номинальной ране в секунду

wound_incarnation_v = 0.003 ;скорость заживления раны

min_wound_size = 0.0256 ;минимальный размер раны, после которого она считается зажившей

 

;--when actor in sleep

satiety_v_sleep = 0.00001

radiation_v_sleep = 0.0003

satiety_power_v_sleep = 0.0001

satiety_health_v_sleep = 0.00001

radiation_health_v_sleep = 0.001

morale_v_sleep = 0.0

psy_health_v_sleep = 0.0

 

alcohol_v_sleep = -0.0005

 

bleeding_v_sleep = 0.0

wound_incarnation_v_sleep = 0.0

max_power_leak_speed_sleep = -0.00001;

;health_restore_v = 0.0001

 

;;;;;;;;

;actor_condition only

 

jump_power = 0.01 ;0.005 ;умешьшение силы с прыжком без учета веса ноши

jump_weight_power = 0.05 ;0.045 ;умешьшение силы с прыжком с учетом веса ноши, для максимального допустимого веса

overweight_jump_k = 5;10 ;10 ;коэффициент влияние перегрузки прыжок с весом (умножается на jump_weight_power)

 

stand_power = -0.005

walk_power = 0.00001 ;умешьшение силы за секнду во время ходьбы без учета веса ноши

walk_weight_power = 0.00005; ;умешьшение силы за секнду во время ходьбы с учетом веса ноши, для максимального допустимого веса

overweight_walk_k = 5;9 ;10 ;коэффициент влияние перегрузки ноши (умножается на walk_weight_power)

accel_k = 3;5 ;коэффициент на бег (умножается walk_power, walk_weight_power)

sprint_k = 75;150;185;180;200; ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)

 

; хромота

limping_health_begin = 0.1 ;порог здоровья меньше которого актер начинает хромать

limping_health_end = 0.2 ;порог здоровья больше которого актер перестает хромать

limping_power_begin = 0.1 ;порог силы меньше которого актер начинает хромать

limping_power_end = 0.2 ;порог силы больше которого актер перестает хромать

use_limping_state = on

 

cant_walk_power_begin = 0.01 ;порог силы меньше которого актер не может двигаться

cant_walk_power_end = 0.10 ;порог силы больше которого актер сможет двигаться

 

cant_sprint_power_begin = 0.20 ;порог силы меньше которого актер не может бежать в спринте

cant_sprint_power_end = 0.30 ;порог силы больше которого актер сможет бежать в спринте

 

can_sleep_callback = dream.can_sleep_callback

sleep_video_name_callback = dream.sleep_video_name_callback

 

[actor_damage]

;bone_name = <hit_scale>,<fwd_damage_anim_index>,<wound_scale>

;<hit_scale> - коэфф. изменения хита (уменьшения здоровья)

;<wound_scale> - коэфф. изменения величины открытой раны

;-1 - нет анимаций, четный номер - спереди, нечетный номер - сзади, УКАЗЫВАЕТСЯ ТОЛЬКО ПЕРЕДНИЙ!!! ЗАДНИЙ НА АВТОМАТЕ

default = 1.0, -1, 1.0

 

bip01_pelvis = 1.0, 10, 1.5

bip01_spine = 1.0, 10, 1.5

bip01_spine1 = 1.0, 0, 1.5

bip01_spine2 = 1.0, 0, 1.5

bip01_neck = 1.0, 0, 1.5

bip01_head = 0.2, 0, 1.5

eyelid_1 = 0.0, 0, 0.0

eye_left = 0.0, 0, 0.0

eye_right = 0.0, 0, 0.0

jaw_1 = 0.0, 0, 0.0

 

bip01_l_clavicle = 1.0, 4, 1.5

bip01_l_upperarm = 1.0, 4, 1.5

bip01_l_forearm = 1.0, 4, 1.5

bip01_l_hand = 1.0, 4, 0.5

bip01_l_finger0 = 0.0, 4, 0.0

bip01_l_finger01 = 0.0, 4, 0.0

bip01_l_finger02 = 0.0, 4, 0.0

bip01_l_finger1 = 0.0, 4, 0.0

bip01_l_finger11 = 0.0, 4, 0.0

bip01_l_finger12 = 0.0, 4, 0.0

bip01_l_finger2 = 0.0, 4, 0.0

bip01_l_finger21 = 0.0, 4, 0.0

bip01_l_finger22 = 0.0, 4, 0.0

 

bip01_r_clavicle = 1.0, 2, 1.5

bip01_r_upperarm = 1.0, 2, 1.5

bip01_r_forearm = 1.0, 2, 1.5

bip01_r_hand = 1.0, 2, 0.0

bip01_r_finger0 = 0.0, 2, 0.0

bip01_r_finger01 = 0.0, 2, 0.0

bip01_r_finger02 = 0.0, 2, 0.0

bip01_r_finger1 = 0.0, 2, 0.0

bip01_r_finger11 = 0.0, 2, 0.0

bip01_r_finger12 = 0.0, 2, 0.0

bip01_r_finger2 = 0.0, 2, 0.0

bip01_r_finger21 = 0.0, 2, 0.0

bip01_r_finger22 = 0.0, 2, 0.0

 

bip01_l_thigh = 1.0, 8, 1.5

bip01_l_calf = 1.0, 8, 1.5

bip01_l_foot = 1.0, 8, 1.5

bip01_l_toe0 = 1.0, 8, 1.5

bip01_r_thigh = 1.0, 6, 1.5

bip01_r_calf = 1.0, 6, 1.5

bip01_r_foot = 1.0, 6, 1.5

bip01_r_toe0 = 1.0, 6, 1.5

 

[actor_animation]

;углы дворота ног актера во время стрейфов (в градусах)

fwd_l_strafe_yaw = 45

back_l_strafe_yaw = 45

fwd_r_strafe_yaw = 45

back_r_strafe_yaw = 45

l_strafe_yaw = 0

r_strafe_yaw = 0

 

 

[actor_hit_snds]

burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4

shock =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4

strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4

wound =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4

radiation =monsters\biting\def_0; actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4

telepatic =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4

fire_wound =actor\bullet_hit_1,actor\bullet_hit_2,actor\bullet_hit_3,actor\bullet_hit_4

; actor\pain_1,actor\pain_3,actor\pain_4,actor\pain_5,actor\pain_6,actor\pain_7,actor\pain_8

chemical_burn =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4

explosion =affects\tinnitus3a

wound_2 =actor\hurt1,actor\hurt2,actor\hurt3,actor\hurt4

physic_strike =actor\pain1,actor\pain2,actor\pain3; ,actor\hurt4

Большое спасибо!

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

Мужики, еслу кому не жалко, скиньте текстурку gamedata\textures\act\act_corp_stalker.dds

плиз :unsure:

с таким именем не нашёл. В этом каталоге есть другая act_stalker_corp.dds

ненене именно gamedata\textures\act\act_corp_stalker.dds она из пака Kosta_V для новых карт, мож есть у кого?

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий
Мужики, еслу кому не жалко, скиньте текстурку gamedata\textures\act\act_corp_stalker.dds

плиз :unsure:

С таким именем не нашёл. В этом каталоге есть другая act_stalker_corp.dds. вот она

Есть вообще-то замечательный распаковщик, автор которого Don Reba, который позволяет распаковывать выбранные файлы по одному

Лежит здесь

называется Database Extractor 2.0

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

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

то-то и оно поставил 999999999 , а по времени то же

Изменено пользователем igor822605
Ссылка на комментарий

править объект grenade_gd-05 в файле gamedata\config\weapons\w_f1.ltx

blast_r = 10 ;радиус (м)

explode_duration = 12 ;подолжительность взрыва (с)

explode_hide_duration = 10 ;время, через которое гранату надо сделать невидимой (с)

Изменено пользователем Gonarh
  • Полезно 1
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий
За что отвечает файл map_spots.xml? И что означают описаные в нем координаты?

Есть такая функция level.map_add_object_spot_ser(se_obj.id, map_spot_name, desc)

В этой функции аргумент map_spot_name - это значок, как раз и описанный в этом файле (и включённых в него директивами #include).

Структура файла XML мне видится довольно очевидной. Например, значок для задания по защите лагеря имеет имя "defend_lager_location"

 

сначала идет эта часть. Здесь упоминаются собственно описатели значков для карты и миникарты ("defend_lager_spot" и "defend_lager_spot_mini") а также по всей видимости вид курсора при наведении на эти значки "quest_pointer".

 

    <defend_lager_location>
        <level_map spot="defend_lager_spot"        pointer="quest_pointer"/>
        <mini_map spot="defend_lager_spot_mini"    pointer="quest_pointer"/>
    </defend_lager_location>

далее по отдельности описываются сами значки:

для карты

    <defend_lager_spot  x="0" y="0" width="32" height="32" stretch="1" alignment="c" xform_anim="map_spot_new_xform" xform_anim_cyclic="0">
        <texture>ui_mapQuest_camp_defend</texture>
    </defend_lager_spot>

В теге defend_lager_spot очевидно указаны видимые размеры текстуры и (возможно) точка привязки к значку.

В данном случае в разделе <texture>...</texture> указана уже готовая именованная текстура ui_mapQuest_camp_defend. Она описана в файле ui_common.xml

 

для миникарты

    <defend_lager_spot_mini  x="0" y="0" width="11" height="11" stretch="1" alignment="c" xform_anim="map_spot_new_xform" xform_anim_cyclic="0">
        <texture>ui_sm_mapQuest_camp_defend</texture>
        <texture_below r="0" g="255" b="0">ui_mini_sn_spot_below</texture_below>
        <texture_above r="0" g="255" b="0">ui_mini_sn_spot_above</texture_above>
    </defend_lager_spot_mini>

Что здесь означают параметры texture_below и texture_above не знаю.

 

Кроме указания именованной текстуры можно и прямо здесь описать текстуру прямой ссылкой на файл текстуры и координатами фрагмента. Так сделано например для значка anomaly_zone_mini_spot.

    <anomaly_zone_mini_spot x="0" y="0" width="16" height="16" alignment="c" stretch="1"> 
        <texture x="1" y="202" width="31" height="30" r="255" g="100" b="100">ui\ui_mp_icon_kill</texture>
    </anomaly_zone_mini_spot>

Здесь идёт ссылка на файл gamedata\textures\ui\ui_mp_icon_kill.dds . Из неё берётся фрагмент с координатами (1, 202) и размерами (31, 30)

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
ненене именно gamedata\textures\act\act_corp_stalker.dds она из пака Kosta_V для новых карт, мож есть у кого?
Сразу так сказал бы! :)Лови. Все чего с ним связано.
Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

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

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