Перейти к содержанию

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

 
 
6 минут назад, imcrazyhoudini сказал:

Наоборот, в него должны стрелять, а так как все вокруг него - враги, то и игнорировать он должен всех.

Значит я не понял вопрос, т.к. решил, что это он в кого-то стреляет)))

8 минут назад, imcrazyhoudini сказал:

Всё там нормально. Озвучку только так проигрывать, в ремарке и не более того.

Дай бог))) Но поставить 1 валк и 1 лук не составит труда, но Вам виднее)


Дополнено 7 минуты спустя
1 час назад, frankenshtayn сказал:

Это выше моего понимания) Даже не понимаю в какую сторону теперь копать...

Отбой. Причина банальна, хотя неожиданная: в этой геймдате менялась геометрия одной локации, СДК ошибок кроме "инвалид-фейс" не показывал, скомпилировалась нормально, да и протестировал на этой локации практически всё и вот на тебе. При установке дефолтной level все сохранки грузятся, все в порядке.

Пойду в другую тему

  • Лайк 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

Как запретить использовать болт (или как сделать так, чтобы у игрока не было выбранного оружия, т.е. "нулевой" слот)? Для более точной картины скажу, что у игрока вообще нет оружий, кроме болта.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Народ, выручайте

Удалю пожалуй)


Дополнено 4 минуты спустя

xorda ты хочешь просто убрать оружие? Типо как в зонах, где убирается оружие? Попробуй так

    db.actor:hide_weapon() -- запретить оружие

    db.actor:restore_weapon() -- разрешить

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

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 да, чтобы нельзя было любым оружием пользоваться (как в баре, только на продолжительное время и без рестрикторов). Однако, твой совет рабоатет, поэтому благодарю тебя!)))

Мне нужно было также и при спавне игрока убирать все оружия, но болт не убирался. В общем я его сместил очень далеко по координатам и теперь никаких оружий не будет в игре!)

Изменено пользователем xorda
Обновление.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Народ, выручайте. Как можно обновить ассортимент у торговца скриптом? 

Сам я пробовал ковырять скрипт трейд менеджер. Вот эту функцию

Спойлер

function update(npc)
    local tt = trade_manager[npc:id()]
    
    if tt == nil then
        return
    end

    if tt.update_time ~= nil and tt.update_time < time_global() then
        return
    end
    tt.update_time = time_global() + 3600000
    
    local str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_condition)
    if tt.current_buy_condition ~= str then
        printf("TRADE [%s]: buy condition = %s", npc:name(), str)
        npc:buy_condition(tt.config, str)
        tt.current_buy_condition = str
    end

    str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.sell_condition)
    if tt.current_sell_condition ~= str then
        printf("TRADE [%s]: sell condition = %s", npc:name(), str)
        npc:sell_condition(tt.config, str)
        tt.current_sell_condition = str
    end

    if tt.buy_supplies == nil then
        return
    end

    str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_supplies)
    if tt.current_buy_supplies ~= str then
        if tt.resuply_time ~= nil and tt.resuply_time < time_global() then
            return
        end
        printf("TRADE [%s]: buy_supplies = %s", npc:name(), str)
        npc:buy_supplies(tt.config, str)
        tt.current_buy_supplies = str
        tt.resuply_time = time_global() + 1*3600000
    end    
end

игрался там со значениями, но она, функция эта, как-будто и не работает вовсе. Просто я ставил там вместо 3600000 даже 1000 - ничего как-бы не меняется, а должно? В моем понимании вроде должно, но фиг знает.

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

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
14 часов назад, ian98 сказал:
  эту (Показать контент)

function update(npc)
    local tt = trade_manager[npc:id()]
    
    if tt == nil then
        return
    end

    if tt.update_time ~= nil and tt.update_time < time_global() then
        return
    end
    tt.update_time = time_global() + 3600000
    
    local str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_condition)
    if tt.current_buy_condition ~= str then
        printf("TRADE [%s]: buy condition = %s", npc:name(), str)
        npc:buy_condition(tt.config, str)
        tt.current_buy_condition = str
    end

    str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.sell_condition)
    if tt.current_sell_condition ~= str then
        printf("TRADE [%s]: sell condition = %s", npc:name(), str)
        npc:sell_condition(tt.config, str)
        tt.current_sell_condition = str
    end

    if tt.buy_supplies == nil then
        return
    end

    str = xr_logic.pick_section_from_condlist(db.actor, npc, tt.buy_supplies)
    if tt.current_buy_supplies ~= str then
        if tt.resuply_time ~= nil and tt.resuply_time < time_global() then
            return
        end
        printf("TRADE [%s]: buy_supplies = %s", npc:name(), str)
        npc:buy_supplies(tt.config, str)
        tt.current_buy_supplies = str
        tt.resuply_time = time_global() + 1*3600000
    end    
end

Народ, выручайте. Как можно обновить ассортимент у торговца скриптом? 

Сам я пробовал ковырять скрипт трейд менеджер. Вот эту функцию

игрался там со значениями, но она, функция эта, как-будто и не работает вовсе. Просто я ставил там вместо 3600000 даже 1000 - ничего как-бы не меняется, а должно? В моем понимании вроде должно, но фиг знает.

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

И зачем весь этот гемморой? Не проще ли отредактировать ltx-файл?

Файлы ассортимента торговцев обычно находятся по пути config/misk/trade_имя*торговца. Есали открыть  (в "чистом" ТЧ) например бармена, то можно увидеть такие строки:

buy_condition = barman_generic_buy
sell_condition = {+yan_labx16_switcher_primary_off} barman_after_brain_sell, {+bar_darklab_document_done} barman_after_darkvalley_sell, barman_start_sell
buy_supplies = {+yan_labx16_switcher_primary_off} supplies_after_brain, {+bar_darklab_document_done} supplies_after_darkvalley, supplies_start

где

buy_condition - основной раздел, что будет покупать торговец и разброс цен

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

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

Не проще ли сделать так?

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


Ссылка на сообщение
Поделиться на другие сайты
 

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

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

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

ОГСР движок. Не знаю куда спрашивать, надеюсь сюда. В общем, по советам которые мне были даны еще месяцы назад, решил перенестись на этот движок. Все-таки он классный и все такое. Единственное что, а как перенести туда свои скрипты? Они не работают( Есть хоть что-то где почитать, как стартануть? Или может эта проблема не так глобальна и у меня крашить будет лишь некоторые рабочие на оригинальном движке функции? Как быть с этой?

Спойлер

local timeStep = math.random(1000,5000) -- как часто будет накладываться эффект(1000 = 1 секунда)
local passedTime = 0

function update(deltaTime)
    passedTime = passedTime + deltaTime

    if (passedTime >= timeStep) then
        passedTime = 0
        random_effects_irt()
    end
end

Вызывается из bind_stalker, который я взял из оригинала(может это неправильно)

function actor_binder:update(delta)

...

    -- Чуть ниже апдейтора погоды. В общем вставлено там все правильно. В оригинале работает.

    actor_cond.update(delta)

...

Игра даже не запускается. В логе пишет, что при попытке в актор конд выходит нил

 


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
3 часа назад, ian98 сказал:

actor_cond.update(delta)

этот скрипт вообще есть в папке scripts? Без синтаксических ошибок он?


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Ну конечно он есть в папке скриптс) Не настолько ж я прост, конечно я почти ничего не знаю, но не.. ладно. В общем, сейчас сделал(  СЕЙЧАС ПРОВЕРИЛ ОРИГИНАЛ И ТОЖЕ НЕ РАБОТАЕТ. Косяк у меня, но я его в упор не вижу, уставший очень) В общем, помоги пожалуйста с консольными командами. Тут я точно не знаю как. Пробовал если что, наугад естественно,

local console = get.console()

console:execute("команда")

Спойлер

local timeStep = math.random(1000,5000) -- как часто будет накладываться эффект(1000 = 1 секунда)
local passedTime = 0

function update(deltaTime)
    passedTime = passedTime + deltaTime

    if (passedTime >= timeStep) then
        passedTime = 0
        random_effects_irt()
    end
end

-- Рандомные эффекты.
function random_effects_irt() -- здесь выбирается случайный эффект
if db.actor:alive() then
    db.actor.health = 0.03
   end
end

Крашило меня, когда я пытался видимо вызывать консольную команду скриптом. Видно делал именно это неправильно, даже не буду писать как делал, просто спрошу как. Как?) Как можно скриптом вводить консольную команду? Я сюда поэтому и хочу переехать с оригинального движка. Понравился time_factor и ph_gravity, еще понравились блудмарки, лучи, коллизия вроде называется оружия в руках гг с геометрией, подправленное 3 лицо хоть немного и не довели пока до идеала, уверен что-нибудь еще понравилось - не суть. В общем, теперь хочу сюда, только бы узнать функцию для вызова консольной команды по скрипту и понять почему даже то, что в спойлере, хоть и не вылетает, но не работает. И вопрос, почему ролик вступительный начинается не сразу, а после загрузки уровня? Пока единственное, что подпортило впечатление. На неработающий стим оверлей глаза закрыл уже... Этот момент немного мазолит, привыкну конечно, просто почему именно такое решение интересно.

 

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

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
8 минут назад, ian98 сказал:

СЕЙЧАС ПРОВЕРИЛ ОРИГИНАЛ И ТОЖЕ НЕ РАБОТАЕТ

может синтаксическая ошибка, проверьте этой прогой https://disk.yandex.ru/d/PITCpyZ42pxHEA  

10 минут назад, ian98 сказал:

local console = get.console()

get_console()

А в выложеном куске кода что не работает? Не очень понял

14 минут назад, ian98 сказал:

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

насчет этого не знаю, в модах на огср, которые я играл, везде так было

  • Мастер! 1

В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 А как он должен воспроизводится? В момент загрузки локации?

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 

Спойлер

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

По второму, так и делал же, опечатался как всегда конечно, но делал так

function blabla()

local console = get_console()

console:execute("time_factor 2")

end

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

function blabla()

local console = get_console()

local rnd = math.random(1,300/100)

console:execute("time_factor rnd")

end

или так

console:execute("time_factor = math.random(1,300/100)")

В общем, с утра ситуация казалась безвыходной, а на деле какие-то пустяковые ошибки. Могу только извиниться, что побеспокоил тут всех. Все работает)

 


Дополнено 0 минут спустя

I am dead я имел ввиду, в оригинале последовательность событий ролик-геймплей, а тут геймплей-ролик-геймплей почему-то

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

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 Паузу после загрузки убери

  • Мастер! 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

I am dead я понял. На нее и думал почему-то. в ЗП однако такой проблемы все равно не было.


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

Не подскажите по огсру все-таки?

В оригинале дез менеджер у меня был модифицирован, таким образом

Спойлер

    local active_item = npc:active_item()
    local id = item:id()
        if isWeapon(item) then
            local timer = time_global() + 1000
            
            local function check_timer()
                return time_global() > timer
            end
            
            local function release_item()
                alife():release(alife():object(id), true)
            end
            level.add_call(check_timer, release_item)
        end

Все работало. После смерти у нпс удалялись стволы, так мне и хотелось бы, но вылет ?

В логе мне пишет, что проблема именно в этом, вроде бы

               alife():release(alife():object(id), true)

Пишет что-то про object, ну а как его правильно оформить это блин для меня загадка.


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

У меня есть скриптовая полоска пси-хп. При скрине через демо рекорд она не убирается, как исправить?

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


Ссылка на сообщение
Поделиться на другие сайты
 

imcrazyhoudini  клавиши + - на цифровой клавиатуре убирают худ...

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


Ссылка на сообщение
Поделиться на другие сайты
 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Есть ли в данной части .xml-файл для редактирования сеток прицелов? Мне бы пригодилось, т.к. я так и не понял как работают прицелы.

Спойлер

ss-dima-11-25-21-14-40-09-l01-escape.jpg

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

KERIXFIX337X У большинства модов на ТЧ были аддоны, которые правили прицелы под соотношение монитора игрока. Скачай, посмотри.

  • Спасибо 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 весь скрипт выложите. И выкладывайте нормальный лог, а не "Пишет что-то про object"

Изменено пользователем vader_33
  • Мастер! 1

В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 

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

alife():release(alife():object(id), true)

Вместо этого лучше так - 

local sobj = alife():object(id)
if sobj then
	alife():release(sobj, true)
end

С логом было бы понятнее.

  • Спасибо 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Manool вот такой лог, не всегда крашит так, скрипт срабатывает иногда без проблем, но очень редко. Так что можно сказать, блин, всегда крашит.

Спойлер

[25.11.21 18:19:45.391] !! [CGameObject::lua_game_object] you are trying to use a destroyed object [7f78d678]
[25.11.21 18:19:45.391] !! [CScriptGameObject::object] You are trying to use a destroyed object [7f78d678]
[25.11.21 18:19:45.391] 
FATAL ERROR

[error]Expression    : assertion failed
[error]Function      : CALifeSimulator__release
[error]File          : d:\a\ogsr-engine\ogsr-engine\ogsr_engine\xrgame\alife_simulator_script.cpp
[error]Line          : 278
[error]Description   : object

[25.11.21 18:19:45.391] ***************************[ScriptCrashHandler]**********************************
[25.11.21 18:19:45.391] stack traceback:
    [C]: in function 'release'
    ...hadow of chernobyl\gamedata\scripts\death_manager.script:178: in function <...hadow of chernobyl\gamedata\scripts\death_manager.script:177>
[25.11.21 18:19:45.391]     Locals: 
[25.11.21 18:19:45.391]      userdata (*temporary) : (alife_simulator): 000002A344F7C9E0
[25.11.21 18:19:45.391]      nil (*temporary) : [not available]
[25.11.21 18:19:45.391]      boolean (*temporary) : true
[25.11.21 18:19:45.391]     End
[25.11.21 18:19:45.391]     Locals: 
[25.11.21 18:19:45.391]     End
[25.11.21 18:19:45.391] *********************************************************************************
[25.11.21 18:19:45.391] ********************************************************************************
[25.11.21 18:19:45.391] !![LogStackTrace] Thread: [X-RAY Primary thread]
[25.11.21 18:20:06.484] !!stack trace:

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

death_manager.script


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 Тебе выше @Manool подсказал что нужно делать проверку что объект существует.
Если хочешь удалить любой ствол что попадает тебе в рюкзак то можешь сделать как то так:

Спойлер

function on_item_to_ruck( obj )
    if not( string.find( obj:section(), "wpn_" ) ) then return end -- тут идет проверка что в рюкзак попал айтем id которого начинается на wpn_
    local release_item = obj:section()
    alife():release(alife():object(db.actor:object(release_item):id()))
end

 

Изменено пользователем I am dead
  • Спасибо 1

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу