• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в оценке работ на конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык
    Ссылка на тему с работами участников- тык

Не стесняюсь спросить....

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
Вы еще официальный запрос в посольство германии направьте, уважаемый форумчанин)) Им было просто насрать :confused: Надеюсь, ответ исчерпывающий.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.337
Благодарности
3.181
Баллы
525
как запустить функцию через опледеленный промежуток игрового времени, допустим через 5 суток.
в Архолосе есть жилы и деревья, после 5 раз добычи с них они истощаются. Хочу сделать их обновляемыми по истечению N игового времени после последней добычи.
Для решения второй задачи не нужно решать первую. ;)

При взаимодействии с объектами вызываются соответствующие функции. В них и нужно делать проверку на то, сколько времени прошло с момента последнего взаимодействия. Другое дело, что нужно где-то запоминать время взаимодействия с объектом. С каждым объектом. И ещё нужно понять, как определить именно тот объект, с которым происходит взаимодействие в данный момент.

Не знаю, как это реализовано в моде. Возможно, там как-то контролируется параметр hitpoints объекта, который как-то изменяется при каждом взаимодействии с объектом. Стандартными средствами это не реализуется, но, может быть, реализуется скриптовыми расширителями. Тогда идентификация каждого конкретного объекта и запоминание времени взаимодействия для каждого объекта представляется весьма затруднительным. :oops:

Как вы считаете - это баг или замысел разработчиков?
Это баг, коих немало в скриптах игры.

связь с разработчиками оригинальных игр
А смысл? Вряд ли кто-то вспомнит, что он думал 20+ лет тому назад.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
В чем это баг? Все работает абсолютно так, как должно. С технической точки зрения по крайней мере. Ты думаешь разработчики были не в курсе как работает их спел?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.337
Благодарности
3.181
Баллы
525
В том, что в соответствующих функциях скриптов используется идентификатор hero, который во время использования состояния трансформации указывает на существо, которым управляет игрок, а не на PC_Hero. Соответственно, плюшки от повышения уровня получает монстр, а не ГГ. Разрабы это просто просмотрели.

Ты думаешь разработчики были не в курсе как работает их спел?
Разработчики на многие вещи положили арбалетный ...
 

crashtua

Участник форума
Регистрация
7 Янв 2020
Сообщения
95
Благодарности
27
Баллы
115
Для решения второй задачи не нужно решать первую. ;)

При взаимодействии с объектами вызываются соответствующие функции. В них и нужно делать проверку на то, сколько времени прошло с момента последнего взаимодействия. Другое дело, что нужно где-то запоминать время взаимодействия с объектом. С каждым объектом. И ещё нужно понять, как определить именно тот объект, с которым происходит взаимодействие в данный момент.
Я тоже думал повесить функционал на взаимодействие. Там есть куски кода с определением нужной жилы или дерева, так что это не проблема. Но кроме счетчика добытых ресурсов(5 максимум), там еще имя обьекта меняется, т.е. "Упавшее дерево" ->"Истощенное дерево". По этому я хочу сделать именно по таймеру, что бы "Истощенное дерево" снова стало "Упавшее дерево" перед использованием а не после.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
Это идентификатор. Автоматически назначаемого объекта, равного этой инстанции, нету.
Вероятно, есть переменная, в которую записывается промежуточное значение инстанции реального гг? Тогда какова точка определения этой переменной? В скрипты не выведены вызовы в момент трансформации (я не видел в движке по крайней мере).
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.337
Благодарности
3.181
Баллы
525
Не совсем понял, о чём ты. Я в мод-фиксе в функции получения опыта сперва получаю ссылку на персонажа инстанции PC_Hero, и всё остальное делаю для этого персонажа, а не для hero.

В скрипты не выведены вызовы в момент трансформации (я не видел в движке по крайней мере).
Если я правильно понял тебя. В скриптах можно зафиксировать момент превращения ГГ в монстра и обратного превращения с помощью восприятия PERC_ASSESSSURPRISE.
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.007
Благодарности
516
Баллы
350

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
сперва получаю ссылку на персонажа инстанции PC_Hero
Решение здравое.
Догадываюсь почему так не делали пираньи - паттерн поиска ссылок небезопасен. Например, pc_hero не всегда гарантировал ссылку на ведущую инстанцию: спелл контроля; инстанции для E3; наработки мультиплеера и тп. Для этого и существуют глобальные переменные, в которых хранятся актуальные ссылки на объекты.

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

