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

Подскажите как сделать своего НПС


Caessar136

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

В теме 10 сообщений

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

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

Custom NPC's это очень старый мод и он неподходит для моих задач так как имеет например я не смогу красиво обыграть выбор игрока

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

Только что, Caessar136 сказал:

Custom NPC's это очень старый мод и он неподходит для моих задач так как имеет например я не смогу красиво обыграть выбор игрока

Если версия 1.12.2, то может подойти Mappet. Что-то типо Custom Npcs, но при этом с удобным интерфейсом, и там еще можно много разных вещей

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

Это очень обширная тема, тебе придётся прям ЗАШАРИТЬ за команды

Чтобы создать диалоговое окно (1.21.6+), воспользуйся этим сайтом. И закинув созданный диалог в папку saves\название мира\datapacks\название датапака\data\ещё одно название\dialog ты сможешь показывать его игрокам командой /dialog show. НО вообще, чтобы показать игроку диалог не обязательно прям датапак создавать, ты можешь воспользоваться ленивым методом и скопировать всю инфу о диалоге прямо в команду /dialog show. Не знаю насколько это профессионально, но я иногда этим пользуюсь ;)

:Impulse_Unconditional: /dialog show @s {type:"minecraft:server_links",body:{type:"minecraft:plain_message",contents:"квазибоба"},inputs:[],columns:1,title:"диалоговое окошко"}

После того как ты прохаваешь создание диалогов (моей инфы тебе вряд ли хватит) можно будет приступать к созданию NPС, использовать ты можешь разные способы, но более правильным наверное будет использование хайповой integration сущности, она представляет из себя пустой хитбокс с возможностью детектить по нему нажатия. Сущность невидимая, но в маине можно смотреть хитбоксы с помощью F3+B

:Impulse_Unconditional: /summon minecraft:interaction ~ ~ ~ {width:0.8f,height:2f,Tags:["nps_dimon"]}

:Chain_Unconditional: execute as @e[type=minecraft:interaction,tag=nps_dimon] run data remove entity @s interaction
:Repeating_Unconditional: execute as @e[type=minecraft:interaction,tag=nps_dimon] on target run dialog show @s название

Теперь, когда у тебя на руках есть "кнопка" и показывающийся на её нажатие диалог, мы можем сделать красивую внешку, для этого можно использовать вообще всё что угодно, главное засунуть туда кнопку. Можно использовать block display или текстурпаки, но так как тебе нужно сделать передвигающуюся модельку я покажу способ с сущностью mannequin (1.21.9+). 

:Impulse_Unconditional: /summon minecraft:mannequin ~ ~ ~ {Tags:["nps_dimon","conveer"]}

Теперь c помощью постоянной телепортации мы будем перемещать кнопку внутрь манекена, но если твой npc не будет двигаться то можно ограничиться одной телепортацией. 

:Repeating_Unconditional: execute as @e[type=minecraft:mannequin,tag=nps_dimon] at @s run tp @n[type=minecraft:interaction,tag=nps_dimon] ~ ~ ~

Теперь подумаем над перемещением сущности. Хотя думать я не буду, а просто свой способ приложу. Заключается он в том, что если в двух блоках под сущностью c тегом "conveyor" оказывается блок розовой обожжённой терракоты (та что со стрелочкой) то он начинает двигаться и поворачиваться по направлению стрелочки.

:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=west] run data modify entity @s Motion[0] set value 0.1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=north] run data modify entity @s Motion[2] set value 0.1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=east] run data modify entity @s Motion[0] set value -0.1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=south] run data modify entity @s Motion[2] set value -0.1

:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=west] run rotate @s facing ~1 ~ ~
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=north] run rotate @s facing ~ ~ ~1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=east] run rotate @s facing ~-1 ~ ~
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=south] run rotate @s facing ~ ~ ~-1

Вообще наверное гайд надо сделать, тема слишком большая чтобы в ответе на вопрос её рассматривать

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

