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
|
 |
« Ответ #195 : Апрель 12, 2017, 18:47:39 » |
|
мелкие скипты, возможно у многих уже есть такие, но если нет таких, то вот тут их оставлю, банальные конвертеры температуры из Цельсия в Кельвин, и наоборот /// conv_Celsius_to_Kelvin(val, mode) // * return real * //
var v = argument0; var m = argument1;
if (m) return max(v, -273.15) + 273.15; return max(v, 0) - 273.15;
Цельсий -> Фаренгейт /// conv_Celsius_to_Fahrenheit(Val, mode) // * return: real * //
var v = argument0; var m = argument1;
if (m) return max(v, -273.15) * 1.8 + 32; return (max(v, 459.67) - 32) / 1.8;
Цельсий -> Делиш /// conv_Celsius_to_Delisle(val, mode) // * return: real * //
var v = argument0; var m = argument1;
if (m) return 150 - max(v, -273.15) * 1.5; return 100 - max(v, 559.725) / 1.5;
Цельсий -> Ньютон /// conv_Celsius_to_Newton(val, mode) // * return: real * //
var v = argument0; var m = argument1;
if (m) return 0.33 * max(v, -273.15); return max(v, -90.1395) / 0.33;
Цельсий -> Ромер /// conv_Celsius_to_Romer(val, mode) // * return: real * //
var v = argument0; var m = argument1;
if (m) return 0.525 * v = max(v, -273.15) + 7.5; return (max(v, -135.904) - 7.5) / 0.525;
Банальное сложение времени, авось кому пригодиться, в качестве аргументов вводятся как строки, так и числа /// time_sum(hore1, min1, hore2, min2) // * return: array * //
var h0 = argument0; var m0 = argument1; var h1 = argument2; var m1 = argument3;
h0 = real(min(h0, 24)); h1 = real(min(h1, 24)); m0 = real(min(m0, 60)); m1 = real(min(m1, 60)); var a = 0; m0 = m0 + m1; a = m0 div 60; m0 -= a * 60; h1 = h0 + h1 + a; if (h1>24){h1 = h1-24} a[0] = h1; a[1] = m0; return a;
|
|
|
|
|
Записан
|
|
|
|
Anto96WS
Пользователь
 
Репутация: 6
Offline
Пол: 
API: GameMaker Studio Master
Деятельность: Разработчик ИИ
Сообщений: 59
Слаанешит и говнокодер
|
 |
« Ответ #196 : Июнь 27, 2017, 23:40:19 » |
|
Поиск значений списка, содержащих указанные через пробел слова. (Если перед словом поставить минус, то значения, содержащие это слово, будут исключены из результата) Возвращает список со значениями удовлетворяющими запросу. Зависимости: get_part(), find_char() из этой темы. Работоспособность: GM8, GM:S. /// list_scan(id, query)
var i, j, l, p, v, a, f; l =ds_list_create(); p =0;
while(true) if get_part(argument1, p +1, ' ') ='' break else p+=1; if !p return l;
for(i =0; i <ds_list_size(argument0); i+=1){ v =ds_list_find_value(argument0, i); a =1; for(j =1; j <=p; j+=1){ f =get_part(argument1, p, ' '); if string_char_at(f, 1) ='-' a&=!(string_pos(string_delete(f, 1, 1), v)) else a&=(string_pos(f, v)); } if a ds_list_add(l, v); }
return l;
Добавлено: Июнь 28, 2017, 00:22:12 Возвращает false, если точка(x, y, z) вне сферы с центром(x0, y0, z0) и радиусом r. /// inSphere(x, y, z, x0, y0, z0, r)
return ((sqr(argument0 -argument3) +sqr(argument1 -argument4) +sqr(argument2 -argument5)) <=sqr(argument6))
|
|
|
|
« Последнее редактирование: Июнь 28, 2017, 00:29:54 от Anto96WS »
|
Записан
|
Все, кто пойдёт против моей лени, будут изнасилованы, возможно зарезаны и возможно съедены.
|
|
|
ABSOSAK
Новичок
Репутация: -1
Offline
API: GameMaker Studio Pro
Сообщений: 10
|
 |
