[SoC] Ковыряемся в файлах - Страница 664 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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


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

@Карлан, на примере было бы понятнее. А в общих чертах - непонятно.

Сталкер - наше всё!

Возможно ли сделать питание оружия по схеме "N патронов в магазине + 1 в стволе?" Просто добивает, что такого до сих пор не увидел!

 

 

Поскажите, возможно ли отловить показ фразы с конкретным идентификатором, скажем, dm_cool_info_58? И если можно, то как?

тег action позволяет задать функцию, которая выполнится после того, как будет сказана фраза. Функция действия должна иметь вид:

function phrase_action(first_speaker, second_speaker, dialog_id, phrase_id)
    ...
end

здесь
first_speaker - кто говорит эту фразу, 
second_speaker - соответственно, другой собеседник
dialog_id - имя текущего диалога
phrase_id - имя сказанной фразы

 

 

Это подойдет ?

 

 

фрагмент из Справочника по ф-циям и классам тег action позволяет задать функцию, которая выполнится после того, как будет сказана фраза. Функция действия должна иметь вид:function phrase_action(first_speaker, second_speaker, dialog_id, phrase_id) ... endздесь first_speaker - кто говорит эту фразу, second_speaker - соответственно, другой собеседник dialog_id - имя текущего диалога phrase_id - имя сказанной фразы Это подойдет ?

Даже и не не знаю. Мне нужно выдать инфопорцию в момент, когда НПС говорит нужную фразу из раздела "Что можешь интересного рассказать". Иды фраз я знаю, но поскольку в dialog_manager.script толком не понимаю, тот куда ткнуться и каким образом - не знаю.

Сталкер - наше всё!

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

@AndrewMor, я же говорю, в ЗП есть явный пример как подключить дополнительный ключ, сейчас глянул оригинальный менеджер - и вот прямо там есть готовая функция cool_info_treasure которая кстати должна выдавать тайники, но это не задействовано в оригинале, хотя вполне себе правильно работает. Вот в нее можно просто врезать проверку, и выполнять действия в зависимости от имени фразы (именно имени, а не айди, если ты не любитель поплясать с бубном), но это как-то совсем не по христиански :).

@Elz, так вроде такого наделали в те времена когда выстрел отлавливали, я в смысле к тому, что можно, но если делать на скриптах, то много костылить придется. Методы что-то типа set_ammo_elapsed/get_ammo_in_magazine.

  • Спасибо 1
Иды фраз я знаю, но поскольку в dialog_manager.script толком не понимаю, то куда ткнуться и каким образом - не знаю.

В dialog_manager.script смотри ф-цию init_cool_info_dialog(dlg). Там для всех фраз этого "типового" диалога добавляется action(ф-ция) phrase_action_cool_info. Она прописана ниже, в этом-же файле. Там и проверяй, что за фраза сказана и выдавай свою и-п.

 

Elz

Действительно много костылить - ловить презарядку, смотреть есть ли еще патроны, добавлять один в оружие, вычитать его из оставшегося(т.е. переспавнивать)... И все это ради чего ? Неуж-то люди будут заморачиваться, что у них вместо 30 патронов в калаш можно зарядить аж 31 ?

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

@UnLoaded, и, собственно, причем здесь phrase_action_cool_info? Ты хочешь два раза по таблице итерироватся? Еще раз говорю, сравнивать айди - мазохизм, надо сравнивать имя. cool_info_treasure (в оригинале кстати можно вырезать) для этого идеально подходит, пишешь "если имя сказанной фразы совпадает с именем нужного, то заспавнить 100 собак на крыше". Строка кода против копии этой-же самой cool_info_treasure в phrase_action_cool_info...это не разумно :), при всем уважении.

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

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

Только на этот раз я тоже не могу понять, чего ради этот огород городить.

  • Спасибо 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

@Карлан, а если фраза длинная, писанины сколько? И если ид фразы остался прежний, а текст поменялся, что же, в скриптах копаться и текст переписывать?

Сталкер - наше всё!

@AndrewMor, ты можешь отличить имя фразы от ее описания? Ты вообще понимаешь о чем я говорю? Айди фраз не совпадают с именами, идентификация по айди - танцы с бубном, но если тебе хочется, то делай, так тоже можно :). Если так хочется по айди, то сделай ассоциативный массив имени и айди, и вычисляй. Имя фразы это ее личный константный параметр, айди - абстрактный идентификатор, который от изменения конфига тоже может меняться, и вся твоя проверка благополучно рухнет, и скрипт начнет глючить.

Приветствую всех!
У актора в инвентаре некий предмет (варианты: съедобный, несъедобный), на предмет повешен биндер.
Требуется отследить использование предмета и выполнить действия.
Можно отследить потерю предмета (съел) аналогично ручным телепортам, либо (для несъедобного предмета) назначить кнопку в hotkeys.script с выдачей поршня и выполнением действий при наличии поршня
Можно повесить предмет на пояс или в слот
Вопрос: есть ли другие варианты использования предмета (желательно съел - действие), или это всё что доступно?
 
Все равно это читать ни кто не будет, видимо, из принципа, но на всякий случай:

http://www.amk-team.ru/forum/index.php?showtopic=13054
Или надо что-то другое ? dc

 

То что надо, извините за мою невнимательность :blush: ...

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

Есть хабар - пойдёт базар :az1000106:

Если оффтоп - удалите.

Добавил RW управление иконкой на человеческих методах, работает, как видно, и для нпс и для актора (монстрам мне кажется это не нужно, хотя можно если надо). Метод не заставляет перерисовывать фреймы и окна "на ходу", но если нужно то и это можно сделать, просто я не представляю в какой ситуации это может потребоваться.

character_icon() - возвращает строку в виде "ui_npc_u_trader", т.е. type(obj:character_icon()) == 'string'.

set_character_icon(string) - устанавливает иконку по описателю из xml, например: obj:set_character_icon('ui_npc_u_trader')

 

 

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

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

 

Впрочем, уже не больно-то и хотелось, ибо сама идея зарекомендовала себя как Чистое Зло. В смысле, не только по-этому, а по совокупности. Эрго, достаточно лишь вменяемой альтернативы нетпакетам для серверных, и вменяемого управления интерфейсами. А эти уродцы - ну их...

 

О, возможно, был бы небесполезен офлайновый инвентарь.

Изменено пользователем Dennis_Chikin
Добавил RW управление иконкой на человеческих методах

Здорово...

Всегда хотелось, что-бы: чем больше у Меченого денег, тем "жирнее" его рожа (на иконке) :)

 

Есть одна поправочка-хотелка. Сначала думалось: надо-бы хоть в шрифты смайлы добавить, но потом передумал: лучше в диалогах фразам НПС иконки прикрутить.

Можно это RW-управление сразу в диалог-менеджер добавить?

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

всё легко

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

 

Управление интерфейсами экспортировать довольно долго, проще что-то альтернативное написать как мне кажется, т.е. не долго экспортировать только то, что конкретно нужно, а вот все и сразу... Я вот хочу что-нибудь с диалогами сделать, но моих кривых рук только на альтернативу хватит, т.е. история например может идти как и с тасками, можно создание перенести на скрипт, в оригинале правда совсем с нуля создать нельзя, т.е. все-таки надо писать <game_task id="task"></game_task>, но в целом можно это все (включая само создание) альтернативно перевести на скрипты (и вообще целиком и полностью отвяжемся от xml), и если в скриптах завести массив (даже читаемый из лтх, типа как во всех супер-менеджерах оригинала) как хранилище то можно будет даже ничего не сохранять имея полный доступ к управлению. Только я боюсь что этим будут злоупотреблять, все-таки по возможности лучше пользоваться xml :).

 

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

Немного не понял, есть же метод give_talk_message, который выводит картинку с текстом под текущей фразой.

В любом случае я думаю можно добавить еще один атрубит в <phrase>, что-то вроде icon =, который будет выводить картинку рядом с текущей фразой, смайлы я пока не знаю как сделать.

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

Рядом с фразой не надо, у НПС, в окне диалога, иконка уже есть.

 

А "смайлы в шрифтах" - их тогда и не надо - это была старая (первая) идея.

Иконка - это и есть - то, что надо...

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

всё легко

Под ночь бред всякий в голову лезет, но может кто-то что-то для себя полезное увидит :D.

 

http://pastebin.com/3B5ES8vT

 

 

Можно отследить потерю предмета (съел) аналогично ручным телепортам

Жуть какая... когда же это прекратится блин.

 

Расскажите мне границы применения Seq-файлов текстур. их на что угодно можно вешать или все же нет?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Функция может примерно так выглядеть:

function t()
--// в начале изменяем xml файл, добавляем туда нужную информацию с помощью пространства io
level.reload_info() --// функция перезагружает все инфопоршни, можно сделать в виде level.reload_xml(const)
--// оперируем со свежедобавленным инфопоршнем
end

Может это дикое зло со стороны оптимизации, я не знаю, просто ковыряюсь :). Так же беспрепятственно можно перезагружать профили, диалоги, статьи, таски (вроде) и споты (вроде) (ну и вывести в режим RW все их параметры вроде как у тасков). Правда как это будет со стороны оптимизации мне неведомо, но переделывать по другому я не могу, туп.

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

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

Прошу помощи. В игре один Сидорович сидит и никого кроме мутантов нет. Какой файл отвечает за спавн всех НПС? 

ba9599747b.png  36914dd0ee.png

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

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

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

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

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

Войти

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

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

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