Несколько_фишек

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Ресурсы (графика, звук, музыка, DLL, Script'ы и Библиотеки) / Несколько_фишек

Страницы: 1 2 Next>> новая тема

Автор Сообщение

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 22-05-2006 19:08
Здесь представлены некоторые скрипты, типа как сделать паузу, нормально сохранять игру, и т.п.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 22-05-2006 19:25
Где представлены?

мастер
Группа: Сообщество GM
Сообщений: 88
Добавлено: 22-05-2006 21:45
Здесь представлены некоторые скрипты, типа как сделать паузу, нормально сохранять игру, и т.п.

Где представлены?




Он наверное вот это имел ввиду Для нюберов...

Просматриваем кино-ролик...
show_video('YOUR_MOVIE.AVI, true, false)
Делаем mp3 проигрыватель...
global.mplayer = get_open_filename('file(*.mp3)|*.mp3','')
Теперь проигрываем файл:
show_video(global.mplayer,false,0)
Запускаем другую программу на выполнение:
{
execute_shell('program_name.exe',0)
}
Делаем скрин-шот экрана и сохраняем его:
{
screen_save("PG5.bmp");
// следующий фрагмент кода, лишь открывает файл в MSPaint, если
// Вам этого не надо, тогда не включайте этот фрагмент в код
file_open_read("PG5.bmp")
execute_shell("mspaint.exe","/p PG5.bmp");
file_close()
}
Учим главного героя подпрыгивать. Поместите этот код в сценарий:
{
gravity_direction = 270;
if place_free(x,y+1)
gravity = 0.5;
else
gravity = 0;
if (vspeed > 12) vspeed = 12;
}
Теперь, в событии для клавиши "UP" объекта главного персонажа, поместите код:
{
if (not_place_free(x,y+1)) vspeed = -10
}
Переместить куда-нибудь нашего главного героя:
move_towards_point(x,y,sp)
Значение x определяет позицию по координате X, y позицию по координате Y, а sp определяет скорость.

Отобразить изображение:
show_image(name_of_image_file,fullscreen,delay)

Я снова имею честь предожить Вашему вниманию еще несколько избранных фрагментов кода для Game Maker, взятых мною из разных мест, некоторые сделал лично я.

[ Код 'Пауза в игре' ]
{
// запомнить текущие значения
__font_color = font_color;
__font_size = font_size;
__font_style = font_style;
__font_name = font_name;
__font_align = font_align;
// нарисовать текст, перерисовать экран и ждать
font_color = argument0;
font_size = 16;
font_style = fs_bold;
font_name = 'Arial';
font_align = fa_center;
draw_text(screen_width/2,100,'Пауза. Нажмите любую клавишу.');
screen_refresh();
keyboard_wait();
io_clear();
// восстановить установки
font_color = __font_color;
font_size = __font_size;
font_style = __font_style;
font_name = __font_name;
font_align = __font_align;
}
[ Заставить объект следовать за мышью ]
{
ball.x=mouse_x
ball.y=mouse_y
}
* Замените (ball) иным объектом.

[ Беспорядочное Появление Объектов ]
repeat (5) instance_create(random(400),random(400),ball);
* Снова, замените (ball) любым объектом.

[ Что-то происходит при нажатии Клавиатуры ]
if keyboard_check(vk_control)&&keyboard_check(vk_alt)
{
instance_create(x,y,bullet);
}
* Этот код создает объект пули, при нажатии клавиш Alt и Ctrl.

[ Загрузить Фоновое изображение ]
{
fname=get_open_filename('BMP files(*.BMP)*.BMP','')
background_replace(fname,DBG);
}
[ Открыть видео ]
{
fname = get_open_filename('file(*.avi)|*.avi','')
show_video(fname,false,0);
}
[ Создать Файлы Сохранения ]
{
SaveAs = get_save_filename('Saved Games *.sav|*.sav','Untitled.sav');
mouse_clear(mb_left);
if (file_exists(SaveAs))
{
if not(show_question('Warning!'+chr(13)+SaveAs+' Already exists!'+chr(13)+'Do you want to overwrite it?'))
{
mouse_clear(mb_left);
exit;
}
}
game_save(SaveAs);
}
[ Команды Печати ]
{
if (show_question("Напечатай вопрос прямо здесь "))
{
file_open_write("file.txt");
file_write_string("Page");
file_writeln();
file_write_string("Напечатайте то что хотите ");
file_writeln();file_writeln();file_writeln();file_writeln();
file_writeln();file_writeln();file_writeln();file_writeln();
file_write_string("");
file_close();
execute_shell("C:\WINDOWS\NOTEPAD.EXE","/p file.txt");
}
}

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 24-05-2006 11:04
ВОТ. Что раньше не писал – SORRY!!! Бабки на инете кончились.
Несколько фишек.

Сохранение игры.
Sg = "";
Sg = get_save_filename("Файлы игр (*.sav)|*.sav", "game.sav");
if (Sg = "") {exit}
if not (string_copy(Sg, string_length(Sg) - 3, 4) = ".sav")
{
Sg = Sg + ".sav";
}
game_save(Sg);

Загрузка
Lg = "";
Lg = get_open_filename("Файлы игр (*.sav)|*.sav", "game.sav");
if Lg = "" {exit}
if (file_exists(Lg))
{
game_load(Lg);
}

Пауза (не работает в 3д режиме)

draw_set_font(Здесь ввести шрифт);
draw_set_color(c_red);
draw_set_halign(fa_center);
draw_text(320,100, 'Пауза. Нажмите любую клавишу.');
screen_refresh();
keyboard_wait();
io_clear();

Рисует количество патронов.



{
//Аргумент0-количество пулей
//Аргумент1-спрайт
//Аргумент2-х
//Аргумент3-у
//Аргумент4-ширина спрайта
var abc, ttt;
abc=argument0;
repeat(argument0) {draw_sprite(argument1,-1,argument2+
(abc-1)*argument4,argument3); abc-=1}
}

Как лучше всего сделать так, чтобы для каждого уровня игралась разная музыка?
В свойствах комнаты в разделе Settings в Creation Code написать: global.mus=music1
(к примеру) и создать объект obj_music и там, в событии Create написать код
{
sound_loop(global.mus);
}

Это удобно!!!

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 24-05-2006 11:04
Кто знает, как сделать нормальную паузу в 3д режиме?

маэстро
Группа: Сообщество GM
Сообщений: 501
Добавлено: 24-05-2006 19:29
Я знаю,а какую надо?

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 25-05-2006 04:35
Кто знает, как сделать нормальную паузу в 3д режиме?

Так же как и в 2Д режиме - сохраняем экран как бэкграунд, ставим конате persistent, выключаем 3Д, переходим в другую комнату, там как фон ставим только что сделанный скрин, пмшем на весь экран "ПАУЗА", ждём нажатия кнопки, включаем 3Д переходим в следующую комнату, снимаем persistent.
Примечания:
1) операции в persistent только в том случае, если изначально не было такой установки
2) Переход осуществляется между игровой комнатой и комнатой Паузы.
3)Мозданный бэкграунд должен быть глобальным, т.е. global.bk=background_create_from_screen(...)
4) Придумай, как зделать красивую заставку на пазу - у каждого она своя.

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 26-05-2006 14:57
Он наверное вот это имел ввиду Для нюберов...

