RS Game Maker Community

Разработка => Вопросы и ответы по GameMaker => Тема начата: deathsoul от 21 Апреля 2011 в 01:14



Название: Ответы@Gmakers.ru — все вопросы сюда
Отправлено: deathsoul от 21 Апреля 2011 в 01:14
Чтобы не было тем с вопросами, которые содержат всего два-три сообщения, все свои вопросы задавайтесь здесь. Если вопрос окажется слишком сложным для общей темы, модераторы всегда могут вынести обсуждение в отдельную тему.
Для этой темы действуют те же правила, что и для всего раздела, так что перед тем, как задать вопрос, обязательно ознакомьтесь с этой темой: «Ознакомьтесь, прежде чем задать вопрос (http://gmakers.ru/index.php?topic=5068.0)». И не забудьте проверить, нет ли ответа на ваш вопрос в FAQ по Game Maker (http://gmakers.ru/index.php?topic=4312.0).


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 24 Апреля 2011 в 22:31
Прива,у меня к тебе опять задачка):
1)Как мне сделать hud,который справа? Всё испробовал.А обычные туториалы не ориентируются на то,что у меня вид крутиться)
2)Скорее не задачка,а вопрос - где или как ты делал тени для объектов? (те самые альфа-какналы)


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 24 Апреля 2011 в 22:40
Как мне сделать hud,который справа? … вид крутится.
Версии, не проверял пока:
1) сделать два вида, один крутить, в другом рисовать хедап дисплей;
2) перед тем как рисовать хедап дисплей, сказать:
d3d_set_projection_ortho(0,0,640,480,0);

Edit: Оба варианта рабочие:[attachment=1][attachment=2]


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 24 Апреля 2011 в 23:35
Извини, но вопросы в теме для всех, и какая разница, кто тебе ответит? Вопросы формулируй хорошо, потому что они будут заносится в шапку и для того, что бы остальные тоже "знали о чем ты говоришь". Если так уж важно задать вопрос определенному человеку - личные сообщения. Флуд удаляю.


Название: Re: Ответы@Gmakers.ru
Отправлено: deathsoul от 24 Апреля 2011 в 23:36
Trofer, на форуме много людей, которые могли бы тебе помочь. tolich указал тебе на два лучших способа реализовать худ, на который не влияет поворот вида, и мне добавить нечего.

По-поводу теней - это делается прямо в GM, в редакторе спрайтов: Image -> Glow. Хотя, конечно, фотошоп подойдёт лучше.


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 24 Апреля 2011 в 23:39
Здравствуйте вновь. Хотел уточнить следующие:
У меня есть объект со спрайтом и маской, которая в разы меньше спрайта. Представили, да?
Могу ли я придумать что-нибудь подобное к функции instance_position(x,y,obj), только искать объект в (х,у) не по его маске, как трактует нам GM, а по самому спрайту? Дело в том что маска мне нужна для столкновений с другими объектами, а находить объект нужно именно по его картинке на экране.
Возможно ли вообще так сделать? Или можно придумать способ хитрее? Буду благодарен за любой ответ.


Название: Re: Ответы@Gmakers.ru
Отправлено: deathsoul от 24 Апреля 2011 в 23:52
Привет.
Дело в том, что механизм проверок столкновений в GM сделан именно для того, чтобы упростить жизнь игроделам, не заставлять их вникать в сложные геометрические форумулы, и, безусловно, ради производительности. Как-никак, GM интерпретатор, и ему легче обработать код, когда он знает, для чего предназначен этот кусок кода. Не буду вдаваться в очень уж очевидные подробности, но кое-что скажу: да, функция instance_position работает с масками. Объекту можно выбрать спрайт, маска которого будет использоваться как маска для этого объекта, если этого спрайта нет - естественно, используется маска основного спрайта объекта.

Заставить функцию instance_position работать с другой маской есть два способа:
1. Использовать несколько объектов с разными масками.
2. Изменить mask_index нужного объекта перед вызовом функции и после него.

Дерзай!  :)


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 25 Апреля 2011 в 00:27
Спасибо! :)
Думал можно легче как-нибудь. Все парюсь с этим быстродействием, пытаясь максимально облегчить работу для машины.
Думаю, 2й вариант как раз подойдет. У меня событие поиска вызывается в среднем 1-2 раза за шаг (40 FPS), и объектов штук 20-40. Скорее всего это намного лучше, чем писать собственный алгоритм столкновений дабы не менять маску.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 25 Апреля 2011 в 18:56
У меня вопрос как сделать чтобы объект моб был повёрнут 2 спрайтами к объекту игрок(игрок с лева спрайт 2,игрок  с право спрайт 3) (у меня платформа) а мобы тупые с 1 спрайтом (игрок сзади а они повёрнуты в другую сторону) заранее спасибо >.<


Название: Re: Ответы@Gmakers.ru
Отправлено: deathsoul от 25 Апреля 2011 в 19:46
У меня вопрос как сделать чтобы объект моб был повёрнут 2 спрайтами к объекту игрок(игрок с лева спрайт 2,игрок  с право спрайт 3) (у меня платформа) а мобы тупые с 1 спрайтом (игрок сзади а они повёрнуты в другую сторону) заранее спасибо >.<
Сравнивай x игрока с x моба. Это может выглядеть примерно так:
if o_player.x < x
    sprite_index = s_mob_1;
else
    sprite_index = s_mob_2;

А какая разница-то? Моб - это враждебный npc, то есть, враждебный персонаж, неуправляемый игроком.


Название: Re: Ответы@Gmakers.ru
Отправлено: Neuro от 25 Апреля 2011 в 22:25
Привет, ребят, новичок на этом форуме и полнейший нуб в game maker, про нуба - предупреждаю сразу.
Это везде написано (про мой вопрос, который ниже), я в курсе, но правда, никак не могу понять.
Сейчас делаю второй урок по Game maker - Colour Balls. Понимаю, что такое переменные, ifы, комнаты, все это представляю себе. Но вот что такое шаг (step) - ну никак не могу себе представить и понять. Обидно, есть хороший, проработанный проект в голове, очень хочется сделать, однако, конечно, сначала надо полностью разобраться в программе.
Совершенно не могу себе представить, что такое шаг. :(

Объясните популярно, максимально разжевав, что это такое, пожалуйста, кто-нибудь. :-\


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 25 Апреля 2011 в 22:43
'Шаг' выполняется каждый кадр, как и рисование, но до него.


Название: Re: Ответы@Gmakers.ru
Отправлено: deathsoul от 25 Апреля 2011 в 22:53
В Game Maker за секунду проходит определённое количество шагов. Это количество определяет переменная room_speed (её можно задать в свойствах комнаты: settings -> Speed). Событие step event называется событием шага именно потому, что оно выполняется каждый шаг. К примеру, если в событии step event объекта вы напишете код "score += 1", и установите скорость комнаты на 30 шагов, то за секунду переменная score увеличится на 30. Таким же образом, если вы напишите "image_speed = 1", то за секунду у спрайта сменится 30 кадров, потому что переменная image_speed хранит в себе значение, на которое изменяется кадр спрайта каждый шаг. То же относится и ко времени. Если вы напишете "alarm[0] = 1", то событие таймера произойдёт через 1/30 секунды (для общего случая - 1/room_speed).
(Из моего F.A.Q.)


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 25 Апреля 2011 в 23:45
http://gmakers.ru/index.php?topic=4719.0

Здесь я вроде бы расставил все точки над i.


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 26 Апреля 2011 в 01:11
А можно ли в ГМ достать уникальный номер (строку, код, имя, ...) компьютера? То, что на каждой машине будет разным. Вероятно, можно что-то с реестра вытянуть, но эти данные также легко подделать. Существует какой-либо рациональный способ?


Название: Re: Ответы@Gmakers.ru
Отправлено: deathsoul от 26 Апреля 2011 в 01:14
Мак-адрес подходит?
Хотя, наверняка, есть более надёжный способ получить уникальный код компьютера.

Не уверен, правда, на счёт его уникальности. Могу сильно ошибаться.
Вот dll: http://gmc.yoyogames.com/index.php?showtopic=375869


Название: Re: Ответы@Gmakers.ru
Отправлено: andy от 26 Апреля 2011 в 17:11
Такой вопрос.
Можно ли скрипт использовать как функцию? Т. е. если например у меня есть скрипт sc_myscript(blah,blah) и я пишу в execute code что-нибудь типа xx = sc_myscript(blah,blah), в переменную "хх" записывается результат работы скрипта.


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 26 Апреля 2011 в 17:13
Такой вопрос.
Можно ли скрипт использовать как функцию? Т. е. если например у меня есть скрипт sc_myscript(blah,blah) и я пишу в execute code что-нибудь типа xx = sc_myscript(blah,blah), в переменную "хх" записывается результат работы скрипта.
Да, ведь функция это тоже по сути скрипт. Только написанная на C++ Delphi, а не на GML.


Название: Re: Ответы@Gmakers.ru
Отправлено: andy от 26 Апреля 2011 в 17:20
Dukat863, а как тогда указать, какое значение возвращается через саму функцию, т. е. скрипт? Пробовал тупо писать в тексте скрипта выражение типа "sc_myscript = argument0 + argument1", как в паскале, не работает.


Название: Re: Ответы@Gmakers.ru
Отправлено: deathsoul от 26 Апреля 2011 в 18:33
Для этого используется оператор return.
Пример простейшего скрипта:
return (argument0 + argument1) / 2;


Название: Re: Ответы@Gmakers.ru
Отправлено: andy от 26 Апреля 2011 в 19:20
А, ясно, спасибо :)


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 26 Апреля 2011 в 19:52
Сравнивай x игрока с x моба. Это может выглядеть примерно так:
if o_player.x < x
    sprite_index = s_mob_1;
else
    sprite_index = s_mob_2;

Сяп, ноу меня встречный вопрос, моб в стене "давится"  ;D  :'( плиз помоги


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 26 Апреля 2011 в 20:25
Конкретнее нужно проблему описывать. Что значит "давится"?


Название: Re: Ответы@Gmakers.ru
Отправлено: andy от 26 Апреля 2011 в 20:31
Ogion, я так понимаю, имеется в виду застревание моба в стенке из-за смены спрайта и соответсвенно collision mask'a.

RAY2, попробуй поставить обоим спрайтам моба одинаковые координаты origin'a (в настройках спрайта) и вручную поставить одинаковые collision mask'и (прямоугольные).


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 26 Апреля 2011 в 21:40
RAY2, попробуй поставить обоим спрайтам моба одинаковые координаты origin'a (в настройках спрайта) и вручную поставить одинаковые collision mask'и (прямоугольные).

чААААггггоооо???????andy я нуб в гм оболдел мне мозги ломать? чо это значит?   :o  :D

2 минуты спустя Оо оО ОО оо
ну типа поставил маску прямоугольную, но всё равно эффект тот же(((


Конкретнее нужно проблему описывать. Что значит "давится"?
уничтожается,исчезает,проподает,идёт в энвиз,деадит. И тому подобное, мне надо что бы он не уничтожался а то игра не выходит


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 26 Апреля 2011 в 22:29
Что у тебя в столкновении со стеной?


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 27 Апреля 2011 в 16:03
Что у тебя в столкновении со стеной?

if (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270);
vspeed = 0;


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 30 Апреля 2011 в 15:41
У меня опять вопрос.Почему у меня объект исчезает?


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 30 Апреля 2011 в 16:07
Худ? Привяжи его lenghdirами, меняй поворот с поворотом вида, при изменении масштаба - меняй размер спрайта.


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 30 Апреля 2011 в 16:48
пожалуйста,пришли пример,я в gm полный ...


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 01 Мая 2011 в 15:49
Добрый день(утро,ночь,вечер) хочу спросить первое:
У меня не получается сделать так, чтобы очки(score:...) накапливались при столкновении с объектом. я делаю так:
Создаю объект(чел)obj_man  задаю ему код на управление и в событии collision with ...объект(бонус)obj_bonus пишу так: set the score to +100     (эт событие готовое а не код). но когда я начинаю играть почему-то он даёт только 100. помогите как сделать так, чтобы он набирааал очки.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 01 Мая 2011 в 15:54
http://gmakers.ru/index.php?topic=5068.0
http://gmakers.ru/index.php?topic=4312.0
http://gmakers.ru/index.php?topic=5335.0


Название: Re: Ответы@Gmakers.ru
Отправлено: deathsoul от 01 Мая 2011 в 16:40
http://gmakers.ru/gamemaker_help/source/files/112_05_score.php
Иногда Вам требуется добавлять некоторое количество очков к текущему, в этом случае не забудьте отметить Relative.


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 01 Мая 2011 в 17:27
всё равно не прёт чота :-\.(не обвинять меня в использовании чьих то спрайтов(я их со временем заменю))


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 01 Мая 2011 в 17:44
всё равно не прёт чота :-\.(не обвинять меня в использовании чьих то спрайтов(я их со временем заменю))
Конечно, не прёт, ты же галочку напротив "Относительно"  у всех объектов не поставил, а вместо этого 20 непонятно зачем объектов создал.


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 01 Мая 2011 в 20:28
помогите пожаль опять. я ничего не понимаю... :-\  вот сделал 1 уровень(пробный) игры. там надо будет в будующем бегать убивать мостров копить опыт получать новый уровень.(опыт вместо очков(уровень вместо здоровья(жизни - они всегда))) пока у меня пробник(открываешь спомошью кнопки дверь к бонусам но начинается хаос как подберешь их) мне надо чтобы уровень поднимался с 1000, 2500, 5000, 10000 и т.д. опыта и плюс по несколко жизней. но у меня не  может остановится счетчик. проверте что не так. скажите иль прикрепите готовый исправленный экзымпляр.   (заранее спс). :empathy:


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 01 Мая 2011 в 20:31
извените в последней версии лагает фпс. поправил :-[


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 01 Мая 2011 в 21:29
Худ? Привяжи его lenghdirами, меняй поворот с поворотом вида, при изменении масштаба - меняй размер спрайта.
Объясните получше пожалуйста :'( :'(


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 01 Мая 2011 в 23:38
извените в последней версии лагает фпс. поправил :-[
Ставь получение опыта не в Step, а в столкновение с бонусом.


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 02 Мая 2011 в 11:19
а что мне надо сделать чтобы не все сразу объекты (один объект * 10) а только 1 сдох а остальные копии живы? проблемы с ИИ и + с бонусами.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 02 Мая 2011 в 11:33
У каждого экземпляра объекта есть id. Идентификатор, уникальный номер. Для того, чтобы уничтожить конкретный экземпляр, нужно использовать with:
with (id) instance_destroy();
Вместо id нужно подставить идентификатор.
А вот как получить нужный идентификатор - это уже другой вопрос. Вот здесь (http://gmakers.ru/index.php?topic=5258.msg56256#msg56256) tolich описал самые ходовые случаи. В справке в разделе "Игровой процесс => Экземпляры" все функции описаны. Разбирайся.
Про очки уже все сказали.
Про ИИ расскажи поподробней, телепаты в отпуске.


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 02 Мая 2011 в 11:38
про ИИ говорю:

У меня ии бегают просто так(не врезаясь в стены убегают) что делать? :hmm:


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 02 Мая 2011 в 12:13
У меня ии бегают просто так(не врезаясь в стены убегают) что делать? :hmm:
У объекта "ии" делать обработчик события "столкновение" с объектом "стена".


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 02 Мая 2011 в 13:11
 :'( :'( :'( :'( :'( :'( :'( :'( :'(

У нас флуд запрещен вообще-то. Чтоб в первый и последний раз. Хорошо? Ogion.


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 02 Мая 2011 в 14:09
Мне никто не отвечает(
Я сделал так, как посоветовал tolich, но у меня на экране показывается или только объект,или hud, приер этого я уже выкладывал,но выкладываю ещё раз.
Помогите плиз,не могу из-за этого продолжить((


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 02 Мая 2011 в 15:09
У тебя там целый букет разнообразных ошибок. Похоже, основная состоит в depth=-y.


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 02 Мая 2011 в 15:19
Спасибо,с объектом ты мне помог - он перестал исчезать, но вот hud до сих пор исчезает, и можешь пожалуйста поподробнее рассказать про мои ошибки.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 02 Мая 2011 в 15:29
Слишком много всего, чтобы это можно было перечислить.
Вот тебе исходник, который я как-то делал, посмотри, как там рисуются зачатки интерфейса.


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 02 Мая 2011 в 20:29
Хочу спросить вас.... вот у меня норм игра всёкатит, кроме одного. Когда перехожу в новую комнату очки теряются. что делать?


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 02 Мая 2011 в 20:36
http://gmakers.ru/index.php?topic=4312.0
II.1.11.

Задавать вопросы, ответы на которые есть в F.A.Q., у нас запрещено.


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 02 Мая 2011 в 20:39
сори не знал что там есть
 :-[ :-[ :-[ :-\ :-\ :-\


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 02 Мая 2011 в 20:49
А как можно было узнать, не посмотрев?

Меньше смайликов ставь.


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 02 Мая 2011 в 21:09
Совершенно не помогло.
Во-первых не нашёл замены text_transformed, у меня hud - картинка.
Во-вторых нифига из этого я не понял, и этот пример совершенно не подходит под мою игру,её управление.
Короче я всё ещё на мели... :'(


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 02 Мая 2011 в 21:35
Задавать вопросы, ответы на которые есть в F.A.Q., у нас запрещено.
Ogion, По твоему, каждый новичок должен знать фак наизусть? Им довольно неудобно пользоваться, из за особенностей нашего форума. Вывод - выпускай *.chm, там и поиск, и указатель, и структурированное оглавление...


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 02 Мая 2011 в 21:57
знать фак наизусть?
Разве это не ругательство?
Хотя-бы на FAQ исправь...


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 02 Мая 2011 в 22:25
Нет, я это слово ругательством не считаю. Сука - тожу не ругательство.


Название: Re: Ответы@Gmakers.ru
Отправлено: Trofer от 02 Мая 2011 в 22:41
ПАМАГИТЕ!!!!?!

Три дня ридОнли за флуд и игнорирование предупреждений.


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 03 Мая 2011 в 01:34
Спс всем кто помогал. вот первая моя игра


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 03 Мая 2011 в 14:57
Сюда свою игру выкладывать не нужно, тема - для вопросов. Есть раздел "Законченные проекты", там можно смело создать тему. Это настолько сложно?


Название: Re: Ответы@Gmakers.ru
Отправлено: Я_Новичок! от 03 Мая 2011 в 19:41
Я извиняюсь если ответ есть в
каждый новичок должен знать факе наизусть? Им довольно неудобно пользоваться, из за особенностей нашего форума.
но вот как сделать так, чтобы я прикасаюсь к объекту он теряет жизнь(всего по коду у него  hp=10) когда жизни 0 он меняется на какой либо объект. какой надо писать код и в каком событии а?  ПОМОГИТЕ


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 03 Мая 2011 в 21:02
чтобы я прикасаюсь к объекту он теряет жизнь
Это же очевидно, что в событии столкновения. Написать можно так:
hp-=1
когда жизни 0 он меняется на какой либо объект.
Это надо проверять в степе.
if (hp=0) {/*меняешь объект*/}

Собственно, это самое примитивное, оно есть и в FAQ, и в справке.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 04 Мая 2011 в 10:22
чтобы я прикасаюсь к объекту он теряет жизнь
Это же очевидно, что в событии столкновения. Написать можно так:
hp-=1
когда жизни 0 он меняется на какой либо объект.
Это надо проверять в степе.
if (hp=0) {/*меняешь объект*/}

Собственно, это самое примитивное, оно есть и в FAQ, и в справке.
1) Как вариант: можно использовать стандартную переменную health, когда она уменьшается до 0 или ниже, возникает событие No more health.
2) Как вариант: можно определить триггер No more HP "hp<=0" и тогда будет возникать событие триггер No more HP (собственно, для этого триггеры и придуманы).


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 04 Мая 2011 в 21:28
Как придать переменной значение в три случайных буквы и две случайных цифры (ран-12, гуи-83, лвн-92, оуи-55 и т.п.)? Хотелось как-то вынести в скрипт, но что-то не выходит, поможете?


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 04 Мая 2011 в 21:44
пожалуйста! ;)
t = chr(irandom_range(192, 223)) + chr(irandom_range(192, 223)) + chr(irandom_range(192, 223)) + ' - ' + string_format(irandom(99), 2, 0);


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 04 Мая 2011 в 22:47
Спасибо.

И еще вопрос:

var1=kakoy-to tekst
var2=12345
draw_text(x,y,"eshe kakoy-to tekst" + var1) //работает
draw_text(x,y,"eshe kakoy-to tekst" + var2) //не работает

То есть если пытаться написать числовую переменную вместе с каким-то текстом - вылетит ошибка, что так нельзя. А как поступать?


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 04 Мая 2011 в 22:59
draw_text(x,y,"eshe kakoy-to tekst" + string(var2)) //заработало


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 09 Мая 2011 в 23:23
Как сделать так, что бы текст писался не одной строкой, а с определенной шириной? Я знаю, что можно писать с новой строки с помощью "#", но хотелось бы как-то автоматизировать.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 09 Мая 2011 в 23:33
Используй draw_text_ext(),string_width_ext(),string_height_ext().


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 09 Мая 2011 в 23:35
Спасибо, попробую.
Вот я нуб-то  :crazy:


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 09 Мая 2011 в 23:47
draw_text_ext(x,y,string,sep,w) Подобно предшествующей программе, но Вы теперь можете определить ещё две вещи. Прежде всего, sep - указывает расстояние разделения между строками текста в многострочном тексте. Используйте -1, чтобы получить расстояние по умолчанию. Используйте w, чтобы указать ширину текста в пикселях. Строки, которые более длинные, разделяются шириной в пробелах или знаках. Используйте -1, чтобы не разбивать строки.

EDIT: Чтоб сдох этот хостинг


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 10 Мая 2011 в 15:34
Господа хорошие!
Как лучше всего реализовать твёрдые стены, если вид сверху и комнаты создаются с тайлсетом?
Поясню - у меня обычная 2D maze game. С кучей разнообразных стен и полов.
Полы и стены, соответственно, в разных тайлсетах.
Если каждый кусочек стены создавать в виде твёрдого объекта, очень неудобно будет рисовать комнаты (а их тоже много).
Пока что на ум приходит очевидное решение - создать невидимый объект-заглушку, но комнаты-то большие! И вставлять кучу таких заглушек тоже никакого терпения не хватает.
Можно ли как-нибудь назначить твёрдость тайлсету со стенами?
И второй вопрос - можно ли назначить твёрдость только НЕКОТОРЫМ тайлам из сета  (очень хочется, чтобы тайлсет был один, но это нереально, наверное)?
Заранее спасибо!


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 10 Мая 2011 в 16:11
Создай просто черный квадрат, добавь ему все свойства стены. Это она и будет. Расставляй их, как тебе надо.
А для графики используй тайлы. В редакторе комнаты они есть, просто вручную накладывай нужный тайл на стены.
А то, как я понял из вопроса, у тебя каждый тайл отдельным объектом?


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 10 Мая 2011 в 16:26
Да нет, у меня всё тайлсетом.
Ты мне предложил как раз то, от чего я и хотел уйти - поставить заглушки. Но комнаты большие и 2000-2500 заглушек ставить в каждой - это в два раза дольше получается.
Но всё равно спасибо! Так и буду делать, пожалуй.
Ещё вопрос (чтоб два раза не бегать) -
В комнатах есть несколько лестниц вниз и наверх. Они ведут в разные места. Ближайший ориентир - система подземелий в Heroes of Might and Magic. С "поверхности" можно войти в "подвал" или на "чердак". Иногда надо сделать так, чтобы лестниц на чердак было две. Они обе ведут на один и тот же чердак, но в разные места. Никак не пойму как мне это сделать, потому что "Go To Room" это не совсем то, что нужно.
Видимо, там какая-то заморочка с "Next" и "Previous"...
Как мне с этим справляться?


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 10 Мая 2011 в 16:32
Есть такая вещь как глобальные переменные.
В неё записываешь из какой лестницы пришёл, а в следующем уровне позиция персонажа устанавливается в зависимости от значения переменной.


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 10 Мая 2011 в 16:33
Да нет, у меня всё тайлсетом.
Ты мне предложил как раз то, от чего я и хотел уйти - поставить заглушки. Но комнаты большие и 2000-2500 заглушек ставить в каждой - это в два раза дольше получается.
Но всё равно спасибо! Так и буду делать, пожалуй.
Ещё вопрос (чтоб два раза не бегать) -
В комнатах есть несколько лестниц вниз и наверх. Они ведут в разные места. Ближайший ориентир - система подземелий в Heroes of Might and Magic. С "поверхности" можно войти в "подвал" или на "чердак". Иногда надо сделать так, чтобы лестниц на чердак было две. Они обе ведут на один и тот же чердак, но в разные места. Никак не пойму как мне это сделать, потому что "Go To Room" это не совсем то, что нужно.
Видимо, там какая-то заморочка с "Next" и "Previous"...
Как мне с этим справляться?
Может, присваивать игроку координаты именно этого экземпляра лестницы? Здесь надо ещё, правда, с ID помучаться.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 10 Мая 2011 в 16:45
Да нет, у меня всё тайлсетом.
Ты мне предложил как раз то, от чего я и хотел уйти - поставить заглушки. Но комнаты большие и 2000-2500 заглушек ставить в каждой - это в два раза дольше получается.
Но всё равно спасибо! Так и буду делать, пожалуй.
Ещё вопрос (чтоб два раза не бегать) -
В комнатах есть несколько лестниц вниз и наверх. Они ведут в разные места. Ближайший ориентир - система подземелий в Heroes of Might and Magic. С "поверхности" можно войти в "подвал" или на "чердак". Иногда надо сделать так, чтобы лестниц на чердак было две. Они обе ведут на один и тот же чердак, но в разные места. Никак не пойму как мне это сделать, потому что "Go To Room" это не совсем то, что нужно.
Видимо, там какая-то заморочка с "Next" и "Previous"...
Как мне с этим справляться?

Есть хинт. Кроме объектов, например 32х32, создай еще 32х128 и 128х32. Т.е. длинные. И там, где можно - "экономь", ставя один большой, вместо четырех маленьких. Или не четырех. Как угодно.

Координаты могут не совпасть. Такое решение:
У каждой лестницы создай переменную и соответствующим лестницам поставь одинаковые значения.
У игрока при выходе запоминай в глобальную переменную значение.
Создавай игрока по координатам лестницы с нужным значением.


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 10 Мая 2011 в 16:56
(http://clip2net.com/clip/m0/1305028508-untitled-1-copy-119kb.jpg)
Вот то, что я пытаюсь сделать.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 10 Мая 2011 в 17:42
Вот тебе пример с двумя комнатами и лестницами. По этому принципу можно сделать их еще больше. Комментарии не проставлены, но там все просто, если что - уточняй.


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 10 Мая 2011 в 18:05
Вроде, всё понял.
Спасибо огромное!


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 10 Мая 2011 в 18:11
Как лучше всего реализовать твёрдые стены, если вид сверху и комнаты создаются с тайлсетом?
Поясню - у меня обычная 2D maze game. С кучей разнообразных стен и полов.
Полы и стены, соответственно, в разных тайлсетах.
Итак, мысль такова:
1) создать солидный объект (например obj_allwalls) без спрайта, добавить его в комнату в координаты x=0,y=0,
2) создать сурфейс, назначить таргетом и закрасить черным цветом
3) перебрать все тайлы в комнате
3а) их id начинаются от где-то 10000001, но первый и последний номера можно просмотреть в редакторе комнаты), tile_exists(id) позволит уточнить есть такой тайл или нет,
3б) просто смотреть tile_layer_find(depth,x,y) по всей комнате,
4) для каждого тайла проверить tile_get_background(id)==bk_tiles_walls (например), если совпадает, нарисовать белый прямоугольник по месту и размеру тайла,
5) obj_allwalls.sprite_index=sprite_create_from_surface(surface,0,0,w,h,0,0,0,0) бак не удалять!
6) sprite_set_alpha_from_sprite(obj_allwalls.sprite_index,obj_allwalls.sprite_index)
7) сбросить таргет, удалить сурфейс :)

Теперь у объекта спрайт размером с комнату с дырками в тех местах, где нет нужных тайлов.

И еще: я это не сам придумал, а видел в примере, в котором маска генерировалась вообще произвольной формы, просто рисовалась игроком!


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 10 Мая 2011 в 18:12
Теперь у объекта спрайт размером с комнату с дырками в тех местах, где нет нужных тайлов.

Вариант толковый, но не будет тормозить?


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 10 Мая 2011 в 18:35
Тот самый пример не тормозит, а он меняет маску вообще по ходу рисования. К слову, вот он:[attachment=1]
DeatHSoul
;D Надо полагать, он перевёл комментарии.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 10 Мая 2011 в 19:12
Лучше не рисовать на сурфейсе, а создавать объекты. Карта же статичная. И производительность не уйдет в ноль из-за огромного объекта с точной проверкой столкновений.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 10 Мая 2011 в 19:21
Или так.


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 10 Мая 2011 в 19:36
а ещё можно создать 2х мерный массив, в него загнать значения: 0 - нет стены, 1 - есть стена


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 10 Мая 2011 в 19:41
Лучше не рисовать на сурфейсе, а создавать объекты. Карта же статичная. И производительность не уйдет в ноль из-за огромного объекта с точной проверкой столкновений.
В первой комнате, объект со спрайтом 512х512 и точной проверкой столкновений.
Во второй комнате, в криэйшен код, цикл создающий 262144 объектов со спрайтом 1 пиксель.
В первой комнате, ФПС 520.
Во второй - 0.
Вообще, сильно не вдавался в зависимость производительности от размера спрайта, но лучше один большой, чем куча мелких.
Самый вариант у ГоКа


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 10 Мая 2011 в 19:57
а ещё можно создать 2х мерный массив, в него загнать значения: 0 - нет стены, 1 - есть стена
Так новичков учили в одном из уроков карты с помощью скрипта загружать.


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 10 Мая 2011 в 20:02
Причем здесь загрузка карт скриптом?


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 10 Мая 2011 в 20:18
В первой комнате, объект со спрайтом 512х512 и точной проверкой столкновений.
Во второй комнате, в криэйшен код, цикл создающий 262144 объектов со спрайтом 1 пиксель.
В первой комнате, ФПС 520.
Во второй - 0.
Ну зачем так утрировать, достаточно 256 объектов 32x32.


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 10 Мая 2011 в 20:36
Кстати, да, достаточно. ФПС в два раза ниже, чем в комнате со огромным спрайтом )


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 10 Мая 2011 в 20:51
Так новичков учили в одном из уроков карты с помощью скрипта загружать.
да не, я про то что если хранить "стены" в массиве, то можно обойтись вообще без спрайтов и стандартных столкновений, и работать это будет в разы быстрее.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 10 Мая 2011 в 20:54
Илья, а ты сделай комнату 20000x20000. У объектов не забудь убрать точную проверку столкновений. Сделай их размером 32x32, добавь вид 640x480 и деактивируй объекты вне вида.
Вы все еще думаете, что огромный объект с точной проверкой столкновения лучше?


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 10 Мая 2011 в 21:39
Огион, я все еще думаю, что массивы - идеальное решение. Объект в ГМ содержит в себе over9000 всяких переменных, что не гуд. Следовательно, если будеш делать такие локации объектами, прийдется докупать оперативку.
Сурфейс - тоже хлам. У меня из за них не прут некоторые ГМ игры (всмысле, корректно).
Так что, массивы или сетки. (А еще лучше, компиляция/интерпретация дллка с картой на Си/Делфи)


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 10 Мая 2011 в 21:52
А можно подробнее? Про массивы.
Ну допустим сетка с квадратом 32х32.
3 на 3 клетки, всего 9, в центре одна твердая:
qqq[0,0]=0
qqq[1,0]=0
qqq[2,0]=0
qqq[0,1]=0
qqq[1,1]=1 //вот она
qqq[2,1]=0
qqq[0,2]=0
qqq[1,2]=0
qqq[2,2]=0
Так? Тут понятно. Расставить вручную, хранить где-либо в объекте, скрипте или внешнем файле.
Но как эти цифры превратить в стены, то есть сами столкновения как организовать?


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 10 Мая 2011 в 22:07
Элементарно. При движении персонажа проверяешь, занята клетка, в которой он окажется, или нет. По координатам очень легко проверяется.


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 10 Мая 2011 в 22:08
вычисляешь клетку в к-ой стоит гг:
gx = round(x / 32);
gy = round(y / 32);
а дальше проверяешь массив:
if qqq[gx + 1, gy]=1 //значит клетка справа от гг со стеной, и идти вправо нельзя
if qqq[gx - 1, gy]=1 //значит клетка слева от гг со стеной
if qqq[gx, gy + 1]=1 //значит клетка снизу от гг со стеной
if qqq[gx, gy - 1]=1 //значит клетка сверху от гг со стеной
и тд

Расставить вручную
неудобно же!

в Креате объекта Control:
for (i = 0; i < room_width / 32; i += 1) {
    for (j = 0; j < room_height / 32; j += 1) {
        qqq[i, j] = 0; // создаём массив на всю комнату и заполняем его нулями
    }
}
with (obWall) { // во всех объектах стен (расставлены в комнате, как обычно)
    qqq[x / 32, y / 32] = 1; // отмечаемся в массиве
    instance_destroy(); // и самоликвидируемся за ненадобностью
}

вместо массива можно использовать ds_map, она вроде быстрее работает.


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 11 Мая 2011 в 02:35
Снова вопрос.
Подскажите пожалуйста, как сделать прикреплённый к левому верхнему углу экрана интерфейс,
состоящий из пяти пузырьков (мана) и хелсбара под ними?!

Вот такого вида -
() () () () ()  <-- Мана (спрайты бутылочек, появляются по мере нахождения их в игре, максимум - 5 шт.)
[========] <-- Здоровье

Я курю хелпы по языку, туториалы и тэде, но НИЧЕГО не понимаю.


Название: Re: Ответы@Gmakers.ru
Отправлено: yoshy от 11 Мая 2011 в 08:03
По примеру выше, что будет работать быстрее хелбары нарисовынные самим гм или же с использованием уже готовых изображений? Или же правила приличия гм требуют минимализма веса игры,а следовательно вся графика рисуется только самим гм?


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 11 Мая 2011 в 10:35
А в чём собственно проблема: в рисовании спрайта в нужном количестве, в рисовании хелсбара или в привязке того и другого к виду?


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 11 Мая 2011 в 11:29
Буня, читай в FAQ раздел о рисовании, там все это есть.
Бутылочки можно рисовать через цикл, например, так:
space=8; //расстояние между бутылочками
bottle_width=sprite_get_width(s_bottle); //ширина спрайта бутылочки; вместо s_bottle подставь название своего спрайта
var i=0;
repeat (mana) //mana - переменная маны, то есть этот блок повторяется столько раз, сколько у нас маны.
{
draw_sprite(s_bottle,0,view_xview[0]+4+i*space+i*bottle_width,view_yview[0]+4);
i+=1;
}
Код не проверял, но вроде должен работать.

yoshy, производительность не менее важна, чем вес игры. Рисовать спрайт быстрее, чем рисовать примитив.
На самом деле, разница не такая уж значительная. XXI век все-таки. Так что делай как тебе удобнее.
Спрайты занимают всего ничего, а вот музыку и звуки нужно выкидывать или сжимать, если игра много весит.


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 11 Мая 2011 в 12:29
А в чём собственно проблема: в рисовании спрайта в нужном количестве, в рисовании хелсбара или в привязке того и другого к виду?
Во всём!
Я по гуманитарности своей не понимаю принципа привязки интерфейса к виду, систему видов в целом, систему отрисовки спрайтов...
Если честно, то у меня падает самооценка с каждым часом, проведённым за GM и мануалами.

Ogion! Спасибо, помогло! Только почему-то вместо спрайта с бутылочкой отображается совсем другой спрайт, хотя названия я проставил правильно. И var i=0 не работало, пришлось сделать просто i=0...

UPD: Изменил название спрайта. Всё стало хорошо.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 11 Мая 2011 в 18:39
Действительно, Ogion, объявление переменных с инициализацией в GML не предусмотрено. :D
Вместо
var i=0;
должно бы быть
var i; i=0;
Впрочем, поскольку переменная, управляемая циклом полюбому есть, то почему бы и не
    bottle_width=sprite_get_width(s_bottle)+8; // тут и width, тут и space
    var i;
    for (i=0;i<mana;i+=1) //mana - переменная маны, то есть этот блок повторяется столько раз, сколько у нас маны.
      draw_sprite(s_bottle,0,view_xview[0]+4+i*bottle_width,view_yview[0]+4);
   
вместо спрайта с бутылочкой отображается совсем другой спрайт, хотя названия я проставил правильно.
видимо, только в одном месте поправил, а надо было в двух, в вызовах функций sprite_get_width и draw_sprite. :)


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 11 Мая 2011 в 19:34
Толич, цикл for и while выполняются дольше, чем repeat.


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 11 Мая 2011 в 20:51
Толич, цикл for и while выполняются дольше, чем repeat.
Тут это не так важно, т.к. это заметно только при массовых операциях с циклами, и тем более мы используем i в теле цикла, repeat же переменных не использует //хотя, можно их и вписать
Тут основное время уходит на рисование.

А мой вопрос таков: да, я знаю, что при рисовании символ "#" переносит строку. Да, можно нарисовать этот символ собственной персоной вот так "\#". Но как нарисовать на экране само символосочитание "\#"? Или вообще отключить перенос за символом решетки... Дело в том, что кто-то может его набрать в "инпут", а писать типа "нельзя такое вводить" неинтересно.


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 11 Мая 2011 в 20:54
Но как нарисовать на экране само символосочитание "\#"?
\\#

На счёт ввода - я делал скрипт который эту проблему решает.
return string_replace_all(argument0,'#','\#'); //для обратного эффекта нужно поменять местами '#' и '\#'

P.S. Почему не сделать \n для перевода строки? А при нажатии клавиши \ в переменной будет \\, которая и рисует символ? Ну как в C++


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 11 Мая 2011 в 21:04
Но как нарисовать на экране само символосочитание "\#"?
\\#
Прогрессия получается ;D
Нет, я серьезно. Запретить ввод решетки как-то не хочется. Или это единственный способ?
//Автоответ: добавлять обратный слэш при вводе, запоминать где добавил, и удалять при чтении, а также при удалении вводимой информации пользователем. Спасибо за идею, Дукат!


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 11 Мая 2011 в 21:23
Вобщем, прошу помощи )
Имеем строку: -2 -( -3 + -2 ) * 2
Нужно вставить нули куда надо, например перед -2 -3 и втрой -2, то есть, идею улавливаете? Блин, я не знаю как правильно объяснить... Может кто-то догадается?


Название: Re: Ответы@Gmakers.ru
Отправлено: FeerZlay от 11 Мая 2011 в 22:28
То есть должна получиться такая строка?
0-2 -(0-3  +  0-2) * 2

Как насчет проверки, если перед знаком + или - стоит не число, то впихиваем туда нолик?


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 11 Мая 2011 в 23:23
Лучше подумай, как проверить, используется знак минус инфиксно (между операндами) или префиксно (перед операндом).

Толич, цикл for и while выполняются дольше, чем repeat.
Потестировал — точно дольше, 10000000 спрайтов в for и while рисуют целых 30 секунд (а в repeat меньше секунды). :) К счастью, бутылочек максимум 5, так что совершенно всё равно, что использовать. Но for в данном случае просто нагляднее.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 12 Мая 2011 в 14:07
По мне, так наоборот, с for больше путаницы - приходится вспоминать, в каком порядке происходят действия.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 12 Мая 2011 в 15:10
По мне, так наоборот, с for больше путаницы - приходится вспоминать, в каком порядке происходят действия.
Возможно, мне, как сишнику более привычно, но тут просто в одном месте инициализация, проверка необходимости продолжения и переход к следующей итерации (который срабатывает, если вызвать continue), то есть обобщенный цикл.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 12 Мая 2011 в 20:04
хэлп! мне друг спрайты прислал они на чООрном фоне(там лазер с подсветкой) как удалить чёрные места?


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 12 Мая 2011 в 20:09
хэлп! мне друг спрайты прислал они на чООрном фоне(там лазер с подсветкой) как удалить чёрные места?
В редакторе спрайтов в эффектах есть опция "стереть цвет". А еще есть волшебная палочка и понятие "прозрачности по левому нижнему пикселю", оно автоматически сделает черный прозрачным.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 12 Мая 2011 в 20:14
хэлп! мне друг спрайты прислал они на чООрном фоне(там лазер с подсветкой) как удалить чёрные места?
В редакторе спрайтов в эффектах есть опция "стереть цвет". А еще есть волшебная палочка и понятие "прозрачности по левому нижнему пикселю", оно автоматически сделает черный прозрачным.
всё оки,СПАСИБО,я бы поставил респект но не могу


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 12 Мая 2011 в 21:13
Скажи своему другу, чтобы в следующий раз присылал спрайты в PNG. Не в каменном веке живем, alpha-канал давно изобретен.


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 13 Мая 2011 в 18:06
Token = ''
TokType = ''

if (CPos > string_length(Code)) {
    Token = 'FINISH'
    break;
}

if (ord(string_char_at(Code,CPos)) <= 32) {
    while (ord(string_char_at(Code,CPos)) <= 32) {
        CPos += 1
    }
}

if (string_char_at(Code,CPos) == ' ') {
    while(string_char_at(Code,CPos) == ' ') {
        CPos += 1;
    }
}

/*if (string_char_at(Code,CPos) == '/')
&& (string_char_at(Code,CPos+1) == '*') {
    while(string_char_at(Code,CPos) != '*') {
        if (string_char_at(Code,CPos+1) == '/') {
          break
        } else {
          CPos += 1;
        }
    }
}*/

if (string_char_at(Code,CPos) == '{')
|| (string_char_at(Code,CPos) == '}') {
    Token = string_char_at(Code,CPos)
    TokType = 'BLOCK'
    CPos += 1
    break;
}

if (string_pos(string_char_at(Code,CPos),'!<>=&')) {
    switch (string_char_at(Code,CPos)) {
        case '=':
            if (string_char_at(Code,CPos+1) == '=') {
                Token = '=='; TokType = 'EQ'; CPos += 2; exit;
            }
        break
       
        case '!':
            if (string_char_at(Code,CPos+1) == '=') {
                Token = '!='; TokType = 'NE'; CPos += 2; exit;
            }
        break
       
        case '<':
            if (string_char_at(Code,CPos+1) == '=') {
                Token = '<='; TokType = 'LE'; CPos += 2; exit;
            } else {
                Token = '<'; TokType = 'LT'; CPos += 1; exit;
            }
        break
       
        case '>':
            if (string_char_at(Code,CPos+1) == '=') {
                Token = '>='; TokType = 'GE'; CPos += 2; exit;
            } else {
                Token = '>'; TokType = 'GT'; CPos += 1; exit;
            }
        break
       
        case '&':
            if (string_char_at(Code,CPos+1) == '&') {
                Token = '&&'; TokType = 'LA'; CPos += 2; exit;
            } else {
                Token = '&'; TokType = 'BA'; CPos += 1; exit;
            }
        break
       
        case '|':
            if (string_char_at(Code,CPos+1) == '|') {
                Token = '||'; TokType = 'LO'; CPos += 2; exit;
            } else {
                Token = '|'; TokType = 'BO'; CPos += 1; exit;
            }
        break
    }
}

if (string_pos(string_char_at(Code,CPos),'+-*^/%=;(),')) {
    Token = string_char_at(Code,CPos)
    TokType = 'DELIMITER'
    CPos += 1
    exit
}

if (string_char_at(Code,CPos) == '"') {
    CPos += 1
    while (string_char_at(Code,CPos) != '"') {
        Token += string_char_at(Code,CPos); CPos += 1
    }
    CPos += 1
    TokType = 'STRING'
    exit
}

if (string_pos(string_char_at(Code,CPos),'0123456789') != 0) {
    while (string_pos(string_char_at(Code,CPos),'0123456789') != 0) {
        Token += string_char_at(Code,CPos)
        CPos += 1
    }
    TokType = 'NUMBER'
    exit
}

if (string_letters(string_char_at(Code,CPos)) != '') {
    while(string_letters(string_char_at(Code,CPos)) != '') {
        Token += string_char_at(Code,CPos)
        CPos += 1
    }
    if (TokenIsKeyword(Token)) {
      TokType = 'KEYWORD'
    } else {
      TokType = 'INDENTIFIER'
    }
    exit
}
/*
delimiter (ðàçäåëèòåëü)              çíàêè ïóíêòóàöèè è îïåðàòîðû
keyword (çàðåçåðâèðîâàííîå ñëîâî)    çàðåçåðâèðîâàííûå ñëîâà
string (ñòðîêà)                      ñòðîêè, çàêëþ÷åííûå â äâîéíûå êàâû÷êè
identifier (èäåíòèôèêàòîð)           èìåíà ïåðåìåííûõ è ôóíêöèé
number (÷èñëî)                       ÷èñëîâàÿ êîíñòàíòà
block (áëîê)
приму любые идеи по оптимизации кода/производительности )


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 13 Мая 2011 в 18:18
Скажи своему другу, чтобы в следующий раз присылал спрайты в PNG. Не в каменном веке живем, alpha-канал давно изобретен.
ок,
у меня вопрос(это не удивительно):
перс застревает в воле, а вол является полом мне надо чтобы оне застревал короче скрин- [attachment=1]
что делать Оо


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 13 Мая 2011 в 18:26
Скажи своему другу, чтобы в следующий раз присылал спрайты в PNG. Не в каменном веке живем, alpha-канал давно изобретен.
ок,
у меня вопрос(это не удивительно):
перс застревает в воле, а вол является полом мне надо чтобы оне застревал короче скрин- [attachment=1]
что делать Оо
Он у тебя не застревает, а зацепляется за край платформы. Отключи настройку "Precise collision checking" в настройках спрайта.

У меня у самого вопрос, элементарный, но он меня заинтересовал.
Какими способами можно заменить стандартную гравитацию? Вот один из примеров:
[gml=Player :GM006:]
if place_free(x,y+1)
vspeed+=0.5;
[/gml]


Название: Re: Ответы@Gmakers.ru
Отправлено: Илья от 13 Мая 2011 в 20:13
Мой вопрос можете убрать из "открытых".


Название: Re: Ответы@Gmakers.ru
Отправлено: ТямЫыЧ от 15 Мая 2011 в 19:43
Привет! Как сделать так , чтобы объект отображающий очки(не на глаза) передвигался с объектом игрока(игрок движется по длинной комнате, вид которого движется за ним)


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 15 Мая 2011 в 19:56
Прикрепить объект к объекту "player" - написать в степ:
if instance_exists(player) {x=player.x; y=player.y};
Рисовать текст относительно вида (в draw):
draw_text(view_xview+20,view_yview+20,"...")
отображающий очки(не на глаза)
А куда же он отображает их (http://www.skypeclub.ru/i/emoticons/emoticon-0112-wondering.gif)


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 17 Мая 2011 в 20:13
хэлп плиз,
у нас типа есть глобальная имя и нам надо если комната равна room2, то мы вводим глобал.нейм типа этого
if room2//чо дальше не знаю,тутта помогите мне плиз)
global.name=get_string('имя:','Сюда надо ввести имя')

Привет! Как сделать так , чтобы объект отображающий очки(не на глаза) передвигался с объектом игрока(игрок движется по длинной комнате, вид которого движется за ним)
если правильно понял, то вот так
draw_set_color(c_white)
draw_set_font(font0)//у тебя должен быть фонт(текст)
draw_text(70,3,"Score: "+string(score))//очки =.=" уга=D ПОМНИ: "Score: " можно поменять! к примеру "ваш скор) " также с жизнями можно и другими переменнами пс:ВАЖНО! главное, что быв фонте были все символы! то есть 255 if create_object символы). есть такие символы которые на русском не мога) всё кажись
пишем в драу не нужного объекта


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 17 Мая 2011 в 20:24
if (room=room2)


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 17 Мая 2011 в 20:25
if (room=room2)
спс, вопрос ещё
что такое эвент?для чего он?(я знаю на прямую а по гм не знаю)


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 17 Мая 2011 в 22:02
Где-то напортачил, эта часть кода абсолютно работоспособна.


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 18 Мая 2011 в 01:14
(http://img705.imageshack.us/img705/6605/22531214.th.jpg) (http://imageshack.us/photo/my-images/705/22531214.jpg/)

как найти сторону  ВС зная угол ВАС и сторону АС.
Прошу прощения за столь глупый вопрос, но голова не варит ообще


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 18 Мая 2011 в 01:31
А приведи пример, зачем тебе это нужно, или где используешь, как. А то весьма странная задачка.


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 18 Мая 2011 в 01:54
Ну вобщем сторона АС это image_angle обьекта, своеобразная идеальная прямая по которой стреляет оружие без погрешности, радиус круга это угол "погрешности", тот разброс, куда случайно летят патроны. Я хочу сделать так чтобы при удалении/приближении мышки у углу ВАС этот диаметр (а соответственно круг) менялся в размере с учетом приблежения к точке: как на скриншоте
(http://img849.imageshack.us/img849/152/11561654.th.jpg) (http://imageshack.us/photo/my-images/849/11561654.jpg/)


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 18 Мая 2011 в 02:03
Я тебе ответил в той теме...
Знаешь, а ведь незачем все усложнять. Можно же o_bullet.direction=image_angle+choose(1,-1)*random(5). Получается пятиградусный разброс.
Неважно, насколько далек курсор мыши от вершины угла: угол разброса остается одним и тем же.


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 18 Мая 2011 в 02:10
Я понимаю что угол не меняется
тут не только в разбросе дело, мне нужно чтобы этот разброс показывался кругом, причем при приближении его к "дулу" он (круг, соотв. и радиус) уменьшался, собственно очерчивая ту самую зону разброса которая существует на таком расстоянии.
Что бы было как визуально понятно: ага вот сдесь пули пролетают такой плотности, а дальше уже посвободнее и тд

И еще вопрос функция irandom_range дает только целые числа? если да то как сделать чтобы и сотые тоже

Вот как в старой версии (но тут точность подгоняется под размер круга, а мне надо наоборот)


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 18 Мая 2011 в 02:23
Господа. Это снова тупой я.
Вот есть код
if global.booze > 0

{
global.booze -=1
global.drunk = true
}

else

global.drunk = false

if global.drunk = true
DO NOTHING!*

Вопросы:
1) Выражение: Если <переменная> БОЛЬШЕ нуля, то <то-то и то-то>. Включая ноль, или нет? Наверное, нет, но я не знаю оператора "Больше Либо Равно", а >= почему-то не работает
(где-то тут этот вопрос поднимался, но я, что-то, не нашёл ответа)...
2) Есть ли оператор типа "НИЧЕГО НЕ ДЕЛАТЬ"? (*DO NOTHING)
3) Как заставить команду срабатывать определённое количество раз подряд (в моём случае - только один, но может быть пригодится больше...)? То есть - как прикрутить счётчик циклов (если я правильно выражаюсь)?

Объясняю - есть персонаж. У него есть 5 бутылок эликсира силы (максимум).
Под эликсира у него повышается сила).
Но, во-первых, при нажатии на кнопку "Выпить эликсир", эта падла пьёт всё (сейчас я операторы местами поменяю, наверное поможет). А во-вторых количество бутылочек обнуляется при переходе в другую комнату, хотя это переменная global-типа. Я объявляю все global-переменные в коде к стартовой комнате, ибо думаю, что при объявлении тех-же переменных в событии "Create" Персонажа, оно ТОЧНО будет выполняться при создании Персонажа в каждой комнате. Я прав?

Наверное, нет (ведь оно не работает), но почему тогда global.<Переменная> не пашет?
Или мне надо их каким-то образом объявлять при старте самой игры? Или одним списком global var <1>; <2>; <3>? Но где это тогда прописывать?

________________
Я прекрасно понимаю, что эти мои, уже, наверное, порядком подзадолбавшие, идиотские нубские вопросы сродни просьбе "напишите за меня игру", но я - прожжённый гуманитарий. Я умею придумывать идеи, но реализовывать их в программном коде никак не могу научиться. Вот поэтому я и учу GM, ибо выучить C, (или на чём сейчас пишут игры?) я не сумею никогда (пробовал, дальше BASIC'а не ушёл. Везде говорят что Васик - "шаблонирует" сознание программиста, вроде портвейна, который производит НЕОБРАТИМЫЕ ИЗМЕНЕНИЯ В СОЗНАНИИ! Видимо, это так:) ). Спасибо вам, милые, добрые господа!


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 18 Мая 2011 в 02:45
inhuman89, все, сообразил. Только ты неправильно свой рисунок нарисовал: AB - касательная, а значит, угол B прямой, а он у тебя получился не совсем прямым. Итак, пресловутые три параметра у нас есть, а треугольник ABC оказался прямоугольным, что упрощает нашу задачу. Теперь найти BC очень просто: cos(A)=BC/AC => BC=AC*cos(A).

Буня, "<" и ">" - строгие знаки, а "<=" и ">=" - нестрогие. Последние, кстати, прекрасно работают, это ты что-то с ними сделал не так.
Функции "do_nothing", разумеется, нет. Было бы странно, если бы такая была. Если выражение истинно, будет выполняться действие, иначе ничего происходить не будет. Не нужно пытаться не кормить слона, когда слона нет.
Ответ на третий вопрос - repeat, например, repeat (100) {do_something_awesome();} - каждый шаг 100 раз будет происходить что-нибудь клевое. Более сложные вещи - это do, for, while. Читай справку.
По поводу глобальных переменных: все правильно, объявлять их надо в начале игры, и после этого не трогать. Проверь, может, какой-нибудь объект ее обнуляет? Или тот объект, который должен ее объявлять, есть в каждой комнате?


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 18 Мая 2011 в 03:10
a=point_distance(muzzle_x,muzzle_y,mouse_x,mouse_y)
sight_size=a*cos(image_angle+accuracy+sight_noise)
где a это АС, sight_size это ВС а image_angle+accuracy+sight_noise Угл А соответственно
Ставлю рисовать круг с диаметром sight_size и происходит ересь какаято то его невидно(больше экрана) то еще что.. пляшет короче, в чем может быть проблема


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 18 Мая 2011 в 03:23
Во-первых, sight_size - радиус, а не диаметр. Во-вторых, напиши, каким кодом рисуешь эллипс, возможно, там ошибка. А в-третьих, синус, а не косинус. Извини, два часа ночи, я тоже плохо соображаю. :)
Если все равно не заработает, постараюсь завтра уже сегодня накатать пример. Люблю немного матана.


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 18 Мая 2011 в 03:36
Радиус, да, я опечатался. Синус тоже пьяный. А рисую так:
draw_circle(mouse_x,mouse_y,sight_size,true);


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 18 Мая 2011 в 04:53
Слушайте, уважаемые админы и их помощники!

Не уверен, что этот вопрос стоит задавать здесь, но...
А нельзя никак сделать поиск по справке по Game Maker, героически (за что вам отдельное, огромное СПАСИБО!!!) переведённой вами?
Этого очень, ОЧЕНЬ не хватает!
Просто самый примитивный гугл-сё'ч. Хотя бы по операторам языка.
Это сняло бы 50% лично моих вопросов. Наверное и 25% остальных...
________
Может, поиск есть... Но я его не нашёл за полтора месяца.


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 18 Мая 2011 в 05:47
Мужики! Дамы! Люди!
Видимо, я всё же напился.
Но я ни хрена не понимаю!
Объясните мне на пальцах! Пожалуйста!
Действие при нажатии на "Enter"
Задача: Нажал на энтер. Если возможно (если: есть пузырёк эликсира и ты уже его не принял) - бонус сработал.
Задачи моего кода:
1) Убавилась бутылочка в интерфейсе
2) Персонаж подвергается действию бонуса.
3) Если Персонаж уже применял бутылочку - не делать ничего.
4) Если Персонаж уже под действием бонуса - не делать ничего.
5) Не повторять действия, если "Enter" нажат больше одного раза.
Переменные:
global.booze - количество бутылочек с эликсиром
global.drunk - персонаж в состоянии "под бонусом"
if global.booze >= 1  /Если кол-во эликсира больше либо равно единице,
{                          /Старт блока операторов, правильно?
                            /То есть - если условие выполнено - выполнить то, что в фигурных скобочках, (да)?
global.drunk = true   /Глобальный бонус начинает действовать.
global.booze -=1      /Минус бутылочка
}
else                       /В ином случае, кроме того, что указано в фигурных скобочках, (правильно)?
global.drunk = false  /Персонаж не получает бонус.

if global.drunk = true/А вот если Персонаж уже под действием бонуса
{ХХХХХ /То НИЧЕГО НЕ ДЕЛАТЬ
}
__________________
Ребята! Я профессиональный звукорежиссёр. Саунд-продьюссер (как культуролог по изначальному образованию я настаиваю на том, что это слово пишется с мягким знаком и двумя "С"), в первую очередь - композитор и, как это принято называть, "поэт-песенник".
Если у кого-то возникают вопросы по звуку (только не в GM, потому что тут я систему звукообразования вообще не понимаю - она реализована настолько спустя рукава, насколько это минимально прилично) - задавайте их мне. Меня можно нужно даже просить забесплатно написать тему для игры, подобрать звуки и так далее. С единственной оговоркой - я смогу это включить в своё портфолио.
Это, как бы, плата за мои тупые вопросы.
boonya.kroogi.com (http://boonya.kroogi.com)


Название: Re: Ответы@Gmakers.ru
Отправлено: .doc от 18 Мая 2011 в 07:15
if global.drunk = true/А вот если Персонаж уже под действием бонуса
    {ХХХХХ /То НИЧЕГО НЕ ДЕЛАТЬ
    }
Не знаю, есть ли функция ''ничего не делать'', но я такой не встречал.
Лучше написать так:

if global.booze >= 1  and global.drunk=false
    {                         
                               
    global.drunk = true   
    global.booze -=1     
    }
else
{
global.drunk=false
}
 


Название: Re: Ответы@Gmakers.ru
Отправлено: NEXT2 от 18 Мая 2011 в 11:42
Всем привет!
Собственно встал у меня такой вопрос: как сделать что бы камера следила за двумя объектами в одном окне.
Например: одни объект стоит в левом углу комнаты, а второй в правом углу и пытается бежать вправо. Вот тут собственно и трудность. Если бежать так вместе!!!


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 18 Мая 2011 в 11:55
Всем привет!
Собственно встал у меня такой вопрос: как сделать что бы камера следила за двумя объектами в одном окне.
Например: одни объект стоит в левом углу комнаты, а второй в правом углу и пытается бежать вправо. Вот тут собственно и трудность. Если бежать так вместе!!!
Может сделать две камеры? Одна занимает одну часть экрана, вторая - вторую.


Название: Re: Ответы@Gmakers.ru
Отправлено: NEXT2 от 18 Мая 2011 в 12:16
Dukat863, не это не то. Так будет не интересно.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 18 Мая 2011 в 12:48
inhuman89,
А вот и пример.
Но есть одно но: если угол A будет большим, то станет видно, что AB сопрягается с окружностью неправильно. Строить касательную как надо, боюсь, будет очень сложно, придется вычислять точки пересечения двух окружностей.
UPD: Обновил пример, теперь все идеально.
UPD: Еще раз обновил, теперь рисуются еще две линии, а угол A можно регулировать колесиком мыши, чтобы было нагляднее.



Слушайте, уважаемые админы и их помощники!

Не уверен, что этот вопрос стоит задавать здесь, но...
А нельзя никак сделать поиск по справке по Game Maker, героически (за что вам отдельное, огромное СПАСИБО!!!) переведённой вами?
Этого очень, ОЧЕНЬ не хватает!
Просто самый примитивный гугл-сё'ч. Хотя бы по операторам языка.
Это сняло бы 50% лично моих вопросов. Наверное и 25% остальных...
________
Может, поиск есть... Но я его не нашёл за полтора месяца.
Плохо искал, видимо.
[attachment=2]

Задача: Нажал на энтер. Если возможно (если: есть пузырёк эликсира и ты уже его не принял) - бонус сработал.
Задачи моего кода:
1) Убавилась бутылочка в интерфейсе
2) Персонаж подвергается действию бонуса.
3) Если Персонаж уже применял бутылочку - не делать ничего.
4) Если Персонаж уже под действием бонуса - не делать ничего.
5) Не повторять действия, если "Enter" нажат больше одного раза.
Переменные:
global.booze - количество бутылочек с эликсиром
global.drunk - персонаж в состоянии "под бонусом"
Правильный способ: сначала сформулировал на человеческом синтаксисе, а потом перевел в GML. Посмотрим...

if global.booze>0 and global.drunk=false //Если бутылочек больше нуля и Персонаж еще не под действием бонуса
{
global.drunk=true; //Персонаж подвергается действию бонуса
global.booze-=1; //Убавляется бутылочка в интерфейсе
}
//Если бутылочек нет или Персонаж уже под действием бонуса, никаких действий производиться не будет. Никаких дополнительных указаний не нужно. Это же очевидно.
Все.

Ребята! Я профессиональный звукорежиссёр. Саунд-продьюссер (как культуролог по изначальному образованию я настаиваю на том, что это слово пишется с мягким знаком и двумя "С"), в первую очередь - композитор и, как это принято называть, "поэт-песенник".
Если у кого-то возникают вопросы по звуку (только не в GM, потому что тут я систему звукообразования вообще не понимаю - она реализована настолько спустя рукава, насколько это минимально прилично) - задавайте их мне. Меня можно нужно даже просить забесплатно написать тему для игры, подобрать звуки и так далее. С единственной оговоркой - я смогу это включить в своё портфолио.
Это, как бы, плата за мои тупые вопросы.
boonya.kroogi.com (http://boonya.kroogi.com)
Композиторы нужны. Лично я в композиторе нуждаюсь прямо-таки хронически.



NEXT2,
Можешь объяснить поподробней, как ты это себе представляешь? Что тебе нужно? Чтобы камера масштабировалась? Это можно сделать. Если вкратце: вычисляешь расстояние между двумя объектами по x и по y и делаешь размер вида так, чтобы оба объекта в него помещались, порт вида при этом не трогаешь. Нужно только следить за тем, чтобы соотношение сторон вида оставалось неизменным. А камеру держишь в точке между этими двумя объектами, как предлагал Макасин.
А вообще, объясни, для чего это тебе нужно, тогда поглядим, что можно сделать.


Название: Re: Ответы@Gmakers.ru
Отправлено: NEXT2 от 18 Мая 2011 в 15:22
В принципе про масштабирование я и не думал, хотя как вариант тоже можно. Суть то в том, что это нужно для совместного прохождение на двоих. И будет не приятно когда один убегает за пределы экрана и его не видно.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 18 Мая 2011 в 16:34
Разделение экрана. Или держать камеру между игроками, не позволяя игрокам отойти друг от друга на расстояние, превышающее ширину экрана.


Название: Re: Ответы@Gmakers.ru
Отправлено: Буня от 18 Мая 2011 в 16:37
Плохо искал, видимо.
Не, я имел в виду поиск http://gmakers.ru/gamemaker_help/source/files/index.php (http://gmakers.ru/gamemaker_help/source/files/index.php) вот тут.
А так-то да, конечно. :)

Огион! Спасибо тебе огромное!


Название: Re: Ответы@Gmakers.ru
Отправлено: NEXT2 от 18 Мая 2011 в 17:20
Ogion, спасибо буду решать))


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 18 Мая 2011 в 17:26
Ogion спасибо за помощь! Все идеально


Название: Re: Ответы@Gmakers.ru
Отправлено: NEXT2 от 18 Мая 2011 в 18:23
Вот собственно что у меня и получилось:
d = point_distance(camera.x, camera.y, pl1.x, pl1.y); 
   dx = (pl1.x - camera.x) /4;
 dy = (pl1.y - camera.y) / 4;
   camera.x += dx; camera.y += dy;
 

d1 = point_distance(camera.x, camera.y, pl2.x, pl2.y);
 

   dx = (pl2.x - camera.x)/ 4;
   dy = (camera.y - pl2.y) /4;
   camera.x += dx;
Я доволен. Спасибо за подсказку)


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 18 Мая 2011 в 21:36
вопрос без ответа-разжуйте что такое эвент и как им пользоваться?
новый- есть код
with (way) instance_destroy()
instance_create(mouse_x,mouse_y,way)
move_towards_point(mouse_x,mouse_y,5)
по нему видно есть обджект вэй (данный год в глобал нажат. мыши)
вот код в степе
if distance_to_object(way)<1 {speed=0 with(way)instance_destroy()}
image_angle=direction
так вот проблема- когда жмёшь мышью то спрайт "скачет" то есть прыгает по икс и игрик.
ХЭЛП! плиз


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 18 Мая 2011 в 21:58
---
if distance_to_object(way)<5{
  x=way.x; y=way.y;
  speed=0; with(way)instance_destroy();
}
image_angle=direction
Впрочем, distance_to_object учитывает размеры объектов. Возможно, лучше:
if point_distance(x,y,way.x,way.y)<5{
  x=way.x; y=way.y;
  speed=0; with(way)instance_destroy();
}
image_angle=direction


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 18 Мая 2011 в 22:08
вопрос без ответа-разжуйте что такое эвент и как им пользоваться?
Эвент - событие. Ты им пользуешься все время. А именно событие: То, что должно произойти, чтобы выполнился вложенный код. Например, код в Create Event выполнится сразу при создания объекта. //Несколько странный вопрос

А именно что в коде выше (Glob left pressed) - ты удалил все way'и и создал один в координатах курсора, приказав ему передвинуться в координаты курсора...
вот код в степе
В степе объекта way? Если да, и этот объект всего один (мы удаляем всех при нажатии ЛКМ, создаем только один)... Он один - дистанция до него же, как бы это странно не звучало, 1000000. Он никогда не удалится (из-за условия), следовательно при нажатии мыши старый way удалится, и создастся новый в координатах курсора (визуально "скакнет" туда).
Весёлый этот ГМ: создаем объект object0, пишем в создании "show_message(distance_to_object(object0))", получаем вместо нуля 1000000 ;D


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 19 Мая 2011 в 10:43
Весёлый этот ГМ: создаем объект object0, пишем в создании "show_message(distance_to_object(object0))", получаем вместо нуля 1000000 ;D
А почему должен быть 0? Определяется расстояние до ближайшего другого экземпляра указанного объекта. А если другого объекта нет, результат не определён. А возвращается значение, которое, скорее всего, будет больше, чем твой эпсилон, для исключения лишних проверок и обработчиков "исключительных ситуаций". :) Создай второй экземпляр object0 в комнате, будет измерять расстояние до него. Создай объект object1, не помещай его в комнату — расстояние от object0 до него будет тоже миллион.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 21 Мая 2011 в 10:26

if distance_to_object(way)<5{
  x=way.x; y=way.y;
  speed=0; with(way)instance_destroy();
}
image_angle=direction
Впрочем, distance_to_object учитывает размеры объектов. Возможно, лучше:
if point_distance(x,y,way.x,way.y)<5{
  x=way.x; y=way.y;
  speed=0; with(way)instance_destroy();
}
image_angle=direction

;D только хуже стало он объект вэй не видит вааще а 2 не робит нет вэрбла икс)
слабо решить задачку мою?   :)


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 21 Мая 2011 в 10:37
Ты объясни с начала, чего ты вообще пытался сделать.


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 21 Мая 2011 в 10:48
Первое: начинай каждое предложение с заглавной буквы. Сил нет нажать Shift, что ли?
Ставь знаки препинания. Твой поток сознания очень тяжело воспринимать.
Не используй эти псевдоанглицизмы! "энвиз", "деадить", "драу", "вэрбл" - нет таких слов. Да, у разработчиков игр есть свой жаргон. Но жаргон и испорченные тобой английские слова - это не одно и то же.
У тебя на клавиатуре нет английской раскладки? Или тебе лень Alt+Shift нажать? "вэй", "икс" "вол" - трудно написать английскими буковками? Вол - это кастрированный самец крупного рогатого скота, кстати.

Ты хочешь, чтобы тебе помогли? Будь добр изъясняться так, чтобы тебя понимали.


Название: Re: Ответы@Gmakers.ru
Отправлено: Mister Vindetta от 21 Мая 2011 в 17:43
Помогите! Я скрипты неумею писать, но они нужны.
Мне надо вот такой структуры:
1. Проверка, уничтожен ли объект "1"
2. Если да, то уничтожается объект "2"
3. Если нет, то ничего не произходит.

Иными словами, мне надо вставить замок и ключь, то есть:
1. Проверка, подобран ли ключ.
2. Если да, то замок изчезает и проход открыт.
3. Если нет, то замок на месте, не пускает.
Заранее спасибо.

Вопросы задаем здесь. Ogion.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 21 Мая 2011 в 18:06
Скрипты - это скрипты. Специальный кусок кода, который может вызываться объектами. То, что тебе надо - это называется код. Программный код. Никак иначе! Задолбали.

А вот твой код:
if (instance_exists(object_key) = 0) {instance_destroy()}
Вместо object_key - название твоего объекта ключа. Засунуть это надо в степ двери.



Огион, как переносить сообщения?



Как красиво организовать рандомный выбор?
Я делаю примерно так:

rand = irandom(n)
if (rand = 0) {myvar = value0}
if (rand = 1) {myvar = value1}
if (rand = 2) {myvar = value2}
if (rand = n) {myvar = valuen}
Способ массивный (от слова массивность), можно же как-то проще сделать?
В идеале, что бы варианты выглядели так:
value0;
value1;
value2;
valuen;
То есть без ничего лишнего, просто в столбик или строку.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 21 Мая 2011 в 19:20
Как красиво организовать рандомный выбор?
Я делаю примерно так:
rand = irandom(n)
if (rand = 0) {myvar = value0}
if (rand = 1) {myvar = value1}
if (rand = 2) {myvar = value2}
if (rand = n) {myvar = valuen}
Варианты:
1) самый простой: myvar=choose(value0,value1,value2,...,valueN);
2) switch
switch irandom(n){
case 0: myvar=value0; break;
case 1: myvar=value1; break;
case 2: myvar=value2; break;
case 3: myvar=value3; break;
}
}
3) отображение (впрочем, аналогично можно сделать с помощью массива, списка и решётки)
map=ds_map_create();
ds_map_add(map,0,value0);
ds_map_add(map,1,value1);
ds_map_add(map,2,value2);
ds_map_add(map,N,valueN);
...
myvar=ds_map_find_value(map,irandom(n))
Еще надо? :) Кстати, предполагалось равновероятное выпадение вариантов. Если нужно чтобы, скажем, value2 появлялось в два раза чаще, чем остальные варианты, его можно просто продублировать.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 21 Мая 2011 в 20:38
1) самый простой: myvar=choose(value0,value1,value2,...,valueN);
Это мы уже обсуждали же, тут только восемь вариантов.

Второй вариант устраивает, спасибо.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 21 Мая 2011 в 21:44
А не 16? К слову второй вариант хуже третьего тем, что он мало чем отличается от твоего (только разве else в нужных местах расставлены).
1) Отображение можно подготовить заранее, а потом быстро найти в нём нужный вариант одним оператором.
2) По ходу игры набор доступных элементов и даже их распределение можно менять, а switch не поменяешь. ;)


Название: Re: Ответы@Gmakers.ru
Отправлено: Kchiuk от 21 Мая 2011 в 22:33
choose(choose(choose(…)))
ммм?


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 21 Мая 2011 в 22:41
Распределение высчитывать надо же, на крайняк, генерировать  noone, например, и зацикливать, пока он появляется.
Как-то так:
//цикл,цикл,мотоцикл
do myvar=choose(choose(variant0,variant1),choose(variant2,noone)); until myvar!=noone;


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 21 Мая 2011 в 22:49
Как определить, есть ли у объекта определенная переменная?
Допустим при касании, если у другого есть переменная qqq, то сделать что-то, не смотря на значение, если нет - не делать.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 21 Мая 2011 в 22:55
Тащемта, задавать вопросы, ответы на которые есть в справке, запрещено. Поэтому я ни слова не скажу ни про variable_global_exists, ни про variable_local_exists.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 21 Мая 2011 в 23:01
//Я не новичок - мне справка не помогает  ;D
Спасибо.


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 22 Мая 2011 в 03:31
Вопрос1
в Create Event у обьекта стоит
boxes[floor(x/20),floor(y/20)]=object_index;
в Draw Event другого обьекта (игровой курсор) стоит
draw_text(230,460,'box id: '+string(boxes[floor(x/20),floor(y/20)]))

в игре показывает: box id: -4
А где айди обьекта? Почему стоит -4?

Если во время игры создать обьект, то его айди высвечиваетя нормально

В чем ошибка?

Вопрос2

Использую данную систему авто тайлинга: http://gmc.yoyogames.com/index.php?showtopic=416796
В принципе как работает система мне ясно, сам хотел делать по такому же принципу, но решил сохранить свое время и воспользоваться уже готовой системой. Кратко о том как она работает: в редакторе расставляем "будущий ландшафт" как угодно без утомительного подбора уголков и прочего трудоемкого ***. При запуске игры, как только создается экземпляр обьекта, идет проверка его положения относительно други таких обьектов, и на основе этой проверки накладываются тайлы с теми самыми уголками.(См. прикрепленный файл) Как не трудно догадаться на обьекты созданне в процессе игры тайлы накладываются некорректно. Точнее на созданные накладываются нормально, а вот примыкающие остаются без изменения. Сопсна мне нужна помощь чтобы изменить эту систему так, чтобы тайлы накладывались нормально  на созданные в процессе игры обьекты, а при удалении их заного просчитывалось положение тайлов на примыкающих обьектах, относительно удаленного ну и vice versa/

Надеюсь у кого то будет время помочь мне.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 22 Мая 2011 в 11:31
Вот файлик с автотайлом, исправленный.
В двух словах:
При клике на блок он удаляется. При удалении глобальная переменная global.refresh стает равной единице. При этом контрол обновляет тайл и возвращает переменной ноль.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 22 Мая 2011 в 11:41
в игре показывает: box id: -4
Это noone.
1) Возможно, дело в том, что ты заполняешь массив в одном объекте, а используешь в другом. Попробуй делать так:
object_drugoj.boxes[floor(x/20),floor(y/20)]=object_index;
2) Объекты создаются по мере помещения в комнату. Возможно, object_drugoj помещен после всех первых. В результате он затирает уже заполненную таблицу noone-ми. Попробуй Ctrl+щелкуть его ПКМ и "Send to Back".


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 22 Мая 2011 в 13:20
2Макасин Спасибо, я честно говоря так и думал, что надо удалять весь слой с тайлами и заново их накладывать) просто я думал может есть еще варианты.. Например удалять тайлы только вокруг обьекта который добавляется\создается. Ведь все остальные будут без изменений.
2tolich И тебе спасибо, нашел ошибку.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 22 Мая 2011 в 13:22
Спасибо, я честно говоря так и думал, что надо удалять весь слой с тайлами и заново их накладывать) просто я думал может есть еще варианты.. Например удалять тайлы только вокруг обьекта который добавляется\создается. Ведь все остальные будут без изменений.

Может быть. Я просто сделал то, что делает по пробелу. В принципе работает, вроде и не тормозит, так что нормально.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 22 Мая 2011 в 14:18
Пиши яснее.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 22 Мая 2011 в 14:58
конкретный радиус, допустим 640X380

Радиус - половина диаметра. Одно число. Диаметр - это отрезок от края до края, через центр. А радиус отрезок из центра до края. Он не может быть 640X380. Это во-первых. Во-вторых, объясни нормально, что за круг? Что за "эф.круга".
Хотя стой, не надо. Почитал я твой исходник. Ты сам-то его читал? Что там может быть непонятного? Просто скопироал откуда-то, не вникая? Больше так не делай.
Ставь х и у нужного тебе объекта, ставь конкретный радиус. Все сюда:
draw_circle(room_width/2, room_height/2, radius, false); вот так: draw_circle(х, у, твой радиус, false);


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 22 Мая 2011 в 15:47
Чувак я уже писал в коде еще плохо разбираюсь, выкладывал человек. Помог молодец но острить не надо.
Во-первых, я не острил. Во-вторых, разбираться в коде - это одно, а разбираться в математике начальных классов - другое.


И от меня вопрос. Вроде примитивный, а что-то не выходит.
Есть спрайты: qqq1, qqq2, qqq3..qqqN.
Есть глобальная переменная, допустим global.www.
Как сделать объекту sprite_index = qqqglobal.www ?


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 22 Мая 2011 в 16:30
Есть спрайты: qqq1, qqq2, qqq3..qqqN.
Есть глобальная переменная, допустим global.www.
Как сделать объекту sprite_index = qqqglobal.www ?
execute_string("sprite_index=qqq"+string(global.www))

Вопрос2
Не знаю, как оно там сделано, но могу предположить, что расчет автотайлинга происходит при старте комнаты. Попробуй обновлять тайлы при добавлении нового объекта.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 22 Мая 2011 в 21:45
Спасибо.
А там, на второй вопрос уже ответили.

И еще один (нублю сегодня):
Где ошибка, вернее, как правильно реализовать?
if (place_meeting(x,y,all))
{
with (other) variable_local_exists(name)
{draw_text(x,y, other.name)
}
}
With никогда особо не юзал, а если юзал - проблем не возникало.
Что хочу сделать этим кодом: при касании к любому другому объекту, если у того есть локальная переменная нэйм - писать её.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 22 Мая 2011 в 22:05
Где ошибка, вернее, как правильно реализовать?
if (place_meeting(x,y,all))
{
with (other) variable_local_exists(name)
{draw_text(x,y, other.name)
}
}
With никогда особо не юзал, а если юзал - проблем не возникало.
Что хочу сделать этим кодом: при касании к любому другому объекту, если у того есть локальная переменная нэйм - писать её.
Под споилером ересь, не читать... :)
with instance_place(x,y,all)
if variable_local_exists(name)
draw_text(x,y,variable_local_get(name));
Как-то так. А other вне столкновений и конструкций with чаще всего синоним self.
А ошибка… if пропущено.

Да, это если name - переменная, объявленная var (или globalvar). Если же это переменная экземпляра (по ГМ терминологии "локальная").
with instance_place(x,y,all)
if variable_local_exists(other.name)
draw_text(x,y,variable_local_get(other.name));

Еще вариант, если имя переменной "name":
with instance_place(x,y,all)
if variable_local_exists("name")
draw_text(x,y,name);
И, скорее всего, он-то тебе и нужен.

Чёрт, ну я и тупой...
with all // проверяем все-все объекты
if place_meeting(x,y,other) // если он касается этого объекта
if variable_local_exists("name") // да еще и имя имеет
draw_text(x,y,name); // пишем это имя.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 22 Мая 2011 в 23:06
Первое: начинай каждое предложение с заглавной буквы. Сил нет нажать Shift, что ли?
Ставь знаки препинания. Твой поток сознания очень тяжело воспринимать.
Не используй эти псевдоанглицизмы! "энвиз", "деадить", "драу", "вэрбл" - нет таких слов. Да, у разработчиков игр есть свой жаргон. Но жаргон и испорченные тобой английские слова - это не одно и то же.
У тебя на клавиатуре нет английской раскладки? Или тебе лень Alt+Shift нажать? "вэй", "икс" "вол" - трудно написать английскими буковками? Вол - это кастрированный самец крупного рогатого скота, кстати.

Ты хочешь, чтобы тебе помогли? Будь добр изъясняться так, чтобы тебя понимали.
Нет уважаемый ,Ogion, это не порченный язык, это геймерские слова которые используют для быстрого понятия. Спасибо.

На счёт моей проблемы, она почти решена, но спасибо за то, что обратили внимание на мою проблему.

PS: Так лучше?(я насчёт "Ставь знаки препинания. Твой поток сознания очень тяжело воспринимать.
Не используй эти псевдоанглицизмы! "энвиз", "деадить", "драу", "вэрбл" - нет таких слов.")

Но если кто-то смог решить мою проблему то заранее спасибо.Жду.


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 22 Мая 2011 в 23:24
Ты объясни с начала, чего ты вообще пытался сделать.
:doit:


Название: Re: Ответы@Gmakers.ru
Отправлено: tsel от 23 Мая 2011 в 00:28
Я чот не понял, куда вставлять код, когда например набрал 200 очков и переходишь на следующий уровень.  :(

Все вопросы должны быть в этой теме. Макасин.


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 23 Мая 2011 в 01:07
Я чот не понял, куда вставлять код, когда например набрал 200 очков и переходишь на следующий уровень.
Логично дописать в событие добавления очков проверку типа
if (POINTS>=200) room_goto_next(); /*К примеру*/


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 23 Мая 2011 в 01:27
А можно и по-другому: через переменную health. Поставить вначале health=200 и в нужные моменты отнимать из неё очки. Когда нужное число очков будет набрано, автоматически сработает No More Health.
Как вариант, поставить health=100 и отнимать только половины набираемых очков.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 27 Мая 2011 в 10:17
Подскажите пожалуйста, как можно сделать лазер? Что бы не одним спрайтом в высоту и одним объектом, а чтобы маленьий спрайт к примру 32 на 32 и много других спрайтов с объектами.
Надо: лазер, пример на символах:
              I-назовём лазер А
              I
              I-лазер
              I-
             -- -конец  лазера при этом\/ps: смотри вниз
_____________________-земля
         надо, что бы при прикосновение с землёй он уничтожился, а лазер А продолжал "жить" с другими лазерами и пытался создавать другие лазеры ниже его, при этом быть около мышки
зы:он должен обновятся к примеру:лазер через 3 секунды умирает а при нажатой мышки он возрождается


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 27 Мая 2011 в 10:32
Не понял, что ты имеешь в виду. Попробуй так:
draw_set_color(c_maroon);
draw_line_width(x,y,target.x,target.y,3);
draw_set_color(c_red);
draw_line(x,y,target.x,target.y);
где таргет - объект, в который стреляешь. Как сделать "распространение" луча от турели до цели, сам придумай.
лазер А продолжал "жить" с другими лазерами
Секас, аднака!


Название: Re: Ответы@Gmakers.ru
Отправлено: inhuman89 от 27 Мая 2011 в 22:14
/***************************************************
  left
 ***************************************************/
if keyboard_check(vk_left)
{
  if place_free(x-4, y)
  {
    xspd=-4;
  }else
  {
    move_contact_solid(180,xspd);
    xspd=0;
  }
}else
{
  xspd=0;
}
/***************************************************
  right
 ***************************************************/
if keyboard_check(vk_right)
{
  if place_free(x+4, y)
  {
    xspd=+4;
  }else
  {
    move_contact_solid(0,xspd);
    xspd=0;
  }
}else
{
  xspd=0;
}

Проблема какая то странная: на право идет, на лево не идет. Если убрать код для одной из кнопок, то оставшаяся работает. В чем проблема?

И еше вопрос. Если в место проверяемой кнопки поставить например 'W' то код работает когда кнопка НЕ НАЖАТА. И еще при нажатии на любую кнопу этот код выполняется. Что за ерунда


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 27 Мая 2011 в 23:06
Проблема какая то странная: на право идет, на лево не идет.
На лево не идет из-за того, что условие "keyboard_check(vk_right)" будет ложно, и в конце будет выполнено "else" для него, тобишь "xspd=0;". Поэкспериментируй с этим:
var tomove;
tomove=keyboard_check(vk_right)-keyboard_check(vk_left);
//...
Тут есть логика ;) Будут значения -1, 1 и 0 - если ничего не нажато.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 27 Мая 2011 в 23:11
Будут значения -1, 1 и 0 - если ничего не нажато.
В качестве бонуса, 0 будет, если нажать и влево, и вправо сразу. 8)
var xspd; xspd=(keyboard_check(vk_right)-keyboard_check(vk_left))*4;
if xspd!=0{
  if !place_free(x+xspd,y){
    move_contact_solid(180*(xspd<0),4);
    xspd=0;
  }
}


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 27 Мая 2011 в 23:17
Не понял, что ты имеешь в виду. Попробуй так:
draw_set_color(c_maroon);
draw_line_width(x,y,target.x,target.y,3);
draw_set_color(c_red);
draw_line(x,y,target.x,target.y);
где таргет - объект, в который стреляешь. Как сделать "распространение" луча от турели до цели, сам придумай.
лазер А продолжал "жить" с другими лазерами
Секас, аднака!
это мне? если да то куда то вставлять этот код? в шаг?заранее спасибо


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 27 Мая 2011 в 23:25
куда то вставлять этот код? в шаг?
Я так понял, что "лазер A" лазерная турель, а "просто лазер" — лазерный луч.
В событие рисование объекта-луча или объекта-турели (тогда объект-луч не нужен, но турель должна помнить когда стреляет, а когда нет и соответственно рисовать луч или нет).


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 28 Мая 2011 в 09:00
var tomove;
    tomove=keyboard_check(vk_right)-keyboard_check(vk_left);
    //...
Интересная штука. Я вот до такого не додумался!  :'(  :-\
Впрочем, я думаю, что код будет понятнее, если так не извращаться. Просто потом, когда я через месяц открываю игру и смотрю на свой код, мне и так приходится разбираться что и как работает, а уж с этим...
P.S. Черт возьми! Чтож у меня точки-то вместо запятых ставятся! Я же Shift вроде нажимаю!


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 28 Мая 2011 в 11:09
А я вот такой вопрос задам: есть ли какая-нибудь информация о структуре файла сохранённой игры? Нет, речь не о gmd/gm6/gmk/gm81. Я имею в виду файлы, создаваемые нажатием F5, действием "Save the Game" и функцией game_save().


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 28 Мая 2011 в 18:26
Извращение?
w=keyboard_check(ord("W"));
a=keyboard_check(ord("A"));
s=keyboard_check(ord("S"));
d=keyboard_check(ord("D"));

if (w+s=2)
{
w=0;
s=0;
}

if (a+d=2)
{
a=0;
d=0;
}

if ((w+a+s+d)>0 and global.map=false)
{
if (main_spid<max_spid) main_spid+=0.1/global.r_speed;
}
else
{
if (main_spid>0) main_spid-=0.1/global.r_speed;
}

if ((w+a+s+d)==1) dir1=a*90+s*180+d*270;
if ((w+a+s+d)==2) dir1=w*(a*45-d*45)+180*s+(1-w)*(d*45-a*45);


if place_free(x+lengthdir_x(main_spid/global.r_speed,direction+dir1),y+lengthdir_y(main_spid/global.r_speed,direction+dir1))
{
x+=lengthdir_x(main_spid/global.r_speed,direction+dir1);
y+=lengthdir_y(main_spid/global.r_speed,direction+dir1);
}
else
{
sine=1;
if place_free(x+lengthdir_x(main_spid/global.r_speed,direction+dir1-84),y+lengthdir_y(main_spid/global.r_speed,direction+dir1-84))
{
sine=-1;
}
else
{
if place_free(x+lengthdir_x(main_spid/global.r_speed,direction+dir1+84),y+lengthdir_y(main_spid/global.r_speed,direction+dir1+84))
{
sine=+1;
}
}
for(i=2; i<84; i+=2)
{
if (i>=10 and dir1=0) cur_spid=main_spid/(i/10);
else cur_spid=main_spid;
if place_free(x+lengthdir_x(cur_spid/global.r_speed,direction+dir1+sine*i),y+lengthdir_y(cur_spid/global.r_speed,direction+dir1+sine*i))
{
x+=lengthdir_x(cur_spid/global.r_speed,direction+dir1+sine*i);
y+=lengthdir_y(cur_spid/global.r_speed,direction+dir1+sine*i);
break;
}
}
}
Вот как реализовано движение в моем лабиринте. Со скольжением вдоль стеночек.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 28 Мая 2011 в 19:45
Вот как реализовано движение в моем лабиринте. Со скольжением вдоль стеночек.
А в моём так (без скольжения, правда):
var a,b,dx,dy;
a=keyboard_check(ord('W'))-keyboard_check(ord('S'));
b=keyboard_check(ord('A'))-keyboard_check(ord('D'));
if abs(a)+abs(b)==2{
  a/=sqrt(2); b/=sqrt(2);
}
if position_meeting(x,y,obj_pro_antiweb){
  a/=2; b/=2;
}
dx=(lengthdir_x(a,direction)+lengthdir_y(b,direction))*2;
dy=(lengthdir_y(a,direction)-lengthdir_x(b,direction))*2;
if place_free(x+dx,y+dy) { x+=dx; y+=dy; }
В качестве положительного момента: ord('W') и т.д. легко заменяется на global.key_forth или ds_map_find_value(global.keybindings,'вперёд'), что очень удобно для тонкой настройки управления.

P.S. obj_pro_antiweb - такая вражеская тормозилка. Для понимания кода, в принципе, не важна.


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 28 Мая 2011 в 22:00
А я вот такой вопрос задам: есть ли какая-нибудь информация о структуре файла сохранённой игры? Нет, речь не о gmd/gm6/gmk/gm81. Я имею в виду файлы, создаваемые нажатием F5, действием "Save the Game" и функцией game_save().
Тебе так надо это узнать? По-моему гораздо проще сделать свои сохраниния, потому как стандартные (я убедился в этом на собственном опыте) работают из рук вон плохо.  Например, как-то раз я сделал игру под названием Necromancer. Так вот, там использовались стандартные сохраниния и они работали, пока мы не выходили из игры. Но вот мы вышли, вновь зашли и... Все загрузилось. Все даже работает! Но ГГ неким магическим образом (Не иначе как плясал с бубном и умаялся) застревал прямо в воздухе! Как, черт возьми, он это делал я до сих пор понять не могу! Но, тем не менее, игру приходилось начинать заново.


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 28 Мая 2011 в 22:15
Как, черт возьми, он это делал я до сих пор понять не могу! Но, тем не менее, игру приходилось начинать заново.
То, что ты чего-то понять не можешь, не означает еще, что это никому не нужно.
Нет более быстрого способа сохранения и загрузки игры, чем использование стандартного способа сохранения.


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 28 Мая 2011 в 23:09
Согласен. Но свой все-таки надежнее. Если что, всегда можно исправить, а вот стандартный, он и есть стандартный, его не перепишешь...


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 28 Мая 2011 в 23:19
куда то вставлять этот код? в шаг?
Я так понял, что "лазер A" лазерная турель, а "просто лазер" — лазерный луч.
В событие рисование объекта-луча или объекта-турели (тогда объект-луч не нужен, но турель должна помнить когда стреляет, а когда нет и соответственно рисовать луч или нет).

тундра, это просто луч с неба  ;D (без обид)


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 29 Мая 2011 в 10:35
тундра, это просто луч с неба  ;D (без обид)
А что, есть разница, как турель называется? Вполне можно сделать длинной и плоской и назвать "небом". :p


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 29 Мая 2011 в 12:24
Посмотри исходники моей версии Deep Magic. В оригинале монстры-пехотинцы ходили по воздуху, а я добавил им спрыгивание с платформ.


Название: Re: Ответы@Gmakers.ru
Отправлено: Shenja от 29 Мая 2011 в 16:56
Приветствую, у меня такая проблема, я делаю TDS, там я сделал монстриков, которые просто топчатся на своем месте. У меян первый вопрос, как сделать, что бы они шли за мной, а не просто ходили вокруг одной точки.
И второй вопрос:
Я в создание монстру сделал:
health=100 
 alarm[0]=1
 speed=2
А в соприкосновении с пулей:
health = -50
При этом в шаге указал:
 if health<=0
 instance_destroy ()
, так почему когда я попадаю по монстру, мне ГМ выдает ошибку:

___________________________________________
ERROR in
action number 2
of Draw Event
for object object3:

Error in code at line 1:
   if obj_player.gun='Пистолет'draw_text(view_xview[0],view_yview[0],'Pistolet "Marta"#Patronov:'+string(obj_player.pistolet_patron))
                ^
at position 15: Unknown variable gun
Вот мой игра:


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 29 Мая 2011 в 17:11
Хахахах, вот это ты загнул! Напиши объекту obj_player в Create
gun='Пистолет'
 ;D По крайней мере ругается ГМ именно на это.
P.S. игру даже не смотрел...
Оо посмотрел. Переменная там есть. Сейчас посмотрю в чем дело.
P.P.S. Health - глобальная переменная. т.е. ее можно прописать только ОДНОМУ объекту. Замени на какой-нибудь hp
Все работает. А проблема была хе-хе знаешь в чем? В том, что ты убиваешь одного монстра, а Health - то отнимается  у всех, и у игрока тоже. Когда игрок умирает, то переменная obj_player.gun исчезает вместе с ним. Вот он и ругается.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 29 Мая 2011 в 18:14
Как сделать что бы враг на платформе ре двигался к игроку только по х, а у являлась как бы сама гравитация?(мне на платформе надо что бы враг двигался к игроку)
зы: я не флужу я перевожу сообщение ниже что бы ответили нормально
Заранее спасибо.


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 29 Мая 2011 в 18:44
Сейчас сделаю примерчик..Я тебя правильно понял, тебе надо, чтобы по х монстр бежал в сторону игрока, и приэтому на него действовала гравитация?


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 29 Мая 2011 в 18:57
Тебе никто не отвечает, потому что ты непонятно формулируешь вопросы. Удалил твою тему. Правила одни для всех.


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 29 Мая 2011 в 19:01
А я то ищу твою тему..  :P. Ладно, сюда кину: http://rghost.ru/8459771 (http://rghost.ru/8459771)
Надеюсь, помог.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 29 Мая 2011 в 19:03
А я то ищу твою тему..  :P. Ладно, сюда кину: http://rghost.ru/8459771 (http://rghost.ru/8459771)
Надеюсь, помог.
спасибо спасибо спасибо!то что надо  O0 ,спасибо за это=)
если бы мог то поставил респект(
---------------------------------------------------------------------------------------------------------
вопрос не из того кода(из другого)
- - - - - - - - - - - - - - - - - - - - -
как в коде "vk_left" заменить типа на кнопку "a"(управление WASD)


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 29 Мая 2011 в 19:32
как в коде "vk_left" заменить типа на кнопку "a"(управление WASD)
ord('A') (или просто 65).

Кстати, мой ответ тебе на ту же тему из-за TIME PARADOX-а на предыдущей странице.


Название: Re: Ответы@Gmakers.ru
Отправлено: Satan'sCry от 29 Мая 2011 в 19:37
Я давно ничего тут не спрашивал, И Вот:

Создавая Воксельноподобный движок, наткнулся на проблему с деактивацией в 3д.
В ГМ 8.0 игра бы от силу выдавала 1 фпс.
В ГМ 8.1.91 - 7-10 фпс
И мне нужно было увеличить производительность хотя бы до 15 - 25 фпс.
Я решил сделать 3д деактивацию
Step.o_player

instance_deactivate_object(glosolid);
with (oearth)
{
if (abs(o_player.z-z)) > 40
   {
   instance_deactivate_object(self)
   }
}

instance_activate_region(x-200,y-200,400,400,1);
Но из-за 3д деактивации игра виснет.Что не так, или что делать?
Может кто сталкивался с этим... =(


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 29 Мая 2011 в 19:43
Воксели это хорошая вещь, но в GM это почти самоубийство.
Лично я работаю над 2D воксельным движком а-ля Tiberian Sun


Название: Re: Ответы@Gmakers.ru
Отправлено: Satan'sCry от 29 Мая 2011 в 19:52
Воксели - 3-х мерные пиксели, т е это либо 3д, либо псевдо3д.
Никто не может помочь?(


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 29 Мая 2011 в 19:56
Попробуй сделать так:
Сначала активируешь всё.
Затем деактивируешь объекты за пределами вида.
Затем, при необходимости, активируешь объекты, которые всегда должны быть активны вне зависимости от координат.


Название: Re: Ответы@Gmakers.ru
Отправлено: Satan'sCry от 29 Мая 2011 в 19:58
Затем деактивируешь объекты за пределами вида.
В 3д, вида нету.
Мне именно по Z нужно деактивировать, аля сфера...


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 29 Мая 2011 в 20:00
Почему по z? Почему бы не деактивировать то, что за спиной, проверяя направление камеры?


Название: Re: Ответы@Gmakers.ru
Отправлено: Satan'sCry от 29 Мая 2011 в 20:02
Просто мне нужно убирать то что под землей...
Играл в МайнКрафт? Вот там все блоки XxYxZ без пустот, но там удаляются вертексы, что гм не могет...
Мне нужно удалять то что под землей в рад 40, а потом (если игрок опустится) появляться, а выше удалять + 2д деактивация по региону.


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 29 Мая 2011 в 20:05
Я давно ничего тут не спрашивал, И Вот:

Создавая Воксельноподобный движок, наткнулся на проблему с деактивацией в 3д.
В ГМ 8.0 игра бы от силу выдавала 1 фпс.
В ГМ 8.1.91 - 7-10 фпс
И мне нужно было увеличить производительность хотя бы до 15 - 25 фпс.
Я решил сделать 3д деактивацию
Step.o_player
instance_deactivate_object(glosolid);
with (oearth)
{
if (abs(o_player.z-z)) > 40
   {
   instance_deactivate_object(self)
   }
}

instance_activate_region(x-200,y-200,400,400,1);
Но из-за 3д деактивации игра виснет.Что не так, или что делать?
Может кто сталкивался с этим... =(
Извини Black Satan. Это не мой уровень. Я пока еще только 2д осваиваю  :crazy:


Название: Re: Ответы@Gmakers.ru
Отправлено: Satan'sCry от 29 Мая 2011 в 20:16
Т. е. некому помочь =(


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 29 Мая 2011 в 22:17
instance_deactivate_object(glosolid);
with (oearth)
{
if (abs(o_player.z-z)) > 40
   {
   instance_deactivate_object(self)
   }
}
instance_activate_region(x-200,y-200,400,400,1);
Попробуй переставить слагаемые:
instance_activate_all();
instance_deactivate_region(x-200,y-200,400,400,0,1);
with oearth
  if abs(o_player.z-z) > 40
    instance_deactivate_object(self);
// не исключено, что какие-то объекты не попадут в регион и их надо будет доактивировать, hud, например


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 29 Мая 2011 в 23:34
Error in code at line 1:
   if obj_player.x < x
                ^
at position 15: Unknown variable x

что делать? скажите пожалуйста


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 29 Мая 2011 в 23:44
Error in code at line 1:
   if obj_player.x < x
                ^
at position 15: Unknown variable x

что делать? скажите пожалуйста
Ты где исполняешь этот код? Юрия съели динозавры, поэтому мы не знаем твои мысли.


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 30 Мая 2011 в 00:02
Может у тебя игрок умирает?


Название: Re: Ответы@Gmakers.ru
Отправлено: Satan'sCry от 30 Мая 2011 в 00:14
instance_deactivate_object(glosolid);
with (oearth)
{
if (abs(o_player.z-z)) > 40
   {
   instance_deactivate_object(self)
   }
}
instance_activate_region(x-200,y-200,400,400,1);
Попробуй переставить слагаемые:
instance_activate_all();
instance_deactivate_region(x-200,y-200,400,400,0,1);
with oearth
  if abs(o_player.z-z) > 40
    instance_deactivate_object(self);
// не исключено, что какие-то объекты не попадут в регион и их надо будет доактивировать, hud, например
АВС это модуль, не отриц.
Хотя я так делал, виснет


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 30 Мая 2011 в 01:21
Я знаю, что такое absolute value, boy! :) Я имел в виду, что от перестановки слагаемых (в данном случае от порядка активации/деактивации) сумма не меняется, но "а вдруг".


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 30 Мая 2011 в 10:10
Может у тебя игрок умирает?
точно,спасибо  O0 2 раз помог  ;D
______________________________
помогите пожалуйста, код который написан далее не работает:
if obj_player.x<x
        sprite_index = sprite9;
    else
        sprite_index = sprite7;

он в шаге у врага


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 30 Мая 2011 в 14:01
if obj_player.x<x
        sprite_index = sprite9;
    else
        sprite_index = sprite7;

он в шаге у врага
А на что жалуется? Я не вижу проблемы.


Название: Re: Ответы@Gmakers.ru
Отправлено: Satan'sCry от 30 Мая 2011 в 14:20
Ну не знаю, попробуй так...

if obj_player.x<x
        {sprite_index = sprite9;}
    else
        {sprite_index = sprite7;}

Хотя разницы нет...


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 30 Мая 2011 в 16:06
Попробуй заменить "меньше" на "меньше или равно".


Название: Re: Ответы@Gmakers.ru
Отправлено: Tkachov от 30 Мая 2011 в 16:08
По-моему, тут тоже игрок умирает (или его даже ещё нет в комнате  :crazy: ) и враги пытаются обратиться к какому-нибудь образцу экземпляру игрока, но не находят и кричат об ошибке, которую нам даже не удосужились показать.


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 30 Мая 2011 в 17:10
У меня вот вопрос. Можно-ли как-нибудь повернуть тайл?


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 30 Мая 2011 в 17:44
У меня вот вопрос. Можно-ли как-нибудь повернуть тайл?
Нельзя.


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 30 Мая 2011 в 17:53
А жаль! Очень бы пригодилось.

Тогда так. Сильно ли пострадает производительность если вместо тайлов использовать 3 больших сюрфа?


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 30 Мая 2011 в 18:04
Сильно ли пострадает производительность если вместо тайлов использовать 3 больших сюрфа?
Нет, но память будет жрать ужасно.


Название: Re: Ответы@Gmakers.ru
Отправлено: ГоК от 30 Мая 2011 в 18:13
Ок, тогда лучше оставлю как есть.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 30 Мая 2011 в 18:44
if obj_player.x<x
        sprite_index = sprite9;
    else
        sprite_index = sprite7;

он в шаге у врага
А на что жалуется? Я не вижу проблемы.
не исполняет код.
может просто много кодов в шаге у врага....
По-моему, тут тоже игрок умирает (или его даже ещё нет в комнате  :crazy: ) и враги пытаются обратиться к какому-нибудь образцу экземпляру игрока, но не находят и кричат об ошибке, которую нам даже не удосужились показать.
он та есть а они не поворачиваются а ошибки нет просто код не работает
Ну не знаю, попробуй так...

   Gml:

if obj_player.x<x
            {sprite_index = sprite9;}
        else
            {sprite_index = sprite7;}



Хотя разницы нет...
я тоже не вижу разницы


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 30 Мая 2011 в 18:58
В этом куске кода ошибок нет. Проблема где-то в другом месте.
Проверь начальные координаты спрайтов.
Спрайт, кстати, можно и программно отражать.
if (obj_player.x<x) image_xscale=-1;
else image_xscale=1;


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 30 Мая 2011 в 19:04
[sarcasm]А между sprite7 и sprite9 разница есть?[/sarcasm]


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 30 Мая 2011 в 22:01
В этом куске кода ошибок нет. Проблема где-то в другом месте.
Проверь начальные координаты спрайтов.
Спрайт, кстати, можно и программно отражать.
if (obj_player.x<x) image_xscale=-1;
else image_xscale=1;
я знаю что он работоспособный


Название: Re: Ответы@Gmakers.ru
Отправлено: Огион от 30 Мая 2011 в 22:03
А раз знаешь, то от нас ты чего хочешь? Наш штатный телепат недавно попал в аварию. Мы не можем узнать, что у тебя не так.


Название: Re: Ответы@Gmakers.ru
Отправлено: Mister Vindetta от 30 Мая 2011 в 22:04
Почему при одновременном зажатии стрелки вверх (прыжок) и стрелки вправо (или влево) персонаж получает огромное ускорение? Как решить эту проблему?
Сам файл: http://keepfile.ru/23859743/?logoff


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 30 Мая 2011 в 22:07
А раз знаешь, то от нас ты чего хочешь? Наш штатный телепат недавно попал в аварию. Мы не можем узнать, что у тебя не так.
заменить весь прошу
нет у тебя сломался, а у уважаемого Фывапролджэ работает

твой код сделал это о.о
спасибо


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 30 Мая 2011 в 22:12
Спасибо, конечно  :crazy: . А текст ошибки увидеть можно?


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 30 Мая 2011 в 22:12
Почему при одновременном зажатии стрелки вверх (прыжок) и стрелки вправо (или влево) персонаж получает огромное ускорение? Как решить эту проблему?
Сам файл: http://keepfile.ru/23859743/?logoff
Там кнопки!!!
(http://farm3.static.flickr.com/2312/5742783143_64bb15c272.jpg)

Попробуй исполнять код if (hspeed>4) hspeed=4; и if (hspeed<-4) hspeed=-4;


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 30 Мая 2011 в 22:18
Посмотрел исходник
Почему при одновременном зажатии стрелки вверх (прыжок) и стрелки вправо (или влево) персонаж получает огромное ускорение? Как решить эту проблему?
Сам файл: http://keepfile.ru/23859743/?logoff
Я сам не очень разбираюсь в кнопках, потому что как-то незаметно для себя перепрыгнул эту веху развития. Могу сказать лишь одно. Почему-то, когда персонаж находится в прыжке, он начинает двигаться очень быстро. Я даже знаю почему: Когда ты используешь красны стрелочки, то vspeed переходит в hspeed и персонаж моментально ускоряется на 20. Думаю так. Другого объяснения у меня нет.


Название: Re: Ответы@Gmakers.ru
Отправлено: Mister Vindetta от 30 Мая 2011 в 22:26
Спасибо :)


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 30 Мая 2011 в 22:30
Спасибо, конечно  :crazy: . А текст ошибки увидеть можно?
извини ты мне?
(мало ли другому Оо" )


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 31 Мая 2011 в 09:23
Тебе, конечно.  ;D


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 31 Мая 2011 в 10:21
Тебе, конечно.  ;D
нз)((незачто=нз) помог с кодом и сделал почти лично пример,я не из тех кто не благодарит=)),а ту проблему Ogion решил
 в это время у меня проблемы х)
как сделать врагу* хождение по неровной поверхности(он сам должен идти,если сините пример дезсоула то он не подойдёт они с бешеной скоростью идёт к игроку и стоят тупо и не идёт за ним(игроком) )


Название: Re: Ответы@Gmakers.ru
Отправлено: CJIADKUU 6Y6AJIEX от 31 Мая 2011 в 11:13
Лююди! У меня гамак повис, задача не снимается, процесс не завершается. Перезагружать комп не хочу, ибо все изменения, введённые мною на протяжении получаса будут утеряны. Что делать, как закрыть exe?

UPD: Уже поздно, виноват конфиг...



Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 31 Мая 2011 в 11:15
По неровной поверхности... Теоретически это можно легко сделать при помощи Движка, который я обнаружил впервые в примере от ГоКа...Но тогда враги перестанут проваливаться в дырки... Сейчас попробую.


Название: Re: Ответы@Gmakers.ru
Отправлено: Mister Vindetta от 31 Мая 2011 в 15:22
Э-э-э-э-э-э... Ссори за тупизну, но КАК ЗАМЕНИТЬ КУРСОР НА СПРАЙТ? Я пробовал
cursor_sprite='имя'
и
   x=mouse_x
y=mouse_y
Но ничего не получается! Помогите!


Название: Re: Ответы@Gmakers.ru
Отправлено: tolich от 31 Мая 2011 в 15:45
1) Кавычки лишние. Должно быть cursor_sprite=name.
2) Это должно быть у объекта со спрайтом курсора.
3) Еще можно draw_sprite(name,0,mouse_x,mouse_y).


Название: Re: Ответы@Gmakers.ru
Отправлено: Mister Vindetta от 31 Мая 2011 в 16:35
Спасибочки)))


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 31 Мая 2011 в 19:44
По неровной поверхности... Теоретически это можно легко сделать при помощи Движка, который я обнаружил впервые в примере от ГоКа...Но тогда враги перестанут проваливаться в дырки... Сейчас попробую.

спасибо с меня уже 3 плюса  O0 ;D

как сделать ограничитель скорости?
зы:шутить со знаком для монстра не надо


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 31 Мая 2011 в 19:58
Если используешь стандартную скорость, то
if hspeed<-maxhspeed {hspeed=-maxhspeed}// То же самое можно проделать и по вертикали. 
if hspeed>maxhspeed {hspeed=maxhspeed}//(должна иметься переменная maxhspeed)
, а если движок, то там, в init_platform скрипте, все расписано, где там меняется максимальная скорость и т. д.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 31 Мая 2011 в 20:10
Если используешь стандартную скорость, то
if hspeed<-maxhspeed {hspeed=-maxhspeed}// То же самое можно проделать и по вертикали. 
if hspeed>maxhspeed {hspeed=maxhspeed}//(должна иметься переменная maxhspeed)
, а если движок, то там, в init_platform скрипте, все расписано, где там меняется максимальная скорость и т. д.
спасибо,но не помогает (это код от примера который ты дал,просто враги бегают как сумасшедшие)
проблема решена Оо


Название: Re: Ответы@Gmakers.ru
Отправлено: Shenja от 01 Июня 2011 в 14:17
Я делаю игру, для двух игроков. Вот мне не понятны две вещи... Как сделать так, что бы через каждые... 2 минуты, по карте слева направо(на пример), проезжала телега... И еще один вопрос, как сделать что бы вначале игры была просьба ввести имя обоих игроков( это я сделал), но не понимаю как сделать, что бы оно висел на головами игроков...

Вот игра:


Название: Re: Ответы@Gmakers.ru
Отправлено: FeerZlay от 01 Июня 2011 в 14:33
1) Используй алармы :GM005:.
2) F.A.Q II.1.4
3) Sound does not exist - Звук не существует. Ты пытаешься воспроизвести несуществующий звук.


Название: Re: Ответы@Gmakers.ru
Отправлено: Str4k от 01 Июня 2011 в 14:52
Дайте кто нибудь стрипы от игры чип и дейл 2.


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 01 Июня 2011 в 14:55
Пользуйся поиском. (http://www.spriters-resource.com/genesis/squirrelking/sheet/21268) Найдено за 15 секунд.
//И по-моему это не вопрос :DD Вероятно не та тема.


Название: Re: Ответы@Gmakers.ru
Отправлено: Shenja от 01 Июня 2011 в 15:58
1) Используй алармы :GM005:.
2) F.A.Q II.1.4
3) Sound does not exist - Звук не существует. Ты пытаешься воспроизвести несуществующий звук.
1) Не, то что их надо делать я понимаю, прост не понимаю как именно=(
2)Там имеется ввиду другое, мне надо, чтоб имя все время было рядом с ними.
3)Со звуком уже разобрался, там опечатался.


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 01 Июня 2011 в 17:01
1. Справка. Одна страница справки объяснит тебе все про алармы.
2. Принцип тот же.


Название: Re: Ответы@Gmakers.ru
Отправлено: Str4k от 01 Июня 2011 в 17:24
ZitRo а есть сайт для фонов?


Название: Re: Ответы@Gmakers.ru
Отправлено: Макасин от 01 Июня 2011 в 19:46
Ваня, ну поисковик же.


Название: Re: Ответы@Gmakers.ru
Отправлено: Str4k от 01 Июня 2011 в 20:46
Пишу в гугле фоны из chip n dale 2 rescue rangers ничего нет.Я ведь специально сюда задал вопрос.


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 01 Июня 2011 в 21:39
По сути с фонами нет разницы от куда они, ну если не специфические какие-нибудь. Конкретно по Чипу и Дейлу фонов ты не найдешь (или найдешь мало), разве что искать "для игры". Ищи конкретно местность, например, песок или лес. А еще поищи "бесшовные текстуры", вполне отличный фон получится.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 01 Июня 2011 в 22:23
Пишу в гугле фоны из chip n dale 2 rescue rangers ничего нет.Я ведь специально сюда задал вопрос.
может не правильно напечатал в поиск? набери по русский, а потом уже найдёшь на английском


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 01 Июня 2011 в 22:26
Пишу в гугле фоны из chip n dale 2 rescue rangers ничего нет.Я ведь специально сюда задал вопрос.
может не правильно напечатал в поиск? набери по русский, а потом уже найдёшь на английском
Фейл. Если хотите оттуда достать фоны - вскрывайте архивы с игрой. Иначе никак.


Название: Re: Ответы@Gmakers.ru
Отправлено: RAY2 от 01 Июня 2011 в 22:29
Пишу в гугле фоны из chip n dale 2 rescue rangers ничего нет.Я ведь специально сюда задал вопрос.
может не правильно напечатал в поиск? набери по русский, а потом уже найдёшь на английском
Фейл. Если хотите оттуда достать фоны - вскрывайте архивы с игрой. Иначе никак.
согласен сами фоны в самой игре=.=, а сели игры нет? ты не подумал об этом? нигде нет как и старой игры 1998 года "Pats Five"
______________________________
как сделать такую штучку что бы когда наводишь мышью на объект1 появлялась надпись что это ( к примеру это яблоко)
__________________________________
if keyboard_check(ord('W')) y -= 4
if keyboard_check(ord('S')) y += 4
if keyboard_check(ord('A')) x -= 4
if keyboard_check(ord('D')) x += 4

как сюда добавить изменение спрайтов? к примеру нажал на w спрайт5 становится


Название: Re: Ответы@Gmakers.ru
Отправлено: spyalex от 01 Июня 2011 в 23:51
Доброго времени суток. Я здесь новенький, начал писать игру (уже готова на 70%)
застрял на следующем.
Имеются 2 объекта в комнате 640*480. Надо чтобы объекты летали хаотично слева направо, но обязательно пролетали через центр комнаты. Залетали за край комнаты, разворачивались и летели обратно. Я курсором их убиваю. И вместо одного убитого появляется новый и начинается все заново. Если объект не убить и дождаться его вылета за границу, то он увеличивается в размерах до определенных "x". Ведется счетчик убитых. Объектов может быть от 2-х и до 5-ти.

Я уже сам смог сменить курсор и курсор по нажатию левой кнопки. Объект убивается, и вместо него появляется лужа крови (так задумано), Смог увеличить объект. Смог сделать, чтобы объект летал за границу и разворачивался, но только по прямой, а надо чтобы хаотично и чтобы обязательно через центр.
Просьба помочь мне новичку. Или направить на нужные исходники примеров игр, чтобы я сам методом тыка разобрался.
Заранее благодарен.


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 02 Июня 2011 в 00:20
if keyboard_check(ord('W')) y -= 4
if keyboard_check(ord('S')) y += 4
if keyboard_check(ord('A')) x -= 4
if keyboard_check(ord('D')) x += 4

как сюда добавить изменение спрайтов? к примеру нажал на w спрайт5 становится
Скобки добавь
if keyboard_check(ord('W')) {y -= 4;sprite_index=sprite1;}
if keyboard_check(ord('S')) {y += 4;sprite_index=sprite2;}
if keyboard_check(ord('A')) {x -= 4;sprite_index=sprite3;}
if keyboard_check(ord('D')) {x += 4;sprite_index=sprite4;}


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 02 Июня 2011 в 00:46
Каким образом можно создать пятнадцать баз вопросов разной сложности (в каждой вопросов 10-15) без использования массивов (что-то тормозят) и внешней подгрузки (та же проблема)?


Название: Re: Ответы@Gmakers.ru
Отправлено: Кто-тo от 02 Июня 2011 в 00:59
Каким образом можно создать пятнадцать баз вопросов разной сложности (в каждой вопросов 10-15) без использования массивов (что-то тормозят) и внешней подгрузки (та же проблема)?
Либо списки, либо написать DLL


Название: Re: Ответы@Gmakers.ru
Отправлено: G_CCompany от 02 Июня 2011 в 01:14
Списки - что имеется в виду?


Название: Re: Ответы@Gmakers.ru
Отправлено: WaterClick от 02 Июня 2011 в 08:33
Списки - это листы. Посмотри, блин, в справке! Там они есть.


Название: Re: Ответы@Gmakers.ru
Отправлено: Str4k от 02 Июня 2011 в 09:06
Пишу в гугле фоны из chip n dale 2 rescue rangers ничего нет.Я ведь специально сюда задал вопрос.
может не правильно напечатал в поиск? набери по русский, а потом уже найдёшь на английском
Фейл. Если хотите оттуда достать фоны - вскрывайте архивы с игрой. Иначе никак.
А как? И какие архивы у меня тока nes файл и всё.


Название: Re: Ответы@Gmakers.ru
Отправлено: Rowk от 02 Июня 2011 в 20:40
Привет всем, у меня тут проблема с приседаниями, если гг стоит на месте и приседает, при отпускании кнопки он встает, но если присесть и начать двигаться то гг остается в сидячем положении и после отпускания кнопок.


Название: Re: Ответы@Gmakers.ru
Отправлено: ZitRo от 02 Июня 2011 в 21:24
Привет всем, у меня тут проблема с приседаниями, если гг стоит на месте и приседает, при отпускании кнопки он встает, но если присесть и начать двигаться то гг остается в сидячем положении и после отпускания кнопок.
Приведи хотя бы примеры кода события приседания, движения...

Доброго времени суток. Я здесь новенький, начал писать игру (уже готова на 70%)
застрял на следующем.
Имеются 2 объекта в комнате 640*480. Надо чтобы объекты летали хаотично слева направо, но обязательно пролетали через центр комнаты.
spyalex, центр комнаты - это точка с координатами (320,240)?
Если да, то хаотично только скорость получится, что уже не хаотично. (Или я не понял, или уточни) Вероятно, через вертикаль? Тогда просто напросто управляйся переменной hspeed. Чтобы вылетал и возвращался, можно написать в степ что-то типа
if x<0 hspeed+=1; if x>room_width hspeed-=1;
if sqr(hspeed)>100 hspeed/=1.2; //Ограничим скорость до 10 px/s
Ну и в том же духе.
Хаотичность - любимый random(). Рандом правит миром. Добавляй/отнимай случайное кол-во градусов при повороте, делай случайную скорость, пробуй, удачи.


Название: Re: Ответы@Gmakers.ru
Отправлено: Rowk от 02 Июня 2011 в 21:41
    Приведи хотя бы примеры кода события приседания, движения...
    Код в step.
    if (jump=0 && crounch=0 && walkspeed=0) { sprite_index=stop_r; image_speed=.1; }
        if (jump=0 && crounch=0 && walkspeed!=0){sprite_index=droid_r; image_speed=.5; }
        if (jump=0 && crounch=1 && walkspeed!=0){sprite_index=sid_move; image_speed=.5; }
        if (jump=1){sprite_index=droid_jump; image_speed=1; }
        if (jump=0 && walkspeed=0 && crounch=1){sprite_index=sid_stop; image_speed=.1; }
    Движение вправо.
    if (!keyboard_check(vk_left))
        {
        image_xscale=1;
        if (x<room_width-5)
        {
            walkspeed = max(atr_maxspeed,walkspeed+atr_accel);
        }
        side=0
        }
    Приседание.
    if (!jump && walkspeed=0)
        {
            crounch=1;
        }

    [/list]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 02 Июня 2011 в 21:51
    а как он у тебя встаёт? (код)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 02 Июня 2011 в 21:52
    Тут как раз не хватает события "вставания". По идее там должно быть crounch=0, так? Проверь, выполняется ли оно вообще.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 02 Июня 2011 в 22:06
    Что-то я не вижу кода
    crounch=0;
    Предположу, что в отпускании приседательной кнопки написано
    if (!jump && walkspeed=0)
            {
                crounch=0;
            }
    Но тогда всё верно: если движется или прыгает, то не встанет.

    К слову: "припасть к земле" не "crounch", а "crouch".


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 22:11
    Тут как раз не хватает события "вставания". По идее там должно быть crounch=0, так? Проверь, выполняется ли оно вообще.
    Есть, отпускание клавиши.
    if (!jump && walkspeed=0)
        {
            crounch=0;
        }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 02 Июня 2011 в 22:18
    Я телепат! :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 22:20
    Я телепат! :)
    Не льсти себе, все интуиция.  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 02 Июня 2011 в 22:29
    В отпускании убери условие walkspeed=0, и всё заработает.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 22:31
    В отпускании убери условие walkspeed=0, и всё заработает.
    Убрал, теперь не стает.
    if (!jump=0)
        {
            crounch=0;
        }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 02 Июня 2011 в 22:35
    Убрал, теперь не стает.
    А понял! Надо ещё "!" перед jump=0 убрать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 22:41
    Убрал, теперь не стает.
    А понял! Надо ещё "!" перед jump=0 убрать.
    Заработало, спасибо, а как приседать на ходу?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 02 Июня 2011 в 22:52
    Ну вот рассуждай логически:
    у тебя есть код
    Приседание.
    if (!jump && walkspeed=0)
            {
                crounch=1;
            }
    в нём есть такое условие "if (!jump && walkspeed=0)" ("если мы не подпрыгнули и скорость ходьбы равна 0, то...")
    Может дальше сам догадаешься? ;)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 23:12
    в нём есть такое условие "if (!jump && walkspeed=0)" ("если мы не подпрыгнули и скорость ходьбы равна 0, то...")
    Может дальше сам догадаешься? ;)
    Прости, я в game maker 3 день работаю, не догоняю я в кодах пока что.  :-\


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 02 Июня 2011 в 23:19
    Ок! Нужно удалить "&& walkspeed=0" - оно не даёт сесть, если скорость не равна 0.

    game maker 3?! :o Чел, уже как бы 8-й есть.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 23:24
    Ок! Нужно удалить "&& walkspeed=0" - оно не даёт сесть, если скорость не равна 0.

    game maker 3?! :o Чел, уже как бы 8-й есть.
    Ок перефразирую. Я в game maker 8 работаю 3 день.
    И код уже как полчаса такой, и все еще не приседает на ходу.
    Удалил в нажатии, перестал приседать вообще.
    Удалил в отпускании, изменений нет.
    ________
    Спустя 5 мин
    АААААААААААА, перестал вообще приседать, не знаю что случилось.
    Спустя 6 мин
    АААААААААААА, теперь приседает, но не встает.
    Спустя 7 мин
    АААААААААААА, теперь приседает и встает только в прыжке.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 02 Июня 2011 в 23:29
    Ок перефразирую. Я в game maker 8 работаю 3 день.
    Обс! Я извиняюсь, не понял сразу. :)

    И код уже как полчаса такой, и все еще не приседает на ходу.
    Удалил в нажатии, перестал приседать вообще.
    Удалил в отпускании, изменений нет.
    Хм... Странно.
    То есть вот такой код в нажатии
    if (!jump) {crounch=1;}
    не работает?

    Спустя 5 мин
    АААААААААААА, перестал вообще приседать, не знаю что случилось.
    Спустя 6 мин
    АААААААААААА, теперь приседает, но не встает.
    Кинь исходник, попробую разобраться.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 23:43
    А нет, все, разобрался.
    Вот скрин пока что.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 02 Июня 2011 в 23:51
    Круто! Графику сам рисовал?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 02 Июня 2011 в 23:59
    Круто! Графику сам рисовал?
    Ну да, ничего же сложного, но на дроида полдня убил, а фон перерисовывать пришлось, фотошоп вылетал.  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 03 Июня 2011 в 00:02
    За дроида - распект!, хорошо получился.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 03 Июня 2011 в 01:22
    Еще вот вопрос есть, как сделать анимированый фон?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 03 Июня 2011 в 01:41
    Можно кодом менять фоны, как бы кадры.
    Можно сделать так же, но с тайлами, если нужны только фрагменты фона.
    В принципе, если там только фрагменты - можно и объектами.
    Так же как-то можно сурфейсами, но тут подробно не расскажу.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 03 Июня 2011 в 02:05
    Можно кодом менять фоны, как бы кадры.
    Можно сделать так же, но с тайлами, если нужны только фрагменты фона.
    В принципе, если там только фрагменты - можно и объектами.
    Так же как-то можно сурфейсами, но тут подробно не расскажу.
    А  можно с примерами, я не совсем понял.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 03 Июня 2011 в 08:25
    Ну, тут всё зависит от того, какая анимация нужна.
    Если анимация небольшая (дерево листочками покачивает), то лучше сделать несколько спрайтов и отображать их одним несколькими объектами.
    Если фон сдвигается влево-вправо или вверх-вниз, когда персонаж движетсято, то надо именно сдвигать фон. Если при этом часть фона сдвигается быстрее, часть медленнее, то надо сделать два фона и сдвигать их с разной скоростью.
    Если же требуется что-то вроде фонового видео, то можно сделать фон, содержащий все нужные кадры по высоте или ширине и поставить ему скорость на весь экран по высоте или ширине (впрочем, такой фон не может содержать большое число кадров, потому, что это одна текстура).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 03 Июня 2011 в 13:03
    Бладж, спасибо конечно за объяснения, но примера так и не увидел. Хотя повожусь еще, может пойму.
    ___________
    Разобрался как мог, сделал объект с глубиной, так ведь можно?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 04 Июня 2011 в 01:49
    Странная проблема вдруг возникла: не отображается нарисованный текст. Вот исходник, выкинул всё лишнее.
    obj_timer считает время в минутах и секундах и рисует его.
    scr_time_draw рисует вместо пустого разряда десятков ноль.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 04 Июня 2011 в 10:40
    Странная проблема вдруг возникла: не отображается нарисованный текст. Вот исходник, выкинул всё лишнее.
    obj_timer считает время в минутах и секундах и рисует его.
    scr_time_draw рисует вместо пустого разряда десятков ноль.

    Проблема в скрипте.
    scr1=argument0;
    scr2='';
    if string_length(scr1)<2 {scr2+='0'}
    scr2+=scr1;

    Он для того, что бы из "2" сделать "02"?
    Тогда последнюю строку измени на qqq = scr2+string(scr1);
    Это потому, что у тебя в одной переменной числовое значение, а во второй - текст, и их нельзя складывать.
    Но добавление нуля все равно не корректно работает, придется править скрипт. Хотя может это я там что-то испортил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 04 Июня 2011 в 10:52
    [gml=scr_time_draw]return string_replace_all(string_format(argument0,2,0),' ','0');[/gml]
    Хотя, тут, вообще-то, _all не нужен, так как пробел будет максимум 1.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 04 Июня 2011 в 13:39
    Не знаю, вариант Толича помог, хотя в моём арканоиде этот скрипт работал корректно.
    А обратный таймер таким образом будет рисоваться?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 04 Июня 2011 в 23:57
    Как сделать, чтобы пушка и голова поднимались как на пиклейд?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июня 2011 в 00:07
    Сравнивай, если угол больше максимального то угол=максимальный угол, если меньше то угол=минимальный.
    Понял?  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 05 Июня 2011 в 00:08
    Сравнивай, если угол больше максимального то угол=максимальный угол, если меньше то угол=минимальный.
    Понял?  :)
    Я даже незнаю как сделать чтобы за мышью что либо двигалось, нужно ли отдельные спрайты, хотя да, по логике надо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июня 2011 в 00:14
    image_angle - угол поворота спрайта.
    point_direction(x1,y1,x2,y2) - направление от одних координат до других.

    То есть:
    image_angle = point_direction(x,y,mouse_x,mouse_y) - повернет спрайт по направлению мыши.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 05 Июня 2011 в 01:25
    image_angle - угол поворота спрайта.
    point_direction(x1,y1,x2,y2) - направление от одних координат до других.

    То есть:
    image_angle = point_direction(x,y,mouse_x,mouse_y) - повернет спрайт по направлению мыши.
    Извени что туплю, но куда это все писать, и можно какой нибудь пример?  :-\
    _____
    Куда вставлять нашел, а как можно приделать руку к дроиду, чтобы она двигалась с ним, и стояла на нужном месте.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июня 2011 в 01:38
    Посмотри в Faq, как использовать lenghdir - поймешь  ;)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 05 Июня 2011 в 01:58
    Посмотри движок платформенной стрелялки JetBalance'а.
    И вообще, если ты новичок, всегда лучше начинать с готового примера или движка. Пока ты будешь изменять его под себя, постепенно освоишься. Главное - чтобы рано или поздно в движок было внесено столько изменений (своих, естественно, а не выдернутых из других примеров) чтобы ты мог, не покривив душой, сказать, что это твоя игра.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 05 Июня 2011 в 02:17
    Посмотри в Faq, как использовать lenghdir - поймешь  ;)
    А-а-а, не нашел, чушь одна получается, пойду спать, но непонятно. :'(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 05 Июня 2011 в 02:33
    Lengthdir'ы. Из-за опечатки не нашел.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 05 Июня 2011 в 02:48
    Lengthdir'ы. Из-за опечатки не нашел.
    Единственное что нашел это:
    II.5.2. Что производительней использовать, lengthdir_x(len, dir) и lengthdir_y(len, dir) или cos(degtorad(dir))*len и -sin(degtorad(dir))*len?
    Ответ: Как и в случаее с point_distance, lengthdir_x и lengthdir_y будет работать быстрее.
    Кажется не то же, да?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 05 Июня 2011 в 09:20
    как можно приделать руку к дроиду, чтобы она двигалась с ним, и стояла на нужном месте.
    [gml=obj_ruka_droida::End Step]x=obj_droid.x+x_nuzhnogo_mesta; y=obj_droid.y+y_nuzhnogo_mesta;[/gml]
    Вместо obj_droid, obj_ruka_droida, x_nuzhnogo_mesta и y_nuzhnogo_mesta подставить правильные значения.
    Впрочем, это только один из вариантов. В другом варианте дроид рисует себя полностью сам, в событии рисования.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 05 Июня 2011 в 11:36
    [gml=obj_ruka_droida::End Step]x=obj_droid.x+x_nuzhnogo_mesta; y=obj_droid.y+y_nuzhnogo_mesta;[/gml]
    Вместо obj_droid, obj_ruka_droida, x_nuzhnogo_mesta и y_nuzhnogo_mesta подставить правильные значения.
    Впрочем, это только один из вариантов. В другом варианте дроид рисует себя полностью сам, в событии рисования.
    Да ну это все, ничего не получается, может пишу не туда, или руки из зада, буду пока что дальше комнаты делать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 05 Июня 2011 в 13:50
    Да вот не получается потому, что что-то не так написал, или вставил в Step, а не в End Step.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 05 Июня 2011 в 14:08
    Или вместо x_nuzhnogo_mesta и y_nuzhnogo_mesta указал x_zada и y_zada ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 05 Июня 2011 в 19:23
    Или вместо x_nuzhnogo_mesta и y_nuzhnogo_mesta указал x_zada и y_zada ;D
    А-а-а, написал в end step: x=droid.x+1; y=droid.y+1;
    ___________________________________________
    ERROR in
    action number 1
    of End Step Event
    for object object25:

    Error in code at line 1:
       x=droid.x+1; y=droid.y+1;
              ^
    at position 9: Unknown variable x


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июня 2011 в 20:09
    А объект droid точно существует?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 05 Июня 2011 в 21:33
    Может, у тебя есть два ресурса с таким названием? Например, Спрайт "droid" и объект "droid".


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 05 Июня 2011 в 23:03
    Сделал, но есть опять запары, при повороте налево, бошка и рука остаются направо, и при приседании бошка и рука остаются на уровне стоячего.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 05 Июня 2011 в 23:54
    if (смотрим налево) image_xscale=-1 else image_xscale=1;


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 06 Июня 2011 в 00:27
    if (смотрим налево) image_xscale=-1 else image_xscale=1;
    Не понимат, куда писать, что надо вместо (смотрим налево).
    Вот код головы:
    x=droidd.x+3; y=droidd.y-5;
    image_angle = point_direction(x,y,mouse_x,mouse_y)
    Что надо добавить?
    (http://bfolder.ru/_ph/3/2/842064880.jpg)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 06 Июня 2011 в 00:57
    Ну тогда if (image_angle<270 || image_angle>90) image_xscale=-1 else image_xscale=1; и потом уже рисовать спрайт.
    Писать после image_angle=point_direction(x,y,mouse_x,mouse_y);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 06 Июня 2011 в 01:05
    Ну тогда if (image_angle<270 || image_angle>90) image_xscale=-1 else image_xscale=1; и потом уже рисовать спрайт.
    Писать после image_angle=point_direction(x,y,mouse_x,mouse_y);
    Ладно, подумал подумал, не надо мне этих лишних телодвижений, будет прямо стрелять только.  :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 06 Июня 2011 в 01:15
    Можешь выложить исходник - поможем  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 06 Июня 2011 в 01:37
    image_xscale - увеличивает спрайт в такое количество раз, в которое ты его задашь, но только относительно центра спрайта.
    Поэтому:
    а) выставь центр спрайта как центральная координата спрайта;
    б) запихни код, который тебе дали, на этот раз просто в Step;
    в) я много вру.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 06 Июня 2011 в 02:52
    Посмотри движок платформенной стрелялки JetBalance'а.
    Вот тебе ссылка.
    http://gmakers.ru/index.php?topic=2086.0
    Обязательно прочитай тему до конца, благо всего две страницы.
    Делай игру на основе этого примера. Начни с малого - поменяй спрайты на свои. Потом потихоньку разгребай код, читай справку, разбирайся. Там все просто. Честное слово!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Str4k от 06 Июня 2011 в 10:25
    Кароче я играл zombies ate my heighbours на сеге и на нинтендо но вот что меня убило - http://tsgk.captainn.net/?p=showsheets&t=sr&sr=371 - это спрайты от какой консоли? или ваще эт от компа.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 06 Июня 2011 в 11:11
    zombies ate my heighbours
    neighbors (http://ru.wikipedia.org/wiki/Zombies_Ate_My_Neighbors)?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 06 Июня 2011 в 13:52
    Спрайты с SNES, там написано.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 06 Июня 2011 в 17:10
    Посмотри движок платформенной стрелялки JetBalance'а.
    Вот тебе ссылка.
    http://gmakers.ru/index.php?topic=2086.0
    Обязательно прочитай тему до конца, благо всего две страницы.
    Делай игру на основе этого примера. Начни с малого - поменяй спрайты на свои. Потом потихоньку разгребай код, читай справку, разбирайся. Там все просто. Честное слово!
    Спасибо, но я уже подумал, не надо мыши, в основном будут коридоры без ящиков и тд препятствий, ключи, логи, пароли, чуть чуть зомби и турелей, так что это не особенно надо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Str4k от 06 Июня 2011 в 20:51
    Спрайты с SNES, там написано.
    Нет посмотри на 7 sprite sheet вот тут зеке из сеги а вот на 6 sprite sheet'е?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 06 Июня 2011 в 22:57
    Как можно организовать, как на пиклейд. Только если знаете, не пишите просто код, говорите куда его вставлять.
    И вообще печально это, все что за два дня успел, это 2 стола, 2 двери, поправить освещение, дорисовать лифт. обидно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 14:02
    Самые простые реализации:

    Лифт.
    В событие столкновения с лифтом:
    if keyboard_check(ord('E')) room_goto(room1)
    Где Е - нужная клавиша, а room1 - название комнаты. И да, если нужна не буквенная клавиша пиши без кавычек и ord(), сразу в скобках. keyboard_check(vk_enter), например.

    Двери.
    В событие столкновения с дверью1.
    if keyboard_check_released(ord('E')) {x=door2.x ; y=door2.y}
    Со второй дверью:
    if keyboard_check_released(ord('E')) {x=door1.x ; y=door1.y}
    door1 и door2 - названия объектов дверей.
    Я заменил check на check_released, тут будет срабатывать когда кнопка отпущена, что бы бесконечно не телепортироваться между дверями.

    Терминал.
    В событие создания перса:
    key=0
    В столкновение с трупом:
    if (keyboard_check_released(ord('E')) && key=0) {key=1}
    Здесь мы проверили, нет ли у нас ключа, и если нет - дали его.
    И в столкновении с терминалом:
    if (keyboard_check_released(ord('E')) && key=1) {/*Дверь открылась*/}
    Как сделана дверь - не знаю, поэтому уже сам. Скорее всего нужно будет просто удалить объект, или изменить его спрайт.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 15:10
    Самые простые реализации:

    Лифт.
    В событие столкновения с лифтом:
    if keyboard_check(ord('E')) room_goto(room1)
    Где Е - нужная клавиша, а room1 - название комнаты. И да, если нужна не буквенная клавиша пиши без кавычек и ord(), сразу в скобках. keyboard_check(vk_enter), например.

    Двери.
    В событие столкновения с дверью1.
    if keyboard_check_released(ord('E')) {x=door2.x ; y=door2.y}
    Со второй дверью:
    if keyboard_check_released(ord('E')) {x=door1.x ; y=door1.y}
    door1 и door2 - названия объектов дверей.
    Я заменил check на check_released, тут будет срабатывать когда кнопка отпущена, что бы бесконечно не телепортироваться между дверями.

    Терминал.
    В событие создания перса:
    key=0
    В столкновение с трупом:
    if (keyboard_check_released(ord('E')) && key=0) {key=1}
    Здесь мы проверили, нет ли у нас ключа, и если нет - дали его.
    И в столкновении с терминалом:
    if (keyboard_check_released(ord('E')) && key=1) {/*Дверь открылась*/}
    Как сделана дверь - не знаю, поэтому уже сам. Скорее всего нужно будет просто удалить объект, или изменить его спрайт.
    Спасибо большое, я только сейчас заметил что еще не нарисовал стен >_<.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 07 Июня 2011 в 15:26
    Труп находится в другой комнате, так что придется использовать глобальную переменную.
    Как вариант, такие небольшие комнаты можно размещать в скрытых областях карты. Тогда не придется сохранять текущее состояние комнаты при переходе в другую. Понимаешь, да?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 15:31
    Труп находится в другой комнате, так что придется использовать глобальную переменную.
    Как вариант, такие небольшие комнаты можно размещать в скрытых областях карты. Тогда не придется сохранять текущее состояние комнаты при переходе в другую. Понимаешь, да?

    Тогда и с дверью проблемнее. Но я думал, что это этажи, в одной комнате, разве нет?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 15:32
    Труп находится в другой комнате, так что придется использовать глобальную переменную.
    Как вариант, такие небольшие комнаты можно размещать в скрытых областях карты. Тогда не придется сохранять текущее состояние комнаты при переходе в другую. Понимаешь, да?
    Неа. :3
    Я и подумал уже делать в другой части карты, но как скрыть её?
    ___
    У меня в комнате стали появляться непонятные объекты, то 2 черные полоски в воздухе, то серая полоса на полу.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 07 Июня 2011 в 15:42
    В комнате находятся всякие монстры. Когда ты из одной комнаты переходишь в другую, а потом обратно, комната возвращается в свой первоначальный вид: ГГ на стартовой позиции, монстры снова живы, etc. Для того, чтобы этого избежать, приходится сохранять нужные переменные во внешний файл. Еще можно просто использовать persistent, но это может приводить ко всяким последствиям.
    Скрытые области делаются элементарно. Допустим, высота коридоров - 480px, тогда мы делаем комнату высотой 480px*2=960px. Получается, что верхняя часть комнаты - для основного помещения, нижняя - для дополнительных. Делаешь вид с высотой 480px, если ГГ в верхней части, держишь его сверху, если он в нижней - снизу. Все просто.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 15:45
    ...но это может приводить ко всяким последствиям.
    Например?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 07 Июня 2011 в 16:00
    В основном они связаны с перезапуском комнаты. Чтобы нормально перезапустить постоянную комнату, приходится снимать "persistent", перезапускать и снова выставлять. А если ты прошел несколько уровней и решил начать игру сначала,  приходится перезапускать все комнаты, причем так, чтобы это не было заметно для пользователя. Новичок с этим не справится.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 16:01
    Я что то опять делаю не так, да?
    ___________________________________________
    ERROR in
    action number 1
    of Collision Event with object door2
    for object droid:

    Error in code at line 1:
       if keyboard_check_released(ord('E')) {x=door1.x ; y=door1.y}
                                                    ^
    at position 47: Unknown variable x


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 16:10
    У тебя нету объекта door1. Или есть спрайт с таким же именем.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 16:22
    О-о-о, точно, теперь нет ошибки, но 2 дверь работает к 1ой правильно, а 1ая дверь телепротирует сама к себе.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 16:24
    Ну так цифры у дверей правильно поставь. У тебя в столкновении с первой должна быть телепортация ко второй, а не первой  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 16:29
    Ну так цифры у дверей правильно поставь. У тебя в столкновении с первой должна быть телепортация ко второй, а не первой  :)
    Дак все правильно, код столкновения 1 двери
    if keyboard_check_released(ord('E')) {x=o_door2.x ; y=o_door2.y}
    Код столкновения 2 двери
    if keyboard_check_released(ord('E')) {x=o_door1.x ; y=o_door1.y}
    Как ты и писал.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 07 Июня 2011 в 16:45
    Может ты 2 двери случайно поставил?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 16:55
    Может ты 2 двери случайно поставил?
    Ну да, две, первую и вторую. Не мог же я 2 первых или 2 вторых поставить.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 17:20
    Давай исходник - исправим  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 17:32
    Давай исходник - исправим  :)
    Извеняюсь за мешанину в спрайтах и тд, лень названия сменить. :3


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 17:57
    В чем ошибка так и не понял, сам удивился, и сделал другим способом. Вернее все так же, но проверяет нажатие клавиши, а не отпускание. А что бы не кидало - небольшая задержка.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 18:10
    В чем ошибка так и не понял, сам удивился, и сделал другим способом. Вернее все так же, но проверяет нажатие клавиши, а не отпускание. А что бы не кидало - небольшая задержка.
    Спасибо, вот еще вопрос, как сделать фонарик, лампу, и как управлять светом в комнате, без прозрачных фонов.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 18:29
    Поищи в интернете CBNA SmartLight, это хороший световой движок.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 18:58
    Поищи в интернете CBNA SmartLight, это хороший световой движок.
    Нашел, посмотрел, а ты умеешь шутить, я дверь не могу сделать, а ты мне движок с морем скриптов. :3


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 07 Июня 2011 в 19:03
    http://gmakers.ru/index.php?topic=2702.0
    Среди прочего там есть пример простейшего фонарика.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 19:06
    Ну это на будущее  ;D
    А чего бы не сделать так, как ты лампочки сделал? А, свет же сливаться будет, да.
    Честно, даже не знаю, как это сделать без фонов, без сурфов и тд.
    А чем плохо сделать с прозрачным фоном?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 07 Июня 2011 в 19:12
    [gml=Нажатие кнопки A]if (!keyboard_check(vk_right))// дальше неинтересно[/gml]Лучше так:[gml=Нажатие A]if (!keyboard_check(ord('D')))[/gml]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 19:17
    Ну это на будущее  ;D
    А чего бы не сделать так, как ты лампочки сделал? А, свет же сливаться будет, да.
    Честно, даже не знаю, как это сделать без фонов, без сурфов и тд.
    А чем плохо сделать с прозрачным фоном?
    Дроид в прыжке включает движки, а они от фона тоже затемняются, или например выключатель в темной комнате мигает, его же тоже фон затемнит, и что такое сурфы?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 19:25
    http://gmakers.ru/index.php?topic=2702.0
    Среди прочего там есть пример простейшего фонарика.
    Пичаль, "файл удален"


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 07 Июня 2011 в 19:29
    что такое сурфы?
    Surface


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 07 Июня 2011 в 19:30
    К счастью, у меня все ходы записаны.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 07 Июня 2011 в 19:36
    что такое сурфы?
    Surface
    Ок, что такое surface.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июня 2011 в 19:38
    К счастью, у меня все ходы записаны.

    А там квадраты и тени просто черные и непрозрачные или у меня опять сурфы глючат?©


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 07 Июня 2011 в 19:42
    что такое сурфы?
    Surface
    Ок, что такое surface.
    Вот (http://gmakers.ru/index.php?topic=5329.msg57169#msg57169).
    Дал бы цитату, но цитировать в закрытую тему нельзя.
    [ogion]Справка/GameMaker Language/Game Graphics/Drawing Surfaces[/ogion]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 00:35
    Есть такая функция, при которой весь экран очищается от объектов, кроме одного?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 08 Июня 2011 в 00:37
    Есть такая функция, при которой весь экран очищается от объектов, кроме одного?
    draw_clear(c_gray);
    with (объект) draw_self();


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 00:41
    draw_clear(c_gray);
    with (объект) draw_self();
    Я имел ввиду, что не изображения объектов убираются, а сами объекты удаляются, кроме одного. И ещё одно: только для восьмой.ноль версии Game Maker'a.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 08 Июня 2011 в 00:44
    Можно выключать объекты, можно менять им альфу (только не говори 'для GM8.0 lite'), можно рисовать если локальная/глобальная переменная равна единице и так далее.

    Если выключать объекты, они ничего не будут делать (кэп). Альфа может использоваться для ещё чего-то. Остаётся рисование при условии.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 01:08
    Можно выключать объекты, можно менять им альфу (только не говори 'для GM8.0 lite'), можно рисовать если локальная/глобальная переменная равна единице и так далее.

    Если выключать объекты, они ничего не будут делать (кэп). Альфа может использоваться для ещё чего-то. Остаётся рисование при условии.
    Нет, мне их надо просто убрать с экрана, чтоб другую картинку в той же комнате показать, и заодно производительность улучшить (три звука и весят 38 МБ!!!). Выключение, конечно же, объекты не удалит.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 08 Июня 2011 в 01:17
    (три звука и весят 38 МБ!!!)
    Stereo 88200khz wav без сжатия? :o


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 01:48
    (три звука и весят 38 МБ!!!)
    Stereo 88200khz wav без сжатия? :o
    Не знаю, скачал звуки в Интернете, ещё не вникал.
    Кстати, с проблемой я разобрался, помогать не надо.
    Ух, скоро мой "Миллионер" будет готов!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 08 Июня 2011 в 02:22
    Срочно делай что-то со звуками. Сжимай @ выкидывай. 40 мегабайт - допустимый вес лишь для игр уровня Frozzd.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Aver от 08 Июня 2011 в 12:49
    Как давно я уже не работал в GM. Вот есть небольшой вопрос.
    Есть ли какой-нибудь способ открыть ссылку в браузере. Желательно в основном. Например: нажал на кнопочку - открылась ссылка.
    //не пинать. Я всё забыл.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 13:24
    execute_shell (http://gmakers.ru/gamemaker_help/source/files/410_04_programs.php)([url: string], "");


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 13:33
    Срочно делай что-то со звуками. Сжимай @ выкидывай. 40 мегабайт - допустимый вес лишь для игр уровня Frozzd.
    Не волнуйся, звуки уже умеют загружаться, и вес игры стал, как и прежде, всего-то 133 Кб.
    Возникло два вопроса.
    1) Как из четырёх объектов удалить два случайным образом, но всегда кроме одного выбранного?
    2) Как сгенерировать четыре натуральных числа, чтобы они в сукмме давали 100, и чтоб одно из этих чисел всегда было больше остальных?
    Как вы догадались, это всё надо для подсказок.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 13:45
    1) Как из четырёх объектов удалить два случайным образом, но всегда кроме одного выбранного?
    var obj, choosenone; choosenone = object0;
    repeat(2) {
     do {obj = choose(object0, object1, object2, object3);}
     until(obj<>choosenone && instance_exists(obj))
     with(obj) {instance_destroy();}
    }

    2) Как сгенерировать четыре натуральных числа, чтобы они в сукмме давали 100, и чтоб одно из этих чисел всегда было больше остальных?
    var m; m = 100;
    var a;
    a[0] = 0;
    a[1] = 0;
    a[2] = 0;
    a[3] = 0;
    for(i=0;i<3;i+=1) {
     while(a[ i ]==0) {
      a[ i ] = round(random(m-2+i));
     }
     m -= a[ i ];
    }
    a[3] = m;
    //не гарантирует, что одно число будет больше всех, но у меня не получалось, чтобы был спорный результат  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 14:02
    var obj, choosenone; choosenone = object0;
    repeat(2) {
     do {obj = choose(object0, object1, object2, object3);}
     until(obj<>choosenone && instance_exists(obj))
     with(obj) {instance_destroy();}
    }
    Программа, честно говоря, зависает без причин, хотя убирает то, что не надо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 14:04
    Ошибку ищи  ;D Я проверял, оно работает, и никогда не убивает choosenone.
    Я просто сделал 4 объекта object1-object4 со спрайтами разных цветов, и поставил choosenone = object1. Красный (object1) никогда не исчезал. Два других случайным образом исчезали.

    Сделал пример. В комнате четыре разноцветных объекта и контроллер. Контроллер удаляет два из них случайным образом, не удаляя выбранный (choosenone). Отображает количество существующих разноцветных объектов (которое, как и требовалось, равно всегда 2) и то, что существует выбранный объект.

    //Кстати, лол, 500.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 14:12
    Я вот переработал код чтобы у меня не уничтожались объекты, а просто изменялась их переменная:
    var obj;
    repeat(2) {
     do {obj=choose(obj_answer1, obj_answer2, obj_answer3, obj_answer4);}
     until (obj<>choosenone && obj.draw=1)
     with (obj) {draw=0;}
    }
    choosenone я в Create подсказки запихнул.
    Всё работает, но только виснет.
    ЗЫ
    Это только у меня, когда я нажимаю кнопку "Цитата", сообщение исчезает?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 14:16
    Вместо draw, наверное, лучше использовать visible. Я заменил в примере те строки так, чтобы получился твой код, но с использованием visible.
    Всё работает. Ничего не виснет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 14:34
    var m; m = 100;
    var a;
    a[0] = 0;
    a[1] = 0;
    a[2] = 0;
    a[3] = 0;
    for(i=0;i<3;i+=1) {
     while(a[ i ]==0) {
      a[ i ] = round(random(m-2+i));
     }
     m -= a[ i ];
    }
    a[3] = m;
    Как бы так пристроить, чтобы больше было в сторону какого-то определённого і?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 14:41
    Немного странных идей:
    var mx; mx = max(a[0], a[1], a[2], a[3]);
    var maximuminteger; maximuminteger = 0;
    for(i=0; i<3; i+=1) {if(mx == a[ i ]) {maximuminteger = i;}}


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 14:42
    А дальше?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 14:59
    В maximuminteger теперь хранится значение самого большого из тех сгенерированных чисел. Берёшь a[maximuminteger] и получаешь максимальное сгенерированное число.  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 15:05
    А если я хочу, чтобы максимальное я задавал не после генерации, а ещё в начале? Тогда твой способ не подходит.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 15:36
    Как насчёт использовать этот способ, указав m = (100-[твоё число]) для трёх (1-3), а не четырёх (0-3) чисел?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 08 Июня 2011 в 15:38
    У меня опять ошибка, если есть желание, найдите в чем проблема.
    ___________________________________________
    ERROR in
    action number 1
    of  Step Event
    for object droid:

    Error in code at line 53:
             if control.nailgun = true
                        ^
    at position 19: Unknown variable nailgun
    Весь код облазил, а причины не нашел.
    Код оружия этот взял с движка PlatformShooterbyJetBalance.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Aver от 08 Июня 2011 в 15:39
    execute_shell (http://gmakers.ru/gamemaker_help/source/files/410_04_programs.php)([url: string], "");
    Спасибо, большое!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Linxus от 08 Июня 2011 в 15:44
    У меня опять ошибка, если есть желание, найдите в чем проблема.
    ___________________________________________
    ERROR in
    action number 1
    of  Step Event
    for object droid:

    Error in code at line 53:
             if control.nailgun = true
                        ^
    at position 19: Unknown variable nailgun
    Весь код облазил, а причины не нашел.
    Код оружия этот взял с движка PlatformShooterbyJetBalance.
    Есть ли переменная nailgun?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 15:46
    Почему-то мне кажется, что переменная-то в объекте есть, но нет объекта (в смысле экземпляров в комнате).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 08 Июня 2011 в 15:47
    Объект control в комнату добавь.
    Не успел.

    Но будут еще ошибки, уже с другими объектами.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 08 Июня 2011 в 15:49
    Почему-то мне кажется, что переменная-то в объекте есть, но нет объекта (в смысле экземпляров в комнате).
    Ой, поставил экземпляр и контрол, запустил, открылся какой то желтый блокнотик, нажал esc, и ошибка

    ___________________________________________
    ERROR in
    action number 1
    of Draw Event
    for object control:

    Error in code at line 3:
       if o_nailgun.visible = true
                    ^
    at position 15: Unknown variable visible



    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 15:51
    Угадай, какого объекта в комнате нет теперь  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 08 Июня 2011 в 15:57
    Угадай, какого объекта в комнате нет теперь  ;D
    Точно, спасибо, но теперь как убрать те два желтых экрана в начале, и "стреляет" странно, и не поворачивается за дроидом, код не мой, и я уже начинаю ненавидеть game maker. >_<


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 15:57
    Как насчёт использовать этот способ, указав m = (100-[твоё число]) для трёх (1-3), а не четырёх (0-3) чисел?
    А моё число тогда всегда будет одинаковым, и получится не то.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Aver от 08 Июня 2011 в 16:22
    И ещё. Как создать переменную, которая будет равна ссылке?
    load=www.gmakers.ru не подходят. Просто создавать для каждой ссылки кнопку не есть хорошо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 16:24
    А ты не пробовал брать название ссылки в кавычки: "" или ''.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 08 Июня 2011 в 16:34
    И ещё. Как создать переменную, которая будет равна ссылке?
    load=www.gmakers.ru не подходят. Просто создавать для каждой ссылки кнопку не есть хорошо.
    load='gmakers.ru';
    execute_string('execute_shell([url: '+load+'], "");');


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 16:44
    А моё число тогда всегда будет одинаковым, и получится не то.
    Твоё число будет переменной, поэтому оно будет разным. Это ли не очевидно?  :crazy:

    load='gmakers.ru';
    execute_string('execute_shell([url: '+load+'], "");');
    Ололо   :D Не надо никаких квадратных скобок!
    execute_shell("http://tlab.oxnull.net/new/", "");
    //откроет http://tlab.oxnull.net/new/
    var url; url = "http://tegcomp.narod.ru/";
    execute_shell(url, "");
    //откроет http://tegcomp.narod.ru/


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Aver от 08 Июня 2011 в 17:25
    Не работает. Ругается на : и на /. Делал всё по методу Tkachov.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 08 Июня 2011 в 17:28
    А если убрать "http://"?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 17:30
    Перефразирую задачу: мне надо сгенерировать в массиве a, состоящем из четырёх элементов, для каждого элемента число так, чтобы сумма элементов массива равнялась 100, и чтобы самое большое число лежало в 1-ом элементе а[0].


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 08 Июня 2011 в 17:33
    Как сделать сумму =100 ты уже знаешь, так?
    И делай это много раз, пока не будет выполнятся условие a0>a1 && a0>a2 && a0>a3. Индусский код  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Aver от 08 Июня 2011 в 17:33
    Всё равно.
    ___________________________________________
    COMPILATION ERROR in string to be executed
    Error in code at line 1:
       tlab.oxnull.net/new/
                     ^
    at position 16: Assignment operator expected.
    На все . и : и /


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 08 Июня 2011 в 17:37
    Ты с кавычками писал или без?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 08 Июня 2011 в 17:37
    Дрюня, я опечатался в последнем сообщении и вместо execute_shell, о котором я писал, написал execute_string.
    Первая выполняет какую-либо программу с аргументами либо открывает файл/протокол с помощью ассоциированной программы (собственно поэтому протокол http откроется браузером по умолчанию).
    Вторая выполняет какую-либо строку как GML-код.



    G_CCompany,
    как поменять два элемента массива знает даже первоклассник. Надо завести новую временную переменную, скинуть туда значение одного элемента, потом этому элементу присвоить значение второго и во второй занести запомненное значение первого.
    //Меняем два элемента массива местами. Вместо [1] используем [maximuminteger], чтобы поставить максимальное число в ячейку [0].
    a[0]=10;
    a[1]=20;
    var z;
    z=a[0];//z = 10
    a[0]=a[1];//a[0] = 20
    a[1]=z;//a[1] = z = 10


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Combo от 08 Июня 2011 в 17:47
    Здрасти всем кого не видел 8)

    Излагаю суть проблемы:
    Когда отрисовываю на сурфейсе заполненном белым другие сурфейсы меньшего размера с произвольной альфой - гамак вместо того чтобы рисовать под прозрачными пикселями белые - заменяет белые на полупрозрачные, в результате при сохранении сурфейса командой surface_save на выходе получаю искромсаный полупрозрачными прямоугольниками ПНГшник.

    Вопрос - как НОРМАЛЬНО отрисовать на сурфейсе другой полупрозрачный сурфейс?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Aver от 08 Июня 2011 в 17:54
    Да, всё, спасибо. Я всё время писал string =)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Combo от 08 Июня 2011 в 17:54
    G_CCompany,
    как поменять два элемента массива знает даже первоклассник. Надо завести новую временную переменную, скинуть туда значение одного элемента, потом этому элементу присвоить значение второго и во второй занести запомненное значение первого.
    //Меняем два элемента массива местами. Вместо [1] используем [maximuminteger], чтобы поставить максимальное число в ячейку [0].
    a[0]=10;
    a[1]=20;
    var z;
    z=a[0];//z = 10
    a[0]=a[1];//a[0] = 20
    a[1]=z;//a[1] = z = 10

    а еще есть ксор свап(:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 18:20
    Нашёл такой способ: проверяю, какой элемент массива больше всех. Если 0, то ничего не делаю, если 1, 2, 3 - меняю с 0. А нарисовать показания совсем легко.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 08 Июня 2011 в 19:22
    а еще есть ксор свап(:
    ксор свап округляет дроби, а на строка вообще сваливается


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 08 Июня 2011 в 21:52
    Та-да! Вся музыка готова, все подсказки работают, в общем, всё классно!
    Спасибо всем за помощь!
    Да, если никого не затруднит, денежное дерево "Миллионера" надо найти. Именно анимированное, во всех 15 состояниях.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 09 Июня 2011 в 00:24
    Когда отрисовываю на сурфейсе заполненном белым другие сурфейсы меньшего размера с произвольной альфой - гамак вместо того чтобы рисовать под прозрачными пикселями белые - заменяет белые на полупрозрачные, в результате при сохранении сурфейса командой surface_save на выходе получаю искромсаный полупрозрачными прямоугольниками ПНГшник.

    Вопрос - как НОРМАЛЬНО отрисовать на сурфейсе другой полупрозрачный сурфейс?
    Это проблема сурфейсов в ГМ. На одних видеокартах все ОК, на других же проблемы. Есть личность, которая смогла решить эту проблему, но пока все тихо (или я че нить пропустил). Сам от этого имею кучу проблем...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 09 Июня 2011 в 01:38
    Люди, наверно мой вопрос будет идиотским, но как сделать очки, жизни и хп в игре?
    Событие: Начинаеться игра
    Действия Устрановить скоре 0, установить жизни 3, установить хп 100 и set the score caption info
    Нипалутяется(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Combo от 09 Июня 2011 в 09:50
    Когда отрисовываю на сурфейсе заполненном белым другие сурфейсы меньшего размера с произвольной альфой - гамак вместо того чтобы рисовать под прозрачными пикселями белые - заменяет белые на полупрозрачные, в результате при сохранении сурфейса командой surface_save на выходе получаю искромсаный полупрозрачными прямоугольниками ПНГшник.

    Вопрос - как НОРМАЛЬНО отрисовать на сурфейсе другой полупрозрачный сурфейс?
    Это проблема сурфейсов в ГМ. На одних видеокартах все ОК, на других же проблемы. Есть личность, которая смогла решить эту проблему, но пока все тихо (или я че нить пропустил). Сам от этого имею кучу проблем...

    ясно, буду пробовать рисовать в руме и вырезать куски оттуда..


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Combo от 09 Июня 2011 в 10:12
    Люди, наверно мой вопрос будет идиотским, но как сделать очки, жизни и хп в игре?
    Событие: Начинаеться игра
    Действия Устрановить скоре 0, установить жизни 3, установить хп 100 и set the score caption info
    Нипалутяется(

    лучше всего задай переменные. В событии создания игрока, допустим его зовут o_player, напиши:
    myhp=100
    mylife=3
    myspeed=0

    Если ты хочешь использовать встроенные механизмы ХП и жизней то пиши в том же событии создания (Create event):
    health=100
    lives=3
    speed=0

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


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Combo от 09 Июня 2011 в 10:24
    а еще есть ксор свап(:
    ксор свап округляет дроби, а на строка вообще сваливается

    спасибо, не знал.. Планировал заморочиться с ним и начать использовать но теперь вижу что не стоит.
    А такая беда только в гамаке или в любом языке? И не сильно быстрее ли он действует, чем использование сторонней переменной?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 09 Июня 2011 в 10:51
    Похоже я вообще неправильно там сделал)
    Можно объяснить подробно как сделать жизни,очки хп... :)

    Я просто даже не знаю с чего начать, взял эти действия с примера, в примере все норм а у мну неть(
    (Пример на машине ездишь, газ собираешь и от машин уворачиваешся)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 09 Июня 2011 в 12:03
    А такая беда только в гамаке или в любом языке?
    В других языках есть целые переменные. А насчет быстродействия, скажем, для Си:
    int t=x; x=y; y=t;
    скорее всего, превратится в
    mov EAX,x // а x,y и t что-то навроде [EBP+число]
    mov t,EAX
    mov EAX,y
    mov x,EAX
    mov EAX,t
    mov y,EAX
    А
    x^=y; y^=x; x^=y;
    в
    mov EAX,x
    xor y,EAX
    mov EAX,y
    xor x,EAX
    mov EAX,x
    xor y,EAX
    Учитывая, что на современных процессорах и mov, и xor выполняются за 1 такт, разницы никакой, только аж 4 байта памяти экономится.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 09 Июня 2011 в 18:05
    А у меня все норм) Жизни очки и т.п. есть, но они не там где мне надо(Вверху, там где закрыть свернуть и на полный экран), как сделать что бы они были внизу(В области которая мне нужна)? и как сделать полоску жизней? скажите плз

    А еще когда метеорит сталкиваеться с землей то идут ужасные лаги, как исправить?(Отбой, с лагами исправил, надо было всеголиж sleep 1000 убрать:))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 09 Июня 2011 в 18:07
    А еще когда метеорит сталкиваеться с землей то идут ужасные лаги, как исправить?
    Мы не знаем, что ты там сделал. Какой код, в каких событиях?

    А у меня все норм) Жизни очки и т.п. есть, но они не там где мне надо(Вверху, там где закрыть свернуть и на полный экран), как сделать что бы они были внизу(В области которая мне нужна)? и как сделать полоску жизней? скажите плз
    http://gmakers.ru/index.php?topic=4312.0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 09 Июня 2011 в 18:24
    в факе такого нету, я там все перечитал, там есть только как сделать нестандартную ману...
    а если есть то ткните носом)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 09 Июня 2011 в 18:31
    II.1.2. Мне нужно написать текст с указанием значения переменной, как?

    II.3.2. Я отрисовываю на экране, к примеру, текст, но когда я двигаюсь - он улетает за границы экрана. Как сделать так, чтобы текст оставался в исходной позиции?

    II.3.3. Я пишу в событие draw event в объекте игрока отображение жизней (например). Но в игре спрайт игрока не отображается. В чём причина?

    II.3.7. Можно ли для хелсбара использовать спрайт, а не цвет?

    II.4.1. Как добавить в игру ману? Как отрисовать кол-во маны на экране?

    II.4.3. Хелсбар не показывает больше 100 жизней, хотя health у меня равно 200! Как мне установить максимальное значение health?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Combo от 09 Июня 2011 в 18:32
    в факе такого нету, я там все перечитал, там есть только как сделать нестандартную ману...
    а если есть то ткните носом)

    щас сам глянул, конкретно отрисовки хэлсбара не нашел. Вот тебе строчка:
    draw_healthbar(x1,y1,x2,y2,health,c_black,c_red,c_green,0,1,1)
    в координатах пишешь координаты левого верхнего и правого нижнего углов полоски отображения здоровья. Высчитывать их придется самому, если они статичны, а если привязаны к объекту - используй относительные координаты, если не знаешь как - поведаю, но ты должен быть уверен что тебе именно это нужно чтобы не тратить свое и мое время попусту.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 09 Июня 2011 в 18:46
    Это в скрипте писать или где?

    а то я вообще нуп в ГМ:( Только вчера за него сел)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 09 Июня 2011 в 18:52
    Кирасим, а прочитай уроки - http://gmakers.ru/index.php?board=4.0  ;)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Toxa) от 09 Июня 2011 в 19:17
    Люди, у меня 2 простеньких вопросика. 1. Как очки на экран вывести? 2. Гравитация задаётся так: graviti=250?


    Чот я не понял на счёт очков, я пишу код в Draw, x и y, и нехрена)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 09 Июня 2011 в 19:24
    1. В событии draw пишем что-нибудь вроде draw_text(x,y,string(score));
    (x,y) - позиция, в которой будет нарисован текст.
    string(score) - функция, которая переведёт переменную score из числового в строковой (буквенный) формат.

    Если использовать этот код в Draw объекта со спрайтом, то спрайт рисоваться не будет.

    2. gravity = 0.8; //задаём гравитацию на 0.8 пикселей за шаг
    gravity_direction = 270; //указываем, что гравитация должна тянуть объект вниз (т.е. под углом 270 градусов).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Toxa) от 09 Июня 2011 в 19:45
    Чот я не понял на счёт очков, я пишу код в Draw, x и y, и нехрена)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 09 Июня 2011 в 19:53
    А объект в комнате есть?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 09 Июня 2011 в 20:13
    Это опять я, и у меня опять проблемы  ;D
    Стал делать на готовом движке, добавил свое оружие, но при смене оружия мое остается + следующее оружие появляется, и где менять автоматическое или полуавтомат оружие?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 21:08
    Может, я не по теме, но мне желательно до завтрашнего дня необходимо.
    Помните, я делал "Миллионера"? Тут недалеко, 2-3 страницы назад.
    Так вот, у меня две такие проблемы:
    1) Зал махлюет - иногда попадаются два одинаковых больших результата (пример: 12 4 80 80). Вроде менять элементы массива не разучился, а такое бывает. Что делать?
    2) Нужна хорошая графика из телеигры (вроде нашёл нормальную, но там такие жууууткие полосы попались - в фулскрине играть просто отвратительно).
    Если конкретно, то:
     - форма вопроса 800х80 (светлая и тёмная расцветки);
     - форма ответов 400х45 (тоже светлая и тёмная расцветки).
    Больше ничего не надо, для любительской игры смотрится вполне приемлемо.
    Если кто-то поможет мне, я буду благодарен.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Июня 2011 в 21:21
    Стал делать на готовом движке, добавил свое оружие, но при смене оружия мое остается + следующее оружие появляется, и где менять автоматическое или полуавтомат оружие?
    Ты точно то кинул?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 09 Июня 2011 в 21:28
    Нет...  :D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 21:42
    Нет...  :D
    У тебя хорошее чувство юмора (заметно по вложению). Прикрепить к дроиду такую лапацону - это жесть.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 09 Июня 2011 в 21:49
    Нет...  :D
    У тебя хорошее чувство юмора (заметно по вложению). Прикрепить к дроиду такую лапацону - это жесть.
    Старое оружие я не убирал, а мое, это мелкая оранжевая хрень.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Июня 2011 в 21:56
    if weapon = 0
       {
          if control.usp = true
             {
                o_usp.visible = true
                o_uzi.visible = false
                o_ak47.visible = false
             }
          if control.usp = false
             {
                weapon = wea
             }
       }
    if weapon = 1
       {
          if control.uzi = true
             {
                o_usp.visible = false
                o_uzi.visible = true
                o_ak47.visible = false
             }
          if control.uzi = false
             {
                weapon = wea
             }
       }
    if weapon = 2
       {
          if control.ak47 = true
             {
                o_usp.visible = false
                o_uzi.visible = false
                o_ak47.visible = true
             }
          if control.ak47 = false
             {
                weapon = wea
             }
       }
    Добавь везде o_nailgun.visible = false.
    где менять автоматическое или полуавтомат оружие?
    Во-первых, прочитай в справке о различиях между событиями мыши.
    [attachment=1]
    Во-вторых, вот это:
    [attachment=2]
    Это нужно для того, чтобы ограничить темп стрельбы, чтобы он не выстреливал каждый шаг по патрону.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Июня 2011 в 22:00
    Отстань от человека. Графика - последнее дело. Пока что Rowk'у нужно просто разобраться в примере.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 22:04
    Отстань от человека. Графика - последнее дело. Пока что Rowk'у нужно просто разобраться в примере.
    Я не хотел никого обижать, просто с рукой он выглядел нелепо, я вот и подметил.
    Эмм... не могу я тебя попросить об одном графическом одолжении?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 09 Июня 2011 в 22:08
    Отстань от человека. Графика - последнее дело. Пока что Rowk'у нужно просто разобраться в примере.
    Я не хотел никого обижать, просто с рукой он выглядел нелепо, я вот и подметил.
    Эмм... не могу я тебя попросить об одном графическом одолжении?
    Одолжение?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 22:12
    Отстань от человека. Графика - последнее дело. Пока что Rowk'у нужно просто разобраться в примере.
    Я не хотел никого обижать, просто с рукой он выглядел нелепо, я вот и подметил.
    Эмм... не могу я тебя попросить об одном графическом одолжении?
    Одолжение?
    Эмм... я вообще-то Ogiona просил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Июня 2011 в 22:13
    Боюсь, у меня нет ни времени, ни особого желания помогать тебе с графикой. Давай как-нибудь сам.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 22:19
    Боюсь, у меня нет ни времени, ни особого желания помогать тебе с графикой. Давай как-нибудь сам.
    Уже пробовал. Ладно, что-нибудь придумаю.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 09 Июня 2011 в 22:30
    Спасибо. А как еще вылет пули подкорректировать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Июня 2011 в 22:36
    http://gmakers.ru/index.php?topic=2086.msg47286#msg47286


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 22:41
    Извиняюсь, что всех своей болтовнёй уже достаю.
    Можешь хотя бы тогда перекрасить вот эту картинку:
    [attachment=1]
    в примерно такую гамму:
    [attachment=2]
    или сказать, как это делается.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 09 Июня 2011 в 22:45
    Контрол+г в фотошопе.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 09 Июня 2011 в 22:45
    http://gmakers.ru/index.php?topic=2086.msg47286#msg47286
    Менял как там написано, но ноль реакции. Тут менял на разные цифры, а изменений нет.
             {
                b = instance_create(x + lengthdir_x(-8,direction-8),y + lengthdir_y(-8,direction-8),o_gvozd)       //Ñîçäàòü ïóëþ ñ èíäåêñîì b
             }
          if image_yscale = -1
             {
                b = instance_create(x + lengthdir_x(-8,direction-8),y + lengthdir_y(-8,direction-8),o_gvozd)       //Ñîçäàòü ïóëþ ñ èíäåêñîì b
             }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 22:50
    Контрол+г в фотошопе.
    А если Фотошопа нет?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 09 Июня 2011 в 22:54
    Редактор изображений в GameMaker — раствор Photoshop в Paint.
    (Его возможностей хватит, чтобы изменить один цвет на другой.)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 22:59
    Редактор изображений в GameMaker — раствор Photoshop в Paint.
    Его возможностей хватит, чтобы изменить один цвет на другой.
    Если бы. А так он никак не хочет менять чёрный цвет на другой. Ахроматика называется!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Июня 2011 в 23:02
    Rowk, почему длина вектора отрицательная? Попробуй поставить положительную и поиграться с циферками как следует.
    G_CCompany, поставь фотошоп или другой серьезный графический редактор и не мучайся.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 09 Июня 2011 в 23:21
    Rowk, почему длина вектора отрицательная? Попробуй поставить положительную и поиграться с циферками как следует.
    G_CCompany, поставь фотошоп или другой серьезный графический редактор и не мучайся.
    Есть у меня Corel Draw. И я ничего не могу понять, даже не могу найти кнопки типа "Кисточка".
    Ну неужели это так сложно?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 09 Июня 2011 в 23:23
    Если бы. А так он никак не хочет менять чёрный цвет на другой. Ахроматика называется!
    Осветли до серого и перекрашивай с тонированием.
    Корел - для вектора.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 00:03
    Rowk, почему длина вектора отрицательная? Попробуй поставить положительную и поиграться с циферками как следует.
    G_CCompany, поставь фотошоп или другой серьезный графический редактор и не мучайся.
    Отрицательные, потому что с положительными уже пробовал.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 00:09
    Посмотрел еще раз твой исходник - вроде гвозди правильно вылетают. Спрячь строчку "move_towards_point(mouse_x,mouse_y,30)" в комментарий, чтобы она не выполнялась, и посмотри.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 00:21
    Посмотрел еще раз твой исходник - вроде гвозди правильно вылетают. Спрячь строчку "move_towards_point(mouse_x,mouse_y,30)" в комментарий, чтобы она не выполнялась, и посмотри.
    Э, не знаю как прокомментировать что получилось, попробуй сам. :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 00:33
    Пули не летят, а остаются на месте. Это должно помочь тебе определить, правильно ли вылетают пули.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 00:41
    Пули не летят, а остаются на месте. Это должно помочь тебе определить, правильно ли вылетают пули.
    Ну не правится точка вылета, не знаю почему, но не изменяется.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 00:56
    Вот точка вылета. А где она, по-твоему, должна быть?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 01:02
    Вот точка вылета. А где она, по-твоему, должна быть?
    Все, разобрался, но визуально при нормальной стрельбе кажется что вылетает не там где надо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 01:05
    Вот именно, что кажется. Потому что сначала пуля пролетает какое-то расстояние, а потом уже рисуется кадр. Этого можно и избежать, начав двигать пулю со следующего шага после ее создания.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 01:07
    Вот именно, что кажется. Потому что сначала пуля пролетает какое-то расстояние, а потом уже рисуется кадр.
    А нельзя чтобы пуля плавно летела от дула до цели, ну как в Cortex Command например, но без гравитации конечно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 01:14
    В GM время не течет непрерывно, а состоит из отрезков - шагов. Это значит, что на самом деле в любой взятый момент времени объект не движется, он просто перемещается из шага в шаг в новую позицию (Зенон одобряет). Количество шагов в секунду, иначе говоря скорость комнаты (room speed), вы определяете сами в свойствах комнаты (вкладка "Options"), или даже кодом непосредственно во время игры (таким образом можно реализовать slo-mo), по умолчанию она равна 30. Причем для каждой комнаты можно выставить разную скорость. Чем выше это значение, тем чаще будет перерисовываться экран, тем более плавным будет движение, и тем больше будет нагрузка на компьютер, потому что обрабатывать данные, скажем, 60 раз в секунду труднее, чем делать то же самое 30 раз в секунду, сами понимаете. А количество шагов, которое компьютер успевает обрабатывать за секунду, называется аббревиатурой FPS (frames per second, переводится как "кадров в секунду"). Если FPS становится меньше скорости комнаты, это значит, что компьютеру не хватает мощности. Кстати, а еще аббревиатура FPS расшифровывается как First-Person Shooter (шутер от первого лица).
    Можно увеличить скорость комнаты (например, до 60) и уменьшить скорость пули, тогда движение будет более плавным. Но тогда придется корректировать все величины, связанные со временем, а еще увеличится нагрузка на железо. Впрочем, игра стоит свеч.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 01:17
    В GM время не течет непрерывно, а состоит из отрезков - шагов. Это значит, что на самом деле в любой взятый момент времени объект не движется, он просто перемещается из шага в шаг в новую позицию (Зенон одобряет). Количество шагов в секунду, иначе говоря скорость комнаты (room speed), вы определяете сами в свойствах комнаты (вкладка "Options"), или даже кодом непосредственно во время игры (таким образом можно реализовать slo-mo), по умолчанию она равна 30. Причем для каждой комнаты можно выставить разную скорость. Чем выше это значение, тем чаще будет перерисовываться экран, тем более плавным будет движение, и тем больше будет нагрузка на компьютер, потому что обрабатывать данные, скажем, 60 раз в секунду труднее, чем делать то же самое 30 раз в секунду, сами понимаете. А количество шагов, которое компьютер успевает обрабатывать за секунду, называется аббревиатурой FPS (frames per second, переводится как "кадров в секунду"). Если FPS становится меньше скорости комнаты, это значит, что компьютеру не хватает мощности. Кстати, а еще аббревиатура FPS расшифровывается как First-Person Shooter (шутер от первого лица).
    Можно увеличить скорость комнаты (например, до 60) и уменьшить скорость пули, тогда движение будет более плавным. Но тогда придется корректировать все величины, связанные со временем, а еще увеличится нагрузка на железо. Впрочем, игра стоит свеч.
    Ну какой верхний предел скорости карты для 2ядерки с 3гигами оперативки и для офисного компа?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 01:17
    Вот именно, что кажется. Потому что сначала пуля пролетает какое-то расстояние, а потом уже рисуется кадр.
    А нельзя чтобы пуля плавно летела от дула до цели, ну как в Cortex Command например, но без гравитации конечно.
    Плавно - это чтобы было небольшое замедление в полёте? Можно использовать трение.
    Ogion: как ни пытался, никакого градиента в Фотошопе не добился. Можешь объяснить, как черный и его оттенки перевести в оранжевый (с сохранением плавности, естественно)?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 01:20
    Ну какой верхний предел скорости карты для 2ядерки с 3гигами оперативки и для офисного компа?
    It's depends. Рисование, сложные вычисления - все это оказывает влияние на производительность. Никакого "стандарта" типа "на компьютере такой-то конфигурации вы можете отображать n объектов с частотой 60 кадров в секунду" нет. Просто постоянно тестируй игру, пробуй прогонять ее на высокой скорости. И сам увидишь, когда игра начнет тормозить.
    Начинаю говорить своими же копипастами.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 01:23
    Ну какой верхний предел скорости карты для 2ядерки с 3гигами оперативки и для офисного компа?
    It's depends. Рисование, сложные вычисления - все это оказывает влияние на производительность. Никакого "стандарта" типа "на компьютере такой-то конфигурации вы можете отображать n объектов с частотой 60 кадров в секунду" нет. Просто постоянно тестируй игру, пробуй прогонять ее на высокой скорости. И сам увидишь, когда игра начнет тормозить.
    Начинаю говорить своими же копипастами.
    Опять таки спасибо, досмотрю доктора, потом азумангу :3, а потом и игру делать можно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 02:17
    А полет пули учитывается по все траектории полета или как видно, так и летит?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Toxa) от 10 Июня 2011 в 11:10
    Люди, помогите с 1-ой вещью. Я сделал героя в платформе, у которого есть такое оружие, как цепь, например он стреляет этой цепью, и она летит до потолка, если она дотрагивается до твёрдой поверхности герой может на ней висеть сколько хочет. Как это организовать??? :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 10 Июня 2011 в 14:11
    1.
    Люди, помогите с одной вещью. Я хочу сделать героя в платформере, у него есть цепь, которой можно зацепиться за твердую поверхность и висеть. Как это реализовать?
    Пиши нормально.
    2. Tsel, тебя все узнали. Только ты называешь платформер платформой.  ;D
    3. Нельзя повторно регистрироваться.
    4. Штука называется "Grappling Hook", пример можно найти в поисковике.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 14:54
    Есть ли возможность проигрывать звук на фоне какой-то мелодии? В обычном случае мелодия просто останавливается и на её смену приходит звук, что слышится не очень.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 15:40
    Как проигрывать звук в определенной части карты, например заходишь в "генераторную" не знаю как по другому называется, и так звук генераторов.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 15:50
    Как проигрывать звук в определенной части карты, например заходишь в "генераторную" не знаю как по другому называется, и так звук генераторов.
    Можно использовать distance_to_object и distance_to_point. Когда герой приближается к "генераторной" на карте на опрежелённое расстояние (оговариваешь в функции), ты выключаешь все звуки (sound_stop_all()) и включаешь звук генераторов.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 16:30
    Как проигрывать звук в определенной части карты, например заходишь в "генераторную" не знаю как по другому называется, и так звук генераторов.
    Можно использовать distance_to_object и distance_to_point. Когда герой приближается к "генераторной" на карте на опрежелённое расстояние (оговариваешь в функции), ты выключаешь все звуки (sound_stop_all()) и включаешь звук генераторов.
    Спасибо, в блокнотик пока сохраню, пока я рисую плазмопушку, есть идеи как стрелять по принципу БФГ, чем дольше держишь, тем мощнее выстрел или просто нужно держать пару секунд для выстрела.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 10 Июня 2011 в 16:59
    Как сделать так, что бы объект случайно создавался за пределами экрана, но только в определенной области, а не по всей комнате.
    Я пробовал сам задавать прыжок с кординатами, но обьекты шли кучками и иногда в 1 обьекте было до 7 одинаковых, а мне так не нужно(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 17:05
    Как сделать так, что бы объект случайно создавался за пределами экрана, но только в определенной области, а не по всей комнате.
    Я пробовал сам задавать прыжок с кординатами, но обьекты шли кучками и иногда в 1 обьекте было до 7 одинаковых, а мне так не нужно(
    Используй алармы или задавай определённые области.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 10 Июня 2011 в 17:11
    while ((x>=0 && x<=640) && (y>=0 && y<=480))
    {
    x=irandom(1240)-300;//ширина 640
    y=irandom(1080)-300;//высота 480
    }

    Что-бы получить профессиональную версию "помощь по коду от Dukat863", нужно доказать что вы хорошо знаете GML. Ограничение Lite версии: генерируется только индусский и быдло коды


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 17:17
    Что-бы получить профессиональную версию "помощь по коду от Dukat863", нужно доказать что вы хорошо знаете GML. Ограничение Lite версии: генерируется только индусский и быдло коды
    Что это за бред? Помоги мне, пожалуйста, ППКОD863! Как мне проигрывать какой-то звук на фоне мелодии - мелодия почему-то останавливается как раз перед проигрыванием звука?  :-\


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 17:26
    Что-бы получить профессиональную версию "помощь по коду от Dukat863", нужно доказать что вы хорошо знаете GML. Ограничение Lite версии: генерируется только индусский и быдло коды
    Если человек хорошо знает GM, то по логике и помощь ему не нужна, я считаю.  :crazy:



    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 10 Июня 2011 в 17:27
    ППКОD863
    Это что за шифрование такое? :crazy:

    Как мне проигрывать какой-то звук на фоне мелодии - мелодия почему-то останавливается как раз перед проигрыванием звука?  :-\
    Дело в том, что звуки типа Background и Media Player останавливают предыдущий экземпляр перед запуском. Попробуй воспроизводить в другом типе, или использовать DLL.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 17:30
    ППКОD863 - это что за шифрование такое? :crazy:
    ПомощьПоКодуОтDukat863 - супер-программа.
    м, что звуки типа Background и Media Player останавливают предыдущий экземпляр перед запуском. Попробуй воспроизводить в другом типе, или использовать DLL.
    Даже если у меня и то, и то формата mp3?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 10 Июня 2011 в 17:58
    Короче, скачай библиотеку SXMS и не мучайся. MP3 вроде как только через MediaPlayer идёт.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 10 Июня 2011 в 18:07
    while ((x>=0 && x<=640) && (y>=0 && y<=480))
    {
    x=irandom(1240)-300;//ширина 640
    y=irandom(1080)-300;//высота 480
    }

    МОжно примером? а то так у меня туго(


    О, все, ненадо, я разобрался!))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 19:12
    Спасибо, в блокнотик пока сохраню, пока я рисую плазмопушку, есть идеи как стрелять по принципу БФГ, чем дольше держишь, тем мощнее выстрел или просто нужно держать пару секунд для выстрела.
    Йап-и-и, дорисовал пушку, дак как сделать, не знаете?
    И чтобы пока держишь кнопку анимация зацикливается на кадрах с 8 по 12?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 19:21
    чем дольше держишь, тем мощнее выстрел
    Создавать переменные, присваивать им значения, проверять их - умеешь?
    Мощнее - это что значит? Наносит больший урон?
    Вот смотри: ты проверяешь, нажата ли ЛКМ. Если нажата, увеличиваешь переменную, если нет - обнуляешь. Про то, как ограничить значение переменной, уже писалось. Если тебе нужно сделать, чтобы от "мощности" зависел наносимый урон, то при выстреле приравниваешь урон к мощности. При этом можно использовать коэффициенты, например, "bullet.damage=power*10" нанесет урон, равный мощности, умноженной на десять. Это для тонкой настройки верхнего и нижнего порогов урона.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 10 Июня 2011 в 19:22
    В событии "другие-Конец Анимации":
      if mouse_check(mb_left) image_index=8 else image_speed=0;

    Как-то так...

    К слову, у БФГ такого эффекта нет, или это неправильный БФГ. А вот в HL была такая лазерная пушка, ня.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 19:28
    чем дольше держишь, тем мощнее выстрел
    Создавать переменные, присваивать им значения, проверять их - умеешь?
    Мощнее - это что значит? Наносит больший урон?
    Вот смотри: ты проверяешь, нажата ли ЛКМ. Если нажата, увеличиваешь переменную, если нет - обнуляешь. Про то, как ограничить значение переменной, уже писалось. Если тебе нужно сделать, чтобы от "мощности" зависел наносимый урон, то при выстреле приравниваешь урон к мощности. При этом можно использовать коэффициенты, например, "bullet.damage=power*10" нанесет урон, равный мощности, умноженной на десять. Это для тонкой настройки верхнего и нижнего порогов урона.
    Спасибо но я тут уже передумал.  ;D
    Хочу просто чтобы выстрелить нужно держать клавишу 1.5-2сек, если клавишу не отпускать, то анимация циклится  с 8 по 12 кадр.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 19:30
    В событии "другие-Конец Анимации":
      if mouse_check(mb_left) image_index=8 else image_speed=0;

    Как-то так...

    К слову, у БФГ такого эффекта нет, или это неправильный БФГ. А вот в HL была такая лазерная пушка, ня.
    НУ бфг под конец взрывалась, но при бесмертии, неплохая защита при окружении десу.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 19:32
    Хочу просто чтобы выстрелить нужно держать клавишу 1.5-2сек
    Принцип тот же. Только на этот раз при выстреле проверяешь, достигла ли переменная нужного значения.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 19:49
    У меня новые вымогательства новый вопрос.
    У меня есть три фона разной подсветки (зелёная, красная и синяя), но по рисунку одинаковые. Когда я нажимаю определённую клавишу, мне надо, чтобы расцветка одного фона менялась на расцветку другого фона (плавно, как в передаче). Как такое организовать?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 19:59
    http://gmakers.ru/index.php?topic=5414.0
    Чтобы цвет менялся плавно, используй merge_color.
    Можно попробовать сделать и проще: берем два фона один поверх другого и (следите за руками) постепенно уменьшаем непрозрачность верхнего из них. Но это может выглядеть не очень правильно. Так что лучше используй способ из моего примера.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 21:05
    чем дольше держишь, тем мощнее выстрел
    Создавать переменные, присваивать им значения, проверять их - умеешь?
    Мощнее - это что значит? Наносит больший урон?
    Вот смотри: ты проверяешь, нажата ли ЛКМ. Если нажата, увеличиваешь переменную, если нет - обнуляешь. Про то, как ограничить значение переменной, уже писалось. Если тебе нужно сделать, чтобы от "мощности" зависел наносимый урон, то при выстреле приравниваешь урон к мощности. При этом можно использовать коэффициенты, например, "bullet.damage=power*10" нанесет урон, равный мощности, умноженной на десять. Это для тонкой настройки верхнего и нижнего порогов урона.
    Все же не понимат. Что нужно дописать, без повышения мощности, просто зажимать на 1.5 сек для выстрела. А с переменными я вообще не дружу, чтобы создать переменную надо писать что то типа например weapon = wea?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 21:11
    Ogion, твой второй совет про альфу мне дал результат лучший.
    Rowk, только нельзя переменной присваивать значение необъявленной переменной. Если же это переменная текстовая, то надо значение заключать в кавычки: weapon = 'wea'.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 22:42
    Прежде всего: что такое переменная? Переменная - это некая величина, которую можно изменять. Здоровье, патроны, ресурсы, координаты - все это переменные. У каждой переменной есть имя и значение. Переменные можно использовать в выражениях.
    Для того, чтобы создать переменную, надо ее объявить, например, так: "hp=100". Обычно это делается в событии создания объекта. Если попытаться обратиться к переменной, значение которой неизвестно, это приведет к ошибке.
    Изменять значение переменной можно так: "hp=hp-10". Работает это так: вместо hp в правой части подставляется ее значение. Если переменная была равна, скажем, 100, то теперь она примет значение "90". Для сокращения записи используются знаки "+=" и "-=". "hp=hp-10" и "hp-=10" - это одно и то же.
    Теперь давай подумаем, какое значение примет переменная, если она будет увеличиваться на 1 каждый шаг в течение полутора секунд. Здесь все зависит от скорости комнаты. Если скорость комнаты - 30 шагов в секунду, то переменная примет значение 30*1.5=90.
    Теперь о том, как проверять значение переменной. Для этого используется оператор if. Работает это следующим образом:
    if (<выражение>) 
    {
    <действие>
    }
    В выражениях можно использовать знаки "=" (равно), "!=" (не равно), ">" (больше), "<" (меньше), ">=" (больше или равно), "<=" (меньше или равно).

    За подробностями - в справку. Изучай пример.
    Удачи.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 10 Июня 2011 в 23:02
    30*1.5 = 45, а не 90.  ;)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 23:05
    Точно.
    У меня сегодня просмотр был в универе, так что мне можно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 23:18
    Как можно организовать простой луч, вращающийся вокруг оси и меняющий свой цвет?
    Примерно как в этой (http://www.youtube.com/watch?v=WZucbmuv-_E) презентации.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 10 Июня 2011 в 23:34
    Как можно организовать простой луч, вращающийся вокруг оси и меняющий свой цвет?
    Примерно как в этой (http://www.youtube.com/watch?v=WZucbmuv-_E) презентации.
    Сделать градиентную полоску белого цвета, и во время рисования менять переменную image_blend.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 23:37
    Как можно организовать простой луч, вращающийся вокруг оси и меняющий свой цвет?
    Примерно как в этой (http://www.youtube.com/watch?v=WZucbmuv-_E) презентации.
    Сделать градиентную полоску белого цвета, и во время рисования менять переменную image_blend.
    Ну это понятно, а как плавно менять-то?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 10 Июня 2011 в 23:44
    Ну это понятно, а как плавно менять-то?
    Хм, "и во время рисования плавно менять переменную image_blend."


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 10 Июня 2011 в 23:45
    Ну это понятно, а как плавно менять-то?
    Хм, "и во время рисования плавно менять переменную image_blend."
    Плавно менять можно только числительную переменную, а это, мне кажется, функция.
    А лучше, чтобы это рисовалось программно, возможно, с сурфейсами, главное - покажите, как.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Июня 2011 в 23:48
    make_color_rgb. Уж три числа от 0 до 255 ты сможешь плавно менять?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 10 Июня 2011 в 23:50
    Хм, "и во время рисования плавно менять переменную image_blend."
    Плавно менять можно только числительную переменную, а это, мне кажется, функция.
    Согласен, тебе именно кажется.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 00:02
    Может выглядит что я очень туплю, из чего переменную создавать, вот жизни из hp=, оружие из weapon=, а со временем как, sec=, time=?
    А-а-а, не знаю, истерика, что надо добавить.
    Кстати в технаре учусь на программиста  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 11 Июня 2011 в 00:05
    Переменная - это ящик с именем. Его можно назвать hp, armor, nukes_left и так далее. Имя может состоять из английских букв (больших и маленьких), чисел и _. Название не должно начинаться с числа. Этот ящик хранит либо любое число, либо текст. Что-бы написать текст, его нужно заключить в кавычки ' или ". Над числовыми ящиками можно выполнять математические выражение, использовать для проверки условия. Если числовой ящик равен 0, то конструкция ЕСЛИ не выполняется, в противном случае выполняется.

    Какую-то антинаучную хрень написал


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 00:07
    Может выглядит что я очень туплю, из чего переменную создавать, вот жизни из hp=, оружие из weapon=, а со временем как, sec=, time=?
    А-а-а, не знаю, истерика, что надо добавить.
    Кстати в технаре учусь на программиста  ;D
    Создавай объект obj_timer.
    Create:
    milisec=0;
    sec=0;
    min=0;
    Step:
    milisec+=1;
    if milisec=30
    {sec+=1;
    milisec=0;}
    if sec=60
    {min+=1;
    sec=0;}
    Пример простого таймера с минутами и секундами.
    Для отрисовки типа 00:07 посмотри всю тему, я уже об этом писал.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 00:13
    Может выглядит что я очень туплю, из чего переменную создавать, вот жизни из hp=, оружие из weapon=, а со временем как, sec=, time=?
    А-а-а, не знаю, истерика, что надо добавить.
    Кстати в технаре учусь на программиста  ;D
    Создавай объект obj_timer.
    Create:
    milisec=0;
    sec=0;
    min=0;
    Step:
    milisec+=1;
    if milisec=30
    {sec+=1;
    milisec=0;}
    if sec=60
    {min+=1;
    sec=0;}
    Пример простого таймера с минутами и секундами.
    Для отрисовки типа 00:07 посмотри всю тему, я уже об этом писал.
    Мне не совсем это надо, я хотел:
    Хочу просто чтобы выстрелить нужно держать клавишу 1.5-2сек, если клавишу не отпускать, то анимация циклится  с 8 по 12 кадр.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 00:22
    Может выглядит что я очень туплю, из чего переменную создавать, вот жизни из hp=, оружие из weapon=, а со временем как, sec=, time=?
    А-а-а, не знаю, истерика, что надо добавить.
    Кстати в технаре учусь на программиста  ;D
    Создавай объект obj_timer.
    Create:
    milisec=0;
    sec=0;
    min=0;
    Step:
    milisec+=1;
    if milisec=30
    {sec+=1;
    milisec=0;}
    if sec=60
    {min+=1;
    sec=0;}
    Пример простого таймера с минутами и секундами.
    Для отрисовки типа 00:07 посмотри всю тему, я уже об этом писал.
    Мне не совсем это надо, я хотел:
    Хочу просто чтобы выстрелить нужно держать клавишу 1.5-2сек, если клавишу не отпускать, то анимация циклится  с 8 по 12 кадр.
    Тогда просто убери переменную min и всё, что с ней связано в Step'е. Получится таймер, отсчитывающий секунды. Сделай проверку во времени и тогда ставь определённое действие.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 01:09
    Ладно, ничего не понимаю, пойду поиграю.
    боже, пошли мне программиста, ну да ладно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 01:12
    боже, пошли мне программиста, ну да ладно.
    Найди в Google телефон Билла Гейтса, найдёшь программиста!
    ЗЫ
    Эх, а вот как сделать самый простой прожектор, посоветуйте, пожалуйста.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 01:14
    Хочу просто чтобы выстрелить нужно держать клавишу 1.5-2сек, если клавишу не отпускать, то анимация циклится  с 8 по 12 кадр.
    Получилось что-то такое:[attachment=1]
    Как заказывал: от 1.5 до 2 секунд. И меньше и больше не работает, чем ближе пауза к 2 секундам, тем мощнее выстрел (за это отвечает переменная pwr. Анимация по кадрам 8-12, тоже как просил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 01:22
    боже, пошли мне программиста, ну да ладно.
    Найди в Google телефон Билла Гейтса, найдёшь программиста!
    Не петросянь.
    Как заказывал: от 1.5 до 2 секунд. И меньше и больше не работает, чем ближе пауза к 2 секундам, тем мощнее выстрел (за это отвечает переменная pwr. Анимация по кадрам 8-12, тоже как просил.
    Не подумай что издеваюсь, но я все равно не понял как у тебя это работает, и оно у тебя исчезает через сек 3  :), и не знаю как перенести к себе.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 01:24
    Как же ты собираешься понять быструю сортировку или даже рекурсию (а для того, чтобы её понять, нужно понять рекурсию), если ты таких элементарных вещей не понимаешь? ;)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 01:31
    Как же ты собираешься понять быструю сортировку или даже рекурсию (а для того, чтобы её понять, нужно понять рекурсию), если ты таких элементарных вещей не понимаешь? ;)
    Рекурсия это повторение, повторение это цикл, цикл это рекурсия, так кажется.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 11 Июня 2011 в 01:33
    Хех. Наивный  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 01:35
    Нет, рекурсия — это рекурсия. В этом её суть. :D

    Рекурсия это повторение, повторение это цикл, цикл это рекурсия, так кажется.
    Хм, в принципе, тут была бы косвенная рекурсия (если бы само определение имело хоть малейшее отношение к действительности).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 01:36
    Как же ты собираешься понять быструю сортировку или даже рекурсию (а для того, чтобы её понять, нужно понять рекурсию), если ты таких элементарных вещей не понимаешь? ;)
    Рекурсия это повторение, повторение это цикл, цикл это рекурсия, так кажется.
    Не совсем повторения.
    Рекурсия - это такой цикл, в котором каждый последующий шаг зависит от предыдущего. Пример тому - рекурсивный цикл для вычисления чисел Фибоначчи:
    [gml=Pascal code]a[1]=1; a[2]=1;
    for i:=3 to n do
    a=a[i-1]+a[i-2];[/gml]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 01:39
    Рекурсия - это такой цикл, в котором каждый последующий шаг зависит от предыдущего.
    Ты не знаешь, что такое рекурсия. Давай дневник, двойка тебе.
    … я считаю общую рекурсию на порядок более сложной конструкцией, чем простое повторение …


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 01:41
    Не совсем повторения.
    Рекурсия - это такой цикл, в котором каждый последующий шаг зависит от предыдущего. Пример тому - рекурсивный цикл для вычисления чисел Фибоначчи:
    [gml=Pascal code]a[1]=1; a[2]=1;
    for i:=3 to n do
    a=a[i-1]+a[i-2];[/gml]
    0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,…
    Уху, гугля рулит.
    А давайте поступим, как несколько раз предлагал Макасин.
    Давай исходник - исправим  :)
    Нэ?  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 01:42
    Рекурсия - это такой цикл, в котором каждый последующий шаг зависит от предыдущего.
    Может прогрессия ты имел в виду?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 01:43
    Ты не знаешь, что такое рекурсия. Давай дневник, двойка тебе.
    А если я скажу, что рекурсия - способ общего определения множества объектов или функций через себя, с использованием ранее заданных частных определений, или что рекурсия - способ вызова функции, цикла прямо через саму/ого себя?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 01:46
    Я бы сказал, что ты много болтаешь и путаешь рекурсивность и рекуррентность. Рекурсия — вызов функцией или процедурой себя.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 01:51
    Я бы сказал, что ты много болтаешь и путаешь рекурсивность и рекуррентность. Рекурсия — вызов функцией или процедурой себя.
    А я не то же сказал, но совсем по-другому?
    ЗЫ
    Не можешь дать пример прожектора, нигде достать не могу?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 01:52
    Я бы сказал, что ты много болтаешь и путаешь рекурсивность и рекуррентность. Рекурсия — вызов функцией или процедурой себя.
    Примерно так?
    У попа была собака, он ее любил. Она съела кусок мяса, он ее убил. В землю закопал и надпись написал: «У попа была собака, он ее любил. Она съела кусок мяса, он ее убил. В землю закопал и надпись написал: "У попа была собака, он ее любил …"»


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 01:57
    Я бы сказал, что ты много болтаешь и путаешь рекурсивность и рекуррентность. Рекурсия — вызов функцией или процедурой себя.
    Примерно так?
    У попа была собака, он ее любил.
    Она съела кусок мяса, он ее убил.
    В землю закопал и надпись написал:
    «У попа была собака, он ее любил.
    Она съела кусок мяса, он ее убил.
    В землю закопал и надпись написал:
    "У попа была собака, он ее любил …"»
    На обложке книги нарисовано изображение книги, на которой нарисовано изображение той книги, на которой нарисовано изображение той книги...
    Короче, вот (http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 02:00
    На обложке книги нарисовано изображение книги, на которой нарисовано изображение той книги, на которой нарисовано изображение той книги...
    Короче, вот (http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F).
    Понятней вот (http://lurkmore.ru/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F).  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 16:55
    У меня есть двухмерный массив questions[i,j].
    questions[i,0] - вопрос.
    questions[i,1], questions[i,2], questions[i,3], questions[i,4] - варианты ответа.
    Переменная i отвечает за сложность вопроса.
    Допустим, в текстовом файле vopros1.txt есть такой код:
    questions[0,0]="Сколько будет 2+2?" 
    questions[0,1]="1"
    questions[0,2]="4"
    questions[0,3]="3"
    questions[0,4]="2"
    global.correct=4;
    А в vopros2.txt - вот:
    questions[1,0]="Столица Украины?" 
    questions[1,1]="Лондон"
    questions[1,2]="Париж"
    questions[1,3]="Киев"
    questions[1,4]="Москва"
    global.correct=3;
    Что мне надо:
    1) выборочно подгружать только один из этих текстовых файлов;
    2) считывать код из файла и переводить его в GML.

    И ещё скиньте или покажите, пожалуйста, пример прожектора или фонарика.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Июня 2011 в 17:17
    Осваивай запись и чтение файлов.

    А пример фонарика вот: http://gmakers.ru/index.php?topic=2702.msg27114#msg27114
    Мог бы и использовать поиск по форуму.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 11 Июня 2011 в 17:26
    Вообще-то, GML-код из файла можно выполнить с помощью функции execute_file("filename.txt");
    А выбрать случайное число можно с помощью random().

    Получается, что прочитать случайный вопрос можно следующим образом:
    execute_file("question"+string(round(random(X)))+".txt")
    //прочитает текст из файла question*.txt, где * - число от 0 до (X-1).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 11 Июня 2011 в 17:32
    round(random(X))
    Для этого есть irandom(x)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 19:07
    Спасибо за помощь!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 20:18
    Хочу просто чтобы выстрелить нужно держать клавишу 1.5-2сек, если клавишу не отпускать, то анимация циклится  с 8 по 12 кадр.
    Получилось что-то такое:[attachment=1]
    Как заказывал: от 1.5 до 2 секунд. И меньше и больше не работает, чем ближе пауза к 2 секундам, тем мощнее выстрел (за это отвечает переменная pwr. Анимация по кадрам 8-12, тоже как просил.
    Все перенес, по моему верно перенес, но при подъеме пушки ошибка:
    ___________________________________________
    ERROR in
    action number 1
    of Draw Event
    for object control:

    Error in code at line 23:
          if o_plasma_cannon.visible = true
                             ^
    at position 24: Unknown variable visible


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 11 Июня 2011 в 20:27
    Надо не тупо копипастить, а и подставлять свои названия объектов в код.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 20:29
    Надо не тупо копипастить, а и подставлять свои названия объектов в код.
    Я и написал перенес, а не скопипастил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Июня 2011 в 20:50
    Объект o_plasma_cannon точно существует?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 21:25
    Объект o_plasma_cannon точно существует?
    Да, пушка же так и называется. пока его код не добавлял, то все работало, но стреляло как пистолет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 11 Июня 2011 в 21:33
    ...учимся читать ошибки  :)
    Указано, что невозможно обратиться к переменной visible. Это могло произойти только по двум причинам:
    1) переменной с таким именем у данного объекта нет (при опечатке типа visble переменная также будет считаться несуществующей);
    2) экземпляров объекта, к переменной которого мы пытаемся обратиться, нет в комнате.

    Т.к. переменная visible встроенная, она есть у каждого объекта. Значит, нет экземпляров объекта в комнате. Например, если объект пушки один (и лежащий, и подобранный), ты можешь удалить пушку, когда подбираешь, вместо того, чтобы просто изменить значение какой-нибудь переменной, чтобы пушка считалась подобранной.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 21:43
    ...учимся читать ошибки  :)
    Указано, что невозможно обратиться к переменной visible. Это могло произойти только по двум причинам:
    1) переменной с таким именем у данного объекта нет (при опечатке типа visble переменная также будет считаться несуществующей);
    2) экземпляров объекта, к переменной которого мы пытаемся обратиться, нет в комнате.

    Т.к. переменная visible встроенная, она есть у каждого объекта. Значит, нет экземпляров объекта в комнате. Например, если объект пушки один (и лежащий, и подобранный), ты можешь удалить пушку, когда подбираешь, вместо того, чтобы просто изменить значение какой-нибудь переменной, чтобы пушка считалась подобранной.
    При подборе происходит дестрой, значит, нужно изменить на visible=false сменить?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 11 Июня 2011 в 21:46
    Вообще-то, я не знаю, как там работает пушка. Но, может быть, так и надо сделать. (Хотя я бы сделал отдельную переменную, чтобы от неё зависело, подобрана ли пушка.)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Июня 2011 в 21:51
    Скинь исходник, посмотрим.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 22:24
    Скинь исходник, посмотрим.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Июня 2011 в 22:34
    Nuff said.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 22:40
    Nuff said.
    Как было в его примере, так и сделал ^__^


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Июня 2011 в 22:42
    Правда? И где же такое было?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: RamonN от 11 Июня 2011 в 23:06
    Здравствуйте.
    У меня такая проблема, при создании events и actions, у меня их просто не видно.
    Когда перезапускаю GM они вроде появляются, но когда наводишь на них курсор, они снова пропадают
    Вот скриншот:
    Из-за чего это может быть, подскажите, пожалуйста, заранее благодарен.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 11 Июня 2011 в 23:09
    А программа купленная или скачал где-то?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: RamonN от 11 Июня 2011 в 23:10
    А программа купленная или скачал где-то?
    Скачана, думаете из-за этого? Насколько помню, скачивал с YoYoGames


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 11 Июня 2011 в 23:18
    А, то есть Лайт версия? Тогда ничего не ясно.
    Какая система, какой компьютер?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 23:26
    Святые макароны, а нельзя было картинку хотя бы в png ужать?
    По существу: либо просто слишком мало памяти, либо косяки с какой-то системной библиотекой (что выражается тоже в постепенном захвате памяти).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 23:26
    Здравствуйте.
    У меня такая проблема, при создании events и actions, у меня их просто не видно.
    Когда перезапускаю GM они вроде появляются, но когда наводишь на них курсор, они снова пропадают
    Вот скриншот:
    Из-за чего это может быть, подскажите, пожалуйста, заранее благодарен.
    Наверно версия 8.1, у меня так же было, поставил 8.0 все норм стало.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 23:29
    Правда? И где же такое было?
    тут же. 5 будильников с движка + 2 будильника с его примера. Ну вот честно, уже 2 дня мусолим это, кинул исходник, помогли бы сделать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Июня 2011 в 23:35
    Это из какого-то другого примера? Нельзя же бездумно склеивать несколько примеров.
    UPD Ага, это из примера tolich'а. Теперь понятно, кто использует приставку "sprt_".


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 23:37
    Это из какого-то другого примера? Нельзя же бездумно склеивать несколько примеров.
    Этот пример же.
    Получилось что-то такое:[attachment=1]
    Как заказывал: от 1.5 до 2 секунд. И меньше и больше не работает, чем ближе пауза к 2 секундам, тем мощнее выстрел (за это отвечает переменная pwr. Анимация по кадрам 8-12, тоже как просил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 23:43
    Теперь понятно, кто использует приставку "sprt_".
    Не, я обычно spr_, но тут просто накопипастил из DeepMagic (название файла намекает).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 11 Июня 2011 в 23:45
    Дак может сделаете за меня, ну пожалуйста. ^_^


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 11 Июня 2011 в 23:53
    No way! ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 00:06
    Создай дубликат пистолета.
    :GM003: Create: объявляешь переменную, присваивая ей значение "0", назвать ее можно как угодно.
    :GM006: Step: Проверяешь, нажата ли ЛКМ (mouse_check_button(mb_left)). Если нажата - увеличиваешь переменную на 1, если не нажата - обнуляешь. Кроме того, если переменная больше максимального значения (скорость комнаты*2 секунды), снова обнуляешь.
    :GM009: Global Left Pressed изменяешь на :GM009: Global Left Released. Там же, где "if magazin >0 if reload = false if visible = true", добавляешь еще две проверки: если переменная больше минимального значения (скорость комнаты*1.5 секунды) и если переменная меньше максимального значения (скорость комнаты*2 секунды).

    Пока что сделай хотя бы так.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: RamonN от 12 Июня 2011 в 00:22
    Здравствуйте.
    У меня такая проблема, при создании events и actions, у меня их просто не видно.
    Когда перезапускаю GM они вроде появляются, но когда наводишь на них курсор, они снова пропадают
    Вот скриншот:
    Из-за чего это может быть, подскажите, пожалуйста, заранее благодарен.
    Наверно версия 8.1, у меня так же было, поставил 8.0 все норм стало.
    Спасибо, помогло. Откатил до версии 8, все стало отображаться) Спасибо еще раз


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 00:27
    Создай дубликат пистолета.
    :GM003: Create: объявляешь переменную, присваивая ей значение "0", назвать ее можно как угодно.
    :GM006: Step: Проверяешь, нажата ли ЛКМ (mouse_check_button(mb_left)). Если нажата - увеличиваешь переменную на 1, если не нажата - обнуляешь. Кроме того, если переменная больше максимального значения (скорость комнаты*2 секунды), снова обнуляешь.
    :GM009: Global Left Pressed изменяешь на :GM009: Global Left Released. Там же, где "if magazin >0 if reload = false if visible = true", добавляешь еще две проверки: если переменная больше минимального значения (скорость комнаты*1.5 секунды) и если переменная меньше максимального значения (скорость комнаты*2 секунды).

    Пока что сделай хотя бы так.
    Сделал так, теперь комната все быстрее и быстрее при каждом выстреле, и задержки так же нет. Сделал в плазма пушке, из сохраненного бекапа.
    if vrem > 0
    {
    room_speed *=1.5
    }
    else
    {
    room_speed *= 2
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 00:34
    Не скорость комнаты нужно менять, а переменную.
    "Скорость комнаты*2 секунды" - это формула, по которой тебе нужно посчитать максимальное значение переменной. Например, У тебя скорость комнаты - 30, значит, максимальное значение переменной - 60. Это значение, которого достигнет переменная, если жать ЛКМ в течение двух секунд, потому что увеличение на единицу будет происходить 30 раз в секунду.

    if vrem > 60
    {
    vrem = 0;
    }
    Это мы ограничили значение переменной.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 01:08
    Сделал,
    Step
    if mouse_check_button(mb_left)
    {
    vrem +=1
    }
    else
    {
    vrem = 0
    }
    if vrem > 60
        {
        vrem = 0;
        }
    Glob left pressed
    if vrem > 45
    if vrem < 60
    Теперь вообще не стрелят.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 01:12
    "If vrem < 60" вроде бы не нужно, раз мы обнуляем переменную при шестидесяти. Попробуй убрать и это, и
    if vrem > 60
            {
            vrem = 0;
            }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 01:25
    "If vrem < 60" вроде бы не нужно, раз мы обнуляем переменную при шестидесяти. Попробуй убрать и это, и
    if vrem > 60
            {
            vrem = 0;
            }

    Все равно не стрелят.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 01:26
    А там вообще есть создание пули, или ты выложил весь код?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 01:36
    А там вообще есть создание пули, или ты выложил весь код?
    Есть конечно, без этих всех манипуляций стреляет же, но как пистолет с уроном 100 только.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 01:42
    У тебя вообще есть проверка типа
    if vrem>60 
    {бомбить Америку!}
    ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 01:47
    У тебя вообще есть проверка типа
    if vrem>60 
    {бомбить Америку!}
    ?
    Этого достаточно, умник?
    if vrem > 45
    if magazin >0      
    if reload = false      
    if visible = true      
       {
          if image_yscale = 1
             {
                b = instance_create(x + lengthdir_x(17,direction+5),y + lengthdir_y(17,direction+5),o_plasma_bullet)    
               // instance_create(x + lengthdir_x(77,direction+8),y + lengthdir_y(77,direction+8),o_flare)            
               // instance_create(x + lengthdir_x(63,direction+8),y + lengthdir_y(63,direction+8),o_shell)          
             }
          if image_yscale = -1
             {
                b = instance_create(x + lengthdir_x(17,direction-5),y + lengthdir_y(17,direction-7),o_plasma_bullet)       b
               // instance_create(x + lengthdir_x(77,direction-8),y + lengthdir_y(77,direction-8),o_flare)          
               // instance_create(x + lengthdir_x(63,direction-8),y + lengthdir_y(63,direction-8),o_shell)      
             }
          b.damage = damage    
          b.direction = direction+razbros      
          image_index+=1      
          alarm[2] = 3      
          magazin-=1      
          //sound_play(snd_uspfire)      


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 01:51
    Спасибо за комплимент, конечно. А не мог бы ты попробовать:
        if vrem > 45
        if magazin >0     
        if reload = false       
        if visible = true     
           {
              if image_yscale = 1
                 {
                    b = instance_create(x + lengthdir_x(17,direction+5),y + lengthdir_y(17,direction+5),o_plasma_bullet);                 
                 }
              if image_yscale = -1
                 {
                    b = instance_create(x + lengthdir_x(17,direction-5),y + lengthdir_y(17,direction-7),o_plasma_bullet);
                 }
              b.damage = damage     
              b.direction = direction+razbros     
              image_index+=1     
              alarm[2] = 3     
              magazin-=1
              vrem=0;
           }
    Короче, добавь vrem=0 в самый конец перед скобками. Теперь получается?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 01:54
    Спасибо за комплимент, конечно. А не мог бы ты попробовать
    Короче, добавь vrem=0 в самый конец перед скобками. Теперь получается?
    Не за что, и нет, не получается.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 02:06
    Не слушал людей, вот и не получилось. Лови изменённый пример, и запомни: не забывай менять Global Left Pressed на Global Left Button.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 02:10
    Не слушал людей, вот и не получилось. Лови изменённый пример, и запомни: не забывай менять Global Left Pressed на Global Left Button.
    Спасибо, но ты все равно иногда не к месту говоришь. Чтобы не забывать, нужно сначала об этом менять, а мне не кто не говорил.  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 02:14
    Спасибо, но ты все равно иногда не к месту говоришь. Чтобы не забывать, нужно сначала об этом менять, а мне не кто не говорил.  ;D
    Да лаааадно? (http://gmakers.ru/index.php?topic=5335.msg59053#msg59053)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 02:20
    Спасибо, но ты все равно иногда не к месту говоришь. Чтобы не забывать, нужно сначала об этом менять, а мне не кто не говорил.  ;D
    Да лаааадно? (http://gmakers.ru/index.php?topic=5335.msg59053#msg59053)
    Кстати, при "загрузке" выстрела, анимация не идет, пичалька.  :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 02:24
    Спасибо, но ты все равно иногда не к месту говоришь. Чтобы не забывать, нужно сначала об этом менять, а мне не кто не говорил.  ;D
    Да лаааадно? (http://gmakers.ru/index.php?topic=5335.msg59053#msg59053)
    Кстати, при "загрузке" выстрела, анимация не идет, пичалька.  :(
    Эту анимацию в мышку пихать надо, а не в Step.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 02:29
    Эту анимацию в мышку пихать надо, а не в Step.
    Кроме как вести себя по отношению к мыши, в step больше ничего и нет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 02:39
    Кроме как вести себя по отношению к мыши, в step больше ничего и нет.
    Может, в рисование поставить?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 02:42
    Кроме как вести себя по отношению к мыши, в step больше ничего и нет.
    Может, в рисование поставить?
    Щито, куда, как?  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 02:45
    Итак, мы начинаем игру!
    Вопрос на 100 долларов:
    Как обозначается событие рисования:
    А :GM003:
    Б :GM004:
    В :GM005:
    Г :GM011:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 02:51
    Итак, мы начинаем игру!
    Вопрос на 100 долларов:
    Как обозначается событие рисования:
    А :GM003:
    Б :GM004:
    В :GM005:
    Г :GM011:
    Ты опять петросянечаешь, просто что именно в draw вставлять надо скажи.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Bars от 12 Июня 2011 в 09:51
    Что нужно сделать чтобы игрок не застревал   :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 09:55
    Аккуратно обращаться с гравитацией, трением, вращением и масштабированием спрайтов, движением твердых объектов.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Bars от 12 Июня 2011 в 10:01
    А по подробней можно


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 10:09
    К сожалению, наш штатный телепат недавно уволился по собственному желанию, и я не могу узнать, где именно ты накосячил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 11:37
    Люди, отключить какие-либо действия (например шаг) можно только удалив объект из комнаты, или как-то по другому?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 12 Июня 2011 в 11:38
    Еще можно деактивировать объект.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 11:39
    Можно написать в начале что-нибудь вроде "if (skip=1) exit;", тогда весь код в этом событии не будет выполняться, если переменная skip будет равна единице.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 12 Июня 2011 в 11:41
    Но само событие выполняться будет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 11:54
    Это критично только для Draw.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 12:01
    Просто у меня будут уровни, а объекты создаются с помощью события шаг(step)
    если написать там "if (skip=1) exit;" то объекты перестанут создаваться?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 12:04
    Если ты напишешь это в самом начале события и
    если переменная skip будет равна единице.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 12:07
    Спасибо)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 12:30
    Я в некоторых играх видел как используется display missage, но только там были еще и варианты ответов, так вот, как сделать варианты ответа?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 12:42
    http://gmakers.ru/gamemaker_help/source/files/407_02_messages.php


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 12 Июня 2011 в 12:48
    Самое смешное в show_message_ext(str,but1,but2,but3), что если but1='', то первая кнопка не показывается, но при нажатии Enter нажимается (функия возвращает 0).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 14:06
    Простите, что повторяюсь, но у меня есть...
    ...вопрос по поводу считывания кода из файлов: можно из файла считывать только часть кода, чтобы не хранить 15 отдельных текстовых файлов?
    Например, в текстовом файле labuda.txt есть такой код:

    labuda=1;
        labuda2=1;
       
        labuda=2;
        labuda2=2;
       
        ...
       
        labuda=15;
        labuda2=15;

    Мне надо, чтобы obj_1 считывал первые две строки, obj_2 - следующие две, и т. д.. Группы я выделил пустой строкой, чтоб нагляднее было.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 12 Июня 2011 в 14:15
    Простите, что повторяюсь, но у меня есть вопрос по поводу считывания кода из файлов: можно из файла считывать только часть кода, чтобы не хранить 15 отдельных текстовых файлов?
    Не возражаю.
    var i,file; file=file_text_open_read(argument0); i=0;
    while !file_text_eof(file){
      lines[i]=file_text_read_string(file); i+=1; file_text_readln(file);
    }
    file_text_close(file);
    execute_string(lines[10]);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 14:17
    И еще вопрос)
    Имена переменных можно ставить любые, или только определенные?
    И где находиться show_message_ext, в действиях такого нету О_о

    Я вот устанавливаю переменную points и при уничтожении объекта увеличиваю его на 1, а игра ругаеться(

    ___________________________________________
    ERROR in
    action number 1
    of Destroy Event
    for object O_meteor:

    Error in code at line 1:
       points += 1
      ^
    at position 1: Unknown variable points

    Что я не так сделаль?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 14:31
    Наконец сделал анимация чтобы работала, но если отпустить кнопку раньше выстрела, то она застывает на последнем показаном кадре.
    if vrem>=10
    {
    image_index+=1
    }
    if vrem>=45
    {
    бла бла бла выстрел
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 15:33
    ________________________________________
    ERROR in
    action number 1
    of Destroy Event
    for object O_meteor:

    Error in code at line 1:
       points += 1
      ^
    at position 1: Unknown variable points

    Что я не так сделаль?
    Ты переменную points не объявил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 15:36
    Есть она у меня, в создании, там где и все переменные...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 15:45
    Имена переменных можно ставить любые, или только определенные?
    http://gmakers.ru/gamemaker_help/source/files/401_02_variables.php
    И где находиться show_message_ext, в действиях такого нету О_о
    http://gmakers.ru/gamemaker_help/source/files/407_02_messages.php
    Я вот устанавливаю переменную points и при уничтожении объекта увеличиваю его на 1, а игра ругаеться(
    Ты пытаешься увеличить значение переменной объекта, который ты уничтожаешь, или какого-то другого?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 15:51
    Ты пытаешься увеличить значение переменной объекта, который ты уничтожаешь, или какого-то другого?

    Который уничтожаю


    http://gmakers.ru/gamemaker_help/source/files/407_02_messages.php

    Там не написано где их брать я вообще хз про что там пишут, в действиях вообще нету ничего из того что там написано.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 15:56
    У меня все еще проблема, сорь за повторение.
    Наконец сделал анимация чтобы работала, но если отпустить кнопку раньше выстрела, то она застывает на последнем показаном кадре.
    if vrem>=10
    {
    image_index+=1
    }
    if vrem>=45
    {
    бла бла бла выстрел
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 12 Июня 2011 в 15:57
    Когда экземпляр объекта уничтожается, все его переменные пропадают. А ты как хотел?  
    Там не написано где их брать я вообще хз про что там пишут, в действиях вообще нету ничего из того что там написано.
    Это код, а не кнопки. На вкладке "Control" есть вкладка "Execute a peace of code". Туда это и надо писать. Это называется "программирование".

    У меня все еще проблема, сорь за повторение.
    Когда отпускаешь кнопку, проверяешь значение переменной vrem. Если оно ниже заданного порога (то есть слишком рано отпустил), то image_index=0. Кадры нумеруются с нуля.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 16:24
    Люди, подскажите как сделать всплывающее сообщение в месте чуть выше курсора(у меня наводишь на магию, и должно вылезти такое сообщения, которое не останавливает игру, типа описание...) Я просто в программировании полный ноль(
    Да и вроде в ссылке такого нету, там есть только шрифт, фон, прозрачность и т.п. для сообщения.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 12 Июня 2011 в 16:38
    Люди, подскажите как сделать всплывающее сообщение в месте чуть выше курсора(у меня наводишь на магию, и должно вылезти такое сообщения, которое не останавливает игру, типа описание...) Я просто в программировании полный ноль(
    Да и вроде в ссылке такого нету, там есть только шрифт, фон, прозрачность и т.п. для сообщения.
    Я только вчера видел в справке описание функций draw_text_ext и position_meeting.
    if position_meeting(mouse_x,mouse_y,self){
      // тут должна рисоваться рамка сообщения и сам текст, но мне лень это кодить :)
      draw_text(x,y,'это крутой спелл, стоит много маны')
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 16:44
    Люди, подскажите как сделать всплывающее сообщение в месте чуть выше курсора(у меня наводишь на магию, и должно вылезти такое сообщения, которое не останавливает игру, типа описание...) Я просто в программировании полный ноль(
    Да и вроде в ссылке такого нету, там есть только шрифт, фон, прозрачность и т.п. для сообщения.
    ЧАВО (http://gmakers.ru/index.php?topic=4312.0), пункт II.3.8.: Как сделать, чтобы при наведении на объект высвечивалась информация о нём?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 16:45
    Когда отпускаешь кнопку, проверяешь значение переменной vrem. Если оно ниже заданного порога (то есть слишком рано отпустил), то image_index=0. Кадры нумеруются с нуля.
    Спасибо, может скоро еще вопросы будут.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 16:58
    Хныыыг, у меня нечего не получается((((( :'(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 17:20
    Хныыыг, у меня нечего не получается((((( :'(
    Ты взялся за сильно сложное дело, не подготовившись.
    Сначала скачай и прочитай справку (http://gmakers.ru/index.php?action=tpmod;dl=get220), потом следуй официальным примерам (http://www.yoyogames.com/make/tutorials). А вот после этого попробуй покреативить.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кирасим от 12 Июня 2011 в 17:22
    Хныыыг, у меня нечего не получается((((( :'(
    Ты взялся за сильно сложное дело, не подготовившись.
    Сначала скачай и прочитай справку (http://gmakers.ru/index.php?action=tpmod;dl=get220), потом следуй официальным примерам (http://www.yoyogames.com/make/tutorials). А вот после этого попробуй покреативить.

    Я негде не нашел примера с всплывающим текстом который мне надо(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 17:41
    Не знаю где я опять намудрил, но при смене пушка исчезает, но стрелять не перестает.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 12 Июня 2011 в 17:46
    Я негде не нашел примера с всплывающим текстом который мне надо(
    А готовый пример никто тебе не подсунет на тарелочке. Надо читать, смотреть разные примеры, читать справку на форуме
    или учиться методом проб и ошибок, как я ;)
    333 комментария!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 12 Июня 2011 в 17:55
    Не знаю где я опять намудрил, но при смене пушка исчезает, но стрелять не перестает.
    Внезапно вспомнился пулемёт в Dungeon Siege: если персонаж его держал и стрелял только благодаря баффу силы, то при попадании баффа пулемёт падал на землю, продолжая стрелять, даже в инвентаре. Остановить это можно было только снова взяв его в руки и в кого-нибудь постреляв.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 12 Июня 2011 в 17:56
    Если писать что-то на чьём-то движке, то запутаться легче чем если это писал ты.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 12 Июня 2011 в 18:12
    Если писать что-то на чьём-то движке, то запутаться легче чем если это писал ты.
    Можешь я опять кину исходник, а добрые дяди его поправят?  ;D
    ___
    Все, исправил.
    За то опять глюк нашел, если во время перезарядки держать кнопку нажатой, то первый выстрел идет без анимации.
    ____
    Опять таки исправил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 13 Июня 2011 в 00:03
    Как сделать чтобы при стрельбе из обоймы которая будет служить индикатором патронов в магазине исчезали патроны.
    Сегодня прям сонное царство какое то.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 13 Июня 2011 в 00:44
    Спроси у создателя движка


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 13 Июня 2011 в 00:55
    Спроси у создателя движка
    При чем тут создатель движка, я про интерфейс спрашиваю.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 13 Июня 2011 в 01:23
    i=0;
    repeat (bullets)
    {
    draw_sprite(s_bullet,0,x+i,y);
    i+=4;
    }
    ,где bullets - количество патронов, s_bullet - спрайт патрона.
    Как это работает. Благодаря repeat этот участок кода будет выполняться столько раз, сколько у нас патронов. Спрайты патронов будут рисоваться рядами, расстояние между патронами будет зависеть от того, на сколько ты увеличиваешь i.
    Код не совсем полный, с расчетом на то, что ты его осмыслишь и остальное сделаешь сам.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 13 Июня 2011 в 01:32
    i=0;
    repeat (bullets)
    {
    draw_sprite(s_bullet,0,x+i,y);
    i+=4;
    }
    ,где bullets - количество патронов, s_bullet - спрайт патрона.
    Как это работает. Благодаря repeat этот участок кода будет выполняться столько раз, сколько у нас патронов. Спрайты патронов будут рисоваться рядами, расстояние между патронами будет зависеть от того, на сколько ты увеличиваешь i.
    Код не совсем полный, с расчетом на то, что ты его осмыслишь и остальное сделаешь сам.
    Надо будет попробовать, но не совсем это мне надо, в интерфейсе в обойме всего 12 патронов, нужно чтобы и для пулемета и для плазма пушки патроны кончались равномерно. Примерно как на пиклейд в верху.
    Ну или не сложно ли будет сделать, чтобы для каждого оружия своя обойма появлялась?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 13 Июня 2011 в 02:01
    Конечно, не сложно. Можно завести специальный объект obj_controller, который всё это будет рисовать.
    Можно использовать тот же принцип, что и в коде выше. Можно всё это нарисовать одним спрайтом и по координатам вычислять, где какие патроны рисовать. Всё зависит от твоего выбора.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 13 Июня 2011 в 19:31
    Народ, где можно скачать ИИ врагов, что то гугл не особо помог.
    Или как исправить ии в моей игре, чтобы стрелял только прямо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 13 Июня 2011 в 19:37
    В оружии "move_towards_point(o_man.x,o_man.y,0)"  заменяем на
    if (o_man.x<x) direction=180;
    else direction=0;
    А можно и так:
    if (instance_nearest(x,y,o_enemy).image_xscale=1) direction=180;
    else direction=0;
    , тогда оружие будет постоянно направлено туда, куда смотрит враг.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 13 Июня 2011 в 19:45
    В оружии "move_towards_point(o_man.x,o_man.y,0)"  заменяем на...
    Спасибо, а что еще нужно, чтобы не стрелял, если я выше или ниже прицела врага.
    И почему у тебя уже второй пост с запятой начинается?  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 13 Июня 2011 в 20:13
    И почему у тебя уже второй пост с запятой начинается?  :)
    Я использовал код в качестве части предложения.

    Спасибо, а что еще нужно, чтобы не стрелял, если я выше или ниже прицела врага.

    Использование direction - это костыль, связанный с особенностями движка JetBalance. Для начала давай от него избавимся.
    Поясню.
    Вот мы берем спрайт и поворачиваем.
    [attachment=1]
    Теперь он выглядит отраженным по вертикали. JetBalance компенсирует это, отражая спрайт по вертикали с помощью image_yscale. Но так как нам не нужно вращать спрайт, то и отражать спрайт по вертикали нам не нужно.
    Для того, чтобы избавиться от костыля, делаем вот что.
    Убираем отражение по вертикали, то есть вот эти строчки:
                if o_man.x < x          //Åñëè ÃÃ ëåâåå õ
                    {
                        image_yscale = -1       //Òî îòðàçèòü èçîáðàæåíèå ïî ó
                    }
                else                //èíà÷å
                    {
                        image_yscale = 1            //Âåðíóòü ïåðâîíà÷àëüíîå îòðàæåíèå
    //комментарии открякозябрялись из-за GM8.1
                    }
    Вместо костыльного кода
    if (instance_nearest(x,y,o_enemy).image_xscale=1) direction=180;
        else direction=0;
    пишем следующее:
    image_xscale=-instance_nearest(x,y,o_enemy).image_xscale;
    direction=180*image_xscale;
    Делать это лучше не там, где стрельба, а там, где центровка по координатам тела. Минус там потому, что спрайт противника повернут влево, а оружия - вправо. Direction пока что оставим, так как по нему задаются направление и начальные координаты пуль.
    Вот эту строчку
    image_angle = direction
    нужно убрать - спрайт теперь не будет поворачиваться, он будет просто отражаться по горизонтали.

    Мы избавились от костыля.
    Теперь давай разберемся с прицеливанием. Для того, чтобы противник попал, ГГ должен находиться на одной линии с оружием.
    [attachment=2]
    Проверить это можно через collision_line. Один конец отрезка должен быть на конце ствола, а другой - на той же высоте на каком-то отдалении. Например, можно сделать вот так:
    collision_line(x+image_xscale*77,y,x+image_xscale*400,y,0,0)
    Все понятно?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 13 Июня 2011 в 20:35
    Опять ты все как учитель объясняешь, а я учителей никогда не понимал.  :D
    Но так то понял.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 13 Июня 2011 в 21:01
    ЧЯДНТ, рука всегда смотрит в противоположную сторону ГГ, стреляет всегда влево.
    if instance_exists(o_man) = 1       //Åñëè åñòü ÃÃ
       {
          x = o_man.x       //Öåíòðèðîâàòüñÿ ïî ÃÃ
          y = o_man.y       //Öåíòðèðîâàòüñÿ ïî ÃÃ
    image_xscale=-instance_nearest(x,y,o_man).image_xscale;
    direction=180*image_xscale;


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 13 Июня 2011 в 21:07
    Немного не в тему: нужно подправить конвертер, что-бы ещё и конвертировал из файлов, и ещё было обратное конвертирование. Уже надоели кривые комментарии.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 09:23
    Извиняюсь, ежели таковой вопрос уже задавали, но...
    У меня на экране одновременно присутствуют десятки ходячих экземпляров одного объекта (враги), преследующих персонажа. И при перемещении этого самого персонажа выходит так, что враги "налезают" один на другого. То бишь, вместо кучки из нескольких обектов рядом, у меня выходит кучка объектов, расположенных друг за другом так, что виден лишь верхний из них. Я пытался решить данную проблему при помощи столкновений. Но что-то не вышло, хоть я и не совсем новичок в программировании. Буду благодарен, если кто подскажет...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: CJIADKUU 6Y6AJIEX от 14 Июня 2011 в 10:49
    Объяснять лень) глянь в пример

    http://narod.ru/disk/15905525001/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80.gmk.html

    В примере боты топают к курсору мыши. Используется функция mp_potential_step, в ней можно установить проверку всех объектов.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 11:08
    CJIADKUU 6Y6AJIEX, благодарю.

    - - - - - - - - -

    Проверил, после небольшой доработки работает как надо. Большое спасибо за помощь.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 12:03
    Опять возникла проблема...
    Настроив маску столкновений у спрайта врага, дабы столкновения друг с другом при передвижении у них были исключительно в области ступней (вид игры сбоку) я потерял возможность стрелять им в голову... (да и по корпусу никак)
    Помучался...
    {if (O_Bullet.x>x-20) and (O_Bullet.x<x+20) then 
            {if (O_Bullet.y>y-130) and (O_Bullet.y<y) then
                {
                enemy_health-=75+random(50);
        with (O_Bullet) instance_destroy();
                }
                else
                if (O_Bullet.y<y-130) and (O_Bullet.y>y-165) then
                {
                instance_destroy()
                }
            }
        }
    Это отчасти работает, но работает излишне коряво...
    Помогите, кому не трудно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 14 Июня 2011 в 12:44
    Это работает не всегда правильно, скорее всего, из-за того, что проверяется объект O_Bullet с наименьшим id, по этому не всегда срабатывает (например если столкновение должно произойти не с той пулей у которой минимальный id)

    делай проверку через функцию collision_rectangle()
    collision_rectangle(x1,y1,x2,y2,obj,prec,notme) Проверяет, есть ли столкновение между прямоугольником с указанными противоположными углами и объектами obj. Например, Вы можете использовать это для проверки свободной от препятствий области.

    if (collision_rectangle(x-20,y-130,x+20,y,O_Bullet,false,false)) then
    {
        enemy_health-=75+random(50);
        with (instance_nearest(x,y,O_Bullet)) instance_destroy();
    }
    else
    {
        if (collision_rectangle(x-20,y-165,x+20,y-130,O_Bullet,false,false)) then
        {
            instance_destroy()
            with (instance_nearest(x,y,O_Bullet)) instance_destroy();
        }
    }

    Возможно вместо with (instance_nearest(x,y,O_Bullet)) instance_destroy(); можно написать with (other) instance_destroy();, но это нужно проверить.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: CJIADKUU 6Y6AJIEX от 14 Июня 2011 в 12:49
    А зачем проверять x, если вид игры сбоку? Проще в событие collision пули с врагом поставить код:

    /*Выстрел в голову*/

    if (y>other.y+/*например 100, отцентрируй спрайт врага и подбери значение*/)
    {
        enemy_health-=80
    }

    /*Выстрел в туловище*/

    if (y>other.y+/**/ &&  y<other.y+/**/)
    {
        enemy_health-=50
    }

    /*Выстрел в ноги*/

    if (y<other.y+/**/)
    {
        enemy_health-=20
    }

    Опоздал


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 14 Июня 2011 в 12:53
    А зачем проверять x, если вид игры сбоку?

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

    Т.е. получается что нужно столкновение сделать без использовании маски столкновения, по этому и нужен х.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 13:03
    Dva_Kota, спасибо, все работает лучшим образом.
    Да, маска столкновений спрайта находится в области ступней, чтобы враги могли становиться по нескольку в ряд, (один выше, другой ниже). Из-за этого пули, при проверке столкновения выше данной области, "не видят" врага и летят дальше. Столкновение с врагом происходит лишь в данной области ступней. А этого мне не надо...
    Но все равно спасибо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 14 Июня 2011 в 13:31
    можно временно ставить другую маску:
    [gml=step или end step пули]
    obj_vrag.mask_index = spr_mask_vestulovisch;
    test=instance_place(x,y,obj_vrag);
    obj_vrag.mask_index = spr_mask_tolkonogi;
    test.hits-=damag;
    if(test!=noone) instance_destroy();
    [/gml]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 13:43
    tolich, спасибо, но по-моему метод, предложенный Dva_Kota будет эффективнее.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 16:11
    ЧЯДНТ, рука всегда смотрит в противоположную сторону ГГ, стреляет всегда влево.
    if instance_exists(o_man) = 1       //Åñëè åñòü ÃÃ
       {
          x = o_man.x       //Öåíòðèðîâàòüñÿ ïî ÃÃ
          y = o_man.y       //Öåíòðèðîâàòüñÿ ïî ÃÃ
    image_xscale=-instance_nearest(x,y,o_man).image_xscale;
    direction=180*image_xscale;
    Дак что я делаю не так?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 14 Июня 2011 в 16:31
    Наверное нужно убрать минус в строке image_xscale=-instance_nearest(x,y,o_man).image_xscale;
    А чтобы стрелял дуда куда направлена рука задавай direction пули как у руки.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 17:07
    Наверное нужно убрать минус в строке image_xscale=-instance_nearest(x,y,o_man).image_xscale;
    А чтобы стрелял дуда куда направлена рука задавай direction пули как у руки.
    Мда, теперь только в право стреляет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 14 Июня 2011 в 17:35
    Минус нужно было убрать, потому что спрайт ГГ направлен вправо, а не влево, как у противников.
    У меня там ошибка: вместо "direction=180*image_xscale" нужно написать "direction=90-90*image_xscale". Тогда direction будет равен 0, если xscale будет равен 1, и 180, если xscale будет равен -1. 0° - это вправо, а 180° - это влево, как в тригонометрии.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 14 Июня 2011 в 17:37
    Проверяй image_xscale у руки. Если больше нуля - скорость пули делай положительную, если нет - отрицательную.

    или просто умножать при выстреле скорость пули на image_xscale руки (1 или -1).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 14 Июня 2011 в 18:33
    Так и делается.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 18:34
    Так... Я извиняюсь, если кому надоел...
    Вопрос: как "прилепить" неродную маску столкновений созданному объекту именно в конкретное место спрайта? Например, в самый низ иль верх спрайта.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 14 Июня 2011 в 18:41
    [attachment=1]
    Disregard this.
    "Неродную" нужно сделать того же размера, что исходный спрайт и с тем же ориджином.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 18:48
    Хм... Должно быть я не так объяснил.
    Я имел в виду, как созданному конкретному объекту при создании присваивать маску другого спрайта прямоугольной формы на конкретные координаты уже в процессе игры. То есть, чтобы в зависимости от ситуации данная маска могла перейти на другие координаты. (надеюсь, теперь объяснил понятнее)
    object_set_mask тут вообще пригодится?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 14 Июня 2011 в 18:51
    Если нужна маска отличная от формы спрайта и не стандартный вариант (прямоугольник, круг, ромб), то можно назначить объекту в качестве маски любой спрайт при помощи функции object_set_mask()

    object_set_mask(ind,spr) Устанавливает спрайт для маски объекта с данным индексом. Используйте -1, чтобы спрайт объекта был его маской.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 18:53
    Хм...
    Я знаю. Но как эту маску поместить в конкретные координаты?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 14 Июня 2011 в 19:04
    Если нужна маска отличная от формы спрайта и не стандартный вариант (прямоугольник, круг, ромб), то можно назначить объекту в качестве маски любой спрайт при помощи функции object_set_mask()
    Не, это изменит маску у объекта, а не у экземпляров. У экземпляров же это делается через присваивание нужного спрайта переменной mask_index.
    Я знаю. Но как эту маску поместить в конкретные координаты?
    "Неродную" нужно сделать того же размера, что исходный спрайт и с тем же ориджином.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 19:13
    А координаты-то? Или это я сонный туплю?
    Так... Предположим, у меня есть спрайт s_mask этак 100*100 и объект object со спрайтом 100*500. Исходная маска объекта является спрайтом данного объекта. Мне необходимо, взяв за маску спрайт s_mask, присвоить ее объекту object, так, чтобы, предположим, маска накрывала собой область от 100 до 200 в высоту. А при каком-либо действии, например, через 1000 шагов, поменять ее координаты так, чтобы она накрывала область от 200 до 300 в высоту.
    Извиняюсь, если опять что-то непонятно. Я тут экзамен сегодня сдавал. Уставший и сонный...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 14 Июня 2011 в 19:34
    меняй координаты центра спрайта s_mask


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 19:41
    Все... Наконец, сделал... Dva_Kota, tolich, спасибо за объяснения.
    P.S. Приношу извинения, ежели надоел. Сонный мозг думать нормально не хочет...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 20:16
    И еще на счет проверки гг перед прицелом, так и не  понял куда вставлять:
    collision_line(x+image_xscale*77,y,x+image_xscale*400,y,0,0)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 20:38
    Rowk, попробуй в step противника. Если не ошибаюсь, сработать должно.
    И так, на всякий случай... Я думаю, ты не забыл поставить if?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 20:53
    Rowk, попробуй в step противника. Если не ошибаюсь, сработать должно.
    Ошибка.
    ___________________________________________
    FATAL ERROR in
    action number 1
    of  Step Event
    for object o_enemy:

    COMPILATION ERROR in code action
    Error in code at line 1:
       collision_line (x+image_xscale*77,y,x+image_xscale*400,y,0,0)
                                                                  ^
    at position 61: Wrong number of arguments to function or script.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 20:58
    Если нужна проверка, нет ли какого-либо конкретного объекта на линии пиши
    if !collision_line(x+image_xscale*77,y,x+image_xscale*400,y,*obj*,0,0)
    Где *obj* - объект, которого быть на линии не должно, например o_wall.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 20:59
    Ошибка.
    ___________________________________________
    FATAL ERROR in
    action number 1
    of  Step Event
    for object o_enemy:

    COMPILATION ERROR in code action
    Error in code at line 1:
       collision_line (x+image_xscale*77,y,x+image_xscale*400,y,0,0)
                                                                  ^
    at position 61: Wrong number of arguments to function or script.
    Да, у тебя не хватает объекта, наличие которого на линии должно проверяться.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 21:03
    Ужас короче, столько багов, жду добровольца потестить и  сказать как решить баги, один из багов, гг иногда исчезает когда я в прыжке косаюсь блока, но при этом камера продолжает двигаться на клавиши.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 21:07
    Выложи код. Постараюсь помочь.
    P.S. Если что, для облегчения работы: при написании команды, как например collision_line, в самом низу окна, в котором ты пишешь код, написана структура данной команды. Например, для collision_line: collision_line(x1,y1,x2,y2,obj,prec,notme). Сильно облегчает понимание команды.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 21:09
    Выложи код. Постараюсь помочь.
    P.S. Если что, для облегчения работы: при написании команды, как например collision_line, в самом низу окна, в котором ты пишешь код, написана структура данной команды. Например, для collision_line: collision_line(x1,y1,x2,y2,obj,prec,notme). Сильно облегчает понимание команды.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 21:15
    Скажи, что там тебе не нравится. Чтобы долго код не обыскивать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 21:17
    Скажи, что там тебе не нравится. Чтобы долго код не обыскивать.
    Поведение противника, он должен стрелять только когда я на уровне прицела.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 21:34
    Ну, собственно...
    1)Я ошибся, посоветовав запихнуть команду if !collision_line(x+image_xscale*77,y,x+image_xscale*400,y,*obj*,0,0) в step. Извиняюсь. Удаляй ее оттуда.
    2)В скрипте scr_bot_ai, что у тебя есть, после строки проверки дистанции до главгероя
    if distance_to_object(o_man) <400
    вместо
    if !collision_line(x,y,o_man.x,o_man.y,o_block,false,false)
    пиши
    if (!collision_line(x,y,o_man.x,o_man.y,o_block,false,false)) and ((collision_line(x+image_xscale*77,y,x+image_xscale*400,y,o_man,0,0)) or (collision_line(x-image_xscale*77,y,x-image_xscale*400,y,o_man,0,0)))
    .
    Ну, вроде как с выстрелами, когда главгерой на уровне прицела врага, разобрались...

    P.S. Если взять во внимание разницу в размерах главгероя и противника, я так понимаю, он должен стрелять, когда главгерой подпрыгнет? Или противники в будущем будут такого же размера?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 21:38
    Это будет один из гг, для этого гг будут не стреляющие враги, высота человека будет в пределах 75 pix, и еще есть глюк, иногда в прыжке при косании угла блока, гг исчезает.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 14 Июня 2011 в 21:47
    Что то ты слегка не верно сказал, враг стреляет только вправо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 21:50
    Что то ты слегка не верно сказал, враг стреляет только вправо.
    Да? Извиняюсь. Я тут сонный чуток. Сейчас гляну.

    - - - - -

    Все понятно. У тебя ошибка в step'e объекта o_enemyusp.
                /*if o_man.x < x          //Если ГГ левее х
                    {
                        image_yscale = -1       //То отразить изображение по у
                    }
                else                //иначе
                    {
                        image_yscale = 1            //Вернуть первоначальное отражение
                    }*/
    Зачем ты сделал эту часть комментарием? Надо убрать /* и */.

    - - - - -

    Еще...
    Самый простой, на мой взгляд, способ - сделать так:
                if image_yscale = 1 
                    {
                        e = instance_create(x + lengthdir_x(77,direction+8),y + lengthdir_y(77,direction+8),o_enbullet)
                        instance_create(x + lengthdir_x(77,direction+8),y + lengthdir_y(77,direction+8),o_enflare)
                        instance_create(x + lengthdir_x(63,direction+8),y + lengthdir_y(63,direction+8),o_shell)
                        e.direction = 0
                    }
                if image_yscale = -1
                    {
                        e = instance_create(x + lengthdir_x(77,direction-8),y + lengthdir_y(77,direction-8),o_enbullet)
                        instance_create(x + lengthdir_x(77,direction-8),y + lengthdir_y(77,direction-8),o_enflare)
                        instance_create(x + lengthdir_x(63,direction-8),y + lengthdir_y(63,direction-8),o_shell)
                        e.direction = 180
                    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: CJIADKUU 6Y6AJIEX от 14 Июня 2011 в 22:25
    Теперь и я нуждаюсь в помощи) Проблема:

    У меня есть объект (object_0) с заданными direction и speed (предположим, что объект просто "летает" по экрану). Ещё есть другой объект (object_1), в степе у которого код:

    x=object_0.x
    y=object_0.y

    Проблема состоит в том, что object_1 не успевает за object_0. Такая же фигня и с draw_sprite. Подскажите решение, пожалуйста...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 14 Июня 2011 в 22:31
    CJIADKUU 6Y6AJIEX, поменяй step на end step. Должно помочь.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: CJIADKUU 6Y6AJIEX от 14 Июня 2011 в 22:33
    Да, помогло, спасибо! Как всё просто оказалось ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 15 Июня 2011 в 00:08
    Внес ряд поправок. Исправил стрельбу, поворот врагов, проваливание ГГ сквозь блоки. Отразил спрайт врага по горизонтали, чтобы не было путаницы.
    Старайся никогда не использовать точную проверку столкновений. ГГ проваливался из-за того, что менялась маска спрайта.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 15 Июня 2011 в 00:15
    Внес ряд поправок. Исправил стрельбу, поворот врагов, проваливание ГГ сквозь блоки. Отразил спрайт врага по горизонтали, чтобы не было путаницы.
    Старайся никогда не использовать точную проверку столкновений. ГГ проваливался из-за того, что менялась маска спрайта.
    Благодарю, и как тебя благодарить после этого, не только словом же надо, так не честно. :D
    Так и осталась одна не понятная вещь, при прыжке будь то рука или оружие отстают от гг.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 15 Июня 2011 в 00:26
    Благодарю, и как тебя благодарить после этого, не только словом же надо, так не честно. :D
    Ерунда, я сам начинал с этого движка, поэтому хорошо его знаю.
    Форумы для того и нужны, чтоб помогать друг другу, верно? А ты подаешь надежды, в отличии от многих новичков, и мне приятно тебе помогать.
    Так и осталась одна не понятная вещь, при прыжке будь то рука или оружие отстают от гг.
    Решение написали буквально несколькими постами ранее.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: G_CCompany от 15 Июня 2011 в 01:55
    Так и осталась одна не понятная вещь, при прыжке будь то рука или оружие отстают от гг.
    Событие создания пушки надо поставить в End Step.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 16 Июня 2011 в 13:52
    Здравствуйте. Я делаю рпг с видом сверху(без комментариев),  и тут у меня такая проблема. Как сделать что бы при надевании брони часть урона уходила. Т.е. если я надеваю этот объект, то любой урон - 5%.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 16 Июня 2011 в 14:00
    Здравствуйте. Я делаю рпг с видом сверху(без комментариев),  и тут у меня такая проблема. Как сделать что бы при надевании брони часть урона уходила. Т.е. если я надеваю этот объект, то любой урон - 5%.
    [move]Щас огион тебе врежет за новую тему с лёгким вопросом.[/move]
    Тебе сюда (http://gmakers.ru/index.php?topic=5335.0).
    Огиону: В FAQ этого нет.


    Как вариант делить этот урон на 100, и потом умножать на переменную armor. По умолчанию она 100, но с бронёй должно быть 95.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 16 Июня 2011 в 14:11
    Не-а, я просто ее перенес.
    Так как полученное значение может быть дробным, - а нам совершенно не надо, чтобы у ГГ было 87.5863795 жизней, - это значение нужно округлять.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 16 Июня 2011 в 14:21
    Здравствуйте. Я делаю рпг с видом сверху(без комментариев),  и тут у меня такая проблема. Как сделать что бы при надевании брони часть урона уходила. Т.е. если я надеваю этот объект, то любой урон - 5%.
    [move]Щас огион тебе врежет за новую тему с лёгким вопросом.[/move]
    Тебе сюда (http://gmakers.ru/index.php?topic=5335.0).
    Ок


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 16 Июня 2011 в 14:35
    Как заставить lengthdirы работать по эллипсу? Желательно, что бы в формуле выражались высота и ширина.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 16 Июня 2011 в 14:37
    Как заставить lengthdirы работать по эллипсу? Желательно, что бы в формуле выражались высота и ширина.
    Использовать разные значения len.
    Например,
    //2KA>B0 - высота
    //H8@8=0 - ширина

    x=lengthdir_x(H8@8=0,direction);
    y=lengthdir_y(2KA>B0,direction);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 17 Июня 2011 в 12:54
    Здравствуйте. Я делаю рпг с видом сверху(без комментариев),  и тут у меня такая проблема. Как сделать что бы при надевании брони часть урона уходила. Т.е. если я надеваю этот объект, то любой урон - 5%.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 17 Июня 2011 в 13:13
    Лучше использовать переменную, вроде AC (armour class), смысл которой в том, что при отнимании повреждений из здоровья персонажа этот урон умножается на (100-AC)/100. При надевании брони надо устанавливать AC в 5, при снятии - снова в 0.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 17 Июня 2011 в 17:30
    II.2.11. Как сделать, чтобы игрок запрыгивал на платформы снизу?
    Ответ: Идея проста: выполнять событие столкновения с платформой только если игрок находится выше платформы. Переменная bbox_bottom - нижняя граница прямоугольника, ограничивающего спрайт объекта. bbox_top, соответственно, верхняя. Можно было бы просто сравнить bbox_bottom игрока и bbox_top платформы - но часто бывает так, что событие столкновения вызывается уже тогда, когда игрок непосредственно пересекается с платформой, и проверка может не сработать. Потому, поверку в событии столкновения игрока с платформой можно записать так:
    if bbox_bottom-vspeed <= other.bbox_top // Если в предыдущей позиции игрок был выше платформы, а теперь столкнулся с ней, то...
        {
            // Выполняем события столкновения... (можно вернуть игрока на предыдущую позицию, и с помощью move_contact_solid сдвинуть его вплотную к платформе)
        }

    Это из FaQ.
    Но оно не работает, если объект блока твердый. Что посоветуете?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 17 Июня 2011 в 17:39
    Не делать блоки твердыми, иначе будет застревать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 17 Июня 2011 в 18:01
    Но а как тогда сделать нормальное столкновение сверху, с нетвердым блоком?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 17 Июня 2011 в 18:07
    x=xprevious; y=yprevious; move_contact_all(direction,speed);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 17 Июня 2011 в 18:09
    Нет, не пашет.

    Решил проблему. Скажите, это индусский код или довольно-таки разумно:
    Твердые блоки. Если игрок касается блока не сверху - он становится нетвердым и запускается аларм, по которому он снова станет твердым.
    Это работает, не застряет, падений вниз, которые могли быть, пока нет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Vasenkov от 17 Июня 2011 в 20:10
    Драсьте господа мейкеры! Вопрос выскочил как таковой очень важный.  Допустим у меня есть объект obj_blah, есть ещё объект за которым следует вид. obj_blah всегда находится в одном и том же месте относительно вида. Но как сделать чтобы на экране он занимал ту же позицию при изменении view_angle? Т.е. при вращении экрана


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 17 Июня 2011 в 20:13
    Сдвигать obj_blah или координаты вида через lengthdir, компенсируя вращение вида.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Vasenkov от 17 Июня 2011 в 20:14
    Вот как-раз таки в этих lengthdir'ах постоянно путаюсь и теряюсь :crazy:
    ______
    Хотя всё, разобралса)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Vasenkov от 18 Июня 2011 в 00:09
    Тогда другой вопрос. А можно каким-нибудь образом контролировать(менять) координаты мыши, а не только проверять их?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 18 Июня 2011 в 00:12
    window_view_mouse_set


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Vasenkov от 18 Июня 2011 в 01:45
    То что надо! Я даже открыл для себя коды window_  8)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GraboiD от 18 Июня 2011 в 14:10
    Привет, у меня возник вопрос, как сделать две пушки в двух руках сразу (что то вроде 2х писталетов) и что бы пули вылетали ровно из двух этих стволов, за помощь буду признателен...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июня 2011 в 14:56
    Не буду подсовывать тебе готовое решение. Я тебя подтолкну в нужную сторону, а дальше думай сам. Умеешь пользоваться lengthdir'ами?
    Вот смотри. У нас есть центр, вокруг которого все будет вращаться. Есть главная ось, параллельно которой будут вылетать пули, она будет задавать направление стрельбы. Из центра откладываем равные отрезки влево и вправо под углом 90° к главной оси, это будут плечи. Длина отрезков будет определять расстояние между пистолетами. Теперь из этих плеч откладываем еще два отрезка параллельно главной оси (или перпендикулярно оси плеч, без разницы). Эти и будут точки, из которых будут вылетать пули.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 18 Июня 2011 в 14:57
    И что мы тебе ответим? Ты хотя бы напиши:
    1. Какая игра. Фпс, платформер, тдс, еще что-то.
    2. Как у тебя реализован один пистолет.
    3. Почему сейчас они вылетают неровно?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 18 Июня 2011 в 15:42
    window_view_mouse_set
    Кто-бы не придумывал названия функций для гамака (я знаю это великий и могучий Марк Овермарс), он их плохо структурировал. Если-бы все функции мышки начинались с mouse_, то было-бы гораздо проще найти нужную функцию. Мне уже надоело писать surface_set_target и surface_reset_target, хотя было-бы разумнее surface_target_set и surface_target_reset. Для меня window_view_mouse_set это чуть ли не недокументированная возможность.

    Я молчу про SYMBOL_CHARSET, DEFAULT_CHARSET и RUSSIAN_CHARSET.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 18 Июня 2011 в 15:48
    Угу. Обычно, если не помнишь точного написания - помогает автодополнение. А тут и оно не поможет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июня 2011 в 16:27
    Так что-то изменять уже поздно. Обратная совместимость же.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 18 Июня 2011 в 18:59
    Наконец опять принялся за игру, что нужно изменить чтобы сменить положение руки.
         
     x = o_man.x 
     y = o_man.y       


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июня 2011 в 19:16
    "y=o_man.y+10", например.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Rowk от 20 Июня 2011 в 02:40
    ЧЯДНТ, в столкновении шара с врагом создается взрыв, но он не ранит.
    c = instance_create(x + lengthdir_x(0,direction),y + lengthdir_y(0,direction), o_plasma_explosion) 
    c.damage = damage
    with (all)
        {
          if (distance_to_object(other) < 70) instance_destroy();
        }

    instance_destroy()


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 20 Июня 2011 в 09:11
    Ну строго говоря, этот код и не должен ранить, по идее он должен убрать вообще все объекты в радиусе 70 пикселей. Только вот ЕМНИП, слово other работает только как указатель на второй объект, с которым произошёл коллижн, а не на все остальные объекты. Так что если второй объект ближе, чем 70 пикселей к первому, то этот код уничтожит всё в комнате. Можешь вот так попробовать, например
    c = instance_create(x + lengthdir_x(0,direction),y + lengthdir_y(0,direction), o_plasma_explosion) ;
    c.damage = damage;
    if (distance_to_object(other) < 70) { with (other) { instance_destroy(); } }
    instance_destroy();


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 20 Июня 2011 в 21:07
    Внутри оператора конструкции with имя other ссылается на тот объект, который до (и после) этой конструкции именовался self. Так что ты не прав, это именно уничтожение всех объектов в радиусе 70 относительно первого объекта (а не второго).

    К слову, вычислять lengthdir от расстояния 0 - стрелять по воробьям из пушек. Независимо от направления это всегда будет 0.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Vasenkov от 21 Июня 2011 в 15:11
    Такой вот вопрос. А как можно в GM сделать... луч!? 8)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 21 Июня 2011 в 15:28
    http://gmakers.ru/index.php?topic=4312.0
    Посмотри пример мгновенных пуль. Луч - это то же самое.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Vasenkov от 21 Июня 2011 в 15:59
    Именно для пуль мне луч и нужен был ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 21 Июня 2011 в 17:39
    Можно ли сделать что-то подобное?

    Массив с объектами:

    qqq[0]=o_pers
    qqq[1]=o_enemy
    qqq[2]=o_wall
    ...
    qqq[n]=blabla

    А потом проверять столкновение, типа:

    collision_point(x,y,qqq[all],1,1)

    Т.е. мне нужно проверить столкновение с определенным набором объектов. Такой способ или аналогичный реален?
    Или может проверять, есть ли в имени объекта, например "enemy"?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 21 Июня 2011 в 18:05
    Мне нужно проверить столкновение с определенным набором объектов. Такой способ или аналогичный реален?
    Реален: назначь им всем общего предка и проверяй столкновения с этим предком.
    К слову, all=-4, обращение к массиву с отрицательным индексом. :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 21 Июня 2011 в 18:19
    Можно так:
    for(i=0,i<=obj_number,i+1)
    {
    if (collision_point(x,y,qqq[i],1,1)) do_blah_blah_blah();
    }
    obj_number - размер массива.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 21 Июня 2011 в 18:49
    Спасибо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 22 Июня 2011 в 18:15
    помогите сделать fps с помощью lib библиотеки SBL 3D ultimate v3.0 если что я до них другие игры создавал

    пробовал на примерах библиотеки SBL 3D ultimate v3.0 создавать новые комнаты и текстуры пола,стен и неба менял но хочется своего монстра (там красные чюдики и всё)да и там при нажатии f1 выскакивает инфа об игре а мне надо на неё поставить сейв
    а теперы вопросы
    1 как приучить противника стрелять в меня (преследование спишу с примеров библиотеки SBL 3D ultimate v3.0)
    2 как сделать внизу инфобар (жизни ,убийства ,здоровье гг)

    за дельные советы обещаю плюс (можно писать советы кодами но тогда обязательно указывать объект и событие)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Satan'sCry от 22 Июня 2011 в 18:30
    Мой совет - Не юзай ты Либы! Учи Код.

    Могу подкинуть примеров, пиши в личку.(Код)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 22 Июня 2011 в 18:45
    Во-первых, почитай Faq - http://gmakers.ru/index.php?topic=4312.0 .
    Во-вторых, начинать с фпс, не зная практически ничего, и не имея опыта - бессмысленно. Но не мне тебя отговаривать. Я понимаю, что всем лень учиться и хочется поскорее создать свой Крайзис.
    Но если передумаешь - начни с чего-то попроще и не трехмерного.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 22 Июня 2011 в 19:01
    я уже делал платфотмеры и тдс я не совсем новичок и учиться же надо


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 22 Июня 2011 в 19:07
    другая просьба
    перевести все (или самые главные для fps) скрипты начинающиеся на d3d


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 22 Июня 2011 в 19:08
    другая просьба
    перевести все (или самые главные для fps) скрипты начинающиеся на d3d
    В каком смысле перевести?
    Ты пытаешься сделать FPS не зная английского?(http://www.cncseries.ru/forums/style_emoticons/def/facepalm2.gif)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 22 Июня 2011 в 19:12
    у меня с английским туго были бы скрипты на немецком понял-бы(я немецкий учу)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 22 Июня 2011 в 19:13
    Оу, извиняюсь. Прочитал в первом посте "если что я до них другие игры не создавал", как многие пишут.
    Русскоязычных статей почти и нет. Если с английским нормально - смело ищи статьи как по библиотеке, так и просто про 3д в гамаке.

    Никогда не оставляй несколько сообщений подряд.
    Перевести - в смысле описание функций?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 22 Июня 2011 в 19:17
    макасин да


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 22 Июня 2011 в 19:25
    Русскоязычную справку никто не отменял.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Satan'sCry от 22 Июня 2011 в 19:33
    Ты пытаешься сделать FPS не зная английского?(http://www.cncseries.ru/forums/style_emoticons/def/facepalm2.gif)
    (http://www.cncseries.ru/forums/style_emoticons/def/facepalm2.gif)(http://www.cncseries.ru/forums/style_emoticons/def/facepalm2.gif)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 22 Июня 2011 в 20:18
    Всем привет! Мне нужна помощь в создании космической стрелялки...  :hmm: . В общем как сделать чтобы игровой экран двигался сам снизу в верх(что то типо движущейся платформы. Таких игр много достаточно и я надеюсь что вы поможете. Зарание спс!  :beer:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 22 Июня 2011 в 20:22
    http://gmakers.ru/index.php?topic=4312.0 - здесь есть много ответов.
    http://gmakers.ru/index.php?topic=5335.0 - сюда надо задавать вопросы.
    http://gmakers.ru/index.php?topic=5068.0 - а тут самое главное, прочти!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 22 Июня 2011 в 20:27
    Спс! :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 22 Июня 2011 в 21:04
    проблема с выстрелами
    в объекте игрока при нажатии на лкм стоит код
    //Creates a new bullet.
    //Key Press and Key Release commands are easiest to do like this.
    //Keyboard commands are better to do in the Alarm events
    new_bullet = instance_create(x+6*cos(direction*pi/180),y-6*sin(direction*pi/180),obj_FPS_bullet)
    new_bullet.direction = directionгерой
    герой просто не стреляет
    что не так?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 22 Июня 2011 в 21:15
    x+6*cos(direction*pi/180)
    :D

    Думаю, просто не существует объекта под именем obj_FPS_bullet


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 22 Июня 2011 в 21:34
    У меня одна проблемка... Может кто нибуть объяснить поточнее или дать пример (из faq) II.4.16. Как сделать бесконечную комнату? Движущуюся вниз/вверх. для космической стрелялки или ещё чегонибуть :) .Зарание спс!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 22 Июня 2011 в 21:46
    Для начала, все враги должны лететь со скоростью N, ± несколько пикселей.
    Ещё можно в комнате в Backgrounds значение Ver. Speed установить на этот-же N (если надо двигать фон).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 22 Июня 2011 в 21:52
    То есть врагов надо вынести за карту и сделать им движение?И ещё одно как сделать если объект 1 (но на карте их много) умирал только тот которого я убил а не все сразу? :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 22 Июня 2011 в 21:53
    c = instance_create(x + lengthdir_x(0,direction),y + lengthdir_y(0,direction), o_plasma_explosion) 
    c.damage = damage
    with (all)
        {
          if (distance_to_object(other) < 70) instance_destroy();
        }
    instance_destroy()
    К слову, если это столкновение шара с врагом, то также будут уничтожены шар, враг и взрыв плазмы, так как они все ближе 70.
    И ещё одно как сделать если объект 1 (но на карте их много) умирал только тот которого я убил а не все сразу? :)
    Смотри туториалы Марка Овермарса FPS и Platform. там сделано именно так.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 22 Июня 2011 в 21:54
    Можно поинтересоваться, какой код ты используешь?

    EDIT: Пост толича появился ВНЕЗАПНО.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 22 Июня 2011 в 22:57
    Можно поинтересоваться, какой код ты используешь?

    EDIT: Пост толича появился ВНЕЗАПНО.
    Кароч вот что у меня за белеберда) сам посматри


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 22 Июня 2011 в 22:58
    За одно если сможешь то помоги настроить врагов) :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 23 Июня 2011 в 01:54
    Прочёл все 37 страниц темы. Итак...

    У меня у самого вопрос, элементарный, но он меня заинтересовал.
    Какими способами можно заменить стандартную гравитацию? Вот один из примеров:
    [gml=Player :GM006:]
    if place_free(x,y+1)
    vspeed+=0.5;
    [/gml]
    Этот вопрос ещё актуален?
    В любом случае, я как-то раз писал пример платформера без использования стандартных механизмов передвижения, которые меня буквально свели с ума.
    Если использовать переменную gravity, код в событии step персонажа мог бы выглядеть так:

    if place_free(x, y + 1)
    {
        gravity = gravity_amount;
    }
    else
    {
        gravity = 0;
        
        if keyboard_check(vk_up) // Опционально. Добавлено для наглядности.
        {
            vspeed = -jump_speed;
        }
    }

    С использованием собственных механизмов передвижения возникает потребность в нескольких новых переменных, которые нужно определить в create event:

    vertical_speed = 0;  // Это текущая вертикальная скорость игрока. Если скорость отрицательная - игрок движется вверх (его y координата уменьшается), если положительная - вниз.
    jump_speed_max = 15; // Это максимальная скорость прыжка (чем больше макс. скорость - тем выше прыгнет игрок). Снова добавлена для наглядности.
    grav_speed_max = 32; // Максимальная скорость падения. На самом деле, можно было бы обойтись и без этой переменной, но тогда есть риск, что игрок будет падать очень-очень быстро.
    grav_amount    = 1;  // Сила тяжести (константа (постоянная величина), отвечающая за ускорение тела во время падения).
    И аналог кода в step event с переменной gravity примет такой вид:

    if place_free(x, y + 1) // Если игрок находится в воздухе, то...
    {
        vertical_speed += grav_amount; // Увеличиваем скорость падения (или уменьшаем скорость прыжка, что аналогично)
        if abs(vertical_speed) > grav_speed_max // Если вертикальная скорость игрока по модулю больше макс. скорости падения, то...
            vertical_speed = grav_speed_max * sign(vertical_speed); // Уменьшаем её до макс. скорости падения, не изменяя при этом знак
    }
    else
    {
        if keyboard_check(vk_up)
        {
            vertical_speed = -jump_speed_max; // Если игрок прыгнул - изменяем вертикальную скорость
        }
    }
    Однако, игрок ещё должен двигаться под воздействием переменной vertical_speed. Думаю, этот код можно было бы поставить в end step event:

    if abs(vertical_speed) > 0 // Если игрок падает или прыгает
    {
        if place_free(x, y + vertical_speed) // Если игрок может сдвинуться вниз / вверх
        {
            y += vertical_speed; // Сдвигаем его
        }
        else
        {
            var dir;
            if vertical_speed < 0 // Определяем направление игрока
                dir = 90;
            else
                dir = 270;
            move_contact_solid(dir, vertical_speed); // Пододвигаем его к препятствию
            vertical_speed = 0; // Обнуляем скорость
        }
    }
    Пока я копировал и редактировал код, я решил, что стоит выложить и сам пример.
    Вот и он: [attachment=1]

    Решил проблему. Скажите, это индусский код или довольно-таки разумно:
    Твердые блоки. Если игрок касается блока не сверху - он становится нетвердым и запускается аларм, по которому он снова станет твердым.
    Это работает, не застряет, падений вниз, которые могли быть, пока нет.
    Да, ИМХО, это так называемый "индусский" код. Впрочем, ты можешь использовать его и дальше, никому от этого худо не станет  :)

    P.S: Для ZitRo: осталось всего несколько дней. Уже скоро основные проблемы с сурфейсами должны отпасть.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июня 2011 в 12:47
    У меня такая проблема...
    Возможно ли вообще на GM какие-либо действия повесить на кнопки типа " ' ", " ; ", " , " и в том же духе?
    Я пытался экспериментировать и пришел к выводу, что нельзя. Но я могу ошибаться.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 23 Июня 2011 в 12:55
    keyboard_check(keycode);
    //keycode - клавиатурный код клавиши.

    Чтобы его получить, можно, например, при нажатии любой кнопки отображать код этой кнопки:
    show_message(string(keyboard_lastkey));//правда, может перепутал название переменной

    Нажимаешь свою кавычку, получаешь код, ставишь его в проверку нажатия (либо записываешь в переменную/файл с настройками, потом считываешь и подставляешь в проверку нажатия переменную).
    //symbols
    186: ;
    187: =
    188: ,
    189: -
    190: .
    191: /
    192: ` (Ё)
    219: [
    220: \
    221: ]
    222: '
    226: \


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июня 2011 в 13:01
    Tkachov, благодарю. +
    Мда, надо набираться опыта. Одна логика тут не пройдет. Спасибо еще раз.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 23 Июня 2011 в 13:31
    Кстати: CustoMaze (http://www.yoyogames.com/games/152564). Кроме примера "настройка управления", там есть скриптик, возвращающий названия кнопок по их коду.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июня 2011 в 13:54
    tolich, пригодится, спасибо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 23 Июня 2011 в 17:05
    прошу помощи со стенами монстрами ипрочим

    по неизвестной причине у меня отображаются только пол потолок и оружие подскажите выход


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 23 Июня 2011 в 17:16
    Всем привет опять. Я хотел спросить где скачать прогу для конвертирования игр для psp? на yoyo я чёт не могу найти...Заранее спс! :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 23 Июня 2011 в 17:25
    new_bullet.direction = directionгерой
    Вот именно так и написано??

    по неизвестной причине у меня отображаются только пол потолок и оружие подскажите выход
    Найди причину. Или опиши всю ситуацию.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 23 Июня 2011 в 17:28
    Здороваться в каждом сообщении не нужно, это форум, а не чат.
    Прога? GameMaker называется. На уоуо и продается.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 23 Июня 2011 в 17:34
    Здороваться в каждом сообщении не нужно, это форум, а не чат.
    Прога? GameMaker называется. На уоуо и продается.
    у меня есть game maker 8.0 pro там только можно в exe файл


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 23 Июня 2011 в 17:40
    Если ты его купил - бесплатно обнови до 8.1.
    Если нет - купи 8.1.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 23 Июня 2011 в 17:55
    Всем привет опять. Я хотел спросить где скачать прогу для конвертирования игр для psp?
    Нигде. Все инструменты для конвертирования YoYoGames пока что держит у себя.
    Потом, видимо, они выпустят более дорогую версию для создания мультиплатформенных игр.
    Все, что есть на данный момент - это конвертер игр, сделанных на GM6 (!), в Java. Неофициальный, конечно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 23 Июня 2011 в 18:03
    new_bullet.direction = directionгерой
    Вот именно так и написано??

    по неизвестной причине у меня отображаются только пол потолок и оружие подскажите выход
    Найди причину. Или опиши всю ситуацию.

    с выстрелами я разобрался а код рисования стены могу выложить


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 23 Июня 2011 в 23:50
    Нигде. Все инструменты для конвертирования YoYoGames пока что держит у себя.
    Потом, видимо, они выпустят более дорогую версию для создания мультиплатформенных игр.
    Все, что есть на данный момент - это конвертер игр, сделанных на GM6 (!), в Java. Неофициальный, конечно.

    Кто-то же говорил, что есть два вида лицензии, кроме лайта, нет?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 24 Июня 2011 в 00:17
    Где?
    http://store.yoyogames.com/browse?platform=9


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Сол от 25 Июня 2011 в 12:43
    Какой скрипт нужно написать, чтобы программа задала вопрос (к примеру, "сколько тебе лет?") и ответ введённый в строку стал переменной (к примеру, "let"). :-\


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 25 Июня 2011 в 12:50
    get_integer(str,def) Спрашивает у игрока число в диалоговом окне. str - сообщение. def – число, показанное по умолчанию.
    get_string(str,def) Спрашивает игрока строку в диалоговом окне. str - сообщение. def – строка, показанная по умолчанию.

    Если нужно в переменную записать число то так:
    let=get_integer('Сколько тебе лет?',0)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 25 Июня 2011 в 12:51
    http://gmakers.ru/gamemaker_help/source/files/407_00_splash.php


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Сол от 25 Июня 2011 в 12:53
    Спасибо!!!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 26 Июня 2011 в 12:24
    Хм... Теперь у меня такая проблема, которую я не могу решить самостоятельно...
    Я задаю передвижение объекту врага функцией mp_potential_step(target.x,target.y,1,0).
    Враг идет и все вроде бы в порядке... Пока он не столкнется с каким-либо, абсолютно любым твердым предметом, будь это даже другой враг. И после столкновения начинает "танцевать", то есть крутиться вокруг своей оси с большой скоростью...
    Прошу указать мне, в чем моя ошибка...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Satan'sCry от 26 Июня 2011 в 13:00
    Ошибка в использовании этого движения =)
    Проблема функции как раз в столкновениях. Либо делай врагов без Solid , либо
    делай свой ИИ. Еще можно сделать как нибудь уровень без Solid.

    ПыСы
    А у тебя ТДС?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 26 Июня 2011 в 13:12
    BlackSatan, да, TDS. Что ж... Спасибо за совет, попробую...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Satan'sCry от 26 Июня 2011 в 13:33
    Поищи примеры для ТДС ИИ, или попробуй сделать сам.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 26 Июня 2011 в 13:56
    Хм... Надо будет очень много думать...
    Благодарю еще раз за указание моей ошибки.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 27 Июня 2011 в 01:12
    Народ. А ктонибуть может сказать или дать пример как сделать щит(космическая стрелялка-корабль сталкиваеться с предметом и вокруг него на 10 секунд появляеться щит а потом исчезает)и 2- куда можно выложить свои проэкты ? :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 27 Июня 2011 в 01:20
    В Сreate задаешь переменную равную true, при столкновении с объектом меняешь ее на false и устанавливаешь alarm[0] на какое-то количество шагов. в Draw, если переменная равна false, рисуешь спрайт щита. При попадании в корабль снарядов, перед тем как нанести урон проверяй переменную, если она равна true - наносим урон, если нет - не наносим. В событии Alarm0 меняешь переменную на true.


    Проекты в разработке (http://gmakers.ru/index.php?board=16.0)
    Законченные проекты (http://gmakers.ru/index.php?board=15.0)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 27 Июня 2011 в 02:02
    Как-то нелогично использовать false, если щит включен.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 27 Июня 2011 в 02:47
    Я подразумевал "можно ли наносить урон" true - можно наносить урон, false -нельзя. А вообще ведь без разницы что подразумевать под treu: включен ли щит, или можно ли наносить урон. :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 27 Июня 2011 в 10:25
    Но лучше всё же true значит "можно наносить урон". Тогда если 0.5, то наносится половина урона, 2 - двойной урон, -1 вместо урона чинит. И таких ситуаций можно добавить бонусами разными.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: QAZWS от 28 Июня 2011 в 00:35
    Подскажите, как сделать ,чтобы капли падали постоянно?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 28 Июня 2011 в 00:40
    Какие капли?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 28 Июня 2011 в 01:12
    Подскажите, как сделать, чтобы капли падали постоянно?
    1) Создавать эффект дождя на каждом шаге. Да, в самом начале дождя не будет, так как он появляется сверху, и пока он ещё долетит до земли…
    2) Не использовать эффект дождя, использовать частицы-линии - в качестве побочного эффекта, правильно задав чейнджеры, сделать эффектные брызги,
    3) Также можно это сделать на объектах, но, увы, не так эффективно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: it_is_good от 28 Июня 2011 в 11:50
    Привет, форумчане. Вот столкнулся с такой проблемкой на GM 8.1. Когда пытаюсь прочитать из ini файла русский текст, то он его не отоброжает, хотя на простой восьмерке все видно.
     Вот пример выложил... Может кто знает, в чем проблема


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 28 Июня 2011 в 12:09
    В GM8.1 проблемы с кириллицей. Пока что решаем так: пишем в файле русские символы, переведенные в ASCII. Для этого можно использовать конвертер (http://gmakers.ru/index.php?topic=4312.msg58850#msg58850), написанный Dukat863.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: it_is_good от 28 Июня 2011 в 12:33
    Спасибо за ответ. А вообще они собираются в ЭТОЙ версии решать проблему?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 28 Июня 2011 в 13:54
    На багтрекере есть запись об этом. Обещали исправить. Пока что никаких новостей на эту тему нет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 28 Июня 2011 в 15:02
    Поняв причину бага после просмотра исходников GM8.1, я понял что при нажатии клавиш в редактор кода посылается символ 0x041B (Л в юникоде), а редактор урезает этот 0x04xx, превращая его в 0x1B (!). Из этого следует, что функции обработки кода (а возможно и сам код) всё ещё работают с форматом UTF-8. Или просто забыли убрать этот [sarcasm]кастратор юникода[/sarcasm], но тогда это бы исправили сразу же.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 28 Июня 2011 в 15:28
    Поняв причину бага после просмотра исходников GM8.1, я понял что при нажатии клавиш в редактор кода посылается символ 0x041B (Л в юникоде), а редактор урезает этот 0x04xx, превращая его в 0x1B (!).
    Нет, неправильно, при сохранении/загрузке символы преобразуются в управляющие, цифры и латинские буквы.
    Из этого следует, что функции обработки кода (а возможно и сам код) всё ещё работают с форматом UTF-8.
    С UTF16. И это не формат, а кодировка символов.
    Или просто забыли убрать этот [sarcasm]кастратор юникода[/sarcasm], но тогда это бы исправили сразу же.
    Никто и не декларировал работу с кодировками, отличными от 1252, а она при таком "обрезании" как раз так сохраняется.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 17:08
    Извиняюсь если подобная тема была...я её может не заметил..
    так вот в чем вопрос подскажите мне пожалуйста как в Game Maker сделать так, чтобы когда главный герой...или же что либо еще после того как собрал все предметы... или уничтожил всех монстров и т.д переходил на следующий уровень. Заранее спасибо :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ハツノイド от 28 Июня 2011 в 17:31
    Нужно создать переменную, которая отвечает за количество собранных предметов.

    В моем понимании это выглядит так:

    if collect = collectmax then функция перехода на след. уровень & collect = 0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 28 Июня 2011 в 17:35
    Лучше проверять instance_number(obj_predmet)==0.
    Это если собранные предметы уничтожаются, как и убитые враги.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 17:50
    а событие какое :-[


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 28 Июня 2011 в 18:00
    Или Step объекта, собирающего/убивающего, или Destroy собираемого/разрушаемого (хотя, в последнем случае надо сравнивать с 1, а не с 0, ведь он еще есть).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 18:01
    спасибо)) :)еще раз


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 18:24
    почему то пишет что синтаксическая ошибка instance_number(obj_predmet)==0 в месте после скобок :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 28 Июня 2011 в 18:36
    почему то пишет что синтаксическая ошибка instance_number(obj_predmet)==0 в месте после скобок :(
    Может лучше целиком напишешь ошибку? Скорее всего нету объекта obj_predmet
    unexpected symbol in expression
    (http://www.cncseries.ru/forums/style_emoticons/def/facepalm2.gif)А целиком, всё сообщение об ошибке?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 18:42
    unexpected symbol in expression


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 28 Июня 2011 в 19:05
    скорее всего, пропущен if


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 19:11
    дукат извини не так понял вот целиком ошибка FATAL ERROR in
    action number 1
    of  Step Event
    for object блок:

    COMPILATION ERROR in code action
    Error in code at line 1:
       instance_number(obj_predmet)==0
                                  ^
    at position 29: Unexpected symbol in expression.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 28 Июня 2011 в 19:19
    пропущен if


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 28 Июня 2011 в 19:21
    [psychic]Ты вписал только строчку "instance_number(obj_predmet)==0", конечно-же она работать не будет. Нужно написать что-то вроде "if (instance_number(имя_предмета_запятая_который_ты_собираешь)) {все_предметы_собраны_запятая_переходим_на_следующий_уровень_слэш_конец_игры}"[/psychic]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 19:22
    щас попробуем))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 28 Июня 2011 в 19:36
    а можете мне пожалуйста написать как это будет выглядеть, а тоя просто новичок и мало что пока понимаю :-[ у меня уничтожаются блок, блок2,блок2,блок3,и блок4...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 28 Июня 2011 в 19:54
    У меня такой вопрос, для тех, кто работает с большими играми. Интересует как все это дело оптимизировать ? У меня в игре около 150 объектов, некоторые из них выполняют одинаковую функцию, просто содержат разный спрайт, ускорится ли это дело если сделать все тайлами. Работает ли код быстрее. Если у кого есть подкиньте статейку о оптимизации игр.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 28 Июня 2011 в 19:57
    Тайлами - да, быстрее. Однако же просто "много объектов" игру не затормаживает никак. Статьи об оптимизации пишут в основном на тему оптимизации исходного кода, тут всё можно охарактеризовать одним предложением: меньше обсчётов - больше скорость. Всё. Ну и сделать замечание, что встроенные функции намноооого быстрее, чем самописные.

    Статья по оптимизации есть в справке к гамаку, кстати.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 28 Июня 2011 в 20:00
    Понял сенкс :), а вот забыл дописать, в игре очень много бол. фонов и музыки, станет ли быстрее зап. игра, если вынести это все в отд. папку. И если что какой функцией.
    Статья по оптимизации есть в справке к гамаку, кстати.
    Да я ее читал, просто думал может есть какие нибудь более "извращенные" способы. :crazy:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 28 Июня 2011 в 20:05
    Запускаться - да, будет быстрее. Однако несжатые файлы больше весят и дольше грузятся в память, плюс надо будет писать много кода для загрузки всего этого добра.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 28 Июня 2011 в 21:12
    1) Положим, не так уж и много, особенно если применить соображалку,
    2) А кто сказал, что они несжатые? JPG, PNG не сжатыми встретить сложно, WAV тоже можно хорошо ужать, а MID, как правило, и сам маленький. А встроенные ресурсы - упакованный дефлэйтом битмап или исходный звуковой файл.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 28 Июня 2011 в 21:20
    Sportsmen)), читай FAQ, там есть ответ на твой вопрос.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 29 Июня 2011 в 11:06
    Хотелось бы еще спросить как в Game Maker сделать возможность из нескольких игроков выбрать одного


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 29 Июня 2011 в 11:40
    У меня такой вопрос: у меня есть 3 игрока, как сделать так чтобы можно было выбрать любого из этих трех игроков.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 29 Июня 2011 в 11:46
    Хотелось бы еще спросить как в Game Maker сделать возможность из нескольких игроков выбрать одного.
    Странно, я раньше думал, что игрок выбирает, в какие игры играть, а не наоборот.
    В Лос-Анджелесе вы выбираете игры, в которые хотите играть, а в Советской России игры выбирают вас.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 29 Июня 2011 в 12:45
    Выбор персонажа:

    http://forum.hellroom.ru/index.php/topic,1339.0.html
    http://forum.hellroom.ru/index.php/topic,3015.0.html


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 29 Июня 2011 в 14:54
    Надо мне, чтоб когда персонаж смотрит вправо и я нжимаю на ctrl, он делал удар в право.
    Когда смотрит влево - влево.
    Кароче, как делать так, чтобы спрайт менялся в зависимости от спрайта предмета при нажатии на кнопку?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 29 Июня 2011 в 14:57
    Ага. Что у тебя не выходит?
    Или как ты делаешь удар?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 29 Июня 2011 в 15:02
    зависит от того как ты делаешь поворот. Если через direction - проверяй direction, если через image_xscale - проверяй image_xscale. Если там просто заменяются спрайты при повороте - проверяй индекс спрайта:

    Вот три примера кода:

    if direction=0 
    {
    удар вправо;
    }
    else
    {
    удар влево;
    }


    if image_xscale 
    {
    удар вправо;
    }
    else
    {
    удар влево;
    }


    if sprite_index = спрайт_влево 
    {
    удар вправо;
    }
    else
    {
    удар влево;
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 29 Июня 2011 в 15:07
    Ой, извиняюсь, непраильно выразился. Не спрайт изменялся, а объект.
    надо сделать так, чтобы когда я нажимал на ctrl, если у персонажа на данный момент индекс спрайта - left, объект заменялся бы на kickleft, если у персонажа сейчас спрайт right - чтобы объект заменялся бы на kickright


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Dva_Kota от 29 Июня 2011 в 15:43
    Значит все то же самое, только вместо "спрайт вправо" ставь position_change(x,y,kickright,false)


    Название: не понял в "FAQ" . нужны профи! у меня куча вопросовю
    Отправлено: Я_Новичок! от 29 Июня 2011 в 17:02
    №1 здрасте!

    №2 Интерфейс. я создал картинку и объекты с ним (клавиши) но вот незадача я немогу зафиксировать интерфейс(скажем o_int) на виде и он уплывает. объясните плз какой код и в какое событие объекта o_int  я должен написать.

    №3 стрельба. я хочу чтобы при нажатии клавиши 1 он стрелял огненной стрелой и летел в сторону врага облетаю стены и доставая его при условии что враг находится в радиусе действия
     if point_distance(x, y, some_object.x, some_object.y) < 200 // 200, в данном случае, радиус
    {
    // Выполняем действия
    }
    (взял из "FAQ")
    а если он уходит из поля зрения то она рассеевается и выводит сообщение "враг вне зоны".

    №4 движение. я чото не понял как сделать так чтобы враг при радиусе видиния 100 бежал ко мне (он не видит через стены) и отставая от меня если передо мной стена(стена пусть будет o_wall)

    №5 как вывести введеное вначале имя над персом?

    №6. как сделать так чтобы игрок  при первом входе в игру попал в меню затем нажав клавишу "новая игра"видел сообщение ввести имя чела и попадал скажем в room_2  а при сохранении и последующих загрузках игры он не показывал сообщение с просьбой ввести имя и играл со старым именем

    №7. как сделать так чтобы при достижении 5 жизней(их примем за уровень персонажа а  здоровье за здоровье )появился новый объект(o_atk_5) в интерфейсе(как кубик на полу) и чтобы соответствовал требованиям вопроса №2




    [move]!!!ЗАРАНЕЕ СПАСИБО!!!        !!!ЗАРАНЕЕ СПАСИБО!!!             !!!ЗАРАНЕЕ СПАСИБО!!![/move]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 29 Июня 2011 в 17:15
    Чтобы интерфейс не уплывал, нужно рисовать его, учитывая координаты вида. Координаты - это view_xview[номер вида] и  view_yview[номер вида].
    Вопросы 3 и 4 требуют использования поиска пути, и что-то подсказать, не зная о твоей игре вообще ничего, невозможно.
    Выводить имя точно так же, как и значение любой другой переменной. Что-нибудь вроде draw_text(x,y,name), где name - переменная, в которую у тебя сохраняется имя.
    Чтобы больше не запрашивал имя, его нужно сохранять во внешнем файле и загружать при запуске игры. Читай раздел о записи-чтении файлов.
    А какова функция объекта o_atk_5?



    Когда я вижу "Заранее спасибо" в очередном "Сделайте за меня игру"-посте, моя рука тянется за Маузером.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 29 Июня 2011 в 17:16
    №1 здрасте!
    Ответа на этот вопрос я не знаю, ничем не могу помочь.
    №2 Интерфейс. я создал картинку и объекты с ним (клавиши) но вот незадача я немогу зафиксировать интерфейс(скажем o_int) на виде и он уплывает. объясните плз какой код и в какое событие объекта o_int  я должен написать.
    В степе интерфейса используй код
    x=view_xview[0];
    y=view_yview[0];


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 29 Июня 2011 в 17:17
    №1 здрасте!
    Это тоже вопрос?
    №5 как вывести введеное вначале имя над персом?
    Предположим, что имя является переменной name.
    Для простого вывода на экран:
    draw_text(x,y,string(name));
    Для вывода в сообщении:
    show_message('Привет '+string(name))

    №7. как сделать так чтобы при достижении 5 жизней(их примем за уровень персонажа а  здоровье за здоровье )появился новый объект(o_atk_5) в интерфейсе(как кубик на полу) и чтобы соответствовал требованиям вопроса №2
    if (lives=5) and (instance_number(o_atk_5)=0) then
    {
    instance_create(x,y,o_atk_5)
    }
    Про привязку к виду было сказано ранее.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 29 Июня 2011 в 17:19
    2. FaQ II.3.2.
    3. Что??
    4. point_distance(x,y,x2,y2) - расстояние от точки до точки. И проверяй, больше ста или меньше.
    5. FaQ II.1.2.
    6. А всю игру за тебя не сделать? Это в FaQ и справке. Читай о переменных.
    7. Опять же, проверяй "if (health = 5) {/*создавай объект*/}".


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 30 Июня 2011 в 13:00
    У меня проблема я не могу разобраться как сделать пошаговую игру в основном не могу разобраться с переменными(Чтоб монстры ходили по очередкея один исходник скачал но как ни пытался что либо сделать с 3мя и 4мя монстрами а в итоге получалось что либо ходили два монстра вместе либо кто-либо не ходил вообще:-\)ответить можете кодом( благо в англ. маленько разбираюсь :))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 30 Июня 2011 в 13:10
    ответить можете хоть кнопками хоть кодом( благо в англ. маленько разбираюсь Smiley)

    На что ответить? Вопроса нет.
    Читай раз - http://gmakers.ru/index.php?topic=4719.0
    Читай два - http://gmakers.ru/index.php?topic=5145.0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 30 Июня 2011 в 16:06
    Как сделать выбор значения переменных рендомно(random). Например при столкновении с обьетом присвоить значение road=0,1,2.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 30 Июня 2011 в 16:09
    road=irandom(2);
    или
    road=irandom_range(0,2);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 30 Июня 2011 в 16:16
    Эм... irandom_range, у меня GM6, надо что то для него.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 30 Июня 2011 в 16:18
    Тогда пробуй
    road=round(random(2));


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 30 Июня 2011 в 16:23
    Есть ещё
    road=choose(0,1,2);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 30 Июня 2011 в 16:31
    Переменные выбираются, все ок, спасибо за ответы. + :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 30 Июня 2011 в 21:31
    Здравствуйте! Хотелось задать еще несколько вопросов
    1. Возможно ли сделать комнату безразмерной( т.е определенные размеры комнаты есть, а когда объект доходит до её конца она продолжалась дальше), если возможно подскажите пжлст как
    2. Как сделать чтобы персонаж прыгал, а то я пробовал при помощи vspeed=-5. Но особого эффекта прыжка не заметно кажется что он летит, можно ли еще как нибудь сделать этот эффект?
    Всем заранее спасибо :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 30 Июня 2011 в 21:37
    2. Как сделать чтобы персонаж прыгал, а то я пробовал при помощи vspeed=-5. Но особого эффекта прыжка не заметно кажется что он летит, можно ли еще как нибудь сделать этот эффект?
    Нужно ещё добавить гравитацию.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 30 Июня 2011 в 21:38
    1) Комнаты и так безразмерные, а параметр "размер комнаты" только ограничивает перемещение камеры, автоматически наводящейся на объект, и влияет на зону, за пределами которой у объектов активируется евент Outside Room. Можно двигать камеру вручную, через установку переменных view_xview и view_yview, тогда от "границ" совсем ничего не останется.
    2) Ну вот герой сообщает сам себе скорость -5, отчего взлетает, но у тебя видимо нет силы, которая сообщает ему ускорение вниз, отчего бы он падал. Нужно прописать в событие шага нечто вроде vspeed += 0.05; тогда персонаж будет постепенно падать. Конечно, надо будет еще сделать так, чтобы он мог стоять на твёрдых предметах, иначе он будет проваливаться. Начать советую с "невидимого пола", например if(y > 300){ y = 300; vspeed = 0; }. Дальше этот код нужно усложнять, применяя к отдельным твёрдым предметам.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 30 Июня 2011 в 21:42
    Нужно ещё добавить гравитацию.
    А как? :-[


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 30 Июня 2011 в 21:43
    Shifty
    спасибо сейчас побробую :) потом отпишу


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 30 Июня 2011 в 21:43
    Либо методом, который предложил Shrifty, либо переменной gravity (ещё нужно настроить gravity_direction)

    И ещё объедини посты.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 30 Июня 2011 в 21:55
    Shrifty, Dukat863 спасибо большое вам за помощь)) и еще один вопросик как сделать невидимые границы комнаты?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 30 Июня 2011 в 21:56
    В каком смысле - невидимые границы?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sportsmen)) от 30 Июня 2011 в 22:00
    вместо каких-нибудь кирпичей через которые объект не может проходить, создать какую нибудь  границу комнаты, чтобы персонаж не проходил 


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 30 Июня 2011 в 22:05
    В step'e:
    if x>100 then {x=100}
    if y>100 then {y=100}
    Вместо " > " можно написать " < ". Также, вместо 100 можно написать любое нужное число.
    Например, если нужно, чтобы персонаж не выходил за пределы прямоугольника от 0 до 800 по горизонтали и от 0 до 600 по вертикали пишем:
    if x<0 then {x=0}; else
    {if x>800 then {x=800};}

    if y<0 then {y=0}; else
    {if y>600 then {y=600};}
    Вроде бы так.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 01 Июля 2011 в 14:34
    Привет, я не могу понять, почему мой перс не двигается в платформере. Персонаж бегает на месте почему-то. Я вроде бы по уроку делал,вот исходник:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 01 Июля 2011 в 14:47
    Маска чувака пересекает препятствие. Надо чуть либо её чуть уменьшить, либо порог "взбирания" поднять - не 5, а, скажем, 15.
    Попробуй в событии draw рисовать маску, сам увидишь.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 01 Июля 2011 в 15:44
    Спасибо чел!! Оч помог!


    Название: Кто может помочь?
    Отправлено: DontWorry от 01 Июля 2011 в 19:30
    Ищу знающего человека, который объяснит пару моментов  :) Имеется скайп и аська, в частности интересует: как сделать рамку вокруг камеры, возможно ли реализовать 2 хп (гг и боса например) средствами сет хп и драв хп, и еще пара мелочей)  8) Ожидаю помощи  ;)


    Название: Re: Кто может помочь?
    Отправлено: Райдо от 01 Июля 2011 в 20:22
    1) Ну, зная координаты камеры, можно что угодно отрисовать. view_xview и view_yview - это позиция верхнего левого угла камеры, X и Y соответственно. view_hview и view_wview - это высота и ширина камеры соответственно. Если у тебя например есть прозрачный спрайт с этой самой рамкой (у которого origin в точке 0,0) , то можно его отрисовать в точке view_xview, view_yview.
    2) Хп - это просто переменная. Таких можно задать вручную сколько угодно. Для этого в create event надо вставить код, который объявлял бы переменную - присваивал ей значение. Например var0 = 0; . Это создаст переменную var0, в которой изначально число 0. Таким же путём делается, например, переменные bosshp и herohp. Ну ты понял.


    Название: Re: Кто может помочь?
    Отправлено: DontWorry от 02 Июля 2011 в 14:37
    Спасибо, и еще 1 вопрос на сайте нашел справочник очень удобный но как оттуда копировать текст, очень узенькая полосочка, З.ы да я знаю контрл копи + контрл паст

    З.ы еще 1 вопрос как можно реализовать столкновения машин, машина которая на скорости наносит удар реализована просто она отскочит (speed-=speed*1.5) но как реализовать отскок машины которая остается неподвижной она должна отскочить не поворачиваясь от 1 машины в направление от точки удара, со скорость машины ударившей *1.5


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 02 Июля 2011 в 15:40
    speed+=other.speed
    Попробуй. Будет добавляться скорость другой машины.
    Два сообщения подряд не оставляй, есть кнопка "Изменить".

    "контрл копи + контрл паст", кстати, смешно, да.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 02 Июля 2011 в 16:32
    У меня проблема я не могу разобраться как сделать пошаговую игру в основном не могу разобраться с переменными(Чтоб монстры ходили по очередкея один исходник скачал но как ни пытался что либо сделать с 3мя и 4мя монстрами а в итоге получалось что либо ходили два монстра вместе либо кто-либо не ходил вообще)ответить можете кодом( благо в англ. маленько разбираюсь ) :GM8:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 02 Июля 2011 в 16:53
    Вопрос не ясный, игру за тебя делать никто не будет. Сформулируй то, что у тебя не выходит.
    А про переменные - вот http://gmakers.ru/index.php?topic=5145.0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 02 Июля 2011 в 18:11
    Вопрос не ясный, игру за тебя делать никто не будет. Сформулируй то, что у тебя не выходит.
    Что не ясно. Тебе исходник мой выложить или видео того что у меня не получается?
    и вообще я же написал что я не могу сделать что либо  с 3мя и 4мя монстрами с двумя выходит отл а так нифига!(чтоб они ходили поочередке :'()


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 02 Июля 2011 в 18:19
    Создай в управляющем объекте пустой список, и сделай так, чтобы в момент появления все герои и монстры вносили свой ID в этот список - это список тех кто делает шаги. И заведи переменную, которая бы указывала, который по счёту юнит сейчас ходит (указывает на порядковый номер фигурки в списке). Когда фигурка походила, она передаёт управление следующей по счёту (увеличивает ту переменную на единицу).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 02 Июля 2011 в 18:33
    Создай в управляющем объекте пустой список, и сделай так, чтобы в момент появления все герои и монстры вносили свой ID в этот список - это список тех кто делает шаги. И заведи переменную, которая бы указывала, который по счёту юнит сейчас ходит (указывает на порядковый номер фигурки в списке). Когда фигурка походила, она передаёт управление следующей по счёту (увеличивает ту переменную на единицу).
    ага спс помогло жаль + не могу поставить сообщений не хватает!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июля 2011 в 01:06
    Нужна помощь.
    Есть код:
    :GM003:
    for (i=0; i<=80; i+=1) 
    {
    ololo[i] = 3+3*i
    sinus[i] =0
    }
    :GM006:
    for (i=0; i<=80; i+=1)
    {
    if (ololo[i]<360) {ololo[i] += 0.1} else {ololo[i] = 0}
    sinus[i]=sin(ololo[i])*50
    }
    :GM011:
    for (i=0; i<=80; i+=1)
    {
    draw_circle_color(x+8*i,y+sinus[i],3,c_white,c_white,1)
    draw_circle_color(x+8*i,y-sinus[i],3,c_white,c_white,1)
    draw_line_width_color(x+8*i,y+sinus[i],x+8*i,y-sinus[i],3,c_white,c_white)
    }

    Интересная, кстати, штука, но пока не очень красиво выглядит. Что, собственно и надо.
    Сейчас все полосы параллельны. А надо примерно так: "\\||//", т.е. центральная - прямая, и краям они наклоняются, каждая все сильнее.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 05 Июля 2011 в 01:21
    var x1,y1,x2,y2;
    for(i=0;i<=80;i+=1){
      x1=x-8*i-4*sin(degtorad(i-40));
      x2=x+8*i+4*sin(degtorad(i-40));
      y1=y-sinus[i]-4*cos(degtorad(i-40));
      y2=y+sinus[i]+4*cos(degtorad(i-40));
      draw_circle_color(x1,y1,3,c_white,c_white,1);
      draw_circle_color(x2,y2,3,c_white,c_white,1);
      draw_line_width_color(x1,y1,x2,y2,3,c_white,c_white);
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июля 2011 в 01:29
    Зачем? Там, можно отрисовывать х, как и у, через переменную sinus, но нужно правильную формулу подобрать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 05 Июля 2011 в 01:54
     :GM003:
    for (i=0; i<=80; i+=1) 
        {
        ololo[i] = i*0.2
        sinus[i] = 0
        }

     :GM011:
    for (i=0; i<=80; i+=1)
        {
        var p1, p2;
        p1 = 8*i; p2 = (8*i-320)*0.9+320
        draw_circle_color(p1,y+sinus[i],3,c_white,c_white,1)
        draw_circle_color(p2,y-sinus[i],3,c_white,c_white,1)
        draw_line_width_color(p1,y+sinus[i],p2,y-sinus[i],3,c_white,c_white)
        }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 05 Июля 2011 в 02:05
    V2 :GM011:
    for (i=0; i<=80; i+=1)
        {
        var p1, p2, s;
        s = (8*i-320)*cos(ololo[i])/30
        p1 = 8*i + s;
        p2 = 8*i - s;
        draw_circle_color(p1,y+sinus[i],3,c_white,c_white,1)
        draw_circle_color(p2,y-sinus[i],3,c_white,c_white,1)
        draw_line_width_color(p1,y+sinus[i],p2,y-sinus[i],3,c_white,c_white)
        }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июля 2011 в 12:05
    Спасибо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 05 Июля 2011 в 18:00
    Народ у меня вопрос. Как сделать так чтобы противник двигался на одной высоте относительно другого предмета(к примеру шарик прыгает туда сюда а враг следует за ним только в право и влево(на одной высоте)
                        (влево)  _________

     


                        0


    Заранее спс! :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Июля 2011 в 18:05
    Высота - это у (игрек). Вот и пропиши в степе объекта:
    у = имя_другого_объекта.у

    В котором пропишешь - тот и будет следовать за _другим_.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 05 Июля 2011 в 18:15
    всё ровно я уже пытался так но в итоге всегда так... :( можно ли ещё как нибудь?
    ERROR in
    action number 1
    of  Step Event
    for object boss1_o:

    Error in code at line 1:
       y = ball_o.y
                 ^
    at position 12: Unknown variable y


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 05 Июля 2011 в 18:38
    Макасин или кто нибуть другой можете показать на моём примере это? :-\


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 05 Июля 2011 в 18:48
    Error in code at line 1:
       y = ball_o.y
                 ^
    at position 12: Unknown variable y
    У тебя нету объекта ball_o. Скорее всего его нету в комнате.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 05 Июля 2011 в 20:22
    ну тогда я надеюсь у меня последний вопрос-у меня 4 предмета,на карте их много(1 предмет несколько раз всего допустим 30) и как мне сделать чтобы когда допустим вместо 30 осталось 5 предметов появлялся новый предмет (переход на след уровень к примеру)? :D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 05 Июля 2011 в 20:36
    if instance_number(obj)<=5 then /*действие*/
    Если у меня все в порядке с памятью, то так...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 05 Июля 2011 в 21:54
    Как сделать в платформере, чтоб пуля летела туда, куда повернут персонаж?! + Что бы пуля летела именно из дула.
    Вот исходник.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 05 Июля 2011 в 22:19
    Попробуй вот так
    new_bullet=instance_create(x+lengthdir_x(),y+lengthdir_y(),obj_bullet);
    new_bullet.direction=direction;
    С аргументами lengthdir'ов помочь не могу, так-как сижу из под Live CD убунты, винт восстанавливаю.
    Думаю, там кнопки


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 05 Июля 2011 в 22:26
    Ошибка какая-то... Не могу понять почему((


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 05 Июля 2011 в 22:32
    С аргументами lengthdir'ов помочь не могу, так-как сижу из под Live CD убунты, винт восстанавливаю.
    То что вписывать в скобках lengthdir_*() я не помню, поэтому не вписал.
    Поставь пока new_bullet=instance_create(x,y,obj_bullet). Пуля будет вылетать из центра персонажа, но с направлением.
    Писать туда, где создаёшь пулю.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 05 Июля 2011 в 22:40
    Теперь пули летят! Но есть проблема:
    Пули летят только вправо((


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 05 Июля 2011 в 22:46
    Ты какой переменной определяешь направление игрока, direction или image_dir?
    Посмотреть твой пример не могу, так-как
    сижу из под Live CD убунты, винт восстанавливаю.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 05 Июля 2011 в 22:53
    image_xscale


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 05 Июля 2011 в 22:57
    Вот тогда код.
    if (image_xscale>0) new_bullet.direction=0 else new_bullet.direction=180;


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 05 Июля 2011 в 23:00
    Пасиб большое. ну тогда последний вопрос. Как создать загрузку игры? Т.е. у меня в меню будет:
    Новая игра
    Загрузить игру
    Инструкция
    Выход

    Не знаю как сделать, чтоб прогресс сохранялся(не знаю, что можно сейв гейм создать), но не знаю как сделать чтоб загружалась с сохраненного места.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 06 Июля 2011 в 00:54
    game_save(fname); -- сохранить
    game_load(fname); -- загрузить


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 07 Июля 2011 в 11:51
    game_save(fname); -- сохранить
    game_load(fname); -- загрузить

    Ах да! Спасибо, я забыл просто, а ведь знал-же)))


    У меня возник еще один вопрос.
    Как сделать так что бы картинка с жизнями была в одном месте, без разницы как двигается камера. Т.е. чтоб она висел в парвом углу экрана.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июля 2011 в 12:28
    F.A.Q. для начинающих (http://gmakers.ru/index.php?topic=4312.0) - здесь все написано. Задавать те вопросы, ответ на которых есть в Faq - наказуемо. Ты ведь читал правила?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 07 Июля 2011 в 12:52
    Я читал факью, и не однократно, может пропустил что-то.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Bars от 07 Июля 2011 в 12:54
    Занова прочти
    kx = (keyboard_check(vk_right)-keyboard_check(vk_left));
    ky = (keyboard_check(vk_down)-keyboard_check(vk_up));
    как все эти кнопки заменить на WASD


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июля 2011 в 12:59
    Shenja, II.3.2.

    Bars, keyboard_check(ord('A')).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Bars от 07 Июля 2011 в 13:04
    Респект спасибо


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Shenja от 07 Июля 2011 в 14:10
    Спс, не заметил.  Но как только это исправил, сразу возникла другая проблема(((
    Теперь почему-то экран не двигается за игроком(( Я даже не знаю как объяснить,  посмотрите пожалуйста:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Июля 2011 в 17:28
    1. В жизнях дописал, верно. Но в очках тоже нужно.
    2. Кнопки - зло. Поставь галочки "относительно" - заработает.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Lufimo от 07 Июля 2011 в 21:43
    есть спрайт, состоящий из 6 кадров. Нужно сделать объект, который рандомно отображает один из них. В комнате таких объектов несколько.
    Как реализовать?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 07 Июля 2011 в 22:14
    image_speed=0;
    image_index=irandom(5);
    //Перепутал тег GML и тег IMG, потом думал где это мой код...

    EDIT: Так 5 или 6?
    Dukat863, нужно ставить именно 5, ведь в спрайтах первый кадр стоит под 0-м номером. Следовательно, в спрайте из 6 кадров последний будет номером 5.
    Спасибо, просто я помню как пользовался конструкцией round(random(x)), и результат никогда не был x


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 07 Июля 2011 в 22:14
    В создании объекта:
    image_speed=0;
    image_index=irandom(5);

    Dukat863, нужно ставить именно 5, ведь в спрайтах первый кадр стоит под 0-м номером. Следовательно, в спрайте из 6 кадров последний будет номером 5.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Lufimo от 07 Июля 2011 в 22:22
    спасибо


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Сол от 09 Июля 2011 в 14:11
    image_angle = (image_angle+((image_angle-point_direction(x,y,mouse_x,mouse_y)+360)mod 360>global.R)*((global.R*sign((image_angle-point_direction(x,y,mouse_x,mouse_y)+360)mod 360-180)))+360)mod 360
    Этот скрипт я записал в событие "Шаг". При запуске игры у меня игра пишет, что не знает значение переменной "R", хотя в событие создания я записал
    R=6
    .
    Вопрос: в чём прикол? Почему игра не понимает, что значение переменной я уже дал?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 09 Июля 2011 в 14:20
    Нужно было писать global.R=6;
    Или
    globalvar R;
    R=6;
    что-бы использовать без префикса global


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Сол от 09 Июля 2011 в 14:48
    Я так и писал не работает!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Июля 2011 в 15:38
    Значит, что-то неправильно написал.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 11 Июля 2011 в 20:03
    Люди)! Кто нибудь может дать пример либо bomberman либо змейки либо карт?(в бомбере меня интересует конкретно увеличение бомб и силы взрыва.(в змейки чтобы объекты плавно следовали друг за другом и чтобы змейка двигалась не сразу а только тогда когда я жму на кнопки а то в примерах я не могу изменить а в картах мне интересно всё) Заранее спс  хотя бы за одну вещь) :) :) :)


    Название: Выстерл
    Отправлено: timyrnewbie от 11 Июля 2011 в 23:28
    Помогите создать  перса который будет стрелять как в марио плз , скрипт , пример , неважно . Зарание благодарю


    Название: Re: Выстерл
    Отправлено: ハツノイド от 11 Июля 2011 в 23:45
    Помогите создать  перса который будет стрелять как в марио плз , непонятные слова, неважно . Зарание благодарю

    (http://rghost.ru/14219251/image.png) (http://rghost.ru/14219251.view)

    Не благодари.


    Название: Re: Выстерл
    Отправлено: Кто-тo от 11 Июля 2011 в 23:46
    obj=instance_create(x,y,o_bullet);
    obj.direction=point_direction(x,y,mouse_x,mouse_y);
    obj.speed=5;

    Esdeer, +1


    Название: Re: Выстерл
    Отправлено: Огион от 12 Июля 2011 в 00:20
    как в марио
    point_direction(x,y,mouse_x,mouse_y);
    Ты уверен?


    Название: Re: Выстерл
    Отправлено: Str4k от 12 Июля 2011 в 12:15
    Марио ин Чак Норис ;D.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 12 Июля 2011 в 12:41
    Бомбер. Ну тут просто. Там, насколько я помню, есть два показателя: количество бомб, которые можно поставить одновременно и дальность взрыва.
    Первое делается просто. Нужна переменная maxbomb, например. Когда ставишь бомбу - проверяй:
    if (instance_number(/*название объекта бомбы*/)<maxbomb) {/*создаем бомбу*/}
    Со вторым не сложнее.
    У бомбы есть аларм, по которому она взрывается и создает четыре взрыва. Тут введем переменную size.
    Код будет примерно таким, в аларме:
    if (size>0)
    {
    instance_create(x+32,y+32,exp)
    instance_create(x-32,y+32,exp)
    instance_create(x+32,y-32,exp)
    instance_create(x-32,y-32,exp)
    }
    if (size>1)
    {
    instance_create(x+64,y+64,exp)
    instance_create(x-64,y+64,exp)
    instance_create(x+64,y-64,exp)
    instance_create(x-64,y-64,exp)
    }
    if (size>2)
    {
    instance_create(x+96,y+96,exp)
    instance_create(x-96,y+96,exp)
    instance_create(x+96,y-96,exp)
    instance_create(x-96,y-96,exp)
    }
    if (size>3)
    {
    instance_create(x+128,y+128,exp)
    instance_create(x-128,y+128,exp)
    instance_create(x+128,y-128,exp)
    instance_create(x-128,y-128,exp)
    }
    И дальше, сколько надо. Здесь до четырех. Какое значение, столько и взрывов, но будь внимателен, там же через больше. И размеры замени на свои.

    Змейку - сейчас дам, наработка есть, но нужно довести.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 12 Июля 2011 в 12:59
    Итак, змейка. Пишу отдельным постом, что бы не спутать.

     :GM003: Создание.
    for (i=1; i<=9; i+=1) //9 - количество сегментов змеи, с нуля.
            {
            xx[i]=0
            yy[i]=0
            }
    yy[0]=y
    xx[0]=x
    alarm[0]=2 //тут мы создали массив.
    :GM005: Аларм.
    for (i=9; i>=1; i-=1) 
            {
            xx[i]=xx[i-1]
            yy[i]=yy[i-1]
            }
           
    xx[0]=x
    yy[0]=y
    alarm[0]=2 //по аларму мы просчитываем всю змею.
    :GM006: Степ.
    for (i=0; i<=8; i+=1) 
            {
            rot[i]=point_direction(xx[i],yy[i],xx[i+1],yy[i+1])+90
            }
    rot[9]=rot[8] //Тут просчитываем правильный поворот каждого сегмента.
    :GM011: Рисование.
    draw_sprite_ext(sprite0,2,xx[9],yy[9],1,1,rot[9],c_white,1) //Рисуем голову.
    for (i=8; i>=1; i-=1)
            {
            draw_sprite_ext(sprite0,1,xx[i],yy[i],1,1,rot[i],c_white,1) //Рисуем сегменты.
            }
    draw_sprite_ext(sprite0,0,xx[0],yy[0],1,1,rot[0],c_white,1) //Рисуем хвост.
    //У меня они в одном спрайте, в разных кадрах.

    Вот и все. Добавь змейке какое-нибудь движение (например move_towards_point(mouse_x,mouse_y,6) в степ) и полюбуйся  ;D
    Мой спрайт - во вложении, глянь, как нужно нарисовать сегменты, что бы подходили. И скорость нужно будет подогнать. Вот на этот спрайт подходит 6.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 12 Июля 2011 в 14:00
    Макасин, где спрайты из террарии взял? )


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 12 Июля 2011 в 14:03
    Из Террарии. Я их не использую, просто подвернулся.
    Кстати, и ты посмотри, там есть много интересных спрайтов, которых нет в игре.


    Название: Re: Выстерл
    Отправлено: Kchiuk от 12 Июля 2011 в 17:20
    Что-то наподобие того. Можешь поиграться с числовыми значениями для достижения нужного эффекта. Если что непонятно — спрашивай, а вообще читай справку и учись думать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 12 Июля 2011 в 18:01
    Макасин Большое спс! Только ты не мог бы показать пример усиления взрыва Я только его не могу настроить теперь а в остальном спс!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 12 Июля 2011 в 18:33
    Макасин Большое спс! Только ты не мог бы показать пример усиления взрыва Я только его не могу настроить теперь а в остальном спс!
    А для кого я написал код? Во вложении - пример, с абсолютно тем же кодом. Привязку к клеткам не делал. Сила - от одного, до четырех, регулируется стрелками.


    Название: Re: Выстерл
    Отправлено: timyrnewbie от 12 Июля 2011 в 20:27
    Спасибо парни , не судите строго учусь токо )))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 13 Июля 2011 в 21:08
    Возник вопрос: Существует глоб. переменная допустим global.rev, и существует несколько ботов, которые выполняют действие с этой переменной, когда она равна 1. Вопрос заключается в следующем, можно ли сделать так чтобы значение этой переменной присваивалось каждому боту отдельно. Или нет?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 13 Июля 2011 в 21:21
    Хм... Глобальная переменная, насколько я знаю, потому так и называется, что она если изменится, то уж для всех.
    Дублирование глобальной переменной в локальную не подходит? Например, у объекта задать переменную rev1. И изменять уже ее, исходя из значения глобальной.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 13 Июля 2011 в 21:24
    Дело в том что этими ботами управляет другой объект, а там поможет только глобальная.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 13 Июля 2011 в 21:25
    Можно поподробней, для чего служит эта переменная?
    Кстати, ты ведь знаешь о существовании with? И о том, как обращаться к переменным других экземпляров через id.variable?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 13 Июля 2011 в 21:47
    id.variable не пользовался. В общем есть два объекта o_enem1(управляет o_enem1_killed) и o_enem1_killed. Эта переменная отвечает за ихнюю анимацию умирания. Тобиш, когда игрок убивает врага, идет проверка этой переменной. Если он стоял спиной, вкл. анимация spr_enemd1, а если передом spr_enemd2. То есть один враг может стоять спиной а другой передом и анимация путается.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 13 Июля 2011 в 22:00
    Зачем же тебе глобальная переменная? Глобальная - она одна не всех.
    "spr_enemd2" - это ведь не отзеркаленный "spr_enemd1"?
    У тебя должна быть какая-то переменная, означающая, в какую сторону повернут монстр. Может, разные спрайты, может, image_xscale, не знаю. Определить, где стоит игрок, слева или справа, можно, сравнив их координаты x.
    Определяй, стоит ли монстр спиной, в самом монстре.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 13 Июля 2011 в 22:08
    У тебя должна быть какая-то переменная, означающая, в какую сторону повернут монстр.
    На эту роль идеально подходит sprite_index:
    [gml=o_enem1::Destroy]// выбор спрайта умирания
    var i; i=instance_create(o_enem1_killed)
    switch(sprite_index){
    case spr_enem1: i.sprite_index=spr_enemd1; break;
    case spr_enem2: i.sprite_index=spr_enemd2; break;
    // и далее по шаблону
    }
    [/gml]

    P.S. Немного поправил, чтобы подходило под условия задачи.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 14 Июля 2011 в 13:58
    Объясните мне, при какой погоде на Марсе правильно работает функция string_replace_all?
    Имеем строку
    0
    start
    3
    0
    0
    adding
    03
    И код
    for( i = 0; i < 128; i += 1 ) {
    if ( LName[i] != '' ) {
        Comp = string_replace_all( Comp, LName[i], string( LPos[i] ) );
    } else {
        break;
    }
    }
    Нихрена не заменяется.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 14 Июля 2011 в 14:18
    show_message(string_replace_all('zhowing uz mezzage', 'z', 's'));//showing us message


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 14 Июля 2011 в 14:20
    Ладно, проехали.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Bars от 14 Июля 2011 в 17:35
    я пишу так
    draw_text(0,400,'Привет')
    Слова не выходят :(
    draw_text(0,400,'Privet')
    если так выходят  :)
    Как это исправить  ???


    Название: Re: Ответы@Gmakers.ru
    Отправлено: MAn!aC_MAC от 14 Июля 2011 в 17:52
    http://gmakers.ru/index.php?topic=2243.0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 14 Июля 2011 в 18:15
    Если у тебя GM8.1, обнови его до последней версии.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 14 Июля 2011 в 19:34
    А можно ли в гамаке как-то перехватить нажатие ПринтСкрина?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: MAn!aC_MAC от 14 Июля 2011 в 19:39
    Из справки 7 гамака:
    vk_printscreen клавиша Printscreen/SysRq
    Сам только сейчас узнал


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 14 Июля 2011 в 19:40
    Ага. Я просто привык клавиши через цифровой код юзать. А у принтСкрина его нет.

    Кстати, не работает.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 14 Июля 2011 в 19:43
    Вообще-то есть, лол.
    У абсолютно всех клавиш есть кейкод.
    show_message(string(vk_printscreen));


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 14 Июля 2011 в 19:45
    Через дебагМод проверь - ничего.
    И, собственно, keyboard_check(vk_printscreen) не пашет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: MAn!aC_MAC от 14 Июля 2011 в 19:48
    странно... он ведь и внизу в шпаргалке отображается

    хм... и у меня не пашет


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 14 Июля 2011 в 20:02
    You're doing it wrong.
    Х1000, пять звёзд. Oh well~


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 14 Июля 2011 в 20:08
    Ты сделай так, что бы при нажатии на принтскрин происходило действие.
    Грац!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 14 Июля 2011 в 20:13
    У меня тоже keyboard_check для PrintScreen не работает. keyboard_check_released работает.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 14 Июля 2011 в 20:28
    keyboard_check_direct, нэ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: MAn!aC_MAC от 14 Июля 2011 в 20:37
    Уееее!!! так всё пашет O0
    надо было мне справку внимательнее читать...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Servail от 15 Июля 2011 в 21:56
    Такой вопрос, может уже был: как реализовать скриптом lengthdir_z? Чтоб дейстовал, естественно, по принципу lengthdir'ов по другим двум осям.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 15 Июля 2011 в 22:10
    [gml=lengthdir_z(length,direction)]return 0;[/gml]Наслаждайся.
    Впрочем, если тебе всё же нужны преобразования сферических координат в декартовые трёхмерные, для 3d-проекции, пожалуйста:
      var dx,dy,dz,nx,ny,nz;
      dx=lengthdir_x(lengthdir_x(1,zdirection),direction);
      dy=lengthdir_y(lengthdir_x(1,zdirection),direction);
      dz=lengthdir_y(1,zdirection);
      nx=lengthdir_x(lengthdir_y(-1,zdirection),direction);
      ny=lengthdir_y(lengthdir_y(-1,zdirection),direction);
      nz=lengthdir_x(1,zdirection);
      d3d_set_hidden(1);
      d3d_set_projection_ext(x,y,z,x+dx,y+dy,z+dz,nx,ny,nz,45,4/3,1,80);
    Тут управление через direction и zdirection


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Servail от 15 Июля 2011 в 23:32
    #914
    Именно то, что я и просил :) Ксти, написав, что скрипт должен работать по той же схеме, я не подумал. Хорошо было бы иметь под рукой скрипты типа spherecoord_[x,y,z](sphere_x,sphere_y,sphere_z,sphere_radius,x_direction,y_direction,z_direction). [x,y,z] - это я просто указал, что 3 скрипта возвращающих соответствующие координаты. А три направления потому, что сфера в идеале должна иметь три перпендиклярные локальные плоскости (это должно позволить камере переворачиваться на 360 градусов по всем осям), хотя, в большинстве случаев, будет достаточно глобальной плоскости xy и пересекающей её z (тогда, соответственно, xy_direction и z_direction). Сейчас пытаюсь осуществить всё это, упехов пока что маловато ;D Может я путаю direction с rotation, так как координату нужно получить поворотом точки на угол альфа в окружностях, лежащих в трёх перпендикулярных плоскостях.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 16 Июля 2011 в 00:20
    Крен, тангаж и рысканье - это преобразования уже модели в мир.
    Впрочем, если нам нужен вид из самолёта...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Servail от 16 Июля 2011 в 02:55
    Нужно чтобы объект был прикреплён к определённой точке модели, но был отдельной моделью. Например пулемёт, прикреплённый к самолёту.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 16 Июля 2011 в 10:08
    Примерная схема:
    // преобразование, помещающее на место самолёт
    // нарисовать самолёт
    d3d_transform_set_identity();
    // преобразование, помещающее пулемёт1 в гнездо 1 на модели самолёта
    // преобразование, помещающее на место самолёт
    // нарисовать пулемёт
    d3d_transform_set_identity();
    // преобразование, помещающее пулемёт2 в гнездо 2 на модели самолёта
    // преобразование, помещающее на место самолёт
    // нарисовать пулемёт
    d3d_transform_set_identity();
    Будь в GM доступны расчёт матриц и их непосредственное использование, было бы куда проще.


    Название: Глупая тема. Что такое Time line и как им пользоваться?
    Отправлено: onedan от 16 Июля 2011 в 14:40
    Объясните что это такое!!!!!


    Название: Re: Глупая тема. Что такое Time line и как им пользоваться?
    Отправлено: Impossible от 16 Июля 2011 в 14:44
    Почитать хелп на русском трудно?


    Название: Re: Глупая тема. Что такое Time line и как им пользоваться?
    Отправлено: Pinguin от 16 Июля 2011 в 15:08
    Если я правильно понял, то тайм-лайны это последовательность действий относительно момента времени(наверное не правильно сформулировал)
    то есть момент времени 30 -движение вверх, момент времени 70 - движение влево и так далее.

    А ваще вопросы лучше задавай вот сюда. http://gmakers.ru/index.php?topic=5335.msg60650#msg60650


    Название: как сделать?
    Отправлено: САНЯrus от 17 Июля 2011 в 17:53
    как сделать что бы один из 4 объектов появлялись в рандомных местах и что бы не появлялись на 5 объекте


    Название: Re: как сделать?
    Отправлено: Voldeniaar от 17 Июля 2011 в 18:21
    один из 4 объектов
    Полагаю, они должны выбираться рандомно...
    Создаешь некий объект, который будет за все это отвечать. В событии, при котором должен создаться нужный объект пишешь:
    obj=choose(object1,object2,object3,object4);
    instance_create(obj,random(room_width),random(room_height));
    В событии столкновения данных 4-х объектов с 5-м пиши:
    x=random(room_width);
    y=random(room_height);
    Возможно, есть вариант лучше и, возможно, я в чем-то ошибся. Проверить не могу.

    - - - - -

    Вспомнил, как сделать проще. Вместо того, чтобы дублировать
    x=random(room_width);
    y=random(room_height);
    в каждом из 4-х объектов можно этим объектам задать родителем тот объект, который и отвечает за их создание. И уже у этого управляющего объекта в столкновении с 5-м объектом и пишешь
    obj.x=random(room_width);
    obj.y=random(room_height);
    Вроде все.


    Название: Re: как сделать?
    Отправлено: САНЯrus от 17 Июля 2011 в 18:45
    спасибо


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 17 Июля 2011 в 23:29
    Народ кто нибудь может помочь мне исправить мой пример td(tower defense) Мне нужно чтобы после первой волны моя башня стреляла не без перерыва а с паузой в одну секунду(я уже делал все возможные вещи с алармом и обрезал код как мог но не смог сделать) и чтобы стреляло по ближайщему противнику(как во время 1 волны токо с паузой) Кароче вот пример кто сможешь настроить 2 волны спс! :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 18 Июля 2011 в 00:12
    Я, конечно, извиняюсь, но не мог бы ты выложить кусок кода, в котором у тебя затруднения? Просто не все имеют возможность скачать исходник...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 18 Июля 2011 в 00:44
    У меня вообще игра вылетает с ошибкой после пятого зомби.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 18 Июля 2011 в 00:59
    Специально для нищебродов с диалапом - та же игра, но с повырезанными анимациями. Большинство спрайтов были анимированные, да.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 18 Июля 2011 в 01:46
    Специально для нищебродов с диалапом...
    Я понимаю, это про меня? Увы, с интернетом у меня дела не так плохи. Проблема в том, что я нахожусь далеко от дома и сижу с планшетника, на котором GM, увы, отсутствует. Потому не имею возможности рассмотреть исходник...
    P.S. Извиняюсь за уход от главной темы.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 18 Июля 2011 в 10:18
    Я, конечно, извиняюсь, но не мог бы ты выложить кусок кода, в котором у тебя затруднения? Просто не все имеют возможность скачать исходник...
    у меня проьлема со 2 башней (towwer) в степ ивенте... (напоменаю мне нужно настроить цель(чтобы по которой в радиусе и по самой ближней и паузу между выстрелами как в первой(п.с. обычным путём пауза ненастраиваеться))) :(
        var ii, dist, xx, yy;
        {
        if not instance_exists(enemy2) target = noone;
        {
            if target = noone target = instance_nearest(x,y,enemy2);
            if point_distance(x,y,enemy2.x,enemy2.y) > range
                target = noone;
                else
                    if instance_exists(enemy2)
                    if point_distance(x,y,enemy2.x,enemy2.y) < range
            if can_shoot = 0
            alarm[0]=room_speed*1
            can_shoot=1
            {
               if can_shoot = 1
                //Create a bullet
                ii = instance_create(x,y,ob_bullet);
                dist = point_distance(x,y,enemy2.x,enemy2.y)/24;
                xx = enemy2.x+enemy2.path_speed*dist*cos(enemy2.direction*pi/180);
                yy = enemy2.y-enemy2.path_speed*dist*sin(enemy2.direction*pi/180);
                ii.speed = 24;
                ii.direction = point_direction(x,y,xx,yy);
                ii.damage = damage;
                can_shoot=0
                }
                }
                }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 18 Июля 2011 в 10:21
    У меня вообще игра вылетает с ошибкой после пятого зомби.
    в том то и дело... башня сначало невидит 2 врагов а потом стреляет по каждому по 10 пуль за секунду( :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 18 Июля 2011 в 10:29
    Каким боком ты фигурные скобки расставляешь?  :-\

    Меня убивает уже вот это:
       var ii, dist, xx, yy;
        {
        if not instance_exists(enemy2) target = noone;
        {
            if target = noone target = instance_nearest(x,y,enemy2);
    1. Скобка после объявления переменных. Зачем она там?
    2. Сначала ты задаёшь target равным noone если ни одного экземпляра enemy2 нет, а уже через строчку ты при этом условии ищещь ближайшего врага. Зачем, объясните мне, искать ближайшего врага, если врагов нет?
    Я понимаю, если бы ты искал ближайшего врага, если они есть, при условии, что в переменной target ничего (noone) не записано.
    3. Скобка после условия. Она, наверное, как-то к нему должна относиться, но перед этой скобкой есть "target = noone;", который относится к этом условию, =>, эта скобка ни к чему не относится и также поставлена "от фонаря".


    ...Идём дальше.
           if point_distance(x,y,enemy2.x,enemy2.y) > range
                target = noone;
                else
                    if instance_exists(enemy2)
                    if point_distance(x,y,enemy2.x,enemy2.y) < range
            if can_shoot = 0
    Обращение к enemy2 даёт первый экземпляр в комнате. Это значит, что если у тебя десять 100500 врагов, то башня обязательно будет смотреть на того, который был создан самым-самым первым из всех существующих. Поэтому, я думаю, твоя турель отключится в тот момент, когда враг уедет за range и не будет работать, пока он по своему кривому пути не проедет опять рядом с ней.
    Я почему-то думал, что в TD турели стреляют по ближайшему врагу. И, вроде бы, твоя турель даже пытается записывать ближайшего врага в target. Поэтому enemy2 надо заменить на target.
    Во-вторых, вот именно здесь нужны скобки. Не после объявления переменных, не после условия, которое обрабатывает только одно выражение "target=noone;", а после "if point_distance() > range", "else", "if instance_exists()" и "if point_distance() < range". И вообще, фигачь круглые скобки вокруг самих условий, так они получше смотрятся.
           alarm[0]=room_speed*1
            can_shoot=1
            {
               if can_shoot = 1
    Это блин офигенно. Сначала ты умножаешь room_speed на 1. Тебя не учили, что любое число, умноженное на 1, даёт то же самое число?
    Потом ты ставишь can_shoot на 1 (а условием выше ты проверяешь, не равно ли can_shoot 0), опять ставишь ненужную скобку и проверяешь, не равна ли can_shoot 1 (напомню, что ты только что её поставил на 1).
    //Create a bullet
                ii = instance_create(x,y,ob_bullet);
                dist = point_distance(x,y,enemy2.x,enemy2.y)/24;
                xx = enemy2.x+enemy2.path_speed*dist*cos(enemy2.direction*pi/180);
                yy = enemy2.y-enemy2.path_speed*dist*sin(enemy2.direction*pi/180);
                ii.speed = 24;
                ii.direction = point_direction(x,y,xx,yy);
                ii.damage = damage;
                can_shoot=0
                }
                }
                }
    ...Создаём новую пулю, делаем какие-то непонятные рассчёты (enemy2.x нам опять даёт x первого из существующих enemy2, а само это значение уже более чем достаточно, чтобы высчитать направление стрельбы), ставим can_shoot на 0, чтобы в следующем же шаге запустить alarm[0] заново, поставить can_shoot на 1 и снова выстрельнуть. Таким образом, can_shoot не влияет ни на что, а alarm[0] не выполняется.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 18 Июля 2011 в 10:39
    Каким боком ты фигурные скобки расставляешь?  :-\

    Меня убивает уже вот это:
       var ii, dist, xx, yy;
        {
        if not instance_exists(enemy2) target = noone;
        {
            if target = noone target = instance_nearest(x,y,enemy2);
    1. Скобка после объявления переменных. Зачем она там?
    2. Сначала ты задаёшь target равным noone если ни одного экземпляра enemy2 нет, а уже через строчку ты при этом условии ищещь ближайшего врага. Зачем, объясните мне, искать ближайшего врага, если врагов нет?
    Я понимаю, если бы ты искал ближайшего врага, если они есть, при условии, что в переменной target ничего (noone) не записано.
    3. Скобка после условия. Она, наверное, как-то к нему должна относиться, но перед этой скобкой есть "target = noone;", который относится к этом условию, =>, эта скобка ни к чему не относится и также поставлена "от фонаря".
    тебе слово else вообще нечего не говорит?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 18 Июля 2011 в 10:42
    Твой else не относится ни к одному из условий, которое я процитировал, да и в самой цитате его нет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 18 Июля 2011 в 10:45
    if instance_exists(enemy2)
    if point_distance(x,y,enemy2.x,enemy2.y) < range
    А где здесь (и далее) then ( { } )? Или я отстал от жизни и так можно?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 18 Июля 2011 в 10:50
    А где здесь (и далее) then ( { } )? Или я отстал от жизни и так можно?
    Ага, можно.

    Pascal:
    if(a=b) then
    begin
     a:=b+1;
    end
    else
    begin
     a:=b;
    end;

    if(b<>c) then
    begin
     b:=b+1;
    end;

    C++: могу ошибаться, да
    if(a==b) {
     a=b+1;
    } else {
     a=b;
    }

    if(b!=c) {
     b+=1; //b++ в GML не сработает
    }

    В GML поддерживается синтаксис Pascal (можно использовать ":=" для присваиваний и "<>" для проверки неравенства), но в справке в основном описывается только синтаксис в стиле C++ - фигурные скобки, "==" для проверок равенства и "!=" для неравенства, и т.д.

    Кстати, каждый из этих примеров в GameMaker работает и не выдаёт никаких ошибок.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 18 Июля 2011 в 10:58
    Ладно извини что я такой тупой... больше не буду спрашивать тут некогда тогда.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Pinguin от 18 Июля 2011 в 11:47
    Tkachov объяснил тебе проблему, что ты еще хочешь? И кстати правильно никогда


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июля 2011 в 13:33
    Фигурные скобки следует использовать только в конструкциях if, repeat, while, do, for и switch, ставить их где попало не нужно. Скобки обрамляют конструкции, то есть если написать:

    if (<условие>)
    {
    действие_1;
    действие_2;
    }
    действие_3;
    То действие_1 и действие_2 будут выполняться только в том случае, если выполняется условие, а действие_3 будет выполняться в любом случае. Если же скобок нет:

    if (<условие>)
    действие_1;
    действие_2;
    действие_3;
    То действие_1 будет выполняться только в том случае, если выполняется условие, а действие_3 и действие_2 будут выполняться в любом случае.
    Лучше всегда обрамлять начало и конец конструкции скобками, так и путаницы, и ошибок будет меньше. А вот в случаях вроде этого скобки не нужны. Убери их.

    var ii, dist, xx, yy;
    {

    Tkachov тебе все объяснил, пусть и не в самой мягкой форме.
    Не нужно тупо брать и копировать код из примеров. Код нужно осмысливать, разбираться, как он работает. Иначе пользы от примеров никакой.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 18 Июля 2011 в 13:37
    tl;dr;
    Тест события написан на арамейском, потому перевожу на GML:
    {
      var ii, dist, xx, yy;
      if not instance_exists(target)
        target = instance_nearest(x,y,enemy2);
      if target!=noone{
        if can_shoot{
          alarm[0]=room_speed;
          can_shoot=0;
          //Create a bullet
          xx = target.x+target.path_speed*dist*cos(target.direction*pi/180);
          yy = target.y-target.path_speed*dist*sin(target.direction*pi/180);
          dist = point_distance(x,y,target.x,target.y)/24;
          with instance_create(x,y,ob_bullet){
             motion_set(point_direction(x,y,xx,yy),24);
             damage = other.damage;
          }
        }
      }
    }
    1) в Create обязательно указать "target=noone".
    2) noone не существует, если объектов enemy2 нет, instance_nearest вернёт noone.
    3) room_speed*1 равно room_speed. Понадобится пауза 5 секунд, например - поставишь вместо него room_speed*5.
    4) в alarm[0] ставишь "can_shoot=1". То, что у тебя было вокруг этой переменной - треш, угар и содомия.

    P.S. К слову, Game Maker позиционируется, как инструмент для создания игр без программирования. Это и привлекает к нему далёких от программирования людей. А реально хрен на нём что нормальное без программирования сделаешь. Это не дельфи, где есть реальные примеры создания программ без написания кода.

    P.P.S. Поправил очепятки, нигде не было can_shoot=0.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июля 2011 в 13:49
    P.S. К слову, Game Maker позиционируется, как инструмент для создания игр без программирования.
    Ну и правильно. Если бы он так не позиционировался, никому он не был бы нужен. А так он способствует развитию логического мышления у населения, что хорошо.
    Другой вопрос, что кнопки на нем сделаны не слишком удобно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 18 Июля 2011 в 17:04
    Капитан заявляет, что на самом деле никакого "без программирования" там, конечно же, нет, ибо кнопки это всё тот же код, только пишется он не клавиатурой а мышкой. Так что принципиальной разницы между таким способом написания программ и традиционным - нет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июля 2011 в 17:20
    Разница лишь в форме ввода, да. Но если погрузиться в омские дебри, то любой алгоритм можно назвать программой. Так можно дойти и до того, чтобы выставление таймера на микроволновке называть программированием.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: MAn!aC_MAC от 18 Июля 2011 в 17:40
    Так можно дойти и до того, чтобы выставление таймера на микроволновке называть программированием.
    а его, между прочим, в инструкциях так и называют


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июля 2011 в 17:49
    В хорошей инструкции не должно быть таких длинных и сложных слов.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 18 Июля 2011 в 18:07
    То-есть как в анекдотах про блондинок?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 18 Июля 2011 в 18:11
    Капитан заявляет, что на самом деле никакого "без программирования" там, конечно же, нет, ибо кнопки это всё тот же код, только пишется он не клавиатурой а мышкой. Так что принципиальной разницы между таким способом написания программ и традиционным - нет.
    В точку!
    В делфи можно набросать компонент на форму, настроить пропертисы, нажать F5 и показывать довольному заказчику. Это трудно назвать "без программирования", потому, что слово "программирование" означает "настройка", настройка более-менее универсальной системы на конкретное применение. Но код здесь не пишется. Здесь практически декларативное программирование: мы указываем где что лежит, а как это связывается и работает, решает дельфи.
    В GM же, добавляя кнопки в событие, мы программируем императивно: говорим что делать и как. Даже редактор комнаты не сильно декларативен: нет никакой возможности как-то связать объекты кроме как через определение взаимодействия этих самих объектов в описании объектов. (Не говоря уж про код создания объекта и код создания комнаты.)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 18 Июля 2011 в 18:14
    Такой вопрос, у меня какой то странный глюк в восьмом гамаке. Не корректно работает функция деактивации, почему то деактив. все объекты в игре, точнее теряют свои св-ва и запускаются заново. Пользовался функцией много раз, таких проблем не было. Все ресурсы в игре имеют разные имена, переменных похожих нету. :-\


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июля 2011 в 18:15
    Телепаты, как всегда, в отпуске.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 18 Июля 2011 в 18:23
    Так и знал что ты это напишешь :) Ну пользуюсь обычным кодом instance_deactivate_object(); но что то не выходит. Могу вылож. пример. Но там ничего такого нет, объекты и спрайты различаются только регистром(obj_ spr_).
    ЗЫ: Просто хотел узнать может есть какие то доп. проверки для деактивации, чтоб корректно работало.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 18 Июля 2011 в 18:31
    Да все и так корректно работает, это у тебя что-то неправильно написано. Так что все-таки скинь исходник.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 18 Июля 2011 в 19:12
    Ладно сам разберусь.


    Название: Проблемка с 39длл
    Отправлено: Ринальдо от 18 Июля 2011 в 21:29
    Так уж получилось, что придется использовать эту библиотеку. Но вот проблема - друзья попросили сделать для них хороший чат, что мне по силам. Но я не могу понять: КАК с помощью 39длл сделать список игроков(ооо геморой!)? На встроенных функциях Game Makera было с эти гораздо легче благодаря серии функций mplay_player_... Помогите пожалуйста. (как сделать список игроков на 39длл?(Команды, отрывки кодов - буду благодарен))

    С надеждой и просьбой о помощи, Ринальдо


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Ринальдо от 19 Июля 2011 в 12:01
    Все! Больше НЕ могу! Перепробовал все, что знаю о 39длл, но даже отправка сообщения мне неподсильна!!! Напишите мне плз код(,коды) для отправки и принятия сообщения, но так чтоб мона было сделать несколько чат комнат! Мя этот 39длл проста убьет! :doit: :doit: :doit:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 19 Июля 2011 в 12:29
    Вполне хороший английский (гугл еще и переводить умеет) туториал - http://lukeescude.com/online-tutorial . Тут тоже можно заглянуть - http://wiki.yoyogames.com/index.php/39DLL_Tutorial
    Ну и вот пример чата - http://forum.gmaker.su/forum/15-3310-1
    Разбирайся. Я сам сейчас с php-сокетами варюсь. Нужно просто представлять и понимать как же так все это происходит.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 19 Июля 2011 в 15:03
    с php-сокетами
    А написать сервер на С - религия не позволяет? Пехапе это продвинутый генератор html-ок а не полноценный язык, между прочим.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 19 Июля 2011 в 15:41
    А написать сервер на С - религия не позволяет?
    Не позволяет сам замысел. Мне пока не нужен постоянный сервер.
    //Недооценивать силы php не нужно. В прочем соглашусь, что есть варианты и получше.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 19 Июля 2011 в 15:54
    Видишь ли, язык php не подходит для написания каких-либо серверов вообще. Он для этого не предназначен и разработкой в этом направлении никто не занимается, да и никому от пхп таких фич и не надо (кроме нескольких маргиналов). Если очень уж хочешь - можешь попробовать писать сервер на Python или perl, эти языки по крайней мере позиционируются и развиваются как полноценные, и в них эта часть развита намного лучше.


    Название: Мгновенное отталкивание из определенного обьекта.
    Отправлено: Gavolot от 19 Июля 2011 в 16:20
    Люди не знаете как вывести обьект из другого обьекта мгновенно, да так чтобы работало с множеством обьектов нормально например у меня целая, нереальная база, стоит круг, я на него поставил здание и чтобы он пролетел через все эти здания на свободное место от Wall хатябы за несколько секунд.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 19 Июля 2011 в 16:59
    Gavolot, возможно, этот пример тебе пригодится. ...Хоть я и не совсем понял в чем суть.
    [attachment=1]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 19 Июля 2011 в 17:08
    Создаешь всем "вытеснителям" общий родитель, в нём ничего не пишешь. У всех "вытесняемых" добавляешь коллижн с этим родителем, в него пишешь:
        var dir, step, maxdst, stepx, stepy;
    step = 3; //длина одного шага при попытке вытеснить
    maxdst = 50; //максимум шагов за один проход, чтобы не зависало
    dir = point_direction (other.x, other.y, x, y);
    stepx = lengthdir_x (step, dir);
    stepx = lengthdir_y (step, dir);
    while (maxdst) {
        if ( ! instance_place (x, y, other) ) //проверяем процесс вытеснения
        {
            maxdst = 0; //при полном вытеснении прекращаем работу
        }
        else
        {
            x += stepx; //при неполном вытеснении, делаем шаг в сторону от объекта
            y += stepy;
            maxdst -= 1; //уменьшаем количество попыток перед прерыванием вытеснения "как есть"
        }
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Gavolot от 20 Июля 2011 в 04:02
    Shifty спасибо, самое интересное у меня все примерно так-же просто я чуток намутил там не того.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: onedan от 21 Июля 2011 в 11:52
    Подскажите, где можно посмотреть пример с timeline.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 21 Июля 2011 в 13:19
    Зачем он тебе нужен? Лучше массивами пользоваться.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 21 Июля 2011 в 13:58
    Например, тут (http://sandbox.yoyogames.com/games/63223-3d-tutorials) в RPG.gm6 таймлайн используется для замены неба соответственно времени суток.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SkillFX от 22 Июля 2011 в 17:18
    я никак не пойму, зачем писать ==?
    if instance_number(o_star) == 0
    {        // Выполняем нужные действия    }

    если можно просто написать
    if instance_number(o_star) = 0
    {        // Выполняем нужные действия    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 22 Июля 2011 в 17:37
    Затем же, зачем нужно ставить точки с запятой. Чтобы приучаться к нормальному стилю программированию.
    Видишь ли, есть два разных знака: знак присваивания и знак равенства. Знак присваивания используется, когда ты присваиваешь значение переменной (например, "x=10"), а знак равенства - когда ты сравниваешь что-то с чем-то (например, "if (x==10) {do_something_awesome();}"). В Паскале для присваивания используется знак ":=", а для равенства - знак "=", а в Си для присваивания используется знак "=", а для равенства - знак "==". В этих языках путать эти знаки никак нельзя. В GML же пользователю предоставляется бо́льшая свобода, и знак "=" можно использовать и в качестве знака присваивания, и в качестве знака равенства. Но хорошим тоном считается все-таки различать эти знаки.
    Обе эти записи будут работать, но первая будет более "правильной" с точки зрения человека, который будет разбирать твой код.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SkillFX от 22 Июля 2011 в 17:44
    спасибо, учту


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 22 Июля 2011 в 22:32
    я никак не пойму, зачем писать
    if instance_number(o_star) == 0
    {        // Выполняем нужные действия    }

    Согласен, так писать некрасиво. Красиво так:
    if !instance_exists(o_star){
            // Выполняем нужные действия
    }

    К слову, в таком варианте закрывающая фигурная скобка не становится частью комментария.
    Обе эти записи будут работать, но первая будет более "правильной" с точки зрения человека, который будет разбирать твой код.
    Если ты, конечно, не используешь последовательно паскаль-стиль, тогда проверку на равенство стоит писать как "=", а присваивание как ":=".
    Ну или бейсик-стиль — и там, и там "=", по контексту обычно можно определить, имеется в виду присваивание или сравнение.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 23 Июля 2011 в 19:57
    Разрешите спросить. вот код:
    if (!keyboard_check(vk_right))//Если не нажата кнопка вправо
    {
    image_xscale=-1;
    if (x>5){
        walkspeed = min(-atr_maxspeed,walkspeed-atr_accel);
    }
    side=1
    }
    vk_right это кнопка вправо. а мне надо чтобы была кнопка D. как написать?
     Спасибо заранее


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июля 2011 в 20:05
    По идее, это есть в справке и, я почти уверен, в F.A.Q.
    keyboard_check(ord('D'))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 23 Июля 2011 в 20:07
    cпасибо биг O0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 23 Июля 2011 в 20:43
    Разрешите еще 1 вопрос.
    var xshift, yshift;
    xshift = 0;
    yshift = 0;

    if keyboard_check(ord('W')) yshift = -5;
    if keyboard_check(ord('A')) xshift = -5;

    if keyboard_check(ord('D')) xshift = 5;

    if keyboard_check(ord('S')) yshift = 5;


    if xshift != 0 and yshift != 0
    {
        x += xshift * 0.71;
        y += yshift * 0.71;
    }
    else
    {
        x += xshift;
        y += yshift;
    }
    что мне поправить в коде штоб если была нажата кнопка D спрайт (spr_idle)
    (http://i032.radikal.ru/1107/89/7db88b0d06f7.gif) (http://www.radikal.ru) остался таким же а если A зеркальнулся по гаризонтали , если спрайт зеркальнулся уже то если нажать D то опять стал норм?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июля 2011 в 20:51
    Хм...
    if keyboard_check(ord('D')) then image_xscale=1;
    if keyboard_check(ord('A')) then image_xscale=-1;
    Мог бы и поэкспериментировать... И посмотрел бы справку да F.A.Q. Там такое, кажется было.

    - - - - -

    Какой-то код у тебя... Страшноватый. Не проще ли сделать так:
    if keyboard_check(ord('W')) then y-=3.55; //3.55 - исходя из твоего 5*0.71;
    if keyboard_check(ord('A')) then x-=3.55;
    И так далее...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 23 Июля 2011 в 21:11
    нет. сорь. ну чот не то.
    1ое - едет влево сам по сибе
    2ое - спрайт тянется
    вот образец как даолжно быть:
    но в образце этом я двигаюсь ток влево вправо.вверх вниз но не по диагонали. управление стрелками(гравитация)
    http://zalil.ru/31458472


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июля 2011 в 21:25
    Хм... Да, ошибся.
    if image_xscale<0 then {if keyboard_check_pressed(ord('D')) then image_xscale=1;}} //если спрайт повёрнут влево и ты нажал 1 раз на D, то поворачивается направо.
    if image_xscale>0 then {if keyboard_check_pressed(ord('A')) then image_xscale=-1;}} //если спрайт повёрнут вправо и ты нажал 1 раз на A, то поворачивается налево.
    Движение ставь:
    if keyboard_check(ord('A')) then {x-=5};
    if keyboard_check(ord('D')) then {x+=5};

    Мне кажется или я опять ошибся?

    - - - - -
    Или же поворот можно так сделать:
    if hspeed>0 then image_xscale=1;
    if hspeed<0 then image_xscale=-1;
    P.S. Ткните кто-нибудь меня носом в ошибки, которые у меня тут имеются...
    P.P.S. Я не могу пока скачать твой образец, т.к. я с планшета сижу.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 23 Июля 2011 в 21:50
    warning! ошибка! у меня то переменная должна менятся))))))))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июля 2011 в 21:53
    Извиняюсь, можно конкретнее? Что за переменная и за что она должна отвечать?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 23 Июля 2011 в 22:22
    then лучше не использовать, а точки с запятой должны стоять до фигурных скобок.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 23 Июля 2011 в 22:28
    then лучше не использовать, а точки с запятой должны стоять до фигурных скобок.
    Хм... Это единственные ошибки?
    Я так понимаю, then не нужно использовать только из соображений читаемости? Или это все же влияет на производительность? (давно интересует этот вопрос)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 24 Июля 2011 в 00:05
    Можно проверить, например. Делаешь произвольный бенчмарк на время выполнения около нескольких секунд, сравниваешь скорость выполнения участков кода с then и без него.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 24 Июля 2011 в 00:11
    Shifty, угу, вернусь домой из отпуска - проверю.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 24 Июля 2011 в 00:21
    Извиняюсь, можно конкретнее? Что за переменная и за что она должна отвечать?
    переменаая движения. тоесть там в коде складывается горизантальное и вертикальное и идёт по диагонали а ты мне переменную скосил на другую и терь не бежит по диагонали


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 24 Июля 2011 в 00:28
    обрати внимание на
    var xshift, yshift;
    ...................................
    и особенно на
    xshift, yshift;
    ................
    а ты мне вместо них подсунул другое


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 24 Июля 2011 в 00:39
    if keyboard_check(ord('W')) {y-=5;}
    if keyboard_check(ord('S')) {y+=5;}
    if keyboard_check(ord('A')) {x-=5;}
    if keyboard_check(ord('D')) {x+=5;}
    Напиши-ка это в step. Должно работать для передвижения по диагонали.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 24 Июля 2011 в 00:56
    и так там)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 24 Июля 2011 в 00:57
    все работает! но я не ставил авил вил ил л    твой вой ой й     код од д.) ) ) :beer:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Я_Новичок! от 25 Июля 2011 в 03:36
    люди, помогите плз. у меня код работет ток в про версии. дайтк плз кряк.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Ринальдо от 25 Июля 2011 в 10:29
    Говорил недавно про проблему с подлключением человека ко мне. Выяснилось, что:
    а) у него странноватая семерка
    б) провайдер с тупым серым айпи

    Но вот проблемка: раньше играли через 39длл спокойно, а теперь ЧАТ с логином и паролем на 39длл у него при нажатии кнопки Войти ниче не происходит!(а должно подключаться к серву!!!)
    Есть идеи?
    (p.s. все свои советы насчет того что "спрашивай на 39длл сайте" оставьте при себе)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 25 Июля 2011 в 13:08
    люди, помогите плз. у меня код работет ток в про версии. дайтк плз кряк.

    "13. Создавать темы вида "Кто-нибудь, киньте ссылку на кряк GM", ровно как и "Кому нужна ссылка на кряк GM - пишите в личку" нельзя. Это запрещено, понимаете?" (с) "Ознакомьтесь, прежде чем задать вопрос"


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 25 Июля 2011 в 14:41
    люди, помогите плз. у меня код работет ток в про версии. дайтк плз кряк.
    Ищи сам.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 26 Июля 2011 в 00:00
    Скажите как правильно пользоваться функцией draw_set_alpha(), битый час сижу не могу сделать. Мне нужно чтобы текст плавно появлялся и исчезал + и - значения не работают.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 26 Июля 2011 в 00:59
    Скажите как правильно пользоваться функцией draw_set_alpha(), битый час сижу не могу сделать. Мне нужно чтобы текст плавно появлялся и исчезал + и - значения не работают.
    Аргумент draw_set_alpha() изменяется от нуля до единицы. 0 - полностью прозрачный.
    Заведи себе переменную прозрачности.
    Например:
    opacity=0
    теперь в степ, опять таки, к примеру (лучше использовать таймеры):
    if (opacity<1) opacity+=0.05 else opacity=1;
    А в draw просто:
    draw_set_alpha(opacity);//Устанавливаем прозрачность перед рисованием текста
    draw_text(10,10,"test");
    draw_set_alpha(1);//Опять вернем непрозрачность, чтобы ничего кроме нашего текста это не задело
    Эффект: текст "test" плавно появится в позиции 10, 10. Пробуй, удачи.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 26 Июля 2011 в 01:08
    Хоть кто-то откликнулся. ZitRo Спасибо помогло :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Gavolot от 27 Июля 2011 в 14:31
    У меня такая ситуация что надо вытеснить обьект резко, ну например я поставил сереневый квадратик на серый кружочек и кружочек должен вытесниться, а чето не получается по прошлому скрипту. Я ставлю здание на него и кружечек остается в здании.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 27 Июля 2011 в 16:03
    Проверь, что твоё здание имеет родителем объект-вытеснитель. Или родитель здания имеет родителем объект-вытеснитель. Ну ты понел.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 27 Июля 2011 в 16:06
    Или центры объектов совпадают, и потому вытесняемый не знает, куда ему ехать. :D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 27 Июля 2011 в 16:11
    Если центры совпадают, то он будет ехать точно вправо. Всё продумано.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 30 Июля 2011 в 00:41
    if (global.stage=4)
    {
    if (global.summ=global.esumm) {draw_text(176,288,'Íè÷üÿ.')}
    if (global.summ>21 && global.esumm>21) {draw_text(176,288,'Íè÷üÿ.')}
    if (global.summ=21 && global.esumm!=21) {draw_text(176,288,'Âû ïîáåäèëè.')}
    if (global.summ=!21 && global.esumm=21) {draw_text(176,288,'Âû ïðîèãðàëè.')}
    if (global.summ=!21 && global.esumm=!21)
        {
        if (global.summ>global.esumm) {draw_text(176,288,'Âû ïîáåäèëè.')} else {draw_text(176,288,'Âû ïðîèãðàëè.')}
        }
    }

    Почему этот кусок кода не работает?
    Ошибок нет, просто не выполняются действия.
    global.stagе точно равна четырем,  тот код, что до этого куска - работает.
    Где-то, видимо косяк, но я его в упор не вижу.
    //Надписи испортились, но это не важно, там "Ничья", "Вы победили" и "Вы проиграли".


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 30 Июля 2011 в 00:51
    А он вообще ничего не пишет или пишет, но не то, что нужно?

    А что за "=!" ?  может "!="... или я чего-то не понимаю :crazy:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 30 Июля 2011 в 00:56
    Замени  "=!" на "!=". "!" обращает истину в ложь, а ложь в истину. 21 - это true. "If summ=!21" - то же самое, что и "if summ=0".


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 30 Июля 2011 в 01:01
    Благодарю. Недоглядел. Все из-за вредной привычки копировать похожий кусок и до/переписывать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Gavolot от 30 Июля 2011 в 01:07
    Спасибо за помощь, но я уже справился своим методом. Там просто у меня была ошибка в постановке, твой метод подсказал где, и там не много особенный случай, поэтому наверное твой метод не подошел полностью, все-равно +1.


    Название: Вопросы по 3D
    Отправлено: Servail от 01 Августа 2011 в 00:33
    В общем, решил поковыряться во встоенных 3D возможностях гамака, и затянуло.
    Пока что сделал только отлично управляемую камеру (спасибо tolich'у) и некоторое окружение, но уже появились проблемы.
    1) В общем, есть у меня четыре объекта: core, camera, interface, sphere. core - инициализация 3D, парочка глобальных процессов. camera - тут стоит d3d_set_projection_ext и управление самой камерой, а так же отрисовка этого "некоторого окружения" проблем вроде никаких. interface - а вот тут уже d3d_set_projection_ortho, для отрисовки, соответственно, интерфейса. И уже с sphere проблемы - сфера тоже отрисовывается в ортогональной проекции, а должна быть частью окружения. Конечно, можно запихнуть код создания сферы в камеру, но как-то это... неправильно, что ли... =\ Не уж то придёться прибегать к конструкции with?
    Решение найдено:
    1) Попробуй объекту interface поставить самый маленький depth. (-100000, к примеру)
    2) Как сделать физику? Столкновений с "косыми" полом и потолком хотя бы. Возможно ли это вообще, на встроенных-то возможностях? Или dll-кой какой физической надо расширять? Гравитацию планирую делать обычным уменьшением координаты z, но нужно же через пол не проваливаться, а уровень может быть "многоэтажным".
    3) Можно ли организовать поддержку моделей со скелетной анимацией (и, естественно, управление ими), какой-нибудь dll-кой хотя бы? Нужна именно поддержка, а не 3D движок.
    Наверное, зря я ожидаю чего-то такого от встроенного 3D, но всё же интересно. Кстати, что лучше, Ultimate 3D или GMOgre? Или есть ещё какие-нибудь хорошие движки для GM?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ГоК от 01 Августа 2011 в 00:39
    1) Попробуй объекту interface поставить самый маленький depth. (-100000, к примеру)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: WfalconW от 01 Августа 2011 в 06:48
    Не подскажите ли, как можно не прибегая к осзданию второго спрайта во время игры закрасить его весь в один цвет?
    Примеров использования тонна: идёт игрок, напоролся на шипы, при столкновении - моргнул на пол секунды белым цветом.
    Ибо данный метод очень здорово смотриться, если знать меру.

    Заранее спасибо. В аналогичной теме на родном форуме, пока не ответели... подумал, может тут кто-нить раньше подскажет.

    p.s. А то мне не нравиться рисовать дополнительный спрайт серого цвета и потом его красить и поверх накладывать -  глупо это очень... хочу правильно делать! )))))))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 01 Августа 2011 в 09:13
    А image_blend не подходит? Вообще, чую, что здесь можно использовать режимы смешивания, но какой именно не знаю. Пусть знающие подскажут.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 01 Августа 2011 в 13:57
    Добро пожаловать, WfalconW :]

    Есть несколько способов. Кроме создания дополнительного спрайта, и создания сурфейса (здесь используются режимы смешивания, как и догадался Илья), твою задачу можно решить с помощью шейдеров и ещё одним уникальным способом - с помощью 3D тумана. Его я тебе и посоветую.

    Достаточно написать в draw event подобный код:
    d3d_set_fog(1, color, 0, 0);
    draw_sprite(sprite_index, 0, x, y);
    d3d_set_fog(0, c_white, 0, 0);
    И твой спрайт заполнится цветом color. 3D инициализировать не нужно, кроме этих двух строчек - вообще ничего не нужно.
    Пользуйся на здоровье  ;)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 01 Августа 2011 в 17:49
    Как применить действие vspeed к определенному объекту через код.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 01 Августа 2011 в 18:01
    if image_index=1
    {
        with (obj)
            vspeed=2
    }

    ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 01 Августа 2011 в 18:05
    А почему не
    with (obj)
                vspeed=2


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 01 Августа 2011 в 18:06
    with (obj) vspeed=2
    Можно еще сюда проверку id добавить ?
    with (id) (obj), выдает ошибку


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 01 Августа 2011 в 18:26
    with ( obj ) {
        if ( id == need_id ) {
          lol();
        }
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 01 Августа 2011 в 18:39
    with ( obj ) {
        if ( id == need_id ) {
          lol();
        }
    }
    И зачем?
    with(id) {/*code*/}

    Нафиг выполнять with со всеми объектами obj, если можно с одним id выполнить?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 01 Августа 2011 в 18:50
    Ладно спс за помощь, но боюсь это здесь не к месту. Объясню лучше суть проблемы, может кто подскажет более легкий вариант. Имеется враг, если он повернут влево, o_bullet летит влево, если вправо o_bullet летит вправо, и так в 4 направлениях, влево вправо, вверх и вниз. Делал через image_index, но не вариант.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 01 Августа 2011 в 18:52
    Ладно спс за помощь, но боюсь это здесь это не к месту. Объясню лучше суть проблемы, может кто подскажет более легкий вариант. Имеется враг, если он повернут влево, o_bullet летит влево, если вправо o_bullet летит вправо, и так в 4 направлениях, влево вправо, вверх и вниз. Делал через image_index, но не вариант.
    Используй переменную Direction, и уже в рисовании оптимизируй кол-во кадров.
    new_bullet=instance_create(x,y,o_bullet);
    new_bullet.direction=direction;


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 01 Августа 2011 в 18:53
    Tkachov, я сделал в точности так, как попросил Z8. А вообще, ты прав.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: 1q2w от 01 Августа 2011 в 18:56
    Можно поподробнее, с direction мало работал.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 01 Августа 2011 в 19:01
    Tkachov, я сделал в точности так, как попросил Z8. А вообще, ты прав.
    Он попросил "определённого объекта", а в need_id из твоего примера должно быть значение id экземпляра. Значит, раз id известно, можно просто выполнить код только для одного <need_id> экземпляра, вместо перебора всех объектов


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 01 Августа 2011 в 19:12
    with (obj) vspeed=2
    Можно еще сюда проверку id добавить ?
    with (id) (obj), выдает ошибку
    Не будем спорить.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 01 Августа 2011 в 19:31
    Можно поподробнее, с direction мало работал.
    Помимо простого изменения координат объекта, его можно двигать еще двумя способами. Первый - задать ему горизонтальную (hspeed) и вертикальную (vspeed) скорости, а второй - задать скорость (speed) и направление (direction).
    Direction - это направление движения объекта в градусах. 0 - это направо, 90 - вверх, 180 - налево, а 270 - вниз. Переменную ничто не ограничивает, она может быть и больше 360 (например, 450 - то же самое, что и 90), и меньше нуля (например, -90 - то же самое, что и 270), с чем при проверках приходится бороться.
    Если ты изменяешь координаты объекта, vspeed, hspeed, speed и direction не изменяются. Если ты используешь speed и direction, vspeed и hspeed автоматически подстраиваются, и наоборот. Это значит, что если ты задашь скорость, равную 5 и направление, равное 180, то vspeed станет равна 0, а hspeed станет равна -5.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 02 Августа 2011 в 07:08
    Люди! Помогите! Как пользоваться dll`ками?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 02 Августа 2011 в 16:48
    Вместе с dll, как правило, идет пример со всеми функциями. Чтобы dll работала, она должна находиться в одной папке с игрой.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 03 Августа 2011 в 11:52
    такой вопрос уже задавал, но ответ понял не до конца:

    Надо мне, чтоб когда персонаж смотрит вправо и я нжимаю на ctrl, он делал удар в право.
    Когда смотрит влево - влево.
    Кароче, как делать так, чтобы объект менялся в зависимости от спрайта предмета при нажатии на кнопку?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Kchiuk от 03 Августа 2011 в 12:14
    прописываешь ему sprite_index или image_index, смотря как у тебя там реализовано
    исходя из этого уже делать проверку на удар при нажатии ctrl:
    if (sprite_index=повёрнут_вправо) {бить_вправо();}
    if (sprite_index=повёрнут_влево) {бить_влево();}
    блин поучи конструкцию кода, константы и пару функций, гарантирую многому научишься. :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 03 Августа 2011 в 12:33
    хорошо. а в скобочках чё писать?  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 03 Августа 2011 в 12:52
    В...
    {бить_вправо();}
    ... этих?
    Там же написано. Пиши код, отвечающий за удар вправо/влево.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 03 Августа 2011 в 12:53
    да не этих, а круглых. я же не совсем тупой.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 03 Августа 2011 в 12:55
    Хм... В...
    {бить_вправо();}
    ... этих?
    По-моему они тут были необязательны. Просто пиши код удара вместо "бить_вправо()". Скобки писать вроде бы не надо, если я правильно понимаю.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Kchiuk от 03 Августа 2011 в 15:03
    лол
    скобочки означают, что бить_вправо() это функция
    вместо этого надо писать, как уже написали, код отвечающий за (в данном случае) право


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 03 Августа 2011 в 15:33
    Может он про скобочки условия (if())? В них вместо "повёрнут_вправо" нужно написать, какой спрайт обозначает повёрнутого персонажа вправо (например, hero_right).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 03 Августа 2011 в 15:38
    К слову, "бить_вправо()" это набор неожиданных символов, а не функция. Даже русифицированный Game Maker не допускает имена ресурсов с кириллицей, а своих функций с русскими именами у него и подавно не было.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 03 Августа 2011 в 21:59
    Хм... В...
    {бить_вправо();}
    ... этих?
    По-моему они тут были необязательны. Просто пиши код удара вместо "бить_вправо()". Скобки писать вроде бы не надо, если я правильно понимаю.

    что значит "код удара"? у меня удар - отдельный предмет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 03 Августа 2011 в 22:25
    Удар - отдельный объект? В таком случае пиши код создания этого объекта. Это ведь очевидно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 09:56
    какой?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 04 Августа 2011 в 12:03
    А как ты создаешь удар? То и пиши.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 12:56
    да не создаю я его, он уже есть. это просто объект и всё.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 04 Августа 2011 в 13:33
    Хм... То есть объект-удар уже присутствует в комнате и во время удара он должен переноситься к главгерою? Тогда, вместо кода создания пиши:
    with /*объект удара*/ {x=/*нужное значение относительно главгероя*/; y=/*нужное значение относительно главгероя*/
    Если нужно, чтобы объект летел куда-либо, задаешь ему горизонтальную/вертикальную скорость, либо скорость и направление (все это относительно поворота главгероя влево/вправо).
    Если и это не то, то попрошу объяснить все подробно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 13:46
    аааааа!!!!!!!!!!!!!!  :haha: чё же так трудно объяснить-то!
    нет его в комнате, просто он должен заменить объект героя.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 04 Августа 2011 в 13:55
    Ты б сам объяснил попонятнее...
    Могу предложить самый простой, но, возможно, не лучший вариант...
    При нажатии кнопки создаешь на месте героя объект удара, удаляешь объект героя, в создании объекта удара задаешь будильник, при котором создается опять объект героя и удаляется объект удара (или все это пишешь без будильника, а при завершении анимации спрайта удара, если нужно).
    Над более правильным вариантом думать лень. Если кто знает - напишите.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 14:00
    да, я думал об этом варианте, и он подходит, но только как сделать чтобы спрайт объекта удара зависел от спрайта объекта героя, который был перед этим?!


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 04 Августа 2011 в 14:07
    Так писали ж уже...
    прописываешь ему sprite_index или image_index, смотря как у тебя там реализовано
    исходя из этого уже делать проверку на удар при нажатии ctrl:
    if (sprite_index=повёрнут_вправо) {бить_вправо();}
    if (sprite_index=повёрнут_влево) {бить_влево();}
    Вместо "бить_вправо()" пиши код создания объекта удара и его поворот направо, например, через image_xscale=1.
    Вместо "бить_влево()" пиши код создания объекта удара и его поворот налево, например, через image_xscale=-1.
    Понятно или это опять не то?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 14:14
    дак я и спрашиваю: какой код создания объекта?  :) кстати, у меня объект не поворачивается, у меня спрайт меняется. всмысле, персонаж смотрит вправо - один спрайт, влево - другой.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 04 Августа 2011 в 14:45
    instance_create(x,y, obj);//создание экземпляра объекта obj в позиции (x,y)

    См. также:
    Экземпляры объектов (http://gmakers.ru/gamemaker_help/source/files/403_05_instances.php)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 04 Августа 2011 в 14:53
    дак я и спрашиваю: какой код создания объекта?
    У тебя есть справка? Прочитай. Может, найдешь то, что тебе нужно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 15:24
    ооо, вот мне ссылочку дали, нашёл что нужно, благодорю всех кого я доставал этими тупыми вопросами  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 04 Августа 2011 в 16:03
    Так, на будущее... В правом верхнем углу сайта имеется такая кнопка "Справка (рус)". Скачай. Пригодится.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 17:00
    да есть она у меня. только там запутаться легко. мне, по крайней мере.

    так, ещё один очень странный вопрос: можно в игру, сделанную в game maker играть... эм.. на Sega?
    знаю, мне самому смешно от этого вопроса, но может быть, можно ка-то?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 04 Августа 2011 в 17:02
    Интересно, как ты себе представляешь играть в игру с GM на старой приставке?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 04 Августа 2011 в 17:17
    можно в игру, сделанную в game maker играть... эм.. на Sega?
    На самом деле, это возможно. Всё что нужно — написать программу-конвертер. Дерзай.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 17:42
    Интересно, как ты себе представляешь играть в игру с GM на старой приставке?

    представляю. если игра будет 16 битная, то вполне.
    вопрос не как представляю, а как возможно?

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


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 04 Августа 2011 в 20:01
    instance_create(x,y, obj);//создание экземпляра объекта obj в позиции (x,y)

    См. также:
    Экземпляры объектов (http://gmakers.ru/gamemaker_help/source/files/403_05_instances.php)

    хм, теперь у меня персонаж бьёт только влево. да чё за херня!  :doit:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 04 Августа 2011 в 22:42
    Найди сначала устройство для того, что бы записать игру на катридж.


    Название: Помаш нузна позаоуста памагичи
    Отправлено: SleepyMenLv от 05 Августа 2011 в 02:03
    Урааа   разабралса  с порталам  варп  типер  мозна  хватача  к   Баттле и мену  :-[ :P


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Калмык от 05 Августа 2011 в 02:40
    Создай комнату перед игровой, и там добавь объекты кнопок. При нажатии на которые должна происходить смена комнаты.
    А пример откуда вообще?
    *судя по IP участник из Риги, так что он скорее язык не знает, чем прикалывается :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 05 Августа 2011 в 14:07
    Найди сначала устройство для того, что бы записать игру на катридж.

    а такое впринципе возможно сейчас? всмысле с нашими технологиями?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Августа 2011 в 14:36
    Одним из основных свойств картриджей является невозможность их перезаписи — информация в них программируется сразу в процессе изготовления масочных ПЗУ.
    http://ru.wikipedia.org/wiki/Игровой_картридж - почитай. Т.е. там, такой информации, какую мы видим на диске или флешке и нет. Картридж - он как бы устройство, дополняющее основное устройство приставки.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 05 Августа 2011 в 14:43
    Hellboy, теоретически это возможно, но это требует соответствующих умений и познаний, которых у тебя нет. Лучше забудь об этом.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 05 Августа 2011 в 15:43
    Одним из основных свойств картриджей является невозможность их перезаписи — информация в них программируется сразу в процессе изготовления масочных ПЗУ.
    Существуют флеш - картриджи и соответствующие программаторы для них, так что, не правда.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 05 Августа 2011 в 16:28
    Да и масочные ПЗУ однократно всё же программируются. Отправляешь игру сеге, и она тебе делает картридж, да, лично тебе. :D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 05 Августа 2011 в 17:16
    Даже в наше время?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 05 Августа 2011 в 17:20
    Кстати, Толич, ты хабре зарегался?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 05 Августа 2011 в 17:27
    Да и масочные ПЗУ однократно всё же программируются. Отправляешь игру сеге, и она тебе делает картридж, да, лично тебе. :D
    ага и сколько ето будет по споймости?
         3 лимона?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 05 Августа 2011 в 18:39
    ага и сколько ето будет по споймости?
    Штучно чуть больше, чем дохрена, конечно. Но вдруг она им так понравится, кто они её пустят в серию, так тебя еще наймут сиквел делать.8)
    Кстати, Толич, ты хабре зарегался?
    А зачем мне хабра?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 05 Августа 2011 в 18:46
    Одним из основных свойств картриджей является невозможность их перезаписи — информация в них программируется сразу в процессе изготовления масочных ПЗУ.
    http://ru.wikipedia.org/wiki/Игровой_картридж - почитай. Т.е. там, такой информации, какую мы видим на диске или флешке и нет. Картридж - он как бы устройство, дополняющее основное устройство приставки.

    ну да, а как же тогда на комп перекидывают эти игры? всмысле, есть же эмуляторы для старых игр, так эти игры на компе ведь.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 05 Августа 2011 в 18:47
    Hellboy, теоретически это возможно, но это требует соответствующих умений и познаний, которых у тебя нет. Лучше забудь об этом.

    я спросил чтобы мне ответили, стоит вообще задумываться этим вопросом и пытаться его решить. щас нет, потом может быть будут.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Августа 2011 в 19:04
    ну да, а как же тогда на комп перекидывают эти игры? всмысле, есть же эмуляторы для старых игр, так эти игры на компе ведь.
    С помощи интерпретаторов же. Считать и переделать.
    Или ты полагаешь, что на картридже просто находится такой же файлик, какой ты в эмуляторе играешь?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 05 Августа 2011 в 19:12
    В каком-то смысле там такой файлик и есть — информация есть информация. А зашит он в ПЗУ или в виде дискового файла, несущественно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 05 Августа 2011 в 19:15
    Ну я не спорю, что информация есть, но ведь для того, что бы современная ОС её "понимала" её ведь надо обработать?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 05 Августа 2011 в 19:25
    сначала эти игры делают на компе, потом уже в картриджи перекидывают. так? вот надо просто у знающих людей спросить и оборудование достать. и ещё игру обработать должным образом чтобы по требованиям подходила. так?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 05 Августа 2011 в 19:45
    Ну я не спорю, что информация есть, но ведь для того, что бы современная ОС её "понимала" её ведь надо обработать?
    Ее нужно эмулировать, а не интерпретировать. Разница большая, между прочим.
    При эмуляции не только интерпретируется байт-код процессора, но и пишутся программные аналоги железа таргет-платформы, при чем, во всех тонкостях, даже баги эмулируют.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 05 Августа 2011 в 19:51
    Hellboy, Написать транслятор не получится, на сколько я знаю. Просто, ГМ не хранит байт-код где либо, тебе прийдется обрабатывать высоко уровневый исходник игры на ГМ. Тебе нужно написать компилятор ГМЛ для Sega.

    П.С. Блеять, нет, нет! Я хочу написать компилятор языка программирования под сегу, нет!!! А если серьезно, то поработили меня эти компиляторы и интерпретаторы. С апреля пишу только ВМ и компиляторы, постоянно что-то переписываю, на игры вообще забил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Hellboy от 05 Августа 2011 в 19:52
    Ну я не спорю, что информация есть, но ведь для того, что бы современная ОС её "понимала" её ведь надо обработать?
    Ее нужно эмулировать, а не интерпретировать. Разница большая, между прочим.
    При эмуляции не только интерпретируется байт-код процессора, но и пишутся программные аналоги железа таргет-платформы, при чем, во всех тонкостях, даже баги эмулируют.

    почему "даже"? баг - это же ведь тоже информация, в виде 1 и 0, и системе всё равно, что это: человечек застрял на платформе или просто пиксели трахаются.
    баг - это не вирус. правильно я говорю?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 05 Августа 2011 в 20:24
    Нет, ты ни черта не понял.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 05 Августа 2011 в 20:34
    а может хватит всем даблпостить?
     :doit:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 05 Августа 2011 в 21:01
    Маленький еще, порядки наводить.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SleepyMenLv от 05 Августа 2011 в 22:48
    ааа  я не виехал ета вапроси  или странича флуда   че за нахрин  ;D Гение


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Sa.Bes. от 06 Августа 2011 в 08:11
    во во и я про то же мне бан хотели дать за один раз а тут хоть за банься  :o


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 06 Августа 2011 в 14:50
    Если я тебя правильно понял, то да.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 06 Августа 2011 в 14:57
    with (object1.id)
    {
        show_message('test');
    }

    у меня это сработало. Или ты имел что-то другое ввиду?.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 06 Августа 2011 в 15:11
    with(o_gamea_plr.id)
    {
       if image_index=0
       {
           with(other.id)
           {
             vspeed-=2
           }
       }
    }
    В чём тут ошибка?
    Интересно, зачем тебе такая НЁХ. Нельзя было написать
    ///
    if (o_gamea_plr.image_index=0)
    {
       vspeed-=2;
    }
    ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 06 Августа 2011 в 15:21
    А куда делась проверка id?
    Ты написал with (object.id), так выполнится проверка переменной в одном из объектов. С if (object.image_index=0) то-же самое.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 06 Августа 2011 в 15:30
    with (object.id)? Нет, не выполняется. Что-бы выполнялось, нужно отправить СМС со словом "помощь" на номер 863. Надеюсь вы догадаетесь, что я помогу только так. Стоимость СМС 30 млрд руб. написать with (object).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SleepyMenLv от 07 Августа 2011 в 01:21
    ia atom ili iest kakoita skript  s priskom ili   s kordinat  +     if keyboard_check_pressed(player1boy) then room_goto(forest_1); //   || jump ||  Спасиба зараниа O0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 07 Августа 2011 в 13:08
    Слишком много ошибок, что ничего не понятно.
    Интересно, код ты пишешь тоже с опечатками?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 07 Августа 2011 в 17:30
    Хм... Нужен код, заставляющий персонажа прыгать? Я правильно понял?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 07 Августа 2011 в 17:59
    SleepyMenLv, когда тебе предлагали английский - говорилось про настоящий английский, а не такую же латиницу. Лучше уже пиши, как было. Постарайся подробнее описать то, что тебе надо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SleepyMenLv от 07 Августа 2011 в 18:32
    Гланчи  картинку    Еа или   призок или   кординати   плиз даичи Скрипт  :) :) ;) :-\ :yahoo:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 07 Августа 2011 в 18:38
    Хм... Так... По-моему персонаж должен появляться в конкретной позиции комнаты. Кажется.
    Это можно сделать так:
    1) Создаешь объект, который будет отвечать за появление героя, например o_begin и ставишь его на уровень;
    2) В событии создания этого объекта пишешь: if (room=level1) {o_hero.x=/*нужное значение*/; o_hero.y=/*нужное значение*/;}
    Вроде должно работать...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SleepyMenLv от 07 Августа 2011 в 18:47
    СПАСИБААААААААААААААААА O0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Vicu от 08 Августа 2011 в 13:40
     ишо 1 вапросик  ктотA штота слишал пра  втроини МИКРАФОН    в игру   чипа ЧС 1,6   я вкурси узе пра чат онлине в гаме макер  :)


    C   проблемаи разабралса  проста  ета дабавич нуна била   В Покемон  работаит как  Призок  Влубиу  точку  :haha: :yahoo:
    Школоло? или же ты троль??? Чтото сомневаюсь что людей младше 6-ти лет пускают в интернет, иначе ты бы умел писать...

    Кстате, есть ли в гейм мейкере возможность создать игру в двух окнах, например как в Нинтендо ДС, типа одно окно карта(точкой показывает положение гг) а другим окном игровой процесс. Интересует ответ на да или нет, и примерое объяснение как это сделать... Я работаю в Constructe'е так там это можно реализовать через передачу данных в ИНИ и если не ошибаюсь Массив. А тут как?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 08 Августа 2011 в 13:59
    Школоло? или же ты троль???
    Он из Риги. Латвия. Не знаю, как можно знать русский язык так, но он не первый из Латвии, кого я встречаю с такой манерой письма.

    На счёт игры в двух окнах.
    GM не позволяет создавать дополнительные окна. Есть специальные dll, но вряд ли они позволят сделать тебе то, что ты хочешь.
    Запускать два исполняемых файла - не лучшая идея, потому что так ты значительно увеличишь нагрузку на процессор и видекарту.
    А связывать окна через ини файлы... Тоже идея не из лучших. Лучше сделай всё в одном игровом окне, в крайнем случае - сделай свои окна, находящиеся в основном игровом окне.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 08 Августа 2011 в 16:19
    Кстати, можно сделать имитацию двух и более окон: при запуске игры в фулскрине сделать скриншот рабочего стола, а потом отображать на его фоне столько "окон", сколько нужно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 10 Августа 2011 в 22:18
    Хм... Очередной глупый вопрос...
    Как сменить спрайт объекту при помощи кода?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 10 Августа 2011 в 22:23
    sprite_index = ololo;
    Читай справку.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 10 Августа 2011 в 22:25
    Хм... Да, спасибо. Упустил.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 11 Августа 2011 в 11:04
    помогите
    как-нибудь можно написать скрипт (для гонок)
    если объект(obj_car1)перед объектом(obj_car2)то {draw_text(20,40,1st)}
    если объект(obj_car2)перед объектом(obj_car1)то{draw_text(20,40,2st)}


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 11 Августа 2011 в 11:14
    Что значит перед?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 11 Августа 2011 в 11:16
    Смотря как устроены  :) Если вертикальная трасса, то достаточно сравнить y объектов:
    var txt; txt = "";
    if(obj_car1.y<obj_car2.y) {txt = "1st";} else {txt = "2nd";}
    draw_text(view_xview[0]+20, view_yview[0]+40, txt);

    Если горизонтальная, то нужно просто таким же образом сравнить x (правда, тогда первым будет тот, у кого x больше, так что нужно изменить знак > на < в проверке).

    Если как-нибудь по-другому, то и сделать нужно по-другому  ;D

    P.S. Вертикальная трасса - едем снизу вверх, горизонтальная - слева направо. Если наоборот, то нужно, опять же, изменить знак в проверке на противоположный.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 11 Августа 2011 в 11:30
    я делаю трассу в 3d и тогда вродь над измерять z


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 11 Августа 2011 в 11:35
    Не нужно ее измерять. Самый просто способ - расставляй на трассе чек-поинты, кто первый его пересечет, тот едит первый. Кто второй - тот второй и т.д. Но вообще, это не гуд решение.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 11 Августа 2011 в 11:39
    хм ,а как сделать определение что кто-то проехал первым


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Tkachov от 11 Августа 2011 в 11:44
    Кто столкнулся - тот убивает чекпоинт и обновляет статус. Следующий уже не столкнётся с чекпоинтом и не сможет обновить статус на себя.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: lesha_lesha от 11 Августа 2011 в 11:53
    tkachov
    спасибо


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 11 Августа 2011 в 19:46
    Хм... Извиняюсь, но возможно ли отрисовать объект двумя кадрами одного спрайта так, чтобы у одного кадра глубина была меньше глубины главгероя, а у второго больше? Или все же необходимо задействовать два объекта с разной глубиной?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 11 Августа 2011 в 20:15
    Этот вопрос, видимо, так же вечен, как и сам GM.
    Есть два выхода:
    1. Как ты и предположил, использовать два объекта.
    2. В одном объекте сначала рисовать первый кадр всех нужных объектов (with ...), после - спрайт героя, а после второй кадр нужных объектов.
    3. Что-нибудь более замороченное.

    Дерзай  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 11 Августа 2011 в 20:33
    DeatHSoul, благодарю за разъяснение.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Gavolot от 13 Августа 2011 в 14:59
    Не знаю может кто сталкивался с такой проблемой, у меня есть юниты и здания. юниты любят обьезжать здания по сетке, юниты их обьезжают или обходят профессионально, тоесть как во всех серьёзных ртс, но проблема в том что когда здание уничтожается как либо образом, то юнит всю-равно обьезжает его призрак, щитает здание за препятствие, только теперь даже без обьекта Wall, который создается в create любого здания.А юниты должны обьезжать именно его. Так вот поинт куда юниты едут после того как пользователь их направит должны отталкиваться от Wall и они отталкиваются, а когда валла нету юнит туда даже ехать не хочет, так как место вроде как досих пор занято, тоесть я проверил все валл уничтожается. А когда я пробовал использовать (возможно я обсулютно не правильно это сделал) команды mp_grid_clear_all(id), mp_grid_destroy(id), то получалось только то что у меня здание просто исчезало =))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 13 Августа 2011 в 15:02
    Тебе нужно очистить тот участок сетки, на котором стояло здание.
    Например, если в create event объекта стены заполняешь сетку подобным образом:
    mp_grid_add_rectangle(grid, bbox_left, bbox_top, bbox_right, bbox_bottom);
    То в событии destroy следует очистить это место:
    mp_grid_clear_rectangle(grid, bbox_left, bbox_top, bbox_right, bbox_bottom);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 13 Августа 2011 в 15:06
    Используй mp_grid_clear_cell(id,h,v) в событии уничтожения здания.
    Например, если ты использовал
    ///Создание
    mp_grid_add_cell(grid,5,5);
    mp_grid_add_cell(grid,6,5);
    mp_grid_add_cell(grid,5,6);
    mp_grid_add_cell(grid,6,6);
    То нужно использовать
    ///Смерть
    mp_grid_clear_cell(grid,5,5);
    mp_grid_clear_cell(grid,6,5);
    mp_grid_clear_cell(grid,5,6);
    mp_grid_clear_cell(grid,6,6);
    Только учти, что эти числа не x и y, а x/размер_клетки и y/размер_клетки.

    P.S. У тебя движение идёт через path_start или другим методом?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Gavolot от 13 Августа 2011 в 15:46
    path_start.
    У меня Wall делает так, при создании делается аларм_1 и в аларме
    {
     mp_grid_add_instances(global.grid, id, 1);
     mp_grid_add_instances(global.grid_2, id, 1);
    }
    Ну а мне надо чтобы при уничтожении здания, я типо обращаюсь к валлу и заставляю его очистить сетку перед уничтожением.
    Я знаю как обращаться если что =)) Я просто пытался разными способами, я на это убил 48 часов если не больше и наконец понял что сам не смогу =)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 13 Августа 2011 в 16:06
    Да уж, с точной проверкой столкновений мороки будет больше.
    Суть:
    В двух циклах проверяй все позиции от bbox_left до bbox_right и от bbox_top до bbox_bottom объекта, увеличивая шаг на размер клетки. В теле цикла проверяй, находится ли в этой позиции нужный объект, с помощью функции position_metting. Если находится - очищай ячейку с помощью функции mp_grid_clear_cell.
    С помощью функции mp_grid_draw(id)  проверь, точно ли все ячейки очищаются, и не очищаются ли лишние.

    Если тебе не нужна точная проверка столкновений для зданий - используй тот же mp_grid_clear_rectangle(grid, bbox_left, bbox_top, bbox_right, bbox_bottom).

    Кстати, не обязательно использовать alarm 1. Можешь после создания сетки написать подобный код:
    mp_grid_add_instances(global.grid, Wall, 1);
    mp_grid_add_instances(global.grid_2, Wall, 1);


    Название: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: QAZWS от 15 Августа 2011 в 16:34
    Помогите ограничить движение героя за прицелом(мышкой)!
    У меня игрок движется за прицелом(переворачивается на 360%)


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: Voldeniaar от 15 Августа 2011 в 17:54
    Хм... Может, не процентов, а градусов?
    Думаю, хватит if image_angle>45 {image_angle=45;}.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 19 Августа 2011 в 20:08
    Хм... У меня такой вопрос...
    Предположим, у меня есть этакая рамка, обозначающая место будущей постройки здания, которая следует за мышкой... Как проще всего сделать, чтобы она следовала не ровно за курсором, а могла располагаться только в квадратах размером, допустим, 64*64.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 19 Августа 2011 в 20:31
    //Скрипт align
    return argument0-(argument0 mod 64);

    //Код
    x=align(mouse_x);
    y=align(mouse_y);


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 19 Августа 2011 в 20:40
    Или
    x = (x div 64) * 64;
    y = (y div 64) * 64;


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 19 Августа 2011 в 20:43
    Спасибо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SkillFX от 19 Августа 2011 в 22:28
    ага, реально полезный код, а тоже самое можно использовать для рандомного появления травы но чтобы она появлялась в квадратах 32х32?? (трава квадратная с видом сверху)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 20 Августа 2011 в 00:13
    Можно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 21 Августа 2011 в 18:50
    Здравствуйте.
    Здесь есть специалисты по созданию четырехмерных массивов в GM? Я делаю точечные анимации юнитам, и мне нужно получить что-то вроде
    global.animation_point[тип анимации (walk, attack, death, ...) , № кадра , № точки (1, 2, 3, ...) , атрибут (x, y, поворот, картинка, ...)] = значение
    Конкретно:
    У меня есть человечек (http://sergeypolik.ru/wp-content/plugins/checkbot/images/Default/3.jpg).
    У человечка есть переменные анимации - ходьба, бег, атака, смерть и т.п.
    Человечек состоит из 10 точек - 2 на туловище, 4 на руках, 4 на ногах (голова не учитывается). Точки соединены.
    Каждая его точка в свою очередь имеет две координаты + некие переменные атрибуты.

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


    Название: Re: Ответы@Gmakers.ru
    Отправлено: b1Nt от 21 Августа 2011 в 19:07
    Пару дней назад наткнулся на гм решил попробовать свои силы в создании "игры". Так как мои познании в гмл и каким либо еще языкам программирования равны нулю обучаюсь гмл по примерам.
    на данный момент есть одна проблема. Делаю рпг с видом сверху решил реализовать систему боя как создание обьекта "оружие" в координатах объекта атакующего
    отлично получилось реализовать это на глав герое, но на врагах не получилось если несколько мобов бегут за глав героем объект "оружие" создается только у одного моба, остальные тупо бегут за гг. Догадываюсь что это можно исправить добавив что то указывающее на ид моба, а так же искал примеры стрельбы врагов в TDS играх-не нашел.

    версия GM - лайт.

    В степе у врага
    if distance_to_object(o_hero)<200
    {
    mp_potential_step(o_hero.x+random(5),o_hero.y+random(5),2,0);
    image_angle=o_hero
    }
    image_angle=direction
    if heal<0
    {instance_change(trup,1)
    global.xp+=50}
    if point_distance(o_ork.x,o_ork.y,o_hero.x,o_hero.y) <10
    {
    instance_create(o_ork.x,o_ork.y,o_mob_weap)
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 21 Августа 2011 в 19:14
    if point_distance(o_ork.x,o_ork.y,o_hero.x,o_hero.y) <10
    {
    instance_create(o_ork.x,o_ork.y,o_mob_weap) //Тут, получается, ты создаешь оружие первому попавшемуся мобу.
    }
    Есть такая прекрасная конструкция with.
    if point_distance(o_ork.x,o_ork.y,o_hero.x,o_hero.y) <10
    {
    with o_ork instance_create(x,y,o_mob_weap) //Теперь оружие будет у всех врагов, но... Главное правильно "прицепить" оружие к своему обладателю.
    /*
    Например, можно задать переменную owner, которая будет хранить id хозяина, и двигаться за ним. (owner.x, owner.y ...)
    */
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: b1Nt от 21 Августа 2011 в 19:17
    спасибо!)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 21 Августа 2011 в 19:55
    Здесь есть специалисты по созданию четырехмерных массивов в GM?
    способ в лоб: создаётся спец. объект (допустим, human_frame).
    1) Массив global.animation_point[тип анимации,№ кадра] заполняется значением instance_create(0,0,human_frame).
    2) Заполняются вторичные массивы вроде global.animation_point[тип анимации,№ кадра].frame[№ точки,атрибут].
    3) В качестве побочного эффекта, юнит можно рисовать просто нужным кадром (а остальные disable или hide).

    2 способ использует простую математику: если массив M*N*P*Q и M, N, P и Q заранее известны:
    global.animation_point[тип анимации*N+№ кадра,№ точки*Q+атрибут]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 21 Августа 2011 в 20:10
    2 способ использует простую математику: если массив M*N*P*Q и M, N, P и Q заранее известны:
    global.animation_point[тип анимации*N+№ кадра,№ точки*Q+атрибут]
    Заинтересовало. Но тут какое-то несходство: когда M=2; N=2, в первой ячейке получится 6, также как и с M=5; N=1. Или я не так вас понял?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 21 Августа 2011 в 21:47
    Заинтересовало. Но тут какое-то несходство: когда M=2; N=2, в первой ячейке получится 6, также как и с M=5; N=1. Или я не так вас понял?
    Вообще не понял реплику. Что еще за первая ячейка и почему в ней 6?
    Когда M=5, N=10, P=9, а Q=25, обращение к произвольному элементу массива global.animation_point[тип анимации*10+№ кадра,№ точки*25+атрибут], где тип анимации - от 0 до 4, № кадра - от 0 до 9, № точки - от 0 до 8, а атрибут - от 0 до 24. Наименования индексов четырёхмерного массива такие же, как в ТЗ. ;p


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 21 Августа 2011 в 22:21
    global.animation_point[тип анимации*N+№ кадра,№ точки*Q+атрибут]
    Я не понял, почему вы смешали M, N, P и Q с тип анимации, № кадра, № точки, атрибут, почему ограничили их. И причем тут M и P вообще. Сколько не перечитывал, сколько не пытался посчитать, все равно появлялись как минимум 2 вариации чисел, которые по "формуле" давали один и тот же результат. Можете пожалуйста объяснить конкретно. Вы пытаетесь сымитировать четырехмерный массив за счет увеличения двухмерного? Например, есть абстрактное array[A,B,C,D]=val. Как тогда? Ведь A, B, C, D - абсолютно произвольные числа (от единицы до пятидесяти точно). Нужно получить заданное ранее val зная A, B, C и D.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 21 Августа 2011 в 22:50
    Я не понял, почему вы смешали M, N, P и Q с тип анимации, № кадра, № точки, атрибут, почему ограничили их.
    M, N, P и Q - предельная размерность исходного массива, именно они ограничивают индексы.
    Если они известны... далее по тексту. Если не известны, можно взять достаточно большими, например, 100. К сожалению, GM ограничивает диапазон индекса по одному измерению числом 32000, так что слишком большими (тысячи!) их взять не получится.
    И причем тут M и P вообще.
    Хотя они не участвуют в формуле пересчёта, их желательно помнить хотя бы для того, чтобы примерно представлять, сколько памяти съедят данные в массиве.
    Вы пытаетесь сымитировать четырехмерный массив за счет увеличения двухмерного?
    Нет, конечно. Массивы в GMaker увеличить никак нельзя: 32000 по одному измерению, всего не более миллиона ячеек. Кстати, с этим массивом могут быть проблемы: 50*50*50*50=6250000>1000000. Надо думать, как ограничить размеры.
    Можете пожалуйста объяснить конкретно.
    Например, есть абстрактное array[A,B,C,D]=val. Как тогда? Ведь A, B, C, D - абсолютно произвольные числа (от единицы до пятидесяти точно). Нужно получить заданное ранее val зная A, B, C и D.
    От единицы? :o Обычно люди от нуля считают, но ладно: global.animation_point[A*50+B-51,C*50+D-51]=val;
    Если A=3, B=12, C=42, D=6, val=130, то global.animation_point[111,2045]=val;
    P.S. -51 это вместо того, чтобы из A, B, C и D вычитать 1 индивидуально.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 21 Августа 2011 в 23:09
    global.animation_point[A*50+B-51,C*50+D-51]=val;
    Спасибо огромное! То есть, вот эти цифры - это граничное значение A, B, C и D. Тогда прекрасно. D ограничится в 5 (5 аттрибутов), C - в 10 (10 точек), B - в 20 (больше кадров я думаю не понадобится) и A тогда можно будет подтянуть.
    Спасибо за советы. Теперь проверим, насколько это все быстро будет работать :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 21 Августа 2011 в 23:20
    Нет, как раз граничных для A и C тут нет. ;D Первое 50 - граница для B, второе для D.
    А 51=50+1: (A-1)*50+(B-1) => A*50-50+B-1 => A*50+B-51. А единица вычитается, чтобы использовать таки индексы от 0 до требуемого максимума. Если B и D будут максимум 20 и 5, то формула примет вид:
    global.animation_point[A*20+B-21,C*5+D-6]=val;
    Массив будет занимать до 1000*A ячеек.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 22 Августа 2011 в 00:56
    Цитата.
    if point_distance(o_ork.x,o_ork.y,o_hero.x,o_hero.y) <10
    {
    instance_create(o_ork.x,o_ork.y,o_mob_weap) //Тут, получается, ты создаешь оружие первому попавшемуся мобу.
    }
    Есть такая прекрасная конструкция with.
    if point_distance(o_ork.x,o_ork.y,o_hero.x,o_hero.y) <10
    {
    with o_ork instance_create(x,y,o_mob_weap) //Теперь оружие будет у всех врагов, но... Главное правильно "прицепить" оружие к своему обладателю.
    /*
    Например, можно задать переменную owner, которая будет хранить id хозяина, и двигаться за ним. (owner.x, owner.y ...)
    */
    }

    А может всё-таки просто
    if point_distance(x, y, o_hero.x, o_hero.y) < 10
    {
        instance_create(x, y, o_mob_weap);
    }
    Или я не правильно понял задачу?


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: QAZWS от 22 Августа 2011 в 13:47
    Хм... Может, не процентов, а градусов?
    Думаю, хватит if image_angle>45 {image_angle=45;}.

    Помогите ограничить движение героя за прицелом(мышкой)!
    У меня игрок движется за прицелом(переворачивается на 360%)
    ЧТОБЫ МЕНЯЛСЯ СПРАЙТ ГЕРОЯ!


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: ZitRo от 22 Августа 2011 в 16:12
    Помогите ограничить движение героя за прицелом(мышкой)!
    У меня игрок движется за прицелом(переворачивается на 360%)
    ЧТОБЫ МЕНЯЛСЯ СПРАЙТ ГЕРОЯ!
    Менять спрайт так:
    sprite_index=Имя_спрайта_в_ресурсах
    А вообще ничего не понятно что и как вы хотите ограничить. Чтобы он к нему передвигался не мгновенно, а постепенно? Тогда в step герою:
    mp_potential_step(mouse_x,mouse_y,скорость движения,проверять ли столкновения)
    Объясняйте проблему доступно, телепатов тут нет.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 22 Августа 2011 в 21:22
    Никак не могу понять почему это не работает... Допустим, объектов двое. Вот код в создании объекта:
    with object0
      {
      if self.id!=other.id
        {
        other.target = self;
        };
      };
    А вот в draw чисто для проверки:
    draw_sprite(sprite_index,image_index,x,y)
    draw_arrow(x,y,target.x,target.y,14)
    Но почему же target'ом становится тот же объект, а не другой?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 22 Августа 2011 в 21:59
    Но почему же target'ом становится тот же объект, а не другой?
    Потому, что self=-1. Это совершенно бесполезный костыль для получения значений переменных текущего экземпляра. Для того, чтобы действительно ссылаться на нужный экземпляр объекта, нужно писать other.target=id;.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 22 Августа 2011 в 22:24
    Да, пробовал. Получается теперь вот так
    (http://i.piccy.info/i5/79/94/1889479/2011-08-22_202319.png)
    В идеале же стрелка так же должна рисоваться и от первого объекта...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 22 Августа 2011 в 22:57
    Спрайт одного объекта закрывает стрелку другого.  ;)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 23 Августа 2011 в 00:08
    Спасибо большое, действительно. ;D
    На самом же деле я допустил еще одну ошибку, из-за которой думал, что все неверно. Функция distance_to_object неправильно считает расстояние для объектов без спрайта. Еще раз спасибо, извините за беспокойство.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 23 Августа 2011 в 17:06
    Я конечно писал что больше не буду спрашивать. Но Делать было нечего и дело было "Утром)" Как настроить силу стрельбу с направлением и гравитацией для оружия?(если стрельба на пробел,выбор траектории клавиши вверх и вниз)Чтобы получилось как в Worms или в wormix или лутче всега как в бумз(пример бумз http://bb.mail.ru/ ) Заранее спс! :empathy:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 23 Августа 2011 в 18:46
    Заметь, у тебя в примере image_index при выстреле всегда равняется нулю. Я бы посоветовал рисовать прямоугольник, или вообще считать силу через переменные. Гравитация для объекта - gravity. И не забудь править трение friction=0 для свободного полета.


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: QAZWS от 24 Августа 2011 в 00:17
    У МЕНЯ ВОЗНИКЛА проблема с кодом  изменение спрайтов относительно мышки с 2 сторон (работает или 1 код право-лево или 2 вверх-вниз)
    1)
    if mouse_x>x {sprite_index=sprite_HelovPPP} else {sprite_index=sprite_HelovLLL;}
    2)
    if mouse_y>y {sprite_index=sprite_Helov_B} else {sprite_index=sprite_Helov0;}


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: QAZWS от 24 Августа 2011 в 00:19
    У МЕНЯ ВОЗНИКЛА проблема с кодом  изменение спрайтов относительно мышки с 2 сторон (работает или 1 код право-лево или 2 вверх-вниз)
    1)
    if mouse_x>x {sprite_index=sprite_HelovPPP} else {sprite_index=sprite_HelovLLL;}
    2)
    if mouse_y>y {sprite_index=sprite_Helov_B} else {sprite_index=sprite_Helov0;}


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: ZitRo от 24 Августа 2011 в 00:28
    1)
    if mouse_x>x {sprite_index=sprite_HelovPPP} else {sprite_index=sprite_HelovLLL;}
    2)
    if mouse_y>y {sprite_index=sprite_Helov_B} else {sprite_index=sprite_Helov0;}
    Нужно чтобы во все четыре стороны? Тогда
    var dir;
    dir = ceil((point_direction(x,y,mouse_x,mouse_y)-45)/90);//Получим направление от 0-3
    switch dir
      {
      case 0: sprite_index=sprite_HelovPPP; break;
      case 1: sprite_index=sprite_HelovB; break;
      case 2: sprite_index=sprite_HelovLLL; break;
      case 3: sprite_index=sprite_Helov0; break;
      }
    Оно?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: b1Nt от 24 Августа 2011 в 03:07
    И снова здравствуйте. Решил переделать систему боя в своей рпг и появилась проблема
    сделал так что бы объект оружие появлялся в начале игры и следовал за героем, а при атаке изменял свой спрайт в зависимости от оружия. сделал "атаку" т.е. смену спрайта на кнопку А, но при атаке показывается только 1 кадр спрайта помогите исправить или подскажите в чем беда.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 24 Августа 2011 в 11:30
    1) Странно, что оружие следует за героем, а не движется вместе с ним. { x=o_hero.x; y=o_hero.y; } или { with o_hero { other.x=x; other.y=y; }
    2) Когда устанавливается спрайт, если номер текущего кадра больше числа его кадров, номер кадра приводится в нужный диапазон: если номер кадра 5, а число кадров 2, будет 1. В нашем случае, ставится спрайт с 1 кадром — всегда будет 0.
    3) Если во время атаки поднять новое оружие, продолжение атаки будет с новым оружием? Хахаха!
    Мысли:
    1) Поднимать оружие, только если текущее "кулаки", а чтобы поднять новое ввести команду дропа, тогда внезапно не будет ситуаций вроде "мой супер-мега-ножик" внезапно заменился какой-то хренью".
    [attachment=1]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: b1Nt от 24 Августа 2011 в 19:13
    3) Если во время атаки поднять новое оружие, продолжение атаки будет с новым оружием? Хахаха!
    Мысли:
    1) Поднимать оружие, только если текущее "кулаки", а чтобы поднять новое ввести команду дропа, тогда внезапно не будет ситуаций вроде "мой супер-мега-ножик" внезапно заменился какой-то хренью".

    На счет этого я вообще еще не думал.)
    А за пример спасибо.


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: QAZWS от 25 Августа 2011 в 13:03
    Проблема при удалении прицела! Справа работает 2 спрайта ;СЛЕВА 1 СПРАЙТ ЛЕВО 1 ПРАВЫЙ


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: QAZWS от 25 Августа 2011 в 13:04
    Проблема при удалении прицела! Справа работает 2 спрайта ;СЛЕВА 1 СПРАЙТ ЛЕВО 1 ПРАВЫЙ


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: QAZWS от 25 Августа 2011 в 13:07
    Спасибо за помощь!
    Проблема с курсором -показывается 2 курсора(прицел и Windous)как убрать курсор Windous?


    Название: Re: Помогите ограничить движение героя за прицелом на 45%!
    Отправлено: tolich от 25 Августа 2011 в 13:11
    Проблема с курсором -показывается 2 курсора(прицел и Windous)как убрать курсор Windous?
    [attachment=1]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amigo от 25 Августа 2011 в 16:54
    Помню что где то читал статью, про то что на ГМ можно разделатять спрайты из изображения(в котором много разных спрайтов) НО не как не могу найти её.Может кто нибудь знает как?И еще вопрос,можно на гм как то сделать чтоб у гг каждый пиксель при определеных условиях менял цвет?Например пулю попала в определеный пиксель на голове гг,он стал черного цвета и возле этого пиксель еще красные пиксели(кровь).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 25 Августа 2011 в 17:23
    Помню что где то читал статью, про то что на ГМ можно разделатять спрайты из изображения(в котором много разных спрайтов) НО не как не могу найти её.
    раз (http://gmakers.ru/gamemaker_help/source/files/202_02_strips.php) два (http://gmakers.ru/gamemaker_help/source/files/409_01_sprites.php)


    Название: Проблема с исходником?
    Отправлено: ZitRo от 26 Августа 2011 в 16:49
    В общем...
    Делал я проект, делал уже на протяжении недели, пока не случилось нечто...
    Поскольку комп у силен, я особо не трудился над оптимизацией, потому проверял все как есть. Но вот сегодня посмотрел как мой проект нагружает процессор и убился об стену.
    Постепенно, по одной детали я начал разбирать дубль проекта, дабы узнать, что его нагружает. Объект за объектом удалял из комнат, закомментировал все скрипты, потом начал удалять... Как вдруг удалять стало нечего. ВСЁ. В проекте только одна лишь пустая комната. Феноменально, но нагрузка на процессор не упала. Удалил комнату, создал новую - опять. КАК ЭТО? Попробовал создать другой .gmk - все нормально вроде бы... Это поврежденный исходник? Придется мне переносить все в новый .gmk или же что-то сделать с GM? Прилагаю исходник и .ехе... В чем проблема ума не приложу.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 26 Августа 2011 в 17:18
    Экспериментальным путём было выявлено, что виновница нагрузки на ЦП - вертикальная синхронизация, включенная в глобальных настройках игры.
    Fix. (в первый раз не заметил её, и вписал интерполяцию).

    Кстати, меня всегда мучил вопрос, а зачем она? Может у меня дисплей такой, что я не вижу разницы?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 26 Августа 2011 в 17:26
    Спасибо, действительно, вся вина в этой настройке... Я тоже никогда не замечал разницы, но почему-то верил что с ней будет лучше. Теперь я ее буду ненавидеть ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 26 Августа 2011 в 17:33
    Да, при импорте ресурсов, если выбрать пункт "Keep Last Changed", глобальные настройки и информация про игру не будут загружены, так как те, что установлены в данный момент - считаются новее (и верт. синхронизация будет выключена, очевидно).

    Я всегда видел в верт. синхронизации только минусы  :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 26 Августа 2011 в 21:41
    Кстати, меня всегда мучил вопрос, а зачем она?
    Вертикальная синхронизация синхронизирует обновление кадров с частотой обновления монитора. Без нее в некоторых случаях на мониторе будут мелькать куски предыдущего кадра. Если разница между кадрами заметна (например, если в FPS резко повернуть камеру), то эти артефакты будут бросаться в глаза.
    Лучше дать возможность пользователю самому включать или выключать синхронизацию.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 27 Августа 2011 в 15:41
    Хм, действительно, артефакты есть. Всегда играл с выключенной синхронизацией, но никогда подобного не замечал. Хотя...

    Лучше дать возможность пользователю самому включать или выключать синхронизацию.
    Продолжение треда про интерфейс и игровые опции здесь (http://gmakers.ru/index.php?topic=5705.0).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 28 Августа 2011 в 17:41
    Кто нибуть скиньте инструкцию как сделать онлайн игру а то в поиске либо сами игры либо такие же вопросы...  :(


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 28 Августа 2011 в 17:57
    Ну сколько же можно-то...
    Статьи про создание онлайн игры с помощью стандартных функций ищи сам, у нас даже на форуме была такая.
    Вот тебе про 39dll, это длл для созданий онлайн игр на GM.
    Читай, смотри, изучай и экспериментируй.
    • Программирование онлайновых игр. Часть первая (http://creadev.fsay.net/index.php?module=articles&id=39)
    • Видео уроки по созданию онлайн игры на 39DLL, ссылки на скачивания на .blanco (http://blanco.ucoz.ru/blog/gm_video/2010-08-16-272)
    • Те же видео уроки по созданию онлайн игры на 39DLL, смотреть Вконтакте. (http://vkontakte.ru/club19404141)
    • Сайт о создании мморпг на 39dll, англ. (http://www.howtomakeanmmorpg.com/index.html)
    • Русское сообщество 39dll. (http://39dll.ru)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Amaterasu от 28 Августа 2011 в 18:03
    Ну сколько же можно-то...
    Статьи про создание онлайн игры с помощью стандартных функций ищи сам, у нас даже на форуме была такая.
    Вот тебе про 39dll, это длл для созданий онлайн игр на GM.
    Читай, смотри, изучай и экспериментируй.
    • Программирование онлайновых игр. Часть первая (http://creadev.fsay.net/index.php?module=articles&id=39)
    • Видео уроки по созданию онлайн игры на 39DLL, ссылки на скачивания на .blanco (http://blanco.ucoz.ru/blog/gm_video/2010-08-16-272)
    • Те же видео уроки по созданию онлайн игры на 39DLL, смотреть Вконтакте. (http://vkontakte.ru/club19404141)
    • Сайт о создании мморпг на 39dll, англ. (http://www.howtomakeanmmorpg.com/index.html)
    • Русское сообщество 39dll. (http://39dll.ru)
    Cпс +! :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: yoshy от 30 Августа 2011 в 07:57
    Из справки:
    image_xscale Коэффициент масштабирования спрайта по оси X для создания больших или малых изображений. Значение 1 указывает обычный размер. Вы должны отдельно установить горизонтальный xscale и вертикальный yscale размер. Изменение масштабирования также изменяет значения для ширины и высоты изображения и влияет на события столкновения. Поймите, что масштабированные изображения (в основном, когда Вы делаете их меньше), занимают для "отрисовки" больше времени. Изменение масштабирования может быть использовано для получения 3-D эффекта. Вы можете использовать величину -1, чтобы отразить зеркально спрайт по горизонтали.
    Вопрос:-Так как сделать этот 3-D эффект? мб есть у кого пример... :-\


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 30 Августа 2011 в 10:33
    Когда значение image_xscale плавно изменяется от -1 до 1, кажется что объект вращается в 3D пространстве.
    Центр спрайта должен быть посередине.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 30 Августа 2011 в 14:54
    Когда значение image_xscale плавно изменяется от -1 до 1
    По синусу лучше.
     :GM003:
    qqq=0
    scale=0
    :GM006:
    qqq+=0.05
    scale=sin(qqq)
    :GM011:
    draw_sprite_ext(sprite0,0,x,y,scale,1,0,c_white,1)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 30 Августа 2011 в 15:58
    Когда значение image_xscale плавно изменяется от -1 до 1
    По синусу лучше.
    ...
    Плавно - не значит линейно.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 30 Августа 2011 в 16:27
    Плавно - значит не дискретно. А по какой формуле это уже дело дизайнера.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 30 Августа 2011 в 17:51
    Именно это я и хотел сказать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 30 Августа 2011 в 22:46
    Будучи автором игры, которая создаёт "3d-эффект с помощью изменения image_xscale", не могу не заметить: на самом деле GM работает всё же дискретно, как и вообще любая программа и вычислительная техника вообще. Плавность преобразования не более, чем иллюзия, вызванная инертностью человеческого зрения.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 30 Августа 2011 в 22:58
    Ну ололо раз на то пошло то вообще вся вселенная дискретна. Зато вот математические функции могут давать бесконечно точные результаты, стало быть являются плавными.


    Название: Нажатие клавиши
    Отправлено: Strateg от 31 Августа 2011 в 01:55
    Подскажите, в Windows, если я нажимаю (и держу нажатой) стрелку влево, происходит одно нажатие влево, долю секунды не воспринимаются нажатия, затем с относительно большой скоростью курсор начинает перемещаться влево.
    В ГМ есть 2 события: нажатие и удержание кнопки. Если я обрабатываю нажатие, то когда держу кнопку нажатой, поступает лишь одна команда "влево". Если я обрабатываю удержание кнопки влево, то во-первых отсутствует разумная пауза между первым вводом влево и вторым. А во-вторых, скорость, с которой передаются нажатия слишком велика (то есть "на глаз" я не могу уловить, сколько времени мне удерживать кнопку нажатой, чтобы передалось только одно нажатие.)
    Описал сумбурно, но надеюсь суть передал. мне нужно, чтобы удерживаемая кнопка сообщала сигналы о нажатии так же, как в Windows: с той же паузой, с той же скоростью.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 31 Августа 2011 в 02:14
    Когда обрабатываешь зажатие кнопки - сбрасывай её состояние с помощью keyboard_clear. Получишь нужную тебе паузу.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 31 Августа 2011 в 03:28
    А я сделал вот так.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Strateg от 31 Августа 2011 в 11:48
    Спасибо, исчерпывающие ответы!
    Ogion, нифига ж себе творение!!! Работает кстати именно так, как нужно, но трудов-то сколько!!....


    Название: Re: Ответы@Gmakers.ru
    Отправлено: WaterClick от 31 Августа 2011 в 14:33
    huh? посомтрел, не думаю, что это сложно сделать для Огиона  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SkillFX от 01 Сентября 2011 в 22:29
    Вопрос:
    как зделать закреплённую на екране карту или радар, игра в 3д :D  :seek: :hmm:


    Название: Re: Ответы@Gmakers.ru
    Отправлено: WaterClick от 01 Сентября 2011 в 23:21
    Сделай как-нибудь так:

    http://gmakers.ru/index.php?topic=2644.0 (http://gmakers.ru/index.php?topic=2644.0) - радар

    Карту поищи в F.A.Q. Мне кажется, что она там есть...

    3Д от 2Д почти ничем не отличается. Тебе же не надо 3Д карту... Или надо?

    А лучше просто введи в поиск по сайту: "радар" - http://gmakers.ru/index.php?action=search2 (http://gmakers.ru/index.php?action=search2) и усё!

    Хотя, блин, на ник не посмотрел. Зачем я это Ване впариваю?  :crazy:  :-\ Или это другой Ваня? Хотя, по грамотности можно определить, что именно тот.  ;D


    Название: Re: Ответы@Gmakers.ru
    Отправлено: САНЯrus от 02 Сентября 2011 в 18:46
    а можно как нибудь изменить загрузку чтоб не полоса а допустим круговая загрузка?
    а можно  сделать так чтобы нажимая на объект1 мышкой и нажатие любой клавиши (допустим w) перемещение изменялось с кнопки вверх на кнопку w


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 02 Сентября 2011 в 18:55
    а можно как нибудь изменить загрузку чтоб не полоса а допустим круговая загрузка?
    На стандартном окне только полоска, и никак иначе. Чтобы делать нестандартную, надо:
    1) грузить все ресурсы из внешних файлов,
    2) в первой комнате отображать индикатор прогресса загрузки.
    Например, в этой игре (http://sandbox.yoyogames.com/games/164939-fps-with-md2-models-demo) я отображаю процесс загрузки в специальной комнате. Впрочем, это понять сложно, так как я отображаю полоску.

    а можно  сделать так чтобы нажимая на объект1 мышкой и нажатие любой клавиши (допустим w) перемещение изменялось с кнопки вверх на кнопку w
    Э-э-э, назначать управление? Можно (http://sandbox.yoyogames.com/games/152564).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: САНЯrus от 02 Сентября 2011 в 19:09
    спасибо


    Название: Re: Ответы@Gmakers.ru
    Отправлено: SkillFX от 07 Сентября 2011 в 23:02
    Блин, мне надо не 3д карту а карту закреплённую на экране в 3д игре
    кстати, я врятли "тот" Ваня я на сайте недавно))


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 07 Сентября 2011 в 23:21

    d3d_set_projection_ortho( 0 , 0 , view_wview[0] , view_hview[0] , 0 );
    //рисуешь, что тебе нужно
    У объекта должна быть самая маленькая глубина. Можно сделать отрицательной. Если есть освещение, его нужно отключить.


    Название: Как изменить вид в комнатах?
    Отправлено: DarkDeivel от 09 Сентября 2011 в 04:54
    Всем привет! Решил попробовать реализовать разрешения экрана и не могу понять как это сделать, я думаю что возможно есть виды в комнатах и можно на каждый вид присвоить своё разрешение, но подскажите пожалуйста какой комнадой можно переключить виды, допустим при нажатии на кнопку(ну кнопка будет сменить разрешение)?

    Я в справке нашел команду room_set_view(......)

    но не понял как работает! Спасибо за ответ!


    Название: Re: Как изменить вид в комнатах?
    Отправлено: Райдо от 09 Сентября 2011 в 10:05
    Можно, но через анальное отверстие. Суть в том, чтобы поменять размеры всех комнат. Однако, поскольку комната уже запущена, то новые настройки не применятся до её перезапуска.

    См. всеразмерный интерфейс (http://gmakers.ru/index.php?topic=4909.0).


    Название: Re: Как изменить вид в комнатах?
    Отправлено: Кто-тo от 09 Сентября 2011 в 14:45
    Я пробовал делать вид размером 640*480 и потом его менять из игры, только проблема в том что размер не будет увеличиваться больше этих 640*480, поэтому придётся делать вид 9000*9000 и потом менять на 640*480 и уже потом на желаемое разрешение и надеяться что в будущем не будет таких экранов. Хотя смысл - мы же не крузис 3 делаем.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: b1Nt от 09 Сентября 2011 в 19:14
    Как сделать полоску жизни спрайтом которая будет уменьшаться сверху вниз, а не справа налево как указано в F.A.Q.
    Этим кодом полоска жизни уменьшается снизу вверх.
    draw_sprite(sprite81,0,view_xview[0], view_yview[0]+492)
        draw_sprite_part(sprite81, 1, 0, 0,sprite_get_width(sprite81),
        sprite_get_height(sprite81)*(global.health / global.maxhealth), view_xview[0], view_yview[0]+492)



    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 09 Сентября 2011 в 19:18
    1. Открываешь справку и ищешь в ней функции, которые в этом коде используются.
    2. Разбираешься, каким образом этот код работает.
    3. Изменяешь код под свои нужды.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: b1Nt от 09 Сентября 2011 в 19:54
    1. Открываешь справку и ищешь в ней функции, которые в этом коде используются.
    2. Разбираешься, каким образом этот код работает.
    3. Изменяешь код под свои нужды.

    Отличный совет.
    Теперь другой вопрос.
    draw_sprite(sprite81,0,view_xview[0], view_yview[0]+492)
        draw_sprite_part_ext(sprite81,1,0,0,
        sprite_get_width(sprite81),
        sprite_get_height(sprite81)*(global.health / global.maxhealth),view_xview[0],view_yview[0]+590,1,-1,144,1)

    Правильное ли это решение использовать yscale=-1 или можно было проще?)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 09 Сентября 2011 в 20:00
    Короче, пока я не забыл и у меня есть время, добавьте (если этого нет) это в фак.

    Если в игре используются динамические структуры (а также сурфейсы) создаваемые в create event какого либо объекта помещенного в комнату и эта комната перезапускается (room_restart), то уничтожать динамические структуры (и сурфейсы) нужно в событии Room end, а не Game end.

    Пусть это будет памяткой, ибо как-то видел вопросы в духе "почему моя игра жрет много памяти", так вот, этим способом можно решить проблему с памятью


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 09 Сентября 2011 в 22:11
    Хорошая мысля, но еще лучше создавать нужные структуры при запуске игры и не уничтожать (правда с рестартом игры есть заморочки, но я уже писал что-то такое в хитростях).


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Entoursis от 10 Сентября 2011 в 21:14
     Вопрос по циклу.
    Зачем нужен цикл я понял - он позволяет последовательно перебирать значения и потом подставлять их в различные выражения. То что цикл это for(a;b;c) где а - начальная величина, с - на сколько увеличивать начальную величину, b - до какого момента увеличивать величину (пока не станет ложным) - это я тоже понял. Но... что такое цикл в сущности? Это переменная, то что может быть значением переменной? Суть проблемы - я делаю на кнопках, не люблю коды, и я просто не совсем понимаю в какую кнопку и в качестве чего я могу пихнуть цикл. Если это исключительно кодовая фича - то так и напишите, сделать часть с циклом кодом, а остальное кнопками - это решение проблемы, но не очень так хочется, к тому же я сильно сомневаюсь что кнопками это нереализуемо, потому что в моей личной практике не разу не было случая когда я не смог бы написать кнопками что-либо, даже когда мне говорили что это практически нереально.

    Заранее спасибо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 10 Сентября 2011 в 22:28
    Можно и на кнопках: Control => Repeat.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 10 Сентября 2011 в 22:33
    Entoursis, такие вещи очень удобно писать кодом, и позже, когда ты его освоишь ты поймешь что кнопки - это что-то ужасное.
    Несколько лет назад я работал на кнопках. Там если не ошибаюсь есть только repeat (повторить n-ое кол-во раз). Что бы повторить несколько действий, нужно пользоваться кнопками <start of a block> ... <end of a block>.
    Кодом вот так:
    var i; //i - временная переменная, которая будет использоваться только тут.
    for(i=1;i<=10;i+=1) // (i=1; до тех пор пока i меньше 10 крутить цикл с шагом 1 (i=1,i=2,3,4,...,10))
      {
      //Далее - тело цикла, то что выполнится 10 раз в этом случае
      show_message("Цикл выполняется "+string(i)+" раз.") // Пример для наглядности работы цикла
      }



    Возможно, вопрос из области фантастики, но...
    Хотел бы у знающих спросить - можно ли найти какой-нибудь аналог функции draw_line_width, только чтобы ее draw выполнялся быстрее? У меня есть объекты, которые в шаге рисуют по 10 линий, но при 20ти таких объектов игра начинает притормаживать. Есть ли какая-нибудь dll или какой-то способ увеличить скорость?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Entoursis от 10 Сентября 2011 в 23:24
     Понятно. То есть при работе с кнопками, я не могу втыкать сочетание  for(..;...;...) в никакие графы кнопок, потому что кнопки этого выражения в принципе не знают?)) Тогда действительно остается только сделать этот фрагмент кодом.
     Спасибо:)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Сентября 2011 в 00:06
    Еще раз повторяю: вместо for можно без всяких потерь можно использовать repeat. Repeat даже быстрее работает. В коде это будет выглядеть так:

    i = 1;
    repeat( 10 )
    {
        //сюда вставляешь, что тебе надо
        i += 1;
    }
    Пример реализации на кнопках прикрепил.
    Но ZitRo дело говорит. Планируешь сделать создание игр своим увлечением - привыкай использовать код. Ничего сложного в нем нет. По сути, кнопки - это тот же код, представленный в другом виде.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Entoursis от 11 Сентября 2011 в 01:23
     Ogion, извини, просто сначала не понял как именно с репитом можно реализовать for. Теперь понял, и это то что нужно:) Огромное спасибо за подсказку!


    Название: Полноценное управлять mp3
    Отправлено: Lex4990 от 11 Сентября 2011 в 16:34
    Люди, посоветуйте библиотеку для полноценного управления музыкой в mp3. Ну громкость и прочие эффекты как на midi по стандарту.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 11 Сентября 2011 в 16:47
    http://gmakers.ru/index.php?topic=210
    Придется конвертировать mp3 в ogg, но эта библиотека того стоит.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 11 Сентября 2011 в 19:08
    Я бы посоветовал SXMS, в него можно вставить плагины от Winamp. OGG тоже читает.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 11 Сентября 2011 в 20:23
    Имхо, монстры вроде BASS & SXMS & FMOD в ГМ вообще не нужны. Лучше уж SSS.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 12 Сентября 2011 в 03:17
    Но хорошо, когда они есть.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: spyalex от 12 Сентября 2011 в 17:47
    Всем привет.
    Интересует такой вопрос, думаю не одного меня. Пользовался поиском и похожего не нашел. Итак.

    Пишу небольшую программу и нужно чтобы она брала с определенных сайтов информацию (результаты матчей и т.п., текст, картинки)
    можно ли реализовать стандартными средствами или нужно использовать 39.dll?!

    прошу пример, исходник. чем поможете. заранее благодарен!

    обновлено:  нашел библиотеку NetRead.dll. может в ней сделать?

    все равно прошу примерчик показа в комнате текста и таблицы с како-дь сайта,   или может показать весь сайт (страницу)? или область страницы?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 12 Сентября 2011 в 18:10
    GM позволяет только обмениваться информацией с другими программами на GM, поэтому лучше 39DLL.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 12 Сентября 2011 в 19:56
    обновлено:  нашел библиотеку NetRead.dll. может в ней сделать?
    Попробуй httpdll, намного серьезнее и быстрее. Считать html-код? Выполнить php-скрипт? Это все для нее не проблема, она способна даже на большее. См. во вложениях.
    P.S. Поищи по нету, возможно, есть и более новая версия.


    Название: Как сделать пелену?
    Отправлено: DarkDeivel от 15 Сентября 2011 в 15:11
    Всем привет! Подскажите как сделать в игре пелену? Ну это типо тумана, карта скрыта, когда игрок проходит дальше пелена рассеивается, зарание спасибо за ответ!


    Название: Re: Как сделать пелену?
    Отправлено: Кто-тo от 15 Сентября 2011 в 15:21
    Ты имеешь ввиду туман войны?
    Можно создать чёрный сурфейс, установить режим смешивания, рисовать в нём белый спрайт размером с видимость игрока, и потом после рисования всех объектов рисовать сам сурфейс.


    Название: Re: Как сделать пелену?
    Отправлено: Lex4990 от 15 Сентября 2011 в 17:12
    была спец библиотека


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Entoursis от 21 Сентября 2011 в 01:10
     Есть ли в ГМ функция в качестве действия в том или ином событии указать выполнение другого события. Грубо говоря, у меня есть много однотипных объектов, с которыми герою нужно прописать событие столкновения, действия везде почти одинаковы, но их очень много, создается какая-то неразбериха и свалка. Хотелось бы в событии столкновения с объектом "бла-бла-бла" прописать все это, а у остальных объектов просто написать что-то типа "гоу ту ивент "столкновение с бла-бла-бла"" чтобы меньше дерготни было. Вопрос собственно, в том, есть ли такая функция в ГМ - переход к тому или иному событию из другого, и если есть, что нужно сделать/нажать/написать для ее реализации?

    Заранее спасибо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 21 Сентября 2011 в 01:14
    Когда у тебя возникает вопрос, есть ли в GM какая-либо функция, надо не на форум идти, а открывать чертову справку и искать в ней.
    event_perform(type,numb) выполняет событие numb, указанного типа type для текущего экземпляра объекта. Следующие типы событий могут быть указаны:
    ev_create
    ev_destroy
    ev_step
    ev_alarm
    ev_keyboard
    ev_mouse
    ev_collision
    ev_other
    ev_draw
    ev_keypress
    ev_keyrelease
    ev_trigger
    Еще можно использовать родительские объекты.


    Название: Про Step.
    Отправлено: Entoursis от 21 Сентября 2011 в 01:20
     Привет.

    Нужно небольшое разъяснение для нуба. Что такое степ я знаю и сам регулярно его использую. Это то, что будет выполняться каждую единицу времени, и туда нужно пихать то, что должно выполняться для объекта постоянно. Но что такое энд степ и бегин степ я не понимаю. Вернее, чисто из названия я догадываюсь, что это то что выполняется каждый шаг, но как бы перед и до событий степа, но зачем именно это деление и как оно используется на практике - я не врубаюсь. Чтобы была более понятна моя проблема, добавлю, что на данный момент, например, эта цитата: "Если вы используете встроенные механизмы движения, вроде vspeed и gravity - позиция игрока измениться после step event и до end step event. Значит, платформа, как и игрок сдвинется после step'а игрока."
    звучит для меня довольно дико и непонятно)) Но надеюсь, скоро понять смогу. Буду благодарен знающему человеку кто сможет объяснить слегка разжевав что такое энд и бегин степ, зачем они нужны, и какой-нибудь совсем простенький и банальный пример (на словах) как это можно применить где бы то ни было))) Заранее благодарю и извиняюсь за свою тупость.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Entoursis от 21 Сентября 2011 в 01:25
     Спасибо) В справке поискал, но видимо плохо(( Отсутствие терпения все это, видимо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 21 Сентября 2011 в 02:50
    In some situation it is important to understand the order in which Game Maker processes the events. This is as follows:
    Begin step events
    Alarm events
    Keyboard, Key press, and Key release events
    Mouse events
    Normal step events
    (now all instances are set to their new positions)
    Collision events
    End step events
    Drawing events

    The creation, destroy, and other events are performed when the corresponding things happen.
    Разжёвываю:
    1) Begin Step возникает в начале каждого шага, когда еще даже не пропели петухи (alarms).
    2) После обработки алармов, клавиатуры, мыши и джойстика идёт просто Step.
    3) После него идёт перемещение всех объектов в соответствии с их направлением и скоростью, гравитацией и трением. Потом проверяются столкновения и вот только теперь происходит End Step, как ни странно, не в конце обработки шага, а всего лишь перед рисованием.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Entoursis от 21 Сентября 2011 в 15:13
     А как это можно применить? Типа если я хочу чтобы 2 действия выполнялись оба как бы в степе, но при этом одно из них проверялось раньше другого, то я помещаю одно в бегин степ а другое просто в степ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 21 Сентября 2011 в 15:47
    Нет, ты просто распологаешь одно перед другим.


    Название: Re: Как сделать пелену?
    Отправлено: RAY2 от 21 Сентября 2011 в 22:59
    Я знаю почти без полезный пост, но: учись делать сам, ты когда спрашиваешь-не учишься.А вопрос всё больше и больше.Учебники для этого и созданы.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Entoursis от 22 Сентября 2011 в 01:57
     А зачем тогда нужен энд степ и бегин степ? Бывают какие-то ситуации когда принципиально необходимо делать что-то каждый шаг до аларма или после колизий? А можно пример таких ситуаций, просто для интереса? Просто ту же движущуюся платформу: что-то мне подсказывает, что я смогу сделать ее и без знаний энд и бегин степа, просто через степ, и она будет работать. И если существует такое деление, то почему например нет "Степа после рисования" или "Степа между будильниками и клавиатурой"? То что они именно так расположены в таймлайне обработки событий имеет какое-то принципиальное значение, или просто так захотелось создателям ГМ? Особенно интересно про энд степ и рисование, почему энд степ хоть и называется энд, но сделан до рисований? Наверняка это имеет какое-то важное практическое значение, но не могу понять какое. Вопросы наверное задаю скорее риторические, но если они имеют "аналитический" ответ (отличный от "просто ГМ так создали именно с таким расположением видов степов в последовательности и все"), то очень интересно услышать ответ, надеюсь, они смогут расширить мое понимание этих бегин и энд степов.
    Но общую суть я теперь вроде понял, спасибо:)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 22 Сентября 2011 в 04:07
    GM - это инструмент, созданный для упрощения, ускорения и повышения эффективности работы разработчика игр.
    Это конструктор, созданный для того, чтобы тебе было проще написать свою игру.  :)

    И многое в нём так же сделано лишь для удобства.
    Например, если считать шрифты (fonts) необходимой возможностью, то те же пути (paths) легко реализуются посредством GML.

    К чему я веду? Begin и end step добавлены для удобства. Думаю, ты всегда сможешь обойти их использование, реализовав собственный, как это принято называть в народе, костыль. Если все объекты выполняют что-то в step event, а другой объект должен выполнять какое-то действие каждый шаг, но до выполнения действий шага других объектов - ты можешь использовать begin step event. Задумывался, в каком порядке выполняется step event? Раньше у тех объектов, у которых меньше глубина? Раньше у тех, у которых меньше id? Отнюдь. В порядке object_index. Другими словами, чем раньше объект был создан в GM, тем раньше выполнится его события шага. Повлиять на object_index никак нельзя, тогда и начинаются всякие алармы, которые выполняются каждый шаг. Собственно, здесь нам на помощь и приходит begin / step events.

    Почему же end step выполняется до рисования? Действительный шаг составляют все события, начиная от begin step event и заканчивая end step event, после чего кадр отображается на экране. Если нужно сделать что-то после отрисовки кадра - это действие можно поместить в begin step event, потому что после всех событий инициализации комнаты выполняется draw (можно даже сказать, что шаг начинается с события рисования). Да и зачем делать "true end step event", если есть begin step event?:
    (http://pix.am/nixU.JPG)

    Конечно, порядок обработки событий чётко обозначен и он имеет смысл. Но не стоит предъявлять разработчикам претензии, мол почему нет особенного события между alarm'ом и проверкой клавиатуры. Технология, где можно свободно перемещать события - это лучшее решение. А пока довольствуйтесь тем, что есть.

    >> почему например нет "Степа между будильниками и клавиатурой"
    Да, действительно, здесь ответ прост: разработчики решили, что такое событие не нужно. И были правы.

    >> пример таких ситуаций, просто для интереса
    Это может быть что-то связанное с движением, или что-нибудь вроде отрисовки изображения на сурф а затем на экран. Любые действия, что контролируют поведение других объектов.
    Я отношу begin и end step events к тем вещам, предназначение которых человек понимает, когда он чувствует в них необходимость.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 22 Сентября 2011 в 12:24
    Например, в Begin Step можно инициализировать какие-то переменные, которые потом изменяются вводом, а потом в Step их проверять. Опять-таки, это для удобства. Нет закона, запрещающего инициализировать их в Draw, например.
    То же самое с End Step: в Step объекты еще не сдвинуты, а в End Step уже сдвинуты и обработаны все коллизии. Можно как-то двигать виды, устанавливать какие-то глобальные переменные для ускорения отрисовки (как в FPS tutorial, например), etc. И тут тоже это можно сделать в Draw, только объект должен быть самым глубоким.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 22 Сентября 2011 в 13:37
    Триггеры вроде как выполняются перед каждым шагом.

    Другими словами, чем раньше объект был создан в GM, тем раньше выполнится его события шага. Повлиять на object_index никак нельзя
    Вот поэтому весь код у меня находится в draw.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 22 Сентября 2011 в 15:18
    Нет, триггеры выполняются в Begin Step, Step или End Step, как указано в определении триггера.


    Название: TDS zombie
    Отправлено: wladosD от 23 Сентября 2011 в 20:34
    подскажите как сделать чтобы противник (o_zombie) выходил только из за пределов комнаты и смотрел на игрока

    и чтобы при гибели противника появлялись другие за пределами комнаты

    пока что всё...


    Название: Re: TDS zombie
    Отправлено: ZitRo от 23 Сентября 2011 в 21:08
    Пользуйся константами room_width и room_height дабы создать объект за комнатой.
    Чтобы зомби "смотрел" на игрока поворачивай спрайт изменяя переменную image_angle [0..360].


    Название: Re: TDS zombie
    Отправлено: RAY2 от 23 Сентября 2011 в 21:23
    Пользуйся константами room_width и room_height дабы создать объект за комнатой.
    Чтобы зомби "смотрел" на игрока поворачивай спрайт изменяя переменную image_angle [0..360].
    прости, но я думаю он новичок и не поймёт этого.


    Я дам совет простой: учебники читай и учись сам или с кем-то. Ты будешь спрашивать и спрашивать, а с каждым разом вопросы сложнее.От переменной до 3D пирамиды один шаг.Игра будет создана на основе ответов из Red "System Game Maker Community". А ты просто будешь грамотно изъяснять вопросы. Учи GML.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Кто-тo от 23 Сентября 2011 в 21:33
    Когда человека всё время посылают на хтмл-справку, лучше тоже не становится.


    Название: Как создать выстрел объектом ?
    Отправлено: GaBo от 24 Сентября 2011 в 19:08
    Как сделать так чтобы объект выстреливал объектом ? Скажем из пистолета вылетала пуля.


    Название: Re: Как создать выстрел объектом ?
    Отправлено: spyhak от 24 Сентября 2011 в 19:16
    Ого сколько информации


    Название: Re: Как создать выстрел объектом ?
    Отправлено: RAY2 от 24 Сентября 2011 в 19:25
    Как сделать так чтобы объект выстреливал объектом ? Скажем из пистолета вылетала пуля.
    во первых тебе сюда: http://gmakers.ru/index.php?topic=5335.msg62251;topicseen#new (http://gmakers.ru/index.php?topic=5335.msg62251;topicseen#new) там задавай вопросы
    во вторых: кнопками:  создать объект о_пуля. икс -- игрик -- (сам вставляй)
    код:
    instance_create(x,y,---)
    где --- вставляй название создаваемого объекта.

    Есть вопросы делай одну тему а не 2. Как меня научили:
    Вопросы от: ____.
    У меня вопрос __________ ___ _______. (-)




    ах да, ты не спросил  что бы он летел,   к примеру летит к мышке
    direction=point_direction(x,y,mouse_x,mouse_y)
    , вставляй в создании пули.


    Название: Re: Как создать выстрел объектом ?
    Отправлено: GaBo от 24 Сентября 2011 в 19:51
     instance_create (x,y,obiect14ifh)speed= // 10 
    Так  :-[ Не ругайте сильно новичок 


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 24 Сентября 2011 в 19:58
    Как создать жизни объекту ? :-[ Если вы будете объяснять с кодом то пожалуйста подробней.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 24 Сентября 2011 в 21:20
    Приведите пожалуйста примеры лево и право ассоциированных математических операций. Не обязательно из ГМ.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 24 Сентября 2011 в 22:27
    Ну, к примеру, операция + имеет ассоциативность слева направо, а += - справа налево.
    Если не ошибаюсь, лево ассоциированные - это те, которые выполняются слева направо. Таких большинство.
    Право ассоциированных операций намного меньше, в том числе ?:.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Илья от 25 Сентября 2011 в 11:12
    Спасибо, +1


    Название: Re: Ответы@Gmakers.ru
    Отправлено: wladosD от 25 Сентября 2011 в 13:25
    я не могу просто понять, что вместо "скорость_движения" (F.A.Q) надо вписать :-[

    а с image_angle я понял, что надо делать O0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Voldeniaar от 25 Сентября 2011 в 15:20
    Хм...
    Насколько я знаю, достаточно ввести переменную hp в создании объекта главгероя и присвоить ей нужное значение.
    Например:
     :GM003:
    hp=5;
    При столкновении с врагом:
     :GM007:
    hp-=1;
    В step'e:
     :GM006:
    if hp<=0 {/*смерть главгероя, рестарт комнаты и т.п.*/;}
    Вроде бы все...


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 25 Сентября 2011 в 15:28
    GaBo, где связь между процитированными тобой сообщениями и твоим, собственно, сообщением?

    wladosD, скорость движения в пикселях.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 25 Сентября 2011 в 19:26
    Забудьте всё что я сказал  ;) Я только начинаю работать с кодами  :-[ А смысла не было  потому что я не понял о чём ты,но теперь я прозрел  :angel: Спасибо за всё  8)   И всё таки у меня есть вопрос  :-\ :) Зачем объекты обязательно называть o_(название об. на англ.). Связано ли это с GML ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 25 Сентября 2011 в 20:59
    Называть объекты "o_name" совершенно необязательно, просто это удобно для большинства программистов. "о_name" - объект, "s_name" - спрайт. Кириллицу в именах лучше не использовать. Так же не рекомендую использовать точки или заятые в именах ресурсов или переменных.

    И да, будь сдержаннее со смайлами, не нужно так много.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 25 Сентября 2011 в 21:36
    Так же не рекомендую использовать точки или заятые в именах ресурсов или переменных.
    Только что проверил, даже в действиях (квадратиках) нельзя использовать точки или запятые в именах переменных.
    Так что здесь нельзя рекомендовать / не рекомендовать, просто нужно запомнить, что точка - это оператор, а запятая вообще не является допустимым символом в gml.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Райдо от 25 Сентября 2011 в 21:44
    не является допустимым символом
    Запятая является сепаратором, в списке аргументов функции например.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 25 Сентября 2011 в 22:03
    Точно!
    Дико извиняюсь.
    Случается иногда такое, да.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 26 Сентября 2011 в 22:38
    Можно ли получить код по кнопкам и ещё есть ли на форуме пример игры вида сверху (танк умеющий плавно перемещаться и выстреливать)? Заранее спасибо !  ;) 


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 26 Сентября 2011 в 22:49
    Этот вопрос только на моей памяти задавался раз десять.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 26 Сентября 2011 в 22:53
    Стандартными средствами - нет, однако в сети есть программы конвертеры.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 26 Сентября 2011 в 22:57
    Стандартными средствами - нет, однако в сети есть программы конвертеры.
    Спасибо попробую найти в просторах сети  O0


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 26 Сентября 2011 в 23:40
    Можно ещё один вопрос ? Что такое побитовые операции(я смотрел в вики но мало что понял),а что такое унарные операторы(я знаю что такое операторы)? Побитовые и битовые это одно и тоже ? :-\


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 27 Сентября 2011 в 00:13
    Очень интересный ты человек. Судя по:
    « Последнее редактирование: Сегодня в 22:54 от GaBo »
    ..редактировать сообщения ты умеешь, но тем не менее, два подряд оставил, что запрещено.

    Кстати, хорошие вопросы.
    Что такое побитовые операции?
    Побитовые операции - это: NOT, AND, OR, и XOR. (НЕ, И, ИЛИ и неИЛИ).
    А работают они с битами, как ясно из названия, то есть с нулями и единицами, True и False.
    Например, NOT примененная к единице даст ноль и наоборот. А OR примененная к 110010 и 010110 даст 110110, т.е. нолик везде, где в обоих числах ноль и единицу, где одна или две единицы.
    Побитовые и битовые это одно и тоже ?
    В принципе, да, хотя меня сейчас могут и поправить.
    что такое унарные операторы?
    Уточни.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 27 Сентября 2011 в 00:30
    Также, существуют следующие унарные операторы:

    !: отрицание, преображает истину в ложь и наоборот (0 в 1, 1 в 0)
    -: делает следующее за ним значение отрицательным
    ~: побитовое отрицание


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 27 Сентября 2011 в 00:34
    Ну вот тебе и унарные операторы. Действия такие. Эм, а это в GML?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 27 Сентября 2011 в 00:39
    Ну вот тебе и унарные операторы. Действия такие. Эм, а это в GML?
    Да.Извини что заставил лишний раз отвечать


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 27 Сентября 2011 в 00:48
    Унарные операции - это те, которые имеют один операнд и как-то изменяют его.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 27 Сентября 2011 в 00:55
    Давно хотел спросить нужно ли что нибудь для того чтобы объект стал ГГ(скажем это будет нужно для ввода Gml кодов) или же вы просто обозначаете так персонажа по вашему усмотрению являющегося ГГ в сообщениях,статьях и тд?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 27 Сентября 2011 в 00:58
    Все так, как захочешь ты. В игре вообще не обязателен Гг.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 27 Сентября 2011 в 09:54
    Не могли бы  вы привести пример двоичных значений ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 27 Сентября 2011 в 10:20
    Массивы
    Вы можете использовать одномерные и двумерные массивы в GML. Просто поставьте индекс между квадратными скобками для одномерного массива и два индекса с запятой между ними для двумерного массива. Массив создаётся при первом обращении к индексу. Каждым массив начинается с индекса 0. :-\ Можно объяснить более понятным языком их роль в коде и тд.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 27 Сентября 2011 в 10:32
    Где находятся  функций point_distance и point_direction ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 27 Сентября 2011 в 11:39
    Можно ещё один вопрос ? Что такое побитовые операции(я смотрел в вики но мало что понял),а что такое унарные операторы(я знаю что такое операторы)? Побитовые и битовые это одно и тоже ? :-\
    Пока что тебе нужно понять только то, что эти операторы можно использовать при проверках. Например, так:

    if ( x < 0 || x > room_width || y < 0 || y > room_height )
    {
    show_message( "О нет! Объект вылез за пределы комнаты!" );
    game_end();
    }
    && = and (и)
    || = pr (или)
    ^^ = xor (строго или)
    ! = not (не)
    Знак "-" - это просто минус, который ставится перед отрицательным числом. Вот так, например.
    if ( x < -10 )
    {
    show_message( "О нет! X меньше -10!" );
    game_end();
    }


    Название: Re: Ответы@Gmakers.ru
    Отправлено: GaBo от 27 Сентября 2011 в 12:10
    На сайте http://mizzystic.ru/ я скачал пакет lib библиотек.Это дополнительные кнопки(что-то вроде заменителя кода для новичков)? Если да то как мне их загрузить ?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: .doc от 27 Сентября 2011 в 12:41
    ...Это дополнительные кнопки(что-то вроде заменителя кода для новичков)? ...
    Ну вроде того. Они добавляют новые действия и события в виде кнопок.
    ...Если да то как мне их загрузить ?
    Нужно скопировать их в папку lib.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: yoshy от 28 Сентября 2011 в 14:49
    В примере реализован лазер, и враг в виде кубика... не могу решить проблему, связанную с остановкой движения кубика при действии лазера...
    [attachment=1]


    Название: Re: Ответы@Gmakers.ru
    Отправлено: deathsoul от 29 Сентября 2011 в 02:31
    Не могли бы  вы привести пример двоичных значений ?
    100101 и тому подобное.

    Где находятся  функций point_distance и point_direction ?
    Ссылка на справку с указателем и поиском: http://gmakers.ru/index.php?action=tpmod;dl=get220

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


    Название: Re: Ответы@Gmakers.ru
    Отправлено: yoshy от 29 Сентября 2011 в 10:45
    Как лучше реализовать кнопочную систему переключения скиллов ( 1-9 ) и (альт+1-9)... Через стандартные события ГМ (т.е. соб.нажатия 1 и событие триггера в котором прописано нажатие alt+1) или же можно все эти события прописать в степе главного героя...? какой вариант более удобен? какой вариант более быстройдественный и менее пожирающий ресурсы?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 29 Сентября 2011 в 11:07
    какой вариант более быстройдественный и менее пожирающий ресурсы?
    Если и есть какая-то разница, то она незначительная: такие вещи обрабатываются быстро. Так что делай, как тебе удобно. Я бы прописал все в степе, чтобы весь код сразу был виден.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: tolich от 29 Сентября 2011 в 11:55
    Как лучше реализовать кнопочную систему переключения скиллов ( 1-9 ) и (альт+1-9)... Через стандартные события ГМ (т.е. соб.нажатия 1 и событие триггера в котором прописано нажатие alt+1) или же можно все эти события прописать в степе главного героя...? какой вариант более удобен? какой вариант более быстройдественный и менее пожирающий ресурсы?
    Мне кажется, что делать триггеры на нажатие комбинаций клавиш излишне, поскольку обработка его, скорее всего, будет всего в одном объекте. Достаточно выбрать одну из клавиш в качестве основной и в событии её нажатия проверять функцией, нажаты ли остальные. К слову, для клавиши '1' тоже бы неплохо проверять, что клавиши-модификаторы отпущены (Alt, Ctrl, Shift).
    Если планируется использовать и '1', и 'Alt+1' (скажем, 1 выбирать скилл, а alt+1 назначать скиллу клавишу), то можно обрабатывать их в одном фрагменте кода.
    Обработка же в степе, помимо очевидного "весь код в одном месте", позволит также сделать управление настраиваемым.
    Еще можно обрабатывать нажатие клавиши 'any key' и действовать в зависимости от значения keyboard_lastkey с почти аналогичным эффектом.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Varan от 03 Октября 2011 в 20:01
    Как сделать что-бы размеры комнаты увеличивалмсь прямопропорционально размерам героя?

    Пытался так:
    room_height=960*o_you.image_xscale
    room_width=1280*o_you.image_xscale

    Ставил и в объект героя и в комнату.
    Но выдало ошибку:

    EXECUTION ERROR in creation code of room room0
    Error in code at line 2:
       room_height=960*o_you.image_xscale
       ^
    at position 2: Cannot assign to the variable

    Что делать не знаю, помогите пожалуйста.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Огион от 03 Октября 2011 в 20:07
    См. FAQ II.4.9.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Varan от 03 Октября 2011 в 20:44
    Долго пытался что-то сделать но так и не нашёл ответа.
    Сам решить не смог, может кто поможет?
    Не весь код, хоть как то намекнёт что-ле.

    ЗЫ: Нужно что-бы xscale and yscale героя увеличивался, но из за расширение вида комнаты этого не было видно.
    Что-б он как занимал свои 50х50 так и будет занимать 50х50 пикселей на мониторе.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 03 Октября 2011 в 21:04
    Так тебе не комнату надо увеличивать, а вид. Кстати, а зачем тебе это?


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Varan от 03 Октября 2011 в 21:09
    но из за расширение вида комнаты
    Наверное ты не так прочитал(ну или кто то пишет как м*д*к : ) )
    Я и имел ввиду вид.

    Делаю игру там где персонаж постепенно увеличивается(эволюционирует), а что-б он пол карты занимал как-то не хочется.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 03 Октября 2011 в 21:11
    ЗЫ: Нужно что-бы xscale and yscale героя увеличивался, но из за расширение вида комнаты этого не было видно.
    Засунь в глобал соотношение ширины/высоты текущих размеров вида до первоначальных (обновляя эту величину каждый раз, когда будет изменяться вид).
    Итого ты получишь некие цифры, которые и будут твоим xscale и yscale для объекта.
    UPD: Так же и на оборот: просто множишь ширину/высоту изначальных величин вида на соответственно xscale/yscale объекта.
    И да, при увеличении/уменьшении вида не забывай что картинка будет немного портиться. А это не есть хорошо.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Макасин от 03 Октября 2011 в 21:18
    Наверное ты не так прочитал(ну или кто то пишет как м*д*к : ) )
    Я и имел ввиду вид.
    Сорри, сфокусировался на твоем первом сообщении.

    Делаю игру там где персонаж постепенно увеличивается(эволюционирует), а что-б он пол карты занимал как-то не хочется.
    Уменьшай все остальное или сделай изначально большую карту. А вид, что бы качество не очень портилось, изменяй не плавно. То есть сделай штук пять вариантов. Когда герой уже больше, чем пол экрана - переходи на следующий размер вида. Кстати, можно и что бы герой так же рос. //Где же я это видел? А, в Споре такой рост на первых двух этапах.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Varan от 03 Октября 2011 в 21:31
    То есть сделай штук пять вариантов.
    Я думал об этом, но это будет не красиво.

    ZitRo
    Немного позже попробую понять что ты написал.
    Сложно понять, так как это у тебя в голове, тебе кажется что это так просто но мне как человеку не знающему кажется что это тёмный лес.
    ***Немного потупил сидя на кресле, и написал.***
    То есть измерить в процентах на сколько увеличится вид и насколько персонаж? Ну кажется начал понимать.


    Название: Re: Ответы@Gmakers.ru
    Отправлено: ZitRo от 03 Октября 2011 в 21:44
    То есть измерить в процентах на сколько увеличится вид и насколько персонаж? Ну кажется начал понимать.
    Меняя размеры персонажа, мы меняем его xscale/yscale. Поскольку начальное значение для них единица, мы на нее можем делить сколько угодно =) То есть, в результате сама величина xscale и yscale это и есть наш "масштаб". Как его использовать:
    Допустим, наш объект увеличился в 2 раза. xscale=2; yscale=2. Логично, что для того, что бы размеры персонажа не изменились на экране, нужно увеличить вид в те самые 2 раза. Мы просто множим изначальные размеры вида на "масштаб" нашего персонажа. view_wview=const_x*xscale; view_hview=const_y*yscale, где const_x, const_y - первоначальные ширина и высота вида в комнате. xscale, уscale - соответственно масштаб персонажа.
    В обратном случае (когда нужно изменять размеры персонажа относительно вида) - нашим числом-множилкой станет отношение текущего размера комнаты к первоначальному. Т. е. xscale=view_wview/const_x, yscale=view_hview/const_y.

    А еще если случится что xscale!=yscale персонажа, то мы получим забавный искажатель пространства вокруг :)


    Название: Re: Ответы@Gmakers.ru
    Отправлено: Varan от 03 Октября