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 (недавний сериал с Сашей Барон Коэном) и наверное много чего ещё про шпионов.
Можно #macro null noone, но не очень понимаю смысл экономить одну буковку.
null в GML нет, потому что там нет ссылок. Дескрипторы ресурсов, экземпляров объектов, структур данных и прочих штук — просто числа. noone — просто волшебная константа только для объектов, использовать её для других вещей (например, взамен undefined) не получится.
Везде продвигаться сложно. В твиттере все заточено под репосты, это значит что помимо качественного контента нужно заниматься нетворкингом и надеяться на то, что тебя репостнет человек с большой аудиторией. Хэштеги работают очень плохо, особенно всякие artistontwitter, которые выходят в топы, потому что их кроме таких же художников никто не смотрит.
В инсте все заточено под твою активность. Там большой чеклист того, что нужно делать, чтобы алгоритмы тебя продвигала: 3-4 поста в неделю, регулярные стори, 1-2 видоса в igtv в неделю. Короче нужно продать душу дьяволу. Покупка рекламы там работает плохо, если ты не продаёшь ничего и просто хочешь, чтобы на тебя подписалось больше людей. Все лайкают рефлекторно эту рекламу, которую видят и идут дальше, в профиль даже не заходят особо. Хэштеги работают, иногда самые неожиданные.
ВК - надо самому пиариться через предложение новостей в тематических группах и пытаться попасть во вкладку АРТ, здорово, если есть знакомый "эксперт", который может за тебя замолвить слово в кулуарных чатиках. Рекламу не брала, не знаю как работает.
Девиант давно хз что там происходит, судя по тому что читала там все так же надо массово постить свои арты в группах и участвовать в конкурсах. Но там публика специфичная.
Артстанция хороша как рабочее портфолио, там можно продвигаться за счет участия с массовых лайк-таймах. Свежую работу если залайкают, то она попадает на главную. Но работодателям на это пофиг, они все равно ищут профили художников не через главную страницу.
Метод — это функция, привязанная к объекту (ну или структуре).
В 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 событие.
Для того чтобы не перечислять все объекты битвы или все объекты мирного режима, можно УНАСЛЕДОВАТЬ их соответственно от двух разных объектов типа o_battle_object и o_world_object и писать просто
Там суть в том что проверяется 8 кругов вокруг центра, все на одинаковом расстоянии. И какой срабатывает, такой и отталкивает персонажа назад на 1 пиксел в противоположном направлении.
Синее расстояние - это third (одна треть от ширины спрайта), зелёное - это sixth (одна шестая, это радиус каждого круглого детектора коллизии).
Само собой ничего не бывает. Раз пошёл такой разговор, вот тебе мой старый проверенный 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
Кажется, там минимум троица-гмс-3д есть на ютубах. Помимо этого "дракона" есть TheSnidr (сделал "порт" Марио64 на ГМС2) и XorDev, правда последний скорее про редкие демонстрации чего-то, но тоже гмс3д.
Есть канал DragoniteSpam, в котором хорошо поясняют за 3д в гамаке как первом (более ранние видео), так и втором. Это не лучшее решение для 3д, но Wolfenstein3d стиль с трёхмерными статичными моделями можно сделать вообще не напрягаясь.
да просто типа такого
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 (недавний сериал с Сашей Барон Коэном) и наверное много чего ещё про шпионов.
Это же просто
Можно
#macro null noone
, но не очень понимаю смысл экономить одну буковку.null
в GML нет, потому что там нет ссылок. Дескрипторы ресурсов, экземпляров объектов, структур данных и прочих штук — просто числа.noone
— просто волшебная константа только для объектов, использовать её для других вещей (например, взаменundefined
) не получится.Везде продвигаться сложно. В твиттере все заточено под репосты, это значит что помимо качественного контента нужно заниматься нетворкингом и надеяться на то, что тебя репостнет человек с большой аудиторией. Хэштеги работают очень плохо, особенно всякие artistontwitter, которые выходят в топы, потому что их кроме таких же художников никто не смотрит.
В инсте все заточено под твою активность. Там большой чеклист того, что нужно делать, чтобы алгоритмы тебя продвигала: 3-4 поста в неделю, регулярные стори, 1-2 видоса в igtv в неделю. Короче нужно продать душу дьяволу. Покупка рекламы там работает плохо, если ты не продаёшь ничего и просто хочешь, чтобы на тебя подписалось больше людей. Все лайкают рефлекторно эту рекламу, которую видят и идут дальше, в профиль даже не заходят особо. Хэштеги работают, иногда самые неожиданные.
ВК - надо самому пиариться через предложение новостей в тематических группах и пытаться попасть во вкладку АРТ, здорово, если есть знакомый "эксперт", который может за тебя замолвить слово в кулуарных чатиках. Рекламу не брала, не знаю как работает.
Девиант давно хз что там происходит, судя по тому что читала там все так же надо массово постить свои арты в группах и участвовать в конкурсах. Но там публика специфичная.
Артстанция хороша как рабочее портфолио, там можно продвигаться за счет участия с массовых лайк-таймах. Свежую работу если залайкают, то она попадает на главную. Но работодателям на это пофиг, они все равно ищут профили художников не через главную страницу.
https://gamejolt.com/games/carnage/186679
https://store.steampowered.com/app/630720/Mana_Spark/
Попробуй TIC-80 0.51 версии или около того. У меня на старом нетбуке более поздние не работают.
Если требуется именно метод, наверное, можно так. Сделать скрипт
и вызывать его
SendMessage(target, "Use_It")
. Если нужно ещё аргументы пробрасывать, то вероятно сойдёт вот такая модификация:поскольку непереданные аргументы инициализируются в undefined, как в JavaScript.
Сделай новый скрипт, назовём его допустим execute_if_exists(), внутри:
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 событие.
Вот таймер
Но ведь:
И всё.
Для того чтобы не перечислять все объекты битвы или все объекты мирного режима, можно УНАСЛЕДОВАТЬ их соответственно от двух разных объектов типа o_battle_object и o_world_object и писать просто
Там суть в том что проверяется 8 кругов вокруг центра, все на одинаковом расстоянии. И какой срабатывает, такой и отталкивает персонажа назад на 1 пиксел в противоположном направлении.
Синее расстояние - это third (одна треть от ширины спрайта), зелёное - это sixth (одна шестая, это радиус каждого круглого детектора коллизии).
Если многоугольники, то я пару часов назад Алексу сделал код, который как раз к этому случаю очень сильно относится. Собрал на ГМ8.1 демку.
https://www.dropbox.com/s/jw8n8wyjcphihma/FreeformWall.gm81?dl=0
Само собой ничего не бывает. Раз пошёл такой разговор, вот тебе мой старый проверенный 1 кг соды:
Ну окей, специально для тебя потратил полчаса времени, сломать не получилось, попробуй:
малоиграбельна и все макетами. Но я перегорел пока совмещать требования двух жанров и не знаю стану ли допиливать. Если у кого хватит интереса глянуть и откомментить, то с удовольствием почитаю
https://yadi.sk/d/QS-3fKTzXDG88A
> Но разве совсем не было 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();
Сделал объект-паузу.
Событие нажатия кнопки:
Событие отрисовки можно оставить пустым.
А вы и дальше продолжайте скриншоты делать.