Отсюда я вижу несколько причин, почему возможно пираньи забили болт на решение этой проблемы:
- в hero очень сложно поддерживать на реальную ссылку, поскольку в движке слишком много мест, где его значение устанавливается на равное движковому player;
- ввод дополнительной переменной real_hero нарушил бы их паттерн и сделал бы код более запутанным. Они и так путались в self и slf;
- несогласованность чувака на скриптах и на движке. Одному было впадлу добавить каллбеки, второму не хотелось придумывать костыли. При этом каждый занимался согласно своему графику работ и до общего решения не дошли руки;
- потенциальная небезопасность паттерна поиска ссылок на pc_hero.

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

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.281
Благодарности
4.581
Баллы
625
По отношению к гг выше привел 3 примера. Это тебе с точки зрения готового продукта очевидно, что он ничего не сломает :) А если бы Бьёрну приспичило ввести какую-то ультимативную фичу, связанную со сменой pc_hero на кого-то другого, то логика скриптов сразу вышла бы в окно и штраф скриптеру 50 кусков руды))
 

JUSTMAN_2001

Участник форума
Регистрация
10 Май 2023
Сообщения
74
Благодарности
56
Баллы
45
Стесняюсь спросить, но все же. Можно ли как то адаптировать скрипт на смену модели головы при надевании шлема для мода Одиссея. Такая функция есть к примеру в новом балансе, я попробовал поменять вот эти значения visual под шлем одиссеи, но ничего не вышло.
В одиссеи просто нормальную модель шлема почти нереально сделать из-за торчащей косички и высокого хаера... а вот такая функция в нб позволяет делать хорошие модели, хотелось бы такое и в немецком моде. Это пример одного файла, как раз с подобной функцией, как я понял. Сам я в скриптинге лось полный, по этому скромно надеюсь на вашу помощь, может можно написать еще каких то пару строчек и это будет работать?))
 

Вложения

  • Бошка.d
    1,1 KB · Просмотры: 5

Scarecrow

Участник форума
Регистрация
11 Авг 2014
Сообщения
158
Благодарности
85
Баллы
220
Подскажите пожалуйста, как сделать так, что бы нпс не реагировали на монстров? Особенно когда монстр нападает на гг (или гг на монстра), нпс, стоящие рядом, сразу же бросаются в атаку.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.337
Благодарности
3.181
Баллы
525
что бы нпс не реагировали на монстров
Нужно править ИИ, добавив туда исключения для конкретной ситуации, которую ты пытаешься создать. Вот список восприятий обычного непися в спокойном состоянии:
Восприятия.jpg


Активное восприятие PERC_ASSESSENEMY (функция обработчик B_AssessEnemy) - это восприятие врага. Срабатывает, когда непись "видит" кого-то, к кому у него установлено враждебное отношение. Если таковое отношение установлено к монстру, то непись начинает атаковать монстра или, возможно, убегать от него. Расстояние, на котором непись "видит" врага, определяется параметром senses_range самого непися. Обычно это 20м. Работает активное восприятие обычно раз в секунду.

Пассивное восприятие PERC_ASSESSFIGHTSOUND (функция обработчик B_AssessFightSound) - это восприятие звуков боя. Срабатывает в случае, если один непись наносит другому неписю повреждение или блокирует удар. Возможно, срабатывает, если игрок просто жмёт клавишу блока, находясь вне боя. Это нужно проверять. В случае пассивного восприятия непись не обязан "видеть" место события, хотя в некоторых случаях это проверяется в скриптах. Расстояние, на котором непись может "услышать" звуки боя, 30м.

