С Новым 2025 годом!
  • 1.194
  • 18
Вот и завершается этот год - местами странный, местами крутой, но точно запоминающийся, полный неожиданностей и ярких моментов. Мы благодарны вам за то, что вы были рядом, за все наши совместные...
Новости В Heroes of Might and Magic 3 теперь можно поиграть в веб-браузере
  • 577
  • 2
Совсем недавно энтузиасты из России смогли портировать игру HoMM3 в браузер. Причем веб-версия позволяет пройти все сюжетные компании и даже поиграть по сети. Чтобы сыграть в классику необходимо...
Новости Зал Славы российского геймдева - кто вошел в этом году?
  • 609
  • 7
Зал Славы - проект, который был создан в прошлом году для увековечивания достижений российских разработчиков, киберспортсменов, а также ключевых фигур российского геймдева. Инициатором проекта...
Новости Of Ash and Steel - Ответы на вопросы №4 от 20 декабря 2024 года
  • 484
  • 0
Ответы на вопросы №4 от 20 декабря 2024 года Приветствую вас, искатели приключений! Спасибо за все вопросы, которые вы оставили нам в Steam и Discord по игре Of Ash and Steel. Сегодня мы...

В процессе Вызов компаньона

𝒸𝓇𝒶𝒻𝓉𝓎⁷⁷

Злобный Ёж
Команда форума
Куратор раздела
Пользователь VIP
Локализатор
 
Модостроитель
Участник форума
Регистрация
6 Дек 2018
Сообщения
2.495
Реакции
4.654
Баллы
461
Лучшие ответы
30
#11
@UberSoldat777, привет.
Неважно, каким образом будет реализовываться в игре изучение (получение) Заклинания вызова для компаньона и его работа, будь то добавление каждому из них
в отдельности возможности быть призванным с помощью магического эффекта путем установки флага Summonable
в1 в1.jpg
или реализация эффекта призыва путем добавления возможности телепортации с помощью скрипта и дополнительного заклинания для всех потенциальных компаньонов непосредственно в игре, как в моде Recall Followers (видео в предыдущем посте), наши действия по созданию (изменению) заклинания и его эффекта будут практически идентичны.

Итак, нам требуется создать (или изменить имеющееся) Заклинание призыва для компаньона, при котором во время каста руки главного героя будут свободны (или заняты оружием) и добавить свист в качестве звукового сопровождения.

В моем примере каст Заклинания "Вызов компаньонов" будет осуществляться с использованием Малой способности без затрат маны.

Создание заклинания "Вызов компаньонов".

Запускаем наш Creation Kit и в окне Object Window открываем вкладку Magic-Spell, на любой строке кликаем ПКМ и в выпадающем списке нажимаем New
в2 в2.jpg
и создаем наше заклинание.
в3 в3.jpg
В поле ID прописываем уникальный идентификатор для этого заклинания. У меня это _aaaCallFollower01Spell.
В поле Name пишем название заклинания. У меня это "Вызов компаньонов" (на кракозябры не обращай внимания).
В поле Type из выпадающего списка я выбираю Малая способность (этот тип дает неограниченное количество использований в сутки и допускает
вариант каста заклинания без затрат магии), вы можете использовать и другие типы.
В поле Casting выбираем Fire and Forget (заклинание выполняется единовременным нажатием клавиши).
В поле Delivery из выпадающего списка выбираем способ применения заклинания к цели "На цель".
В поле Menu Display Object выбираем визуальное отображение нашего заклинания, которое будет отображаться в разделе Магии в игре.
У меня это MAGINVSummon - стандартная сине-фиолетовая сфера от призыва любого существа.
В поле Equip Type выбираем каким образом будет экипироваться наше заклинание (руками, криком и т.д.). Раз уж нам нужен свист в качестве звукового сопровождения,
то тут я выберу экипировку голосом (Voice).

На этом этапе все наши действе в окне Spell закончены. Потому нажимаем ОК и сохраняем изменения в плагине.

To be continued...
 

Test Level

Призрак отца Гамлета
Пользователь VIP
Участник форума
Регистрация
12 Ноя 2011
Сообщения
886
Реакции
739
Баллы
261
Лучшие ответы
2
#12
@crafty77, ну да, согласен, в Simple Horse всего-то 6 скриптов. В принципе, вот этот за призыв отвечает

Код:
Scriptname aaaSimpleHorseCallScript extends activemagiceffect 

Actor CurrentHorse
ReferenceAlias property HorseAlias auto
Actor property Player auto
Scene property aaaSimpleHorseMovetoPlayerScene auto
ObjectReference property HorsePosition auto

Event OnEffectStart(Actor akTarget, Actor akCaster)
    player.CreateDetectionEvent(player, 70)
    if akCaster.IsInInterior()
        return
    endif

    if CurrentHorse != Game.GetPlayersLastRiddenHorse()
        CurrentHorse = Game.GetPlayersLastRiddenHorse()
        HorseAlias.Clear()
        HorseAlias.ForceRefIfEmpty(CurrentHorse)
    endif

    if !Player.HasLOS(CurrentHorse)
        if CurrentHorse.GetDistance(Player) >= 1000.0
            MovetoBehindPlayer()
        endif
        MoveMarker()
    else
        HorsePosition.MoveTo(player)
    endif
    aaaSimpleHorseMovetoPlayerScene.Start()

EndEvent

Function MoveMarker()
    float angle = Player.GetAngleZ()
    float xoffset = 300.0 * math.sin(angle)
    float yoffset = 300.0 * math.cos(angle)
    HorsePosition.MoveTo(Player, xoffset, yoffset, abMatchRotation = true)
EndFunction

Function MovetoBehindPlayer()
    float angle = Player.GetAngleZ()
    float xoffset = -(300.0  * math.sin(angle))
    float yoffset = -(300.0  * math.cos(angle))
    CurrentHorse.MoveTo(Player, xoffset, yoffset, abMatchRotation = true)
EndFunction
 
Сверху Снизу