« Ответ #197 : Июнь 29, 2017, 16:21:42 » |
|
Скрипт изменения слоев при передвижении персонажа между обьектами 2.5D . Сортировка Z - порядок наложения. //Это НЕ родитель всех предметов //Вызываемый скрипт либо код в событии "шаг" //Назначить всем обьектам очередность слоев (номер слоя не должен повторяться) //Центр обьекта - нижний край //Центр персонажа - нижний край if y > obj_player.y { if depth>obj_player.depth { var z; z = depth; depth = obj_player.depth; obj_player.depth = z; } } else { if depth<obj_player.depth { var z; z = depth; depth = obj_player.depth; obj_player.depth = z; } }
|
|
|
|
|
Записан
|
|
|
|
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
Лисяток тебе.
|
 |
« Ответ #198 : Июнь 29, 2017, 19:58:28 » |
|
Скрипт изменения слоев при передвижении персонажа между обьектами 2.5D . Сортировка Z - порядок наложения. //Это НЕ родитель всех предметов //Вызываемый скрипт либо код в событии "шаг" //Назначить всем обьектам очередность слоев (номер слоя не должен повторяться) //Центр обьекта - нижний край //Центр персонажа - нижний край if y > obj_player.y { if depth>obj_player.depth { var z; z = depth; depth = obj_player.depth; obj_player.depth = z; } } else { if depth<obj_player.depth { var z; z = depth; depth = obj_player.depth; obj_player.depth = z; } }
Что это за мусор и зачем он нужен, если есть намного более простой, быстрый и функциональный depth=-y?
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
Neo
*LisenokArtist
GM Pro user
Репутация: 280
Offline
Пол:  Награды:   ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)
API: GameMaker Studio Free
Сообщений: 971
|
 |
« Ответ #199 : Ноябрь 26, 2017, 01:16:19 » |
|
Исправил из рекомендацииСкрипт для замены символа в указанной позиции: ///string_replace_char_at(string, char, pos) var s, c, p; s = argument0; c = string_copy(argument1, 1, 1); //Возьмет только первый символ. p = argument2;
s = string_delete(s, p, 1); s = string_insert(c, s, p);
return s;
Скрипт для автоматической вставки символов "#" для переноса строки при указании максимальной допустимой длины в пикселях. ///string_linebreak(string, width); var str, width; str = argument0; width = argument1;
var ws, lb, sl; ws = 0; // Записывает позицию нового слова lb = 0; // Записывает сколько было переносов строк sl = string_length(str); // Записывает сколько букв в строке
for (var i = 0; i < sl; i ++){ // Конвертирует указанную область строки в длину в пикселях var sw = string_width( string_copy(str, 0, i) ); // Обновляем позицию нового слова, если найдено if string_char_at(str, i) == " " ws = i; // Процесс переноса строки if sw - lb mod width >= width{ lb ++; str = string_delete(str, ws, 1); str = string_insert("#", str, ws); }}
return str;
|
|
|
|
« Последнее редактирование: Ноябрь 26, 2017, 16:53:09 от Neo »
|
Записан
|
|
|
|
SilentPhil
Norland
GM Pro user
Репутация: 479
Offline
Пол:  Награды: ![Первое место на HellRoom Jam #7 [Hell in Your Fridge] Первое место на HellRoom Jam #7 [Hell in Your Fridge]](http://forum.hellroom.ru/awards/9f62be4ccdd73fb5efadd1f34c96ed53_hj7_gold_original.gif)  ![За постоянность! [50 дней на форуме] За постоянность! [50 дней на форуме]](http://forum.hellroom.ru/awards/d09ba76b977b84fd4f5dcfae1f2918ff_hellroomforum_time_copper.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363
|
 |
« Ответ #200 : Ноябрь 26, 2017, 06:22:01 » |
|
Скрипт для автоматической вставки символов "#" для переноса строки при указании максимальной допустимой длины в пикселях. draw_text_ext? Не могу придумать юзкейс хранения текста с переносами.
|
|
|
|
|
Записан
|
|
|
|
Neo
*LisenokArtist
GM Pro user
Репутация: 280
Offline
Пол:  Награды:   ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)
API: GameMaker Studio Free
Сообщений: 971
|
 |
« Ответ #201 : Ноябрь 26, 2017, 13:05:23 » |
|
Скрипт для автоматической вставки символов "#" для переноса строки при указании максимальной допустимой длины в пикселях. draw_text_ext? Не могу придумать юзкейс хранения текста с переносами. ? Знаю. Мне не понравилось как эта функция работает в паре с string_copy, когда мне нужно было создать анимацию, где текст выводится постепенно: при выводе части слова оно остается на первой строке, но при полном выводе уже переносится на новую.
|
|
|
|
|
Записан
|
|
|
|
|
|
Neo
*LisenokArtist
GM Pro user
Репутация: 280
Offline
Пол:  Награды:   ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)
API: GameMaker Studio Free
Сообщений: 971
|
 |
