Художник пытается освоить GML
| |
Robin-Locksley | Дата: Четверг, 01 Марта 2012, 18:39 | Сообщение # 281 |
постоянный участник
Сейчас нет на сайте
| Quote (Ferrumel) Robin-Locksley, да он ничего не дал бы. Дал бы. Лог ошибки содержит функцию, в которой произошла ошибка со всеми использованными аргументами. Это дает много чего, например может подсказать что в твоей функции использован обьект, имя которого так же является именем переменной, к которой функция обращается вместо того, чтобы обращаться к обьекту. К примеру
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) --------------------------------------------- Мда ноль ответов на вопрос. Видно все сидят на пиратках
Вопрос следующего характера. А именно записывание и перезаписывание 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 |
старожил
Сейчас нет на сайте
| Да, всё верно.
|
|
| |
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()
Ну как то так. Не совсем понятно, может быть, но со временем оно само придет
GameMaker Easy Menu
|
|
| |
LunarPixel | Дата: Суббота, 10 Марта 2012, 15:38 | Сообщение # 293 |
старожил
Сейчас нет на сайте
| Quote (Robin-Locksley) Мне кажется вы не совсем корректно используете ини. Ну я не думаю, что Ferrumel будет каждое изменение перезаписывать и считывать постоянно. Выше приведен лишь объясненный на пальцах пример использования. А то, что Ferrumel написал в ответ, думаю, не часть игрового кода, а лишь такой же пример понимания. Само собой запись и чтение нужно делать лишь один раз, при старте игры и при её завершении.
|
|
| |
Ferrumel | Дата: Суббота, 10 Марта 2012, 15:49 | Сообщение # 294 |
почти ветеран
Сейчас нет на сайте
| Robin-Locksley, LunarPixel, Quote Ну я не думаю, что Ferrumel будет каждое изменение перезаписывать и считывать постоянно. Именно это я и собирался делать))) Думаю так и буду делать. Дело в том что окончание всех уровней умудрился сделать всего лишь одной глобальной переменной. Естественно теперь при окончании уровня, делаю новую запись ini. Что до чтения файла, тут опять же, все будет читаться после каждого уровня заново. Может и по индусски, но быстродействие мне не так важно, так как все основные чтение-запись, происходят когда игрок вытирает пот со лба, пыхтит и думает:"Я ЕГО СДЕЛАЛ!!!! Я ЕГО ПОРВАЛ!!! ОН СДОХ!!"
Robin-Locksley, спасибо за уточнение. Теперь зная подобное дело, приму это к сведению.
все серо и пусто
Сообщение отредактировал Ferrumel - Суббота, 10 Марта 2012, 15:51 |
|
| |
LunarPixel | Дата: Суббота, 10 Марта 2012, 16:05 | Сообщение # 295 |
старожил
Сейчас нет на сайте
| Quote (Ferrumel) Именно это я и собирался делать))) Ну вот... а я то наивно надеялся на лучшее..
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); По идее, должен выбраться красный цвет, а на деле получается синий Значит, там BGR
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
Ferrumel | Дата: Пятница, 30 Марта 2012, 13:29 | Сообщение # 300 |
почти ветеран
Сейчас нет на сайте
| Quote Значит, там BGR biggrin И правда
все серо и пусто
|
|
| |
|