Insomnia

Chessformer

Telepath Tactics

SomethingXD

Инди-подборка… уже двадцатая?!

Избранное пользователя

да просто типа такого

vars = {}
function SetValue(name, value)
vars[name] = value
end

function GetValue(name)
if vars[name] then return vars[name] end --если есть в таблице то возращаем значение
return nil --если нет то возвращаем nil
end

Реализация в годо несколько легче, потому что есть парсер
Пост на реддите

Возможные референсы из кино / литературы:

Маска красной смерти, Эдгар По (и фильм по нему)
Безликие из Игры престолов
Железная маска, Дюма
Nakitai Watashi wa Neko wo Kaburu - девочка превращается в кошку, надевая маску. (аниме)
Маска Зорро

Пятница 13, Крик (маньяк в маске)

Помпоко: Война тануки в период Хэйсэй (тануки (енотовидные собаки) могут превращаться в людей)

Десять негритят, А. Кристи (ну и многие другие детективы, как уже писала Тори Светлова)

Spy (недавний сериал с Сашей Барон Коэном) и наверное много чего ещё про шпионов.

Это же просто

return !is_undefined(anything) && anything != noone;

Можно #macro null noone, но не очень понимаю смысл экономить одну буковку.

null в GML нет, потому что там нет ссылок. Дескрипторы ресурсов, экземпляров объектов, структур данных и прочих штук — просто числа. noone — просто волшебная константа только для объектов, использовать её для других вещей (например, взамен undefined) не получится.

Везде продвигаться сложно. В твиттере все заточено под репосты, это значит что помимо качественного контента нужно заниматься нетворкингом и надеяться на то, что тебя репостнет человек с большой аудиторией. Хэштеги работают очень плохо, особенно всякие artistontwitter, которые выходят в топы, потому что их кроме таких же художников никто не смотрит.

В инсте все заточено под твою активность. Там большой чеклист того, что нужно делать, чтобы алгоритмы тебя продвигала: 3-4 поста в неделю, регулярные стори, 1-2 видоса в igtv в неделю. Короче нужно продать душу дьяволу. Покупка рекламы там работает плохо, если ты не продаёшь ничего и просто хочешь, чтобы на тебя подписалось больше людей. Все лайкают рефлекторно эту рекламу, которую видят и идут дальше, в профиль даже не заходят особо. Хэштеги работают, иногда самые неожиданные.

ВК - надо самому пиариться через предложение новостей в тематических группах и пытаться попасть во вкладку АРТ, здорово, если есть знакомый "эксперт", который может за тебя замолвить слово в кулуарных чатиках. Рекламу не брала, не знаю как работает.

Девиант давно хз что там происходит, судя по тому что читала там все так же надо массово постить свои арты в группах и участвовать в конкурсах. Но там публика специфичная.

Артстанция хороша как рабочее портфолио, там можно продвигаться за счет участия с массовых лайк-таймах. Свежую работу если залайкают, то она попадает на главную. Но работодателям на это пофиг, они все равно ищут профили художников не через главную страницу.

Попробуй TIC-80 0.51 версии или около того. У меня на старом нетбуке более поздние не работают.

Если требуется именно метод, наверное, можно так. Сделать скрипт

function SendMessage(instance, methodName) {
  var method = variable_instance_get(instance, methodName);
  if (is_method(method))
    method();
}

и вызывать его SendMessage(target, "Use_It"). Если нужно ещё аргументы пробрасывать, то вероятно сойдёт вот такая модификация:

function SendMessage(instance, methodName, arg1, arg2, arg3, ..., argСколькоНадо) {
  var method = variable_instance_get(instance, methodName);
  if (is_method(method))
    method(arg1, arg2, arg3, ..., argСколькоНадо);
}

поскольку непереданные аргументы инициализируются в undefined, как в JavaScript.

Сделай новый скрипт, назовём его допустим execute_if_exists(), внутри:

if (variable_instance_exists(id, argument0))
    if script_exists(argument0)
        script_execute_ext(argument0, argument1)
    else
        show_message_debug(string(argument0)+" script doesn't exist.")

https://manual.yoyogames.com/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_exists.htm

И вызывай execute_if_exists("Use_It", аргументы скрипта).

Насчёт is_method() не знаю , вроде бы не все функции являются методами.

Метод — это функция, привязанная к объекту (ну или структуре).

В if (is_method(Use_It)) может случиться ошибка, если Use_It не инициализирована, для надёжности можно ещё в одну проверку if (variable_instance_exists(id, "Use_It")) вложить. К сожалению, нельзя эти две проверки просто объединить через &&, потому что в GM он не short circuit, насколько помню.

Есть разника как объявлять функции. Как я помню в справке было написано, что функции, которые объявлены через обычный function functionName() видны в этом блоке кода, за исключением случаев когда они объявлены в скриптах. А если функцию присваивать переменной через functionName= function() то она попадает в область видимости всего объекта и должна быть доступна через with.

