Пятница, 14 Мая 2021, 16:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Художник пытается освоить GML
Robin-LocksleyДата: Четверг, 01 Марта 2012, 18:39 | Сообщение # 281
постоянный участник
Сейчас нет на сайте
Quote (Ferrumel)
Robin-Locksley, да он ничего не дал бы.

Дал бы. Лог ошибки содержит функцию, в которой произошла ошибка со всеми использованными аргументами. Это дает много чего, например может подсказать что в твоей функции использован обьект, имя которого так же является именем переменной, к которой функция обращается вместо того, чтобы обращаться к обьекту. К примеру smile


GameMaker Easy Menu
FerrumelДата: Пятница, 02 Марта 2012, 16:21 | Сообщение # 282
почти ветеран
Сейчас нет на сайте
Видел где то трясучку экрана, ну там взрыв устроить чтобы экран содрогнулся. Эффектное появление босса устроить. Найти что то не могу. Сам сделать естественно не в силах. Может кто знает где можно найти такую штуку?

все серо и пусто
Dva_KotaДата: Пятница, 02 Марта 2012, 22:44 | Сообщение # 283
заслуженный участник
Сейчас нет на сайте
Вот он:
Пример эффекта тряски экрана


Новый пример инвентаря! /20.06.2012/

Energy Wars


Сообщение отредактировал Dva_Kota - Пятница, 02 Марта 2012, 22:45
FerrumelДата: Вторник, 06 Марта 2012, 01:39 | Сообщение # 284
почти ветеран
Сейчас нет на сайте
Нубский вопрос. Как такое записать в виде кода ГМЛ? Все время кнопочками пользовался, а тут вдруг понадобилось.

Добавлено (06.03.2012, 01:39)
---------------------------------------------
Мда, как только стоит сюда написать, так сразу же все становится понятно... Удивительно!


все серо и пусто
GavolotДата: Вторник, 06 Марта 2012, 02:01 | Сообщение # 285
Последователь Тени
Сейчас нет на сайте
Ну к примеру a = instance_create(x,y,pacan); Присваеваешь копию обьекта в переменную "a".

Добавлено (06.03.2012, 02:01)
---------------------------------------------
А потом можно даже добавить жизни какие сам хочешь, a.hp = 100; в одном блоке кода сразу после строчки создания объекта. Это я к примеру, если есть жизни. Или a.direction = random(360);


В общем что-то делаю, но пока не пойму ни как :)
Тень - выражение основной сущности человека.


Сообщение отредактировал Gavolot - Вторник, 06 Марта 2012, 02:01
FerrumelДата: Вторник, 06 Марта 2012, 02:17 | Сообщение # 286
почти ветеран
Сейчас нет на сайте
Gavolot, да нет, меня в ступор галочка "относительно" поставила.
Оказывается instance_create(x+170,y+60,multiexpl_bunker) надо писать.


все серо и пусто
GavolotДата: Вторник, 06 Марта 2012, 03:29 | Сообщение # 287
Последователь Тени
Сейчас нет на сайте
а) Я помню самое первое время меня тоже ставило в ступор что-то подобное)) Здесь нечего такого, я из-за того, что мог тогда только накачать исходников и все, ну не мог общаться я тогда, нет был плохой, приходилось копаться в исходниках, сейчас хоть спросить можно.

Добавлено (06.03.2012, 03:29)
---------------------------------------------
В те времена справку только переводили)))


В общем что-то делаю, но пока не пойму ни как :)
Тень - выражение основной сущности человека.
FerrumelДата: Суббота, 10 Марта 2012, 12:50 | Сообщение # 288
почти ветеран
Сейчас нет на сайте
Кто покупал game maker?
Каким образом это можно провернуть? Я просто захожу на их сайт, там требуют аккаунт, формы для регистрации что то не найду. Вообще расскажите все по шагам, как для блондинки.

Добавлено (10.03.2012, 12:50)
---------------------------------------------
Мда ноль ответов на вопрос. Видно все сидят на пиратках biggrin

Вопрос следующего характера. А именно записывание и перезаписывание ini файла. Я с ними не работал вообще. Потому как все устроено не представляю понятия. Лазил искал как это делается. Ничего кроме теории и изготовления настроек экрана, звука итп не нашел. Благодаря своему гуманитарному складу ума, в теоретические выкладки класса справки, просто тупо не въезжаю. Соответственно пример с настройками экрана, тоже не понял. Поэтому нужна конкретная помощь.

Теперь сама суть вопроса.
Имеем ряд (наверное в данном случае глобальных) переменных равных нулю.
-создание ini файла с необходимыми параметрами.

В процессе игры, например переменной level1_complete надо присвоить значение еденица. Таким образом мне необходимо ее изменить в самом файлике.
-открываем ini и изменяем значение переменной.

Имеем окно выбора уровня. Необходимо узнать какие уровни у меня открыты и проверить значения переменных.
-открываем ini проверяем значение переменных записанных там. В итоге появляется список доступных для прохождения уровней.

