Плохо! Плохо!:  0
Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 26

Тема: [VX Ace] Простые скрипты

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

    Book Open [VX Ace] Простые скрипты

    Здесь я познакомплю вас со скриптами (или скриптовыми командами?), которые сделают вашу жизнь значительно проще, надеюсь. Да на мейкере многое можно провернуть через ивенты и стандартные команды, но порой они бывают невероятно мудреными и громозскими. А бывает что некоторые, казалось бы, простые фичи вообще нельзя реализовать используя стандартные функции.

    Предисловие: сначала я хотел выбрать самые полезные скрипты, но потом подумал "если у меня не хватило воображения чтобы применить их, это не значит что у других его не хватит!" Так что отчасти это будет копипаст с этого топика с русскими комментариями.

    Сообщения:
    Спойлер Текст:

    $game_message.face_name = 'fName' - название файла изображения актера
    $game_message.face_index = fIndex - индекс изображения актера 0-7
    $game_message.background = fBG - фон обычный(0), темный(1), прозрачный(2)
    $game_message.position = fPos - позиция верх(0), середина(1), низ(2)
    $game_message.add("Текст")


    Спойлер Ввод цифр:

    $game_message.num_input_variable_id = x - ID переменной в которую запишется ввод
    $game_message.num_input_digits_max = y - количество символов для ввода


    Спойлер Ключевой предмет:

    $game_message.item_choice_variable_id = x - ID переменной для записи


    Спойлер Прокрутка текста:

    $game_message.scroll_mode = true - стиль сообщения (true - прокрутка текста, false - обычное сообщение)
    $game_message.scroll_speed = x - скорость
    $game_message.scroll_no_fast = false - можно пропустить (true - нельзя, false - можно)
    $game_message.add("Текст") - строка текста


    Герои:
    Спойлер Изменить ХП/МП:

    Вот тут на забугорском сайте приводится довольно сложный пример, который я упростил.
    Меняем ХП $game_actors[n].hp += x и меняем МП $game_actors[n].mp += x, где n - ID героя, x - значение на

    которое сменить. В данном случае x прибавляется к текущему ХП/МП, но += можно заменить на -=, /=

    , *= и даже на =. Однако выше максимального значения вам их не поднять!

    Для всей партии используется
    $game_party.members.each { |actor| actor.hp += x } и $game_party.members.each { |actor| actor.hp += x }


    Спойлер Состояния:

    Добавить
    $game_actors[id].add_state(state_id), где state_id - ID состояния

    Убрать
    $game_actors[id].remove_state(state_id), где state_id - ID состояния

    Для группы соответственно
    $game_party.members.each { |actor| actor.add_state(state_id) }
    $game_party.members.each { |actor| actor.remove_state(state_id) }


    Спойлер Полное восстановление:

    $game_actors[n].recover_all, где n - ID героя

    Для группы
    $game_party.members.each { |actor| actor.recover_all }


    Спойлер Опыт:

    $game_actors[n].change_exp(x, show), где n - ID героя, x - значение опыта, show - true/false показывает или не показывает сообщение о повышении уровня. Здесь значение только присваивается, а не прибавляется к текущему опыту героя.

    Для группы
    $game_party.members.each { |actor| actor.change_exp(x, show) }, тоже самое, но можно заменить x на

    actor.exp + x, тогда опыт будет прибавляться к текущему значению.


    Спойлер Параметры:

    $game_actors[n].add_param(p, +/-x), где n - ID героя, x - значение параметра, p - ID параметра (0=MHP,

    1=MMP, 2=ATK, 3=DEF, 4=MAT, 5=MDF, 6=AGI, 7=LUK)

    Для группы
    $game_party.members.each { |actor| actor.add_param(p, +/-x) }


    Спойлер Навыки:

    $game_actors[n].learn_skill(s) - узнать навык
    $game_actors[n].forget_skill(s) - забыть навык
    где n - ID героя, s - ID навыка

    Для группы
    $game_party.members.each { |actor| actor.learn_skill(s) }
    $game_party.members.each { |actor| actor.forget_skill(s) }


    Спойлер Экипировка:

    $game_actors[n].change_equip_by_id(v, e), где n - ID героя, v - слот (0=weapon, 1=shield, 2=head, 3=body,

    4=accessory), e - ID предмета
    Предмет должен быть в инвентаре!


    Спойлер Имя:

    $game_actors[n].name = "текст", где n - ID героя


    Спойлер Класс:

    $game_actors[n].change_class(c), где n - ID героя, c - ID класса


    Спойлер Прозвище:

    $game_actors[n].nickname = "Текст", где n - ID героя


    Спойлер Золото:

    $game_party.gain_gold(x) - дать x золота (если значение отрицательно, то работает как lose)
    $game_party.lose_gold(x) - забрать х золота (если значение отрицательно, то работает как gain)


    Спойлер Предметы:

    n - ID предмета, х - количество (работает так же как и золото)
    $game_party.gain_item($data_items[n], x) - дать
    $game_party.lose_item($data_items[n], x) забрать
    Для оружия и брони заменить items на weapons и armors соответственно


    Спойлер Партия:

    n - ID героя, p - позиция (0 - лидер)
    $game_party.add_actor(n) - добавить
    $game_party.remove_actor(n) - убрать
    $game_party.remove_actor($game_party.members[p].id) - убрать героя с определенной позиции


    Игровой процесс:
    Спойлер Переменные:

    Переменные легко задавать через стандартные методы, но как записать в переменную слово? А вот как.
    $game_variables[n] = 'text', где n-номер переменной, а text-собственно текст. Можно использовать для паролей, храня их в переменных, а не в именах героев или записать в переменные, например, окончания слов. Тогда можно будет сделать различное обращение к персонажам мужского и женского пола.


    Спойлер Переключатели:

    Свитчи, точнее селф (локальные) свитчи. Стандартными методами вы можете включать и выключать селф свитчи только в самом событии, но не из других событий менять их невозможно и приходиться использовать кучу общих переключателей, захламляя базу. Но вот так можно обойтись и без них.
    $game_self_switches[[map, event, 'N']] = value, где map-ID карты, event-ID эвента, N- A-D
    При этом вы можете использовать @map_id-получает ID карты на которой вы находитесь и @event.id-получает ID эвента который использует скрипт.

    Обычный свитч $game_switches[n] = true/false, где n его номер


    Спойлер Таймер:

    $game_timer.start(sec * Graphics.frame_rate) - запуск, где sec время действия в секундах
    $game_timer.stop - остановка


    Спойлер Условие:

    # Стандартное условие
    if что-то происходит
    # делай дело
    else
    # делай дело
    end

    # Ветвление условий, если у вас много вариантов
    if что-то происходит
    # делай это
    elsif что-то еще происходит
    # делай дело
    elsif снова что-то происходит
    # делай дело
    elsif и опять
    # делай дело
    end


    Спойлер Общее событие:

    $game_temp.reserve_common_event(x) - x-ID события


    Движение:
    Спойлер Перемещение игрока:

    $game_temp.fade_type = fade
    $game_player.reserve_transfer(map_id, x, y, direction)
    Где fade изменение экрана = 0 черный, 1 белый, 2 без изменения
    map_id, x, y - ID карты и координаты куда переместить
    direction - направление [0] запомнить, [2] вниз, [4] влево, [6] вправо, [8] вверх


    Спойлер Транспорт:

    Преместить
    $game_map.vehicles[n].set_location(map_id, x, y)
    n - тип транспорта 0 лодка, 1 корабль, 2 дирижабль
    map_id, x, y - ID карты и координаты куда переместить

    Получить данные о транспорте
    $game_map.vehicles[n].x
    $game_map.vehicles[n].y
    n - тип транспорта 0 лодка, 1 корабль, 2 дирижабль


    Спойлер Перемещение события/игрока:

    $game_map.events[n].moveto(x, y) - для ивента
    $game_player.moveto(x, y) - для игрока (работает как $game_player.reserve_transfer(@map_id, x, y, 0))
    n - ID события
    x, y - новые координаты


    Спойлер Движение камеры:

    $game_map.start_scroll(direction, distance, speed)
    direction - направление [2] вниз, [4] влево, [6] вправо, [8] вверх
    distance - дистанция в квадратах мейкера
    speed - скорость [1] 1/8, [2] 1/4, [3] 1/2, [4] 1, [5] х2, [6] х4


    Спойлер Зайти/Выйти из транспорта:

    $game_player.get_on_off_vehicle = true/false


    Спойлер Ожидание:

    Ожидание для перемещения
    SceneManager.scene.wait(x), x - сколько кадров ждать
    Ожидания для остального
    x.times { Fiber.yield }, x - сколько кадров ждать


    Картинки и погода:
    Спойлер Показать картинку:

    screen.pictures[index].show(name, position, x, y, x zoom, y zoom, opacity, blend type)
    index - индекс картинки
    name - имя файла
    позиция - position = [0] по краю, [1] по центру
    x, y - координаты
    x zoom, y zoom - увеличение по x, y = масштаб
    opacity - прозрачность, для непрозрачности ставится 255
    смешивание - blend type = [0] обычное, [1] добавление, [2] замещение


    Спойлер Двигать картинку:

    screen.pictures[index].move(position, x, y, x zoom, y zoom, opacity, blend type, wait)
    index - индекс картинки
    position(позиция) = [0] по краю, [1] по центру
    x, y - координаты
    x zoom, y zoom - увеличение по x, y = масштаб
    opacity - прозрачность, для непрозрачности ставится 255
    blend type(смешивание) = [0] обычное, [1] добавление, [2] замещение
    wait - продолжительность движения, в кадрах


    Спойлер Вращать картинку:

    screen.pictures[index].rotate(s)
    index - индекс картинки
    s - скорость вращения


    Спойлер Оттенок картинки:

    screen.pictures[index].start_tone_change(Tone.new(0, 0, 0, 0), wait)
    index - индекс картинки
    Тон задается так же как и в окне, задаем вместо нулей
    wait - время ожидания в кадрах


    Спойлер Удалить картинку:

    Для событий на карте
    screen.pictures[index].erase
    index - индекс картинки


    Спойлер Погодные эффекты:

    $game_map.screen.change_weather(type, power, time)
    type(тип) = :none, :rain, :storm, :snow
    power(сила) - сила с которой будет идти погода
    time(время) - как быстро сменится погода, в кадрах
    По умолчанию сила не модет быть больше 10, но чем больше число, тем темнее экран, а больше 30 экран уже

    почти не видно.


    Персонаж:
    Спойлер Прозрачность:

    $game_player.transparent = true/false


    Спойлер Видимость группы:

    $game_player.followers.visible = true/false
    $game_player.refresh


    Спойлер Собрать группу:

    $game_player.followers.gather - все сопартийцы переходят в позицию игрока


    Спойлер Показать анимацию:

    Для персонажа
    $game_player.animation_id = n
    Для события
    $game_map.events[event_id].animation_id = n

    event_id - ID события
    n - ID анимации


    Спойлер Показать эмоцию:

    Для персонажа
    $game_player.balloon_id = n
    Для события
    $game_map.events[event_id].balloon_id = n

    event_id - ID события
    n - номер анимации от 1 до 10


    Спойлер Удалить событие:

    $game_map.events[event_id].erase
    event_id - ID события


    Экран:
    Спойлер Скрыть/Показать экран:

    Скрыть: screen.start_fadeout(n)
    Показать: screen.start_fadein(n)
    n - длительность, в кадрах


    Спойлер Цвет экрана:

    $game_map.screen.start_tone_change(Tone.new(255, 0, 0, 0), wait)
    Тон задается так же как и в окне, задаем вместо нулей
    wait - время ожидания в кадрах


    Спойлер Вспышка:

    screen.start_flash(Color.new(0,0,0,power), wait)
    Цвет задается так же как и в окне, задаем вместо нулей
    power - сила вспышки (прозрачность)
    wait - время ожидания в кадрах


    Спойлер Тряска:

    $game_map.screen.start_shake(power, speed, duration)
    power - сила тряски
    speed - скорость
    duration - время действия
    По умолчанию сила и скорость в мейкере выше 9.


    Музыка:
    Спойлер Проиграть BGM/ME/BGS/SE:

    RPG::BGM.new("BGM Name", volume, pitch).play
    RPG::ME.new("ME Name", volume, pitch).play
    RPG::BGS.new("BGS Name", volume, pitch).play
    RPG::SE.new("SE Name", volume, pitch).play
    Name - имя файла
    volume - громкость
    pitch - темп
    Проиграть BGM карты
    $game_map.autoplay
    Проиграть BGM битвы
    BattleManager.play_battle_bgm
    Проиграть ME победы
    BattleManager.play_battle_end_me


    Спойлер Сохранить/Вернуть/Остановить:

    Сохранить BGM
    $game_system.save_bgm
    Сохранить BGM и BGS
    BattleManager.save_bgm_and_bgs
    Возобновить BGM
    $game_system.replay_bgm
    Возобновить BGM и BGS
    BattleManager.replay_bgm_and_bgs
    Заглушить BGM/BGS/ME
    RPG::BGM.fade(time)
    RPG::BGS.fade(time)
    RPG::ME.fade(time)
    где time - время в кадрах
    Остановить BGM/BGS/ME/SE
    RPG::BGM.stop
    RPG::BGS.stop
    RPG::ME.stop
    RPG::SE.stop


    Контроль сцен:
    Спойлер Битва:

    BattleManager.setup(troop_id, esc, cont)
    BattleManager.event_proc = Proc.new {|n|
    @branch[@indent] = n }
    $game_player.make_encounter_count
    SceneManager.call(Scene_Battle)
    Fiber.yield

    troop_id - ID группы врагов
    esc - возможен ли побег true/false
    cont - продолжать после проигрыша true/false


    Спойлер Магазин:

    goods = [[type, id, price_flag(, price)]]
    SceneManager.call(Scene_Shop)
    SceneManager.scene.prepare(goods, true)
    type - тип предмета [0] вещи, [1] оружие, [2] броня
    id - ID предмета
    price_flag - флаг новой цены 0 если нет, 1 если есть
    price - своя цена, если флаг 1

    Например:
    goods = [[0,1,1,25],[0,2,0]] #первым в списке будет вещь с id 1 по новой цене 25, второй будет вещь с id 2 по цене из бд
    SceneManager.call(Scene_Shop)
    SceneManager.scene.prepare(goods, true)

    Можно использовать массив
    goods = []
    for id in 1..20
    goods.push([0, id, 0])
    end


    Спойлер Ввод имени:

    SceneManager.call(Scene_Name)
    SceneManager.scene.prepare(id, long)
    Fiber.yield
    id - ID персонажа, которому нужно ввести имя
    long - длинна имени


    Спойлер Вызов сцен:

    SceneManager.call(Scene_Save) - сохранение
    SceneManager.call(Scene_Load) - загрузка
    SceneManager.exit - выход
    SceneManager.call(Scene_Gameover) - конец игры

    Вот так можно вызвать любую сцену из списка в скриптах
    SceneManager.call(scene)
    scene - нужная вам сцена ( Scene_Menu, Scene_Item и так далее)


    Карта:
    Спойлер Показ имени карты:

    $game_map.name_display = true/false


    Спойлер Выбор тайлсета:

    $game_map.change_tileset(n)
    n - ID тайлсета


    Спойлер Выбрать фон битвы:

    $game_map.change_battleback("battleback1", "battleback2")
    battleback1 и battleback2 - названия файлов без расширения


    Спойлер Выбрать параллакс:

    $game_map.change_parallax("name", Loop_Hor, Loop_Ver, HScroll, VScroll)
    name - названия файла без расширения
    Loop_Hor, Loop_Ver - зацикленная прокрутка по горизонтали и вертикали true/false
    HScroll, VScroll - скорость автоматической прокрутки


    Спойлер Информация:

    Координаты игрока
    $game_player.x
    $game_player.y
    Координаты события
    $game_map.events[event_id].x
    $game_map.events[event_id].y
    event_id - ID события

    Тег территории
    $game_map.terrain_tag(x, y) - по координатам
    $game_player.terrain_tag - по местоположению игрока
    $game_map.events[event_id].terrain_tag - по местоположению события
    event_id - ID события

    Регион
    $game_map.region_id(x, y) - по координатам
    $game_player.region_id - по местоположению игрока
    $game_map.events[event_id].region_id - по местоположению события
    event_id - ID события

    Карта
    $game_map.name - имя карты
    $game_map.map_id - ID карты

    Видит ли игрок событие
    $game_map.events[event_id].near_the_player?
    event_id - ID события
    Принимает значение true/false если игрок в пределах 20 квадратов

    Сведения о событии
    $game_map.events[event_id].direction - направление события
    $game_map.event_id_xy(x, y) - id события по координатам


    Спойлер Выбрать графику:

    Для игрока
    $game_actors[actor_id].set_graphic("char_name", char_index, "face_name", face_index)
    $game_player.refresh
    actor_id - ID персонажа
    char_name - имя файла графики, без расширения
    char_index - индекс графики, начиная с 0
    face_name - имя файла лица, без расширения
    face_index - индекс лица, начиная с 0

    Для события
    $game_map.events[event_id].set_graphic("char_name", char_index)
    event_id - ID события
    char_name - имя файла графики, без расширения
    char_index - индекс графики, начиная с 0


    Дополнение:
    Спойлер Инструменты:

    Очистить карту от эффектов/тона/вспышки/тряски/погоды/картинки
    $game_map.screen.clear
    Очитить моментально
    $game_map.screen.clear_tone/shake/weather/pictures


    Спойлер Кнопки:

    К сожалению я так и не понял чем эти команды отличаются
    Input.trigger?(:A)
    Input.repeat?(:A)
    Input.press?(:A)


    Спойлер Дебагинг:

    Моментально использовать предмет, независимо от его наличия
    $game_actors[n].use_item($data_items[x]) - предмет x для персонажа с ID n
    $game_party.leader.use_item($data_items[x]) - предмет x лидера отряда
    $game_party.members[n].use_item($data_items[x]) - предмет x для члена партии с n по счету (лидер всегда 0)

    Узнать размер партии
    $game_party.members.size
    или
    $game_party.all_members.size

    Проверка доступа
    $game_actors[X].equips.include?($data_weapons[Y]) - надето ли на персонажа X орудие Y
    $game_actors[X].equips.include?($data_armors[Y]) - надето ли на персонажа X броня Y
    $game_actors[X].skills.include?($data_skills[Y]) - изучен ли у персонажа X навык Y
    $game_actors[X].states.include?($data_states[Y]) - висит ли на персонаже X эффект Y

    Получить Имя/Прозвище, ID класса, класс
    $game_actors[X].name - возвращает имя
    $game_actors[X].nickname - возвращает прозвище
    $game_actors[X].class.id - возвращает ID класса
    $game_actors[X].class.name - возвращает имя класса
    Последний раз редактировалось Paranoid; 13.04.2017 в 15:07.
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  2. #2
    Гость Аватар для DesKarD
    Информация о пользователе
    Регистрация
    01.08.2015
    Адрес
    город Ромдо
    Сообщений
    486
    Записей в дневнике
    2
    Репутация: 14 Добавить или отнять репутацию

    По умолчанию

    О, и о применений расскажи для самых маленьких :3
    Ну ты понял, что я о себе да?
    И вообще ты можешь хорошим сенсеем стать с таким подходом

  3. #3
    Хранитель Форума Аватар для Валера
    Информация о пользователе
    Регистрация
    15.04.2008
    Адрес
    Москва
    Сообщений
    14,006
    Записей в дневнике
    3
    Репутация: 166 Добавить или отнять репутацию

    По умолчанию

    У меня сейчас хороший "подход" был: пол-часа делал ивент, обрадовался, что все сделал и... вышел из него.
    ВСЁ ! ! !
    Ивент пустой...

    Мораль: пока не нажал ОК не радуйся, змей! Не расслабляйся.

    Спойлер И как тебе не стыдно-то, а, Валера?:


    Оборона форта: http://rghost.ru/8kLGxFtD2
    Сделать, чтоб все происходило, как я хочу, - вот, собственно, и весь мейкер!
    Адский Рейд: http://rpgmaker.su/vbdownloads.php?d...downloadid=106

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

    По умолчанию

    Цитата Сообщение от DesKarD Посмотреть сообщение
    О, и о применений расскажи для самых маленьких :3
    Ну ты понял, что я о себе да?
    И вообще ты можешь хорошим сенсеем стать с таким подходом
    Дескард, это аналог этой темы. Только для Аси.
    Парноид просто взялся за перевод. За что ему спасибо.
    Оригинал же здесь.
    Что же касается применения, то это уже от фантазии зависит.
    Я некоторые команды применял в Безумии, чтоб автоматом сменить оружие у героя. Делал огород Лорду с расчетом времени роста.
    Ту же ловушку Шипы в полу. И т.д. и т.п.
    Но самое классное и расширяющее возможности - это то, что их можно пихать в Move Route ивента.

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

    По умолчанию

    Цитата Сообщение от DesKarD Посмотреть сообщение
    О, и о применений расскажи для самых маленьких :3
    Ну ты понял, что я о себе да?
    И вообще ты можешь хорошим сенсеем стать с таким подходом
    Ну можно конечно потупить с некоторыми командами, но я не уверен что смогу найти применение прям всем. Как только выложу все части может склепаю демку с использованием некоторых команд, если уж прям нужно.
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

  6. #6
    Гость Аватар для DesKarD
    Информация о пользователе
    Регистрация
    01.08.2015
    Адрес
    город Ромдо
    Сообщений
    486
    Записей в дневнике
    2
    Репутация: 14 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от peter8031983 Посмотреть сообщение
    Оригинал же здесь.
    Только для элиты зарегистрированных я понимаю?

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

    По умолчанию

    Цитата Сообщение от DesKarD Посмотреть сообщение
    Только для элиты зарегистрированных я понимаю?
    Уже да. Раньше было для всех.

  8. #8

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

    По умолчанию

    Цитата Сообщение от peter8031983 Посмотреть сообщение
    Таки где продолжение перевода?
    Сессия не дает нормально разобрать скрипты. Так что до 27 вряд ли что-то будет.
    Лицензионный VX Ace. Спасибо Петр.
    2 года мукеризма в пустую.

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

    По умолчанию

    Цитата Сообщение от Paranoid Посмотреть сообщение
    Сессия не дает нормально разобрать скрипты. Так что до 27 вряд ли что-то будет.
    Пичаль...
    Подождем.

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

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[VX Ace] Простые скрипты