ImbaStyle, у каждого героя обычно 2-4 абилы с уроном, по 4 уровня (3*4 уровней). В картах редко бывает меньше 20 героев (3*4*20 = 240 уровней). Ты предлагаешь ради одной способности создать по меньшей 240 дополнительных уровней других способностей? Откуда такие гениальные идеи?
Делаем один таймер и пару параллельных массивов (юниты и оставшееся время действия), таймером чекаем с низким периодом оставшееся время и уменьшаем его на период.
Логика работы описана в коде ниже, я не стал переделывать под конкретный случай (хотя внёс пару доп. комментов), всё и так понятно.
код ниже
library StunUnit // initializer Init
{
private timer periodicTimer = CreateTimer() // Can be replaced with main map timer
private unit unitsStack[]
private effect effectsStack[] // Stun effect storage (в данном случае это не нужно)
private float timeRemaining[] // Time of stun left
private int stackCounter = 0
#define private TICK_PERIOD = 0.05
#define private STACK_LIMIT = 8190
#define private STUN_EFFECT = "Abilities\\Spells\\Human\\Thunderclap\\ThunderclapTarget.mdl" // и это не нужно
#define private ORDERID_STOP = 0xD0004 // и вот это
// Looking for id of specified unit in stack
private int StackSearch(unit givenUnit) {
int i = -1;
while(i++ < stackCounter) {
if (givenUnit == unitsStack[i]) {
return i;
}
}
return -1;
}
// Add unit to stack with overflow check
private void StackPush(unit givenUnit, float duration) {
if(stackCounter < STACK_LIMIT) {
unitsStack [stackCounter] = givenUnit;
effectsStack [stackCounter] = AddSpecialEffectTarget(STUN_EFFECT, givenUnit, "overhead");
timeRemaining[stackCounter] = duration;
stackCounter++;
} else {
BJDebugMsg("Stunned units stack overflow!");
}
}
// Remove unit from stack
private void StackPop(int id) {
DestroyEffect(effectsStack[id]);
stackCounter--;
unitsStack [id] = unitsStack [stackCounter];
effectsStack [id] = effectsStack [stackCounter];
timeRemaining[id] = timeRemaining[stackCounter];
unitsStack [stackCounter] = null;
effectsStack [stackCounter] = null;
timeRemaining[stackCounter] = 0.0;
}
void StunUnit(unit givenUnit, float duration) {
int stackedUnitId = StackSearch(givenUnit);
if (stackedUnitId == -1) {
StackPush(givenUnit, duration);
} elseif (timeRemaining[stackedUnitId] < duration) {
timeRemaining[stackedUnitId] = duration;
}
}
private void TimerCallback() {
int i = -1;
while(i++ < stackCounter) {
timeRemaining[i] -= TICK_PERIOD;
IssueImmediateOrderById(unitsStack[i], ORDERID_STOP);
if (timeRemaining[i] <= 0.0) {
StackPop(i);
}
}
}
private void Init() {
TimerStart(periodicTimer, TICK_PERIOD, true, function TimerCallback);
}
}
Вот так всегда короче, делаешь свою мобу, дизайнишь чаров/UI/монетизацию, всё классно, трафик есть, игра успешна, а потом оп! - и ты дизайнишь чара на каком-то старом неудобном сайте, а тебя судит старый товарищ, которому когда-то давно давал всякие советы по геймдизайну в обмен на советы по коду...
old stuff, u'know (=
7.00
Ох, блин, точно! Там ещё и перки надо будет придумать же!
Не хочу никого задеть, но концепция сильно так себе, баланс именно проверяют, собирают статистику, тестируют различные решения итд. Нельзя просто глянуть, оценить и преуспеть, максимум это может служить отправной точкой для начала тестирования.
суровый «антипатерн» легко выявить и оценить.
На самом деле, не очень, если речь касается Sc2. Некоторые вещи там выглядят адовыми костылями, а по факту сделаны по гайдлайнам самих близов и всё там правильно.
Ну и можно ск2 и вц3 в теги добавить ещё, но это такое
Сейчас возможно двоякое толкование, отметил синими комментами:
(карты wc3/sc2 если вы не владеете редактором Dota 2)
Что будет оцениваться:
Как герой вписывается в игру (сетинг, история, актуальность, оригинальность)
под "в игру" можно понять и ск2, и вц3, и доту2. Ещё и соотнести пункт выбранному движку можно
Техническая реализация
в доте луа, который принципиально отличается от вц3/ск2 с их строгой типизацией, отсюда вопрос: техническая реализация относительно каких реалиев? дота2? вц3? ск2? как это будет реализовано? в ск2 скилы могут быть ровным слоем размазаны по всем вкладкам редактора, и, пусть я и очень уважаю Doc, он, как мне кажется, может оказаться не в состоянии проверить какой-нибудь дикий спел в Ск2 на предмет "технической реализации"
Визуальное исполнение эффектов
Баланс относительно других героев
героев в доте? только дота2? герой будет портироваться для тестов? если нет, то как будет проверяться баланс?
Ведение WIP (work in progress) в блоге автора героя
Хотелось бы увидеть гайдлайны по героям, которые будут делаться в Wc3 или Sc2. Если все указанные требования относятся в равной мере ко всем трём играм, то будет уместным это уточнить в тексте.
Будут ли герои, выполненные в D2, иметь какие-нибудь преимущества при судействе? А на Sc2 перед Wc3?
у моего проекта есть только 1 Гб на хранение файлов
Постараюсь оперативно что-нибудь на этот счёт сделать вынужденная мера, были персонажи, использовавшие XGM в качестве бездонной файлопомойки
некоторые кампании весят больше 100 Мб, и загрузить их на сайт невозможно
Насколько мне известно, этот вопрос поднимался, и ограничение будет снято или расширено, на всякий случай тоже уточню
Вообще, не очень хорошая ситуация получилась, приношу свои извинения, если какое-нибудь моё высказывание оказалось чрезмерно резким или агрессивным.
Сам проект мне исключительно симпатичен, это достаточно большая работа, заслуживающая уважения.
Скажите честно, сайту просто выгодно, если материал публикуется таким образом, да?
Вроде как никем не скрывается, что сайт не приносит никакого статистически значимого дохода даже не на самоокупаемости
Дело совершенно не в "выгоде", на самом деле. У сайта есть ряд проблем, но в их числе никогда не было проблемы с потерянными файлами, если кому-нибудь захочется найти ресурс (страничку/обсуждение, whatever), к которому был прикреплён файл, ныне потерянный, то его ждёт фиаско. Исключение как раз составляет несколько страниц, на которых ссылка вела на сторонние сервисы, и такие вещи обычно ужасно раздражают или расстраивают.
TL;DR: нет, никакой выгоды сайту это не несёт. Основная цель - поддержание репутации надёжного источника ресурсов по варкрафту, но это не приносит дохода само по себе
В ином случае я просто не понимаю, зачем вы это сделали.
Если существует разумный аргумент против размещения файла в хранилище сайта, то можно просто его написать. Окажется существенным - никто никаких дополнительных препятствий ставить не будет, и всё откачу обратно. Замечу, что "это не имеет смысла" таковым не является
Этим весомым аргументом стоило ответить с самого начала, а не провоцировать конфликт, выдавая своё личное мнение за официальную позицию разработчиков Warcraft 3.
Выбирать худший вариант в угоду версии перевода из другой игры - такое себе решение.
Что "Мэв" звучит заметно адекватнее, чем "Майев", что "Фростморн" куда как элегантнее "ЛЕДЯНОЙ СКОРБИ", что "Леди Вайши" благозвучнее "Леди Вайш".
перевод имен/терминов как в Warcraft 3 нигде, кроме, собственно, Warcraft 3, не используется.
По необычайному стечению обстоятельств обсуждаемая кампания как раз предназначена для Warcraft 3, чей официальный (более того - единственный существующий) перевод оказался отброшен.
Отнюдь.
Никто не требует выпилить ссылку на я.диск, однако практика неоднократно показывала, что в отличии от вечно хранящихся ресурсов на сайте, ресурсы в облаках и файлообменниках периодически пропадают из доступа. Если не тяжело, просто залей актуальную на сейчас версию на сайт, а напротив ссылки на диск можно подписать "Всегда самая актуальная версия"
» WarCraft 3 / Как сделать урон заклинаний на 60% слабее?
Ред. Clamp
» WarCraft 3 / Предметы - Осколки
» WarCraft 3 / Как сделать урон заклинаний на 60% слабее?
» WarCraft 3 / Как вывести атаку в строку
Мемхак на чтение близы вроде как не выпилят, но ятп будут нативки на эту тему.
» WarCraft 3 / Что из себя представляет TriggerAddAction?
Ред. Clamp
» WarCraft 3 / Конфликт нескольких таймеров для юнита
Логика работы описана в коде ниже, я не стал переделывать под конкретный случай (хотя внёс пару доп. комментов), всё и так понятно.
» WarCraft 3 / Что из себя представляет TriggerAddAction?
» Dota 2 / Конкурс героев для Dota 2
Моба там, надо признать, так себе вышла (хотя чары кайфовые, но не в д2 стиле явно, скорее к лолу больше).
» Dota 2 / Конкурс героев для Dota 2
» Dota 2 / Конкурс героев для Dota 2
Ред. Clamp
» Dota 2 / Конкурс героев для Dota 2
Подожду коммента Дока на тему "не в доте = -10% баллов", если опровергнет, то не буду Lua глядеть =)
» Dota 2 / Конкурс героев для Dota 2
» Dota 2 / Конкурс героев для Dota 2
Ред. Clamp
» Dota 2 / Конкурс героев для Dota 2
» Dota 2 / Конкурс героев для Dota 2
Будут ли герои, выполненные в D2, иметь какие-нибудь преимущества при судействе? А на Sc2 перед Wc3?
Ред. Clamp
» Мастерская переводов | Кампании WC3 на русском / Тени Ненависти
Сам проект мне исключительно симпатичен, это достаточно большая работа, заслуживающая уважения.
Ред. Clamp
» Мастерская переводов | Кампании WC3 на русском / Тени Ненависти
Дело совершенно не в "выгоде", на самом деле. У сайта есть ряд проблем, но в их числе никогда не было проблемы с потерянными файлами, если кому-нибудь захочется найти ресурс (страничку/обсуждение, whatever), к которому был прикреплён файл, ныне потерянный, то его ждёт фиаско. Исключение как раз составляет несколько страниц, на которых ссылка вела на сторонние сервисы, и такие вещи обычно ужасно раздражают или расстраивают.
Замечу, что "это не имеет смысла" таковым не является
Ред. Clamp
» Мастерская переводов | Кампании WC3 на русском / Тени Ненависти
Ред. Clamp
» Мастерская переводов | Кампании WC3 на русском / Тени Ненависти
Что "Мэв" звучит заметно адекватнее, чем "Майев", что "Фростморн" куда как элегантнее "ЛЕДЯНОЙ СКОРБИ", что "Леди Вайши" благозвучнее "Леди Вайш".
Ред. Clamp
» Мастерская переводов | Кампании WC3 на русском / Тени Ненависти
Ред. Clamp
» WarCraft 3 / "Игрушечный замок"
» WarCraft 3 / где скачать сеьёзные карты?
Из РПГ с крутыми системами советую Dark Invasion 2
» StarCraft / StarCraft Remastered