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

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


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

Новые квешоны..
Смотрите, что надо сделать, чтобы при наведении на рестриктор, выскакивала надпись "Использовать", и при использовании исполнялась какая то функция (например, давание инфопоршня).
И чтобы нельзя было нажать на рестриктор без определённого айтема

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

@Hind в тч в sr_idle нет поддержки on_use.

Поддержка on_use есть в ph_idle.

 

А на счёт второго: {=название скрипта}

 

 

 

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

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

@Norman Eisenherz вот тут можно посмотреть пример

https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh/dsh_busy_hands.script

 

Реализация "руки заняты" или "без ножа не получится". Т.е. открытие инвентарных ящиков только со свободными руками, тушек - только с ножом в руках и т.п.

  • Полезно 3
Ссылка на комментарий

Как возможно исправить баг, при котором всплывающие сообщение не всегда показывается на экране?

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

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

@Houdini_one взять движок, где это исправлено. Если что, насколько я помню, но это не точно, в OGSR не исправлено. Там какая-то движковая странность была, насколько я помню.

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

@dsh не знаете в каком исправлено, раз в OGSR нет? В X-Ray extensions тоже не исправлено, а какие ещё движки есть - понятия не имею.

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

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

Собственно, для всех интересующихся, вот коммит, после которого у меня исчезла проблема с пропущенными СМС:

Quote

Костыль для лечения не показываемых СМС

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

https://github.com/dsh2dsh/OGSR-Engine/commit/11ac2a9febfc28ecbccb3a00784d72514dc73b3c

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

 

  • Сочувствую 1
  • Жуть! 1
Ссылка на комментарий
7 минут назад, dsh сказал:

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

Серьёзно что ли на аватар внимание так обращают...

Ну тогда ладно, поменяю на что-то более адекватное.

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

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

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

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

Можно поподробнее pls? 

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

@Hind как поржень выдавать я уже показывал.
В поршень пишешь:
 

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

    <info_portion id="info">
        <article>info</article>
    </info_portion>

В storyline_info_****.xml:
 

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

   <article id="имя" name="имя" group="категория в пда если не ошибаюсь(как будет называться изначальная вкладка)/0" article_type="task">
        <text>text</text>
    </article>
 

 

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

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

@Houdini_one а как насчёт например выдачи другого предмета (предметов) при юзании одного?

И вопрос в целом - как при использовании какого либо предмета будут головокружения, и тд (чтобы был эффект типа пси-атаки контроллёра)

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

Повесить на биндер actor_binder:use_object(obj) функцию, где будет всё это обрабатываться.

Вот пример функции:

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

function use_item(obj) 
    local obj = obj:section()
    if obj then  
        if obj == "medkit" then 
            -- юзанули аптечку - торкнуло (к вопросу о головокружении)
            level.add_pp_effector("alcohol.ppe", 100, false)  

            level.add_pp_effector("duality_circle.ppe", 100, false)
            -- и спавним "пустую" аптечку, например (к вопросу о выдаче нового айтема взамен использованого)
            alife():create("medkit_empty", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) 
        end
    end
end

 

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

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

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

@mole venomousне робит... Даже просто скопировав твой код и вставив, юзанув аптечку ничё не происходит. Скрипт добавил в bind_stalker.script. В самый конец кода.


Или может я тупой, и надо было вставлять куда то в другое место? :biggrin:

Изменено пользователем Hind
забыл дописать
Ссылка на комментарий
14 минут назад, Hind сказал:

bind_stalker.script

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

В bind_stalker:

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

function actor_binder:net_destroy()

    ...

    self.object:set_callback(callback.use_object,           nil)  -- коллбэк на использование предмета

    ....

end

 

function actor_binder:reinit()

    ...

    self.object:set_callback(callback.use_object, self.use_object, self)

    ...

end

 

--// Использование предмета
function actor_binder:use_object(obj) 
     use_item(obj)    
end

 

function use_item(obj) 
    local obj = obj:section()
    if obj then  
        if obj == "medkit" then 
            -- юзанули аптечку - торкнуло (к вопросу о головокружении)
            level.add_pp_effector("alcohol.ppe", 100, false)  

            level.add_pp_effector("duality_circle.ppe", 100, false)
            -- и спавним "пустую" аптечку, например (к вопросу о выдаче нового айтема взамен использованого)
            alife():create("medkit_empty", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) 
        end
    end
end

 

  • Согласен 2

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

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

 

function actor_binder:net_destroy()

    if(actor_stats.remove_from_ranking~=nil)then
     self.object:set_callback(callback.use_object, nil)
        actor_stats.remove_from_ranking(self.object:id())
    end
--    game_stats.shutdown ()

 


 

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

function actor_binder:reinit()
   self.object:set_callback(callback.use_object, self.use_object, self)
    object_binder.reinit(self)


Функцию actor_binder:use_object(obj) в конец скрипта @mole venomous
А всё равно ничерта не пашет

Изменено пользователем Hind
забыл дописать
Ссылка на комментарий

@Hind так я же тебе кидал нормальную статью со всем этим(

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

 

function actor_binder:net_destroy()

после

    self.object:set_callback(callback.take_item_from_box, nil)

вставляешь
    self.object:set_callback(callback.use_object, nil)

function actor_binder:reinit()

после
    self.object:set_callback(callback.use_object, self.use_object, self)


вставляешь
    self.object:set_callback(callback.use_object, self.use_object, self)

после

function actor_binder:on_item_drop (obj)
    level_tasks.proceed(self.object)
    --game_stats.update_drop_item (obj, self.object)
end
----------------------------------------------------------------------------------------------------------------------

вставляешь:
function actor_binder:use_object(obj)
  use_item(obj)    
end

 

function use_item(obj) 
    local obj = obj:section()
    if obj then  
        if obj == "medkit" then 
            -- юзанули аптечку - торкнуло (к вопросу о головокружении)
            level.add_pp_effector("alcohol.ppe", 100, false)  

            level.add_pp_effector("duality_circle.ppe", 100, false)
            -- и спавним "пустую" аптечку, например (к вопросу о выдаче нового айтема взамен использованого)
            alife():create("medkit_empty", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) 
        end
    end
end

 

 

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

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

@Houdini_one
Абсолютно всё сделал так, как ты сказал - и вот вылазит эррорка теперь при юзании аптеки :)
До этого функция с вызовом use_item валялась где то в конце скрипта, и не вызывала проблем (как и каких-либо действий)

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ... Òåíü ×åðíîáûëÿ\gamedata\scripts\bind_stalker.script:193: attempt to call global 'use_item' (a nil value)

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

attempt to call global 'use_item' (a nil value)

Создай новый скрипт, куда запихаешь ф-ию 'use_item'. И в бинд_сталкер вызывай эту ф-ию из этого скрипта (думаю, тут объяснять не надо?)

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

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

@mole venomous
аналогично..
  dmb.use_item(obj)  - сама штука которая вызывает функцию из другого скрипта, и на которую ругается

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ... Òåíü ×åðíîáûëÿ\gamedata\scripts\bind_stalker.script:193: attempt to index global 'dmb' (a nil value)

Да.. Ещё такой прикол, если переместить
function actor_binder:use_object(obj)
  dmb.use_item(obj)    
end
в сааамый конец скрипта, то вылета не произойдет.
Но стоит положить его вниз после function actor_binder:on_item_drop (obj), то происходит вылет.
 

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

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

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

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

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

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

Войти

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

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

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