Как видите, вроде бы теорию слегка понимаю. Вот только саму механику как это реализовать не знаю. Что именно писать в блокнотике, как это должно выглядеть, как это должно смотреться у меня в коде. Как считывать, как записывать.
Здесь может помочь только пример. Так как на пальцах этого мне не объяснить.
Заранее благодарен.


все серо и пусто
LunarPixelДата: Суббота, 10 Марта 2012, 13:05 | Сообщение # 289
старожил
Сейчас нет на сайте
Пример сделать пока не могу, постараюсь всё же на пальцах объяснить.

Содержимое ini фала (назовем его file.ini):
Code
[Global]   
var=100
str='текст'


В коде, например в событии нажатия клавиши:

Code
ini_open('file.ini')
peremen=ini_read_real('Global', 'var', 0) //считываем вещественное значение в переменную
peremen2=ini_read_string('Global', 'str', '0') //считываем строковое значение в переменную
ini_close()


получаем:
peremen=100
peremen2='текст'

В коде, при нажатии на другую клавишу:

Code

peremen=200
peremen2='другой текст'

ini_open('file.ini')
ini_write_real('Global', 'var', peremen) //записываем вещественное значение переменной в ini
ini_write_string('Global', 'str', peremen2) //записываем строковое значение переменной в ini
ini_close()


В ini получаем:
[Global]
var=200
str='другой текст'

Что от куда берется:
В коде:
ini_read_real('Global', 'var', 0)
ini_write_real('Global', 'var', переменная/значение)

В ini:
[Global]
var=100




Сообщение отредактировал LunarPixel - Суббота, 10 Марта 2012, 13:06
FerrumelДата: Суббота, 10 Марта 2012, 14:21 | Сообщение # 290
почти ветеран
Сейчас нет на сайте
Спасибо Сань. Вопросы еще остались. Но буду экспериментировать.
Quote
[Global]
var=100
str='текст'


Тоесть, в моем случае это будет смотреться как
[Global]
level1_complete=0


а в каком то событии где я присваиваю новое значение и записываю в файл это будет выглядеть вот так?
level1_victory=1
ini_open('file.ini')
ini_write_real('Global', 'level1_complete', level1_victory)
ini_close()


Если мне нужно проверить число и создать иконку с новым уровнем если условие верно делаю вот так?
ini_open('file.ini')
victory_1level=ini_read_real('Global', 'level1_complete', 0)
ini_close()

if victory_1level=1 then
{ттрааа татата трат ааататаат}


Я все правильно понял?


все серо и пусто

Сообщение отредактировал Ferrumel - Суббота, 10 Марта 2012, 14:21
LunarPixelДата: Суббота, 10 Марта 2012, 14:27 | Сообщение # 291
старожил
Сейчас нет на сайте
Да, всё верно. happy

Robin-LocksleyДата: Суббота, 10 Марта 2012, 15:32 | Сообщение # 292
постоянный участник
Сейчас нет на сайте
Мне кажется вы не совсем корректно используете ини. То есть код будет работать, и работать без ошибок, но это что-то индусское.
Работа с ини очень медленная, поэтому во время игры пользоваться ини... неправильно что ли.

Все переменные в игре уже обьявлены, имеют значения и работают. Ини же нам нужен только чтобы значения, которые мы по ходу игры должны запомнить, никуда не делись. А значит чтение записанных настроек нужно делать при старте игры, а запись при завершении, потому что нет смысла каждый раз открывать ини и читать оттуда, если по ходу игры все значения переменных и так хранятся в оперативной памяти и там же меняют значения. Когда мы закрываем игру и соответственно выгружаем из памяти все переменные нам и требуется файл где данные из оперативной памяти будут храниться.

На практике это выглядит примерно так:

При старте игры:
ini_open('file.ini')
victory_1level=ini_read_real('Global', 'level1_complete', 0)
victory_2level=ini_read_real('Global', 'level2_complete', 0)
...
victory_nlevel=ini_read_real('Global', 'leveln_complete', 0)
...
score=ini_read_real('Global', 'score', 0)
lives=ini_read_real('Global', 'lives', 0)
...
'куча других переменных, которые требуется хранить'
ini_close()

При завершении игры:
ini_open('file.ini')
ini_write_real('Global', 'level1_complete', level1_victory)
ini_write_real('Global', 'level2_complete', level2_victory)
...
ini_write_real('Global', 'leveln_complete', leveln_victory)
...
ini_write_real('Global', 'score', score)
ini_write_real('Global', 'lives', lives)
...
'куча других переменных, которые требуется хранить'
ini_close()

Ну как то так. Не совсем понятно, может быть, но со временем оно само придет smile


GameMaker Easy Menu
LunarPixelДата: Суббота, 10 Марта 2012, 15:38 | Сообщение # 293
старожил
Сейчас нет на сайте
Quote (Robin-Locksley)
Мне кажется вы не совсем корректно используете ини.

