项目不再更新,请移步新项目
基于Mirai Console
基于Phigros 2.4.7
至Phigros 2.5.1
下载项目源码
复制PhigrosLibrary目录到您的项目根目录
在您的项目根目录的settings.gradle添加一行
include 'PhigrosLibrary'
在需要引用PhigrosLibrary的项目的build.gradle里修改 dependencies
dependencies {
implementation project(':PhigrosLibrary')
}
绘制B19成绩图
获取所有已打过的可推分曲的目标ACC
修改存档已打过歌分数
修改存档课题模式等级
修改存档data(1024MB以内)
添加存档头像
添加存档收藏品(未经测试)
先搭建好Mirai Console
将PhigrosBot-0.0.3.mirai2.jar放入plugins目录
将data.zip解压至data/given.PhigrosBot 目录
重启Mirai Console
配置指令权限
私聊发送25位SessionToken自动匹配并绑定
/p b19 生成B19图
/p expect 以转发消息形式发送所有可推分歌曲及目标ACC
/p data 修改data数
/p avater <头像名> 添加一个头像
/p collection <收藏品名> 为收藏品添加一条记录
/p challenge <课题分> 修改课题分 课题分为3位整数,彩48为548,金45为445。
/p modify <歌名> <难度> <分数> 修改歌曲分数 ACC为小数,FC只有true和false两个选择
加入 282781492 闲聊
以下代码获取了Phigros账户的B19信息。
class Main {
public static void main(String[] args) {
var user = new PhigrosUser(sessionToken);
user.update();
SongLevel[] songLevels = user.getB19();
}
}
SongLevel的结构是这样的。
class SongLevel implements Comparable<SongLevel>{
public String id; //曲目Id
public int level; // 0:EZ / 1:HD / 2:IN / 3:AT
public int score; // 分数
public float acc;
public boolean fc;
public float difficulty; // 定数
public float rks; // 计算出的rks
@Override
public int compareTo(SongLevel songLevel) {
return Double.compare(songLevel.rks, rks);
}
}
注意:如果只想查询B19和ACC,请使用快速使用的例子,PhigrosUser内的对这两个常用情景有优化。
Phigros云存档包含5部分内容
gameRecord, gameKey, gameProgress, user, setting
其中gameRecord和gameKey为数组结构,其他三个是普通的结构。
public class GameSettings {
GameSettings(byte[] data);
public String getDevice();
public float 背景亮度();
public float 音乐音量();
public float 界面音效音量();
public float 打击音效音量();
public float 铺面延迟();
public float 按键缩放();
}
public class GameUser {
GameUser(byte[] data);
public String getIntroduction();
public String getAvater();
public String getIllustration();
}
class GameProgress {
private final ByteReader reader;
GameProgress(byte[] data);
public short getChallenge();
public void setChallenge(short score);
public int getGameData();
public void setGameData(short MB);
public byte[] getData();
}
对于GameRecord的使用(修改分数)
该方法已经被user.modifySong(String songId, int level, int score, float acc, boolean fc)实现
class Main {
public static void main(String[] args) {
var user = new PhigrosUser(sessionToken);
user.update();
String songId = "青芽.茶鸣拾贰律";
user.modify("gameRecord", data -> {
var gameRecord = new GameRecord(data);
for (GameRecordItem item:gameRecord) {
for (String id:item) {
if (id.equals(songId))
item.modifySong(level, score, acc, fc);
}
}
byte[] data = gameRecord.getData();
});
}
}
对于GameKey的使用和GameRecord是一样的,for循环。
GameKey有5个属性为:读收藏品,单曲解锁,收藏品计数(一个收藏品里包含很多项),曲绘,头像。
package given.phigros;
class GameKeyItem {
GameKeyItem(byte[] data);
public String getId();
public boolean getReadCollection();
public void setReadCollection(boolean b);
public boolean getSingleUnlock();
public void setSingleUnlock(boolean b);
public byte getCollection();
public void setCollection(byte num);
public boolean getIllustration();
public void setIllustration(boolean b);
public boolean getAvater();
public void setAvater(boolean b);
}