Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Нельзя, кроме костылей, как предложили выше. В xray очень слабое api в lua с игровыми объектами (искл. - CScriptGameObject). Правится в движке очень просто: в файле eatable_item.cpp есть метод UseBy, который вызывается во время использования бустера каким-то игровым объектом (в нашем случае - актером). Дальше все просто - надо вначале проверить, можно ли использовать предмет.
Самое просто что мне пришло в голову: можешь в класс CActor (Actor.h) добавить коллекцию, которая будет хранить секции заблокированных предметов. При использовании предмета можешь пробегаться по ней и смотреть, есть ли там секция предмета, который мы хотим использовать. Если есть - обрываем выполнение.
После этого тебе нужно лишь вывести api для этого в lua скрипты - я для этого ранее всегда использовал level_script.cpp. Тебе останется лишь сделать там 2 метода: который будет принимать в себя секцию предмета который надо заблокировать и добавлять его в коллекцию, о которой я говорил выше, и обратный метод, чтобы разблокировать объект.
Overfirst, просто некоторые думают, что если в тему давно не писали (неделю), то все, она уже мертва и никого там нет. Хотя сами не понимают, что никто и не будет писать, если нету вопросов, зачем писать туда что-то, если в этом нету нужды?
Здравствуйте. Возник вопрос: есть функция перемещения игрока на другую локацию, например при получения инфопоршня? Облазил весь интернет - ничего не нашел. Подскажите, пожалуйста.
Крим, вроде, нет. Можно создать "level_changer" в СДК, там где игрок не сможет его достать, и просто с помощью логики телепортировать его туда. Если надо урок, то вот один:
есть функция перемещения игрока на другую локацию, например при получения инфопоршня?
Это происходит каждый раз при разговоре с Лоцманом или Гариком. После инфопорции, выдаваемой в диалоге, рестриктор телепортирует игрока в определенную точку. Точка внутри особого объекта - левел-чендера. При попадании в левел-чендер игрок перемещается на другую локацию.
Пример логики смотрите в папке в файле configs/scripts/zaton/zat_b215_logic_zaton - могу ошибиться (сейчас файлов под рукой нет). Но логика переходов на Затоне в файлах zat_b215_***.
FATAL ERROR [error]Expression : fatal error [error]Function : lua_pcall_failed [error]File : c:\xray\forward-frontier-main\src\layers\xrrenderdx10\dx10resourcemanager_scripting.cpp [error]Line : 140 [error]Description : <no expression> [error]Arguments : LUA error: ...ead city breakthrough\gamedata\scripts\xr_effects.script:1288: attempt to index global 'npc' (a nil value) stack trace:
function destroy_object(actor, obj, p) local sobj if p == nil then sobj = alife():object(obj:id()) else if p[1] == nil or p[2] == nil then abort("Wrong parameters in destroy_object function!!!") end local target_str = nil if p[3] ~= nil then target_str = p[1].."|"..p[2]..","..p[3] else target_str = p[1].."|"..p[2] end local target_position, target_id, target_init = xr_remark.init_target(obj, target_str) if target_id == nil then 1288 printf("You are trying to set non-existant target [%s] for object [%s] in section [%s]", target_str, npc:name(), db.storage[npc:id()].active_section) end sobj = alife():object(target_id) end if sobj == nil then return end printf("releasing object ["..sobj:name().."]") alife():release(sobj, true) end
Конкретно в чём может быть проблема, знаю что спавн но что именно???
Сообщение отредактировал Policai - Вторник, 09.06.2020, 07:00