АДМИН | Дата: Среда, 2012/Авг/15, 13:38 | Сообщение # 1 |
Группа: Администрация
Сообщений: 62
Статус: Offline
| 2.1.8. Как получить имя объекта по его id? Ответ: name = object_get_name(ID.object_index); Где ID - id объекта, имя которого требуется получить. | 2.1.9. Как получить индекс объекта по его имени (строка)? Ответ: object = execute_string('return '+string(obj_name)); | 2.1.10. Как сделать простую паузу одной кнопкой? Ответ: Один из самых простых алгоритмов состоит в использовании функции keyboard_wait (код нужно вставить в событие нажатия соответствующей клавиши): Код: /// Отрисовка сообщения о паузе игры draw_set_color(c_black); draw_set_alpha(0.3); draw_rectangle(0, 0, view_wview, view_hview, 0); // Отрисовка фона. Если у вас не используются виды - замените view_wview и view_hview на room_width и room_height соответственно. draw_set_alpha(1); draw_set_halign(fa_center); draw_set_valign(fa_middle); draw_text(view_xview + view_wview/2, view_yview + view_hview/2, 'PAUSE'); // Отрисовка текста. Если у вас не рисует русский текст - посмотрите вопрос 2.4.6. // Обновляем экран screen_refresh(); // Эта функция в действительности отображает на экране всё то, что мы нарисовали ранее // Останавливаем игру до нажатия какой-либо клавиши keyboard_wait(); Если вы хотите, чтобы игра продолжалась только при нажатии какой-то конкретной клавиши, к примеру, клавиши P (или, скажем, клике мыши) - замените последнюю строку скрипта (keyboard_wait()) на: Код: io_clear(); // Очищаем состояние клавиатуры while true // Запускаем вечный цикл { if keyboard_check_pressed(ord('P')) break; // Если игрок нажал Р - выходим из цикла keyboard_wait(); // Ожидаем нажатия какой-нибудь клавиши } io_clear(); // Снова очищаем состояние клавиатуры, чтобы пауза не влючилась сразу же после выключения | | 2.1.11. Как сделать, чтобы значение переменной сохранялось между комнатами? Ответ: Первый способ - сделать переменную глобальной.Пример объявления глобальных переменных: Код: global.variable = 100; globalvar variable2; variable2 = 100; | Второй способ - сделать объект, в котором объявляется переменная - постоянным (persistent). Все глобальные переменные можно посмотреть в дебаг режиме: Tools -> Show Global Variables. | 2.1.12. Как определить, на какую кнопку в сообщении нажал пользователь? Ответ: Вариант 1: Код: switch show_message_ext('Text', 'button 1', 'button 2', 'button 3') { case 1: show_message('button 1'); break; case 2: show_message('button 2'); break; case 3: show_message('button 3'); break; } | Вариант 2: Код: var message; message = show_message_ext('Text', 'button 1', '', 'button 2'); if message == 3 { show_message('button 2'); } | Вариант 3: Код: if show_message_ext('Text', 'button 1', '', 'button 2') == 3 { show_message('button 2'); } | и так далее... | 2.1.13. Как выполнить действие, только если объект находится в определённом радиусе? Ответ: Для того, чтобы проверить, находится ли объект в определённом радиусе - можно использовать функцию point_distance. Проверяя, на каком расстоянии находится объект - мы получим определённый радиус. Пример: Код: if point_distance(x, y, some_object.x, some_object.y) < 200 // 200, в данном случае, радиус { // Выполняем действия } | | 2.1.14. Как выполнить действие, только если герой собрал все монеты/ресурсы и т.п.? Ответ: Для этого нужно проверить кол-во объектов в комнате. Пример: Код: if instance_number(o_star) == 0 { // Выполняем нужные действия } | | 2.1.15. Я устанавливаю image_speed на единицу, но кадр спрайта меняется мгновенно, а не один раз в секунду! Почему? Ответ: Присвоив переменной image_speed единицу, вы устанавливает смену кадра спрайта каждый шаг. То есть, если у вас скорость комнаты - 30 шагов, то за секунду у спрайта сменится 30 кадров. Если вам нужно, чтобы за секунду менялся один кадр, пишите: Код: image_speed = 1/room_speed; Тогда каждую секунду кадр будет изменяться на 1/30 (если у вас скорость комнаты - 30 шагов), и за секунду кадр всего изменится на 30/30, то есть, на 1. | | 2.1.16. Я устанавливаю таймер на единицу, но действие таймера происходит мгновенно, а не через одну секунду! Почему? Ответ: Таймеры измеряется в шагах, и установив таймеру время в единицу - он выполнится через один шаг, то есть, через 1/room_speed секунды. Для того, чтобы таймер выполнился через одну секунду, нужно писать так: Код: alarm[0] = room_speed;; Таким образом, событие таймера выполнится через room_speed шагов, а room_speed шагов составляют одну секунду. | |
|
Создатель сайта!!!!
|