RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1 ... 354 355 356 357 358 359 360   Вниз
  Печать  
Ответы@Gmakers.ru — все вопросы сюда
0 Пользователей и 1 Гость смотрят эту тему.
deathsoul
дезсоул
Ветеран форума
*****

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

Награды:
Легенда сайта
Сообщений: 1 853


21 Апреля 2011 в 01:14
Чтобы не было тем с вопросами, которые содержат всего два-три сообщения, все свои вопросы задавайтесь здесь. Если вопрос окажется слишком сложным для общей темы, модераторы всегда могут вынести обсуждение в отдельную тему.
Для этой темы действуют те же правила, что и для всего раздела, так что перед тем, как задать вопрос, обязательно ознакомьтесь с этой темой: «Ознакомьтесь, прежде чем задать вопрос». И не забудьте проверить, нет ли ответа на ваш вопрос в FAQ по Game Maker.
Последнее редактирование: 13 Октября 2013 в 19:01 от Огион
 
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7141 28 Апреля 2017 в 02:29


Просто вставь вот это в MOUSE_DOWN:

if view_wview < global.maxview
{ view_wview += 20; //(4:3)
 view_hview += 15;
 view_hborder = view_wview div 2;
 view_vborder = view_hview div 2;
 view_xview += 20 * ((mouse_x - view_xview) / view_wview);
 view_yview += 15 * ((mouse_y - view_yview) / view_hview);
}

И с обратным знаком в MOUSE_UP.

Практически ничего не изменилось, только точка, к которой приближалась камера, как будто сместилась за пределы комнаты, стала левее и выше. Раньше это были координаты (0,0) а сейчас с каждым шагом сдвигается на -20 по X и на -15 по Y(при увеличении)
Огион
Завсегдатай
****

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

Сообщений: 960


Ответ № 7142 28 Апреля 2017 в 12:07
Вообще говоря, если ты всё рисуешь на поверхности, то тебе виды вообще не нужны, нужно рисовать часть поверхности с масштабированием.
zoom-это что за значение?
Значение приближения.
Mordanius
Активный участник
**

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

Сообщений: 168


