活动:统计套装宝石相同阶数的任务
This commit is contained in:
@@ -4,7 +4,7 @@ import { ItemInter } from "../../../pubUtils/interface";
|
|||||||
|
|
||||||
import { resResult, parseGoodStr, getRandValueByMinMax, getRandEelm } from "../../../pubUtils/util";
|
import { resResult, parseGoodStr, getRandValueByMinMax, getRandEelm } from "../../../pubUtils/util";
|
||||||
import { addItems, handleCost, decreaseItems } from "../../../services/rewardService";
|
import { addItems, handleCost, decreaseItems } from "../../../services/rewardService";
|
||||||
import { EquipModel, EquipType } from "../../../db/Equip";
|
import Equip, { EquipModel, EquipType } from "../../../db/Equip";
|
||||||
import { HeroModel, EPlace } from "../../../db/Hero";
|
import { HeroModel, EPlace } from "../../../db/Hero";
|
||||||
import Role from "../../../db/Role";
|
import Role from "../../../db/Role";
|
||||||
import { calPlayerCeAndSave } from "../../../services/playerCeService";
|
import { calPlayerCeAndSave } from "../../../services/playerCeService";
|
||||||
@@ -15,7 +15,7 @@ import { changeEquip, dressEquip, checkMaterialEnough, takeOffEquipAndCalPlayerC
|
|||||||
|
|
||||||
import { indexOf, findIndex } from 'underscore';
|
import { indexOf, findIndex } from 'underscore';
|
||||||
import { pushEquipRefineSucMsg, pushNormalEquipMsg, pushNormalItemMsg } from "../../../services/chatService";
|
import { pushEquipRefineSucMsg, pushNormalEquipMsg, pushNormalItemMsg } from "../../../services/chatService";
|
||||||
import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs } from "../../../services/taskService";
|
import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs, checkTaskConditionEquipSuitJewelStage } from "../../../services/taskService";
|
||||||
import { accomplishTask } from "../../../pubUtils/taskUtil";
|
import { accomplishTask } from "../../../pubUtils/taskUtil";
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
@@ -509,12 +509,20 @@ export class EquipHandler {
|
|||||||
curEquip = await dressEquip(roleId, sid, hero, equip, funcs);
|
curEquip = await dressEquip(roleId, sid, hero, equip, funcs);
|
||||||
if (!!curEquip)
|
if (!!curEquip)
|
||||||
curEquips.push(curEquip);
|
curEquips.push(curEquip);
|
||||||
|
|
||||||
|
//任务
|
||||||
|
//英雄满装备且都镶嵌相同阶数的宝石
|
||||||
|
let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero)
|
||||||
|
if (isTask) {
|
||||||
|
await accomplishTask(roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel })
|
||||||
|
}
|
||||||
} else if (type == 2) {
|
} else if (type == 2) {
|
||||||
if (!equip.hid)
|
if (!equip.hid)
|
||||||
return resResult(STATUS.EQUIP_NOT_EQUIPED);
|
return resResult(STATUS.EQUIP_NOT_EQUIPED);
|
||||||
let curEquip = await takeOffEquipAndCalPlayerCe(roleId, sid, hero, equip, id, funcs);
|
let curEquip = await takeOffEquipAndCalPlayerCe(roleId, sid, hero, equip, id, funcs);
|
||||||
curEquips.push(curEquip);
|
curEquips.push(curEquip);
|
||||||
}
|
}
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { curEquips: curEquips });
|
return resResult(STATUS.SUCCESS, { curEquips: curEquips });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,6 +589,12 @@ export class EquipHandler {
|
|||||||
if (!!equip.hid) {
|
if (!!equip.hid) {
|
||||||
let hero = await HeroModel.findByHidAndRole(equip.hid, roleId);
|
let hero = await HeroModel.findByHidAndRole(equip.hid, roleId);
|
||||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]);
|
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]);
|
||||||
|
//任务
|
||||||
|
//英雄满装备且都镶嵌相同阶数的宝石
|
||||||
|
let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero)
|
||||||
|
if (isTask) {
|
||||||
|
await accomplishTask(roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 任务
|
// 任务
|
||||||
@@ -589,6 +603,7 @@ export class EquipHandler {
|
|||||||
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
|
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
|
||||||
//成长任务
|
//成长任务
|
||||||
await accomplishTask(roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1)
|
await accomplishTask(roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1)
|
||||||
|
await accomplishTask(roleId, TASK_TYPE.EQUIP_JEWEL_STAGE, 1)
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
|
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
|
||||||
}
|
}
|
||||||
@@ -753,6 +768,13 @@ export class EquipHandler {
|
|||||||
if (!!equip.hid) {
|
if (!!equip.hid) {
|
||||||
let hero = await HeroModel.findByHidAndRole(equip.hid, roleId);
|
let hero = await HeroModel.findByHidAndRole(equip.hid, roleId);
|
||||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]);
|
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]);
|
||||||
|
|
||||||
|
//任务
|
||||||
|
//英雄满装备且都镶嵌相同阶数的宝石
|
||||||
|
let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero)
|
||||||
|
if (isTask) {
|
||||||
|
await accomplishTask(roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 任务
|
// 任务
|
||||||
@@ -760,7 +782,7 @@ export class EquipHandler {
|
|||||||
await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]);
|
await checkTaskWithArgs(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]);
|
||||||
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
|
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]);
|
||||||
//成长任务
|
//成长任务
|
||||||
await accomplishTask(roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1)
|
await accomplishTask(roleId, TASK_TYPE.EQUIP_JEWEL_SUM, count)
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
|
return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } });
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { EquipType } from "../db/Equip";
|
|||||||
import { calEquipSeids } from '../pubUtils/playerCe';
|
import { calEquipSeids } from '../pubUtils/playerCe';
|
||||||
import { indexOf, findIndex } from 'underscore';
|
import { indexOf, findIndex } from 'underscore';
|
||||||
import { checkTask, checkTaskWithHero, checkTaskWithEquip } from './taskService';
|
import { checkTask, checkTaskWithHero, checkTaskWithEquip } from './taskService';
|
||||||
|
import { accomplishTask } from '../pubUtils/taskUtil';
|
||||||
/**
|
/**
|
||||||
* 校验前端传入的消耗数量是否准确,并返回消耗的道具并加上特殊材料needConsumes
|
* 校验前端传入的消耗数量是否准确,并返回消耗的道具并加上特殊材料needConsumes
|
||||||
* @param consumes
|
* @param consumes
|
||||||
@@ -126,6 +127,7 @@ export async function dressEquip(roleId: string, sid: string, hero:HeroType, equ
|
|||||||
await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_SUM, 1, true, {});
|
await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_SUM, 1, true, {});
|
||||||
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [1]);
|
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [1]);
|
||||||
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [1]);
|
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [1]);
|
||||||
|
await accomplishTask(roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equip.quality })
|
||||||
|
|
||||||
return { seqId: equip.seqId, hid: hero.hid };
|
return { seqId: equip.seqId, hid: hero.hid };
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@ import { ItemInter } from '../pubUtils/interface';
|
|||||||
import { UserTaskModel, UserTaskType } from '../db/UserTask';
|
import { UserTaskModel, UserTaskType } from '../db/UserTask';
|
||||||
import { UserTaskRecModel } from '../db/UserTaskRec';
|
import { UserTaskRecModel } from '../db/UserTaskRec';
|
||||||
import { UserTaskHistoryModel } from '../db/UserTaskHistory';
|
import { UserTaskHistoryModel } from '../db/UserTaskHistory';
|
||||||
import { gameData } from '../pubUtils/data';
|
import { gameData, getGoodById } from '../pubUtils/data';
|
||||||
import { getCurWeekDate, getSeconds } from '../pubUtils/timeUtil';
|
import { getCurWeekDate, getSeconds } from '../pubUtils/timeUtil';
|
||||||
import { RoleStatus } from '../db/ComBattleTeam';
|
import { RoleStatus } from '../db/ComBattleTeam';
|
||||||
|
|
||||||
@@ -240,3 +240,32 @@ export async function refDailyTaskBox(roleId: string, sid: string, debug = false
|
|||||||
}), uids);
|
}), uids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//任务条件
|
||||||
|
//英雄满装备且都镶嵌相同阶数的宝石
|
||||||
|
export async function checkTaskConditionEquipSuitJewelStage(hero: HeroType) {
|
||||||
|
let isTask = true;//是否满足任务条件
|
||||||
|
let jewelLevel = -1;//宝石阶数
|
||||||
|
for (let i = 0; i < hero.ePlace.length; i++) {
|
||||||
|
let equipObj = <EquipType>hero.ePlace[i].equip;
|
||||||
|
let equipObjInfo = getGoodById(equipObj.id);
|
||||||
|
if (equipObj.holes.length == equipObjInfo.hole && equipObjInfo.hole > 0) {
|
||||||
|
for (let j = 0; j < equipObj.holes.length; j++) {
|
||||||
|
let jewel = equipObj.holes[j].jewel;
|
||||||
|
let jewelInfo = getGoodById(jewel);
|
||||||
|
if (jewelLevel == -1) {
|
||||||
|
jewelLevel = jewelInfo.lvLimited;
|
||||||
|
} else if (jewelInfo.lvLimited != jewelLevel) {
|
||||||
|
//宝石阶数不同
|
||||||
|
isTask = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//宝石没有镶满
|
||||||
|
isTask = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { isTask, jewelLevel };
|
||||||
|
}
|
||||||
@@ -653,6 +653,7 @@ export enum TASK_TYPE {
|
|||||||
HERO_WAKE_UP_COUNT = 75, // *名武将*品觉醒
|
HERO_WAKE_UP_COUNT = 75, // *名武将*品觉醒
|
||||||
HERO_WAKE_UP_STAR_UP_COUNT = 76, // *名武将升至觉醒*星
|
HERO_WAKE_UP_STAR_UP_COUNT = 76, // *名武将升至觉醒*星
|
||||||
EQUIP_REFINE_LV = 77, // *件装备成功精炼到*级
|
EQUIP_REFINE_LV = 77, // *件装备成功精炼到*级
|
||||||
|
EQUIP_SUIT_JEWEL_STAGE = 78, // *次触发,一个武将满装备情况下,必须都镶嵌有相同阶的宝石(阶数大于等于x情况下都算达成)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 卡池类型
|
// 卡池类型
|
||||||
|
|||||||
@@ -108,6 +108,11 @@ export default class Equip extends BaseModel {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async getEquipsByID(ids: Array<string>) {
|
||||||
|
let result = await EquipModel.find({ _id: { $in: ids } });
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public static async getEquips(ids: Array<number>) {
|
public static async getEquips(ids: Array<number>) {
|
||||||
let result = await EquipModel.find({ seqId: { $in: ids } });
|
let result = await EquipModel.find({ seqId: { $in: ids } });
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -132,6 +132,20 @@ export class ThirtyDaysData extends ActivityBase {
|
|||||||
totalPoint: number = 0;//总共点数
|
totalPoint: number = 0;//总共点数
|
||||||
consumePoint: number = 0;//消耗掉的点数
|
consumePoint: number = 0;//消耗掉的点数
|
||||||
|
|
||||||
|
//未完成的任务
|
||||||
|
public findUncompleteTaskByType(type: number) {
|
||||||
|
let task = [];
|
||||||
|
for (let i = 0; i < this.list.length; i++) {
|
||||||
|
let items = this.list[i].item;
|
||||||
|
for (let itemData of items) {
|
||||||
|
if (itemData.taskType == type && !itemData.isComplete) {
|
||||||
|
task.push(itemData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return task;
|
||||||
|
}
|
||||||
|
|
||||||
public findTaskByType(type: number) {
|
public findTaskByType(type: number) {
|
||||||
let task = [];
|
let task = [];
|
||||||
for (let i = 0; i < this.list.length; i++) {
|
for (let i = 0; i < this.list.length; i++) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { ACTIVITY_TYPE } from '../consts/constModules/activityConst';
|
|||||||
import { ActivityGrowthModel } from '../db/ActivityGrowth';
|
import { ActivityGrowthModel } from '../db/ActivityGrowth';
|
||||||
import { ActivityDailyChallengesModel } from '../db/ActivityDailyChallenges';
|
import { ActivityDailyChallengesModel } from '../db/ActivityDailyChallenges';
|
||||||
import { ThirtyDaysData } from '../domain/activityField/thirtyDaysField';
|
import { ThirtyDaysData } from '../domain/activityField/thirtyDaysField';
|
||||||
import { ActivityThirtyDaysModel } from '../db/ActivityThirtyDays';
|
import { ActivityThirtyDaysModel, ActivityThirtyDaysModelType } from '../db/ActivityThirtyDays';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -524,13 +524,19 @@ export async function accomplishTask(roleId: string, taskType: TASK_TYPE, count:
|
|||||||
|
|
||||||
taskType === TASK_TYPE.EQUIP_STRENGTHEN ||
|
taskType === TASK_TYPE.EQUIP_STRENGTHEN ||
|
||||||
taskType === TASK_TYPE.EQUIP_REFINE_LV ||
|
taskType === TASK_TYPE.EQUIP_REFINE_LV ||
|
||||||
taskType === TASK_TYPE.HERO_STAGE_UP
|
taskType === TASK_TYPE.HERO_STAGE_UP ||
|
||||||
|
taskType === TASK_TYPE.EQUIP_JEWEL_SUM ||
|
||||||
|
taskType === TASK_TYPE.EQUIP_JEWEL_STAGE ||
|
||||||
|
taskType === TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE ||
|
||||||
|
taskType === TASK_TYPE.EQUIP_QUALITY
|
||||||
|
|
||||||
) {
|
) {
|
||||||
allActivity = await ActivityModel.findOpenActivityByType(ACTIVITY_TYPE.THIRTY_DAYS, new Date());
|
allActivity = await ActivityModel.findOpenActivityByType(ACTIVITY_TYPE.THIRTY_DAYS, new Date());
|
||||||
for (let activity of allActivity) {
|
for (let activity of allActivity) {
|
||||||
let thirtyDaysActivity = new ThirtyDaysData(activity);
|
let thirtyDaysActivity = new ThirtyDaysData(activity);
|
||||||
let taskArray = thirtyDaysActivity.findTaskByType(taskType);
|
let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(activity.acvitityId, roleId);
|
||||||
|
thirtyDaysActivity.setPlayerRecords(playerRecords);
|
||||||
|
let taskArray = thirtyDaysActivity.findUncompleteTaskByType(taskType);
|
||||||
for (let task of taskArray) {
|
for (let task of taskArray) {
|
||||||
let addCount = isComplete(roleId, task.taskType, task.taskParam, count, parma);
|
let addCount = isComplete(roleId, task.taskType, task.taskParam, count, parma);
|
||||||
if (addCount) {
|
if (addCount) {
|
||||||
@@ -587,7 +593,15 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
|
|||||||
case TASK_TYPE.HERO_STAGE_UP://herocount&star&
|
case TASK_TYPE.HERO_STAGE_UP://herocount&star&
|
||||||
addCount = (param[1] == paramObj.job) ? count : 0;
|
addCount = (param[1] == paramObj.job) ? count : 0;
|
||||||
break;
|
break;
|
||||||
|
case TASK_TYPE.EQUIP_JEWEL_STAGE://count&stage&
|
||||||
|
addCount = (param[1] == paramObj.stage) ? count : 0;
|
||||||
|
break;
|
||||||
|
case TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE://count&stage&
|
||||||
|
addCount = (param[1] == paramObj.stage) ? count : 0;
|
||||||
|
break;
|
||||||
|
case TASK_TYPE.EQUIP_QUALITY:
|
||||||
|
addCount = param[1] == paramObj.quality ? count : 0;
|
||||||
|
break;
|
||||||
|
|
||||||
case TASK_TYPE.ROLE_TITLE://重置数据
|
case TASK_TYPE.ROLE_TITLE://重置数据
|
||||||
addCount = param[0] <= count ? count : 0;
|
addCount = param[0] <= count ? count : 0;
|
||||||
|
|||||||
@@ -1083,7 +1083,7 @@
|
|||||||
"id": 73,
|
"id": 73,
|
||||||
"name": "精英任务",
|
"name": "精英任务",
|
||||||
"info": "精英通关第x关",
|
"info": "精英通关第x关",
|
||||||
"param": "warid",
|
"param": "warid&",
|
||||||
"string": "关卡id",
|
"string": "关卡id",
|
||||||
"content": 0,
|
"content": 0,
|
||||||
"condition": "warid",
|
"condition": "warid",
|
||||||
@@ -1098,7 +1098,7 @@
|
|||||||
"id": 74,
|
"id": 74,
|
||||||
"name": "武将",
|
"name": "武将",
|
||||||
"info": "x名x品质武将升至X品质",
|
"info": "x名x品质武将升至X品质",
|
||||||
"param": "herocount&quality&quality",
|
"param": "herocount&quality&quality&",
|
||||||
"string": "武将数量&武将初始品质&武将升级后品质",
|
"string": "武将数量&武将初始品质&武将升级后品质",
|
||||||
"content": 0,
|
"content": 0,
|
||||||
"condition": "herocount",
|
"condition": "herocount",
|
||||||
@@ -1113,7 +1113,7 @@
|
|||||||
"id": 75,
|
"id": 75,
|
||||||
"name": "武将",
|
"name": "武将",
|
||||||
"info": "x名x品质武将觉醒",
|
"info": "x名x品质武将觉醒",
|
||||||
"param": "herocount&quality",
|
"param": "herocount&quality&",
|
||||||
"string": "武将数量&武将初始品质",
|
"string": "武将数量&武将初始品质",
|
||||||
"content": 0,
|
"content": 0,
|
||||||
"condition": "herocount",
|
"condition": "herocount",
|
||||||
@@ -1128,7 +1128,7 @@
|
|||||||
"id": 76,
|
"id": 76,
|
||||||
"name": "武将",
|
"name": "武将",
|
||||||
"info": "x名武将觉醒后升至x星",
|
"info": "x名武将觉醒后升至x星",
|
||||||
"param": "herocount&star",
|
"param": "herocount&star&",
|
||||||
"string": "武将数量&星级",
|
"string": "武将数量&星级",
|
||||||
"content": 0,
|
"content": 0,
|
||||||
"condition": "herocount",
|
"condition": "herocount",
|
||||||
@@ -1143,7 +1143,7 @@
|
|||||||
"id": 77,
|
"id": 77,
|
||||||
"name": "装备",
|
"name": "装备",
|
||||||
"info": "x件装备成功精炼到x级",
|
"info": "x件装备成功精炼到x级",
|
||||||
"param": "count&lv",
|
"param": "count&lv&",
|
||||||
"string": "装备件数&精炼等级",
|
"string": "装备件数&精炼等级",
|
||||||
"content": 0,
|
"content": 0,
|
||||||
"condition": "count",
|
"condition": "count",
|
||||||
@@ -1153,5 +1153,20 @@
|
|||||||
"__EMPTY_3": 0,
|
"__EMPTY_3": 0,
|
||||||
"__EMPTY_4": 0,
|
"__EMPTY_4": 0,
|
||||||
"__EMPTY_5": 0
|
"__EMPTY_5": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 78,
|
||||||
|
"name": "装备",
|
||||||
|
"info": "一个武将满装备情况下,必须都镶嵌有相同阶的宝石(阶数大于等于x情况下都算达成),触发x次数",
|
||||||
|
"param": "count&stage&",
|
||||||
|
"string": "发生次数&宝石阶数&",
|
||||||
|
"content": 0,
|
||||||
|
"condition": "count",
|
||||||
|
"__EMPTY": 0,
|
||||||
|
"__EMPTY_1": 0,
|
||||||
|
"__EMPTY_2": 0,
|
||||||
|
"__EMPTY_3": 0,
|
||||||
|
"__EMPTY_4": 0,
|
||||||
|
"__EMPTY_5": 0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
Reference in New Issue
Block a user