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

[SoC] Ковыряемся в файлах

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

не

53 минуты назад, Norman Eisenherz сказал:

или ищи кого-то с уставленным движком OGSR именно твоей версии.

А у тебя какая собственно?
Впрочем, ни в последней, ни в более ранней этих функций не было.

 

53 минуты назад, Norman Eisenherz сказал:

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

Да это при чём, я мод пятый год уже делаю, просто никогда не имел дела со скриптами, не было такой нужды чтобы квест адекватно работал.

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

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

Ссылка на комментарий
05.10.2022 в 18:19, Houdini_one сказал:

гг подойдёт к столу, на нём будет закуска (взять нельзя) и водка, вот эти голоса всякие, в один момент эта водка станет доступна,

Может быть для этой задачи использовать обычный physic_object с визуалом от водки и соответствующей логикой?

S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)

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

@WinCap я знаю как сделать её неюзабельной, сделать её как physic_object, в нужный момент удалить и заспавнить как обычную водку, вопрос только как сделать чтобы ГГ начал её пить сам, без клика по предмету.

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

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

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

А зачем такие сложности?

Пропиши в эту бутылку (physic_object) логику - когда ГГ её use'нет она удаляется, а настоящая водка спавнится в инвентарь.

Ну, а дальше: db.actor:eat(db.actor:object("vodka"))

  • Спасибо 1
  • Нравится 1
  • Согласен 2
  • Полезно 1

S.T.A.L.K.E.R. CoP Objects (upd 10.04.24)

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

@WinCap если честно не догадался об этом... Но да ладно.

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

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

Друзья, подскажите.. Нужно сделать несколько айтемов. Один "предохранитель" от радиации, другой от пси-излучения. Подскажите переменные или функции для вышеописанных действий плс. (То есть сожрал таблетку - не берёт радиация / пси-излучение)

 

Ещё, как сделать зависимость от употребления какго либо предмета? Интересует сама функция

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

Интересует сама функция

Сигаретная зависимость

 

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

(То есть сожрал таблетку - не берёт радиация / пси-излучение)

Как в ЗП? Сделано в OGSR:GA (вроде) скриптами.

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

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

@Houdini_one Сделал такой прикол:
 

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

 if has_alife_info("rad_immunity") then
         db.actor.radiation = -db.actor.radiation
    return
end
end

А оно просто как антирад работает один раз.

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

работает один раз

Поставь на апдейт ГГ. Если нужно на время, забирай инфо по таймеру.

  • Согласен 1

Здесь могла быть ваша реклама.

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

@Hind такая функция:
 

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

function testpsy()
if (db.actor.psy_health > 0.65) and has_alife_info("yan_ustanovka_on") then
db.actor.psy_health = -0.01
end
if (db.actor.psy_health <= 0.65) and has_alife_info("yan_ustanovka_on") then
db.actor.psy_health = 0.01
   end
end

Удерживала пси-хп игрока на 65% до получения инфопоршня.
Прикрути таймер сколько оно должно работать и смени пси-хп на радиацию.

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

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

@mole venomousтак я как сделал:

При юзании даётся инфа (rad_immunity), и запускается таймер на 2 минуты. По истечению двух минут инфа убирается, а соотвественно и дейсвтие препарата тоже.

А как на обнову поставить то?

@Houdini_oneизменил  чутка, не работает
 

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

function use_meladin()
if (db.actor.radiation >= 0) and has_alife_info("rad_immunity") then
db.actor.radiation = -db.actor.radiation
end
end

 

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

В bind_stalker ф-ия 

 

function actor_binder:update(delta)

    ...

    update_medkit()

    ...

end

-- Для примера

function update_medkit()
    if has_alife_info("actor_medkit_use_info") then
        actor.health = 0.0016 
    end

end

 

  • Спасибо 1

Здесь могла быть ваша реклама.

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

Слямзил некролог из интернета. Всё гуд но мне не нравится то что сообщение приходит сразу. Решил чутка изменить его - при смерти старутет таймер, после окончания которого и приходит уведомлялка. 
Вот сам оригинал:
 

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

local level_name = {
  ["l01_escape"] = "Кордон",
  ["l02_garbage"] = "Свалка",
  ["l03_agroprom"] = "НИИ Агропром",
  ["l03u_agr_underground"] = "Подземелье НИИ Агропром",
  ["l04_darkvalley"] = "Тёмная долина",
  ["l04u_labx18"] = "Лаборатория X-18",
  ["l05_bar"] = "Бар",
  ["l06_rostok"] = "Дикая территория",
  ["l07_military"] = "Арм.склады",
  ["l08_yantar"] = "Янтарь",
  ["l08u_brainlab"] = "Лаборатория X-16",
  ["l10u_bunker"] = "Лаборатория X-10",
  ["l10_radar"] = "Радар",
  ["l11_pripyat"] = "Припять",
  ["l12_stancia"] = "ЧАЭС",
  ["l12_stancia_2"] = "ЧАЭС",
  ["l12u_sarcofag"] = "Саркофаг",
  ["l12u_control_monolith"] = "Управление Монолитом"
            }
 
