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

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


Halford

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

10 часов назад, Norman Eisenherz сказал:

Это вообще другой эксперимент

эксперимент провести такой, заспавнит нпс у которого есть character id, по нему заспавнить, при этом этому character id вообще не задан класс, что будет? я не проверял но скорее всего будет вылет ,как в твоём начальном примере второй случай,  значит класс должен быть обязательно задан, и тут второй эксперимент, чтоб игра не вылетала класс должен быть любой заданный для любого character id, который прописан в игре, либо класс должен быть строго который задан в профиле нпс, тут я думаю скорее всего подойдёт любой зарегистрированный класс.

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

_npc:name()='esc_physic_destroyable_object

вопрос почему у тебя имя нпс = physic_destroyable_object, ты нпс пытаешься задать логику физического объекта?:)

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


Ссылка на сообщение
8 часов назад, Kirgudu сказал:

Единственное вероятное (не проверял) требование - имя должно быть уникальным.

 

6 часов назад, Norman Eisenherz сказал:

Не путать с именами из [all.spawn] – у них обычно есть приставка с названием локации и какой-то фиксированный номер: val_wpn_mp5_0000.

а чем они отличаются? так метод obj:name() и возвращает вот это имя из алл-спавна, разница в примерах только в том ,что имя в алл-спавне задаёт разработчик, а имя типа wpn_pm21423, задаёт сама игра при спавне в виде id, прибавляя к названию секции рандомное число.

 

и кстати имя может быть одинаковым по крайней мере на ОГСР, я по ошибке оставил в спавне 2 объекта с одним именем, и потом в игре, играя с выводом дебаг инфы на экране (наведясь на объект там пишется информация-  секция, имя, логика и пр.) увидел что у меня стоят рядом 2 объекта с одинаковым name, никаких проблем для игры это не вызвало)

  • Полезно 1

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


Ссылка на сообщение
1 час назад, Norman Eisenherz сказал:

Этим и отличаются. К чему был вопрос?

ты написал "не надо путать" типа имя заданное самой игрой и через алл-спавн разработчиком, так как будто для игры есть разница, и то и то имя объекта, поэтому я спросил в чём разница? имя объекта оно и в Африке имя  объекта, не важно как и через что, оно задано.

59 минут назад, Zander_driver сказал:

такой способ получения объектов не используется

алайф объект может где и используется, но это были 2 физ.объекта, вряд ли они используются, но я имел ввиду проблем с игрой не было в плане вылетов, иди что она ругалась на 2 объекта с одинаковым именем.

  • Сочувствую 1

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


Ссылка на сообщение
4 часа назад, Norman Eisenherz сказал:

Не путать номер в очереди спавна с фиксированным номером

а у тебя было так написано в посте, что можно подумать существуют разные имена для объектов один для алл-спавна, другой просто для игры:)

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


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

кто-нибудь знает как на время запретить игроку переходить на другую локацию, например пока идёт выброс и т.п. ,в момент когда появляется окно перехода (перейти на локацию и например, чтоб активна была только кнопка НЕТ или окно само закрывалось до наступления определённого момента)

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


Ссылка на сообщение
9 часов назад, imcrazyhoudini сказал:

в OGSR есть подобный прикол, мол ГГ не может пройти в переход (перемещает в обратную сторону)

а есть пример этого прикола? потому что в Вики по ОГСР есть только метод который меняет текст названия в окошке типа "переход с уровня... на такой...."

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


Ссылка на сообщение
45 минут назад, imcrazyhoudini сказал:

Режим g_block_all_except_movement

это блокирует всё кроме движения, но прикол в том что если зайти в переход то окошко перехода все равно появится, но при этом ничего сделать ты не сможешь, кнопки то не работают) тут надо чтоб окно ещё само закрывалось.

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


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

@imcrazyhoudini ну с анимациями и сейчас просто можно отрубать их в момент вступления в левел ченджер, и разрешить управление, а вот просто чтоб откинуло нет, в Сталкере если попал в это месседж-окошко то никак из него не вылезти пока не кликшешь yes или no:)

  • Полезно 1

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


Ссылка на сообщение
15 часов назад, Norman Eisenherz сказал:

Почему никак не вылезти?

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

15 часов назад, Norman Eisenherz сказал:

Можно просто нажать [Esc].

нет просто нажать нельзя, то есть нажать можно, но Esc откроет главное меню ,а не закроет окошко-месседж.

