Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Делаю ABS на ивентах. Как сделать столкновение события с игроком на скрипте?

  1. #1
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию Делаю ABS на ивентах. Как сделать столкновение события с игроком на скрипте?

    Весь день просидел, работая над такой вот боевкой:


    Как можно заметить, всё выходило просто отлично, пока не дошла очередь до вражеских атак.
    Чтобы донести проблему, пост придется сделать содержательным. Я пытался уже несколькими способами
    сделать это, - но всё упиралось в какую-нибудь проблему.
    Первым делом скажу, что боевка на 90% состоит из ивентов. А остальные 10%, - пара тройка скрипотов аля "если координаты события равны координатам события"...
    Как это работает?

    При нажатии на кнопку геймпада, - рядом с игроком, на короткий промежуток времени, появляется событие. Событие появляется в той стороне, куда смотрит игрок. Монстр является параллельным событием и как только наступает на событие атаки игрока, - переходит на следующий лок. переключатель, где какое-то время лежит в конфузе. А потом обратно на первую страницу. Если его ударить, когда он лежит, - он умирает. Это краткое описание и я не обо всех деталях рассказал, но примерно как-то так.
    В общем, беда в том, что я не могу сделать такое же событие атаки монстров, как у игрока. Потому что игрок один, и монстров много. Соответственно, для каждого монстра на каждой карте пришлось бы пилить свое событие, что очень геморно.
    Я пробовал способ, когда вокруг игрока по разные стороны появляется 4 события и проверяют, есть ли монстр. И если он есть, - монстр атакует. И это даже сработало, однако, имело большой минус, - убегая от атаки, игрок все равно её получал. Иногда он получал двойной урон, а бывало даже, - получал урон, когда монстр атаковал его где-то в другом конце карты.

    Следом я попробовал способ, - "Если коориданты монстра равны координатам игрока" (по скрипту). И в тот момент когда монстр атаковал в параллельном событии на странице локального переключателя D, я делал его "проходимым". Получалось так, что в момент атаки монстр летел в сторону игрока, и если попадал на него, - игрок получал урон. Вот только, это смотрелось ужасно и дико неудобно, так как монстр буквально накладывался на то место, где есть игрок. (естественно).

    Поэтому, я пришел к выводу, что было бы идеально прописать столкновение монстра и игрока как на "триггере касания". Который я не могу использовать по той причине, что монстр является параллельным событием. Так же была идея проверять столкновение с событием атаки игрока не в монстрах, а в самом событии атаки, которое появляется рядом с игроком. Но, от этой идеи пришлось отказаться, потому что в таком случае надо указать ид монстра. А при копировании их ид меняется. Поэтому разумно будет сделать так, чтобы ид прописывался у события атаки игрока, а монстр был "this event".
    И вот, нужно сделать так, чтобы монстр атаковал прямо как прикасании игрока на триггере "касание", но через команду скрипта. Можно ли так сделать?
    Если что-то не понятно, могу на крайний случай поделиться демкой. Буду очень благодарен любой помощи! ^^
    (Я правда старался и весь день над этим думал, пытался найти способ самостоятельно, но не вышло)
    Последний раз редактировалось Axel_Key; 02.08.2018 в 20:14.

  2. #2
    Хранитель Аватар для Paranoid
    Информация о пользователе
    Регистрация
    22.12.2014
    Сообщений
    2,776
    Записей в дневнике
    34
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    Скорее всего никак. Это слишком сложная шняга без скриптов.
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  3. #3
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

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

  4. #4
    Маститый Аватар для Seibur
    Информация о пользователе
    Регистрация
    07.01.2012
    Адрес
    Изумрудный город
    Сообщений
    1,206
    Записей в дневнике
    3
    Репутация: 58 Добавить или отнять репутацию

    По умолчанию

    Зачем изобретать велосипед, и переписывать готовую боевку на ивенты? Я имею в виду, что уже есть замечательный скрипт Атейлера Могхунтера для таких вещей. Так же рекомендую перевести вопрос на английский, сократив его до главного, и спросить на зарубежном форуме. тот что официальный. Ибо тут скорее пассивная реакция на просьбы помочь, и даже если обещают, то помогают не всегда (опираясь на ряд различных причин), или просто не знают ответ. По скриптовым ивентам - спроси Петра, возможно он придумает решение данной задачи. Или используй скрипт МОГа, по версии для асе тот же Петр где-то писал туториал на русском + Антенна уже пилит свой проект про рыцаря на нем. Так что будет к кому обратится. P.S. Графика необычно смотрится и красочно - так держать, из этого может получится хороший инди проект.

    А если использовать плагин эвент сенсора от мога, который сканнит , когда игрок приближается?
    Прохлада и спокойствие мне вполне по душе

    Спойлер :

    き っ と 、 女 の 子 は お 砂 糖 と ス パ イ ス と 素 敵 な 何 か で で き て い る。

  5. #5
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Seibur Посмотреть сообщение
    замечательный скрипт Атейлера Могхунтера для таких вещей.
    Скрипт замечательный, но это не то что нужно. Мне нужна обыкновенная аркадная боевка, без всяких вычислений, цифр на экране, дофига взрывов и ярких анимаций. То есть, я вполне доволен тем результатом, который получается на ивентах. (При том, то что я сделал выходит без путаницы и автоматизировано. Т.е. при расстановки врагов не нужно ничего нигде прописывать дополнительно, всё внутри них). Единственное, мне нужно правильно научить врагов атаковать героя, - а это нужно сделать триггером "касания". Вот только, сами враги являются параллельным событием, поэтому не могут касаться игрока. Эту проблему и нужно решить.

    Цитата Сообщение от Seibur Посмотреть сообщение
    А если использовать плагин эвент сенсора от мога, который сканнит , когда игрок приближается?
    Нет, это совсем не то. Здесь не учитывается касание игрока. Мне нужно, чтобы здоровье игрока отнималось только тогда, когда монстр его
    касается во время атаки, а не видит на своем пути. u.u
    Вряд ли в этой ситуации вообще нужен какой-либо плагин. Достаточно было бы одной строчки скрипта, что-то вроде такого ветвления условий:
    "Если $gamemap event(this event) коснулось $gameplayer, то:"
    Вот только я не знаю синтаксиса языка и не понимаю где его можно подсмотреть, чтобы написать свой скрипт.(
    Мне всего то нужен скрипт условия, при котором проверяется столкновение события с игроком.
    В идеале хотелось бы найти человека в команду, который шарит в скриптинге и мог бы консультировать.

    Цитата Сообщение от Seibur Посмотреть сообщение
    Графика необычно смотрится и красочно - так держать
    Спасибо, но эти монстры, фон и анимация атаки героя тестовые. х)
    Я их переделаю и сделаю лучше, когда завершу основную боевку.
    Последний раз редактировалось Axel_Key; 03.08.2018 в 06:38.

  6. #6
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    Следом я попробовал способ, - "Если коориданты монстра равны координатам игрока" (по скрипту). И в тот момент когда монстр атаковал в параллельном событии на странице локального переключателя D, я делал его "проходимым". Получалось так, что в момент атаки монстр летел в сторону игрока, и если попадал на него, - игрок получал урон. Вот только, это смотрелось ужасно и дико неудобно, так как монстр буквально накладывался на то место, где есть игрок. (естественно).
    Бери этот способ, только проверяй есть ли игрок перед монстром.
    Соответственно нужно сначала проверять куда смотрит монстр. Потом проверять соответствующие координаты.
    То есть, смотрит вверх - сравниваем х, у-1. Смотрит вправо, проверяем х+1, у.
    Ну только не нужно делать непроходимым врага и тп.
    Андестуд?

  7. #7
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Пётр Посмотреть сообщение
    Андестуд?
    Суть понял, но как это реализовать не совсем понимаю, так как слаб в скриптах.
    Не знаю как делать проверку на наличие игрока перед монстром. Не уверен, что точно так же...

    PHP код:
    $gameMap.event(this event).== $gamePlayer.x1 && $gameMap.event(this event).== $gameplayer.y1 
    И если игрок вовремя уклонится от атаки монстра, не получит ли он урон, таким методом?
    Просто касание на триггере в этом плане подходит идеально, и было бы удобно, если бы я мог сделать проверку на
    касание в любой момент.
    Еще пытался сделать таким способом. Сделать страницу, которая касается с игроком, а атака идет в общем событии.
    Но, локальный переключатель почему-то не выключается. При том, если убрать "ждать завершения" в маршруте атаки,
    почему-то локальный переключатель и включается, и выключается нормально. Не понимаю, как оно вообще работает...
    Спойлер скрины:



    Ну а так, монстр смотрит в разные стороны и по отдельности проверяет есть ли там игрок... Код точно тот же нужен? :0

  8. #8
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    PHP код:$gameMap.event(this event).x == $gamePlayer.x1 && $gameMap.event(this event).y == $gameplayer.y1


    И если игрок вовремя уклонится от атаки монстра, не получит ли он урон, таким методом?
    Не знаю. Пробовать нужно.
    Код так если монстр смотрит вправо
    $gameMap.event(this event).x == $gamePlayer.x+1 && $gameMap.event(this event).y == $gameplayer.y
    Координата У у игрока такая же, а х на 1 больше.


    Ну а так, монстр смотрит в разные стороны и по отдельности проверяет есть ли там игрок... Код точно тот же нужен? :0
    Стелс на ивентах

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

  9. #9
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Пётр Посмотреть сообщение
    Всё равно придется прикручивать проверку куда смотрит ивент, чтобы не получить урон, зайдя со спины, например.
    А он и не получит урон зайдя со спины, потому что атакуя монстр летит "на игрока" в определенный момент. И именно в этот момент должно проверяться, касается ли монстр игрока или нет.
    То есть атака и ходьба, - это разные состояния монстра. В момент ходьбы при касании он не должен наносить урон игроку, а в момент атаки происходит анимация, - сменяется графика монстра и он со всей скорости на 2 шага летит в сторону игрока. То есть, куда смотрит монстр в данном случае совершенно не важно, потому что атака происходит на короткое время и в сторону игрока. Тут уже либо монстр заденет игрока, либо нет.
    Проще говоря, враг становится опасным на короткий промежуток времени и бежит в сторону игрока. Игрок должен схватить урон только в момент атаки, если монстр его заденет по пути траектории атаки.
    Но я попробую твой способ, возможно, что-то из этого выйдет. Просто с направлениями взгляда, возможно, будет лишним в таком случае, так как оно кратковременно и в одном направлении происходит.
    Последний раз редактировалось Axel_Key; 03.08.2018 в 09:43.

  10. #10
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

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



    А где ты вызываешь действие на последней картинке?

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Делаю ABS на ивентах. Как сделать столкновение события с игроком на скрипте?