local community = {
    ["stalker"] = "Одиночка",
    ["monolith"] = "Монолит",
    ["military"] = "Военные",
    ["bandit"] = "Бандит",
    ["killer"] = "Наемник",
    ["ecolog"] = "Эколог",
    ["dolg"] = "Долг",
    ["freedom"] = "Свобода",
    ["zombied"] = "Зомбированный",
    ["trader"] = "Торговец"
            }
 
function kill_npc(victim, who)
  if victim and IsStalker(victim) then
local dead_news = "%c[255,0,0,0]ПОГИБ СТАЛКЕР \\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Кличка: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""
db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000)
dmb2.news_sound()
   end
end



А вот моя поделка 

 

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

 

function kill_npc(victim, who)
  if victim and IsStalker(victim) then
  dmb2.nekrolog_timer()
  end
end

function nekrolog_message(victim, who)
  if victim and IsStalker(victim) then
local dead_news = "%c[255,0,0,0]ПОГИБ СТАЛКЕР \\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Кличка: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()]..""
db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000)
dmb2.news_sound()
end
end

 


И сам таймер, по окончанию которого выполняется nekrolog_message
 

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

    function nekrolog_timer()
      local iTimer = time_global() + 5000
 
      local function check_timer()
         return time_global() > iTimer
      end
 
      level.add_call(check_timer, dmb.nekrolog_message(victim, who))
   end



Но после убийства ничё не происходит. Что делать?

Небольшая ремарка: если убрать   if victim and IsStalker(victim) then в nekrolog_message то происходит вылет с причиной 

 dmb.script:48: attempt to index local 'victim' (a nil value)

Отбой. Разобрался. Чтобы всё работало с задержкой, в сообщении вместо цифры 1 поставить кол-во желаемых секунд (1000, 5000, т.д.)

Ссылка на комментарий
27 минут назад, Hind сказал:

Слямзил некролог из интернета

Очень урезанная версия. Например, нет комментариев о случившемся от других сталкеров. 

PW7EW.png

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

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

@Hind @aromatizer Вот вариант некрологов, которым я пользуюсь.

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

 

local level_name = {
  ["l01_escape"] = "Кордон",
  ["l02_garbage"] = "Свалка",
  ["l03_agroprom"] = "НИИ Агропром",
  ["l03u_agr_underground"] = "Подземелье НИИ Агропром",
  ["l04_darkvalley"] = "Тёмная долина",
  ["l04u_labx18"] = "Лаборатория X-18",
  ["l05_bar"] = "Бар",
  ["l06_rostok"] = "Дикая территория",
  ["l07_military"] = "Арм.склады",
  ["l08_yantar"] = "Янтарь",
  ["l08u_brainlab"] = "Лаборатория X-16",
  ["l10u_bunker"] = "Лаборатория X-10",
  ["l10_radar"] = "Радар",
  ["l11_pripyat"] = "Припять",
  ["l12_stancia"] = "ЧАЭС",
  ["l12_stancia_2"] = "ЧАЭС",
  ["l12u_sarcofag"] = "Саркофаг",
  ["l12u_control_monolith"] = "Управление Монолитом"
            }
 
local community = {
    ["stalker"] = "Вольный сталкер",
    ["monolith"] = "Монолит",
    ["military"] = "Военный",
    ["bandit"] = "Бандит",
    ["killer"] = "Наемник",
    ["ecolog"] = "Учёный",
    ["dolg"] = "Долг",
    ["freedom"] = "Свобода",
    ["zombied"] = "Зомбированный",
    ["trader"] = "Торговец"
            }
 
local death_komment = {
"Трупом больше - трупом меньше, хех!",
"О! Сидрыч, хоть и не я убил его, но с тебя всё равно причитается!",
"Бармен, и чё делать-то теперь? Ладно, пойду посмотрю на труп, вдруг на флешке инфа эта есть... Если чё - пиши в личку.",
"Да когда ж это кончится?!... ",
"Твою мать! А я-то думал, что всех порешил...",
"чОрт побери, только вчера с ним виделись... Жаль пацана...",
"Земля пухом! Хороший сталкер был... Пойду КПК подберу - мож хабар остался...",
"Ну, вот и ещё один конкурент в мир иной отошёл... Аминь!...",
"А говорил - заговорённый!... хех!...",
"Вот чОрт побери, а он мне денег должен...",
"Ну и поделом ему!!!",
"Одним сталкером меньше, одним трупом больше.",
"Жопой чую - не к добру это...",
"Неудачник...",
"Я пупею... Говорил, что безопасно там, безопасно... Хорошо, что я отказался в последний момент с ним идти, а то глядишь - рядом с ним и полёг бы...",
"Нда... Прогулялся за хабаром... Судьба...",
"Что сказать?...   Зона для сталкера - не место для прогулки...",
"Надеюсь, не мучился бродяга...",
"Вчера только там зачистку делали, тропку сделать надо было...  чОрт побери...",
"Хороший мужик был, рисковый, хабаром делился когда туго было, земля пухом, брат сталкер!",
"Ещё один в зону попёрся, когда уже разуму наберутся?...   Все же знают - не меньше чем подвое ходить надо!...",
"Та-а-ак... Где это он угробился?...  Надо срисовать координаты...",
"Так ему и надо!",
"Эх, Зона... сколько жизней загубила..." ,
"Эх, хороший человек был, но самоуверенный чересчур, вот и вляпался...",
"Эээх... А он мне обещал ствол кондовый достать... Опять хабар Сидору нести...",
"Говорили же!...  Не возвращайся по тому же пути!...",
"Ба! А не тот ли это сталкер, что вчера в баре нарезался?...",
"Оба-на! Мне теперь грех на душу не брать! Но бабло с Бармена стрясу...",
"Ещё одну душу Зона забрала... Сколько ещё заберёт?...",
"Жалко парня...",
"Я тут по этому поводу анекдот вспомнил..."
          }    


function kill_npc(victim, who)
    if victim and IsStalker(victim) then
        local dead_news = "%c[230,255,128,64]Погиб: "..victim:character_name().."\\nГруппировка: "..community[victim:character_community()].."\\nМесто гибели: "..level_name[level.name()]..""
         db.actor:give_game_news(dead_news,"ui\\ui_iconstotal",Frect():set(0,658,83,47),1000,3000) -- всегда
         local shans = math.random(1,100)
         if shans > 70 then
             dead_news = death_komment[math.random(table.getn(death_komment))]
             db.actor:give_game_news(dead_news,"ui\\ui_iconstotal",Frect():set(0,658,83,47),3000,3000) -- дополнительно не всегда
         end
    end  
end

 

 

А версию death_news из OGSE 0.6.9.2 мне не удалось подключить :(

Изменено пользователем Sikorskyi
  • Полезно 1

PW7EW.png

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

@Hind 

Отследить наличие артефакта на поясе. На базовом движке для этого нужно немного "накостылить", а в ОГСР есть вполне "законные" методы. Вроде, недавно здесь это обсуждали. 

Файл с готовым кодом, вроде из Солянки:

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

 

Для определения конкретного арта на ванильном движке

 

В апдейт

actor_binder:update(delta)

вот это

 

    inventory.update()
    local medusa = inventory.belt["af_medusa"]
    if medusa then
        get_console():execute("load ~#I#:"..string.format("Медуза на поясе"))
    end    

 

В апдейт

actor_binder:info_callback(npc, info_id)

вот это

 

inventory.on_inventory_info(info_id)

 

зы

 

Вместо

get_console():execute("load ~#I#:"..string.format("Медуза на поясе"))

свой код, разумеется

Вместо

"af_medusa"

секция своего арта

 

зызы

 

На примере - код постоянного обновления. Если нужно на один раз, лучше повесить на что то другое.

 

Изменено пользователем mole venomous
  • Спасибо 1
  • Согласен 1
  • Полезно 1

Здесь могла быть ваша реклама.

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

@Sikorskyiсделал как ты, тока чутка подправил его под свой скрипт:
 

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

function kill_npc(victim, who)
 if victim and IsStalker(victim) then
local t = time_global()
db.actor:give_game_news(dead_news,"ui\\ui_iconstotal",Frect():set(0,658,83,47),1000,3000) -- всегда
         local shans = math.random(1,100)
         if shans > 70 then
             dead_news = death_komment[math.random(table.getn(death_komment))]
             db.actor:give_game_news(dead_news,"ui\\ui_iconstotal",Frect():set(0,658,83,47),3000,3000)
elseif t > time_global() + 3000 then
dmb2.news_sound()
end
end
end

А оно вылетает

Разобрался. Забыл добавить сам текст :)

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

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

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

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

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

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

Войти

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

Войти

AMK-Team.ru

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