15 часов назад, Norman Eisenherz сказал:

можно симулировать нажатие клавиши – виртуальное нажатие

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

 

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

if level.only_movekeys_allowed() then
 for a=1,65635,1 do
        local obj=level.object_by_id(a)
          local act = db.actor
        if obj and string.find(obj:name(),"exit_to") then 
            if obj:position():distance_to(act:position()) <= 5 then
                     local v= act:position():add(act:direction():mul(-4))        
                            db.actor:set_actor_position(v) 
                news_manager.send_tip(db.actor, "Переход временно недоступен.", nil, nil, 3000)
            end
       end
 end
end

 когда до перехода остаётся меньше 5 м, откидывает назад на 4 м

 

вот как этот код ( в данном случае при блокировке клавиш ,кроме движения, для анимаций, но можно поставить и например проверку на выброс, инфопоршня и пр.) выглядит в игре:

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

 

 

  • Нравится 1
  • Полезно 1

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


Ссылка на сообщение
8 часов назад, Norman Eisenherz сказал:

На какой версии движка наблюдается указанное поведение?

ОГСР но не самый последний билд

8 часов назад, Norman Eisenherz сказал:

И еще: для объектов с логикой лучше перебирать A-Life – так список будет гораздо меньше

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

8 часов назад, I am Dead сказал:

Дабы бедный игроки не страдали, решение...

опомнились когда движку уже дофига лет:)

@I am Dead ты лучше скажи за каких хреном вы из последних билдов убрали полезные колбеки типа weapon zoom in/out или on weapon fire, зато всяких жрущих производительность свистоперделок добавили вагон , что сажают фпс побольше чем цикл на постоянном апдейте:) вот где настоящий УЖС.

  • Согласен 1
  • Сомнительно 1

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


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

столкнулся с таким багом

 

что когда в комбезе с включенным ПНВ подбираешь предмет на коллбеке типа on_ruck (при попадании предмета в инвентарь), если подбираешь любой предмет кроме костюмов то норм, а если другой комбез, то почему то переменная  outfit = db.actor:get_current_outfit() принимает значение  nil и таким образом выполняется дальнейшее условие типа if not outfit then и ПНВ вырубается, хотя комбез то на акторе надет, и должно выдавать true.

 

не помню, но вроде бы это известный баг и было какое-то решение или фикс по этому поводу?

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


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

@Norman Eisenherz да это жёстко пришлось самому такой скрипт городить

 

Скрытый текст
function disable_nv(obj)
    if not db.actor:has_info("nv_on") then return end
    local class = get_string(obj:section(),"class")
           if class == "E_STLK" then
             ogse.level_timeout( 100, function() ogsr_actor_animation.check_outfit_nv() end )
            end
end

local snd_nv_work = xr_sound.get_safe_sound_object( "interface\\nv_loop" )
function check_outfit_nv()
   local outfit = db.actor:get_current_outfit()
   local snd_obj = xr_sound.get_safe_sound_object([[interface\nv_off]])
 if not outfit then
		snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)                                                
		level.remove_pp_effector(2522)
		db.actor:disable_info_portion("nv_on")
                                   if snd_nv_work and snd_nv_work:playing() then
                                                     snd_nv_work:stop()
                                  end
  end

 if outfit then
     local outfit_section = outfit:section()
     local nightvision_section = get_string(outfit_section, "nightvision_sect")
         if not nightvision_section then
	snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)                                                
	level.remove_pp_effector(2522)
	db.actor:disable_info_portion("nv_on")
                   if snd_nv_work and snd_nv_work:playing() then
                                           snd_nv_work:stop()
                   end
         end
      if nightvision_section then
	snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 9.0)
	 local nightvision_effector = get_string(nightvision_section, "pp_eff_name")
	  level.add_pp_effector(nightvision_effector, 2522, true)
                    db.actor:give_info_portion("nv_on")
      end
 end

 

смысл в том, что сначала при подборе проверяем включен или нет ПНВ, потом определяем что подняли комбез по классу, для гарантии ещё добавил level timeout (подойдёт любой таймер, на случай если в момент подъёма игра не видит комбез в слоте). потом через это время игра проверяет, есть ли надетый комбез, если нет комбеза отключаем ПНВ ,поршни, звуки, если комбез есть, но например мы его быстро заменили дабл кликом мыши или подняли с земли, ящиков, то проверяем есть ли в текущем комбезе ПНВ, если нет отключаем, если есть - меняем на эффект от одетого костюма.

 

