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

Fenrir02

Проверенные
  • Число публикаций

    175
  • Регистрация

  • Последнее посещение

  • AMKoin

    85 [Подарить AMKoin]

Сообщения опубликованы Fenrir02

  1. @mole venomous
    Закрыть инвентарь при использовании чего-либо можно так:
     

    Скрытый текст
    
    
    local objects = {
      [ "medkit" ] = true,
    }
    
    
    function on_use( obj )
      if objects[ obj:section() ] then
        local input = level.main_input_receiver()
        if input then
          level.start_stop_menu( input, true )  -- Закрываем инвентарь
        end
      end
    end
    
    -- Только такой способ знаю
    function on_block_inventory()
      cmd( "unbind inventory" )
    end
    
    function cmd( scmd, ... )
      local args = { ... }
      if #args > 0 then
        scmd = scmd .. ' ' .. table.concat( args, ' ' )
      end
      get_console():execute( scmd )
    end

     

     

    • Полезно 1
  2. Добрый день!
    Подскажите, по каким причинам НПС могут самостоятельно переходить в оффлайн, находясь при этом в радиусе switch_distance актора?

    Пробовал принудительно выталкивать непися в онлайн таким способом:

      for a = 1, 65535 do
        local obj = alife():object( a )
        if obj then
          local obj_name = obj:name()
          if string.find( obj_name, "esc_vagon_wounded" ) then
            log3( "~ [%s]: found [%s]", script_name(), obj_name )
            alife():set_switch_online( obj.id, true )
            alife():set_switch_offline( obj.id, false )
          end
        end
      end

    Но ничего не выходит.

  3. Здравствуйте!
    Скажите, существует ли способ выявить файлы (звуки, текстуры), которые никак не задействованы игрой? Задался этим вопросом, после того, как в папке с игрой накопилось много хлама.
    Может есть какой-нибудь скрипт или программа?

  4. @Gorlomi
    Не нужно править таймеры выброса. Он будет работать и при таймфакторе 500.

    Эта строка запускает таймер выброса в игровом времени.

    amk.g_start_timer("blowout",0,0,3,2)
    g_start_timer(name,delay_d,delay_h,delay_m,action)

    name - имя таймера

    delay_d - задержка в днях

    delay_h - задержка в часах

    delay_m - задержка в минутах

     

  5. @Stalex
    Если этот биндер составлен правильно, нужно его подключать не в скриптах, а в конфиге самого предмета. К примеру, в секции [bread] необходимо прописать строку:

    script_binding = bind_item.init

    Таким способом можно на что угодно делать биндеры.

  6. Имеется такая функция рандомного удаления предметов из инвентаря:

    function release_random_item(num)
    	local actor = db.actor
    	local cnt = actor:object_count()
    	if cnt < num then return end
    	for i=1,num do
    		local item = actor:object(math.random(0, cnt-1))
    		local sobj = alife():object(item:id())
    		if sobj then
    			alife():release(sobj,true)
    			cnt = actor:object_count()
    		end
    	end
    end

    Помогите сделать таблицу предметов, которые нельзя удалять.

  7. Да, этот мод у меня как раз и стоит.
    Функция, которая разжигает костёр при присутствии хотя бы одного НПС такая:

    Скрытый текст
    
    function CKampManager:increasePops(npc)
    	self.population = self.population + 1
    	local camp_name = camp_tbl[self.kamp_name]
    	if self.population == 1 and camp_name then
    		local flame_name = camp_name.flame
    		local light_name = camp_name.light
    
    		kamps_info[self.kamp_name] = nil
    		if not kamps_info[self.kamp_name] then
    			kamps_info[self.kamp_name] = {}
    			kamps_info[self.kamp_name].time = time_global()
    			kamps_info[self.kamp_name].prtcl = nil
    			kamps_info[self.kamp_name].state = nil
    		end
    
    		for i,o in pairs(level_objs) do
    			local obj = o
    			if obj and obj:name() == flame_name then
    				kamps_info[self.kamp_name].obj_fire = obj
    				obj:enable_anomaly()
    			end
    			if obj and obj:name() == light_name then
    				kamps_info[self.kamp_name].obj_light = obj
    			end
    		end
    	end
    end

     

    (файл xr_kamp.script)
    А вот как сделать проверку на приближение ГГ к костру ума не приложу...

  8. @Romann
    Здравствуйте!

    Как вариант, можно однократно вызвать сообщение с помощью инфопоршня:

    Скрытый текст
    
    			local current_outfit = db.actor:item_in_slot(7)
    			if current_outfit then
    				if not has_alife_info("check_outfit") then
    					db.actor:give_info_portion("check_outfit")
    					-- Здесь одноразовое срабатывание при надевании костюма
    				end
    				local outfit_section = current_outfit:section()
    				if outfit_properties[outfit_section] then
    					outfit_protection = outfit_properties[outfit_section]
    				end
    			else
    				if has_alife_info("check_outfit") then
    					db.actor:disable_info_portion("check_outfit")
    					news_manager.send_tip(db.actor, "%c[250, 0, 255, 0]".."Б-р-р-р, прохладно.", nil, nil, nil)
    					-- Здесь одноразовое срабатывание при снятии костюма
    				end
    			end

     

     

    • Спасибо 1
    • Согласен 1

AMK-Team.ru

×
×
  • Создать...