StarCraft 2: Добавление характеристик герою

» Раздел: 3. Редактор данных
Одной из особенностей редактора StarCraft 2 является возможность добавления герою своих собственных характеристик, которые будут влиять на него так, как вы захотите. Именно об этом я расскажу в этой статье...
Характеристики в SC2 создатель карты волен создавать какие угодно. Для начала я предлагаю создать аналог характеристик в WC3, а именно, "Strength", "Agility" и "Intelligence", с соответствующими бонусами.
Предполагается, что читатель уже знаком с этой и этой статьями теоретически, а еще лучше, практически.
Итак, будем считать, что у вас уже есть
  • алгоритм (Behavior) Ветеранского Статуса (Veterancy) с несколькими уровнями, предположим, "HeroLevels" с повышением до 5 уровня
  • готовая боевая единица-герой, обладающая вышеуказанным алгоритмом, припустим, некий Зилот

Создание характеристик

Сначала создайте соответственные характеристики. Для этого зайдите в Данные/Data Editor (F7), в поле Тип данных/Data Type выберите Алгоритмы/Behaviors и создайте новый объект.
Называем его "Strength", предлагаем ID (Suggest), выбираем тип Атрибут/Attribute и жмем ОК.
Повторите процедуру для "Agility" и "Intelligence".
Поскольку SC2 не предусматривает понятия Основной характеристики (насколько я понял), предлагаю сделать шаг в сторону WoW: для увеличения урона будем использовать "Strength", а для бонуса к здоровью создадим новую - "Stamina". Итого, у нас 4 пока бесполезных атрибута:
Теперь нужно задать каждой характеристике ее бонус:
Выбираем нужную характеристику (к примеру, "Stamina"), и нажимаем на поле Модификация+/Modification+
В появившемся окне ищем Бонус максимального значения базовых показателей/Vital Max Bonus, выбираем из списка Здоровье/Life и определяем бонус за единицу характеристики (например, 15). Там же можем определить бонус к восстановлению здоровья за секунду.
Для "Intelligence" процедура аналогична "Stamina", только вместо Здоровье выделяем Энергия/Energy
Для "Strength" в списке модификаций найдите поле Наносимый урон (масштбированный)/Damage Dealt (Scaled) или Наносимый урон (немасштабированный)/Damage Dealt (Unscaled) (я так и не увидел разницы между этими полями, указанный в них урон суммируется). Поскольку Зилот использует ближний бой, выделите Ближний/Melee и поставьте бонус за единицу атрибута (например, 1)
Теперь "Agility". В списке модификаций найдите Коэффициент скорости атаки/Attack Speed Multiplier. В этом поле поставьте величину <1+x>, где x - бонус к скорости атаки за единицу характеристики. Например, 1.05 для бонуса 5% (я не полностью уверен, что это правильно, но на практике похоже на то).
Ну, и бонус к броне. Задается он в одноименном поле. Например, 0.3
Ну, вроде все из запланированного.

Назначение характеристик уровню

Теперь самая длинная часть. Пока не ясно, поддерживает ли SC2 изменение характеристик по определенной схеме (как в WC3), поэтому характеристики для каждого уровня вам придется прописывать вручную. Не говоря уже о том, что для каждого героя придется создавать свой алгоритм ветеранского статуса. Хотя, в этом есть и свои бонусы. Например, мы можем определить, с какого уровня какая-то характеристика не будет повышаться, или сделать ее повышение нелинейным (по желанию - хоть синусоидальным)
Выбираем в списке алгоритмов наш HeroLeveling (или какой у вас там алгориитм со Статусом Ветерана)
Открываем поле Ветеранские статусы/Veterancy Levels
Выделяем первое повышение
Розставьте значения полей как на рисунках
» Список заменяемых значений для инглиш версии
На 1 заменяем
  • Time Scale
  • Movement Speed Multiplier
  • Acceleration Multiplier
  • Deceleration Multiplier
  • Snare Multiplier
  • Attack Speed Multiplier
  • Life Armor Multiplier
  • Shield Armor Multiplier
И на 160
  • Movement Speed Maximum (к слову, в русском эдиторе ошибка - там два поля макс скорости, хотя второе на самом деле отвечает за минимальную);
если не сделать этого, ваш герой будет стоять на месте и никого не атаковать. Вероятней всего, это вызвано конфликтом значений бонусов характеристик и ветеранского статуса. Не знаю точно, но пока я не решил эту проблему методом тыка, она меня не слабо понервировала
Найдите поле Изменения атрибутов/Attribute Changes. Добавьте 4 значения (1), для каждого со списка алгоритмов выберите соответствующий атрибут (2) и точки (количество атрибута на выбранном уровне) (3)
Теперь повторите процедуру для каждого уровня, включая изменение коэффициентов (само собой, количество атрибутов для высшего уровня должно расти).
Это почти все. Осталось добавить герою эти атрибуты в список алгоритмов
Все! Теперь наш герой при получении уровня будет становится сильнее!
Найденные нерешенные проблемы:
  • количество характеристик, вроде бы, ограничено числом 4. Во всяком случае, у меня пятая не отобразилась
  • непонятно, как задавать начальное количество атрибутов (на 1 уровне). Наверное, придется делать это триггерно, я в триггерах видел действие по добавлению алгоритмов "в штуках", но не пробовал пока

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