Старый казуал =(

Ответ № 7143 28 Апреля 2017 в 21:20
Честно говоря, я так и не понял, что там у тебя творится... Ты используешь автоматическую привязку вида к обьекту, который привязан к курсору? Тогда не удивительно, что вид всегда куда-то едет, и во что-то упирается. Те две строчки, которые я предложил, компенсируют сдвиг вида при масштабировании. Но проблема явно не в этом.

З.Ы. Сейчас попробовал набросать пример. Все работает, если не выставлять слишком большой "бордюр" автослежения. С настройками по умолчанию все ОК. Еще я перепутал знак в тех двух строчках зума к курсору. Исправил.
Прикреплённые файлы
* Sticker.gmx.rar (55.37 Кб - загружено 26 раз.)
Последнее редактирование: 29 Апреля 2017 в 23:47 от Mordanius
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7144 17 Мая 2017 в 16:45
народ, подскажите, как сохранить рекорд? Сейчас у меня 3 глобальных переменных: счет, результат за раунд, рекорд. Когда заканчиваются жизни, запускается таймер, в котором
global.rezultat=global.schet;
if global.rekord<global.rezultat
{global.rekord=global.rezultat}

и рисуются эти результаты на экране. Но если после этого еще раз поиграть, то рекорд обнуляется((  Как его сохранить?
tolich
to ne lich
Ветеран форума
*****

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

Сообщений: 1 488


moonlite

Ответ № 7145 17 Мая 2017 в 17:15
Различение загрузки и перезагрузки игры.
http://gmakers.xyz/index.php?topic=5240.msg56076#msg56076

Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7146 17 Мая 2017 в 17:48
Нужно было просто поставить галочку на persistent в объекте с этими переменными) Спасибо всем
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7147 22 Мая 2017 в 17:15
Ребята, подскажите, в чем проблема, я что то уже совсем запутался, не могу найти ошибку... Короче есть игра кликер, каждый раунд набирается определенное количество очков, если результат больше предыдущего рекорда, этот результат становится рекордом. Все вроде хорошо, но... Короче сейчас система такая: если HP становится меньше 0, то запускается alarm[0] через 5 кадров, в нем:
global.rezult=global.schet
if global.rekord<global.rezult
{global.rekord=global.rezult}
.
Так же есть клавиша выхода в меню, она же пауза, она же Alt. При нажатии на нее игра сохраняется в savegame, после чего переход в комнату roommenu2- это меню. При нажатии на "продолжить" загружается игра из savegame. Все манипуляции с сохранением и загрузкой написаны не кодом. Так вот, пока все нормально. Еще я создал две почти одинаковые комнаты для меню, одна для первого запуска игры (roommenu1), вторая для всех последующих(roommenu2)(они отличаются наличием клавиши "продолжить"). При запуске игры изначально запускается комната, назовем ее room-1, в ней один объект, который проверяет, есть ли файл savegame, и если есть, то переход в roommenu2, если нет, то в roommenu1. Код там был вроде такой:
if (file_exists(savegame))
{room_goto(roommenu2)}
else
{room_goto(roommenu1)}
Точно не помню, так как я потом, пытаясь сделать еще кое что, все поизменял, и теперь вообще нихрена не работает, но до этого все было норм, за исключением вот чего: если запустить приложение не в первый раз, проходит проверка, есть ли сохраненка, запускается roommenu2, и если нажать на "новую игру", то рекорд сбрасывается. Это логично, так как была только проверка, что сохраненка существует, сама же сохраненка не запускается. Получается чтоб все было норм, нужно было бы сначала нажать на "продолжить", а уже потом начинать новую игру... Но это бред. Поэтому я и начал что то мудрить... В итоге намудрил... Я придумал вот что: При нажатии на Alt (она же пауза), игра сохраняется в файл savegame, и переходит в roommenu2. В эту комнату я добавил объект, который сохраняет игру еще раз в файл savegame2(пробовал и через  , и через  , и через  , может что то не так делал...). Далее в комнате room-1 я изменил проверку наличия файла savegame на проверку наличия savegame2, и в случае наличия savegame2 должен запуститься alarm, который загрузит этот savegame2 уже с сохраненным рекордом... По идее все вроде должно работать, но в итоге ругается на строчку
if (file_exists(savegame2))
. Весь код с этой строчкой вот:
if (file_exists(savegame2))
{alarm[1]=1}
else
{room_goto(room1)}
В alarm[1]- загрузка игры из savegame2. Что я не так делаю?
Огион
Завсегдатай
****

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

Сообщений: 960


Ответ № 7148 23 Мая 2017 в 12:16
Ты всё делаешь не так.

Рекорды, настройки игры и тому подобное нужно хранить в отдельном файле. Самый простой вариант — INI:
Сохраненяешь новые рекорды:
ini_open("playerdata.ini");
ini_write_real("Hi Score", "score", global.rekord);
ini_close();
Загружаешь рекорды на старте игры:
ini_open("playerdata.ini");
global.rekord = ini_read_real("Hi Score", "score", 0);
ini_close();

Не нужно сохранять и загружать игру только для того, чтобы показать меню. Можно поставить у комнаты с игрой галочку «Persistent», и её состояние будет сохраняться при переходе в меню. Также нужно создать глобальную переменную room_needs_restart. При нажатии на «Продолжить» просто переходишь в комнату с игрой, а при нажатии на «Новая игра» перед этим устанавливаешь room_needs_restart на истину. В комнате с игрой поверяешь в Step:
if (global.room_needs_restart) {
    global.room_needs_restart = false;
    room_restart();
}
И да: не нужно делать две отдельные комнаты, отличающиеся только наличием кнопки «Продолжить». Нужно создать глобальную переменную global.game_is_running, при запуске устанавливать её на ложь, а во время начала непосредственно игры на истину. И проверять при открытии меню, равна ли она истине, если нет, то удалить кнопку «Продолжить».
К слову, Alt — крайне неинтуитивный выбор кнопки для паузы.
 
Я тебе описал, как сделать паузу и сохранение рекордов, не прибегая к сохранению. Если ты считаешь, что в твоей игре нужно сохранение в произвольном месте, то я тебе расскажу, как это сделать правильно.
Последнее редактирование: 23 Мая 2017 в 18:02 от Огион
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7149 23 Мая 2017 в 12:49
про ini я тоже уже прочитал. Спасибо. Сейчас попробую, но что то мне кажется все равно не будет работать как надо.
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7150 23 Мая 2017 в 17:04
что то не так у меня работает... Может не туда что то ставлю... Куда надо ставить глобальную переменную room_needs_restart? В меню? Или в комнату с игрой?
Огион
Завсегдатай
****

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

Сообщений: 960


Ответ № 7151 23 Мая 2017 в 18:13
Без разницы, в принципе. Главное, чтобы она была равна false и становилась true только при нажатии на «Новая игра».
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7152 23 Мая 2017 в 18:23
ну так вроде и есть. Но сейчас такая проблема. Игра написана под андроид, созданы виртуальные клавиши пробел и alt, сам клик и пауза соответственно. Когда начинаю игру, все норм, все работает. А если нажать на паузу, а потом продолжить, то эти виртуальные клавиши как бы удаляются, тычки мышкой по экрану перестают работать, работает если только нажимать реальные клавиши. Что может быть не так? Раньше такой проблемы не было...
Огион
Завсегдатай
****

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

Сообщений: 960


Ответ № 7153 24 Мая 2017 в 01:34
Подозреваю, что GM удаляет виртуальные кнопки, даже если комната постоянная. Могу предложить такой хак: перед переходом в комнату с паузой выставлять таймер на один шаг, чтобы он сработал сразу после возвращения в игру. И в таймере заново создать виртуальные кнопки.
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7154 24 Мая 2017 в 01:48
А куда ставить этот таймер? В меню? Тогда он врядли сработает в комнате с игрой
tolich
to ne lich
Ветеран форума
*****

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

Сообщений: 1 488


moonlite

Ответ № 7155 24 Мая 2017 в 10:01
В любой объект, который всегда есть в игре. В ГГ, например. Или в контроллер. У тебя же есть контроллер, объект без спрайта, который рисует, там, счёт, жизни и прочую муть?

Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7156 24 Мая 2017 в 10:31
В любой объект, который всегда есть в игре. В ГГ, например. Или в контроллер. У тебя же есть контроллер, объект без спрайта, который рисует, там, счёт, жизни и прочую муть?

Да, есть. В нем этот таймер и стоит, но почему то срабатывает получается только после первого запуска, а уже при нажатии на "продолжить" похоже больше не срабатывает...
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7157 13 Июня 2017 в 02:05
Подскажите, если сохранить игру через game_save(), а потом еще раз сохранить в такой же файл, старый файл стирается или тоже сохраняется? А если сохраняется, то каким кодом можно удалить старый файл?
Кто-тo
Ветеран форума
*****

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

Сообщений: 1 088


Ответ № 7158 13 Июня 2017 в 02:36
Предположу что стирается, поскольку для другой реализации разработчикам движка пришлось бы написать больше кода.

EDIT: Загрузка идёт только по имени файла, в справке функции game_save ничего про старый файл не написано.
Поэтому стирается, а если быть точным то перезаписывается.
Последнее редактирование: 13 Июня 2017 в 02:42 от Кто-тo
Vovan1802
Активный участник
**

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

Сообщений: 130

Ответ № 7159 13 Июня 2017 в 02:39
Просто я боюсь, не будет ли забиваться память этими сохраненками...
tolich
to ne lich
Ветеран форума
*****

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

Сообщений: 1 488


moonlite

Ответ № 7160 13 Июня 2017 в 09:59
Старый файл стирается или тоже сохраняется?
Запись происходит в старый файл. При этом сохраняется дата/время его создания, меняется только дата/время последнего изменения.
А если сохраняется, то каким кодом можно удалить старый файл?
Однако, удалять старые файлы тоже может понадобиться. Это делает функция file_delete.

Страниц: 1 ... 354 355 356 357 358 359 360   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2017
Счётчик–@Mail.ru