Вот тут можно почитать: https://www.yoyogames.com/blog/549/gamemaker-studio-2-3-new-gml-features

Проблема в том, что твой GAME идёт раньше, а ты в его событии Create делаешь with(o_test) UseIt(); а у самого o_test лишь в Step событии ты задаёшь функцию эту.

Но если появляется ошибка, значит в Game with(o_test) срабатывает, но причина всё равно в том, что определяешь ты уже после того, как вызываешь. Переставь определение функции в Create событие.

with (o_Events) {instance_deactivate_object(id);}

Но ведь:

instance_deactivate_object(o_Events)

И всё.

Для того чтобы не перечислять все объекты битвы или все объекты мирного режима, можно УНАСЛЕДОВАТЬ их соответственно от двух разных объектов типа o_battle_object и o_world_object и писать просто

instance_deactivate_object(o_world_object)

Там суть в том что проверяется 8 кругов вокруг центра, все на одинаковом расстоянии. И какой срабатывает, такой и отталкивает персонажа назад на 1 пиксел в противоположном направлении.

Z5Ci4YM

Синее расстояние - это third (одна треть от ширины спрайта), зелёное - это sixth (одна шестая, это радиус каждого круглого детектора коллизии).

Если многоугольники, то я пару часов назад Алексу сделал код, который как раз к этому случаю очень сильно относится. Собрал на ГМ8.1 демку.

https://www.dropbox.com/s/jw8n8wyjcphihma/FreeformWall.gm81?dl=0

Само собой ничего не бывает. Раз пошёл такой разговор, вот тебе мой старый проверенный 1 кг соды:

var sw = sprite_width
var sh = sprite_height

while collision_line(x,    y+1,  x,      y+sh-1, o_freeform_wall, true, true)
	x+=1					       
while collision_line(x+sw, y+1,  x+sw,   y+sh-1, o_freeform_wall, true, true)
	x-=1			       	      
while collision_line(x+1,  y,    x+sw-1, y,      o_freeform_wall, true, true)
	y+=1			  	 					  	      			   	 
while collision_line(x+1,  y+sh, x+sw-1, y+sh,   o_freeform_wall, true, true)
	y-=1

огибал эти небольшие препятствия и только останавливался при перпендикулярном столкновении

Ну окей, специально для тебя потратил полчаса времени, сломать не получилось, попробуй:

var third = ceil(sprite_width div 3)
var sixth = ceil(third div 2)

for (angle=0; angle<360; angle+=45)
{
	while collision_circle(x+sprite_width/2+lengthdir_x(third, angle),
                           y+sprite_height/2+lengthdir_y(third, angle),
                           sixth, o_freeform_wall, true, true)
	{
		x+=lengthdir_x(1,angle+180)
		y+=lengthdir_y(1,angle+180)
	}
}

малоиграбельна и все макетами. Но я перегорел пока совмещать требования двух жанров и не знаю стану ли допиливать. Если у кого хватит интереса глянуть и откомментить, то с удовольствием почитаю
https://yadi.sk/d/QS-3fKTzXDG88A

hYhCx0e

> Но разве совсем не было JRPG с вариативностью?
https://www.reddit.com/r/JRPG/comments/fgwoue/a_list_of_jrpgs_with_multiple_paths_points_of_view/

Йео запрещает делать JRPG на RPG Maker-е.
Хитро ухмыляясь, участники достают из широких штанин заранее подготовленный Official Hamster Republic Role Playing Game Construction Engine.

reddit.com/r/WebGames, если есть веб-версия у игры. Это где, например, есть люди, а саму игру можно и на итч положить, это не суть.

Кажется, там минимум троица-гмс-3д есть на ютубах. Помимо этого "дракона" есть TheSnidr (сделал "порт" Марио64 на ГМС2) и XorDev, правда последний скорее про редкие демонстрации чего-то, но тоже гмс3д.

Есть канал DragoniteSpam, в котором хорошо поясняют за 3д в гамаке как первом (более ранние видео), так и втором. Это не лучшее решение для 3д, но Wolfenstein3d стиль с трёхмерными статичными моделями можно сделать вообще не напрягаясь.

Нашел как отрисовывать предыдущий кадр: screen_refresh();

Сделал объект-паузу.
Событие нажатия кнопки:

global.is_pause = !global.is_pause
if (global.is_pause) {
    set_automatic_draw(false)
    instance_deactivate_all(true)
    draw_set_color(c_black)
    draw_text(view_wview/2-30, view_hview/2, '[PAUSE]')
    screen_refresh()
} else {
    instance_activate_all()
    set_automatic_draw(true)
}

Событие отрисовки можно оставить пустым.

А вы и дальше продолжайте скриншоты делать.