Случайная подборка модов
Закон Дегтярева
3.5
Old Story
4.1
World of War - Mod 0.2
3.5
Альтернатива 1.1 Beta
3.0
История Борова
3.6
Парадокс: Начало
3.6
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: 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
    Поиск: