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

Внимание.

В следствии глобального сбоя системы сайт восстановлен из бэкапа за 16.10.2026

 

_Val_ _Val_

Скриптование


Svoboда

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

Такой немного странный вопрос: можно ли обнулять/отнимать деньги у ГГ (можно и НПС) после купли/продажи? Или без правки движка никак?

Нашел что-то типа db.actor:money, может с этим можно работать.

 

На секунду представил невидимую функцию передачи денег НПСу при каждой сделке, но само действие при нажатии "Торговать" ведь  никак не перехватывается и работает чисто внутри движка?

 

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

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


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

@dsh, да, действительно, сей коллбек перехватывает торговлю по нажатию на кнопку. То, что нужно, спасибо!

UPD: А обнулить деньги у ГГ можно? К сожалению в оригинальной игре не нашел методов, лишь give_money, но это не то, либо деньги уходят в минус, (да, и такое возможно) либо в плюс, а просто задать 0 никак. Никакого тебе set_money ПЫСы не предусмотрели к сожалению.

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

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


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

@dsh, все бы вроде ничего, но. Если ГГ продает НПСу или покупает у НПСа 1 предмет (то есть мы предлагаем НПСу предмет, но у него ничего не покупаем, или наоборот только покупаем и не продаем), то деньги обнуляются, но если в торговлю добавляется второй предмет (Первый из рюкзака ГГ, второй из рюкзака НПС, короче взаимная торговля в обе стороны) то у ГГ образуется сумма в что-то вроде 245036573. В общем в огромную цифру. Обнуляется если опять купить что-то или продать в одно лицо.

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

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


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

Господа, никто не поделится функцией перетаскивания всех имеющихся у ГГ предметов в именной ящик с уникальным стори айди? 

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


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

 

 

Что-то типа такого?

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

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


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

Таак.. Вопросы такие. Как:

 

1) Удалить оружие из инвентаря НПС? Использую:

 for a = 1,65534 do  
        local se_obj = alife():object(a)
        if se_obj and se_obj:section_name() == "wpn_saiga_uniq" then
            alife():release(se_obj, true)
        end
    end

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

 

2) Заспавнить НПСу оружие в инвентарь, чтобы он мог его использовать? Юзаю такую ф-ю:

for k,v in pairs(db.storage) do
        local obj = level.object_by_id(k)
        if obj then
            if obj:profile_name()=="npc_name" then
                ogse.spawn_item_in_inv("wpn_saiga",obj)
                break
            end
        end
    end

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

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


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

Под объектами не должно быть нодов аи-сетки.

Это не относится к динамическим объектам. Вопрос даже более чем к скриптованию/движку как раз таки.

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

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


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

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

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


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

Никто не подкинет функцию скриптового спавна по story id (ТЧ, если важно)? Искал и не нашел подобных упоминаний такой функции нигде. Может где-то в модах есть, но не знаю где. Беда в том, что скриптовым спавном, в отличие от олл.спауна, к имени объекта добавляются еще цифры и некоторые функции перестают работать т.к не могут обработать это имя. Может быть спавн по "сид-у", а не имени секции, решит эту проблему?

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


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

ты вот это имеешь ввиду

Возможно. Надо попробовать. Сейчас проверю.

 

@dsh, нет, не совсем. Это спавн уже зашитого объекта в спаун (только заранее удаленного), я так понимаю? А мне надо по координатам без участия олл.спауна.

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


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

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

В общем суть. Есть, допустим, npc_1, заспавненный через олл.спаун, которого обрабатывает скрипт. Именно по этому имени. Если заспавнить его через скрипт, то его имя внутри игры уже будет не npc_1, а, какой-нибудь npc_1_20945, следовательно скрипт уже не может подхватить этого НПСа с таким именем.

То есть я так понимаю, заспавнить объект по стори_айди, без его предварительного вшивания в спавн, - не реально?

 

Тогда плохо. Ладно. @dsh, напишу в личку тогда в чем суть проблемы, дабы тут не разводить? Может быть глянешь мельком, поможешь. А сей вопрос тогда отменяется.

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


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

@mdm64, вставлю 5 копеек и не более. Не утверждаю, т.к не скриптер. Но большинство кода можно перенести из платформы в платформу, что и делали первые модификации на ЗП — там тянули фишки из модов на ТЧ (Те же контейнеры для артов). Думаю, если у тебя есть скрипт этого экзоскелета, можно попробовать его адаптировать напрямую. Во всяком случае, я бы начал с этого, чем писать с нуля.

  • Согласен 3

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


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

а какую секцию указать для ящика?

Нужно создать предмет (естественно не подбираемый, хотя можно и ящики собирать если нужно) с визуалом ящика, потом спавнить как любой предмет. Но все же советую делать такие вещи через СДК, подобные костыли — уровень 2007 года.

  • Спасибо 1
  • Согласен 2

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


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

обычный деревянный ящик скриптом я заспавнить не смогу 

Деревянный ящик — это зашитая в спавн секция динамического объекта с прописанным визуалом этого самого ящика. Соответственно — нет. Тебе нужно по аналогии создать в конфигах предмет с прописанным визуалом, и спавнить непосредственно предмет, а не модель.

  • Спасибо 1

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


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

а почему?

Зачем плодить сущности? Создавать ненужные секции, прописывать все в скрипты, вызывать спавн, когда это делается в разы проще и удобнее в СДК? Как минимум подгонка по координатам чего стоит, любая настройка делается в пару кликов. А перекомпиляция спавна занимает от силы пол минуты. Конечно можно вспомнить и Историю Прибоя, где даже здания спавнили, можно и так делать. Но для чего, когда есть редактор карт? Со спавном — аналогично.
ЗЫ: конечно, местами скриптовый спавн удобнее. Но вряд ли, если речь идет про физ. объекты, для которых нужно еще координаты бегать снимать и получать баги с проваливанием под террейн и прочие "развлечения".

  • Спасибо 1

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


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

Для того чтобы местонахождение предмета, НЕ было прибито гвоздями на века, например.

Ну, если есть необходимость перемещать здания/деревья по карте — то да, конечно. Прочитай кусок про Прибой Стори еще раз.

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

Ну сделай рандомный спавн в СДК.

При чем тут он? Человек вроде хотел ящик заспавнить скриптами, а не написать систему, как их раскидать рандомно по карте. Суть вопроса ни к чему переворачивать. Физ. объекты, заспавненные через тонны кода — ничто иное как костылище 13-летней давности, когда в народе СДК был непостижимым (а когда-то и недоступным) инструментом. Вот когда будет вопрос про рандомный спавн, тогда и стоит его упоминать. Это совсем другие задачи и методы решения.

  • Согласен 2
  • Полезно 1

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


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

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

Берешь статику, загоняешь в 3д макс (любой другой удобный редактор), вешаешь кость, перегоняешь в СДК, настраиваешь, экспортируешь в *.ogf. В общем все, как с любым динамическим объектом. Хоть ЧАЭС на Кордоне ставь через спавн.

49 минут назад, mdm64 сказал:

Благодарю!

Не за что. Да только не советую — это будет выглядеть картонно. Про адекватное освещение, коллизию и материалы можно забыть, НПС/мутанты не видят динамику (или придется править АИ-сетку и ты все равно полезешь в СДК, уж лучше нормальную локацию тогда сделать), трава сквозь геометрию, постоянные баги с физикой и далее по списку. Мелкие объекты себя порой ведут неадекватно, представь, что будет с огромным зданием или деревом посреди локации. Можешь скачать тот же Прибой Стори, упомянутый выше, и посмотреть наглядно как это выглядит. В общем, рекомендую сделать эту задумку естественным путем.

19 минут назад, UriZzz сказал:

Серьезно!?

Да. Все новые объекты на уровнях поставлены через утилиту xrSpawner, еще до времен ACDC. О SDK тем более речи не шло. Помню весело было наблюдать, как плоти сносили столбы вдоль дороги (видимо за кости не закрепили, ибо не припомню такой возможности в xrSpaner). А НПС, упирающийся в дом, вызывал дикий расколбас объекта из-за застревания в террейне.

  • Спасибо 1
  • Полезно 2

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


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

@AndreySol, согласен, это возможный вариант. Только с помещениями не поможет, да и расставлять в два раза больше (объект + рестриктор), лишний мусор в спавне и апдейте (они ведь постоянно висят на апдейте, проверяя нахождение объекта, верно? Могу ошибаться). Тут уже такие трудозатраты получаются, что проще компилятором собрать за несколько часов. И красивее будет.

  • Согласен 2

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


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

@AndreySol, тут да. Но речь шла изначально про создание чуть ли не целого уровня на спавн-объектах. Так, конечно — все от задачи зависит.

  • Согласен 1

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


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

@Zander_driver, как вариант, наверно, можно расставить в каждом помещении по рестриктору, и делать проверку на нахождение в нем. Ну и проверять текущую погоду. Если дождь, и ГГ вне рестриктора, то... Ещё то извращение, но без правок вижу только такую ситуацию.

  • Согласен 2

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


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

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