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

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

4 часа назад, Zander_driver сказал:

И я так понимаю, что за такие минусы здесь меня сейчас тухлыми помидорами наверное закидают, да? Или нет?

За что тебя тухлыми яйцами закидывать? СУБД вообще норм штука, сам пользую postgres на дому. Правда без php морды.

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

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

Полагаю, вообще и в частности, если исходный (ванильный) движок не позволяет сделать что-то конкретное (хотелку), самый правильный вариант - править движок под свои нужды. Ясен пень, изучать исходники, научиться все это дело собирать и все выйдет, как надо. Правда процесс сей муторный и длительный, но результат будет!

 

Не всем сей совет подойдет. Мне вот не подошел :)

  • Согласен 2

Сталкер - наше всё!

Ссылка на комментарий
10 часов назад, AndrewMor сказал:

Мне вот не подошел

Аналогично, но с советом целиком и полностью согласен. :)
Но я на работе настолько наедаюсь программированием (full stack от БД до фронта), что лезть и в движок Сталкера тупо не хотелось, хотя при нужде могу просто посмотреть, что там в нужном месте написано.

Для меня чистые Lua скрипты на ванильном движке - это редкий отдых. :)


@Zander_driver почему бы просто не выложить куда-нибудь в инструментарий мододела? Кому надо - найдёт и возьмёт не сейчас, так позже. Я вот тоже обязательно полюбопытствую, а может и воспользуюсь однажды.

Изменено пользователем Kirgudu
  • Спасибо 1
  • Нравится 1
Ссылка на комментарий
04.03.2023 в 06:10, Norman Eisenherz сказал:

получить все входящие секции из конфига [weapons.ltx]

Нужно что-то типа этого: сканирование конфигов с помощью FS. Только тут нужно, чтобы конфиги были не в архивах.

Изменено пользователем naxac
  • Согласен 1
  • Полезно 3

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
04.03.2023 в 17:21, Kirgudu сказал:

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

В ближайшие дни отмахаюсь с навалившейся работой, приведу свой инструмент в порядок в плане оснащения инструкцией и комментариями.

И выложу в новой теме в инструментарии.

1 час назад, naxac сказал:

что-то типа этого

БД сканировать всяко удобнее :)

  • Нравится 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Есть такой код:
 

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

    if obj:section() == "sleepingbag" then
        local can_sleep = true    
        local actor = db.actor
        for id=1,65535 do
            local object = level.object_by_id(id)
            if object ~= nil then
                if (IsStalker(object) and object:relation(actor) == game_object.enemy) or IsMonster(object) then
                    if object:position():distance_to(actor:position()) < ENEMY_RADIUS and object:see(actor) then
                        news_manager.send_tip(actor, "sleep_warning_enemy", nil, "default", 5000)
                        can_sleep = false
                        break
                    end
                end
            end
        end

        -- проверка на радиацию
        if actor.radiation > 0 and can_sleep then
            news_manager.send_tip(actor, "sleep_warning_radiation", nil, "default", 5000)
            can_sleep = false
        end

        if actor.satiety < 0.5 and can_sleep then
            news_manager.send_tip(actor, "satiety_warning_radiation", nil, "default", 5000)
            can_sleep = false
        end
        
        if can_sleep then
        end

    end

 

    -- ATM Sleeping Bag start
    if self.already_jumped==false and jump_level.need_jump==true and (device().frame > self.spawn_frame+2000) then
        jump_level.try_to_jump()
        self.already_jumped = true
        return
    end


Что мне нужно:
Если все проверки проходят, то запускаем окно сна, а если нет, то нет соответственно.

Проблема в чём: если проверка не проходит то окно открывается.

Что не так с кодом?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
2 часа назад, imcrazyhoudini сказал:

Есть такой код:

Функцию целиком выложи, а то не очень понятно что к чему

 

ну или как-то так:

Скрытый текст
    if obj:section() == "sleepingbag" then
        local can_sleep = true    
        local actor = db.actor
        for id=1,65535 do
            local object = level.object_by_id(id)
            if object ~= nil then
                if (IsStalker(object) and object:relation(actor) == game_object.enemy) or IsMonster(object) then
                    if object:position():distance_to(actor:position()) < ENEMY_RADIUS and object:see(actor) then
                        news_manager.send_tip(actor, "sleep_warning_enemy", nil, "default", 5000)
                        can_sleep = false
                        break
                    end
                end
            end
        end

        -- проверка на радиацию
        if actor.radiation > 0 and can_sleep then
            news_manager.send_tip(actor, "sleep_warning_radiation", nil, "default", 5000)
            can_sleep = false
        end

        if actor.satiety < 0.5 and can_sleep then
            news_manager.send_tip(actor, "satiety_warning_radiation", nil, "default", 5000)
            can_sleep = false
        end
		
         -- ATM Sleeping Bag start
        if can_sleep then
            if self.already_jumped==false and jump_level.need_jump==true and (device().frame > self.spawn_frame+2000) then
                jump_level.try_to_jump()
                self.already_jumped = true
                return
            end		
        end
    end

 

 

Изменено пользователем ted.80
Ссылка на комментарий
52 минуты назад, ted.80 сказал:

Функцию целиком выложи, а то не очень понятно что к чему

Это вся функция и есть, впихнул в on_use в биндер.
Впрочем вот все скрипты касательно этого сна: тык

То, что ты кинул не помогло.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
15 часов назад, imcrazyhoudini сказал:

Что не так с кодом?