16 часов назад, Sench_mp4 сказал:

Это очень обширная тема, тебе придётся прям ЗАШАРИТЬ за команды

Чтобы создать диалоговое окно (1.21.6+), воспользуйся этим сайтом. И закинув созданный диалог в папку saves\название мира\datapacks\название датапака\data\ещё одно название\dialog ты сможешь показывать его игрокам командой /dialog show. НО вообще, чтобы показать игроку диалог не обязательно прям датапак создавать, ты можешь воспользоваться ленивым методом и скопировать всю инфу о диалоге прямо в команду /dialog show. Не знаю насколько это профессионально, но я иногда этим пользуюсь ;)

:Impulse_Unconditional: /dialog show @s {type:"minecraft:server_links",body:{type:"minecraft:plain_message",contents:"квазибоба"},inputs:[],columns:1,title:"диалоговое окошко"}

После того как ты прохаваешь создание диалогов (моей инфы тебе вряд ли хватит) можно будет приступать к созданию NPС, использовать ты можешь разные способы, но более правильным наверное будет использование хайповой integration сущности, она представляет из себя пустой хитбокс с возможностью детектить по нему нажатия. Сущность невидимая, но в маине можно смотреть хитбоксы с помощью F3+B

:Impulse_Unconditional: /summon minecraft:interaction ~ ~ ~ {width:0.8f,height:2f,Tags:["nps_dimon"]}

:Chain_Unconditional: execute as @e[type=minecraft:interaction,tag=nps_dimon] run data remove entity @s interaction
:Repeating_Unconditional: execute as @e[type=minecraft:interaction,tag=nps_dimon] on target run dialog show @s название

Теперь, когда у тебя на руках есть "кнопка" и показывающийся на её нажатие диалог, мы можем сделать красивую внешку, для этого можно использовать вообще всё что угодно, главное засунуть туда кнопку. Можно использовать block display или текстурпаки, но так как тебе нужно сделать передвигающуюся модельку я покажу способ с сущностью mannequin (1.21.9+). 

:Impulse_Unconditional: /summon minecraft:mannequin ~ ~ ~ {Tags:["nps_dimon","conveer"]}

Теперь c помощью постоянной телепортации мы будем перемещать кнопку внутрь манекена, но если твой npc не будет двигаться то можно ограничиться одной телепортацией. 

:Repeating_Unconditional: execute as @e[type=minecraft:mannequin,tag=nps_dimon] at @s run tp @n[type=minecraft:interaction,tag=nps_dimon] ~ ~ ~

Теперь подумаем над перемещением сущности. Хотя думать я не буду, а просто свой способ приложу. Заключается он в том, что если в двух блоках под сущностью c тегом "conveyor" оказывается блок розовой обожжённой терракоты (та что со стрелочкой) то он начинает двигаться и поворачиваться по направлению стрелочки.

:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=west] run data modify entity @s Motion[0] set value 0.1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=north] run data modify entity @s Motion[2] set value 0.1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=east] run data modify entity @s Motion[0] set value -0.1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=south] run data modify entity @s Motion[2] set value -0.1

:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=west] run rotate @s facing ~1 ~ ~
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=north] run rotate @s facing ~ ~ ~1
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=east] run rotate @s facing ~-1 ~ ~
:Repeating_Unconditional: execute as @e[tag=conveyor] at @s if block ~ ~-2 ~ magenta_glazed_terracotta[facing=south] run rotate @s facing ~ ~ ~-1

Вообще наверное гайд надо сделать, тема слишком большая чтобы в ответе на вопрос её рассматривать

сколько ты вообще обычно тратишь на такое время

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

  • 2 недели спустя...

Ну хз мне кажется я зря пишу это но Hollow engine вполне справляется с этой задачей на 1.19.2 фордж. И гайд на ютубе есть и документация в их дс сервере.

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

  • 3 недели спустя...

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

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

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

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

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

Войти

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

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

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