Game Maker - создание игр | HellRoom Games
Июль 12, 2025, 12:53:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Alarms - таймеры обратного отсчета (в кадрах)  (Прочитано 6387 раз)
0 Пользователей и 1 Гость смотрят эту тему.
YellowAfterlife
Videogames, I'm afraid
Главный Модератор
*

Репутация: 440
Offline Offline

Пол: Мужской
Награды:
Добавление и перевод новостей о Game Maker!500 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+300 репутации]Настоящий игродел!Знаток Game Maker!...
API: GameMaker Studio 2
Сообщений: 731



WWW
« : Октябрь 30, 2011, 16:07:36 »

Это простое расширение добавляет активируемые "по запросу" для таймеров в стиле GM (alarm[n]) в Tululoo.

Оно содержит следующие функции:
alarm_init(instance, count) - инициализирует таймеры для объекта instance, создавая count of them. Если count не указан, будет выставлен на 8.
alarm_step() - производит события шага для таймеров (уменьшает alarm[] значения и выполняет действия если это нужно)
После вызова функции alarm_init, для объекта будут доступны следующие переменные:
alarm[index] - количество шагов до выполнения таймера с индексом index. Значение -1 указывает что таймер выключен.
alarm_act[index] - функция, которая будет выполнятся по истечению указанного таймера

Пример использования:
Creation event:
Код:
alarm_init(this);
alarm_act[0] = function() {
    x += 32;
    alarm[0] = 30;
};
alarm[0] = 30;
Step event:
Код:
alarm_step();
Результат: объект будет двигаться на 32 пикселя вправо каждые 30 кадров

* Alarms.tex (1.08 Кб - загружено 620 раз.)
Записан

VladTheCat
Немного
GM Pro user
*

Репутация: 145
Offline Offline

Пол: Мужской
Награды:
1000 сообщений!За постоянность! [100 дней на форуме]Настоящий игродел!
API: Love
Деятельность: Целая игростудия, состоящая из одного кота.
Сообщений: 1435



« Ответ #1 : Октябрь 30, 2011, 16:49:10 »

Полезная вещь  . Спасибо большое.

Добавлено: Ноябрь 06, 2011, 18:16:05
А для чего кстати после alarm_act[0] стоит function()?
« Последнее редактирование: Ноябрь 06, 2011, 18:16:05 от VladC@t » Записан


Будьте вежливы: Вам помогли? Не забудьте поставить плюс. А то банда злобных апельсинов придет за вами. И даже тех. поддержка вам не поможет. :3

Когда я что-то пишу в "<>", то это значит, что содержимое надо заменить на свое значение.
Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #2 : Ноябрь 22, 2011, 17:48:42 »

За что отвечает аргумент count в функции alarm_init(instance, count)? Я правильно понял что это количество алармов (максимальный индекс)? Если нет, то какой максимальный индекс аларма (сколько можно создавать алармов)?
Записан

YellowAfterlife
Videogames, I'm afraid
Главный Модератор
*

Репутация: 440
Offline Offline

Пол: Мужской
Награды:
Добавление и перевод новостей о Game Maker!500 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+300 репутации]Настоящий игродел!Знаток Game Maker!...
API: GameMaker Studio 2
Сообщений: 731



WWW
« Ответ #3 : Ноябрь 22, 2011, 21:11:21 »

Аргумент count правда отвечает за максимальное количество алармов. Его значения ограничены лишь количеством доступной памяти. По умолчанию 8.

function() {} является "вложенной" функцией, т.е. функция события создается вместе с объектом.
Записан

Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #4 : Ноябрь 23, 2011, 23:28:57 »

Столкнулся с проблемой запуска аларма одного объекта из другого. Например есть два объекта; obj_01 и obj_02. У obj_01 создается alarm[0]. Нужно установить этот аларм на 60 из другого объекта. Код
Код: (у объекта obj_02)
with(obj_01)
{
alarm[0] = 60;
};
не работает. Как решить проблему? Может быть есть какие-то особенности?
Записан

YellowAfterlife
Videogames, I'm afraid
Главный Модератор
*

Репутация: 440
Offline Offline

Пол: Мужской
Награды:
Добавление и перевод новостей о Game Maker!500 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+300 репутации]Настоящий игродел!Знаток Game Maker!...
API: GameMaker Studio 2
Сообщений: 731



WWW
« Ответ #5 : Ноябрь 24, 2011, 00:11:47 »

Столкнулся с проблемой запуска аларма одного объекта из другого. Например есть два объекта; obj_01 и obj_02. У obj_01 создается alarm[0]. Нужно установить этот аларм на 60 из другого объекта. Код
Код: (у объекта obj_02)
with(obj_01)
{
alarm[0] = 60;
};
не работает. Как решить проблему? Может быть есть какие-то особенности?
Код:
obj_02s = instance_list(obj_02); // получаем массив с всеми объектами нужного типа
for (var i = 0; i < obj_02s.length; i++) with (obj_02s[i]) { // проходим по ним
    alarm[0] = 60; // устанавливаем alarm
} // тут ставить ; не обязательно
Записан

Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #6 : Ноябрь 24, 2011, 10:34:25 »

Такой вариант не работает, нужно чуть-чуть по другому (наверное просто пропустил):

Код:
obj_02s = instance_list(obj_02); // получаем массив с всеми объектами нужного типа
for (var i = 0; i < obj_02s.length; i++) { // проходим по ним
    obj_02s[i].alarm[0] = 60; // устанавливаем alarm
} // тут ставить ; не обязательно

А если в комнате предусмотрен только один экземпляр (в моем случае это контролер) то достаточно будет так:
Код:
obj_02s = instance_list(obj_02); // получаем массив с всеми объектами нужного типа (в данном случае тут будет только один элемент)
    obj_02s[0].alarm[0] = 60; // устанавливаем alarm

Спасибо за ответ.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.105 секунд. Запросов: 30.