да там всё "нитак" - все проверки у тебя находятся в bind_stalker.script > actor_binder:use_object(obj)

но и одна из них не запускает "окно сна", а конструкция:

    -- ATM Sleeping Bag start
    if self.already_jumped==false and jump_level.need_jump==true and (device().frame > self.spawn_frame+2000) then
        jump_level.try_to_jump()
        self.already_jumped = true
        return
    end

ни какого отношения к сну вообще не имеет :big_boss:

А нужное тебе окно запускается через - bind_stalker.script > actor_binder:on_item_drop (obj) > atmmain.on_item_drop(obj)

function on_item_drop(obj)
	if obj:section() == "sleepingbag" then
		sleepingbag_id = obj:id();
		ui_sleep_init = true;		
	end
--	atmdebug.abundance(obj);	
end

тут проверяется секция и переменная  ui_sleep_init  становится "тру"

потом эта переменная в функции    atmmain.update()  которая как нистрано висит апдейте актора

в строке 59 запускает нужное или нет окно 

level.start_stop_menu(atmsleep.UISleep(), true);

 

  • Спасибо 1
  • Согласен 1
  • Полезно 1
Ссылка на комментарий

@ted.80 выбросил всё лишнее и оставил лишь в on_use такую рабочую конструкцию:
 

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

function update(obj)

    if obj:section() == "sleepingbag" then
        local ui_sleep_init = true    
        local actor = db.actor
        for id, v in pairs(db.storage) do
            local object = level.object_by_id(id)

            if object ~= nil then
                if (IsStalker(object) and object:relation(actor) == game_object.enemy) or IsMonster(object) then
                    if object:position():distance_to(actor:position()) < ENEMY_RADIUS and object:see(actor) then
                        news_manager.send_tip(actor, "sleep_warning_enemy", nil, "default", 5000)
                        ui_sleep_init = false
                        break
                    end
                end
            end
        end

        if actor.radiation > 0 and ui_sleep_init then
            news_manager.send_tip(actor, "sleep_warning_radiation", nil, "default", 5000)
            ui_sleep_init = false
        end


        if actor.satiety < 0.70 and ui_sleep_init then
            news_manager.send_tip(actor, "sleep_warning_satiety", nil, "default", 5000)
            ui_sleep_init = false
        end
        
        if ui_sleep_init == true then
            level.start_stop_menu(atmsleep.UISleep(), true)
        end     
    end
end

Теперь остался такий вопрос: а как можно остановить сон если ГГ проголодается?
Впихнул на апдейт такое:
 

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

        if db.actor.satiety < 0.70 and ui_sleep_init == true then
                news_manager.send_tip(actor, "satiety_sleep", nil, "default", 5000)
                atmsleep.sleep_stop()
        end


Но сон не останавливает.

Что не так?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@imcrazyhoudinidell

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

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий
2 часа назад, imcrazyhoudini сказал:

Что не так?

 

2 часа назад, imcrazyhoudini сказал:

   if db.actor.satiety < 0.70 and ui_sleep_init == true then

Тут    ui_sleep_init    всегда будет "фолс" а не "тру" всегда!!!

потому что в предыдущей функции она объявлена  local   

и живёт она только внутри этой функции :spiteful:, и её значение в другую функцию

а тем более в другой скрипт не передаётся

  • Спасибо 1
Ссылка на комментарий

@ted.80 false? Хм, а точно не nil сопровождаемый вылетом с ругонью на эту самую переменную?

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

Всем привет!

Имею такой код:

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

function actor_on_update(status)
    local tm = task_manager.get_random_task()
    local active = tm.active_task_by_type
    for k, task_id in pairs(active) do
    local task_status = tm.task_info[task_id].status
        if task_status == "completed" then --// Если завершили таск
            ----
        end
    end
end

Хочу сделать что бы при взятии задания на убиство нпс задание завершалось автоматически а не бежать обратно за наградой. Как завершить принудительно выполненый таск?

Ссылка на комментарий

Никто случайно не вникал (и соответственно) не правил работу стейт менеджера?

Проблема в том, что НПС отыгрывает анимации лишь с into, a out и idle прекрасно игнорирует.

Проблема касается ТЧ и ЧН, как обстоят дела в ЗП - не знаю (но судя по одному скриншоту где НПС "ищет" артефакты в аномалии, то могу предложить что там могли исправить).

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

Добрый день.

Как у нпц поменять имя? Для серверного объекта способ нашёл:

local sobj = alife():object( id )	
local pk = m_netpk.get(sobj, 1)
local data = pk:get()
local name = data.checked_characters
--ВОТ ТУТ МЕНЯЕМ
data.checked_characters = "Джек Потрошитель"
pk:set(data)

А как тоже самое сделать для клиентского объекта?

Ссылка на комментарий
3 часа назад, phalcor сказал:

Для серверного объекта способ нашёл

Не очень понимаю, как такое может сработать, ведь свойства checked_characters нет в оригинальном модуле Артоса для работы с нет-пакетами (который тут, судя по всему, и используется).

3 часа назад, phalcor сказал:

А как тоже самое сделать для клиентского объекта

Воспользоваться аналогичным кодом, но поменять свойство character_name.

Это, однако, не поможет, поскольку имя персонажа в журнале, диалогах и при наведении курсора берётся из профиля.

Можно, конечно, и профиль на лету поменять - для этого в нетпакете есть свойства specific_character и character_profile, но и они не охватывают всё, к тому же сие чревато другими последствиями, такими как замена визуала и т. п.

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

  • Спасибо 1
  • Согласен 1
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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