Handle EnterMazeCsReq + GetGachaInfoCsReq (#12)
* Handle Packets: - EnterMazeCsReq + Excel Handler - GetGachaInfoCsReq * Lost forced me to remove unknown... * Fix formatting for snowflake codefactror
This commit is contained in:
parent
b298649e30
commit
a802a91173
@ -13,8 +13,8 @@ export default async function handle(command: Command) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Config.VERBOSE_LEVEL = level as unknown as VerboseLevel;
|
Config.VERBOSE_LEVEL = level as VerboseLevel;
|
||||||
Logger.VERBOSE_LEVEL = level as unknown as VerboseLevel;
|
Logger.VERBOSE_LEVEL = level as VerboseLevel;
|
||||||
c.log(`VerboseLevel set to ${Config.VERBOSE_LEVEL} (${VerboseLevel[level]})`);
|
c.log(`VerboseLevel set to ${Config.VERBOSE_LEVEL} (${VerboseLevel[level]})`);
|
||||||
}
|
}
|
||||||
}
|
}
|
24
src/server/packets/EnterMazeCsReq.ts
Normal file
24
src/server/packets/EnterMazeCsReq.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { EnterMazeCsReq, EnterMazeScRsp } from "../../data/proto/StarRail";
|
||||||
|
import MazePlaneExcel from "../../util/excel/MazePlaneExcel";
|
||||||
|
import Packet from "../kcp/Packet";
|
||||||
|
import Session from "../kcp/Session";
|
||||||
|
|
||||||
|
export default async function handle(session: Session, packet: Packet) {
|
||||||
|
const body = packet.body as EnterMazeCsReq;
|
||||||
|
|
||||||
|
const mazeEntry = MazePlaneExcel.fromEntryId(body.entryId);
|
||||||
|
|
||||||
|
session.send("EnterMazeScRsp", {
|
||||||
|
retcode: 0,
|
||||||
|
maze: {
|
||||||
|
floor: {
|
||||||
|
floorId: mazeEntry.StartFloorID,
|
||||||
|
scene: {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
id: mazeEntry.PlaneID,
|
||||||
|
mapEntryId: body.entryId,
|
||||||
|
}
|
||||||
|
} as EnterMazeScRsp);
|
||||||
|
}
|
22
src/server/packets/GetGachaInfoCsReq.ts
Normal file
22
src/server/packets/GetGachaInfoCsReq.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import { GetGachaInfoScRsp } from "../../data/proto/StarRail";
|
||||||
|
import Packet from "../kcp/Packet";
|
||||||
|
import Session from "../kcp/Session";
|
||||||
|
|
||||||
|
const unix = () => Math.floor(Date.now() / 1000);
|
||||||
|
|
||||||
|
export default async function handle(session: Session, packet: Packet) {
|
||||||
|
session.send("GetGachaInfoScRsp", {
|
||||||
|
gachaRandom: 2503,
|
||||||
|
retcode: 0,
|
||||||
|
gachaInfoList: [{
|
||||||
|
beginTime: unix(),
|
||||||
|
endTime: unix() * 2,
|
||||||
|
newbieGachaCnt: 10,
|
||||||
|
todayGachaCnt: 1,
|
||||||
|
gachaId: 763, // TODO: Figure out gachaIDs
|
||||||
|
detailWebview: "https://omfgdogs.com/"
|
||||||
|
}],
|
||||||
|
todaySingleGachaMaxCnt: 10,
|
||||||
|
todayTotalGachaCnt: 1,
|
||||||
|
} as GetGachaInfoScRsp);
|
||||||
|
}
|
58
src/util/excel/MazePlaneExcel.ts
Normal file
58
src/util/excel/MazePlaneExcel.ts
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import _MapEntryExcelTable from "../../data/excel/MapEntryExcelTable.json";
|
||||||
|
import _MazePlaneExcelTable from "../../data/excel/MazePlaneExcelTable.json";
|
||||||
|
|
||||||
|
interface MazePlaneExcelTableEntry {
|
||||||
|
PlaneID: number;
|
||||||
|
PlaneType: string;
|
||||||
|
SubType: number;
|
||||||
|
WorldID: number;
|
||||||
|
PlaneName: string;
|
||||||
|
StartFloorID: number;
|
||||||
|
FloorIDList: number[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TextMap {
|
||||||
|
hash: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
type EntranceType = "Town" | "Mission" | "Explore";
|
||||||
|
|
||||||
|
interface MapEntryExcelTableEntry {
|
||||||
|
ID: number;
|
||||||
|
IsShowInMapMenu: boolean;
|
||||||
|
MapMenuSortID: number;
|
||||||
|
EntranceType: EntranceType | number; // Actually an enum. Town | Mission | Explore
|
||||||
|
EntranceGroupID: number;
|
||||||
|
Name: TextMap;
|
||||||
|
Desc: TextMap;
|
||||||
|
EntranceListIcon: string;
|
||||||
|
ImagePath: string;
|
||||||
|
MiniMapIconHintList: any[];
|
||||||
|
ShowReward: number;
|
||||||
|
PlaneID: number;
|
||||||
|
FloorID: number;
|
||||||
|
StartGroupID: number;
|
||||||
|
StartAnchorID: number;
|
||||||
|
TargetMission: number;
|
||||||
|
TargetMainMissionList: number[];
|
||||||
|
BeginMainMissionList: number[];
|
||||||
|
FinishMainMissionList: number[];
|
||||||
|
FinishQuestList: number[];
|
||||||
|
UnlockQuest: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
const MazePlaneExcelTable = _MazePlaneExcelTable as { [key: string]: MazePlaneExcelTableEntry };
|
||||||
|
const MapEntryExcelTable = _MapEntryExcelTable as { [key: string]: MapEntryExcelTableEntry };
|
||||||
|
|
||||||
|
export default class MazePlaneExcel {
|
||||||
|
private constructor() { }
|
||||||
|
|
||||||
|
public static fromEntryId(entryId: number): MazePlaneExcelTableEntry {
|
||||||
|
const mapEntry = MapEntryExcelTable[entryId.toString()];
|
||||||
|
return MazePlaneExcelTable[mapEntry.PlaneID.toString()];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static fromPlaneId(planeId: number): MazePlaneExcelTableEntry {
|
||||||
|
return MazePlaneExcelTable[planeId.toString()];
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user