да может не идеально, но получилось прикольно , учитывая разные постэффекты у костюмов, у некоторых при подъеме с земли одетый мигает ПНВ, но не выключается как было, получилось даже атмосферно, этакий баг, переходящий в фичу:)

Изменено пользователем CiberZold
  • Нравится 1
  • Полезно 1

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


Ссылка на сообщение
15 часов назад, I am Dead сказал:

Дай угадаю, на апдейте?

на каком апдейте, ты куда смотришь? Там же выше идёт вызов таймера и по окончанию его выполняется раз этот вызов.

 

15 часов назад, Prophet13 сказал:

Ты чем смотришь?

в моем билде вылет при попытке установить данный set_callback, так что не лезь, если не разбираешься.

 

15 часов назад, I am Dead сказал:

от твое полотно, в более компактном и читабельном виде

ага тоже спец:), если сразу вызвать if outfit, то будет вылет, так как игра выдаст, что outfit не может индексировать, об это изначально и речь шла как о баге.

 

По сути, я в своём коде уменьшил таймаут до 50 мс, теперь вообще всё четко работает, даже ПНВ с некоторыми комбезами не моргает, тащем-то советы мне уже нужны, проблема решена.

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


Ссылка на сообщение
3 часа назад, Prophet13 сказал:

вот это явно не моя проблема)

ну так, а что ты вылез? Вот @Norman Eisenherz грамотно и полезно подсказывает, потому что читает с самого начала, а ты со своим братом-акробатом прочитали одну строчку в 5 предложении второго абзаца и делаете заключения.

 

И что коллбэки где-то в коде движка остались, это не значит что они зарегистрированы, вот код с гит-хаба, то бишь с последней версии движка.

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

calogsr.jpg

 

  • Нравится 1

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


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

@I am Dead если бы ты читал с начала, то знал бы что outfit при подборе других комбезов почему то обращался в nil, хотя комбез надет и должно быть true, потому я сделал тайм-аут, который через долю секунду пропуская баговый колбэк проверяет одета ли броня после подъёма с земли из ящиков/снятия комбеза/замена комбеза по дабл клику мышкой, что бы не было вылетов по nil для гарантии , если нет комбеза сразу отключаем ПНВ и эффекты, потом дальше да, там когда игра нашла outfit в принципе без разницы что вперёд not или true, но сделал уже как сделал главное работает.

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


Ссылка на сообщение
24 минуты назад, I am Dead сказал:

То есть, надо надеть костюм, потом поднять другой и переменная станет nil?

да ,выполняется код, if not outfit и далее .... пнв отрубается, а если пытаться сразу индексировать например получить секцию костюма то будет вылет ,но это не самый последний билд ОГСР, возможно в последних поправили ,я говорю за то тот что у меня.

 

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


Ссылка на сообщение
2 часа назад, I am Dead сказал:

Ну я проверил, выполняется все как надо

я же говорю у меня не последний билд, если это важно  - подключен ганслингер аддон, он  вообще убирает движковый экшен ПНВ, добавляя некоторые фичи вроде выстрела не по центру экрана, а из оружия, я пока его не отключаю, да и вообще движковый ПНВ же не вяжется с анимациями, тут только скриптовый подойдёт, чтоб включался не сразу, а после проигрывания анимации.

 

кстати на видео интересный компас в стиле Фоллаута, но как по мне слишком казуально, аномалии на мини-карте ещё можно пережить, но когда жарки уже тупо на худе показываются)

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

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


Ссылка на сообщение
6 часов назад, I am Dead сказал:

врятли ее кто трогал недавно..

эх вынудил ты меня проверять все скрипты что висят на коллбеках, item take, on_ruck , в итоге нашёл там

if outfit and outfit:id() ~= obj:id() then
       db.actor:transfer_item(outfit, db.actor)  -

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

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


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

@Balavnik нет такого колбека нет, я же выше кидал картинку - все зарегистрированные колбеки в последнем билде движка.

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


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

да он есть ,я просмотрел, ещё там есть колбэк "place_item_to_box", может он теперь реагирует на то что ты кладёшь предмет в ящик, чем отличается place от drop в понимании разрабов двигла я не в курсях)

 

могу сказать только что с точки зрения английскогов в чём разница:):

place это что разместили, a drop - уронили, потеряли, то есть второй случай на потерю предмета из ящика я так понимаю.

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

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


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

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