Список модификаций весьма богат, можно делать характеристики абсолютно разных направлений. Также, одной характеристике можно дать большое количество бонусов, так что, вы можете создать характеристики стиля "Тело", "Разум", и на первую навешать здоровье, урон, скорость, а на вторую - энергию,
обзор и т.д., то есть, возможности достаточно широки. Можно даже сделать влияние характеристик на добычу ресурсов)) Экспериментируем))


Views: 9 984

KotoBog #1 - 11 years ago 0
Голосов: +0 / -0
Вроде нормальная. Одобряю в паблик.
Kell #2 - 11 years ago 1
Голосов: +2 / -1
Я лучше ап стенку убьюсь)
lentinant #3 - 11 years ago 2
Голосов: +2 / -0
кстати, а нельзя лм сделать, чтобы в списке статей отображалась не вся статья, а только часть текста? ну, как в остальных статьях, а то вроде как черезчур много места в списке занимает))
а то это у меня первая статья, я не знаю как так замутить
BK.Jugg #4 - 11 years ago 0
Голосов: +0 / -0
это не твои проблемы...
Тзинч #5 - 11 years ago 0
Голосов: +0 / -0
lentinant, фикси статью на ошибки. Потому что они есть. Статья вроде хорошая.
lentinant #6 - 11 years ago 2
Голосов: +2 / -0
"фикси статью на ошибки. Потому что они есть". Будет быстрее, если вы укажете найденные вами
извините, но почему статья перекочевала в Бездну?
Stake #7 - 11 years ago 2
Голосов: +2 / -0
непонятно, как задавать начальное количество атрибутов (на 1 уровне). Наверное, придется делать это триггерно, я в триггерах видел действие по добавлению алгоритмов "в штуках", но не пробовал пока
Ответ все просто первый уровень максимально количество xp надо ствить 0 и получишь 1 уровень а там уже настроишь начальные характеристики !
BuxProf #8 - 11 years ago 0
Голосов: +0 / -0
» непонятно, как задавать начальное количество атрибутов (на 1 уровне). Наверное, придется делать это триггерно, я в триггерах видел действие по добавлению алгоритмов "в штуках", но не пробовал пока
Можно добавить герою алгоритм типа «Положительный эффект» (Buff), прибавляющий начальные характеристики
» Поскольку SC2 не предусматривает понятия Основной характеристики (насколько я понял)
Можно сэмулировать, создав дубль каждой характеристики с дополнительным бонусом
lentinant #9 - 11 years ago 0
Голосов: +0 / -0
в редакторе retail (полной) версии проблема с начальными характеристиками решена. Появилось "нулевое" повышение уровня, именно его показатели атрибутов отвечают за характеристики на 1 уровне
Hares #10 - 9 years ago (изм. ) 0
Голосов: +0 / -0
К тому же в полной версии стара решена проблема с выставлением единичек. Они ставятся по умолчанию. Кому надо, выкладываю xml-код 6 стандартных атрибутов и прокачку Мастера Клинка и Говорящего с духами. Я сделал их с помощью программы, и всё работает.
» Xml code:
<?xml version="1.0" encoding="us-ascii"?>
<Catalog>
    <CBehaviorAttribute id="Strength">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Unit"/>
        <MaxPoints value="999999999"/>
        <Modification>
            <VitalMaxArray index="Life" value="25"/>
            <VitalRegenArray index="Life" value="0.05"/>
        </Modification>
    </CBehaviorAttribute>
    <CBehaviorAttribute id="Agility">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Unit"/>
        <MaxPoints value="999999999"/>
        <Modification>
            <MoveSpeedBonus value="0"/>
            <AttackSpeedMultiplier value="1.02"/>
            <LifeArmorBonus value="0.30"/>
        </Modification>
    </CBehaviorAttribute>
    <CBehaviorAttribute id="Intellect">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Unit"/>
        <MaxPoints value="999999999"/>
        <Modification>
            <VitalMaxArray index="Energy" value="15"/>
            <VitalRegenArray index="Energy" value="0.05"/>
        </Modification>
    </CBehaviorAttribute>
    <CBehaviorAttribute id="StrengthMain">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Unit"/>
        <MaxPoints value="999999999"/>
        <Modification>
            <VitalMaxArray index="Life" value="25"/>
            <VitalRegenArray index="Life" value="0.05"/>
            <DamageDealtScaled index="Melee" value="1.0"/>
            <DamageDealtScaled index="Ranged" value="1.0"/>
        </Modification>
            <Name value="Behavior/Name/Strength"/>
    </CBehaviorAttribute>
    <CBehaviorAttribute id="AgilityMain">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Unit"/>
        <MaxPoints value="999999999"/>
        <Modification>
            <MoveSpeedBonus value="0"/>
            <AttackSpeedMultiplier value="1.02"/>
            <LifeArmorBonus value="0.30"/>
            <DamageDealtScaled index="Melee" value="1.0"/>
            <DamageDealtScaled index="Ranged" value="1.0"/>
        </Modification>
            <Name value="Behavior/Name/Agility"/>
    </CBehaviorAttribute>
    <CBehaviorAttribute id="IntellectMain">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Unit"/>
        <MaxPoints value="999999999"/>
        <Modification>
            <VitalMaxArray index="Energy" value="15"/>
            <VitalRegenArray index="Energy" value="0.05"/>
            <DamageDealtScaled index="Melee" value="1.0"/>
            <DamageDealtScaled index="Ranged" value="1.0"/>
        </Modification>
            <Name value="Behavior/Name/Intellect"/>
    </CBehaviorAttribute>
    <CBehaviorVeterancy id="HeroFarSeer">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Units"/>
        <MaxPoints value="1"/>
        <VeterancyLevelArray MinVeterancyXP="0">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="17"/>
                <AttributeChangeArray Attribute="Agility" Points="19"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="22"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="100">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="19"/>
                <AttributeChangeArray Attribute="Agility" Points="20"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="25"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="120">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="21"/>
                <AttributeChangeArray Attribute="Agility" Points="21"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="28"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="160">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="23"/>
                <AttributeChangeArray Attribute="Agility" Points="22"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="31"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="220">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="25"/>
                <AttributeChangeArray Attribute="Agility" Points="23"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="34"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="300">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="27"/>
                <AttributeChangeArray Attribute="Agility" Points="24"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="37"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="400">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="29"/>
                <AttributeChangeArray Attribute="Agility" Points="25"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="40"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="500">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="31"/>
                <AttributeChangeArray Attribute="Agility" Points="26"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="43"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="600">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="33"/>
                <AttributeChangeArray Attribute="Agility" Points="27"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="46"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="700">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="35"/>
                <AttributeChangeArray Attribute="Agility" Points="28"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="49"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="800">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="37"/>
                <AttributeChangeArray Attribute="Agility" Points="29"/>
                <AttributeChangeArray Attribute="IntellectMain" Points="52"/>
            </Modification>
        </VeterancyLevelArray>
    </CBehaviorVeterancy>
    <CBehaviorVeterancy id="HeroBladeMaster">
        <BehaviorCategories index="Permanent" value="1"/>
        <EditorCategories value="AbilityorEffectType:Units"/>
        <MaxPoints value="1"/>
        <VeterancyLevelArray MinVeterancyXP="0">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="20"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="26"/>
                <AttributeChangeArray Attribute="Intellect" Points="18"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="100">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="22"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="28"/>
                <AttributeChangeArray Attribute="Intellect" Points="20"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="120">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="24"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="29"/>
                <AttributeChangeArray Attribute="Intellect" Points="23"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="160">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="26"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="31"/>
                <AttributeChangeArray Attribute="Intellect" Points="25"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="220">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="28"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="33"/>
                <AttributeChangeArray Attribute="Intellect" Points="27"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="300">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="30"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="34"/>
                <AttributeChangeArray Attribute="Intellect" Points="30"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="400">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="32"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="36"/>
                <AttributeChangeArray Attribute="Intellect" Points="32"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="500">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="34"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="38"/>
                <AttributeChangeArray Attribute="Intellect" Points="34"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="600">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="36"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="40"/>
                <AttributeChangeArray Attribute="Intellect" Points="36"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="700">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="38"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="42"/>
                <AttributeChangeArray Attribute="Intellect" Points="38"/>
            </Modification>
        </VeterancyLevelArray>
        <VeterancyLevelArray MinVeterancyXP="800">
            <Modification>
                <AttributeChangeArray Attribute="Strength" Points="40"/>
                <AttributeChangeArray Attribute="AgilityMain" Points="43"/>
                <AttributeChangeArray Attribute="Intellect" Points="41"/>
            </Modification>
        </VeterancyLevelArray>
    </CBehaviorVeterancy>
