Пятница, 29 Марта 2024, 17:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Здоровье для противников? (Помогите с кодом.)
Здоровье для противников?
JJacketДата: Вторник, 14 Января 2014, 16:25 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет!
Не так давно, установил Game Maker:Studio и собственно говоря сразу же преступил к изучению.
После завершения нескольких уроков в GMS, решил попробовать собрать свою мини игру типа (Scrolling Shooter)
и столкнулся с небольшой проблемой.
Никак не могу понять как поставить противникам hp, что-бы убивать их было сложнее, чем за один выстрел.
И еще был бы признателен, если кто нибудь подсказал, как написать, для тех же самых противников, в которой указывалось бы, что при конкретном количестве hp, противник меняет спрайт.
И еще маленький вопрос напоследок.
Не по теме. сейчас на бесплатной версии программы не могу добавлять более 20-ти спрайтов.
Решил приобрести стандартную версию игры и меня мучает вопрос, возможно ли будет, в той версии, помимо получения неограниченных ресурсов, добавлять более 20-ти спрайтов?)
Raven84Дата: Вторник, 14 Января 2014, 16:37 | Сообщение # 2
старожил
Сейчас нет на сайте
JJacket,
Цитата
Никак не могу понять как поставить противникам hp, что-бы убивать их было сложнее, чем за один выстрел.

Вместо hp противников,можешь сделать проще.Просто указать кол-во попаданий необходимое для уничтожения врага.Для этого введи переменную в событии Create (событие создания врага):
Код
popal=4

А в событии столкновения врага с пулей укажи:
Код
popal-=1

И тут же пулю сразу уничтожай обязательно.
А в Step сделай проверку:
Код
if popal<=0 {instance_destroy()}

Вот и все! То есть при этом коде во врага нужно будет попасть 4 раза.

Добавлено (14.01.2014, 16:35)
---------------------------------------------
Цитата
Решил приобрести стандартную версию игры и меня мучает вопрос, возможно ли будет, в той версии, помимо получения неограниченных ресурсов, добавлять более 20-ти спрайтов?)

Да.Там нет ограничений.

Добавлено (14.01.2014, 16:37)
---------------------------------------------
Цитата
И еще был бы признателен, если кто нибудь подсказал, как написать, для тех же самых противников, в которой указывалось бы, что при конкретном количестве hp, противник меняет спрайт.

В том же событии Step врага пишем:
Код
if popal<=2 {sprite_index=sprite2}

Т.е. когда во врага осталось попасть 2 раза то меняем спрайт на sprite2 (ну тут естественно указываете имя своего спрайта)


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Вторник, 14 Января 2014, 16:38
LunarPixelДата: Вторник, 14 Января 2014, 16:39 | Сообщение # 3
старожил
Сейчас нет на сайте
Цитата Raven84 ()
в Step сделай

Зачем каждый шаг это проверять?! Можно прописать в столкновении с пулей.

При столкновении пули с врагом делаешь проверку.

Код
if hp>0
{
hp-=1
with other instance_destroy() // удаляем пулю
}
else
{
with other instance_destroy() // удаляем пулю
instance_destroy() // удаляем врага
}


Raven84Дата: Вторник, 14 Января 2014, 16:42 | Сообщение # 4
старожил
Сейчас нет на сайте
LunarPixel, Да,так правильнее будет. smile Но в такой игре я думаю это сильно не повлияет на оптимизацию!

Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Вторник, 14 Января 2014, 16:43
FadeBakerДата: Вторник, 14 Января 2014, 17:00 | Сообщение # 5
JavaSE Game Developer
Сейчас нет на сайте
LunarPixel, индусский код, откровенно говоря. Можно было бы так:
Код
if ((hp -= 1) < 1) instance_destroy();
with (other) instance_destroy();


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
LunarPixelДата: Вторник, 14 Января 2014, 17:08 | Сообщение # 6
старожил
Сейчас нет на сайте
Fade, я для большей доходчивости расписал, понятно, что можно и сократить. smile
Только, думается мне, столь сокращенную запись гамак не воспримет и будет ругаться на условие.


Raven84Дата: Вторник, 14 Января 2014, 17:22 | Сообщение # 7
старожил
Сейчас нет на сайте
LunarPixel,
Цитата
Только, думается мне, столь сокращенную запись гамак не воспримет и будет ругаться на условие.

Мне тоже показалось,что тут просто идет проверка условия обнуления hp и уничтожения.Но разве при таком коде hp будет отниматься? surprised Тогда я еще многого в Гамаке не знаю! ))) В справке просто не видел возможности написания таким образом.


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Вторник, 14 Января 2014, 17:25
JJacketДата: Вторник, 14 Января 2014, 17:28 | Сообщение # 8
был не раз
Сейчас нет на сайте
Большое вам спасибо smile
Пойду дальше разбираться с игрой.
LunarPixelДата: Вторник, 14 Января 2014, 17:48 | Сообщение # 9
старожил
Сейчас нет на сайте
Цитата Raven84 ()
Но разве при таком коде hp будет отниматься?

Вообще, конечно работать будет. Но вот в случае с ГМ, если я не ошибаюсь, такое не прокатит. Вроде когда-то пробовал.
Собственно, не сложно проверить, но сейчас ГМ под рукой нет.


rgs_hakerДата: Вторник, 14 Января 2014, 20:46 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Цитата JJacket ()
Никак не могу понять как поставить противникам hp, что-бы убивать их было сложнее, чем за один выстрел.

если в создамнии у противника
hp=100
а при столкновении с пулей не обезательно ставить конкретное число отниманий можно еще и
hp-=0.05
и т.д так сложней убить врага, и еще можно зделать рандомно отнимание жизней чтоб каждый раз при попадании по разному отнимало

Цитата JJacket ()
И еще был бы признателен, если кто нибудь подсказал, как написать, для тех же самых противников, в которой указывалось бы, что при конкретном количестве hp, противник меняет спрайт.

принцип такой
if hp=50
{
instance_change(имя спрайта,true)
}

Цитата JJacket ()
возможно ли будет, в той версии, помимо получения неограниченных ресурсов, добавлять более 20-ти спрайтов?)

да можно, ограничений в той версии нету


_____
JJacketДата: Вторник, 14 Января 2014, 22:46 | Сообщение # 11
был не раз
Сейчас нет на сайте
Цитата rgs_haker ()
и т.д так сложней убить врага, и еще можно зделать рандомно отнимание жизней чтоб каждый раз при попадании по разному отнимало

Большое спасибо.

Добавлено (14.01.2014, 22:46)
---------------------------------------------
В итоге вот такой код вписал врагам, на взаимодействие с пулей:
if hp>0
{
if hp<=7 {sprite_index=sprite17}
hp-=3
with other instance_destroy()
}
else
{
with other instance_destroy()
instance_destroy()
instance_create((0),(0),obj_explosion)
}
Вот только "instance_create((0),(0),obj_explosion)" не срабатывает.
Т.е. после уничтожения противника не создается на его месте obj взрыва.
Подскажите пожалуйста, где я ошибаюсь?

rgs_hakerДата: Вторник, 14 Января 2014, 23:33 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Цитата JJacket ()
Вот только "instance_create((0),(0),obj_explosion)" не срабатывает.
Т.е. после уничтожения противника не создается на его месте obj взрыва.
Подскажите пожалуйста, где я ошибаюсь?

тебе надо в событии удаление врага сменить спрайт
instance_change(obj_explosion,true) на взрыв
остается только настроить обьект obj_explosion


_____
LunarPixelДата: Среда, 15 Января 2014, 00:06 | Сообщение # 13
старожил
Сейчас нет на сайте
Цитата JJacket ()
instance_destroy()
instance_create((0),(0),obj_explosion)


замени на

Код
instance_create(x,y,obj_explosion)
instance_destroy()


FadeBakerДата: Среда, 15 Января 2014, 00:32 | Сообщение # 14
JavaSE Game Developer
Сейчас нет на сайте
Цитата LunarPixel ()
Только, думается мне, столь сокращенную запись гамак не воспримет и будет ругаться на условие.

Сам лично проверял недавно - все работает. Сначала выполняется действие, а потом проверяется результат. Такие конструкции позволены и это очень, кстати, удобно.
Цитата rgs_haker ()
принцип такой
if hp=50

Никогда так не делай. После изменения здоровья оно может "перепрыгнуть" это значение и условие не выполнится. К примеру, было 60 ед., пуля отняла 15, осталось 45 - условие не выполнилось. Потом сиди думай, почему же не работает, ибо подобные ошибки часто незаметны.


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
LunarPixelДата: Среда, 15 Января 2014, 01:12 | Сообщение # 15
старожил
Сейчас нет на сайте
Цитата Fade ()
Сам лично проверял недавно - все работает.

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

Код
COMPILATION ERROR in code action
Error in code at line 1:
    if ((hp -= 1) < 1) show_message('test');
           ^
at position 9: Symbol ) expected.


FadeBakerДата: Среда, 15 Января 2014, 03:21 | Сообщение # 16
JavaSE Game Developer
Сейчас нет на сайте
LunarPixel, а попробуй на Studio проверить. На ней даже, кажись, инкремент/декремент работает.

Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
LunarPixelДата: Среда, 15 Января 2014, 08:35 | Сообщение # 17
старожил
Сейчас нет на сайте
Fade, проверил и на студии, сразу же после проверки на 8-ке, аналогично, сразу указывает на ошибку. Так что, как ты проверял? Я вот проверял когда-то и, судя по всему, такая же ошибка была.

ErrantBugДата: Среда, 15 Января 2014, 10:25 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Цитата LunarPixel ()
Fade, проверил и на студии, сразу же после проверки на 8-ке, аналогично, сразу указывает на ошибку. Так что, как ты проверял? Я вот проверял когда-то и, судя по всему, такая же ошибка была.
Я тоже проверил для достоверности: не работает (да и не работал никогда). GM думает, что это условие, а не приравнивание и конкретно тупит. Зато код можно записать и в другой краткой форме: (правда, там будет нулевая жизнь, но не суть happy )

Код
with other {instance_destroy()};
if hp-1 < 0 {instance_destroy()} else {hp-=1};




Сообщение отредактировал ErrantBug - Среда, 15 Января 2014, 10:28
Raven84Дата: Среда, 15 Января 2014, 10:35 | Сообщение # 19
старожил
Сейчас нет на сайте
Ну как бы кто код здесь не сокращал,смысл то все равно не меняется! biggrin Я считаю нужно делать код таким,чтобы он был понятен тебе самому! Ведь между кодом к примеру LunarPixel'а и кодом ErrantBug'а нет никакой разницы,разве что в написании. Или я чего-то не понимаю? smile

Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Среда, 15 Января 2014, 10:37
LunarPixelДата: Среда, 15 Января 2014, 12:26 | Сообщение # 20
старожил
Сейчас нет на сайте
Raven84, ну мой первоначальный код не оптимальный, как написал уже просто он нагляднее. Как минимум два раза уничтожать пулю смысла нет. Это не критично, но из таких мелочей могут и крупные проблемы вырасти, так что нужно стараться сделать максимально оптимально.

Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Здоровье для противников? (Помогите с кодом.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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