Результаты поиска
| |
dildo_bomber | Дата: Вторник, 13 Декабря 2016, 17:04 | Сообщение # 21 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| instance order не нашел, может это в про версии? но проблемку решил. так и не понял, что у меня всё сбило, но вернусь к этому, когда понадобится.
Сообщение отредактировал dildo_bomber - Вторник, 13 Декабря 2016, 17:05 |
|
| |
dildo_bomber | Дата: Вторник, 13 Декабря 2016, 13:35 | Сообщение # 22 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| всем здрасте. у меня такой технический вопрос. есть комната, в ней натыкано куча контроллеров подряд с лева направо. если я чтото меняю, у меня меняется последовательность их загрузки, т.е. для примера в 1й ячейки лежит контроллер жизни самолёта. сам самолёт торчит в центре карты. до какого то момента вс всегда грузилось нормально. но щас начал жаловаться, что нет "plane_hp" и всё такое, что есть в control_life. что может влиять на последовательность? ведь загрузка, как я понял, объектов в комнате идёт слева на право, начиная с верхнего ряда.
EDIT: обойти это прописыванием создания самолёта в create контроллера жизни - не получилось EDIT2: получилось, я идиот.
Сообщение отредактировал dildo_bomber - Вторник, 13 Декабря 2016, 17:03 |
|
| |
dildo_bomber | Дата: Понедельник, 05 Декабря 2016, 14:34 | Сообщение # 23 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| да, понимаю, что не поможет. просто хочется, ради интереса. алгоритмы найти то можно, но я не понимаю, как их тут реализовывать, в такой конструкции. самое простое, что получилось это просто умножить на какое либо число. т.е. при сохранении file_text_write_real(save, level*534) при загрузке level = file_text_read_real(load) / 534
думал, например, сделать так: в файле всё храниться в строчку разделённую пробелом. (12 43 0 0 200) хотел при сохранении перемещивать символы настоящие с добавочными через один т.е. (1327 4930 04 05 210400) а при загрузке считывать через один символ, но я не понимаю, по крайней мере щас сразу не представил, как такое провернуть. получается, что каждое число надо представлять в виде массива, потом сохранять. при загрузке - загонять в массив, где каждая цифра - элемент массива, и с этим уже дальше работать. но я опять таки, не знаю, как это в моей конструкции впихнуть.
EDIT:
сумел загнать переменную в массив. если кому интересно:
exp_plane_new = string(exp_plane) //переводим число в строку max_chars = string_length(exp_plane_new) //получаем количество символов в строке for (i = 1; i <= max_chars; i += 1) //количество строк в массиве { char[i] = string_char_at(exp_plane_new,i)//создаём массив с символами исходного числа exp_plane_new += real(string(char[i]))//натыкиваем символы подряд в строчкук } exp_plane_save = real(exp_plane_new)//переводим строчку обратно в число
но пока я извращался, у меня встал вопрос получается, моими махинациями я буду так для каждой переменной прописывать. а как можно при открытии самого файла сразу весь файл получить как строку? т.е. еще перед тем как уже буду обращаться к записанным там данным, возможно ли раскодировать/закодировать сам файл при открытии/закрытии?
Сообщение отредактировал dildo_bomber - Понедельник, 05 Декабря 2016, 18:35 |
|
| |
dildo_bomber | Дата: Понедельник, 05 Декабря 2016, 14:03 | Сообщение # 24 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| delete
Добавлено (05 декабря 2016, 14:03) --------------------------------------------- всем привет. у меня есть один вопрос по поводу сохранений внешних. у меня это реализовано так: загрузка: в контроллере в create
if file_exists('save.sav' { load=file_text_open_read('save.sav' ; level = file_text_read_real(load) money = file_text_read_real(load) file_text_close(load) }
там же в step
if file_exists('save.sav' {} else { save=file_text_open_write('save.sav' ; file_text_close(save) } save=file_text_open_write('save.sav' ; file_text_write_real(save, level) file_text_write_real(save, money) file_text_close(save)
и сам вопрос: как можно зашифровать данные, хоть как то, при данной реализации?
EDIT: я понятия не имею почему вставляются эти смайлики. даже если я отключаю смайлы при отправке сообщения, эти точки с запятой перед скобкой всеравно вставляются.
Сообщение отредактировал dildo_bomber - Понедельник, 05 Декабря 2016, 14:05 |
|
| |
dildo_bomber | Дата: Пятница, 11 Ноября 2016, 19:16 | Сообщение # 25 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| у меня лайт версия) нашел альтернативу, но она не подходит под мою постройку по смещению курсора при паузе. буду думать. еще раз спасибо!
|
|
| |
dildo_bomber | Дата: Пятница, 11 Ноября 2016, 17:50 | Сообщение # 26 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Вооооооооот, вот это я и упустил! СПАСИБО!
уже сменил на глобал, всё заработало. ориджин всегда в центре самолёта. быстрый вопрос, возможно в ГМ сделать, что бы курсор не мог покидать пределы окна игры?
Сообщение отредактировал dildo_bomber - Пятница, 11 Ноября 2016, 18:18 |
|
| |
dildo_bomber | Дата: Пятница, 11 Ноября 2016, 17:28 | Сообщение # 27 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Цитата Rean ( ) Вообще, какие изначальные значения у переменных: pause, x_origin, x_delta ? pause = 0 (меняется при нажатии кнопки ESC и также обратно)
x,y_dealta = 0 в CREATE obj_stats. я их просто объявляю таким образом, всеравно они мгновенно меняются во время паузы.
x,y_origin постоянно получают значения через step, они, собсна, так и задаются, получают значение всё время, пока не стоит пауза. они локальные для обж_статс.
Цитата Rean ( ) Х приравнивается позиция левее курсора - зачем?? такая схема была первой, что пришло мне в голову. размышлял так: во время паузы высчитываю смещение курсора относительно позиции самолёта. как только снимаю с паузы, позиционирую самолёт относительно моего курсора на смещение. так у меня получилось, что где бы я курсор не оставлял, самолётик будет на месте после снятия с паузы, и будет двигаться вместе с мышкой.
Цитата Rean ( ) Зачем здесь в коде нули? Этот код писал не я, я нашел его где то на этом же форуме. Это всё было когда я только осваивал ГМЛ и сам ГМ в целом. Тут долго не думал, работает хоть как то - на первое время сойдёт.
Цитата Rean ( ) Что за константа 125? это просто смещение границы комнаты, у меня справа небольшая менюшка. Наверное можно просто получить sprite_get_width(spr_menu) или как то так.
Цитата Rean ( ) Пока мы не узнаем, при каких условиях can_shoot получает значение "1", мы не сможем понять, почему "не стреляет". в CREATE объекта ojb_plane: can_shoot = 1. и в alarm[0]: can_shoot = 1 собственно fire_rate заводит аларм на определённое время.
Вообще не судите строго, я бы всё с нуля переписал, если бы было не лень ибо щас смотрю на старый код и охереваю, насколько всё можно было проще и лучше написать. Начинал давно. А щас переписываю частами, к которым возвращаюсь.
Сообщение отредактировал dildo_bomber - Пятница, 11 Ноября 2016, 17:30 |
|
| |
dildo_bomber | Дата: Пятница, 11 Ноября 2016, 16:17 | Сообщение # 28 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| добавил. щас проверил еще, не обязательно что бы курсор с центом самолёта совпадал, видимо достаточно, что бы он просто в зоне спрайта присутствовал.
|
|
| |
dildo_bomber | Дата: Пятница, 11 Ноября 2016, 15:27 | Сообщение # 29 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| помогите разобраться с привязкой объекта к курсору мыши. был код, который быстро решил вопрос. но щас пришлось лезть глубже: вызываю паузу с отображением магазина, чего угодно. там вертишь курсором где хочешь. когда с паузы снимаю, самолёт телепортируется к курсору. ввёл поправку. всё получилось, но есть проблема, как только центр самолёта не совпадает с реальными координатами курсора, он перестаёт стрелять.<br / раньше тоже такая проблема была, когда курсор выходил за пределы окна игры, самолёт прижимался к краю, но стрелять прекращал) вопрос, как мне быть со стрельбой у объекта? почему он не стреляет, когда курсор не в центре спрайта объекта?
привожу код obj_plane, в Step:
Код x=mouse_x - obj_stats.x_delta y=mouse_y - obj_stats.y_delta
if(y < 0 + sprite_get_yoffset(spr_plane)){y = 0 + sprite_get_yoffset(spr_plane)} if(x < 0 + sprite_get_xoffset(spr_plane)){x = 0 + sprite_get_xoffset(spr_plane)}
if(y > (room_height) - sprite_get_height(spr_plane) + sprite_get_yoffset(spr_plane)){y = (room_height) - sprite_get_height(spr_plane) + sprite_get_yoffset(spr_plane)} if(x > (room_width - 125) - sprite_get_width(spr_plane) + sprite_get_xoffset(spr_plane)){x = (room_width - 125) - sprite_get_width(spr_plane) + sprite_get_xoffset(spr_plane)}
в STEP объекта obj_stats, который всегда активен:
Код if pause = 0 then { x_origin = obj_plane.x y_origin = obj_plane.y } else { x_delta = mouse_x - x_origin y_delta = mouse_y - y_origin }
кто знает, кто поможет?
EDIT: код стрельбы, в obj_plane, жмётся на левую кнопку мыши.
Код if can_shoot = 1 { instance_create(obj_plane.x - 15, obj_plane.y - 16, obj_fire1) can_shoot = 0 alarm[0] = obj_control_vars.fire_rate }
Сообщение отредактировал dildo_bomber - Пятница, 11 Ноября 2016, 16:13 |
|
| |
dildo_bomber | Дата: Четверг, 27 Октября 2016, 13:07 | Сообщение # 30 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| таргетинг = 1 для тех, которые выстреливают в игрока непосредственно. но это щас не важно, я уже разобрался. кусок в степе else { vspeed = var_speed done = 1 } не просто лишний был, он как раз и мешал. ибо done становился после выстрела 1 и во время полёта верт. корость =4 всё время. очередная невнимательность.
|
|
| |
dildo_bomber | Дата: Четверг, 27 Октября 2016, 12:51 | Сообщение # 31 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| 1. не получится закинуть в create, т.к. способ создания объекта, в моей ситуации, делает с create чтото непонятное. щас сделал для проверки, закинув в креэйт.
var dmg; var var_speed; var targeting; if instance_exists(obj_plane) && targeting = 1 {move_towards_point(obj_plane.x,obj_plane.y,var_speed)}
выдало ошибку, "unknown variable targeting".
2. а через with как написать? 3. да, именно так я и хочу, что бы мув товардс работал.
EDIT: важно, если ручками вписать скорость, убрать таргетинг, то всё работает. но мне нужны эти условия, потому что разные враги стреляют с разной скоростью патрона, и не у всех они летят в сторону игрока, некоторые просто прямо.
Сообщение отредактировал dildo_bomber - Четверг, 27 Октября 2016, 12:58 |
|
| |
dildo_bomber | Дата: Четверг, 27 Октября 2016, 11:46 | Сообщение # 32 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| да как её и используют, так и делаю. но если подробно: в контроллере по нажатию 5:
xx = instance_create(150,150,obj_patron) xx.dmg = 5 xx.var_speed = 4 xx.targeting = 1
в патроне в step:
if instance_exists(obj_plane) && targeting = 1 && done = 0 { move_towards_point(obj_plane.x,obj_plane.y,var_speed) done = 1 } else { vspeed = var_speed done = 1 }
по идее, если это самонаводящийся патрон, то он летит к последним координатам курсора на экране. но есть непонятка, если мой обж_плэйн находится на экране выше точки создания обж_патрон, то вверх тот уже не летит, только наискосок как то. т.е. он знает, на какой координате х находится самолёт (он же курсор) (т.е. если я двигаюсь левее или правее точки создания, то он верностреляет в мою сторону по х), но задать отрицательную вертикальную скорость - не может
EDIT: если ручками прописать координаты 1,1 - то так лететь он соглашается. что не так с координатами моего объекта на курсоре?
EDIT2: походу дела, vspeed = 4 у меня постоянно. это возникает изза способа, которым я задаю саму скорость?
Сообщение отредактировал dildo_bomber - Четверг, 27 Октября 2016, 12:22 |
|
| |
dildo_bomber | Дата: Среда, 26 Октября 2016, 13:14 | Сообщение # 33 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| да, оно. буду разбираться. СПАСИБО!Добавлено (26 октября 2016, 13:14) --------------------------------------------- и еще один быстрый вопрос. я сильно туплю, и не могу понять, почему move_towards_point работает не так, как предполагается? при создании объекта, он летит к курсору, вот если у меня x > cursor.x, то вроде нормально летит, куда надо. если я завожу мышь за точку создания такого объекта, он наверх не летит, летит максимум наискосок в 45 градусов с одной стороны его y, до 45 другой. почему так? по идее же, должно лететь куда попало, в любую точку, разве нет?
|
|
| |
dildo_bomber | Дата: Среда, 26 Октября 2016, 11:57 | Сообщение # 34 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| у меня вопрос в очень не сложной ситуации, но для меня непонятной у меня есть объект ship1, у него есть спрайт spr_ship1. он стреляет из 4х пушек одновременно в игрока. по идее шип1 должен всегда смотреть в направлении игрока, я это сделал, спрайт теперь вращается, а вот патроны, которые создаются при стрельбе на конце пушек - продолжили создаваться где и раньше. т.е. если он летит прямо вниз, всё ок. я не знаю, как сделать что бы сам объект поворачивался на тот же угол что и спрайт.
direction = image_angle и не срабатывает и не подходит, т.к. корабль, по задумке, движется только четко вниз.
x1 = instance_create(x-18,y+11,obj_patron) x1.dmg = patron_dmg x1.var_speed = patron_speed x1.targeting = patron_targeting
это код создания одного из патронов. как заставить объект вращаться, или что сделать с координатами, что бы они подстраивались под поворот спрайта?
Сообщение отредактировал dildo_bomber - Среда, 26 Октября 2016, 12:00 |
|
| |
dildo_bomber | Дата: Четверг, 13 Октября 2016, 15:22 | Сообщение # 35 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| OpenGOO, спасибо!
Добавлено (13 октября 2016, 15:22) --------------------------------------------- я немного уточню, а для какой версии ГМ это правдиво? у меня 8.1 lite и он не понимает этой конструкции. или где то в определённом месте писать надо?
EDIT всё заработало. нужно было написать в столкновении без var
Сообщение отредактировал dildo_bomber - Четверг, 13 Октября 2016, 15:44 |
|
| |
dildo_bomber | Дата: Среда, 12 Октября 2016, 13:28 | Сообщение # 36 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| почему я сам не догадался, лол спасибо!Добавлено (12 октября 2016, 13:28) --------------------------------------------- подскажите, а возможно ли сделать так: возможно ли в событии при создании объекта вложить в него переменную из объекта вызывающего это создание? т.е. у меня есть пуля,у неё есть параметр dmg. при попадании во врага я буду создавать объект obj_text, которому я как либо передам знаение dmg переменной. такое вообще возможно? что то типа в событии столкновения у пули instance_create(x,y,obj_text) obj_text.dmg = dmg
или в событии создания объекта текст, что то типа other.dmg = dmg // тоесть переменнуя создающего объекта присваиваю этому дочернему объекту.
сложность в том, что пуль много, у всех свои значения dmg. и при попадании во врагов, пуля не всегда уничтожается, а продолжает лететь дальше. вот в чем загвоздка. кто-нибуть понял, что я имею ввиду?
|
|
| |
dildo_bomber | Дата: Пятница, 23 Сентября 2016, 13:35 | Сообщение # 37 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| еще раз здрасте! у меня такая ситуация. есть курсор, есть объект, который двигается за ним по оси х. после определённого триггера объект должен откинуть это всё и лететь на середину комнаты.
Код if phase3 = 1 then { if move_end = 0 { if x <> 259 {move_towards_point(259, y, 1)} else {hspeed = 0 pahse3 = 0 move_end = 1} } }
он подлетает к точке 259 и начинает дёргаться. сначала шаг был 2, поэтому он перепрыгивал точку. потом поставил шаг 1, но подёргивание осталось. выяснил почему. в дебаггере увидел: координаты объекта не всегда целые получаются, т.е. x = 259.1111112354 поэтому он прыгает с 259.111 на 258.111 и обратно.
как с этим справиться? как округлить фактические координаты или что сделать с проверкой такого случая?
|
|
| |
dildo_bomber | Дата: Четверг, 22 Сентября 2016, 16:03 | Сообщение # 38 | Тема: аларм и анимация |
частый гость
Сейчас нет на сайте
| спасибо, сравнение сработало! осталось дописать пару деталей и всё запахало!
PS.: для тех, кто попал сюда через сёрф инета про такие же траблы.
если задаёшь image_index = 53, то сделующий спрайт будет проигрываться с именно с 53го. и скорость так же останется 0. в моём случае надо было дописать в каждом из алармов image_index = 0 image_speed = 1 дабы всё запустилось.
Сообщение отредактировал dildo_bomber - Четверг, 22 Сентября 2016, 16:06 |
|
| |
dildo_bomber | Дата: Четверг, 22 Сентября 2016, 11:10 | Сообщение # 39 | Тема: аларм и анимация |
частый гость
Сейчас нет на сайте
| идея хорошая, попробовал - ничего не фурычит. animation end выставляет скорость 0 для всех спрайтов на постоянной основе.
попробовал в step сделать так: ----if sprite_index = spr_boss1_laser and image_index = 55 {image_speed = 0} не заработало совсем.
и еще так: ----if image_index>image_number-1 {image_speed = 0} else {imgae_speed = 1} тоже не сработало.
а возможно ли в самой animation end попробовать как то сделать проверку на конец анимации? чтото вроде: if animation_end = 1 /*т.е. если анимация закончилась*/ {image_speed = 0} else {image_speed = 1} ? точнее, пусть просто image_speed = 0 будет написано там, но как сделать, что бы после, когда новый спрайт присваивается объекту, скорость снова становилось 1.
EDIT: в step вписал if image_index = 5 {image_speed = 0}, проверил в дебаггере - не срабатывает, на 5 кадре скорость анимации не меняется на 0. почему? пробовал и в draw пихать, и в animation end.
Сообщение отредактировал dildo_bomber - Четверг, 22 Сентября 2016, 11:42 |
|
| |
dildo_bomber | Дата: Среда, 21 Сентября 2016, 15:00 | Сообщение # 40 | Тема: аларм и анимация |
частый гость
Сейчас нет на сайте
| уже выяснил, по смене спрайта анимация не останавливается, она доходит до 67 кадров (сделал специально для проверки), после чего начинается с 0 нового спрайта, не успев его пройти, спрайт меняется, а анимация всё еще идёт до конца. вот почему так и получается. тогда вопрос, как сделать замену спрайта так, что бы анимация прерывалась?
EDIT: насколько я понял из дебаггера: 1 фрэйм уходит на то, что бы запустить аларм, и только потом начинается анимация. т.к. у меня 2 аларма, то получается, что на каждый аларм утекает по 1 фрейму каждый запуск. учитывая то, что анимация идёт до конца и только потом меняется - вот я и получаю мои непонятки. неужели никто никогда с таким не сталкивался? может подобное реализуется как то по другому, я хз. допёк только до такого способа.
Сообщение отредактировал dildo_bomber - Среда, 21 Сентября 2016, 16:32 |
|
| |
|