読者です 読者をやめる 読者になる 読者になる

だいだらぼっち

惚気ときどき猫のちゲーム

【弐寺】LR2でローカルのPLAYER同士をライバル表示する

片手プレイ 自分用メモ 音ゲー

BMSで片手の練習をしているのですが、左手・右手でプレイヤーデータを作成してランプやBPを別個に管理しています。

基本的にLR2はLR2IRに参加してライバル登録しないとライバル表示できない仕様っぽいんですが、自分はLR2IRに参加はしていないのでどうにかローカルのプレイヤーデータ同士でライバル表示できないか?と色々検索してました。
(ライバル表示できればクリアランプやBPの比較が便利なんですよね~!)

alchemistark.hatenablog.jp

色々ググってたら同じことやってる人がいた…!

ので、ほぼ丸パクリで、あとは手順をメモしておきます。

  1. プレイヤーデータを2つ以上用意する。

    f:id:arma26:20160128110052p:plain

  2. rival.bat(Database\Score内のデータをRivalフォルダへコピーするバッチ)を作成する。
    長くなっちゃうんで続きを読むの中のrival.batの中身をメモ帳にコピペしてrival.batを作成する。
    保存先はLR2.exeと同じ場所。

    f:id:arma26:20160128111935p:plain

    保存するときにファイルの種類を「すべてのファイル」にしてから保存するのを忘れずに!
  3. rival.batを叩く。
    と、Database\Score内のデータがRivalフォルダへコピーされ、
    PLAYER名.lr2folderというカスタムフォルダができる。
  4. Rivalフォルダ内にできたデータ(99990x.db)をデータベースが開けるソフト(私はDB Browser for SQLiteを使用しています)で開く。
    開くとこんな感じ。

    f:id:arma26:20160128115756p:plain

  5. rivalデータ変換用SQLを流してテーブルをRival用の形に変更する。
    ①rivalデータ変換用SQLをExecute SQLタブ内にコピペ。
    ②実行ボタンをクリック
    ③実行結果が表示されたことを確認
    ④Write Changesをクリックして変更を保存

    f:id:arma26:20160128115815p:plain

  6. 4と5を別のDBでも同じように繰り返し行い、Rivalデータに変換する。
  7. LR2.exeを実行し、3で作成されたPLAYER名.lr2folderを登録する。

    f:id:arma26:20160128115846p:plain

  8. LR2を通常通り起動するとライバルフォルダが出てきて比較が行えるようになっているはず!

    f:id:arma26:20160128115905p:plain

本当は4と5もバッチ化したかったんですが、知識不足でダメでした(´・ω・`)いい案あったら教えてください…。

 rival.batの中身

@echo off

rem //LR2のスコアデータをライバルデータに変換します。

rem //フォルダパスを変数に格納

setlocal enabledelayedexpansion

set dbfolder=LR2files\Database\Score\
set rival=LR2files\Rival\

rem //LR2IDが6桁あるようなので(?)ケツの方を使う
set no=999900

rem //このバッチが存在するフォルダをカレントに

pushd %0\..
cls

for %%A IN (%dbfolder%*.db) do (

    rem //ゴリ押しでLR2folderを作る
    copy /y %%A %rival%!no!.db
    sqlite3.exe %rival%!no!.db < sqlite_rival.query

    echo #COMMAND __RIVAL__> %%~nA.lr2folder
    echo #MAXTRACKS !no!>> %%~nA.lr2folder
    echo #CATEGORY ライバルフォルダ>> %%~nA.lr2folder
    echo #TITLE %%~nA>> %%~nA.lr2folder
    echo #INFORMATION_A>> %%~nA.lr2folder
    echo #INFORMATION_B>> %%~nA.lr2folder
    
    set /a no=no+1
)

exit

rivalデータ変換用SQL

CREATE TABLE rival as SELECT
    hash,
    clear as r_clear,
    totalnotes as r_totalnotes,
    maxcombo as r_maxcombo,
    perfect as r_perfect,
    great as r_great,
    good as r_good,
    bad as r_bad,
    poor as r_poor,
    minbp as r_minbp,
    0 as r_option,    
    strftime('%s', 'now') as r_lastupdate
FROM score;

drop table player;
drop table score;