Случайная подборка модов
Dead Autumn 2: Другая реальность
4.1
Add-on for S.T.A.L.K.E.R. Beta
3.9
Oblivion Lost 3.0
3.0
Another Zone Mod. Пролог
4.2
Выживший. Побег из Зоны
3.7
Альтернатива 1.3.1
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
[CoP] Модострой: вопросница
Российская Федерация  Overfirst
Воскресенье, 31.12.2017, 13:17 | Сообщение # 1
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

[CoP] Модострой: вопросница

Тема посвящена моддингу на платформе Зов Припяти.

Соседние темы: Тень Чернобыля / Чистое небо.


  • Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.

  • Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.

  • Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).

  • Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
  •   Злобная реклама
    Воскресенье, 31.12.2017, 13:17
    Статус:
    Сообщений: 666
    Регистрация: 11.06.2015
    Российская Федерация  denis2000
    Пятница, 31.01.2020, 12:22 | Сообщение # 5926
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    Цитата Policai ()
    Должна пройти проверка сколько предметов у меня в инвенторе и включиться соответствующая секция.

    Если у вас проверка только по предметам в инвентаре ГГ, то да это сработает и сундук будет проще рестриктора.
      Злобная реклама
    Пятница, 31.01.2020, 12:22
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Украина  AziatkaVictor
    Пятница, 31.01.2020, 14:53 | Сообщение # 5927
    Статус:
    Опытный:
    Сообщений: 1313
    Награды: 4
    Регистрация: 30.08.2018

    День добрый! Помогите пожалуйста! Делал правку скриптов в bind_monster.script, а именно добавлял туда скрипты Сидоровича. После решил добавить возможность лута мутантов через F, и тут эти две правки начали конфликтовать. Сидоровчи работает, но мутанты не лутаються. Я очень плох в Lua и буду рад если вы скажите что делать. Я понял, что там биндиться "generic_object_binder" и "trader_object_binder", но что и как делать не знаю...
    Сам скрипт:
    Код
    -----------------------------------------------------------------------------------
    -- Monster binding
    -----------------------------------------------------------------------------------

    function bind(obj)
        printf("_bp: monster.bind: name='%s', id='%d'", obj:name(), obj:id())

        -- Для спауна
        --xr_spawner.spawn_client(obj)

        local new_binder = generic_object_binder(obj)
        obj:bind_object(new_binder)
    end

    local last_update = 0 -- combat
    ------------------------------------------------------------------------------------
    class "generic_object_binder" (object_binder)

    function generic_object_binder:__init(obj) super(obj)
        self.loaded = false
        ------ use --------
        self.use = false
        -------------------
    end

    function generic_object_binder:reload(section)
        object_binder.reload(self, section)
    end

    function generic_object_binder:reinit()
        object_binder.reinit(self)

        db.storage[self.object:id()] = { }

        self.st = db.storage[self.object:id()]

        self.object:set_callback(callback.patrol_path_in_point, self.waypoint_callback, self)
        self.object:set_callback(callback.hit,     self.hit_callback,  self)
        self.object:set_callback(callback.death,    self.death_callback,    self)
        self.object:set_callback(callback.sound,     self.hear_callback,  self)
    end

    function generic_object_binder:update(delta)
        object_binder.update(self, delta)

        if xr_combat_ignore.fighting_with_actor_npcs[self.object:id()] and self.object:best_enemy() == nil then
      xr_combat_ignore.fighting_with_actor_npcs[self.object:id()] = nil
        end

        local squad = get_object_squad(self.object)
        local object_alive = self.object:alive()
        --' printf("_bp: generic_object_binder: UPDATE [name='%s' time=%d]",
        --'    self.object:name(), time_global())

        if not object_alive then
      return
        end

        self.object:set_tip_text("")
        local st = db.storage[self.object:id()]
        if st ~= nil and st.active_scheme ~= nil then
      xr_logic.try_switch_to_another_section(self.object, st[st.active_scheme], db.actor)
        end
        -- Апдейт отряда
        if squad ~= nil then
      if squad:commander_id() == self.object:id() then
       squad:update()
      end
        end

        self.object:info_clear()

        local active_section = db.storage[self.object:id()] and db.storage[self.object:id()].active_section
        if active_section then
      self.object:info_add("section: " .. active_section)
        end
        local best_enemy = self.object:best_enemy()
        if best_enemy then
      self.object:info_add("enemy: " .. best_enemy:name())
        end
        self.object:info_add(self.object:name().." ["..self.object:team().."]["..self.object:squad().."]["..self.object:group().."]")

        if alife():object(self.object:id()) == nil then
      return
        end

        if squad ~= nil then
      self.object:info_add("squad_id: " .. squad:section_name())
      if squad.current_action ~= nil then
       local target = squad.assigned_target_id and alife():object(squad.assigned_target_id) and alife():object(squad.assigned_target_id):name()
       self.object:info_add("current_action: " .. squad.current_action.name .."["..tostring(target).."]")
      end
        end

    -- Если есть враг , то идем в комбат !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        if self.object:get_enemy() then
      if xr_logic.mob_captured(self.object) then
       xr_logic.mob_release(self.object)
      end
      return
        end

        if squad and squad.current_action and squad.current_action.name == "reach_target" then
      local squad_target = simulation_objects.get_sim_obj_registry().objects[squad.assigned_target_id]
      if squad_target == nil then return end
        --    printf("_bp: mob_reach_task:reset_scheme: %s", self.object:name())

      local target_pos, target_lv_id, target_gv_id = squad_target:get_location()
        --    if not xr_logic.mob_captured(self.object) then
       xr_logic.mob_capture(self.object, true)
        --    end
      if squad:commander_id() == self.object:id() then
       action(self.object, move(move.walk_with_leader, target_pos),
        cond(cond.move_end))
      else
       local commander_pos = alife():object(squad:commander_id()).position
       if commander_pos:distance_to(self.object:position()) > 10 then
        action(self.object, move(move.run_with_leader, target_pos),
        cond(cond.move_end))
       else
        action(self.object, move(move.walk_with_leader, target_pos),
        cond(cond.move_end))
       end
      end
      return
        end

        if self.st.active_section ~= nil then
      xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta)
        end
    end

    function generic_object_binder:extrapolate_callback()
        -- Проверяем, что объект еще в онлайне
        if db.storage[self.object:id()] == nil or
       db.storage[self.object:id()].object == nil
        then
      return
        end

        local cur_pt = self.object:get_current_point_index()
        if self.object:get_script()    == false then
      return false
        end

        local patrol_path = self.object:patrol()
        if not level.patrol_path_exists(patrol_path) then
      return false
      --abort("bind_monster:extrapolate_callback(). There is no patrol path [%s]", tostring(patrol_path))
        end
        if patrol(patrol_path):flags(cur_pt):get() == 0 then
      --printf("_bp: generic_object_binder: extrapolate_callback: cur_pt = %d: true", cur_pt)
      return true
        end
        --printf("_bp: generic_object_binder: extrapolate_callback: cur_pt = %d: false", cur_pt)
        return false
    end

    function generic_object_binder:waypoint_callback(obj, action_type, index)
        if self.st.active_section ~= nil then
      xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "waypoint_callback", obj, action_type, index)
        end
    end

    function generic_object_binder:death_callback(victim, who)
        printf("stop_dead_id"..self.object:id())

        xr_combat_ignore.fighting_with_actor_npcs[self.object:id()] = nil

        self:hit_callback(victim, 1, vector():set(0,0,0), who, "from_death_callback")
        if who:id() == db.actor:id() then
      xr_statistic.inc_killed_monsters_counter()
      xr_statistic.set_best_monster(self.object)
        end

        if self.st.mob_death then
      xr_logic.issue_event(self.object, self.st.mob_death, "death_callback", victim, who)
        end

        if self.st.active_section then
      xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "death_callback", victim, who)
        end
        --' Наносим небольшой импульс вперед.
        local h = hit()
        h.draftsman = self.object
        h.type = hit.fire_wound
        h.direction = db.actor:position():sub(self.object:position())
        h:bone("pelvis")
        h.power = 1
        h.impulse = 10
        self.object:hit(h)

        local obj_clsid = self.object:clsid()
        if obj_clsid == clsid.poltergeist_s then
      printf("releasing object ["..self.object:name().."]")
      if alife():object(self.object:id()) ~= nil then
       alife():release(alife():object(self.object:id()), true)
      end
        end
        --' Подключим колбэк юзанья, для возможности снятия частей монстров
        self:exist_use()
    end

    --' Поддержка юзанья частей монстров '-------------------------------------------------------------------------------

    function generic_object_binder:exist_use()
        local ini = system_ini()
        if ini:line_exist(self.object:section(), "Spawn_Inventory_Item_Section") then
         local conf = ini:r_string(self.object:section(), "Spawn_Inventory_Item_Section")
      local items = {}
         for s in string.gfind(conf, "%s*([^,]+)%s*") do
          table.insert(items, s)
         end
         self.item = items[1]
      if self.item and system_ini():section_exist(self.item) then
          self.item_count = tonumber(items[2]) or 1
             self:set_use(ini)
      end
        end
    end

    function generic_object_binder:set_use(ini)
        --//определяем и устанавливаем надпись юза
        local character_use = (ini:r_string(self.object:section(), "character_use")) or "monstr_character_use"
        self.object:set_tip_text(character_use)
        --// устанавливаем каллбэк
        self.object:set_callback(callback.use_object, self.on_use, self)
        --// устанавливаем озвучку юза
        self.sound_use = sound_object("material\\dead-body\\collide\\hithard0"..tostring(math.random(1, 6)).."hl")
        if not self.use then self.use = true end
    end

    function generic_object_binder:on_use(obj, who)
        --// спавним в инвентарь юзающего, части монстра
        for i=1, self.item_count do
         alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id())
        end
        --// отключаем каллбэк
        self.object:set_callback(callback.use_object, nil)
        --// убираем надпись юза
        self.object:set_tip_text("")
        self.use = false
        --// дадим небольшой хит по телу трупа
        local ini = system_ini()
        local h = hit()
        h.draftsman = self.object
        h.type = hit.fire_wound
        h.direction = vector():set(0,1,0)
        h:bone( (ini:r_string(self.object:section(), "bone_impuls_abscission")) or "bip01_spine" )
        h.power = 1
        h.impulse = ( (ini:r_u32(self.object:section(), "impuls_abscission")) or 100 )
        self.object:hit(h)
        --// производим озвучку юза
        self.sound_use:play_at_pos(self.object, self.object:position(), sound_object.s3d)
    end

    function generic_object_binder:hit_callback(obj, amount, local_direction, who, bone_index)
    --    printf("HIT_CALLBACK: [%s] amount[%s]", obj:name(), amount)

        if(who:id()==db.actor:id()) then
      xr_statistic.set_best_weapon(amount)
        end

        if self.st.hit then
      xr_logic.issue_event(self.object, self.st.hit, "hit_callback", obj, amount, local_direction, who, bone_index)
        end

        if amount > 0 then
      printf("HIT_CALLBACK: %s amount=%s bone=%s who:id() = [%s] actor:id() = [%s]", obj:name(), amount, tostring(bone_index), who:id(), db.actor:id())
        end
    end

    function generic_object_binder:hear_callback(self, who_id, sound_type, sound_position, sound_power)
        if who_id == self:id() then
      return
        end
        xr_hear.hear_callback(self, who_id, sound_type, sound_position, sound_power)
    end

    function generic_object_binder:net_spawn(sobject)
        if not object_binder.net_spawn(self, sobject) then
      return false
        end

        local on_offline_condlist = db.storage[self.object:id()] and db.storage[self.object:id()].overrides and db.storage[self.object:id()].overrides.on_offline_condlist
        if on_offline_condlist ~= nil then
      xr_logic.pick_section_from_condlist(db.actor, self.object, on_offline_condlist)
        end

        if not self.object:alive() then
      return true
        end
        if alife():object(self.object:id()) == nil then
      return false
        end

    --    local pos = self.object:position()
    --    printf("net_spawn mpos[%s][%s][%s]", tostring(pos.x), tostring(pos.y), tostring(pos.z))

        db.add_obj(self.object)

    --******************************* Телепорт на первую точку пути работы смарттеррейна...*****************************
        local se_obj = alife():object(self.object:id())
        if db.spawned_vertex_by_id[se_obj.id] ~= nil then
      self.object:set_npc_position(level.vertex_position(db.spawned_vertex_by_id[se_obj.id]))
      db.spawned_vertex_by_id[se_obj.id] = nil
        elseif db.offline_objects[se_obj.id] ~= nil and db.offline_objects[se_obj.id].level_vertex_id ~= nil then
      printf("changing position for object[%s] from %s to %s : level vertex [%s] to [%s]", se_obj:name(), vec_to_str(se_obj.position), vec_to_str(level.vertex_position(db.offline_objects[se_obj.id].level_vertex_id)), tostring(se_obj.m_level_vertex_id), tostring(db.offline_objects[se_obj.id].level_vertex_id))
      self.object:set_npc_position(level.vertex_position(db.offline_objects[se_obj.id].level_vertex_id))
        elseif se_obj.m_smart_terrain_id ~= 65535 then
      local smart_terrain = alife():object(se_obj.m_smart_terrain_id)
      if smart_terrain.arriving_npc[se_obj.id] == nil then
       local smart_task = smart_terrain.job_data[smart_terrain.npc_info[se_obj.id].job_id].alife_task
       self.object:set_npc_position(smart_task:position())
      end
        end
    --******************************************************************************************************************

        smart_terrain.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_mobile, self.loaded)

        return true
    end

    function generic_object_binder:net_destroy()
        self.object:set_callback(callback.death,    nil)
        self.object:set_callback(callback.patrol_path_in_point, nil)
        self.object:set_callback(callback.hit,     nil)
        self.object:set_callback(callback.sound,     nil)
        xr_sound.stop_sounds_by_id(self.object:id())

        xr_combat_ignore.fighting_with_actor_npcs[self.object:id()] = nil

        local st = db.storage[self.object:id()]
        if st and st.active_scheme then
      xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy")
        end

    -- Запоминаем позицию и активную секцию --------
    if db.offline_objects[self.object:id()] then
        db.offline_objects[self.object:id()].level_vertex_id = self.object:level_vertex_id()
        db.offline_objects[self.object:id()].active_section = db.storage[self.object:id()].active_section
    end
    ------------------------------------------------n

        db.del_obj(self.object)
        db.storage[self.object:id()] = nil
        object_binder.net_destroy(self)
    end

    function generic_object_binder:reload(section)
        object_binder.reload(self, section)
        --printf("generic_object_binder:reload(): self.object:name()='%s'", self.object:name())
    end

    function generic_object_binder:net_save_relevant()
        --printf("generic_object_binder:net_save_relevant(): self.object:name()='%s'", self.object:name())
        return true
    end

    function generic_object_binder:save(packet)

        set_save_marker(packet, "save", false, "generic_object_binder")
        object_binder.save(self, packet)
        xr_logic.save_obj(self.object, packet)
        set_save_marker(packet, "save", true, "generic_object_binder")
        --------- use -----------
        packet:w_bool(self.use)
        -------------------------
    end

    function generic_object_binder:load(reader)
        self.loaded = true
        set_save_marker(reader, "load", false, "generic_object_binder")
        object_binder.load(self, reader)
        xr_logic.load_obj(self.object, reader)
        set_save_marker(reader, "load", true, "generic_object_binder")
        ---------- use -----------
        self.use = reader:r_bool()
        if self.use then
         self:exist_use()
        end
        -------------------------
    end

    -----------------------------------------------------------------------------------
    -- Sidor etc binding
    -----------------------------------------------------------------------------------

    function bind(obj)
        local new_binder = trader_object_binder(obj)
        obj:bind_object(new_binder)
    end
    ------------------------------------------------------------------------------------
    class "trader_object_binder" (object_binder)

    function trader_object_binder:__init(obj) super(obj)
        self.loaded = false
    end

    function trader_object_binder:reload(section)
        object_binder.reload(self, section)
    end

    function trader_object_binder:reinit()
        object_binder.reinit(self)

        db.storage[self.object:id()] = { }

        self.st = db.storage[self.object:id()]
    end

    function trader_object_binder:update(delta)
        object_binder.update(self, delta)

        -- јпдейт торговли
        if self.object:clsid() == clsid.script_trader then
      trade_manager.update(self.object)
        end

        local st = db.storage[self.object:id()]
        if st ~= nil and st.active_scheme ~= nil then
      xr_logic.try_switch_to_another_section(self.object, st[st.active_scheme], db.actor)
        end
        
        if self.st.active_section ~= nil then
      xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta)
        end
    end

    function trader_object_binder:net_spawn(sobject)
        if not object_binder.net_spawn(self, sobject) then
      return false
        end

        local on_offline_condlist = db.storage[self.object:id()] and db.storage[self.object:id()].overrides and db.storage[self.object:id()].overrides.on_offline_condlist
        if on_offline_condlist ~= nil then
      xr_logic.pick_section_from_condlist(db.actor, self.object, on_offline_condlist)
        end

        if not self.object:alive() then
      return true
        end
        
        if alife():object(self.object:id()) == nil then
      return false
        end

        db.add_obj(self.object)
        if self.object:clsid() == clsid.script_trader then
      self.object:set_trader_global_anim("idle")
      smart_terrain.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_trader, self.loaded)
        end
        
        return true
    end

    function trader_object_binder:net_destroy()
        xr_sound.stop_sounds_by_id(self.object:id())

        local st = db.storage[self.object:id()]
        if st and st.active_scheme then
      xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy")
        end

        if db.offline_objects[self.object:id()] then
      db.offline_objects[self.object:id()].level_vertex_id = self.object:level_vertex_id()
      db.offline_objects[self.object:id()].active_section = db.storage[self.object:id()].active_section
        end

        db.del_obj(self.object)
        db.storage[self.object:id()] = nil
        object_binder.net_destroy(self)
    end

    function trader_object_binder:net_save_relevant()
        return true
    end

    function trader_object_binder:save(packet)
        set_save_marker(packet, "save", false, "trader_object_binder")
        object_binder.save(self, packet)
        xr_logic.save_obj(self.object, packet)
        if self.object:clsid() == clsid.script_trader then
      trade_manager.save(self.object, packet)
        end
        set_save_marker(packet, "save", true, "trader_object_binder")
    end

    function trader_object_binder:load(reader)
        self.loaded = true
        set_save_marker(reader, "load", false, "trader_object_binder")
        object_binder.load(self, reader)
        xr_logic.load_obj(self.object, reader)
        if self.object:clsid() == clsid.script_trader then
      trade_manager.load(self.object, reader)
        end
        set_save_marker(reader, "load", true, "trader_object_binder")
    end
    Сообщение отредактировал AziatkaVictor - Пятница, 31.01.2020, 14:54
      Злобная реклама
    Пятница, 31.01.2020, 14:53
    Статус:
    Сообщений: 666
    Регистрация: 30.08.2018
    Российская Федерация  Nesquik
    Пятница, 31.01.2020, 15:05 | Сообщение # 5928
    Статус:
    Отмычка:
    Сообщений: 112
    Награды: 1
    Регистрация: 29.10.2019

    Не подскажите, возможно ли перенести Худ(полоска здоровья,полоска брони) из мода "Ветер Времени"
    И каким образом?
      Злобная реклама
    Пятница, 31.01.2020, 15:05
    Статус:
    Сообщений: 666
    Регистрация: 29.10.2019
    Российская Федерация  Крим
    Пятница, 31.01.2020, 16:06 | Сообщение # 5929
    Статус:
    Новичок:
    Сообщений: 231
    Награды: 1
    Регистрация: 21.04.2019

    Здравствуйте. Подскажите, пожалуйста, как можно сделать, чтобы при вхождении в рестриктор - воспроизводился звук.

    Сойдет такая логика?
      Злобная реклама
    Пятница, 31.01.2020, 16:06
    Статус:
    Сообщений: 666
    Регистрация: 21.04.2019
    Украина  AziatkaVictor
    Пятница, 31.01.2020, 16:17 | Сообщение # 5930
    Статус:
    Опытный:
    Сообщений: 1313
    Награды: 4
    Регистрация: 30.08.2018

    Крим,
    Код
    %=kill_actor%, %=play_sound(esc_die_anomaly_restr_sound)%
    Это можно объеденить в
    Код
    %=kill_actor =play_sound(esc_die_anomaly_restr_sound)%
    и запятую не ставят.
      Злобная реклама
    Пятница, 31.01.2020, 16:17
    Статус:
    Сообщений: 666
    Регистрация: 30.08.2018
    Российская Федерация  Крим
    Пятница, 31.01.2020, 16:20 | Сообщение # 5931
    Статус:
    Новичок:
    Сообщений: 231
    Награды: 1
    Регистрация: 21.04.2019

    AziatkaVictor, спасибо, попробую.
      Злобная реклама
    Пятница, 31.01.2020, 16:20
    Статус:
    Сообщений: 666
    Регистрация: 21.04.2019
    Российская Федерация  Lektorrr
    Пятница, 31.01.2020, 16:28 | Сообщение # 5932
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 5
    Регистрация: 09.01.2013

    Используются ли в ЗП фразы НПС из папки idle? Т.е. это фразы НПС, которые они произносят, если бездействуют. Сейчас заселял локацию и не заметил, чтобы они их употребляли.

    Если они не задействованы - возможно ли восстановить их с помощью правок или вручную?
      Злобная реклама
    Пятница, 31.01.2020, 16:28
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2013
    Украина  molodoy_chelovek
    Пятница, 31.01.2020, 17:34 | Сообщение # 5933
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Lektorrr, послушал некоторые (не все). Да, в оригинале они используются.
      Злобная реклама
    Пятница, 31.01.2020, 17:34
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Российская Федерация  Lektorrr
    Пятница, 31.01.2020, 18:00 | Сообщение # 5934
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 5
    Регистрация: 09.01.2013

    Цитата molodoy_chelovek ()
    Lektorrr, послушал некоторые (не все). Да, в оригинале они используются.

    А при каких обстоятельствах их можно услышать?
      Злобная реклама
    Пятница, 31.01.2020, 18:00
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2013
    Украина  molodoy_chelovek
    Пятница, 31.01.2020, 18:27 | Сообщение # 5935
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Lektorrr, на Янове/Скадовске, или у костра

    P.S если речь идет про звуковые дорожки в фракция/states/idle
    Сообщение отредактировал molodoy_chelovek - Пятница, 31.01.2020, 18:32
      Злобная реклама
    Пятница, 31.01.2020, 18:27
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Российская Федерация  Lektorrr
    Пятница, 31.01.2020, 19:39 | Сообщение # 5936
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 5
    Регистрация: 09.01.2013

    Цитата molodoy_chelovek ()
    Lektorrr, на Янове/Скадовске, или у костра

    P.S если речь идет про звуковые дорожки в фракция/states/idle

    Понял. Возможно, за них отвечают camp зоны.
      Злобная реклама
    Пятница, 31.01.2020, 19:39
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2013
    Российская Федерация  Lektorrr
    Пятница, 31.01.2020, 20:53 | Сообщение # 5937
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 5
    Регистрация: 09.01.2013

    Задался тут целью сделать Монолит "полноценной" группировкой. Прописал их на поле симуляции, добавил диалоги приветствия и ранения. Однако столкнулся с тем, что раненные монолитовцы после съедания аптечки не поднимаются и диалог повторяется, а товарищи их не лечат и просто стоят рядом. Где искать проблему?
      Злобная реклама
    Пятница, 31.01.2020, 20:53
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2013
    Российская Федерация  sergej5500
    Пятница, 31.01.2020, 22:36 | Сообщение # 5938
    Статус:
    Новичок:
    Сообщений: 290
    Награды: 4
    Регистрация: 09.01.2017

    Цитата Lektorrr ()
    раненные монолитовцы после съедания аптечки не поднимаются


    Попробуй отредактировать файл gamedata\scripts\xr_wounded. Функция init_wounded. Там монолит указан явно.
      Злобная реклама
    Пятница, 31.01.2020, 22:36
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2017
    Российская Федерация  SP4CEE
    Пятница, 31.01.2020, 23:10 | Сообщение # 5939
    Статус:
    Зевака:
    Сообщений: 15
    Награды: 0
    Регистрация: 19.01.2020

    На счёт Динамических худов. Как сказал denis2000, я добавил в скрипт функцию: get_hud():AddCustomStatic(ui_mask_mod,true)

    Потом создал xml файл и прописал в него худ, но мне выдало ошибку:
    Код
    Expression    : start_node && path
    Function      : CXml::NavigateToNode
    File          : xrXMLParser.cpp
    Line          : 95
    Description   : NavigateToNode failed in XML file
    Arguments     : ui\ui_custom_msgs.xml


    Тогда я решил записать свой худ в ui\ui_custom_msgs.xml. Прописал его там так:
    Код
            <ui_mask_mod  x="0" y="0" width="1024" height="768">
                    <texture>ui_mask_mod</texture>
            </ui_mask_mod>

    Но мне всё равно выдаёт эту ошибку:
    Код
    Expression    : start_node && path
    Function      : CXml::NavigateToNode
    File          : xrXMLParser.cpp
    Line          : 95
    Description   : NavigateToNode failed in XML file
    Arguments     : ui\ui_custom_msgs.xml


    Кто знает, в чём проблема?
      Злобная реклама
    Пятница, 31.01.2020, 23:10
    Статус:
    Сообщений: 666
    Регистрация: 19.01.2020
    Российская Федерация  Neptun
    Суббота, 01.02.2020, 04:09 | Сообщение # 5940
    Связной
    Статус:
    Бывалый:
    Сообщений: 672
    Награды: 9
    Регистрация: 25.03.2012

    Цитата SP4CEE ()
    Кто знает, в чём проблема?

    В скрипте такая функция должна быть:

    local hud = get_hud()
    hud:AddCustomStatic("ui_mask_mod", true)
      Злобная реклама
    Суббота, 01.02.2020, 04:09
    Статус:
    Сообщений: 666
    Регистрация: 25.03.2012
    Поиск: