【弐寺】LR2でローカルのPLAYER同士をライバル表示する
BMSで片手の練習をしているのですが、左手・右手でプレイヤーデータを作成してランプやBPを別個に管理しています。
基本的にLR2はLR2IRに参加してライバル登録しないとライバル表示できない仕様っぽいんですが、自分はLR2IRに参加はしていないのでどうにかローカルのプレイヤーデータ同士でライバル表示できないか?と色々検索してました。
(ライバル表示できればクリアランプやBPの比較が便利なんですよね~!)
色々ググってたら同じことやってる人がいた…!
ので、ほぼ丸パクリで、あとは手順をメモしておきます。
- プレイヤーデータを2つ以上用意する。
- rival.bat(Database\Score内のデータをRivalフォルダへコピーするバッチ)を作成する。
長くなっちゃうんで続きを読むの中のrival.batの中身をメモ帳にコピペしてrival.batを作成する。
保存先はLR2.exeと同じ場所。
保存するときにファイルの種類を「すべてのファイル」にしてから保存するのを忘れずに! - rival.batを叩く。
と、Database\Score内のデータがRivalフォルダへコピーされ、
PLAYER名.lr2folderというカスタムフォルダができる。 - Rivalフォルダ内にできたデータ(99990x.db)をデータベースが開けるソフト(私はDB Browser for SQLiteを使用しています)で開く。
開くとこんな感じ。
- rivalデータ変換用SQLを流してテーブルをRival用の形に変更する。
①rivalデータ変換用SQLをExecute SQLタブ内にコピペ。
②実行ボタンをクリック
③実行結果が表示されたことを確認
④Write Changesをクリックして変更を保存
- 4と5を別のDBでも同じように繰り返し行い、Rivalデータに変換する。
- LR2.exeを実行し、3で作成されたPLAYER名.lr2folderを登録する。
- LR2を通常通り起動するとライバルフォルダが出てきて比較が行えるようになっているはず!
本当は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;