Пятница, 01 Ноября 2024, 06:49

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Полезные скрипты
MasterSamboДата: Среда, 24 Июля 2013, 10:52 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Здравствуйте все! Сегодня я расскажу о скриптах.Часто в играх требуются скрипты для движений объектов, а не только в 8-ми направлениях. Здесь я вам предлагаю базовый набор скриптов для игр. [iскриптов. Создаём спрайт и объект. У спрайта отмечаем center. Добавляем событие Step. Пишем скрипт:
image_angle=point_direction(x,y,mouse_x,mouse_y). Если вы хотите, чтобы объект летел за мышью, то введите другой скрипт:
Код
x=mouse_x
y=mouse_y

С этим объектом можно сделать такую игру:
Объект летит к выходу через лабиринт(разумеется вы его ведёте).Если столкнётся со стеной то отскочит на стартовое место, а если доберётся до выхода, то перейдёт на следующий уровень.Дальше сами!
Движение за объектом:
move_towards_point(объект преследования.x,объект преследования.y,скорость)
Объект поворачивается за объектом:
Код
image_angle=point_direction(x,y,Player.x,Player.y)

Событие Draw, смена цвета объекта на выбор игрока:
Код
image_blend=get_color(c_red)

Объект постепенно летит за мышкой:
Код
direction=point_direction(x,y,mouse_x,mouse_y)

speed=8
Вот вам красочный эффект:
Код
effect_create_above(ef_cloud, random(room_width), random(room_height), irandom(2), choose(c_red, c_yellow, c_blue, c_orange, c_fuchsia))

Обводка текста:
Код
draw_set_color(argument3)
draw_text(argument0+1,argument1,argument4)
draw_text(argument0-1,argument1,argument4)
draw_text(argument0,argument1+1,argument4)
draw_text(argument0,argument1-1,argument4)

draw_set_color(argument2)
draw_text(argument0,argument1,argument4)

Скрипт для выбора случайной переменной:
Код
mas_x[0]=1;
mas_x[1]=2;
mas_x[2]=3;
mas_x[3]=4;
mas_x[4]=5;
mas_x[5]=6;
mas_x[6]=7;
mas_x[7]=8;
mas_x[8]=9;
mas_x[9]=10;
mas_x[10]=11;
mas_x[11]=0; //последний+1 элемент должен быть пустым
//то есть содержать ненужное значение
mas_l = 10; //количество элементов массива

Далее скрипт, получающий случайный элемент из этого массива:
Код
var mas1,mas_n,buf;

if mas_l=0 {return 0;}
//если закончились элементы, возвращать что-нибудь

mas_n=irandom(mas_l); //случайный индекс элемента. выбирается из имеющегося количества
mas1=mas_x[mas_n]; //получили элемент

for (j=mas_n; j<mas_l; j+=1) //переместить полученный элемент в конец массива
{buf=mas_x[j+1];
mas_x[j+1]=mas_x[j];
mas_x[j]=buf;}

mas_l-=1; //уменьшить количество элементов на 1

return mas1; //получили элемент

Замена символов в тексте на другие:
Код
var t, t1, t2;
t=argument0;
while !(string_pos(argument1,t)=0)
{
len=string_pos(argument1,t);
t1=string_copy(t,0,len-1);
t2=string_copy(t,len+1,string_length(t)-len+1);
t=string(t1)+string(argument2)+string(t2);
}
return t;

Сокращение текста до определённой длинны:
Код
text = argument0;
short = argument1;
if (string_length(text) > short)
{
text = string_delete(text, short + 1, string_length(text) - short + 1) + '...';
}
return text;

Рисование цветка:
Код
Sname=part_system_create();

particle1 = part_type_create();
part_type_shape(particle1,pt_shape_line);
part_type_size(particle1,0.10,0.10,0,0);
part_type_scale(particle1,1,1);
part_type_color1(particle1,16711680);
part_type_alpha1(particle1,1);
part_type_speed(particle1,1,1,0,0);
part_type_direction(particle1,0,359,0,0);
part_type_gravity(particle1,0,270);
part_type_orientation(particle1,0,0,0,0,1);
part_type_blend(particle1,1);
part_type_life(particle1,60,160);

emitter1 = part_emitter_create(Sname);
part_emitter_region(Sname,emitter1,x,x,y,y,0,0);
part_emitter_stream(Sname,emitter1,particle1,5);

attract1 = part_attractor_create(Sname);
part_attractor_position(Sname,attract1,340,241.50);
part_attractor_force(Sname,attract1,0.50,100,1,1);
Прокачка без знания математики (в рпг):

/
Скрипт линейной интерполяции

не перепутать пределы, последними идут мин-макс
пределы того значения, которое надо вычислить!
Код
scr_linear_interpolation(x0,x1,x2,y1,y2)


Код
var x0,x1,x2,y0,y1,y2;
x0=argument0; //известная переменная x
x1=argument1; //минимальный предел x1
x2=argument2; //максимальный предел x2
y1=argument3; //мин. y1
y2=argument4; //макс. y2

Код
y0=((y2-y1)/(x2-x1))*(x0-x1)+y1;
return y0; //неизвестная требуемая переменная

Надеюсь это вам поможет!
Внимание!
Если вы увидели ошибки, то сообщите мне! И ещё: старайтесь не копировать скрипты (я вам не запрещаю копировать), а понимать их. Если все будут копировать, то толком ничего не усвоят и не поймут и в дальнейшем будут всё время спрашивать скрипты на форуме, а скрипты предоставляют для усвоения и для того, чтобы в дальнейшем вы сами смогли составить скрипт!


Сообщение отредактировал arkady - Среда, 24 Июля 2013, 14:21
CreatingOverДата: Среда, 24 Июля 2013, 10:55 | Сообщение # 2
ColdGamedev
Сейчас нет на сайте
Цитата (arkady)
x=название объекта за которым ты следуешь.x
y=название объекта за которым ты следуешь.y

Не согласен. Если пихать в степ, то в начале игры этот объект на другом будет. Лучше уж так:
Код
move_towards_point(объект преследования.x,объект преследования.y,скорость)


Я снова с вами:з
Возвращение легенды. (нет)


Сообщение отредактировал CreatingOver - Среда, 24 Июля 2013, 11:20
MasterSamboДата: Среда, 24 Июля 2013, 10:59 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Цитата (CreatingOver)
Не согласен. Если пихать в степ, то в начале игры этот объект на другом будет. Лучше уж так:
[code]move_towards_point(объект преследования.x,объект преследования.y,скорость)

Я это обязательно учту!
CreatingOverДата: Среда, 24 Июля 2013, 11:28 | Сообщение # 4
ColdGamedev
Сейчас нет на сайте
Цитата (arkady)
Обводка текста:
var _x, _y, _text, _color1, _color2, _alpha;
_x = argument0; // х координата
_y = argument1; // у координата
_text = argument2; // Текст
_color1 = argument3; // Цвет обводки
_color2 = argument4; // Цвет текста
_alpha = argument5; // Прозрачность обводки

draw_set_color(_color1);
draw_set_alpha(_alpha);
draw_text(_x + 1, _y, _text);
draw_text(_x - 1, _y, _text);
draw_text(_x, _y + 1, _text);
draw_text(_x, _y - 1, _text);

draw_set_color(_color2);
draw_set_alpha(1);
draw_text(_x, _y, _text);

Нет-нет-нет... Намудрил ты слишком
Вот так:
Код
draw_set_color(argument3)
draw_text(argument0+1,argument1,argument4)
draw_text(argument0-1,argument1,argument4)
draw_text(argument0,argument1+1,argument4)
draw_text(argument0,argument1-1,argument4)

draw_set_color(argument2)
draw_text(argument0,argument1,argument4)

argument0 = x позиция
argument1 = y позиция
argument2 = основной цвет
argument3 = цвет обводки (контура)
argument4 = сам текст


Я снова с вами:з
Возвращение легенды. (нет)
MasterSamboДата: Среда, 24 Июля 2013, 13:42 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Учту и это!
CreatingOverДата: Среда, 24 Июля 2013, 14:01 | Сообщение # 6
ColdGamedev
Сейчас нет на сайте
И желательно весь код заключи в теги [c o d e] [/ c o d e] Без пробелов, я специально поставил, чтоб кодом пробел не запечатало.

Я снова с вами:з
Возвращение легенды. (нет)
MasterSamboДата: Среда, 24 Июля 2013, 14:19 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Цитата (CreatingOver)
И желательно весь код заключи в теги [c o d e] [/ c o d e] Без пробелов, я специально поставил, чтоб кодом пробел не запечатало.

Хорошо!
KrososДата: Среда, 24 Июля 2013, 14:44 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Что-то ты намудрил .
Там были скрипты в списке , то есть достаточно было ввести строку:
Draw_oltext(х,у,цвет , доп цвет ,Шрифт(Моя модификация))
А не вводить такую кучу строк, как у тебя , над каждой записью.





Мой проект
MasterSamboДата: Среда, 24 Июля 2013, 14:49 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Цитата (Krosos)
Что-то ты намудрил .
Там были скрипты в списке , то есть достаточно было ввести строку:
Draw_oltext(х,у,цвет , доп цвет ,Шрифт(Моя модификация))
А не вводить такую кучу строк, как у тебя , над каждой записью.

Кому-то нравятся, кому-то не нравятся...
KrososДата: Среда, 24 Июля 2013, 14:59 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Цитата (arkady)
Кому-то нравятся, кому-то не нравятся...


Код
if global.Phase1=0 and
global.Phase2=0{
if global.EnemyTurn=1{
draw_sprite(sprite_index,1,view_xview[0],view_yview[0])}else{draw_sprite(sprite_index,0,view_xview[0],view_yview[0])}
///HP
draw_text_ol(view_xview[0]+30,view_yview[0]+25,string(global.HP[O])+'/'+ string(global.mxHP[O]),c_white,c_black,-1)
if global.mxHP[O]=0 {global.mxHP[O]=1}
draw_text_ol(view_xview[0]+5,view_yview[0]+25,'HP',c_white,c_black,-1)
draw_sprite(health,1,view_xview[0]+100,view_yview[0]+23)
draw_sprite_part(health,0,0,0,sprite_get_width(health)*global.HP[O]/global.mxHP[O],sprite_get_height(health),view_xview[0]+100,view_yview[0]+23)

draw_text_ol(view_xview[0]+5,view_yview[0]+5,global.Name[O],c_white,c_black,-1)
draw_text_ol(view_xview[0]+260,view_yview[0]+5,'Class : '+string(global.Class[O]),c_white,c_black,-1)

//Mana
if global.Wizard=1{
draw_text_ol(view_xview[0]+30,view_yview[0]+45,string(global.MP[O])+'/'+ string(global.mxMP[O]),c_white,c_black,-1)
if global.mxMP[O]=0 {global.mxMP[O]=1}
draw_text_ol(view_xview[0]+5,view_yview[0]+45,'MP',c_white,c_black,-1)
draw_sprite(mana,1,view_xview[0]+100,view_yview[0]+43)
draw_sprite_part(mana,0,0,0,sprite_get_width(mana)*global.MP[O]/global.mxMP[O],sprite_get_height(mana),view_xview[0]+100,view_yview[0]+43)
}

draw_text_ol(view_xview[0]+5,view_yview[0]+65,'AT : '+string(global.AT[O]),c_white,c_black,-1)
draw_text_ol(view_xview[0]+5,view_yview[0]+80,' IN : '+string(global.IN[O]),c_white,c_black,-1)
draw_text_ol(view_xview[0]+85,view_yview[0]+65,'DF : '+string(global.DF[O]),c_white,c_black,-1)
draw_text_ol(view_xview[0]+85,view_yview[0]+80,'SP : '+string(global.SP[O]-1),c_white,c_black,-1)

draw_text_ol(view_xview[0]+445,view_yview[0]+5,'Lv : '+string(global.L[O]),c_white,c_black,-1)
draw_text_ol(view_xview[0]+400,view_yview[0]+80,'exp : '+string(global.Exp[O])+'/100',c_white,c_black,-1)
O=global.O
}


Это минимальный худ ,и тут ясно показано , что подобные строки намного удобнее.





Мой проект


Сообщение отредактировал Krosos - Среда, 24 Июля 2013, 14:59
MasterSamboДата: Среда, 24 Июля 2013, 18:13 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Понятно!
  • Страница 1 из 1
  • 1
Поиск:

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