[ Код 'Пауза в игре' ]
{
// запомнить текущие значения
__font_color = font_color;
__font_size = font_size;
__font_style = font_style;
__font_name = font_name;
__font_align = font_align;
// нарисовать текст, перерисовать экран и ждать
font_color = argument0;
font_size = 16;
font_style = fs_bold;
font_name = 'Arial';
font_align = fa_center;
draw_text(screen_width/2,100,'Пауза. Нажмите любую клавишу.');
screen_refresh();
keyboard_wait();
io_clear();
// восстановить установки
font_color = __font_color;
font_size = __font_size;
font_style = __font_style;
font_name = __font_name;
font_align = __font_align;
}


такая пауза работает только в Гейм Мейкер 5, в шестом там просто таких команд нет - font_color, font_size и т.п.

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 26-05-2006 14:59
Кто знает, как сделать нормальную паузу в 3д режиме?

Так же как и в 2Д режиме - сохраняем экран как бэкграунд, ставим конате persistent, выключаем 3Д, переходим в другую комнату, там как фон ставим только что сделанный скрин, пмшем на весь экран "ПАУЗА", ждём нажатия кнопки, включаем 3Д переходим в следующую комнату, снимаем persistent.
Примечания:
1) операции в persistent только в том случае, если изначально не было такой установки
2) Переход осуществляется между игровой комнатой и комнатой Паузы.
3)Мозданный бэкграунд должен быть глобальным, т.е. global.bk=background_create_from_screen(...)
4) Придумай, как зделать красивую заставку на пазу - у каждого она своя.


Спасибо, мне именно это и надо было!!!

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 26-05-2006 21:33
Я попробовал, чё-то фигово у меня работает - на скриншоте откуда ни возьмись появляются странные полосы.
А как только persistent снимаешь, все объекты возвращаются на старые места


