XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
Не хочет создавать массив code.
В общем,нужно сделать систему,в которую можно передавать функцию,которая будет должна исполняться в определенный момент,при этом эта функция всегда разная,т.е я должен ее передавать в качестве аргумента.
Но,когда я попытался сделать эту систему MUI(чтобы можно было сразу использовать нескольким юнитам),то мне сказало,что нельзя создавать массивы переменных типа code.Как тогда сделать то,что мне нужно в данном случае?(Каким-то образом иметь возможность изменять функцию,которая будет вызываться в последний момент.)
Склоняюсь с impletment( if (thistype.myFunc.exits) then вызывать эту функцию else не делать ничего),
но мне не прельщает тот факт,что этот модуль просто копирует отдельные части кода в каждую структуру,в которую я его суну,а это не очень хороший ход.
Как быть?
Старый 04.05.2012, 20:14
Hate
конь вакуумный
offline
Опыт: 43,117
Активность:
разве есть тип данных code?)...
и скажи что именно ты там пытаешься муи сделать... мб не надо таких танцев с бубнами как ты описал
Старый 04.05.2012, 20:18
Doc

offline
Опыт: 63,163
Активность:
Нельзя создавать массив code.
Можно создавать массив таймеров, boolexpr, в общем того, что хранит code.
Старый 04.05.2012, 20:19
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
Итак,я хочу сделать систему движения,которая будет выполнять определенную функцию после окончания движения,тоесть:
struct Move
timer t;
MoveUnit array units[100]
integer count;
nothing Create(unit u,code onEnd)
{
	if(t == null)
	{
	t = CreateTimer();
	TimerStart(t,0.03,true,onTick);
	}
count++;
units[count] = MoveUnit.create(); //Тут создаем класс движущегося объекта(там содержится информация о дальности,угле,скорости и тд)
}

nothing onTick()
{
//Вот тут вот действия,и если задача одного из движущихся объектов выполняется,то должна выполниться функция onEnd.
}

endstruct
Как это реализовать?Я думал,чтобы в структуре MoveUnit содержалась функция,которая должна быть исполнена,но так нельзя,как тогда?
Старый 04.05.2012, 20:41
Hate
конь вакуумный
offline
Опыт: 43,117
Активность:
а вызов другой функции из этой не катит?
Старый 04.05.2012, 20:49
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
Hatsume_Hate:
а вызов другой функции из этой не катит?
Не очень понял,как мне это поможет?
Мне же и нужно в конце концов из onTick вызвать нужную функцию,которая предварительно передается через переменную onEnd.
Старый 04.05.2012, 21:01
prog

offline
Опыт: 32,865
Активность:
Windrunner, часто для этих целей пользуются ExecuteFunc и TriggerEvaluate
Старый 04.05.2012, 21:09
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
Все понял,идея,в общем-то хорошая,но есть один минус - если пользоваться ExecuteFunc,то придется настоящие имена функций из библиотек/структур вручную писать.И другой,более важный вопрос - как при помощи ExecuteFunc передавать нужные данные?

Отредактировано Windrunner, 04.05.2012 в 21:36.
Старый 04.05.2012, 21:10
ScorpioT1000
Работаем
offline
Опыт: отключен
Старый 04.05.2012, 21:50
Windrunner
Верь мне!
offline
Опыт: 4,565
Активность:
Так и думал,ладно,спасибо,тогда,если можно,последний вопрос,чтобы новую тему уж не создвать:
struct something
{
timer t;
nothing onTick()
{
//something
}

nothing Create()
{
t = CreateTimer();
TimerStart(t,0.03,true,onTick); //Выдает ошибку.Что onTick принимает значение integer.
}

}
Как тут все сделать?Если использовать static,то проблема вроде исправляется,но тогда нельзя использовать переменные этой структуры.
Старый 04.05.2012, 22:21
ScorpioT1000
Работаем
offline
Опыт: отключен
и не получится, только статик. ищи про "аттачи" и хеш. Это действительно другая тема
Старый 04.05.2012, 22:30
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 01:54.