add some change scene command (#28)

* Add scene change commands

* add change scene command

* Update scene.ts
This commit is contained in:
ohsyme 2022-08-03 21:49:07 +07:00 committed by GitHub
parent 719b3200be
commit fa7a364f88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

48
src/commands/scene.ts Normal file
View File

@ -0,0 +1,48 @@
import Logger from "../util/Logger";
import { ActorEntity } from "../game/entities/Actor";
import Interface, { Command } from "./Interface";
import Database from "../db/Database";
import { GetCurSceneInfoScRsp } from "../data/proto/StarRail";
import Session from "../server/kcp/Session";
import MazePlaneExcel from "../util/excel/MazePlaneExcel";
const c = new Logger("/scene", "blue");
export default async function handle(command: Command, session: Session) {
if (!Interface.target) {
c.log("No target specified");
return;
}
const planeID = MazePlaneExcel.fromPlaneId(parseInt(command.args[0]))
const uid = Interface.target.player.db._id;
const posData = Interface.target.player.db.posData;
const lineup2 = await Interface.target.player.getLineup();
const curAvatarEntity = new ActorEntity(Interface.target.player.scene, lineup2.avatarList[0].id, posData.pos);
if (!planeID) return c.log("Usage: /scene <planeID>");
const db = Database.getInstance();
await db.update('players',{_id:uid},{posData: { floorID: Number(planeID!.StartFloorID), planeID: Number(planeID!.PlaneID)}})
await Interface.target.player.save()
//ty for tamilpp25 scene
Interface.target.send(GetCurSceneInfoScRsp, {
retcode: 0,
scene: {
planeId: Number(planeID!.PlaneID),
floorId: Number(planeID!.StartFloorID),
entityList: [
curAvatarEntity
],
entityBuffList: [],
entryId: 10001,
envBuffList: [],
gameModeType: 1,
lightenSectionList: []
},
} as unknown as GetCurSceneInfoScRsp);
Interface.target.player.scene.spawnEntity(curAvatarEntity, true);
Interface.target.sync();
}