« Ответ #203 : Ноябрь 26, 2017, 14:30:05 » |
|
А зачем string_replace_at? Есть же string_insert
string_replace_at я делал только для замены одного символа на другой. Название для скрипта не подходящее. Проблема возникает для string_linebreak: при вставке в позицию без удаления предыдущего символа длина строки увеличится, что не будет соответствовать размеру для цикла for, что может привести к потере конечной части строки (не будет обрабатываться?) Да, можно переписать его на основе string_insert. Так даже, может, проще получится.
|
|
|
|
|
Записан
|
|
|
|
Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](http://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #204 : Ноябрь 26, 2017, 15:00:47 » |
|
Да, можно переписать его на основе string_insert. Я как раз про это. str = string_delete(str, ws, 1); str = string_insert("#", str, ws);
|
|
|
|
« Последнее редактирование: Ноябрь 26, 2017, 17:30:03 от Dmi7ry »
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
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
Лисяток тебе.
|
 |
« Ответ #205 : Ноябрь 26, 2017, 15:12:24 » |
|
string_replace_at я делал только для замены одного символа на другой. Уже собирался пафосно написать str[i]='#' но внезапно вспомнил, что в гмл такого нет. Какого чёрта, ЁЁ? :\
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](http://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #206 : Ноябрь 26, 2017, 15:15:56 » |
|
но внезапно вспомнил, что в гмл такого нет. Ну, если ограничиться ASCII, то можно string_set_byte_at использовать.
|
|
|
|
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
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
|
 |
« Ответ #207 : Декабрь 12, 2017, 18:38:56 » |
|
Поскольку сам провозился дольше, чем следовало бы, делюсь скриптом на отражение (лучше как-то не формулируется). Вкратце: скрипт принимает направление отражающей линии и отражаемого направления и возвращает отраженное направление. Код с мини-документацией: ///direction_reflect(mirror, dir) /*------------------------------/ Используются градусы
mirror - линия, от которой будет отражен dir возвращает направление отраженной линии
!!!ВСЕ НАПРАВЛЕНИЯ ВЕДУТ _ОТ_ mirror, А НЕ К!!! Чтобы получить направление к mirror, нужно добавить 180 /------------------------------*/
var mir = argument0, dir = argument1, cross = dsin(dir)*dcos(mir) - dsin(mir)*dcos(dir);
//С какой стороны mir находится dir; это нужно для корректного определения нормали if sign(cross) == 1 { var n = mir + 90; } else { var n = mir - 90; }
var ref = 2*n - dir; return ref;
|
|
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](http://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #208 : Декабрь 12, 2017, 19:24:17 » |
|
Как уже говорил, угол отражения вычисляется одной строкой: var reflection = mirror + angle_difference(mirror, dir);
|
|
|
|
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
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
|
 |
« Ответ #209 : Декабрь 12, 2017, 19:29:36 » |
|
Как уже говорил, угол отражения вычисляется одной строкой: var reflection = mirror + angle_difference(mirror, dir); Это не то, что мне нужно. Ваш код создает угол, симметричный заданному, а мой - отраженный. Ось выступает в качестве поверхности отражения, а не симметрии.
|
|
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
|