Хелп!Как сделать так,чтобы если строитель занят,то от какой-то переменной отнималась 1 единица,а когда он становился опять свободным-прибавлялось,я уже пытался сделать так: Когда мы задаем работу рабочему-отнимаем 1 от global.workers Когда он свободен-прибавляем 1 Но нужно сделать так,чтобы он прибавил 1 ОДИН раз а не пятьсот,ведь ясно,что пока он свободен будет капать рабочих до бесконечности,а пока он занят,рабочие будут уходить в минус!
На Google Drive всё ещё можно заливать игры - нужно лишь открыть доступ у папки, найти её ID (спрятан в части URL где-то в бесконечно изменяемых ими диалогах), и сделать адрес формата
Код
https://googledrive.com/host/ID
Я делал целую статью с картинками по этому поводу, но мой сайт сейчас временно не работает, а в архивной версии только текст. Пример.
В зависимости от целей, ещё может пригодится itch.io, gamejolt, kongregate, или newgrounds. Все из перечисленных поддерживают загрузку HTML5 игр. На itch.io рекламы нет и можно разрешить людям поддерживать разработку деньгами. На остальных есть реклама и разработчику выплачивается процент.
Быть может для этого можно создать МОД гта под наш город
Можно, люди ведь такими вещами занимаются в свободное от работы время. Поищите статьи\уроки\инструменты по этому поводу.
Предложение о Second Life тоже неплохо - игра несколько другой направленности, чем GTA, но инструменты для создания миров не нужно докачивать отдельно откуда-либо.
Раньше юзал как-то The ultimate D&D to GML converter. Но там, вроде, приходилось в ручную вводить кнопочные структуры.
Существует некоторое количество программ для преобразования DnD в GML, но, насколько я знаю, во всех из них был ручной ввод. Вероятно, причиной этому является тот факт, что все существующие форматы представления DnD (object information / GMK / GMX) имеют свои причуды и требует некоторого количества усилий для их полноценного разбора.
Создать список, занести значения, перемешать список, достать первые 8 значений: varlist; list = ds_list_create() for (vari = 0; i < 16; i += 1) ds_list_add(list, i) ds_list_shuffle(list) n_1 = ds_list_find_value(list, 0) n_2 = ds_list_find_value(list, 1) n_3 = ds_list_find_value(list, 2) n_4 = ds_list_find_value(list, 3) n_5 = ds_list_find_value(list, 4) n_6 = ds_list_find_value(list, 5) n_7 = ds_list_find_value(list, 6) n_8 = ds_list_find_value(list, 7) n_1 = ds_list_find_value(list, 0) ds_list_destroy(list) Но проблема правда вряд ли в этой части - даже для 8-ого значения шанс того что оно совпадет с каким-либо из предыдущих будет 1/2.
Поддерживает и GM8 и GMS. Кнопочки у обоих преимущественно одинаковые. Файл с описанием действий для их распознания дает неплохую картину происходящего -- несколько кнопок убрали, несколько добавили, в нескольких поменяли параметры. GMS-специфичный синтаксис и функции тоже поддерживаются, пример: vararray = undefined; vargrid = ds_grid_create(1, 1); array[0] = 1; grid[#0, 0] = array; show_debug_message(array_get(grid[#0, 0], 0)); // 1 array[@0] = 2; show_debug_message(array_get(grid[#0, 0], 0)); // 2
Flow, А для подобного вида работы требуется лишь подключиться к любой беспроводной сети, и можно хоть из другого города этим заниматься, если компьютер включен?
Да. Расстояние лишь определяет время между действием и изменением на экране (пока действие дойдет до компьютера и назад вернется обновление области экрана), но при наборе кода это не очень сильно мешает, если задержка невелика.
Если пока ещё ведется выбор устройства, упоминание планшетов на Win8[.1] это дельный совет - у меня на столе рядом с компьютером расположен Asus Vivotab Smart, и GMS на нем работает вполне нормально. Ещё выбор устройства на базе Windows позволит использовать его в качестве дополнительного монитора на основном компьютере с помощью Mouse Without Borders или Synergy. Одно лишь примечание - желательно приобрести какую-нибудь bluetooth клавиатуру, так как счастья в наборе кода на сенсорной клавиатуре очень мало.
Название: GameMaker' Visualizer Жанр: Программа/утилита Платформы: Веб Автор: YellowAfterlife (VK | Twitter) Ссылка: yellowafterlife.itch.io/gmvisualizer Описание: GameMaker' Visualizer это веб-программа с двумя основными функциями: 1. Подсветка DnD/GML: Программа может взять кусок кода или отрывок "object information", подсветить код/выражения/DnD иконки в них, и вывести HTML (для сайтов/блогов) или BB (для форумов) код. 2. Перевод DnD в GML: Если дать программе ранее упомянутый фрагмент "object information", она может перевести его в эквивалентный GML код. Процесс преобразования довольно точный и учитывает причуды DnD (к примеру, особенности обработки "applies to" для разных типов действий).
Скриншоты: Генерация BB кода:
Генерация HTML кода:
Перевод DnD в GML:
GIF-ка с вышеперечисленными:
О случаях использования:
Давайте предположим, что у вас есть это DnD событие:
И вам нужно отправить его на форум, будь то в качестве ответа на чей-то вопрос, или как часть урока. Обычно у вас есть несколько вариантов действий: А: Вставить его как "object information". В общем-то неплохо, но выглядит не очень хорошо:
Цитата
Keyboard Event for <Right> Key: repeat next action (block) move_speed times if relative position (1,0) is collision free for Only solid objects jump relative to position (1,0) else exit this event
Б: Вставить скриншот. Выглядит хорошо, несложно проделать, но не стоит забывать о маленьком факте того, что сайты не могут гарантировать вечного хранения файлов, и в какой-то момент времени картинка может "накрыться", вместе с удобством/возможностью читаемости записи. В: "Do it yourself" - вручную выделить интересующие части, расставить отступы, добавить картинки кнопочек. Выглядит хорошо, но занимает немало времени, поэтому этим никто особо не занимается.
А теперь о том, с чем вам может помочь GM' Visualizer. Вы вставляете в программу свой "object information" (или его фрагмент), нажимаете на кнопку, и получаете подсвеченный BB код:
Keyboard Event for <Right> Key: repeat next action (block) move_speed times if relative position (1,0) is collision free for Only solid objects jump relative to position (1,0) else exit this event (в данном случае мной была использована опция "use small icons" для компактности)
Как можно заметить, программа не только выдает код с изображениями для DnD значков, но и подсвечивает интересующие части (параметры) и выражения, чего даже сам GameMaker пока не делает.
А если нажать другую кнопку ("GML"), ваш DnD волшебно превратится в чистенький GML код:
Код
repeat (move_speed) if (place_free(x + 1, y)) { x += 1 } else { exit }
... который тоже можно подсветить, раз уж форумы всё равно особо не подсвечивают GML код: repeat (move_speed) if (place_free(x + 1, y)) { x += 1 } else { exit }
Ещё у программы открытый исходный код, который можно найти на Github. Не уверен, лучшее ли место данной теме в "готовых проектах", так как такое в идеальном случае крепится в разделе по GameMaker (что и было сделано на англ. форуме с согласия администрации). Должно быть полезным.
Сообщение отредактировал YellowAfterlife - Пятница, 12 Июня 2015, 23:03
Данная проблема - баг (ссылка на рапорт), который слишком уж неспешно исправляют. Ещё риведенный код можно немного упростить с помощью "else if" draw_set_font(font0) //заранее выбрать шрифт и вбить в него русский алфавит draw_text(10,10,string(str)) //рисуем строку
ifkeyboard_check_pressed(vk_anykey) //нажатие клавиши { ifkeyboard_check_pressed(vk_backspace) //бэкспейс { if (string_length(str) > 0) //в строке есть символы { str=string_delete(str,string_length(str),1) //удаляем последний символ } } elseifkeyboard_check_pressed(vk_delete) { str=string_delete(str,1,1) //удаляем первую букву } elseif !keyboard_check_pressed(vk_shift) { if (string_length(str) < 30) // максимум символов в строке { key=keyboard_lastchar//нажатая клавиша str += key//добавление буквы в строку } } } Такой подход вполне нормально работает, но имеет один дефект - при зажатии кнопки буквы не будут вводится\стираться с указанной в системных настройках клавиатуры скоростью, как это происходит при использовании обычного keyboard_string.
Сообщение отредактировал YellowAfterlife - Вторник, 09 Июня 2015, 09:28
device_mouse_check_button позволяет указать номер "мыши" (касания) что необходимо если хочется сделать мультитач (например, для "джойстиков" в углах экрана). mouse_check_button(b) работает как device_mouse_check_button(0, b).
Если искать в google images по запросу "swirl plant pattern texture" или "swirl flower pattern texture", можно найти много похожего. Упор на наличие в запросе "pattern" (узор). Можно и "seamless pattern" вместо "pattern texture".
Вариант 1: Записывать индекс комнаты: // сохранение: ini_open("some.ini") ini_write_real("room", "index", room) ini_close() // загрузка: ini_open("some.ini") if (ini_key_exists("room", "index")) { room_goto(ini_read_real("room", "index", -1)) } else { // INI нет вовсе или номер комнаты в нем не записан. } ini_close()
Вариант 2: Записывать имя комнаты и правильно его считывать: // сохранение: ini_open("some.ini") ini_write_string("room", "name", room_get_name(room)) ini_close() // загрузка: ini_open("some.ini") if (ini_key_exists("room", "name")) { room_goto(asset_get_index(ini_read_string("room", "name", ""))) } else { // INI нет вовсе или имя комнаты в нем не записано. } ini_close() (если версия 8.1 или ниже то заменить asset_get_index скриптом отсюда)
Сообщение отредактировал YellowAfterlife - Четверг, 28 Мая 2015, 20:09
Спасибо за совет... А по поводу разбирательства с кликом и движением... А как это будет выглядеть допустим на Андроиде? Ведь по сути там нет правой и левой кнопки мыши.
По умолчанию, два быстрых касания считаются GMS за клик правой кнопки мыши. В зависимости от игры, для мобильных платформ можно поменять функции ЛКМ/ПКМ местами, если двигать юниты игроку придется чаще, чем их выбирать.
Встроенное поведение можно так же отключить с помощью device_mouse_dbclick_enable и написать какую-то свою обработку - думаю, идею (то ли это будет задержка касания на юните, то ли кнопка для выбора, то ли что-то иное) можно подсмотреть в каких-нибудь существующих играх похожего рода.
Создание вспомогательного объекта (контроллера): global.unit_selected = -1 Событие глобального нажатия левой кнопки мыши для этого объекта: global.unit_selected = -1 with (obj_unit) { if (position_meeting(mouse_x, mouse_y, id)) { global.unit_selected = id } } События юнита, где нужна проверка на "выбранность": if (global.unit_selected == id) { // сейчас выбран данный юнит, можно реагировать на ввод пользователя. } Чтобы не разбираться с разграничением, когда клик должен выделять, а когда двигать юнитов, движение\следование за мышью можно установить на ПКМ (если оно еще не там).
В какой-то момент включение публичной папки убрали, и теперь ее можно получить лишь в составе платной подписки. Я писал запись о использовании Google Drive для прямых ссылок. GD регулярно переставляет кнопки по интерфейсу но функционал остается на месте.
(Например, в HTML фреймы обмениваются информацией в целом, один не может адресовать конкретный фрагмент другого)
Не совсем. В JS разрешается управлять содержимым iframe в документе если он находится на том же домене, в том числе и адресовать document/window iframe'а. Следовательно, при загрузке iframe можно просто присвоить ссылку на "внешний" документ в одну из переменных, и из iframe можно будет через эту переменную работать с содержащим его документом. А далее - дело техники - разработать набор функций, что позволят достаточно удобно находить нужный элемент в том или ином фрейме. Чтобы не разбрасываться пустыми словами, сделал пример, в котором ссылка в каждом из двух фреймов меняет содержимое отдельного элемента в другом.
Тогда я поигрался с глубиной, и теперь дерево растёт выше темноты ночной! Это плохо.
А чем это плохо? Разве дерево (по крайней мере, его ветви) не должно быть полностью черным и над всеми объектами, поскольку свет до его вершины его кроны никак достать не может?
Уточнение: Я имею в виду, что дерево не может быть "ярким"/"освещенным" в любом случае, поскольку свет на него сверху попадать не может. Следовательно, можно оставить его над всеми объектами, и просто затемнить с помощью какого-нибудь image_blend.
Сообщение отредактировал YellowAfterlife - Воскресенье, 10 Мая 2015, 17:54