Вторник, 26 Ноября 2024, 06:28

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Небольшой туториал по скриптам
GefakДата: Четверг, 12 Июля 2012, 00:27 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Привет. Сейчас постараюсь объяснить, как, в каких случаях и зачем использовать скрипты, по просьбе форумчанина под ником Made_In_USSR.
Прежде всего хотелось бы сказать, что скрипты это замечательно. Они подталкивают игродела использовать программирование вместо кнопок, и, если начинающий игродел настроен серъёзно, он будет подготовлен к изучению ЯП и движков.
Сам я изучаю GML и Game Maker вообще только второй день (вернее вторую ночь). Если вас это не устраивает - закройте страницу и идите по своим делам.
Если же вы поверите, что я за такое короткое время хорошо разобрался с GML и скриптами, то, пожалуй, начнем.
Я не буду углубляться в сам GML, а постараюсь кратко рассказать о скриптах, и с чем их едят. Если хотите получше изучить сам GML, вам сюда (уж простят меня модераторы за ссылку на сторонний ресурс, но он реально полезный)
Итак, что такое скрипты. Буду говорить популярным языком. Скрипты - это текстовые файлы, содержащие код скриптового языка. Движок обращается к скриптам и вытаскивает из них код, чтобы использовать в игре. Как конкретно их использовать, мы тоже указываем. В итоге получаем очень удобный способ оперировать с кодом.
Лично я совершенно не желаю делать игры кнопками, и стараюсь использовать исключительно скриптики.
Как это работает. Вы создаете скрипт (думаю, не нужно объяснять, как это сделать, все элементарно просто), и пишете в него нужный код.
Теперь вы можете привязать скрипт к объекту или другому скрипту (об этом чуть позже).
Чтобы объект подчинялся скрипту, нужно в его событии Create или Step создать Action Execute Script (после создания он предложит вам выбрать нужный скрипт).
Create от Step отличается тем, что скрипт в Create будет выполнен один раз, при создании объекта, а Step будет выполнять скрипт постоянно, пока объект "живет".
Пример. Я создаю объект Player, затем создаю скрипт, в котором описываю движение персонажа при нажатии опр. клавиш. Сажаю скрипт в Step, сажаю Playerа в комнату и вуаля!
Теперь про импорт скриптов в другие скрипты. Это самое интересное. Для импорта скриптов в другие скрипты используются функции, имеющие вид:
Code
<название_функции>(аргумент1,аргумент2...);

Если вписать в название функции название нужного скрипта, то одной строчкой вы обратитесь к целому скрипту. Это не только очень удобно, но и используется для иморта переменных.
Например. У меня есть скрипт Player_Variables, в котором - просто куча глобальных переменных.
Так же есть скрипт HUD, который должен писать нам значение определенной переменной. Но вот проблема - как взять переменную из другого скрипта? Да очень просто. Пишем в скрипте HUD:
Code
Player_Variables();

И все переменные из этого скрипта станут доступны в скрипте HUD, и вы сможете написать, сколько здоровья у вашего персонажа.
А что насчет удобства? Тут тоже все просто. Создаем скрипт Player_Moving, где описываем передвижение персонажа. Ещё создаем Player_Jumping, где описываем прыжки, двойные прыжки, лазание по стенам и т.д. А так же создаем скрипт, например, аптечки, под названием Player_Healing. Там пишем, например:
Code
Items_Variable(); //Берем из этого скрипта переменную лечащей силы аптечки
Player_Variable(); //Берем из этого скрипта переменную жизней
global.player_health+=global.healer //Прибавляем значение лечащей силы аптечки к жизням игрока

И все.
Затем создаем скрипт Player_Controls, в котором пишем:
Code
Player_Moving();
Player_Jumping();
if keyboard_check (ord('H'))
{
  Player_Healing();
}

Крепим скрипт Player_Controls в Step объекта Player. И, теперь мы можем бегать, прыгать и лечиться клавишей 'H', прикрепив к объекту скрипт буквально из нескольких строчек.
Также функции можно использовать для возвращения значений из другого скрипта (нужно в нужный скрипт, допустим, с названием UMNOZHENIE написать return(аргумент1*аргумент2);)
И теперь, вызывая функцию в другом скрипте, пишем UMNOZHENIE (аргумент1,аргумент2);
То есть, например, если я присвою опр. переменной значение UMNOZHENIE (5,2); то переменной присвоится значение 10.
Так же можно использовать в скрипте аргументы (стандартные переменные, которые называются argument1,argument2 и т.д.), и при вызове этого скрипта в другой скрипт изменять значение аргументов - script(argument1,argument2...);
Ну, это я уже убежал куда-то. В общем-то, это пока все. Спасибо за внимание, надеюсь кому-нибудь помог.
BrightSpotДата: Четверг, 12 Июля 2012, 01:49 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
честно... не засоряй новичкам мозг...
во-первых хоть и очень незначительно, но обращение к скриптам немного медленней чем прямое обращение к ф-циям...
во-вторых скрипты в гм используют для часто повторяющихся участков кода, например:
скрипт
Code
o_text_box.a=1
o_text_box.color=argument0
o_text_box.font=argument1
o_text_box.text=argument2

я использую для записи фраз в чате... смысл этого скрипта в том что не нужно каждый раз этот кусок кода повторять для вывода очередного коментария...
таким способом экономится куча времени в правке этого участка, но твой пример сущий бред...
его можно спокойно заменить:
в обьекте o_player в Create:
Code
hp=100
mp=100
jump=1
vspeed=5
direction=0
apt=5//аптечки
mpb=5//банки мп
  и т.д

в Stepe
Code
if keyboard_check(ord('W')){speed=vspeed}
else if keyboard_check(ord('S')){speed=-vspeed}
else{speed=0}//для движения вперед назад.
if keyboard_check(ord('A')){direction+=5}
if keyboard_check(ord('D')){direction-=5}
if keyboard_check_pressed(ord('H'))&&apt>0{hp+=25;apt-=1}//юзаем аптечку
if keyboard_check_pressed(ord('M')) && mpb>0{mp+=25;mpb-=1}//юзаем банку мп
и тому прочее

так намного читабельней код ведь не нужно открывать кучу скриптов что бы понять где ошибка или что бы переделать что нибудь...
обращаться так же очень легко к переменным в обьекте:
в обьекте худа в Draw:
Code
draw_text(5,5,'HP='+string(o_player.hp))
draw_text(5,15,'MP='+string(o_player.mp))

...
в общем прежде чем писать туторы научись сам!

Добавлено (12.07.2012, 01:49)
---------------------------------------------
немного углубившись в прочтение тутора понял в чем проблема постера... Тебе нужно понять что те скрипты которые ты используешь не единственная замена "кнопкам" основным является компонент Execute Code в нем можно сразу писать все что потребуется для данного обьекта...



Более мощный компьютер глючит быстрее и точнее.
  • Страница 1 из 1
  • 1
Поиск:

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