Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](http://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](http://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #180 : Август 13, 2016, 19:43:19 » |
|
Да вроде и так понятно.
Прочесть краткое описание функции так-то попроще, чем код, особенно с 14-ю аргументами.
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
Goo
ну типа
GM Pro user
Репутация: 163
Offline
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345
|
 |
« Ответ #181 : Август 13, 2016, 20:32:46 » |
|
Прочесть краткое описание функции так-то попроще, чем код, особенно с 14-ю аргументами. поправил (надеюсь описал понятно)
|
|
|
|
|
Записан
|
|
|
|
Anto96WS
Пользователь
 
Репутация: 6
Offline
Пол: 
API: GameMaker Studio Master
Деятельность: Разработчик ИИ
Сообщений: 59
Слаанешит и говнокодер
|
 |
« Ответ #182 : Ноябрь 08, 2016, 19:55:52 » |
|
isLetter(char) | Возвращает true если символ - буква var temp;
temp =ord(argument0); if((temp >64 && temp <91) || (temp >96 && temp <123) || (temp >191 && temp <256)){return true;} return false;
isDigit(char) | Возвращает true если символ - цифра var temp;
temp =ord(argument0); if(temp >47 && temp< 58){return true;} return false;
isLetter_En(char) | Возвращает true если символ - английская буква var temp;
temp =ord(argument0); if((temp >64 && temp< 91) || (temp >96 && temp< 123)){return true;} return false;
isLetter_Rus(char) | Возвращает true если символ - русская буква var temp;
temp =ord(argument0); if(temp>191 && temp<256){return true;} return false;
|
|
|
|
« Последнее редактирование: Ноябрь 17, 2016, 20:00:47 от Anto96WS »
|
Записан
|
Все, кто пойдёт против моей лени, будут изнасилованы, возможно зарезаны и возможно съедены.
|
|
|
Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](http://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](http://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #183 : Ноябрь 08, 2016, 19:58:39 » |
|
Кое-кто не знает про оператор ИЛИ. Алсо, temp=string_letters(argument0) //string_digits() for... um... digits.
return (temp!='')
Насчёт быстродействия, правда, не уверен.
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
Anto96WS
Пользователь
 
Репутация: 6
Offline
Пол: 
API: GameMaker Studio Master
Деятельность: Разработчик ИИ
Сообщений: 59
Слаанешит и говнокодер
|
 |
« Ответ #184 : Ноябрь 08, 2016, 20:02:12 » |
|
Кое-кто не знает про оператор ИЛИ. Однако знаю. С GM8 осталась привычка разбивать сложное условие на несколько простых.
|
|
|
|
|
Записан
|
Все, кто пойдёт против моей лени, будут изнасилованы, возможно зарезаны и возможно съедены.
|
|
|
Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](http://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](http://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #185 : Ноябрь 08, 2016, 20:05:01 » |
|
if(temp >64 && temp <91 || temp >96 && temp <123 || temp >191 && temp <256){return true;} А такое вообще работать не будет.
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
Anto96WS
Пользователь
 
Репутация: 6
Offline
Пол: 
API: GameMaker Studio Master
Деятельность: Разработчик ИИ
Сообщений: 59
Слаанешит и говнокодер
|
 |
« Ответ #186 : Ноябрь 08, 2016, 20:10:24 » |
|
if(temp >64 && temp <91 || temp >96 && temp <123 || temp >191 && temp <256){return true;} А такое вообще работать не будет. И все-таки оно работает. Мне чуть не понадобился смайл, бьющийся головой об стол.
|
|
|
|
|
Записан
|
Все, кто пойдёт против моей лени, будут изнасилованы, возможно зарезаны и возможно съедены.
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](http://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #187 : Ноябрь 08, 2016, 20:18:19 » |
|
Работать-то работает, а вот так ли оно работает, как должно? Скобок очсильно не хватает в выражении
|
|
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
Anto96WS
Пользователь
 
Репутация: 6
Offline
Пол: 
API: GameMaker Studio Master
Деятельность: Разработчик ИИ
Сообщений: 59
Слаанешит и говнокодер
|
 |
« Ответ #188 : Ноябрь 08, 2016, 20:21:49 » |
|
Работать-то работает, а вот так ли оно работает, как должно? Скобок очсильно не хватает в выражении Скорректировал. На проверке символов с клавиатуры вроде работало как надо. Добавлено: Ноябрь 08, 2016, 21:05:47 Система сообщений с выводом и плавным исчезновением. Для создания подойдут два любых пустых списка. message_system_draw_all(список сообщений (id), список альфы (id), цвет тени, цвет текста, X, Y, смещение тени (вниз), смещение сообщений (вниз относительно координаты Y предыдущего сообщения)) | Рисует все сообщения на экране в заданных координатах var temp, temp2;
for(i =0; i <ds_list_size(argument0); i++){ temp =ds_list_find_value(argument0, i); temp2 =ds_list_find_value(argument1, i); draw_set_alpha(temp2); draw_set_color(argument2); draw_text(argument4, argument5 +argument6 +i *argument7, temp); draw_set_color(argument3); draw_text(argument4, argument5 +i *argument7, temp); if(!i){ if(temp2 >0.01){ ds_list_replace(argument0, i, temp2 -0.01); } else{ ds_list_delete(argument0, i); ds_list_delete(argument1, i); } } } message_system_add(список сообщений (id), список альфы (id), сообщение, альфа) | Добавляет сообщение в систему. Чем больше альфа, тем дольше сообщение остается на экране. Рекомендуемое значение альфы 0.2 ds_list_add(argument0, argument2); ds_list_add(argument1, argument3); message_system_delete(список сообщений (id), список альфы (id), номер сообщения) | Удаляет сообщение с заданным номером. Нумерация от нуля ds_list_delete(argument0, argument2); ds_list_delete(argument1, argument2);
|
|
|
|
« Последнее редактирование: Ноябрь 08, 2016, 21:05:47 от Anto96WS »
|
Записан
|
Все, кто пойдёт против моей лени, будут изнасилованы, возможно зарезаны и возможно съедены.
|
|
|
Christopher
mgflernGD
GM Pro user
Репутация: 99
Offline
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)  ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](http://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: Game Maker 7.0 Pro
Деятельность: Инди-разработчик
Сообщений: 713
DragonGameStudios
|
 |
« Ответ #189 : Ноябрь 16, 2016, 01:52:24 » |
|
Простенько, но полезно, в очередной раз, лично я уже не впервые им пользуюсь и писал чисто ради экономии времени Создает новый сурфейс, дублируя исходный, возвращает id созданного ///surface_dublicate(name,width,heigth,x,y,source) // //Creates a source surface copy //set width and heigth to -1 equals source width\heigth to created surface // //Returns an ID of created Surface // //surface_dublicate(pause,-1,-1,0,0,application_surface)
var name=argument0,dw=argument1,dh=argument2,xx=argument3,yy=argument4,source=argument5; var news=0;
//sets var to source's default if dw=-1 { dw=surface_get_width(source) } if dh=-1 { dh=surface_get_height(source) }
//create news=surface_create(dw,dh);
//dublicate surface_copy(news,xx,yy,source);
return news; То же самое, только в профиль, вызывает деактивацию всех обьектов, кроме того, в котором был скрипт запущен ///surface_pause()
//Creates a surface with a snapshot of an application_sunface //And deactivates all obj except this // //Returns an ID of Created surface to free them later of work with them
//set size var snap_w=surface_get_width(application_surface); var snap_h=surface_get_height(application_surface);
//dublicate surface snap=surface_create(snap_w,snap_h); surface_copy(snap, 0, 0, application_surface);
//deactivate everything but this object instance_deactivate_all(true);
return snap; 
|
|
|
|
|
Записан
|
|
|
|
Goo
ну типа
GM Pro user
Репутация: 163
Offline
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345
|
 |
« Ответ #190 : Ноябрь 16, 2016, 14:33:53 » |
|
Этот скрипт уже был, я просто свою вариацию предложу /// gui_circle_bar(x, y, r, cnt, val, fVal, width, col, bCol, cng, dir, sAng, alpha) // * return n/a * //
var xc = argument0; var yc = argument1; var rd = argument2; var ct = argument3; var v = argument4; var fv = argument5; var w = argument6; var c = argument7; var bc = argument8; var cg = argument9; var dn = argument10; var sa = argument11; var a = argument12;
dn = sign(dn); var g = (v/fv)*100; fv += sa; ct = max(ct, 12);
if (cg) { g = 2.55*g; var r = 255-g; c = make_colour_rgb(r, g, 0); } dn = (v/ct)*dn;
draw_primitive_begin(pr_trianglestrip); for (var i=0; i<364; i+=6) { var xx = xc+lengthdir_x(rd, i-1); var yy = yc+lengthdir_y(rd, i-1); draw_vertex_colour(xx, yy, bc, a); xx = xc+lengthdir_x(rd+w, i); yy = yc+lengthdir_y(rd+w, i); draw_vertex_colour(xx, yy, bc, a); } draw_primitive_end();
draw_primitive_begin(pr_trianglestrip); for (var i=0; i<ct+1; i+=4) { var d = fv+(i-1)*dn; var xx = xc+lengthdir_x(rd, d); var yy = yc+lengthdir_y(rd, d); draw_vertex_colour(xx, yy, c, a); xx = xc+lengthdir_x(rd+w, d); yy = yc+lengthdir_y(rd+w, d); draw_vertex_colour(xx, yy, c, a); } draw_primitive_end();
ну и еще // f_cut_off_the_end_of_the_line(string,max length) // * return: string * // // * example: t = f_cut_off_the_end_of_the_line(string,max length);
var t = argument0; var c = argument1;
return string_copy(t,1,c);
|
|
|
|
« Последнее редактирование: Апрель 12, 2017, 18:46:56 от Goo »
|
Записан
|
|
|
|
Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](http://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](http://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #191 : Январь 14, 2017, 18:43:48 » |
|
Плавное движение с целыми координатами при нецелых скоростях. Простой приём, который придаёт плавности движениям, при этом сохраняя координаты объекта целочисленными. Никто не любит дробные координаты. Суть заключается в том, чтобы завести каждой координате по дополнительной переменной x_f и y_f, которые будут хранить дробную часть переменной. Когда в них накапливается 1 или -1, они передают эту единицу координате. ///moveSmooth_x()
x+= hspd div 1 //Двигаем объект с какой-то скоростью, предварительно лишив её дробной части. x_f+=hspd mod 1 //Сохраняем дробную часть в переменную. if abs(x_f)>=1 { var x_f_s=sign(x_f); x+=x_f_s //Прибавляем единицу, накопившуюся в дробной части. x_f-=x_f_s //И отнимаем её от самой дробной переменной. }
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](http://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #192 : Январь 14, 2017, 20:05:18 » |
|
x+= hspd div 1 //Двигаем объект с какой-то скоростью, предварительно лишив её дробной части. x_f+=hspd mod 1 //Сохраняем дробную часть в переменную.
floor() и frac() не проще?
|
|
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](http://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](http://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #193 : Январь 14, 2017, 20:40:57 » |
|
x+= hspd div 1 //Двигаем объект с какой-то скоростью, предварительно лишив её дробной части. x_f+=hspd mod 1 //Сохраняем дробную часть в переменную.
floor() и frac() не проще? Во-первых, функции медленнее операторов. Во-вторых, тот же floor не работает так же, как и div. Пример: floor(-3.4)=-4 -3.4 div 1 = -3 Надо именно отбрасывать дробную часть, а не округлять.
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](http://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #194 : Январь 14, 2017, 20:51:17 » |
|
Ну да, с floor() я погорячился (хотя уверен, что видел функцию, отрывающую именно целую часть. Странно, что не могу ее найти). Тут в основном читаемость повышается - не надо объяснять, зачем мы это делаем, поскольку функция говорит сама за себя.
|
|
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
|