Merge pull request #70 from shiroikitsu8/master
fix bug, and block connection outside mt6, detect force finish
This commit is contained in:
commit
7c739600f7
@ -13,6 +13,7 @@
|
||||
"scratchType": 0,
|
||||
"giveMeterReward": 0,
|
||||
"newCardsBanned": 0,
|
||||
"revisionCheck": 1,
|
||||
"enableScreenshot": 0
|
||||
}
|
||||
}
|
21
prisma/migrations/20230330051225_test_ff/migration.sql
Normal file
21
prisma/migrations/20230330051225_test_ff/migration.sql
Normal file
@ -0,0 +1,21 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Car" ALTER COLUMN "stLoseBits" SET DEFAULT 0;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "FileList" ALTER COLUMN "filePath" DROP DEFAULT;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "CarCrownDetect" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"carId" INTEGER NOT NULL,
|
||||
"status" TEXT NOT NULL DEFAULT '',
|
||||
"area" INTEGER,
|
||||
"ramp" INTEGER,
|
||||
"path" INTEGER,
|
||||
"trail" BYTEA,
|
||||
"playedAt" INTEGER,
|
||||
"tunePower" INTEGER,
|
||||
"tuneHandling" INTEGER,
|
||||
|
||||
CONSTRAINT "CarCrownDetect_pkey" PRIMARY KEY ("id")
|
||||
);
|
5
prisma/migrations/20230330053201_test_ff_2/migration.sql
Normal file
5
prisma/migrations/20230330053201_test_ff_2/migration.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Car" ALTER COLUMN "stLoseBits" SET DEFAULT 0;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "CarCrownDetect" ADD COLUMN "opponentCarId" INTEGER;
|
@ -446,5 +446,19 @@ model FileList {
|
||||
sha1sum String
|
||||
notBefore Int
|
||||
notAfter Int
|
||||
filePath String @default("")
|
||||
filePath String
|
||||
}
|
||||
|
||||
model CarCrownDetect {
|
||||
id Int @id @default(autoincrement())
|
||||
carId Int
|
||||
status String @default("")
|
||||
area Int?
|
||||
ramp Int?
|
||||
path Int?
|
||||
trail Bytes?
|
||||
playedAt Int?
|
||||
tunePower Int?
|
||||
tuneHandling Int?
|
||||
opponentCarId Int?
|
||||
}
|
@ -54,6 +54,11 @@ export interface GameOptions {
|
||||
// and prevent new card registration
|
||||
newCardsBanned: number; // 1 is on, 0 is off
|
||||
|
||||
// revision check
|
||||
// set this option to 1 will block not matched revision
|
||||
// and from connecting to the server
|
||||
revisionCheck: number; // 1 is on, 0 is off
|
||||
|
||||
// revision check
|
||||
// set this option to 1 to enable screenshot feature
|
||||
enableScreenshot: number; // 1 is on, 0 is off
|
||||
|
@ -9,6 +9,7 @@ import * as wm from "../wmmt/wm.proto";
|
||||
// Import Util
|
||||
import * as common from "./util/common";
|
||||
import * as carFunctions from "./cars/functions";
|
||||
import * as terminal from "./terminal/check_car";
|
||||
|
||||
|
||||
export default class CarModule extends Module {
|
||||
@ -81,7 +82,7 @@ export default class CarModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadCarResponse.encode(msg);
|
||||
|
||||
// Send the response
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -94,6 +95,7 @@ export default class CarModule extends Module {
|
||||
// Create the Car
|
||||
let createCar = await carFunctions.createCar(body);
|
||||
let tune = createCar.tune;
|
||||
let itemId = createCar.itemId;
|
||||
let carInsert = createCar.carInsert;
|
||||
|
||||
// Check if user's other car have unique window sticker
|
||||
@ -105,7 +107,7 @@ export default class CarModule extends Module {
|
||||
let additionalInsert = getCarTune.additionalInsert;
|
||||
|
||||
// Check created car and item used
|
||||
let checkCreatedCars = await carFunctions.checkCreatedCar(body, carInsert);
|
||||
let checkCreatedCars = await carFunctions.checkCreatedCar(body, carInsert, itemId);
|
||||
if(checkCreatedCars.cheated === true)
|
||||
{
|
||||
let msg = {
|
||||
@ -119,20 +121,41 @@ export default class CarModule extends Module {
|
||||
let message = wm.wm.protobuf.CreateCarResponse.encode(msg);
|
||||
|
||||
// Send the response
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate blank car settings object
|
||||
let settings = await prisma.carSettings.create({
|
||||
data: {}
|
||||
});
|
||||
|
||||
// Generate blank car state object
|
||||
let state = await prisma.carState.create({
|
||||
data: {}
|
||||
});
|
||||
|
||||
let gtWing = await prisma.carGTWing.create({
|
||||
data: {}
|
||||
});
|
||||
|
||||
// Insert the car into the database
|
||||
let car = await prisma.car.create({
|
||||
data: {
|
||||
...carInsert,
|
||||
...additionalInsert,
|
||||
...additionalWindowStickerInsert
|
||||
...additionalWindowStickerInsert,
|
||||
|
||||
carSettingsDbId: settings.dbId,
|
||||
carStateDbId: state.dbId,
|
||||
carGTWingDbId: gtWing.dbId,
|
||||
}
|
||||
});
|
||||
|
||||
// Check if created car is from terminal scratch car
|
||||
await terminal.checkScratchCar(body.userId, body.car.visualModel!)
|
||||
|
||||
// Get the user's current car order
|
||||
let carOrder = createCar.user.carOrder;
|
||||
await carFunctions.carOrder(carOrder, car, createCar.user.id);
|
||||
@ -160,7 +183,7 @@ export default class CarModule extends Module {
|
||||
let message = wm.wm.protobuf.CreateCarResponse.encode(msg);
|
||||
|
||||
// Send the response
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -226,7 +249,7 @@ export default class CarModule extends Module {
|
||||
let message = wm.wm.protobuf.UpdateCarResponse.encode(msg);
|
||||
|
||||
// Send the response
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
}
|
||||
}
|
@ -17,6 +17,7 @@ export async function createCarWithItem(userItemId: number)
|
||||
}
|
||||
});
|
||||
let tune = 0;
|
||||
let itemId = item.itemId;
|
||||
|
||||
console.log('Item deleted!');
|
||||
|
||||
@ -80,7 +81,7 @@ export async function createCarWithItem(userItemId: number)
|
||||
}
|
||||
break;
|
||||
}
|
||||
console.log(`Item category was ${item.category} and item game ID was ${item.itemId}`);
|
||||
console.log(`Item category was ${item.category} and item game ID was ${itemId}`);
|
||||
|
||||
return { tune }
|
||||
return { tune, itemId }
|
||||
}
|
@ -10,7 +10,6 @@ import * as wmproto from "../../wmmt/wm.proto";
|
||||
// Import Util
|
||||
import * as common from "../util/common";
|
||||
import * as car_tune from "./car_tune";
|
||||
import * as terminal from "../terminal/check_car";
|
||||
|
||||
|
||||
// Get Car Data
|
||||
@ -287,20 +286,6 @@ export async function createCar(body: wm.protobuf.CreateCarRequest)
|
||||
// User not found, terminate
|
||||
if (!user) throw new Error();
|
||||
|
||||
// Generate blank car settings object
|
||||
let settings = await prisma.carSettings.create({
|
||||
data: {}
|
||||
});
|
||||
|
||||
// Generate blank car state object
|
||||
let state = await prisma.carState.create({
|
||||
data: {}
|
||||
});
|
||||
|
||||
let gtWing = await prisma.carGTWing.create({
|
||||
data: {}
|
||||
});
|
||||
|
||||
// Sets if full tune is used or not
|
||||
// let fullyTuned = false;
|
||||
|
||||
@ -308,6 +293,7 @@ export async function createCar(body: wm.protobuf.CreateCarRequest)
|
||||
// 1: Basic Tune (600 HP)
|
||||
// 2: Fully Tuned (840 HP)
|
||||
let tune = 0;
|
||||
let itemId = 0;
|
||||
|
||||
// If a user item has been used
|
||||
if (body.userItemId)
|
||||
@ -315,6 +301,7 @@ export async function createCar(body: wm.protobuf.CreateCarRequest)
|
||||
let carUtilFunctions = await car_tune.createCarWithItem(body.userItemId);
|
||||
|
||||
tune = carUtilFunctions.tune;
|
||||
itemId = carUtilFunctions.itemId;
|
||||
}
|
||||
// Other cases, may occur if item is not detected as 'used'
|
||||
// User item not used, but car has 740 HP by default
|
||||
@ -322,9 +309,6 @@ export async function createCar(body: wm.protobuf.CreateCarRequest)
|
||||
{
|
||||
// Car is fully tuned
|
||||
tune = 2;
|
||||
|
||||
// Check if created car is from terminal scratch car
|
||||
await terminal.checkScratchCar(body.userId, body.car.visualModel!)
|
||||
}
|
||||
// User item not used, but car has 600 HP by default
|
||||
else if (body.car && body.car.tunePower == 10 && body.car.tuneHandling == 10)
|
||||
@ -392,15 +376,12 @@ export async function createCar(body: wm.protobuf.CreateCarRequest)
|
||||
level: body.car.level!,
|
||||
tunePower: body.car.tunePower!,
|
||||
tuneHandling: body.car.tuneHandling!,
|
||||
carSettingsDbId: settings.dbId,
|
||||
carStateDbId: state.dbId,
|
||||
carGTWingDbId: gtWing.dbId,
|
||||
regionId: random,
|
||||
lastPlayedAt: date,
|
||||
lastPlayedPlaceId: 1, // Server Default
|
||||
};
|
||||
|
||||
return { carInsert, tune, user }
|
||||
return { carInsert, tune, user, itemId }
|
||||
}
|
||||
|
||||
|
||||
@ -670,7 +651,7 @@ export async function updateCarCustomWing(body: wm.protobuf.UpdateCarRequest)
|
||||
|
||||
|
||||
// Remove Used Ticket
|
||||
export async function checkCreatedCar(body: wm.protobuf.CreateCarRequest, car: any)
|
||||
export async function checkCreatedCar(body: wm.protobuf.CreateCarRequest, car: any, itemId: number)
|
||||
{
|
||||
let cheated: boolean = false;
|
||||
|
||||
@ -698,7 +679,6 @@ export async function checkCreatedCar(body: wm.protobuf.CreateCarRequest, car: a
|
||||
137, // NDERC
|
||||
138, // UF31
|
||||
139, // GS130
|
||||
143, // 928GT
|
||||
];
|
||||
|
||||
let carVisualModelWithoutItem = [
|
||||
@ -719,10 +699,6 @@ export async function checkCreatedCar(body: wm.protobuf.CreateCarRequest, car: a
|
||||
125, // P400S
|
||||
126, // DIABLO
|
||||
133, // PS13
|
||||
137, // NDERC
|
||||
138, // UF31
|
||||
139, // GS130
|
||||
143, // 928GT
|
||||
];
|
||||
|
||||
// Check if user item id is not set and its a special car
|
||||
@ -747,16 +723,15 @@ export async function checkCreatedCar(body: wm.protobuf.CreateCarRequest, car: a
|
||||
}
|
||||
}
|
||||
|
||||
// Get the item id
|
||||
let item = await prisma.userItem.findFirst({
|
||||
where: {
|
||||
userItemId: body.userItemId
|
||||
}
|
||||
});
|
||||
let itemId = item?.itemId || -1;
|
||||
|
||||
// Check if user item id is set and its a special car created from ticket
|
||||
if(car.visualModel === 130)
|
||||
if(car.visualModel === 122)
|
||||
{
|
||||
if(itemId < 7 || itemId > 15)
|
||||
{
|
||||
cheated = true;
|
||||
}
|
||||
}
|
||||
else if(car.visualModel === 130)
|
||||
{
|
||||
if(itemId < 22 || itemId > 27)
|
||||
{
|
||||
@ -770,13 +745,6 @@ export async function checkCreatedCar(body: wm.protobuf.CreateCarRequest, car: a
|
||||
cheated = true;
|
||||
}
|
||||
}
|
||||
else if(car.visualModel === 122)
|
||||
{
|
||||
if(itemId < 7 || itemId > 15)
|
||||
{
|
||||
cheated = true;
|
||||
}
|
||||
}
|
||||
else if(car.visualModel === 137)
|
||||
{
|
||||
if(itemId !== 37)
|
||||
@ -786,14 +754,14 @@ export async function checkCreatedCar(body: wm.protobuf.CreateCarRequest, car: a
|
||||
}
|
||||
else if(car.visualModel === 138)
|
||||
{
|
||||
if(itemId !== 38)
|
||||
if(itemId !== 39)
|
||||
{
|
||||
cheated = true;
|
||||
}
|
||||
}
|
||||
else if(car.visualModel === 139)
|
||||
{
|
||||
if(itemId !== 39)
|
||||
if(itemId !== 38)
|
||||
{
|
||||
cheated = true;
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ export default class GameModule extends Module {
|
||||
let message = wm.wm.protobuf.SaveGameResultResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -207,7 +207,7 @@ export default class GameModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadGameHistoryResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -223,7 +223,7 @@ export default class GameModule extends Module {
|
||||
let message = wm.wm.protobuf.SaveChargeResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -236,6 +236,108 @@ export default class GameModule extends Module {
|
||||
// Perform the save screenshot request for the car
|
||||
await gameFunction.saveScreenshot(body);
|
||||
|
||||
// Check retire crown
|
||||
let getCarCrown = await prisma.carCrownDetect.findFirst({
|
||||
where:{
|
||||
carId: body.carId
|
||||
}
|
||||
});
|
||||
|
||||
if(getCarCrown)
|
||||
{
|
||||
if(getCarCrown.status === 'retire')
|
||||
{
|
||||
await prisma.carCrownDetect.delete({
|
||||
where:{
|
||||
id: getCarCrown.id
|
||||
}
|
||||
});
|
||||
}
|
||||
else if(getCarCrown.status === 'finish')
|
||||
{
|
||||
let timestamp = body.playedAt - body.timestamp;
|
||||
|
||||
if(timestamp <= 120)
|
||||
{
|
||||
console.log('Crown Force Finish Detected');
|
||||
|
||||
// Update the user status
|
||||
await prisma.carCrownDetect.update({
|
||||
where:{
|
||||
id: getCarCrown.id
|
||||
},
|
||||
data:{
|
||||
status: 'forcefinish'
|
||||
}
|
||||
});
|
||||
|
||||
// Restore the old crown
|
||||
await prisma.carCrown.update({
|
||||
where:{
|
||||
area: getCarCrown.area!
|
||||
},
|
||||
data:{
|
||||
carId: getCarCrown.opponentCarId!,
|
||||
area: getCarCrown.area!,
|
||||
ramp: getCarCrown.ramp!,
|
||||
path: getCarCrown.path!,
|
||||
playedAt: getCarCrown.playedAt!,
|
||||
tunePower: getCarCrown.tunePower!,
|
||||
tuneHandling: getCarCrown.tuneHandling!,
|
||||
}
|
||||
});
|
||||
|
||||
await prisma.ghostTrail.updateMany({
|
||||
where:{
|
||||
area: getCarCrown.area!,
|
||||
crownBattle: true
|
||||
},
|
||||
data:{
|
||||
carId: getCarCrown.opponentCarId!,
|
||||
area: getCarCrown.area!,
|
||||
ramp: getCarCrown.ramp!,
|
||||
path: getCarCrown.path!,
|
||||
playedAt: getCarCrown.playedAt!,
|
||||
tunePower: getCarCrown.tunePower!,
|
||||
tuneHandling: getCarCrown.tuneHandling!,
|
||||
trail: getCarCrown.trail!
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Banned the user
|
||||
let getUserId = await prisma.car.findFirst({
|
||||
where:{
|
||||
carId: body.carId
|
||||
},
|
||||
select:{
|
||||
userId: true
|
||||
}
|
||||
})
|
||||
|
||||
if(getUserId)
|
||||
{
|
||||
await prisma.user.update({
|
||||
where:{
|
||||
id: getUserId.userId
|
||||
},
|
||||
data:{
|
||||
userBanned: true
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await prisma.carCrownDetect.delete({
|
||||
where:{
|
||||
id: getCarCrown.id
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Response data
|
||||
let msg = {
|
||||
error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS,
|
||||
@ -245,7 +347,7 @@ export default class GameModule extends Module {
|
||||
let message = wm.wm.protobuf.SaveScreenshotResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -200,6 +200,9 @@ export async function saveGhostBattleResult(body: wm.protobuf.SaveGameResultRequ
|
||||
|
||||
// Declare data
|
||||
let dataCrown : any;
|
||||
let area = 0;
|
||||
let ramp = 0;
|
||||
let path = 0;
|
||||
|
||||
// ghostResultCrown is set
|
||||
if (ghostResultCrown)
|
||||
@ -219,9 +222,6 @@ export async function saveGhostBattleResult(body: wm.protobuf.SaveGameResultRequ
|
||||
}
|
||||
|
||||
// Get the area id and ramp id
|
||||
let area = 0;
|
||||
let ramp = 0;
|
||||
let path = 0;
|
||||
if(body.rgResult?.path)
|
||||
{
|
||||
if(body.rgResult?.path >= 0 && body.rgResult?.path <= 9){ // GID_PATH_C1
|
||||
@ -289,20 +289,33 @@ export async function saveGhostBattleResult(body: wm.protobuf.SaveGameResultRequ
|
||||
}
|
||||
|
||||
// Get the available crown holder data
|
||||
let carCrowns = await prisma.carCrown.count({
|
||||
let carCrowns = await prisma.carCrown.findFirst({
|
||||
where: {
|
||||
area: area
|
||||
}
|
||||
});
|
||||
|
||||
// Crown holder data available
|
||||
if(carCrowns !== 0)
|
||||
if(carCrowns)
|
||||
{
|
||||
// Crown Finish Status
|
||||
await prisma.carCrownDetect.create({
|
||||
data:{
|
||||
carId: body.carId,
|
||||
status: 'finish',
|
||||
area: carCrowns.area,
|
||||
ramp: carCrowns.ramp,
|
||||
path: carCrowns.path,
|
||||
playedAt: carCrowns.playedAt,
|
||||
tunePower: carCrowns.tunePower,
|
||||
tuneHandling: carCrowns.tuneHandling
|
||||
}
|
||||
});
|
||||
|
||||
// Update it to the new one
|
||||
let areaVal = Number(area);
|
||||
await prisma.carCrown.update({
|
||||
where: {
|
||||
area: areaVal
|
||||
dbId: carCrowns.dbId
|
||||
},
|
||||
data: {
|
||||
...dataCrown,
|
||||
@ -536,7 +549,6 @@ export async function saveGhostBattleResult(body: wm.protobuf.SaveGameResultRequ
|
||||
// Retiring Ghost Battle
|
||||
else if(body.rgResult!.selectionMethod === wmproto.wm.protobuf.GhostSelectionMethod.GHOST_SEARCH_BY_REGION ||
|
||||
body.rgResult!.selectionMethod === wmproto.wm.protobuf.GhostSelectionMethod.GHOST_SELECT_BY_LEVEL ||
|
||||
body.rgResult!.selectionMethod === wmproto.wm.protobuf.GhostSelectionMethod.GHOST_SELECT_CROWN_MATCH ||
|
||||
body.rgResult!.selectionMethod === wmproto.wm.protobuf.GhostSelectionMethod.GHOST_SELECT_STAMP_MATCH ||
|
||||
body.rgResult!.selectionMethod === wmproto.wm.protobuf.GhostSelectionMethod.GHOST_SELECT_FROM_HISTORY ||
|
||||
body.rgResult!.selectionMethod === wmproto.wm.protobuf.GhostSelectionMethod.GHOST_SEARCH_BY_SHOP ||
|
||||
@ -659,6 +671,19 @@ export async function saveGhostBattleResult(body: wm.protobuf.SaveGameResultRequ
|
||||
}
|
||||
});
|
||||
}
|
||||
// Retiring Crown Mode
|
||||
else if(body.rgResult!.selectionMethod === wmproto.wm.protobuf.GhostSelectionMethod.GHOST_SELECT_CROWN_MATCH)
|
||||
{
|
||||
console.log('Crown Ghost Mode Found but Retiring');
|
||||
|
||||
// Crown Finish Status
|
||||
await prisma.carCrownDetect.create({
|
||||
data:{
|
||||
carId: body.carId,
|
||||
status: 'retire'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Return the value to 'BASE_PATH/src/modules/game.ts'
|
||||
return { ghostModePlay, updateNewTrail, OCMModePlay }
|
||||
|
@ -64,11 +64,31 @@ export default class GhostModule extends Module {
|
||||
stampReturnStats: car?.stampSheet || null,
|
||||
};
|
||||
|
||||
// Encode the response
|
||||
let message = wm.wm.protobuf.LoadGhostBattleInfoResponse.encode(msg);
|
||||
let getUserId = await prisma.user.findFirst({
|
||||
where:{
|
||||
id: car!.userId
|
||||
}
|
||||
});
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
if(getUserId)
|
||||
{
|
||||
if(getUserId.userBanned === false)
|
||||
{
|
||||
// Encode the response
|
||||
let message = wm.wm.protobuf.LoadGhostBattleInfoResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Encode the response
|
||||
let message = wm.wm.protobuf.LoadGhostBattleInfoResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@ -97,7 +117,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadStampTargetResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -174,7 +194,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.SearchCarsByLevelResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -266,7 +286,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadGhostDriveDataResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -328,7 +348,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.RegisterGhostTrailResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -390,7 +410,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.GhostTrail.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -496,7 +516,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadPathsAndTuningsResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -515,7 +535,7 @@ export default class GhostModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.LockCrownResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
}
|
||||
}
|
@ -218,6 +218,16 @@ export async function saveCrownGhostTrail(body: wm.protobuf.RegisterGhostTrailRe
|
||||
console.log('Crown Trail history found');
|
||||
console.log('Updating crown trail to the newest trail');
|
||||
|
||||
await prisma.carCrownDetect.updateMany({
|
||||
where:{
|
||||
carId: ghostResult.car.carId!
|
||||
},
|
||||
data: {
|
||||
trail: gtCount.trail,
|
||||
opponentCarId: gtCount.carId
|
||||
}
|
||||
})
|
||||
|
||||
// Update the data
|
||||
await prisma.ghostTrail.update({
|
||||
where: {
|
||||
|
@ -378,7 +378,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadGhostCompetitionInfoResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -699,7 +699,7 @@ export default class GhostModule extends Module {
|
||||
let message = wm.wm.protobuf.GhostCompetitionTarget.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
}
|
||||
}
|
@ -76,7 +76,7 @@ export default class ResourceModule extends Module {
|
||||
let message = wm.wm.protobuf.PlaceList.encode({places});
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
// Get Ranking data for attract screen (TA, Ghost, VS)
|
||||
@ -103,7 +103,7 @@ export default class ResourceModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.Ranking.encode({lists});
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -123,7 +123,7 @@ export default class ResourceModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.CrownList.encode( {crowns} );
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -184,7 +184,7 @@ export default class ResourceModule extends Module {
|
||||
let message = wm.wm.protobuf.FileList.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -206,7 +206,7 @@ export default class ResourceModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.GhostList.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
}
|
||||
}
|
@ -49,7 +49,7 @@ export default class StartupModule extends Module {
|
||||
let message = wm.wm.protobuf.RegisterSystemInfoResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -70,7 +70,7 @@ export default class StartupModule extends Module {
|
||||
let message = wm.wm.protobuf.UpdateUserSessionResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -89,7 +89,7 @@ export default class StartupModule extends Module {
|
||||
let message = wm.wm.protobuf.PingResponse.encode(ping);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -110,7 +110,7 @@ export default class StartupModule extends Module {
|
||||
let message = wm.wm.protobuf.RegisterSystemStatsResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -135,7 +135,7 @@ export default class StartupModule extends Module {
|
||||
let message = wm.wm.protobuf.UpdateEventModeSerialResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -156,7 +156,7 @@ export default class StartupModule extends Module {
|
||||
let message = wm.wm.protobuf.SubmitClientLogResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadTerminalInformationResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -91,7 +91,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadBookmarksResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -148,7 +148,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadBookmarksResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -177,7 +177,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadBookmarksResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -300,7 +300,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.CarSummary.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -360,7 +360,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.SaveTerminalResultResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -440,7 +440,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadScratchInformationResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -469,7 +469,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.TurnScratchSheetResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -598,7 +598,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.SaveScratchSheetResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -1033,7 +1033,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadGhostCompetitionRankingResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -1098,7 +1098,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wm.wm.protobuf.RegisterOpponentGhostResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -1144,7 +1144,7 @@ export default class TerminalModule extends Module {
|
||||
});
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -1163,7 +1163,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.LoadUnreceivedUserItemsResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -1181,7 +1181,7 @@ export default class TerminalModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.CheckItemReceivableCarsResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
*/
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ export default class TimeAttackModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadTimeAttackRecordResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ export default class TimeAttackModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadTimeAttackRecordResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ export default class UserModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadUserResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
|
||||
return;
|
||||
}
|
||||
@ -93,7 +93,7 @@ export default class UserModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadUserResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
|
||||
return;
|
||||
}
|
||||
@ -199,7 +199,7 @@ export default class UserModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadUserResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
|
||||
return;
|
||||
}
|
||||
@ -587,7 +587,7 @@ export default class UserModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadUserResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -643,7 +643,7 @@ export default class UserModule extends Module {
|
||||
let message = wm.wm.protobuf.CreateUserResponse.encode(msg);
|
||||
|
||||
// Send response to client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -694,7 +694,7 @@ export default class UserModule extends Module {
|
||||
let message = wm.wm.protobuf.LoadDriveInformationResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -710,7 +710,7 @@ export default class UserModule extends Module {
|
||||
let message = wm.wm.protobuf.UpdateUserSessionResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
|
||||
|
||||
@ -730,7 +730,7 @@ export default class UserModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.StartTransferResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -749,7 +749,7 @@ export default class UserModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.GrantCarRightResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -768,7 +768,7 @@ export default class UserModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.AskAccessCodeResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -787,7 +787,7 @@ export default class UserModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.ParticipateInInviteFriendCampaignResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
});
|
||||
|
||||
|
||||
@ -805,7 +805,7 @@ export default class UserModule extends Module {
|
||||
let message = wmsrv.wm.protobuf.ConsumeUserItemResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
common.sendResponse(message, res, req.rawHeaders[5], req.rawHeaders[7]);
|
||||
})
|
||||
*/
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
import { Response } from "express";
|
||||
import Long from "long";
|
||||
import { Writer } from "protobufjs";
|
||||
import { Config } from "../../config";
|
||||
import Long from "long";
|
||||
|
||||
|
||||
// sendResponse(message, res): Void
|
||||
// Sends the server response to the client
|
||||
export function sendResponse(message: Writer, res: Response)
|
||||
export function sendResponse(message: Writer, res: Response, rawHeaders: string, rawHeaders2: string)
|
||||
{
|
||||
// Get the end of the message
|
||||
let end = message.finish();
|
||||
@ -17,8 +18,39 @@ export function sendResponse(message: Writer, res: Response)
|
||||
.header('Content-Length', end.length.toString())
|
||||
.status(200);
|
||||
|
||||
// Send the response to the client
|
||||
r.send(Buffer.from(end));
|
||||
// Revision Check
|
||||
let revisionCheck = Config.getConfig().gameOptions.revisionCheck || 1;
|
||||
|
||||
// Revision Check is enabled
|
||||
if(revisionCheck === 1)
|
||||
{
|
||||
// Get the Revision
|
||||
let getProtobufRev;
|
||||
if(rawHeaders.includes('application/x-protobuf')) // application/x-protobuf; revision=number_here
|
||||
{
|
||||
getProtobufRev = rawHeaders.split('; ');
|
||||
}
|
||||
else
|
||||
{
|
||||
getProtobufRev = rawHeaders2.split('; ');
|
||||
}
|
||||
|
||||
let protobufRev = getProtobufRev[1].split('='); // array 0 = content type, array 1 = protobuf revision
|
||||
|
||||
// Connect to the server if the Revision is match
|
||||
if(protobufRev[1] === "8053")
|
||||
{
|
||||
// Send the response to the client
|
||||
r.send(Buffer.from(end));
|
||||
}
|
||||
// else{} Prevent connecting to the server
|
||||
}
|
||||
// Just send it
|
||||
else
|
||||
{
|
||||
// Send the response to the client
|
||||
r.send(Buffer.from(end));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user