On-line: гостей 0. Всего: 0 [подробнее..]
Форум закрывается и забрасывается в связи с переходом на другой, более презентабельный.ФИЛу было хорошо, но он не выжил.RIP.

АвторСообщение
Кодер


Сообщение: 6
Зарегистрирован: 31.08.10
Репутация: 1
ссылка на сообщение  Отправлено: 04.09.10 13:52. Заголовок: Создание небольшой RPG


Предупреждение: не буду расписывать отвлеченные вещи вроде рисования спрайтов и создания объектов. Только говорю - все препятствия на пути героя должны быть

с Solid!
Давайте поразмышляем: что необходимо для РПГ? Прокачка героя, разные суперпуперспособности, адекватные сражения и диалоги - правильно? Вот этим и займемся.
В Create пропишем необходимые переменные. Так как в РПГ может быть множество локаций, логично, что переменные эти глобальны (существуют в одном экземпляре и

сохраняются при переходе героя на другую локацию).
Скажем, так:
global.xp=0 //Очки опыта героя
global.level=1 //Уровень
global.maxhealth=100 //Максимальное здоровье, увеличивается при прокачке.
global.mana=100 // Мана
global.maxmana=100 //Максимальная мана, тоже увеличивается при прокачке.
//Также наш герой должен менять одежду, оружие, как в больших РПГ. Пропишем для начала:
global.oruzhie='Кулаки'
global.odezhda='Обноски'
С переменными разобрались. Сделаем герою движение - он не может стоять на месте, верно? Вид у нас будет сверху и движение - с помощью тыканья мышкой.

Создайте спрайт и объект зеленой точки (она обозначает, куда двигается герой). В событии у героя Global Mouse Left (нажатие левой кнопки мыши в любом месте)

ставим:
1)удаление всех объектов зеленой точки;
2)создание объекта этой зеленой точки в координатах mouse_x,mouse_y;
3)движение героя опять-таки в mouse_x, mouse_y.
В столкновении героя с этой самой точкой пишем исчезновение точки и остановку героя (думаю, обойдемся без подробных объяснений).
Теперь в Степе image_angle=direction (у вас должен быть лицензионный ГМ!), чтобы спрайт героя поворачивался в сторону движения. Спрайт должен быть нарисован

изначально повернутым вправо.
Получилось движение героя! Что там дальше? Ну конечно, какая РПГ без сражений с монстрами! Сделать монстра не так уж сложно. Есть кнопка передвижения с

обходом препятствий (Step Towards Point), ее и перетаскиваем монстру в Step, в координаты там пишем: hero.x, hero.y. Перед этой кнопкой ставим кнопку

проверки переменной, в поле переменной пишем "distance_to_object(hero)", а ниже выбираем smaller than и пишем во второе поле, например, 200.
Теперь у монстра есть простенький ИИ - при приближении героя враг начинает бежать за ним.
В Create монстра ставим heal=100 (это его здоровье)
В событии нажатия на монстра (в объекте монстра) ставим примерно так:
if global.oruzhie='Кулаки' heal-=2
if global.oruzhie='Меч' heal-=4
if global.oruzhie='Еще что-нибудь' heal-=7
Естественно, также ставим при столкновении героя с монстром так:
if odezhda='Обноски' health-=1
if odezhda='Плащ' health-=0.6
if odezhda='Еще что-нибудь' health-=0.3
У монстра, кстати, ставим в Степ image_angle=direction (он тоже имеет право поворачиваться, куда хочет ).
Но это не все. Герой еще бессмертный и ему плевать на уменьшение здоровья (как и монстру).
У героя пишем в степ:
if health<=0 {show_message('ЛУЗЕР!!!' )game_end()}
А у монстра
if heal<=0 {instance_destroy() global.xp+=50}

Фу-ух, разобрались. Простенькая игрушка создана. Но это все еще не совсем РПГ. Нужна прокачка, верно?
В степе что-нибудь вроде этого:
if global.xp>=300
{
global.level+=1
global.xp=0
show_message('ВАШ УРОВЕНЬ - '+string(global.level)+'!' )
global.maxhealth+=10
global.maxmana+=10
global.mana+=10
health+=10
}
Это пример прокачки героя - когда опыт больше 299, повышается уровень и максимальные мана и здоровье.

Остались магические способности героя. Рассмотрим, скажем, файерболы.
Пишем в событии глобального нажатия левой кнопки мыши:
if global.mana>=20{
instance_create(x,y,faerball)
global.mana-=20}
у файербола в Create:
move_towards_point(mouse_x,mouse_y,15)
И в столкновении монстра с файерболом:
heal-=30 (или сколько надо)

С заклинанием разобрались, настало время последнего элемента - диалогов. С этим просто. В столкновении героя с НПС пишешь вот (пример):
speed=0 (НПС должен быть solid!)
dialog=show_message_ext('Что вы хотите?','Как дела?','Исчезни','Пока!' )
if dialog=1 {show_message('Да нормально все!' )}
if dialog=2 {with (other) instance_destroy()}
if dialog=3 {show_message('Пока! Удачи!' )}

Предупреждение: везде, где сказано про нажатие кнопки мыши, должно быть именно нажатие (Pressed), а не удержание (Button).

Вот и подошел урок к концу. Если что-то непонятно, есть проблемы - обращайтесь ко мне!
Полностью сделанный пример RPG - http://gcup.ru/load/iskhodniki/game_maker/primer_rpg/28-1-0-877<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



счетчик посещений                                                                                                                                                                                                                                                                                                                
купить Apple iPad                                                             Соколов Максим, 2010. Уникальный дизайн и контент принадлежат MSSG. Все права защищены.