Добавлен Audes
Ошибка при компиляции указывает на то, что Finish не объявлена. Выносил я её из структуры, но и тогда находились странные ошибки, типа незакрытой скобки в таймере.
struct Dmg
{
unit u,c;
float dmg = 75.;
timer t = CreateTimer();
void Finish() {
UnitDamageTarget(c,u,dmg,false,false,null,null,null);
DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Invisibility\\InvisibilityTarget.mdl",u,"origin"));
}
void Start (unit target, unit caster) {
u = target;
c = caster;
TimerStart(t,3000.,false,function Finish);
}
}
Принятый ответ
Audes, обработчик таймера должен быть статичной функцией и соотвественно в них нельзя использовать this. Учи матчасть.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Можно также использовать лямда функцию:
TimerStart(t,3000.,false, lambda (){
здесь тело функции finish
});
обработчик статик должен быть
и вместо того чтобы создавать по таймеру для каждого объекта лучше создать 1 таймер и им обрабатывать список объектов
хотя вместо списка можно юзать массив без нулевых элементов
Отредактирован alexprey
ссылка