Можно ли где-нибудь пример скачать?

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 27-05-2006 19:58
Persistent Снимаем после перехода в комнату игры,а не до, так же и 3Д выключаем до перехода в комнату паузы и включаем после перехода.
Наверное у тебя ГМ глючет. случайно не 6.0 ли версия?

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 28-05-2006 09:17
Persistent Снимаем после перехода в комнату игры,а не до, так же и 3Д выключаем до перехода в комнату паузы и включаем после перехода.
Наверное у тебя ГМ глючет. случайно не 6.0 ли версия?
\

Нет у меня 6.1. Спасибо. Теперь все работает.

А странные полосы - это были стены, вид 3д комнаты сверху

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 28-05-2006 20:00
Создать что ли тему про ньюансы в ГМ? Или же эту изгадить? Вроде для темы ньюансы подходит.

Вот несколько важных замечаний:
1) Если вы пишите при создании объектов так:
iii=instance_create(x,y,obj)
iii.xx=x+5, и в событии создания объекта obj наисанно, что xx=240, то xx будет равно значению которое мы присваиваем с помощью индексирования, т.е:
iii=instance_create(x,y,obj) - создаём объект, здесь выполняеится событие создания для него
iii.xx=x+5 - присваиваем этому объекта новое значение.
Однако нужно учесть, что если вы пользуетесь creation code для объектов в комнатах, то такой трюк не пройдёт, т.е. если вы хотите назначить ему какой либо параметр, то нужно, чтобы он не был описан в событии create этого объекта.
2) В событии Draw, рисование происходит наложением, т.е. первое нарисованное будет лежать в самом низу, второе выше и т.д. важно учесть, что рисование происходит через кривое место и лучше в этом событии не ставить счётные операции. При использовании события рисования спрайт объекта по умолчанию не отображается, т.е если нужно нарисовать спрайт, то вам придётся делать это самим.
3) После функции instance_destroy() при использовании перетаскивания иконок не должны стоять другие функции - они не сработают, однако еслы это сделать с помощью кода, то всё раотает.
4) С загрузкой спрайтов из файлов нужно быть осторожным: если комната Persistent, вы загрузили спрайты из файла и сохранились, то спрайты не сохранятся и их не будет видно. НЕ ДЕЛАЙТЕ ТАК НИКОГДА!!!

Мог бы ещё кой чего написать, только всё сразу не вспомню. НО всем скажу, чтобы ВЫ следили за последовательностью действий в ГМ - это очень важно, если вы хотите добится хороших результатов в программировании на ГМ.

магистр
Группа: Сообщество GM
Сообщений: 462
Добавлено: 29-05-2006 20:35
паузу легче можно делать. Надо только во все параметры вводить коэффициент скорости. Тогда не только можно примочки матрицы делать (замедлить все в 2 раза, не через ФПС а через коэффициент), но и вообще все заморозить

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 22-06-2006 21:22
А почему это в Draw вычисления плохие?
Мне логически бы доказать?

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 23-06-2006 03:24
Можно и в доав ставить, но только это будет происходить в самом конце, т.к. событие рисования выполняется самым последним.

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 26-06-2006 22:38
Ну и что тут плохого? Всмысле рисую я вектор, мудовым процессом, мне же не ставить вычисления в степу, а потом использовать полученное в драве?

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 02-07-2006 14:36
паузу легче можно делать. Надо только во все параметры вводить коэффициент скорости. Тогда не только можно примочки матрицы делать (замедлить все в 2 раза, не через ФПС а через коэффициент), но и вообще все заморозить

По-моему, таким способом нельзя сделать так, чтоб в паузе были кнопки: загрузить, сохранить...

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 08-07-2006 14:46
паузу легче можно делать. Надо только во все параметры вводить коэффициент скорости. Тогда не только можно примочки матрицы делать (замедлить все в 2 раза, не через ФПС а через коэффициент), но и вообще все заморозить

По-моему, таким способом нельзя сделать так, чтоб в паузе были кнопки: загрузить, сохранить...

Интересно это почему? Поставил везде коэфециент на нуль, и рисуешь себе на экране загрузить, сохранить и прочее, само собой к этим кнопкам коэф. вообще никакого значения не имеет

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 10-07-2006 07:17
Еще один нюанс. У меня проблема в 1 игре была, как идиот на нее времени кучу убил...

В общем, я создал объект health, при коллизии с которым здоровье увеличивается на 30. Если сделать это кнопкой (действием) , то все работает , а кодом - нет, т.к. транслятор "понимает" health+=30 как ID объекта, и выдает ошибку.
Вообще, не надо было такого объекта создавать, а переименовать его в o_health

Страницы: 1 2 Next>> новая тема
Раздел: 
Game Maker Форум / Ресурсы (графика, звук, музыка, DLL, Script'ы и Библиотеки) / Несколько_фишек

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU