Implement some packets for character screen (#44)

* implement eidolon levelup

* implement changing weapons
This commit is contained in:
memetrollsXD 2022-08-05 07:35:10 +02:00 committed by GitHub
parent 016faec86b
commit 4e0b5a3064
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 63 additions and 3 deletions

View File

@ -16,7 +16,7 @@ export default async function handle(session: Session, packet: Packet) {
if (!success) {
session.send(DoGachaScRsp, {
retcode: 1
retcode: 1301
} as DoGachaScRsp);
}

View File

@ -0,0 +1,16 @@
import { DressAvatarCsReq, DressAvatarScRsp } from "../../data/proto/StarRail";
import Avatar from "../../db/Avatar";
import Packet from "../kcp/Packet";
import Session from "../kcp/Session";
export default async function handle(session: Session, packet: Packet) {
const body = packet.body as DressAvatarCsReq;
const avatar = await Avatar.loadAvatarForPlayer(session.player, body.baseAvatarId);
avatar.db.equipmentUniqueId = body.equipmentUniqueId;
await avatar.save();
session.send(DressAvatarScRsp, { retcode: 0 });
session.sync();
}

View File

@ -0,0 +1,44 @@
import { RankUpAvatarCsReq, RankUpAvatarScRsp } from "../../data/proto/StarRail";
import Avatar from "../../db/Avatar";
import { PayItemData } from "../../db/Inventory";
import Logger from "../../util/Logger";
import Packet from "../kcp/Packet";
import Session from "../kcp/Session";
const c = new Logger("RankUpAvatarCsReq");
export default async function handle(session: Session, packet: Packet) {
const body = packet.body as RankUpAvatarCsReq;
const dataObj: RankUpAvatarScRsp = {
retcode: 0
};
try {
const inv = await session.player.getInventory();
if (!body.costData) return;
const list = body.costData.itemList;
const arr: Array<PayItemData> = [];
for (let i = 0; i < list.length; i++) {
const item = list[i];
if (!item.pileItem) continue;
arr.push({
count: item.pileItem.itemNum,
id: item.pileItem.itemId
});
}
if (await inv.payItems(arr)) {
const avatar = await Avatar.loadAvatarForPlayer(session.player, body.baseAvatarId);
avatar.db.rank = body.rank // gidra moment: ez hack
await avatar.save();
} else {
dataObj.retcode = 1301;
}
} catch (e) {
c.error(e as Error);
dataObj.retcode = 2;
} finally {
session.send(RankUpAvatarScRsp, dataObj);
session.sync();
}
}

View File

@ -17,14 +17,14 @@ export default async function handle(session: Session, packet: Packet) {
rounds: 1,
status: ChallengeStatus.CHALLENGE_DOING,
killMonsterList: [{
monsterId: 1001010,
monsterId: 8013010,
killNum: 1,
}]
},
maze: {
// ? Data from MappingInfoExcelTable
id: 30101,
mapEntryId: 1000,
mapEntryId: 10001,
floor: {
floorId: 20121001,
scene: {