Среда, 24 Апреля 2024, 20:53

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум игроделов » Записи участника » dildo_bomber [50]
Результаты поиска
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
Форум игроделов » Записи участника » dildo_bomber [50]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

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