Ну я не думаю, что Ferrumel будет каждое изменение перезаписывать и считывать постоянно. Выше приведен лишь объясненный на пальцах пример использования. А то, что Ferrumel написал в ответ, думаю, не часть игрового кода, а лишь такой же пример понимания. Само собой запись и чтение нужно делать лишь один раз, при старте игры и при её завершении. smile


FerrumelДата: Суббота, 10 Марта 2012, 15:49 | Сообщение # 294
почти ветеран
Сейчас нет на сайте
Robin-Locksley, LunarPixel,
Quote
Ну я не думаю, что Ferrumel будет каждое изменение перезаписывать и считывать постоянно.

Именно это я и собирался делать))) Думаю так и буду делать. Дело в том что окончание всех уровней умудрился сделать всего лишь одной глобальной переменной. Естественно теперь при окончании уровня, делаю новую запись ini.
Что до чтения файла, тут опять же, все будет читаться после каждого уровня заново. Может и по индусски, но быстродействие мне не так важно, так как все основные чтение-запись, происходят когда игрок вытирает пот со лба, пыхтит и думает:"Я ЕГО СДЕЛАЛ!!!! Я ЕГО ПОРВАЛ!!! ОН СДОХ!!" biggrin

Robin-Locksley, спасибо за уточнение. Теперь зная подобное дело, приму это к сведению.


все серо и пусто

Сообщение отредактировал Ferrumel - Суббота, 10 Марта 2012, 15:51
LunarPixelДата: Суббота, 10 Марта 2012, 16:05 | Сообщение # 295
старожил
Сейчас нет на сайте
Quote (Ferrumel)
Именно это я и собирался делать)))

Ну вот... а я то наивно надеялся на лучшее.. biggrin

Quote (Ferrumel)
Естественно теперь при окончании уровня, делаю новую запись ini.

Quote (Ferrumel)
Что до чтения файла, тут опять же, все будет читаться после каждого уровня заново.


Ну так этого все равно можно не делать. У тебя глобальная переменная сохраняется ведь на протяжении всей игры. Если я правильно понял, пока ты играешь level1_complete меняется на 1, 2, 3 и т.д, даже без ini файла, тут идет простая работа с переменной. И только при выходе из игры, чтобы не потерять значение переменной, тебе её нужно записать в ini. Тоже самое и со считыванием, во время игры значение переменной и так изменяется, не обязательно его считывать с ini.


FerrumelДата: Суббота, 10 Марта 2012, 16:19 | Сообщение # 296
почти ветеран
Сейчас нет на сайте
Да нет, смотри какая у меня история.
имею глобальную переменную deadboss=1, то есть присвоение еденицы ей идет в начале уровня.
В конце уровня когда босс уничтожен, идет присвоение ему "0". Вот этот результат я и записываю в файлик под необходимым номером. Следом у меня идет окно брифинга, там читается из файлика все, затем идет сверка, какие уровни пройдены какие нет, рисуется необходимая картинка.


все серо и пусто
Robin-LocksleyДата: Суббота, 10 Марта 2012, 16:56 | Сообщение # 297
постоянный участник
Сейчас нет на сайте
У тебя и переменная и запись в ини имеют одинаковые значения. Какой смысл сверять значение в ини если такое же значение уже есть в оперативке. Работает в сотни раз медленнее. Это как вызывать электрика чтобы лампочку вкрутить. Эффект всегда один, но электрика ждать пол дня придется. То, что есть возможность не значит что ее непременно нужно использовать.

GameMaker Easy Menu
FerrumelДата: Пятница, 30 Марта 2012, 11:44 | Сообщение # 298
почти ветеран
Сейчас нет на сайте
Ладно, проехали.

Добавлено (30.03.2012, 11:29)
---------------------------------------------
Народ, а можно задавать цвет например текста в виде трёх пар шестнадцатеричных цифр (вроде такого #123ABC) а не в виде встроенных c_blue, слишком бедная палитра по встроенным цветам.
Как вы с эти справляетесь?

Добавлено (30.03.2012, 11:44)
---------------------------------------------
Ага, победил проблем. Оказывается все это с переподвывертом делается draw_set_color(make_color_rgb(red,green,blue))


все серо и пусто
GameMixДата: Пятница, 30 Марта 2012, 13:08 | Сообщение # 299
старожил
Сейчас нет на сайте
Quote (Ferrumel)
Ага, победил проблем. Оказывается все это с переподвывертом делается draw_set_color(make_color_rgb(red,green,blue))

Можно ещё проще:
Code
draw_set_color($FF0000);

По идее, должен выбраться красный цвет, а на деле получается синий wacko Значит, там BGR biggrin


Steel Standoff - 2D аркада.
Мои статьи
FerrumelДата: Пятница, 30 Марта 2012, 13:29 | Сообщение # 300
почти ветеран
Сейчас нет на сайте
Quote
Значит, там BGR biggrin

И правда biggrin


все серо и пусто
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Поиск:

Все права сохранены. GcUp.ru © 2008-2021 Рейтинг