Ошибка при компиляции указывает на то, что 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. Учи матчасть.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
15
J64_, почему-то лямбда не компилируется (критическая ошибка), а с thistype, я так понимаю нужно сделать finish статическим методом? Я сделал, но теперь ругается на this (не объявлена).
29
Audes, обработчик таймера должен быть статичной функцией и соотвественно в них нельзя использовать this. Учи матчасть.
Принятый ответ
28
Audes, в статьях про это говорилось раз 100
обработчик статик должен быть
и вместо того чтобы создавать по таймеру для каждого объекта лучше создать 1 таймер и им обрабатывать список объектов
хотя вместо списка можно юзать массив без нулевых элементов
29
nvc123, а ты об этом, просто я когда читал твой комментарий, список объектов, у меня сразу же асоцииинровался с массивом.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.