Пассивное восприятие PERC_ASSESSOTHERSDAMAGE (функция обработчик B_AssessOthersDamage) - это почти то же самое, что описано выше. Всех различий я не знаю. Возможно, восприятие срабатывает, если непись получает повреждение от падения или от контакта с зоной, наносящей урон (шипы, огонь и т. д.). Расстояние, на котором непись может зафиксировать получение урона другим неписем, 10м. Не факт, что это восприятие будет прописано в твоих скриптах. Если не ошибаюсь, оно было добавлено авторами того мода, скрин из которого я привёл.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.337
Благодарности
3.181
Баллы
525
Можно ли как то адаптировать скрипт на смену модели головы при надевании шлема для мода Одиссея.
Не знаю, поможет ли тебе это. Что там понаделано в Одиссее, понятия не имею. Но попробую объяснить, что прописано в скрипте, который ты привёл в качестве образца.

В инстанции шлема прописано:
Daedalus:
on_equip = Equip_ItAr_Helm_New_01;
on_unequip = UnEquip_ItAr_Helm_New_01;

Это значит, что при одевании шлема ItAr_Helm_New_01 вызывается функция Equip_ItAr_Helm_New_01, а при снятии шлема - функция UnEquip_ItAr_Helm_New_01.

В функции Equip_ItAr_Helm_New_01 происходит вызов функции создания визуала персонажа Mdl_SetVisualBody, если шлем одевает персонаж под управлением игрока. При этом указана модель головы Hum_Head_Bald (косички нет). Остальные части тела ГГ не претерпевают изменения. В функции UnEquip_ItAr_Helm_New_01 происходит ещё один вызов функции создания визуала персонажа Mdl_SetVisualBody. При этом указана модель головы Hum_Head_Pony (косичка есть). На мой взгляд, в данном случае требуется создание особой версии модели для подмены головы, которая отличается от головы ГГ только отсутствием косички. Скорее всего, стандартная модель головы Hum_Head_Bald отличается не только длиной волос, но и формой рта, носа, ушей и т. д.
 

JUSTMAN_2001

Участник форума
Регистрация
10 Май 2023
Сообщения
74
Благодарности
56
Баллы
45
Не знаю, поможет ли тебе это. Что там понаделано в Одиссее, понятия не имею. Но попробую объяснить, что прописано в скрипте, который ты привёл в качестве образца.

В инстанции шлема прописано:
Daedalus:
on_equip = Equip_ItAr_Helm_New_01;
on_unequip = UnEquip_ItAr_Helm_New_01;

Это значит, что при одевании шлема ItAr_Helm_New_01 вызывается функция Equip_ItAr_Helm_New_01, а при снятии шлема - функция UnEquip_ItAr_Helm_New_01.

В функции Equip_ItAr_Helm_New_01 происходит вызов функции создания визуала персонажа Mdl_SetVisualBody, если шлем одевает персонаж под управлением игрока. При этом указана модель головы Hum_Head_Bald (косички нет). Остальные части тела ГГ не претерпевают изменения. В функции UnEquip_ItAr_Helm_New_01 происходит ещё один вызов функции создания визуала персонажа Mdl_SetVisualBody. При этом указана модель головы Hum_Head_Pony (косичка есть). На мой взгляд, в данном случае требуется создание особой версии модели для подмены головы, которая отличается от головы ГГ только отсутствием косички. Скорее всего, стандартная модель головы Hum_Head_Bald отличается не только длиной волос, но и формой рта, носа, ушей и т. д.
Да, все верно, луший вариант FATBALD. Но к сожалению такая функция не работает в одиссее. Если б кто мог его как то адаптировать...
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.337
Благодарности
3.181
Баллы
525
такая функция не работает в одиссее
Что значит "не работает"? Отсутствует эффект при использовании, или как-то ругается при попытке использования? И как ты вообще пытаешься скормить эти функции моду?
 

JUSTMAN_2001

Участник форума
Регистрация
10 Май 2023
Сообщения
74
Благодарности
56
Баллы
45
Что значит "не работает"? Отсутствует эффект при использовании, или как-то ругается при попытке использования? И как ты вообще пытаешься скормить эти функции моду?
Ну, я не мастер этих дел к сожалению. Просто отправил файл в аutorun. В самом файле поменял названия шлема и его статы под Рогатый шлем из Одиссеи.
В общем то, я уже просто переделал геометрию всех шлемов, которые хотел добавить, так что это уже не актуально. Разве что из интереса, если кому то захочется такое доброе дело сделать))
 
Сверху Снизу