Плохо! Плохо!:  0
Показано с 1 по 5 из 5

Тема: Создание/изменение скриптов

  1. #1

    Сообщение Создание/изменение скриптов

    Помогите с классами в RPG Maker VX Ace.

    Я пролазил пол гугла, но лишь нашел сурс rpg-maker-rgss3-1.02.0.gem
    И с ним и с русифицированным встроенным мануалом в редакторе я ничего не понимаю
    "Какие методы доступны", "как их правильно записывать" и т.д.

  2. #2
    Познающий Аватар для Deme
    Информация о пользователе
    Регистрация
    16.05.2014
    Сообщений
    317
    Записей в дневнике
    16
    Репутация: 4 Добавить или отнять репутацию

    По умолчанию

    Здравствуйте!

    Цитата Сообщение от ZEkA10000 Посмотреть сообщение
    Помогите с классами в RPG Maker VX Ace.
    Расскажите, пожалуйста, подробнее. Что вы хотите сделать? Что конкретно Вам непонятно? Каков Ваш теперешний уровень?

    Если у Вас нет опыта программирования, а Вы хотите создавать и редактировать скрипты, можете почитать раздел к справки «Введение в скриптинг». Там описываются основные понятия. Если там что-то непонятно, не стесняйтесь задавать вопросы.

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

    Цитата Сообщение от ZEkA10000 Посмотреть сообщение
    Я пролазил пол гугла, но лишь нашел сурс rpg-maker-rgss3-1.02.0.gem
    Судя по описанию, эта библиотека добавляет во внешние редакторы подсказки про RPG Maker. Она сама по себе ничего не делает, просто облегчает жизнь: если редактор поддерживает подсказки, то он будет подсказывать, какие классы у RPG Maker’а существуют и какие у них функции.

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

    Цитата Сообщение от ZEkA10000 Посмотреть сообщение
    "Какие методы доступны", "как их правильно записывать" и т.д.
    Класс — это описание объекта, по которому можно создать сколько угодно объектов. Если провести аналогию, класс Борщ — это рецепт борща, а объект — это борщ, который вы сварили. По одному рецепту можно сварить сколько угодно борщей — то есть можно создать сколько угодно экземпляров одного класса. (Это не всегда так, но это удобное упрощение.)

    При этом со всеми борщами можно делать одни и те же действия (вылить, съесть, подогреть) — это методы класса. При этом не важно, варили борщ вы сами или нет: если у вас есть объект определённого класса, то вы можете с ним сделать те же действия, что и с классом, который Вы создали сами. Нужно только знать, какие действия с каким классом нужно делать — вот это и описывается в том, какие методы доступны.

    Извините, если Вы это уже знаете. Из Вашего сообщения непонятно, каков Ваш теперешний уровень и что именно вызывает затруднения.
    Последний раз редактировалось Deme; 19.04.2017 в 18:22.
    «quī legis ista, tuam reprehendō, mea laudās // omnia, stultitiam; / nihil, invidiam» (Jōhannis Audoenī)
    'Ты, кто читает это: я порицаю, если ты хвалишь у меня // всё, твою глупость; / если ничего — твою злобу.' (Джон Оуэн)

  3. #3

    По умолчанию

    Знания программирования в VX Ace на уровне (Не профи и не нуб)
    Будь нубом я бы не сделал подобного.
    Когда я прописывал например $game_player.jump_height(3, 0) мне мэйкер выдавал ошибку "вы вставили 2 аргумента из 0" и я уже ищу как правильно обращаться к классам и их методам.


    Или другой пример $game_player.ballon_id = 3 => Ошибка "Неизвестный метод baloon_id= для класса Game_Player"
    Последний раз редактировалось ZEkA10000; 19.04.2017 в 20:35.

  4. #4
    Познающий Аватар для Deme
    Информация о пользователе
    Регистрация
    16.05.2014
    Сообщений
    317
    Записей в дневнике
    16
    Репутация: 4 Добавить или отнять репутацию

    По умолчанию

    Спасибо, так задача понятнее!

    [К сожалению, у меня сейчас нет доступа к RM VX Ace: у меня на этом компьютере только Линукс, а RM VX Ace через Wine не запустился. Поэтому то, что я пишу, не проверялось на практике. caveat ēmptor.]

    $game_player — это переменная. Узнать, какого она класса, можно, прочитав $game_player.class или же посмотрев в то место, где она объявлена. Конкретно $game_player в Руби класса Game_Player.

    Этого класса нет в справке по VX Ace (и в rpg-maker-rgss3-1.02.0.gem), потому что это не встроенный класс: он определён в самой игре. Т.е. его можно вообще убрать из игры и заменить чем-то своим (хотя лучше не надо). Его код надо смотреть в Редакторе скриптов VX Ace.

    Соответственно, и доступные функции этого класса нужно смотреть в коде скриптов, которые прилагаются к программе. Их можно посмотреть в самом RPG Maker VX Ace. Так как у меня его под рукой нет, я нагуглил этот скрипт в интернете (правда, с китайскими комментариями, но код тот же).

    Соответственно, в коде скрипта мы и видим, какие тут есть фунции. По коду видно, что clear_transfer_info, refresh, actor, stopping? не принимают ни одного аргумента, а вот check_event_trigger_here и check_event_trigger_there принимают один.

    Однако функции jump_height тут нет — она определена в другом месте. Класс Game_Player расширяет класс Game_Character (это видно в начале файла: class Game_Player < Game_Character), поэтому у него есть все функции Game_Character. Значит, нужно смотреть в код этого класса: вам, вероятнее, будет удобнее смотреть прямо в интерфейсе VX Ace, а я дальше смотрю на китайском сайте.

    jump_height там тоже нету, но зато можно увидеть, что Game_Character расширяет Game_CharacterBase (это видно по строчке «class Game_Character < Game_CharacterBase» в начале). Значит, смотрим на Game_CharacterBase (либо в интерфейсе VX Ace, либо на том же китайском сайте).

    Game_CharacterBase не расширяет никаких классов, значит, все нужные нам методы будут внутри этих трёх классов: Game_Player, Game_Character и Game_CharacterBase.

    Те методы, о которых вы писали, есть в Game_CharacterBase.

    Во-первых, здесь определён balloon_id:

    Код:
    attr_accessor :balloon_id
    Это значит, что нужно обращаться $game_player.balloon_id = 3

    Вроде бы Вы правильно обращаетесь. Проверьте, что не допустили нигде опечатки (типа ballon_id или baloon_id).


    Во-вторых, вот определение jump_height:

    Код:
      def jump_height
        (@jump_peak * @jump_peak - (@jump_count - @jump_peak).abs ** 2) / 2
      end
    Собственно, она не принимает никаких аргументов. Она возвращает рассчитанное число. Чтобы начать прыжок, в Game_Character есть метод jump(x_plus, y_plus) — возможно Вам подойдёт он?
    Последний раз редактировалось Deme; 20.04.2017 в 21:40.
    «quī legis ista, tuam reprehendō, mea laudās // omnia, stultitiam; / nihil, invidiam» (Jōhannis Audoenī)
    'Ты, кто читает это: я порицаю, если ты хвалишь у меня // всё, твою глупость; / если ничего — твою злобу.' (Джон Оуэн)

  5. #5

    По умолчанию

    То, что я писал, это я привел как пример.

    На самом деле я хочу сделать свою боевую систему, как в Super Mario RPG: Legeng of the Seven Stars. (см видео)


    И хотел бы сделать объемный мир, но это не обязательно важно для меня.

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Создание/изменение скриптов