Суббота, 23.09.2017, 17:45
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Разработка игр » Вопросы по game maker » Переменная жизней, связанная с временем
Переменная жизней, связанная с временем
Demen_GoДата: Пятница, 10.03.2017, 22:45 | Сообщение # 1
Заглянувший
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
Привет!Друг спросил меня: "Как можно сделать так, чтобы когда заходилось в комнату (Неважно какую), в этой комнате убавлялось каждую секунду   по единице жизней? А при выходе из этой комнаты жизни не восстанавливались?" Я лишь подумал про таймлайн, но потом "Да не, бред какой-то" и теперь пишу сюда, помогите пожалуйста
 
никитаДата: Суббота, 11.03.2017, 12:55 | Сообщение # 2
Мастер
Группа: Модераторы
Сообщений: 543
Награды: 0
Репутация: 51
Статус: Offline
Таймеры. В событии create либо room_start создаешь переменную, отвечающую за жизни (ниже будет код, который будет не только устанавливать начальное значение жизням, но и загружать их из файла), и запускаешь таймер alarm[0] = 20 (20 шагов = 1 секунда). В самом событии таймера прописываешь:

Код
lives -= 1;
if(lives > 0)
    alarm[0] = 20;
else
    game_end(); //Тут может быть любой код, отвечающий за то, что делать в случае, когда жизний не осталось
Чтобы жизни сохранялись при выходе из комнаты, нужно записать их значение в файл. Добавляешь в событие, которое отвечает за окночание игры или переход в следующую комнату следующий код:

Код
f = file_text_open_write("game.dat");
file_text_write_real(f, lives);
file_text_close(f);
Потом, при загрузке следующией комнаты либо перезапуске игры, можно загружать это значение:

Код
file = "game.dat";
if(file_exists(file)) { //Проверка нужна, чтобы не было ошибки, если файла не существует
    f = file_text_open_read("game.dat");
    lives = file_text_read_real(f); //Считываем значение из файла и записываем его в lives
    file_text_close(f);
} else {
    lives = 100; //Если же файла не существует (т.е. игра еще ни разу не была запущена), мы присваиваем этой переменной начальное значение
}
Если тебе не нужно, чтобы жизни загружались из файла при перезапуске игры, то ты можешь просто сделать объект, хранящий в себе переменную lives, постоянным. Я не очень приветствую эту возможность, т.к. потом тебе будет не очень удобно работать с этим объектом.


ВАСЕЧКА - Попугай
 
XomafokДата: Суббота, 11.03.2017, 14:28 | Сообщение # 3
Известен под логином VS games
Группа: Постоянный
Сообщений: 954
Награды: 2
Репутация: 168
Статус: Offline
По всей карте поставить обьекты которые будут убирать по одному хп.
 
baryhaliveДата: Понедельник, 13.03.2017, 19:37 | Сообщение # 4
Master CS1.6
Группа: Пользователи
Сообщений: 119
Награды: 0
Репутация: 3
Статус: Offline
Цитата Xomafok ()
По всей карте поставить обьекты которые будут убирать по одному хп.
biggrin ахахахахахах)

Добавлено (13.03.2017, 19:37)
---------------------------------------------
для этого точно нужны алармы
потому что если расставить объекты(без алармов) то хп не через 1 сек убираться будет, а сразу отниметься сколько поставил хп, а дальше здоровья(жизни и здоровья разные вещи) будет оставаться на месте.


http://massgaming.at.ua/
 
Форум » Разработка игр » Вопросы по game maker » Переменная жизней, связанная с временем
Страница 1 из 11
Поиск: