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

Тема: Вопрос по написанию скриптов для VX Ace

  1. #1
    Пользователь Аватар для RpgMakerUser
    Информация о пользователе
    Регистрация
    24.05.2015
    Сообщений
    43
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию Вопрос по написанию скриптов для VX Ace

    Привет всем создателям игр! У меня вопрос относительно Rpg Maker VX Ace можно ли с помощью скриптов сделать так чтобы если включён переключатель 1 был бы Русский если переключатель 2 был бы Английский а если переключатель 3 был бы Японский язык? Извините если вам не понравится мой вопрос!

  2. #2
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Если язык интерфейса, то легко. А вот язык теста по сложнее, но можно сделать без скриптов. Все диалоги в общих событиях, а в каждом ролики идет небольшая проверка на переменную и вызывается нужное общее события.

  3. #3
    Пользователь Аватар для RpgMakerUser
    Информация о пользователе
    Регистрация
    24.05.2015
    Сообщений
    43
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Ну мне нужно интерфейс сделать под разные языки что бы не делать отдельные архивы! Для проекта который ещё с времён ГДСА который счас вроде сдох всмысле ГДСА а не проект!

  4. #4
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Ну тогда легко. Пришел с работы, отдохну и напишу пример как делается.

  5. #5
    Пользователь Аватар для RpgMakerUser
    Информация о пользователе
    Регистрация
    24.05.2015
    Сообщений
    43
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Спасибо буду ждать если можно пришли мне его по скайп!

  6. #6
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Тут пример в крадце будет, нету времени делать. Я в своем проекте делал.
    1. Суть такова создается массив. Его прописываем DataManager, чтобы он сохранялся и загружался. Приведу свой код, мой массив time.
    Спойлер 1:

    #================================================= =============================
    # ■ DataManager
    #------------------------------------------------------------------------------
    #  データベースとゲームオブジェク を管理するモジュールです。ゲーム 使用する
    # ほぼ全てのグローバル変数はこのモ ュールで初期化されます。
    #================================================= =============================

    module DataManager
    #--------------------------------------------------------------------------
    # ● モジュールのインスタンス変数
    #--------------------------------------------------------------------------
    @last_savefile_index = 0 # 最後にアクセスしたファイル
    #--------------------------------------------------------------------------
    # ● モジュール初期化
    #--------------------------------------------------------------------------
    def self.init
    @last_savefile_index = 0
    load_database
    create_game_objects
    setup_battle_test if $BTEST
    end
    #--------------------------------------------------------------------------
    # ● データベースのロード
    #--------------------------------------------------------------------------
    def self.load_database
    if $BTEST
    load_battle_test_database
    else
    load_normal_database
    check_player_location
    end
    end
    #--------------------------------------------------------------------------
    # ● 通常のデータベースをロード
    #--------------------------------------------------------------------------
    def self.load_normal_database
    $data_actors = load_data("Data/Actors.rvdata2")
    $data_classes = load_data("Data/Classes.rvdata2")
    $data_skills = load_data("Data/Skills.rvdata2")
    $data_items = load_data("Data/Items.rvdata2")
    $data_weapons = load_data("Data/Weapons.rvdata2")
    $data_armors = load_data("Data/Armors.rvdata2")
    $data_enemies = load_data("Data/Enemies.rvdata2")
    $data_troops = load_data("Data/Troops.rvdata2")
    $data_states = load_data("Data/States.rvdata2")
    $data_animations = load_data("Data/Animations.rvdata2")
    $data_tilesets = load_data("Data/Tilesets.rvdata2")
    $data_common_events = load_data("Data/CommonEvents.rvdata2")
    $data_system = load_data("Data/System.rvdata2")
    $data_mapinfos = load_data("Data/MapInfos.rvdata2")
    $time = load_data("Data/Time.rvdata2")
    end
    #--------------------------------------------------------------------------
    # ● 戦闘テスト用のデータベースをロー
    #--------------------------------------------------------------------------
    def self.load_battle_test_database
    $data_actors = load_data("Data/BT_Actors.rvdata2")
    $data_classes = load_data("Data/BT_Classes.rvdata2")
    $data_skills = load_data("Data/BT_Skills.rvdata2")
    $data_items = load_data("Data/BT_Items.rvdata2")
    $data_weapons = load_data("Data/BT_Weapons.rvdata2")
    $data_armors = load_data("Data/BT_Armors.rvdata2")
    $data_enemies = load_data("Data/BT_Enemies.rvdata2")
    $data_troops = load_data("Data/BT_Troops.rvdata2")
    $data_states = load_data("Data/BT_States.rvdata2")
    $data_animations = load_data("Data/BT_Animations.rvdata2")
    $data_tilesets = load_data("Data/BT_Tilesets.rvdata2")
    $data_common_events = load_data("Data/BT_CommonEvents.rvdata2")
    $data_system = load_data("Data/BT_System.rvdata2")
    end
    #--------------------------------------------------------------------------
    # ● プレイヤーの初期位置存在チェック
    #--------------------------------------------------------------------------
    def self.check_player_location
    if $data_system.start_map_id == 0
    msgbox(Vocab::PlayerPosError)
    exit
    end
    end
    #--------------------------------------------------------------------------
    # ● 各種ゲームオブジェクトの作成
    #--------------------------------------------------------------------------
    def self.create_game_objects
    $game_temp = Game_Temp.new
    $game_system = Game_System.new
    $game_timer = Game_Timer.new
    $game_message = Game_Message.new
    $game_switches = Game_Switches.new
    $game_variables = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_actors = Game_Actors.new
    $game_party = Game_Party.new
    $game_troop = Game_Troop.new
    $game_map = Game_Map.new
    $game_player = Game_Player.new
    end
    #--------------------------------------------------------------------------
    # ● ニューゲームのセットアップ
    #--------------------------------------------------------------------------
    def self.setup_new_game
    create_game_objects
    $game_party.setup_starting_members
    $game_map.setup($data_system.start_map_id)
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    $game_player.refresh
    Graphics.frame_count = 0
    end
    #--------------------------------------------------------------------------
    # ● 戦闘テストのセットアップ
    #--------------------------------------------------------------------------
    def self.setup_battle_test
    $game_party.setup_battle_test
    BattleManager.setup($data_system.test_troop_id)
    BattleManager.play_battle_bgm
    end
    #--------------------------------------------------------------------------
    # ● セーブファイルの存在判定
    #--------------------------------------------------------------------------
    def self.save_file_exists?
    !Dir.glob('Save*.rvdata2').empty?
    end
    #--------------------------------------------------------------------------
    # ● セーブファイルの最大数
    #--------------------------------------------------------------------------
    def self.savefile_max
    return 4
    end
    #--------------------------------------------------------------------------
    # ● ファイル名の作成
    # index : ファイルインデックス
    #--------------------------------------------------------------------------
    def self.make_filename(index)
    sprintf("Save%02d.rvdata2", index + 1)
    end
    #--------------------------------------------------------------------------
    # ● セーブの実行
    #--------------------------------------------------------------------------
    def self.save_game(index)
    begin
    save_game_without_rescue(index)
    rescue
    delete_save_file(index)
    false
    end
    end
    #--------------------------------------------------------------------------
    # ● ロードの実行
    #--------------------------------------------------------------------------
    def self.load_game(index)
    load_game_without_rescue(index) rescue false
    end
    #--------------------------------------------------------------------------
    # ● セーブヘッダのロード
    #--------------------------------------------------------------------------
    def self.load_header(index)
    load_header_without_rescue(index) rescue nil
    end
    #--------------------------------------------------------------------------
    # ● セーブの実行(例外処理なし)
    #--------------------------------------------------------------------------
    def self.save_game_without_rescue(index)
    File.open(make_filename(index), "wb") do |file|
    $game_system.on_before_save
    Marshal.dump(make_save_header, file)
    Marshal.dump(make_save_contents, file)
    @last_savefile_index = index
    end
    return true
    end
    #--------------------------------------------------------------------------
    # ● ロードの実行(例外処理なし)
    #--------------------------------------------------------------------------
    def self.load_game_without_rescue(index)
    File.open(make_filename(index), "rb") do |file|
    Marshal.load(file)
    extract_save_contents(Marshal.load(file))
    reload_map_if_updated
    @last_savefile_index = index
    end
    return true
    end
    #--------------------------------------------------------------------------
    # ● セーブヘッダのロード(例外処理な )
    #--------------------------------------------------------------------------
    def self.load_header_without_rescue(index)
    File.open(make_filename(index), "rb") do |file|
    return Marshal.load(file)
    end
    return nil
    end
    #--------------------------------------------------------------------------
    # ● セーブファイルの削除
    #--------------------------------------------------------------------------
    def self.delete_save_file(index)
    File.delete(make_filename(index)) rescue nil
    end
    #--------------------------------------------------------------------------
    # ● セーブヘッダの作成
    #--------------------------------------------------------------------------
    def self.make_save_header
    header = {}
    header[:characters] = $game_party.characters_for_savefile
    header[laytime_s] = $game_system.playtime_s
    header
    end
    #--------------------------------------------------------------------------
    # ● セーブ内容の作成
    #--------------------------------------------------------------------------
    def self.make_save_contents
    contents = {}
    contents[:system] = $game_system
    contents[:timer] = $game_timer
    contents[:message] = $game_message
    contents[:switches] = $game_switches
    contents[:variables] = $game_variables
    contents[:self_switches] = $game_self_switches
    contents[:actors] = $game_actors
    contents[arty] = $game_party
    contents[:troop] = $game_troop
    contents[:map] = $game_map
    contents[layer] = $game_player
    contents[:time] = $time
    contents
    end
    #--------------------------------------------------------------------------
    # ● セーブ内容の展開
    #--------------------------------------------------------------------------
    def self.extract_save_contents(contents)
    $game_system = contents[:system]
    $game_timer = contents[:timer]
    $game_message = contents[:message]
    $game_switches = contents[:switches]
    $game_variables = contents[:variables]
    $game_self_switches = contents[:self_switches]
    $game_actors = contents[:actors]
    $game_party = contents[arty]
    $game_troop = contents[:troop]
    $game_map = contents[:map]
    $game_player = contents[layer]
    $time = contents[:time]
    end
    #--------------------------------------------------------------------------
    # ● データが更新されている場合はマッ を再読み込み
    #--------------------------------------------------------------------------
    def self.reload_map_if_updated
    if $game_system.version_id != $data_system.version_id
    $game_map.setup($game_map.map_id)
    $game_player.center($game_player.x, $game_player.y)
    $game_player.make_encounter_count
    end
    end
    #--------------------------------------------------------------------------
    # ● セーブファイルの更新日時を取得
    #--------------------------------------------------------------------------
    def self.savefile_time_stamp(index)
    File.mtime(make_filename(index)) rescue Time.at(0)
    end
    #--------------------------------------------------------------------------
    # ● 更新日時が最新のファイルインデッ スを取得
    #--------------------------------------------------------------------------
    def self.latest_savefile_index
    savefile_max.times.max_by {|i| savefile_time_stamp(i) }
    end
    #--------------------------------------------------------------------------
    # ● 最後にアクセスしたファイルのイン ックスを取得
    #--------------------------------------------------------------------------
    def self.last_savefile_index
    @last_savefile_index
    end
    end


    2. Прописываешь после выбора языка нужный массив. Через выполнить скрипть. Вместо 1,2,3,4 названия меню. К примеру вместо 1 в русской версии предметы, в англлийской item. Массив может быть большой. Сам пользуюсь 8.
    $time = ['1','2','3','4']
    3. Обычно текст в меню указывается так, когда команда выбора:
    add_command(Vocab::game_end,:game_end)
    ты меняешь так
    add_command($time[1],:game_end)
    В скобках позиция где нужное название. В данном примере вместо конца покажет 1.
    4. Когда название в меню вставляется через текст:
    draw_text(140, 0, 50, line_height, $time[1])
    5. По ходу игры легко можно поменять через выполнить скрипт.
    $time = ['1','2','3','4']
    Последний раз редактировалось Рольф; 25.05.2015 в 13:23.

  7. #7
    Пользователь Аватар для RpgMakerUser
    Информация о пользователе
    Регистрация
    24.05.2015
    Сообщений
    43
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    Спасибо только лучше бы было в примере чем так так как возможно придётся подправить а то у тебя в примере который тут часть символов заменились на значки и эмоций! Впрочем всё равно спасибо!

  8. #8
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

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

  9. #9
    Пользователь Аватар для RpgMakerUser
    Информация о пользователе
    Регистрация
    24.05.2015
    Сообщений
    43
    Репутация: 1 Добавить или отнять репутацию

    По умолчанию

    А где можно скачать твой проект в котором ты это делал?

  10. #10

    По умолчанию

    Гмм, значит пришло время как раз такой скрипт перевести.
    Он поддерживает разные языки, меняемые на лету.

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

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

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

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

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

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

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

Ваши права

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