</Catalog>
CRYbit #11 - 9 years ago 0
Голосов: +0 / -0
сделал на Зератуле, в результате: в начале все статы по 0, после убийства зилота получает 20 из 30 опыта и застывает, двигаться не может, статы повышаются. Сделал скачок и кд у него не двигается. Не знаю почему, возможно что-то в статах не так. И броня в скобках (-1,42).
думаю может когда делаем "Назначение характеристик уровню" (2 скриншот) нужно добавить сначала 0 с опытом 0, а потом уже 10 и тд.
а блин дурак, есть такой пост, окей=)
Попробывал нифига, все равно застывает, но при этом уже пишет "Уровень 2". Хз че ему надо.
lentinant #12 - 9 years ago (изм. ) 1
Голосов: +1 / -0
На 1 заменяем
  • Time Scale
  • Movement Speed Multiplier
  • Acceleration Multiplier
  • Deceleration Multiplier
  • Snare Multiplier
  • Attack Speed Multiplier
  • Life Armor Multiplier
  • Shield Armor Multiplier
И на 160
  • Movement Speed Maximum (к слову, в русском эдиторе ошибка - там два поля макс скорости, хотя второе на самом деле отвечает за минимальную);
Такое делал? Это нужно в каждом повышении делать, иначе будет глюк с замиранием персонажа. Возможно, в нулевом и первом тоже. Во всяком случае, когда я писал статью, я думал, именно в этих коэффициентах проблема. Русские названия не помню, так как куда-то скрины запропастились.
А так, я не знаю, актуальна ли все еще статья, так как писалась она два с половиной года назад, еще на бэтке, и с того времени не обновлялась. Вдруг что-то поменялось. И вообще, я не думал, что эту статью кто-то сейчас читает. Но ты попробуй эту фишку.
Hares #13 - 9 years ago 0
Голосов: +0 / -0
А так, я не знаю, актуальна ли все еще статья, так как писалась она два с половиной года назад, еще на бэтке, и с того времени не обновлялась. Вдруг что-то поменялось. И вообще, я не думал, что эту статью кто-то сейчас читает. Но ты попробуй эту фишку.
Да. Ну, в большинстве рассматриваемых случаев.
CRYbit #14 - 9 years ago 0
Голосов: +0 / -0
Такое делал? Это нужно в каждом повышении делать, иначе будет глюк с замиранием персонажа. Возможно, в нулевом и первом тоже. Во всяком случае, когда я писал статью, я думал, именно в этих коэффициентах проблема. Русские названия не помню, так как куда-то скрины запропастились.
А так, я не знаю, актуальна ли все еще статья, так как писалась она два с половиной года назад, еще на бэтке, и с того времени не обновлялась. Вдруг что-то поменялось. И вообще, я не думал, что эту статью кто-то сейчас читает. Но ты попробуй эту фишку.
Да вот проблема что терь искать, у меня рус. Я не люблю инглиш редакторы ни вара, ни стара. Лан спс, буду переводить.
да и на что их заменять то эти пункты?
сделал, и ничего, все равно стоит
lentinant #15 - 9 years ago 0
Голосов: +0 / -0
Hares, не совсем понял, о чем ты.
CRYbit, тогда сорри, ничем не могу помочь. Если не помогли эти замены, тогда я даже не подозреваю, в чем может быть проблема. Тем более, что я вторым стариком уже два года как не занимаюсь.
Hares #16 - 9 years ago (изм. ) 0
Голосов: +0 / -0
lentinant, Статья всё ещё актуальна, я об этом. Я в соё время ею руководствовался.
Я постараюсь в ближайшую неделю-две её подредактировать (сейчас просто завален работой).
Харгард #17 - 9 years ago 0
Голосов: +0 / -0
CRYbit, теперь можно оперативно менять язык интерфейса редактора!
Файл/Настройка редактора/Общие/Регион
Правда надо будет следить, чтобы в Карта/Регион был выбран нужный тебе язык.
CRYbit #18 - 9 years ago (изм. ) 0
Голосов: +0 / -0
я немного по другому сделал и работает. Я создал "Стартовые характеристики" где указал своему герою "ловкачу" - аги 19, стренж 17 и интел 7, после в HeroLvl выбрал второй уровень, ниже там "Изменение атрибута" и добавил три характеристики, точки выставил так: аги 5, стр 3, инт 2, и каждый уровень так. В игре при получении уровня у героя были начальные параметры и с повышением уровня они увеличивались на 5, 3 и 2 как выше написал. Позже дам скриншоты если так не понятно.
не стал ждать=) вот
  1. создаем алгорит под начальные статы
  1. Жмем "модификация+" справа
дальше
Тут мы ставим начальные параметры
3.Тут уже открываем наш алгоритм получения опыта, и вот как на скрине
Можно на каждом лвле установить свое изменение параметра. Значения тут маленькие потому, что они суммируются с начальными.
Да и начальные статы нужно также добавить к герою в алгоритм как и АГИ,СТР и ИНТ. Если что не понятно пишите
Прикрепленные файлы