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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

Скриптование


Svoboда

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

@Баба ЯГА Как это не работает? В OGSE таким образом главное меню подбирается в зависимости от реального времени суток.

 

Скрытый текст

function main_menu:InitBackground()
    local time = level.present() and level.get_time_hours() or tonumber(os.date("%H", os.time()))
    local night = time <= 8 or time >= 20
    self.bg_st:InitTexture(night and "ui\\ui_mm_night_back" or "ui\\ui_mm_main_back")
    local multiplier = 0.5625
    if screen_aspect_ratio > 2 then -- ultra-wide
        multiplier = 0.40
    end
    local tex_orig_w = screen_aspect_ratio * 1024 * multiplier
    local tex_orig_x_offs = (1024 - tex_orig_w) / 2
    self.bg_st:SetOriginalRect(tex_orig_x_offs, 0, tex_orig_w, 768);
end

 

Изменено пользователем I am Dead

Поделиться этим сообщением


Ссылка на сообщение

@Капрал Хикс Вот так твоя проблема решается:

 

Скрытый текст

function motivator_binder:load(reader)
  self.loaded = true

  printf("motivator_binder:load(): self.object:name()='%s'", self.object:name())
  object_binder.load(self, reader)
  printf("motivator_binder:object_binder.load(): self.object:name()='%s'", self.object:name())

  if reader:r_eof() then
    abort("[xr_motivator.script]SAVE FILE IS CORRUPT")
  end


  self.treasure_processed = reader:r_bool()

  xr_logic.load_obj(self.object, reader)
    if system_ini():r_u32("script","current_server_entity_version") > 6 then    -- патч 6
        self.npc_script_version = alife():object(self.object:id()).script_version
        dialog_manager.load(self.object, reader, self.npc_script_version)
    else    -- патч 4
        dialog_manager.load(self.object, reader)
    end
  trade_manager.load(self.object, reader)
end

А свои затычки из dialog_manager убери оставив лишь такой код:

 

Скрытый текст

function load(npc, reader, ver)
    if selected_phrase_by_id == nil then
        selected_phrase_by_id = {
            intro = {},
            cool_info = {},
            action_info = {}
        }
    end
    
    
    local flag = nil
    if ver >= 7 then
        flag = reader:r_stringZ()
    else
        flag = tostring(reader:r_s16())
    end
    
    if flag ~= "-1" then
        selected_phrase_by_id.intro[npc:id()] = {phrase = flag, count = 0}
    else
        selected_phrase_by_id.intro[npc:id()] = nil
    end

    if ver >= 7 then
        flag = reader:r_stringZ()
    else
        flag = tostring(reader:r_s16())
    end
    if flag ~= "-1" then
        selected_phrase_by_id.cool_info[npc:id()] = {phrase = flag, count = 0}
    else
        selected_phrase_by_id.cool_info[npc:id()] = nil
    end
    
end

 

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

Поделиться этим сообщением


Ссылка на сообщение

Есть такая функция из xr_codition.script

 

-- true если у актора одет шлем указанной секции
function actor_wear_helmet(actor, npc, p)
    return p[1] ~= nil and actor:object( p[1] ) ~= nil and actor:item_in_slot(10) ~= nil and actor:item_in_slot(10):section() == p[1]
end

 

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

 

P.S почему то не получается с телефона поместить под спойлер.

Поделиться этим сообщением


Ссылка на сообщение

@Biblia Блин, я сейчас не у компьютера поэтому не могу наизусть пример написать. Тем более в интернета полно уроков на эту тему.

Поделиться этим сообщением


Ссылка на сообщение

@Biblia Пример можешь поглядеть в новом арсенале 6, там есть скрипт на озвучивание подбираемого предмета по его классу( самое первое что пришло где можно подглядеть пример использования).

  • Спасибо 1
  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение
49 минут назад, ARTLantist сказал(а):

Добавлять в движке итератор для пояса и с его помощью проверять наличие предмета нужной секции. Иначе никак.

Подсказали функцию которая замечательно работает.

 

Скрытый текст

function actor_has_item_on_belt(actor, npc, p)
    local obj = actor:object(p[1])
    return obj and actor:is_on_belt(obj)
end

 

  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение

@ARTLantist Тогда вопрос уже другой, как эту функцию переделать под огср.

 

Скрытый текст

-- переносим все вещи из ящика с указанным story_id
function transfer_from_box(box_sid)
    local box = level_object_by_sid(box_sid)
    if box then
        box:iterate_inventory_box(function(item) box:transfer_item(item, db.actor) end)
    end
end

 

С такой функцией у меня идет ругань на iterate_inventory_box так как в движке его нету, происходит вылет.

 

Изменено пользователем I am Dead

Поделиться этим сообщением


Ссылка на сообщение

@Stalkersof Попробуй так сделать:

 

Скрытый текст

function generic_object_binder:use_callback(obj, who)
	if self.use_flag == nil and self.object:section()~="m_trader" then
		self.object:set_nonscript_usable(false)
		self.use_flag = true
	end
	--------------------------
	--------------------------
	--------------------------
    level.start_stop_menu(NewUI4.main(), true)
	--self:mutanter_use(obj,who)
	   
end

 

Поделиться этим сообщением


Ссылка на сообщение

@Kirgudu Хмм, действительно тут уж правильней будет "сталкер или монстр"

  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

Приветствую всех. Можно ли на платформе OGSR задать состояние тела для актора?

Поделиться этим сообщением


Ссылка на сообщение

@AndreySol Делаю некую систему повреждения конечностей. И к примеру когда повреждены ноги хочу заблокировать бег.

Поделиться этим сообщением


Ссылка на сообщение

@Manool То есть бег будет принудительно сбрасываться на шаг? И есть ли что то подобное для других состояний ? К примеру если нога очень сильно повреждена то гг даже ходить не сможет, а только в полный присяд( типо ползет ).

Изменено пользователем I am Dead

Поделиться этим сообщением


Ссылка на сообщение

@Manool Благодарю, а то я уже понавыдумывал костылей костылей всяких.

Поделиться этим сообщением


Ссылка на сообщение

@UriZzz По факту да, если обозначенная локальная переменная.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

Обрыл весь форум, но так нашёл ответа. Как запустить анимацию через add_cam_effector циклично?

Поделиться этим сообщением


Ссылка на сообщение

Можно ли на OGSR Engine заблокировать какой либо слот по определённой функции не прибегая к db.actor.hide_weapon?

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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