mirror of
https://github.com/shiroikitsu8/Bayshore_6r_legacy.git
synced 2024-11-30 18:24:39 +01:00
Merge pull request #65 from shiroikitsu8/master
limit terminal ocm ranking to 150, fix ghost search by region, preven TA record more than 20 minutes
This commit is contained in:
commit
fafb3490f4
@ -23,7 +23,7 @@ export default class CarModule extends Module {
|
|||||||
// Get the car (required data only) with the given id
|
// Get the car (required data only) with the given id
|
||||||
let car = await carFunctions.getCar(body.carId);
|
let car = await carFunctions.getCar(body.carId);
|
||||||
|
|
||||||
// Get Challenger Data
|
// Get Registered HoF Data
|
||||||
let registeredTarget = await carFunctions.getRegisteredTarget(body.carId);
|
let registeredTarget = await carFunctions.getRegisteredTarget(body.carId);
|
||||||
|
|
||||||
// Get Challenger Data
|
// Get Challenger Data
|
||||||
|
@ -150,12 +150,12 @@ export async function getOpponentsTarget(carId: number, registeredargetAvailable
|
|||||||
while(randomArray.length < maxNumber)
|
while(randomArray.length < maxNumber)
|
||||||
{
|
{
|
||||||
// Pick random car Id
|
// Pick random car Id
|
||||||
random = Math.floor(Math.random() * opponentTargetCount + 0.9);
|
random = Math.floor(Math.random() * opponentTargetCount);
|
||||||
|
|
||||||
// Try randomize it again if it's 0, and fix if more than car length
|
// Try randomize it again if it's 0, and fix if more than car length
|
||||||
if(random < 1 || random >= opponentTargetCount)
|
if(random < 1 || random >= opponentTargetCount)
|
||||||
{
|
{
|
||||||
random = Math.floor(Math.random() * opponentTargetCount + 0.9);
|
random = Math.floor(Math.random() * opponentTargetCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Random Number not yet selected
|
// Random Number not yet selected
|
||||||
@ -167,7 +167,7 @@ export async function getOpponentsTarget(carId: number, registeredargetAvailable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pick the array number
|
// Pick the array number
|
||||||
let pickRandom = Math.floor(Math.random() * randomArray.length + 0.9);
|
let pickRandom = Math.floor(Math.random() * randomArray.length);
|
||||||
random = randomArray[pickRandom];
|
random = randomArray[pickRandom];
|
||||||
|
|
||||||
// Check opponents target
|
// Check opponents target
|
||||||
@ -360,12 +360,12 @@ export async function createCar(body: wm.protobuf.CreateCarRequest)
|
|||||||
while(randomArray.length < 5)
|
while(randomArray.length < 5)
|
||||||
{
|
{
|
||||||
// Pick random car Id
|
// Pick random car Id
|
||||||
random = Math.floor(Math.random() * 47 + 0.9) + 1;
|
random = Math.floor(Math.random() * 47) + 1;
|
||||||
|
|
||||||
// Try randomize it again if it's 0, and fix if more than car length
|
// Try randomize it again if it's 0, and fix if more than car length
|
||||||
if(random < 1 || random > 47)
|
if(random < 1 || random > 47)
|
||||||
{
|
{
|
||||||
random = Math.floor(Math.random() * 47 + 0.9) + 1;
|
random = Math.floor(Math.random() * 47) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Random Number not yet selected
|
// Random Number not yet selected
|
||||||
@ -377,7 +377,7 @@ export async function createCar(body: wm.protobuf.CreateCarRequest)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pick the array number
|
// Pick the array number
|
||||||
let pickRandom = Math.floor(Math.random() * randomArray.length + 0.9);
|
let pickRandom = Math.floor(Math.random() * randomArray.length);
|
||||||
random = randomArray[pickRandom];
|
random = randomArray[pickRandom];
|
||||||
|
|
||||||
// Default car values
|
// Default car values
|
||||||
|
@ -58,8 +58,8 @@ export async function saveTimeAttackResult(body: wm.protobuf.SaveGameResultReque
|
|||||||
// Record already exists
|
// Record already exists
|
||||||
if (currentRecord)
|
if (currentRecord)
|
||||||
{
|
{
|
||||||
// If the existing record is faster, do not continue
|
// Current time record is faster than previous time record and time record is below 20 minutes
|
||||||
if (body.taResult!.time < currentRecord.time)
|
if (body.taResult!.time < currentRecord.time && body.taResult!.time < 1200000)
|
||||||
{
|
{
|
||||||
console.log('Updating time attack record...');
|
console.log('Updating time attack record...');
|
||||||
|
|
||||||
|
@ -149,9 +149,9 @@ export default class GhostModule extends Module {
|
|||||||
let lists_ghostcar = getGhostCar.lists_ghostcar;
|
let lists_ghostcar = getGhostCar.lists_ghostcar;
|
||||||
|
|
||||||
// Check again if car list for that selected region is available of not
|
// Check again if car list for that selected region is available of not
|
||||||
if(body.regionId !== null && body.regionId !== undefined && body.regionId !== 0)
|
if(body.regionId !== null && body.regionId !== undefined && body.regionId !== 0 && car.length < 1)
|
||||||
{
|
{
|
||||||
let checkGhostSearchByRegion = await ghostFunctions.checkGhostSearchByRegion(car, body.ghostLevel, body.regionId);
|
let checkGhostSearchByRegion = await ghostFunctions.checkGhostSearchByRegion(body.ghostLevel, body.regionId);
|
||||||
lists_ghostcar = checkGhostSearchByRegion.lists_ghostcar;
|
lists_ghostcar = checkGhostSearchByRegion.lists_ghostcar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,9 +15,10 @@ export async function getOpponentHistory(carId: number)
|
|||||||
orderBy:{
|
orderBy:{
|
||||||
lastPlayedAt: 'desc'
|
lastPlayedAt: 'desc'
|
||||||
},
|
},
|
||||||
take: 10
|
take: 20
|
||||||
})
|
});
|
||||||
let opponentHistory: wmproto.wm.protobuf.Car[] = [];
|
let opponentHistory: wmproto.wm.protobuf.Car[] = [];
|
||||||
|
let inserted = 0;
|
||||||
|
|
||||||
if(findChallenger.length > 0)
|
if(findChallenger.length > 0)
|
||||||
{
|
{
|
||||||
@ -30,22 +31,28 @@ export async function getOpponentHistory(carId: number)
|
|||||||
include:{
|
include:{
|
||||||
gtWing: true,
|
gtWing: true,
|
||||||
lastPlayedPlace: true
|
lastPlayedPlace: true
|
||||||
},
|
}
|
||||||
orderBy: {
|
|
||||||
carId: 'asc'
|
|
||||||
},
|
|
||||||
take: 10
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Error handling if regionId is below 1 or above 47
|
if(car)
|
||||||
if(car!.regionId < 1 || car!.regionId > 47)
|
|
||||||
{
|
{
|
||||||
car!.regionId = Math.floor(Math.random() * 10) + 10;
|
// Error handling if regionId is below 1 or above 47
|
||||||
|
if(car!.regionId < 1 || car!.regionId > 47)
|
||||||
|
{
|
||||||
|
car!.regionId = Math.floor(Math.random() * 10) + 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
opponentHistory.push(wmproto.wm.protobuf.Car.create({
|
||||||
|
...car!
|
||||||
|
}));
|
||||||
|
|
||||||
|
inserted++;
|
||||||
}
|
}
|
||||||
|
|
||||||
opponentHistory.push(wmproto.wm.protobuf.Car.create({
|
if(inserted > 10)
|
||||||
...car!
|
{
|
||||||
}))
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +71,8 @@ export async function getStampTarget(carId: number)
|
|||||||
},
|
},
|
||||||
orderBy:{
|
orderBy:{
|
||||||
locked: 'desc'
|
locked: 'desc'
|
||||||
}
|
},
|
||||||
|
take: 10
|
||||||
});
|
});
|
||||||
let stampTarget: wmproto.wm.protobuf.StampTargetCar[] = [];
|
let stampTarget: wmproto.wm.protobuf.StampTargetCar[] = [];
|
||||||
|
|
||||||
@ -119,18 +127,21 @@ export async function getChallengers(carId: number)
|
|||||||
let challengers: wmproto.wm.protobuf.ChallengerCar[] = [];
|
let challengers: wmproto.wm.protobuf.ChallengerCar[] = [];
|
||||||
let arrChallengerCarId = [];
|
let arrChallengerCarId = [];
|
||||||
|
|
||||||
|
// Push beated carId to array
|
||||||
for(let i=0; i<checkBeatedCar.length; i++)
|
for(let i=0; i<checkBeatedCar.length; i++)
|
||||||
{
|
{
|
||||||
arrChallengerCarId.push(checkBeatedCar[i].carId);
|
arrChallengerCarId.push(checkBeatedCar[i].carId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Find Opponent Challengers except beated car
|
||||||
let getChallengers = await prisma.carChallenger.findMany({
|
let getChallengers = await prisma.carChallenger.findMany({
|
||||||
where: {
|
where: {
|
||||||
carId: carId,
|
carId: carId,
|
||||||
NOT: {
|
NOT: {
|
||||||
challengerCarId: { in: arrChallengerCarId }, // Except beated challenger id
|
challengerCarId: { in: arrChallengerCarId }, // Except beated challenger id
|
||||||
},
|
}
|
||||||
}
|
},
|
||||||
|
take: 10
|
||||||
});
|
});
|
||||||
|
|
||||||
if(getChallengers)
|
if(getChallengers)
|
||||||
@ -270,122 +281,118 @@ export async function getGhostCar(car: any, area: number, ramp: number, path: nu
|
|||||||
|
|
||||||
|
|
||||||
// Check Ghost Car when using Search by Region
|
// Check Ghost Car when using Search by Region
|
||||||
export async function checkGhostSearchByRegion(car: any, ghostLevel: number, regionId: number)
|
export async function checkGhostSearchByRegion(ghostLevel: number, regionId: number)
|
||||||
{
|
{
|
||||||
let lists_ghostcar: any;
|
// Get current date
|
||||||
|
let date = Math.floor(new Date().getTime() / 1000);
|
||||||
|
|
||||||
|
let playedPlace = wmproto.wm.protobuf.Place.create({
|
||||||
|
placeId: Config.getConfig().placeId,
|
||||||
|
regionId: Config.getConfig().regionId,
|
||||||
|
shopName: Config.getConfig().shopName,
|
||||||
|
country: Config.getConfig().country
|
||||||
|
});
|
||||||
|
|
||||||
if(car.length < 1)
|
let tunePowerDefault = 0
|
||||||
|
let tuneHandlingDefault = 0;
|
||||||
|
if(ghostLevel === 1)
|
||||||
{
|
{
|
||||||
// Get current date
|
tunePowerDefault = 1;
|
||||||
let date = Math.floor(new Date().getTime() / 1000);
|
tuneHandlingDefault = 4;
|
||||||
|
|
||||||
let playedPlace = wmproto.wm.protobuf.Place.create({
|
|
||||||
placeId: Config.getConfig().placeId,
|
|
||||||
regionId: Config.getConfig().regionId,
|
|
||||||
shopName: Config.getConfig().shopName,
|
|
||||||
country: Config.getConfig().country
|
|
||||||
});
|
|
||||||
|
|
||||||
let tunePowerDefault = 0
|
|
||||||
let tuneHandlingDefault = 0;
|
|
||||||
if(ghostLevel === 1)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 1;
|
|
||||||
tuneHandlingDefault = 4;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 2)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 5;
|
|
||||||
tuneHandlingDefault = 5;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 3)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 8;
|
|
||||||
tuneHandlingDefault = 7;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 4)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 10;
|
|
||||||
tuneHandlingDefault = 10;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 5)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 15;
|
|
||||||
tuneHandlingDefault = 10;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 6)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 18;
|
|
||||||
tuneHandlingDefault = 10;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 7)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 20;
|
|
||||||
tuneHandlingDefault = 10;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 8)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 21;
|
|
||||||
tuneHandlingDefault = 10;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 9)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 22;
|
|
||||||
tuneHandlingDefault = 10;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 10)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 24;
|
|
||||||
tuneHandlingDefault = 10;
|
|
||||||
}
|
|
||||||
else if(ghostLevel === 11)
|
|
||||||
{
|
|
||||||
tunePowerDefault = 24;
|
|
||||||
tuneHandlingDefault = 24;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate default S660 car data
|
|
||||||
car = wmproto.wm.protobuf.Car.create({
|
|
||||||
carId: 999999999, // Don't change this
|
|
||||||
name: 'S660',
|
|
||||||
regionId: regionId, // IDN (福井)
|
|
||||||
manufacturer: 12, // HONDA
|
|
||||||
model: 105, // S660 [JW5]
|
|
||||||
visualModel: 130, // S660 [JW5]
|
|
||||||
defaultColor: 0,
|
|
||||||
customColor: 0,
|
|
||||||
wheel: 20,
|
|
||||||
wheelColor: 0,
|
|
||||||
aero: 0,
|
|
||||||
bonnet: 0,
|
|
||||||
wing: 0,
|
|
||||||
mirror: 0,
|
|
||||||
neon: 0,
|
|
||||||
trunk: 0,
|
|
||||||
plate: 0,
|
|
||||||
plateColor: 0,
|
|
||||||
plateNumber: 0,
|
|
||||||
tunePower: tunePowerDefault,
|
|
||||||
tuneHandling: tuneHandlingDefault,
|
|
||||||
rivalMarker: 32,
|
|
||||||
aura: 551,
|
|
||||||
windowSticker: true,
|
|
||||||
windowStickerString: 'BAYSHORE',
|
|
||||||
windowStickerFont: 0,
|
|
||||||
title: 'No Ghost for this Region',
|
|
||||||
level: 65, // SSSSS
|
|
||||||
lastPlayedAt: date,
|
|
||||||
country: 'JPN',
|
|
||||||
lastPlayedPlace: playedPlace
|
|
||||||
});
|
|
||||||
|
|
||||||
// Push data to Ghost car proto
|
|
||||||
lists_ghostcar.push(wmproto.wm.protobuf.GhostCar.create({
|
|
||||||
car: car,
|
|
||||||
nonhuman: true,
|
|
||||||
type: wmproto.wm.protobuf.GhostType.GHOST_DEFAULT,
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
else if(ghostLevel === 2)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 5;
|
||||||
|
tuneHandlingDefault = 5;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 3)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 8;
|
||||||
|
tuneHandlingDefault = 7;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 4)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 10;
|
||||||
|
tuneHandlingDefault = 10;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 5)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 15;
|
||||||
|
tuneHandlingDefault = 10;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 6)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 18;
|
||||||
|
tuneHandlingDefault = 10;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 7)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 20;
|
||||||
|
tuneHandlingDefault = 10;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 8)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 21;
|
||||||
|
tuneHandlingDefault = 10;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 9)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 22;
|
||||||
|
tuneHandlingDefault = 10;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 10)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 24;
|
||||||
|
tuneHandlingDefault = 10;
|
||||||
|
}
|
||||||
|
else if(ghostLevel === 11)
|
||||||
|
{
|
||||||
|
tunePowerDefault = 24;
|
||||||
|
tuneHandlingDefault = 24;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate default S660 car data
|
||||||
|
let car = wmproto.wm.protobuf.Car.create({
|
||||||
|
carId: 999999999, // Don't change this
|
||||||
|
name: 'S660',
|
||||||
|
regionId: regionId, // IDN (福井)
|
||||||
|
manufacturer: 12, // HONDA
|
||||||
|
model: 105, // S660 [JW5]
|
||||||
|
visualModel: 130, // S660 [JW5]
|
||||||
|
defaultColor: 0,
|
||||||
|
customColor: 0,
|
||||||
|
wheel: 20,
|
||||||
|
wheelColor: 0,
|
||||||
|
aero: 0,
|
||||||
|
bonnet: 0,
|
||||||
|
wing: 0,
|
||||||
|
mirror: 0,
|
||||||
|
neon: 0,
|
||||||
|
trunk: 0,
|
||||||
|
plate: 0,
|
||||||
|
plateColor: 0,
|
||||||
|
plateNumber: 0,
|
||||||
|
tunePower: tunePowerDefault,
|
||||||
|
tuneHandling: tuneHandlingDefault,
|
||||||
|
rivalMarker: 32,
|
||||||
|
aura: 551,
|
||||||
|
windowSticker: true,
|
||||||
|
windowStickerString: 'BAYSHORE',
|
||||||
|
windowStickerFont: 0,
|
||||||
|
title: 'No Ghost for this Region',
|
||||||
|
level: 65, // SSSSS
|
||||||
|
lastPlayedAt: date,
|
||||||
|
country: 'JPN',
|
||||||
|
lastPlayedPlace: playedPlace
|
||||||
|
});
|
||||||
|
|
||||||
|
// Push data to Ghost car proto
|
||||||
|
let lists_ghostcar: wmproto.wm.protobuf.GhostCar[] = [];
|
||||||
|
lists_ghostcar.push(wmproto.wm.protobuf.GhostCar.create({
|
||||||
|
car: car,
|
||||||
|
nonhuman: true,
|
||||||
|
type: wmproto.wm.protobuf.GhostType.GHOST_DEFAULT,
|
||||||
|
}));
|
||||||
|
|
||||||
return { lists_ghostcar }
|
return { lists_ghostcar }
|
||||||
}
|
}
|
@ -588,10 +588,10 @@ export async function ocmGiveNamePlateReward(competitionId: number)
|
|||||||
|
|
||||||
let participantLength = getCarParticipant.length;
|
let participantLength = getCarParticipant.length;
|
||||||
|
|
||||||
// Participant is more than 100
|
// Participant is more than certain number (100 is default)
|
||||||
if(participantLength > 100)
|
if(participantLength > 25)
|
||||||
{
|
{
|
||||||
participantLength = 100
|
participantLength = 25;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 16th - C1
|
// 16th - C1
|
||||||
|
@ -101,7 +101,20 @@ export async function competitionSchedule(date: any, competitionId: any)
|
|||||||
// It's previous Competition (OCM) event
|
// It's previous Competition (OCM) event
|
||||||
if(pastEvent === 1)
|
if(pastEvent === 1)
|
||||||
{
|
{
|
||||||
lastCompetitionId = ghostCompetitionSchedule.competitionId;
|
// Get current date
|
||||||
|
let dates = Math.floor(new Date().getTime() / 1000);
|
||||||
|
|
||||||
|
let lastScheduleCompetitionId = await prisma.oCMEvent.findFirst({
|
||||||
|
where: {
|
||||||
|
competitionCloseAt: { lte: dates }
|
||||||
|
},
|
||||||
|
orderBy:{
|
||||||
|
competitionId: 'desc'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
lastCompetitionId = lastScheduleCompetitionId?.competitionId || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Competition (OCM) Response Message
|
// Competition (OCM) Response Message
|
||||||
|
@ -635,32 +635,36 @@ export default class TerminalModule extends Module {
|
|||||||
periodId: 'desc'
|
periodId: 'desc'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
include:{
|
||||||
|
car: true
|
||||||
|
},
|
||||||
|
distinct: ["carId"],
|
||||||
})
|
})
|
||||||
|
|
||||||
numOfParticipants = ocmParticipant.length;
|
numOfParticipants = ocmParticipant.length;
|
||||||
periodId = 0;
|
periodId = 0;
|
||||||
let ranking = 0;
|
let ranking = 0;
|
||||||
|
let maxNumber = 150;
|
||||||
|
|
||||||
if(ocmParticipant)
|
if(numOfParticipants < 151)
|
||||||
{
|
{
|
||||||
|
maxNumber = numOfParticipants;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(numOfParticipants > 0)
|
||||||
|
{
|
||||||
periodId = ocmParticipant[0].periodId;
|
periodId = ocmParticipant[0].periodId;
|
||||||
|
|
||||||
for(let i=0; i<ocmParticipant.length; i++)
|
for(let i=0; i<maxNumber; i++)
|
||||||
{
|
{
|
||||||
let cars = await prisma.car.findFirst({
|
|
||||||
where:{
|
|
||||||
carId: ocmParticipant[i].carId
|
|
||||||
},
|
|
||||||
include:{
|
|
||||||
gtWing: true,
|
|
||||||
lastPlayedPlace: true
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let ocmGhostrecord = await prisma.oCMGhostBattleRecord.findFirst({
|
let ocmGhostrecord = await prisma.oCMGhostBattleRecord.findFirst({
|
||||||
where:{
|
where:{
|
||||||
carId: ocmParticipant[0].carId,
|
carId: ocmParticipant[0].carId,
|
||||||
competitionId: ocmEventDate!.competitionId,
|
competitionId: ocmEventDate!.competitionId,
|
||||||
|
},
|
||||||
|
select:{
|
||||||
|
playedShopName: true,
|
||||||
|
playedAt: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -676,14 +680,14 @@ export default class TerminalModule extends Module {
|
|||||||
rank: i + 1,
|
rank: i + 1,
|
||||||
result: ocmParticipant[i].result,
|
result: ocmParticipant[i].result,
|
||||||
carId: ocmParticipant[i].carId,
|
carId: ocmParticipant[i].carId,
|
||||||
name: cars!.name,
|
name: ocmParticipant[i].car.name,
|
||||||
regionId: cars!.regionId,
|
regionId: ocmParticipant[i].car.regionId,
|
||||||
model: cars!.model,
|
model: ocmParticipant[i].car.model,
|
||||||
visualModel: cars!.visualModel,
|
visualModel: ocmParticipant[i].car.visualModel,
|
||||||
defaultColor: cars!.defaultColor,
|
defaultColor: ocmParticipant[i].car.defaultColor,
|
||||||
title: cars!.title,
|
title: ocmParticipant[i].car.title,
|
||||||
level: cars!.level,
|
level: ocmParticipant[i].car.level,
|
||||||
windowStickerString: cars!.windowStickerString,
|
windowStickerString: ocmParticipant[i].car.windowStickerString,
|
||||||
playedShopName: playedShopName,
|
playedShopName: playedShopName,
|
||||||
playedAt: ocmGhostrecord!.playedAt
|
playedAt: ocmGhostrecord!.playedAt
|
||||||
});
|
});
|
||||||
@ -696,18 +700,56 @@ export default class TerminalModule extends Module {
|
|||||||
rank: i + 1,
|
rank: i + 1,
|
||||||
result: ocmParticipant[i].result,
|
result: ocmParticipant[i].result,
|
||||||
carId: ocmParticipant[i].carId,
|
carId: ocmParticipant[i].carId,
|
||||||
name: cars!.name,
|
name: ocmParticipant[i].car.name,
|
||||||
regionId: cars!.regionId,
|
regionId: ocmParticipant[i].car.regionId,
|
||||||
model: cars!.model,
|
model: ocmParticipant[i].car.model,
|
||||||
visualModel: cars!.visualModel,
|
visualModel: ocmParticipant[i].car.visualModel,
|
||||||
defaultColor: cars!.defaultColor,
|
defaultColor: ocmParticipant[i].car.defaultColor,
|
||||||
title: cars!.title,
|
title: ocmParticipant[i].car.title,
|
||||||
level: cars!.level,
|
level: ocmParticipant[i].car.level,
|
||||||
windowStickerString: cars!.windowStickerString,
|
windowStickerString: ocmParticipant[i].car.windowStickerString,
|
||||||
playedShopName: playedShopName,
|
playedShopName: playedShopName,
|
||||||
playedAt: ocmGhostrecord!.playedAt
|
playedAt: ocmGhostrecord!.playedAt
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(ownRecords))
|
||||||
|
{
|
||||||
|
for(let i=150; i<numOfParticipants; i++)
|
||||||
|
{
|
||||||
|
if(ocmParticipant[i].carId === body.carId)
|
||||||
|
{
|
||||||
|
let ocmGhostrecord = await prisma.oCMGhostBattleRecord.findFirst({
|
||||||
|
where:{
|
||||||
|
carId: body.carId,
|
||||||
|
competitionId: ocmEventDate!.competitionId,
|
||||||
|
},
|
||||||
|
select:{
|
||||||
|
playedAt: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// User car setting
|
||||||
|
ownRecords = wm.wm.protobuf.LoadGhostCompetitionRankingResponse.Entry.create({
|
||||||
|
rank: i + 1,
|
||||||
|
result: ocmParticipant[i].result,
|
||||||
|
carId: ocmParticipant[i].carId,
|
||||||
|
name: ocmParticipant[i].car.name,
|
||||||
|
regionId: ocmParticipant[i].car.regionId,
|
||||||
|
model: ocmParticipant[i].car.model,
|
||||||
|
visualModel: ocmParticipant[i].car.visualModel,
|
||||||
|
defaultColor: ocmParticipant[i].car.defaultColor,
|
||||||
|
title: ocmParticipant[i].car.title,
|
||||||
|
level: ocmParticipant[i].car.level,
|
||||||
|
windowStickerString: ocmParticipant[i].car.windowStickerString,
|
||||||
|
playedShopName: playedShopName,
|
||||||
|
playedAt: ocmGhostrecord!.playedAt
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Current date is OCM qualifying day
|
// Current date is OCM qualifying day
|
||||||
@ -721,27 +763,21 @@ export default class TerminalModule extends Module {
|
|||||||
},
|
},
|
||||||
orderBy: {
|
orderBy: {
|
||||||
result: 'desc'
|
result: 'desc'
|
||||||
}
|
},
|
||||||
|
include:{
|
||||||
|
car: true
|
||||||
|
},
|
||||||
|
distinct: ["carId"],
|
||||||
})
|
})
|
||||||
|
|
||||||
numOfParticipants = ocmParticipant.length;
|
numOfParticipants = ocmParticipant.length;
|
||||||
periodId = 0;
|
periodId = 0;
|
||||||
let ranking = 0;
|
let ranking = 0;
|
||||||
|
|
||||||
if(ocmParticipant)
|
if(numOfParticipants > 0)
|
||||||
{
|
{
|
||||||
for(let i=0; i<ocmParticipant.length; i++)
|
for(let i=0; i<numOfParticipants; i++)
|
||||||
{
|
{
|
||||||
let cars = await prisma.car.findFirst({
|
|
||||||
where:{
|
|
||||||
carId: ocmParticipant[i].carId
|
|
||||||
},
|
|
||||||
include:{
|
|
||||||
gtWing: true,
|
|
||||||
lastPlayedPlace: true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if(ocmParticipant[i].carId === body.carId && ranking === 0)
|
if(ocmParticipant[i].carId === body.carId && ranking === 0)
|
||||||
{
|
{
|
||||||
// User car setting
|
// User car setting
|
||||||
@ -749,37 +785,21 @@ export default class TerminalModule extends Module {
|
|||||||
rank: i + 1,
|
rank: i + 1,
|
||||||
result: ocmParticipant[i].result,
|
result: ocmParticipant[i].result,
|
||||||
carId: ocmParticipant[i].carId,
|
carId: ocmParticipant[i].carId,
|
||||||
name: cars!.name,
|
name: ocmParticipant[i].car.name,
|
||||||
regionId: cars!.regionId,
|
regionId: ocmParticipant[i].car.regionId,
|
||||||
model: cars!.model,
|
model: ocmParticipant[i].car.model,
|
||||||
visualModel: cars!.visualModel,
|
visualModel: ocmParticipant[i].car.visualModel,
|
||||||
defaultColor: cars!.defaultColor,
|
defaultColor: ocmParticipant[i].car.defaultColor,
|
||||||
title: cars!.title,
|
title: ocmParticipant[i].car.title,
|
||||||
level: cars!.level,
|
level: ocmParticipant[i].car.level,
|
||||||
windowStickerString: cars!.windowStickerString,
|
windowStickerString: ocmParticipant[i].car.windowStickerString,
|
||||||
playedShopName: ocmParticipant[i].playedShopName,
|
playedShopName: playedShopName,
|
||||||
playedAt: ocmParticipant[i].playedAt
|
playedAt: ocmParticipant[i].playedAt
|
||||||
});
|
});
|
||||||
|
|
||||||
ranking++;
|
ranking++;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate OCM Top Records
|
|
||||||
topRecords.push(wm.wm.protobuf.LoadGhostCompetitionRankingResponse.Entry.create({
|
|
||||||
rank: i + 1,
|
|
||||||
result: ocmParticipant[i].result,
|
|
||||||
carId: ocmParticipant[i].carId,
|
|
||||||
name: cars!.name,
|
|
||||||
regionId: cars!.regionId,
|
|
||||||
model: cars!.model,
|
|
||||||
visualModel: cars!.visualModel,
|
|
||||||
defaultColor: cars!.defaultColor,
|
|
||||||
title: cars!.title,
|
|
||||||
level: cars!.level,
|
|
||||||
windowStickerString: cars!.windowStickerString,
|
|
||||||
playedShopName: ocmParticipant[i].playedShopName,
|
|
||||||
playedAt: ocmParticipant[i].playedAt
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -795,31 +815,35 @@ export default class TerminalModule extends Module {
|
|||||||
},
|
},
|
||||||
orderBy: {
|
orderBy: {
|
||||||
result: 'desc'
|
result: 'desc'
|
||||||
}
|
},
|
||||||
|
include:{
|
||||||
|
car: true
|
||||||
|
},
|
||||||
|
distinct: ["carId"]
|
||||||
})
|
})
|
||||||
|
|
||||||
numOfParticipants = ocmParticipant.length;
|
numOfParticipants = ocmParticipant.length;
|
||||||
periodId = 0;
|
periodId = 0;
|
||||||
let ranking = 0;
|
let ranking = 0;
|
||||||
|
let maxNumber = 150;
|
||||||
|
|
||||||
if(ocmParticipant)
|
if(numOfParticipants < 151)
|
||||||
{
|
{
|
||||||
for(let i=0; i<ocmParticipant.length; i++)
|
maxNumber = numOfParticipants;
|
||||||
{
|
}
|
||||||
let cars = await prisma.car.findFirst({
|
|
||||||
where:{
|
|
||||||
carId: ocmParticipant[i].carId
|
|
||||||
},
|
|
||||||
include:{
|
|
||||||
gtWing: true,
|
|
||||||
lastPlayedPlace: true
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
if(numOfParticipants > 0)
|
||||||
|
{
|
||||||
|
for(let i=0; i<maxNumber; i++)
|
||||||
|
{
|
||||||
let ocmGhostrecord = await prisma.oCMGhostBattleRecord.findFirst({
|
let ocmGhostrecord = await prisma.oCMGhostBattleRecord.findFirst({
|
||||||
where:{
|
where:{
|
||||||
carId: ocmParticipant[0].carId,
|
carId: ocmParticipant[i].carId,
|
||||||
competitionId: ocmEventDate!.competitionId,
|
competitionId: ocmEventDate!.competitionId,
|
||||||
|
},
|
||||||
|
select:{
|
||||||
|
playedShopName: true,
|
||||||
|
playedAt: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -830,14 +854,14 @@ export default class TerminalModule extends Module {
|
|||||||
rank: i + 1,
|
rank: i + 1,
|
||||||
result: ocmParticipant[i].result,
|
result: ocmParticipant[i].result,
|
||||||
carId: ocmParticipant[i].carId,
|
carId: ocmParticipant[i].carId,
|
||||||
name: cars!.name,
|
name: ocmParticipant[i].car.name,
|
||||||
regionId: cars!.regionId,
|
regionId: ocmParticipant[i].car.regionId,
|
||||||
model: cars!.model,
|
model: ocmParticipant[i].car.model,
|
||||||
visualModel: cars!.visualModel,
|
visualModel: ocmParticipant[i].car.visualModel,
|
||||||
defaultColor: cars!.defaultColor,
|
defaultColor: ocmParticipant[i].car.defaultColor,
|
||||||
title: cars!.title,
|
title: ocmParticipant[i].car.title,
|
||||||
level: cars!.level,
|
level: ocmParticipant[i].car.level,
|
||||||
windowStickerString: cars!.windowStickerString,
|
windowStickerString: ocmParticipant[i].car.windowStickerString,
|
||||||
playedShopName: ocmGhostrecord!.playedShopName,
|
playedShopName: ocmGhostrecord!.playedShopName,
|
||||||
playedAt: ocmGhostrecord!.playedAt
|
playedAt: ocmGhostrecord!.playedAt
|
||||||
});
|
});
|
||||||
@ -850,18 +874,56 @@ export default class TerminalModule extends Module {
|
|||||||
rank: i + 1,
|
rank: i + 1,
|
||||||
result: ocmParticipant[i].result,
|
result: ocmParticipant[i].result,
|
||||||
carId: ocmParticipant[i].carId,
|
carId: ocmParticipant[i].carId,
|
||||||
name: cars!.name,
|
name: ocmParticipant[i].car.name,
|
||||||
regionId: cars!.regionId,
|
regionId: ocmParticipant[i].car.regionId,
|
||||||
model: cars!.model,
|
model: ocmParticipant[i].car.model,
|
||||||
visualModel: cars!.visualModel,
|
visualModel: ocmParticipant[i].car.visualModel,
|
||||||
defaultColor: cars!.defaultColor,
|
defaultColor: ocmParticipant[i].car.defaultColor,
|
||||||
title: cars!.title,
|
title: ocmParticipant[i].car.title,
|
||||||
level: cars!.level,
|
level: ocmParticipant[i].car.level,
|
||||||
windowStickerString: cars!.windowStickerString,
|
windowStickerString: ocmParticipant[i].car.windowStickerString,
|
||||||
playedShopName: ocmGhostrecord!.playedShopName,
|
playedShopName: ocmGhostrecord!.playedShopName,
|
||||||
playedAt: ocmGhostrecord!.playedAt
|
playedAt: ocmGhostrecord!.playedAt
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(ownRecords))
|
||||||
|
{
|
||||||
|
for(let i=maxNumber; i<numOfParticipants; i++)
|
||||||
|
{
|
||||||
|
if(ocmParticipant[i].carId === body.carId)
|
||||||
|
{
|
||||||
|
let ocmGhostrecord = await prisma.oCMGhostBattleRecord.findFirst({
|
||||||
|
where:{
|
||||||
|
carId: body.carId,
|
||||||
|
competitionId: ocmEventDate!.competitionId,
|
||||||
|
},
|
||||||
|
select:{
|
||||||
|
playedAt: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// User car setting
|
||||||
|
ownRecords = wm.wm.protobuf.LoadGhostCompetitionRankingResponse.Entry.create({
|
||||||
|
rank: i + 1,
|
||||||
|
result: ocmParticipant[i].result,
|
||||||
|
carId: ocmParticipant[i].carId,
|
||||||
|
name: ocmParticipant[i].car.name,
|
||||||
|
regionId: ocmParticipant[i].car.regionId,
|
||||||
|
model: ocmParticipant[i].car.model,
|
||||||
|
visualModel: ocmParticipant[i].car.visualModel,
|
||||||
|
defaultColor: ocmParticipant[i].car.defaultColor,
|
||||||
|
title: ocmParticipant[i].car.title,
|
||||||
|
level: ocmParticipant[i].car.level,
|
||||||
|
windowStickerString: ocmParticipant[i].car.windowStickerString,
|
||||||
|
playedShopName: playedShopName,
|
||||||
|
playedAt: ocmGhostrecord!.playedAt
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,8 +236,8 @@ export default class UserModule extends Module {
|
|||||||
if (user.carOrder.length > 0)
|
if (user.carOrder.length > 0)
|
||||||
{
|
{
|
||||||
// Sort the player's car list using the car order property
|
// Sort the player's car list using the car order property
|
||||||
user.cars = user.cars.sort(function(a, b){
|
user.cars = user.cars.sort(function(a, b)
|
||||||
|
{
|
||||||
// User, and both car IDs exist
|
// User, and both car IDs exist
|
||||||
if (user)
|
if (user)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user