[SoC] Ковыряемся в файлах - Страница 39 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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


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

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

 

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

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

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

 

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

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

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

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

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

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

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

Scorpioser

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

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

На данный момент это не возможно.

Как видите не обошлость и без глюков (бинокль не коректно работать начал).

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

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

 

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

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

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

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

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
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
Мужики, еслу кому не жалко, скиньте текстурку gamedata\textures\act\act_corp_stalker.dds

плиз :unsure:

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

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

Лежит здесь

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

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

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

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

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

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

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

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

Изменено пользователем Gonarh
  • Полезно 1

За что отвечает файл map_spots.xml? И что означают описаные в нем координаты?

За что отвечает файл 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)

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

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

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

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

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

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

Войти

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

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

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