Commit 7cef28d0 authored by nanahira's avatar nanahira

finish db

parent b5a35eab
Pipeline #1223 passed with stage
in 7 minutes and 9 seconds
......@@ -439,9 +439,11 @@ class DataManager {
async getVipKeys(keyType) {
const repo = this.db.getRepository(VipKey_1.VipKey);
const queryCondition = {
type: keyType,
isUsed: 0
};
if (keyType) {
queryCondition.type = keyType;
}
try {
const keys = await repo.find(queryCondition);
return keys.map(k => k.toJSON());
......
......@@ -463,9 +463,11 @@ export class DataManager {
async getVipKeys(keyType: number) {
const repo = this.db.getRepository(VipKey);
const queryCondition = {
type: keyType,
const queryCondition: any = {
isUsed: 0
};
if (keyType) {
queryCondition.type = keyType;
}
try {
const keys = await repo.find(queryCondition);
......
......@@ -11,28 +11,25 @@ var __metadata = (this && this.__metadata) || function (k, v) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.Ban = void 0;
const typeorm_1 = require("typeorm");
let Ban = /** @class */ (() => {
let Ban = class Ban {
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], Ban.prototype, "id", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 64, nullable: true }),
__metadata("design:type", String)
], Ban.prototype, "ip", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 20, nullable: true }),
__metadata("design:type", String)
], Ban.prototype, "name", void 0);
Ban = __decorate([
typeorm_1.Entity(),
typeorm_1.Unique(["ip", "name"])
], Ban);
return Ban;
})();
let Ban = class Ban {
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], Ban.prototype, "id", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 64, nullable: true }),
__metadata("design:type", String)
], Ban.prototype, "ip", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 20, nullable: true }),
__metadata("design:type", String)
], Ban.prototype, "name", void 0);
Ban = __decorate([
typeorm_1.Entity(),
typeorm_1.Unique(["ip", "name"])
], Ban);
exports.Ban = Ban;
//# sourceMappingURL=Ban.js.map
\ No newline at end of file
......@@ -11,22 +11,19 @@ var __metadata = (this && this.__metadata) || function (k, v) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.BasePlayer = void 0;
const typeorm_1 = require("typeorm");
let BasePlayer = /** @class */ (() => {
class BasePlayer {
}
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], BasePlayer.prototype, "id", void 0);
__decorate([
typeorm_1.Column({ type: "varchar", length: 20 }),
__metadata("design:type", String)
], BasePlayer.prototype, "name", void 0);
__decorate([
typeorm_1.Column({ type: "tinyint" }),
__metadata("design:type", Number)
], BasePlayer.prototype, "pos", void 0);
return BasePlayer;
})();
class BasePlayer {
}
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], BasePlayer.prototype, "id", void 0);
__decorate([
typeorm_1.Column({ type: "varchar", length: 20 }),
__metadata("design:type", String)
], BasePlayer.prototype, "name", void 0);
__decorate([
typeorm_1.Column({ type: "tinyint" }),
__metadata("design:type", Number)
], BasePlayer.prototype, "pos", void 0);
exports.BasePlayer = BasePlayer;
//# sourceMappingURL=BasePlayer.js.map
\ No newline at end of file
......@@ -17,46 +17,43 @@ const typeorm_1 = require("typeorm");
const CloudReplayPlayer_1 = require("./CloudReplayPlayer");
const underscore_1 = __importDefault(require("underscore"));
const moment_1 = __importDefault(require("moment"));
let CloudReplay = /** @class */ (() => {
let CloudReplay = class CloudReplay {
fromBuffer(buffer) {
this.data = buffer.toString("base64");
}
toBuffer() {
return Buffer.from(this.data, "base64");
}
getDateString() {
return moment_1.default(this.date).format('YYYY-MM-DD HH:mm:ss');
}
getPlayerNamesString() {
const playerInfos = underscore_1.default.clone(this.players);
playerInfos.sort((p1, p2) => p1.pos - p2.pos);
return playerInfos[0].name + (playerInfos[2] ? "+" + playerInfos[2].name : "") + " VS " + (playerInfos[1] ? playerInfos[1].name : "AI") + (playerInfos[3] ? "+" + playerInfos[3].name : "");
}
getDisplayString() {
return `R#${this.id} ${this.getPlayerNamesString()} ${this.getDateString()}`;
}
};
__decorate([
typeorm_1.PrimaryColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], CloudReplay.prototype, "id", void 0);
__decorate([
typeorm_1.Column({ type: "text" }),
__metadata("design:type", String)
], CloudReplay.prototype, "data", void 0);
__decorate([
typeorm_1.Column({ type: "datetime" }),
__metadata("design:type", Date)
], CloudReplay.prototype, "date", void 0);
__decorate([
typeorm_1.OneToMany(() => CloudReplayPlayer_1.CloudReplayPlayer, player => player.cloudReplay),
__metadata("design:type", Array)
], CloudReplay.prototype, "players", void 0);
CloudReplay = __decorate([
typeorm_1.Entity()
], CloudReplay);
return CloudReplay;
})();
let CloudReplay = class CloudReplay {
fromBuffer(buffer) {
this.data = buffer.toString("base64");
}
toBuffer() {
return Buffer.from(this.data, "base64");
}
getDateString() {
return moment_1.default(this.date).format('YYYY-MM-DD HH:mm:ss');
}
getPlayerNamesString() {
const playerInfos = underscore_1.default.clone(this.players);
playerInfos.sort((p1, p2) => p1.pos - p2.pos);
return playerInfos[0].name + (playerInfos[2] ? "+" + playerInfos[2].name : "") + " VS " + (playerInfos[1] ? playerInfos[1].name : "AI") + (playerInfos[3] ? "+" + playerInfos[3].name : "");
}
getDisplayString() {
return `R#${this.id} ${this.getPlayerNamesString()} ${this.getDateString()}`;
}
};
__decorate([
typeorm_1.PrimaryColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], CloudReplay.prototype, "id", void 0);
__decorate([
typeorm_1.Column({ type: "text" }),
__metadata("design:type", String)
], CloudReplay.prototype, "data", void 0);
__decorate([
typeorm_1.Column({ type: "datetime" }),
__metadata("design:type", Date)
], CloudReplay.prototype, "date", void 0);
__decorate([
typeorm_1.OneToMany(() => CloudReplayPlayer_1.CloudReplayPlayer, player => player.cloudReplay),
__metadata("design:type", Array)
], CloudReplay.prototype, "players", void 0);
CloudReplay = __decorate([
typeorm_1.Entity()
], CloudReplay);
exports.CloudReplay = CloudReplay;
//# sourceMappingURL=CloudReplay.js.map
\ No newline at end of file
......@@ -8,35 +8,32 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var CloudReplayPlayer_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CloudReplayPlayer = void 0;
const typeorm_1 = require("typeorm");
const CloudReplay_1 = require("./CloudReplay");
const BasePlayer_1 = require("./BasePlayer");
let CloudReplayPlayer = /** @class */ (() => {
var CloudReplayPlayer_1;
let CloudReplayPlayer = CloudReplayPlayer_1 = class CloudReplayPlayer extends BasePlayer_1.BasePlayer {
static fromPlayerInfo(info) {
const p = new CloudReplayPlayer_1();
p.key = info.key;
p.name = info.name;
p.pos = info.pos;
return p;
}
};
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 40 }),
__metadata("design:type", String)
], CloudReplayPlayer.prototype, "key", void 0);
__decorate([
typeorm_1.ManyToOne(() => CloudReplay_1.CloudReplay, replay => replay.players),
__metadata("design:type", CloudReplay_1.CloudReplay)
], CloudReplayPlayer.prototype, "cloudReplay", void 0);
CloudReplayPlayer = CloudReplayPlayer_1 = __decorate([
typeorm_1.Entity()
], CloudReplayPlayer);
return CloudReplayPlayer;
})();
let CloudReplayPlayer = CloudReplayPlayer_1 = class CloudReplayPlayer extends BasePlayer_1.BasePlayer {
static fromPlayerInfo(info) {
const p = new CloudReplayPlayer_1();
p.key = info.key;
p.name = info.name;
p.pos = info.pos;
return p;
}
};
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 40 }),
__metadata("design:type", String)
], CloudReplayPlayer.prototype, "key", void 0);
__decorate([
typeorm_1.ManyToOne(() => CloudReplay_1.CloudReplay, replay => replay.players),
__metadata("design:type", CloudReplay_1.CloudReplay)
], CloudReplayPlayer.prototype, "cloudReplay", void 0);
CloudReplayPlayer = CloudReplayPlayer_1 = __decorate([
typeorm_1.Entity()
], CloudReplayPlayer);
exports.CloudReplayPlayer = CloudReplayPlayer;
//# sourceMappingURL=CloudReplayPlayer.js.map
\ No newline at end of file
......@@ -17,76 +17,73 @@ const typeorm_1 = require("typeorm");
const DuelLogPlayer_1 = require("./DuelLogPlayer");
const moment_1 = __importDefault(require("moment"));
const underscore_1 = __importDefault(require("underscore"));
let DuelLog = /** @class */ (() => {
let DuelLog = class DuelLog {
getViewString() {
const viewPlayers = underscore_1.default.clone(this.players);
viewPlayers.sort((p1, p2) => p1.pos - p2.pos);
const playerString = viewPlayers[0].realName.split("$")[0] + (viewPlayers[2] ? "+" + viewPlayers[2].realName.split("$")[0] : "") + " VS " + (viewPlayers[1] ? viewPlayers[1].realName.split("$")[0] : "AI") + (viewPlayers[3] ? "+" + viewPlayers[3].realName.split("$")[0] : "");
return `<${this.id}> ${playerString} ${moment_1.default(this.time).format("YYYY-MM-DD HH-mm-ss")}`;
}
getViewJSON(tournamentModeSettings) {
const data = {
id: this.id,
time: moment_1.default(this.time).format("YYYY-MM-DD HH:mm:ss"),
name: this.name + (tournamentModeSettings.show_info ? " (Duel:" + this.duelCount + ")" : ""),
roomid: this.roomId,
cloud_replay_id: "R#" + this.cloudReplayId,
replay_filename: this.replayFileName,
roommode: this.roomMode,
players: this.players.map(player => {
return {
pos: player.pos,
is_first: player.isFirst === 1,
name: player.name + (tournamentModeSettings.show_ip ? " (IP: " + player.ip.slice(7) + ")" : "") + (tournamentModeSettings.show_info && !(this.roomMode === 2 && player.pos % 2 > 0) ? " (Score:" + player.score + " LP:" + (player.lp != null ? player.lp : "???") + (this.roomMode !== 2 ? " Cards:" + (player.cardCount != null ? player.cardCount : "???") : "") + ")" : ""),
winner: player.winner === 1
};
})
};
return data;
}
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], DuelLog.prototype, "id", void 0);
__decorate([
typeorm_1.Column("datetime"),
__metadata("design:type", Date)
], DuelLog.prototype, "time", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 20 }),
__metadata("design:type", String)
], DuelLog.prototype, "name", void 0);
__decorate([
typeorm_1.Column("int"),
__metadata("design:type", Number)
], DuelLog.prototype, "roomId", void 0);
__decorate([
typeorm_1.Column("bigint"),
__metadata("design:type", Number)
], DuelLog.prototype, "cloudReplayId", void 0);
__decorate([
typeorm_1.Column({ type: "varchar", length: 256 }),
__metadata("design:type", String)
], DuelLog.prototype, "replayFileName", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true }),
__metadata("design:type", Number)
], DuelLog.prototype, "roomMode", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true }),
__metadata("design:type", Number)
], DuelLog.prototype, "duelCount", void 0);
__decorate([
typeorm_1.OneToMany(() => DuelLogPlayer_1.DuelLogPlayer, player => player.duelLog),
__metadata("design:type", Array)
], DuelLog.prototype, "players", void 0);
DuelLog = __decorate([
typeorm_1.Entity()
], DuelLog);
return DuelLog;
})();
let DuelLog = class DuelLog {
getViewString() {
const viewPlayers = underscore_1.default.clone(this.players);
viewPlayers.sort((p1, p2) => p1.pos - p2.pos);
const playerString = viewPlayers[0].realName.split("$")[0] + (viewPlayers[2] ? "+" + viewPlayers[2].realName.split("$")[0] : "") + " VS " + (viewPlayers[1] ? viewPlayers[1].realName.split("$")[0] : "AI") + (viewPlayers[3] ? "+" + viewPlayers[3].realName.split("$")[0] : "");
return `<${this.id}> ${playerString} ${moment_1.default(this.time).format("YYYY-MM-DD HH-mm-ss")}`;
}
getViewJSON(tournamentModeSettings) {
const data = {
id: this.id,
time: moment_1.default(this.time).format("YYYY-MM-DD HH:mm:ss"),
name: this.name + (tournamentModeSettings.show_info ? " (Duel:" + this.duelCount + ")" : ""),
roomid: this.roomId,
cloud_replay_id: "R#" + this.cloudReplayId,
replay_filename: this.replayFileName,
roommode: this.roomMode,
players: this.players.map(player => {
return {
pos: player.pos,
is_first: player.isFirst === 1,
name: player.name + (tournamentModeSettings.show_ip ? " (IP: " + player.ip.slice(7) + ")" : "") + (tournamentModeSettings.show_info && !(this.roomMode === 2 && player.pos % 2 > 0) ? " (Score:" + player.score + " LP:" + (player.lp != null ? player.lp : "???") + (this.roomMode !== 2 ? " Cards:" + (player.cardCount != null ? player.cardCount : "???") : "") + ")" : ""),
winner: player.winner === 1
};
})
};
return data;
}
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], DuelLog.prototype, "id", void 0);
__decorate([
typeorm_1.Column("datetime"),
__metadata("design:type", Date)
], DuelLog.prototype, "time", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 20 }),
__metadata("design:type", String)
], DuelLog.prototype, "name", void 0);
__decorate([
typeorm_1.Column("int"),
__metadata("design:type", Number)
], DuelLog.prototype, "roomId", void 0);
__decorate([
typeorm_1.Column("bigint"),
__metadata("design:type", Number)
], DuelLog.prototype, "cloudReplayId", void 0);
__decorate([
typeorm_1.Column({ type: "varchar", length: 256 }),
__metadata("design:type", String)
], DuelLog.prototype, "replayFileName", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true }),
__metadata("design:type", Number)
], DuelLog.prototype, "roomMode", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true }),
__metadata("design:type", Number)
], DuelLog.prototype, "duelCount", void 0);
__decorate([
typeorm_1.OneToMany(() => DuelLogPlayer_1.DuelLogPlayer, player => player.duelLog),
__metadata("design:type", Array)
], DuelLog.prototype, "players", void 0);
DuelLog = __decorate([
typeorm_1.Entity()
], DuelLog);
exports.DuelLog = DuelLog;
//# sourceMappingURL=DuelLog.js.map
\ No newline at end of file
......@@ -8,96 +8,93 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var DuelLogPlayer_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DuelLogPlayer = void 0;
const typeorm_1 = require("typeorm");
const BasePlayer_1 = require("./BasePlayer");
const DuelLog_1 = require("./DuelLog");
const DeckEncoder_1 = require("../DeckEncoder");
let DuelLogPlayer = /** @class */ (() => {
var DuelLogPlayer_1;
let DuelLogPlayer = DuelLogPlayer_1 = class DuelLogPlayer extends BasePlayer_1.BasePlayer {
setStartDeck(deck) {
if (deck === null) {
this.startDeckBuffer = null;
return;
}
this.startDeckBuffer = DeckEncoder_1.encodeDeck(deck).toString("base64");
let DuelLogPlayer = DuelLogPlayer_1 = class DuelLogPlayer extends BasePlayer_1.BasePlayer {
setStartDeck(deck) {
if (deck === null) {
this.startDeckBuffer = null;
return;
}
getStartDeck() {
return DeckEncoder_1.decodeDeck(Buffer.from(this.startDeckBuffer, "base64"));
this.startDeckBuffer = DeckEncoder_1.encodeDeck(deck).toString("base64");
}
getStartDeck() {
return DeckEncoder_1.decodeDeck(Buffer.from(this.startDeckBuffer, "base64"));
}
setCurrentDeck(deck) {
if (deck === null) {
this.currentDeckBuffer = null;
return;
}
setCurrentDeck(deck) {
if (deck === null) {
this.currentDeckBuffer = null;
return;
}
this.currentDeckBuffer = DeckEncoder_1.encodeDeck(deck).toString("base64");
}
getCurrentDeck() {
return DeckEncoder_1.decodeDeck(Buffer.from(this.currentDeckBuffer, "base64"));
}
static fromDuelLogPlayerInfo(info) {
const p = new DuelLogPlayer_1();
p.name = info.name;
p.pos = info.pos;
p.realName = info.realName;
p.lp = info.lp;
p.ip = info.ip;
p.score = info.score;
p.cardCount = info.cardCount;
p.isFirst = info.isFirst ? 1 : 0;
p.winner = info.winner ? 1 : 0;
p.startDeckBuffer = info.startDeckBuffer.toString("base64");
p.setCurrentDeck(info.deck);
return p;
}
};
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 20 }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "realName", void 0);
__decorate([
typeorm_1.Column({ type: "varchar", length: 64, nullable: true }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "ip", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true }),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "isFirst", void 0);
__decorate([
typeorm_1.Column("tinyint"),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "score", void 0);
__decorate([
typeorm_1.Column("int", { nullable: true }),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "lp", void 0);
__decorate([
typeorm_1.Column("smallint", { nullable: true }),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "cardCount", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "startDeckBuffer", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "currentDeckBuffer", void 0);
__decorate([
typeorm_1.Column("tinyint"),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "winner", void 0);
__decorate([
typeorm_1.ManyToOne(() => DuelLog_1.DuelLog, duelLog => duelLog.players),
__metadata("design:type", DuelLog_1.DuelLog)
], DuelLogPlayer.prototype, "duelLog", void 0);
DuelLogPlayer = DuelLogPlayer_1 = __decorate([
typeorm_1.Entity()
], DuelLogPlayer);
return DuelLogPlayer;
})();
this.currentDeckBuffer = DeckEncoder_1.encodeDeck(deck).toString("base64");
}
getCurrentDeck() {
return DeckEncoder_1.decodeDeck(Buffer.from(this.currentDeckBuffer, "base64"));
}
static fromDuelLogPlayerInfo(info) {
const p = new DuelLogPlayer_1();
p.name = info.name;
p.pos = info.pos;
p.realName = info.realName;
p.lp = info.lp;
p.ip = info.ip;
p.score = info.score;
p.cardCount = info.cardCount;
p.isFirst = info.isFirst ? 1 : 0;
p.winner = info.winner ? 1 : 0;
p.startDeckBuffer = info.startDeckBuffer.toString("base64");
p.setCurrentDeck(info.deck);
return p;
}
};
__decorate([
typeorm_1.Index(),
typeorm_1.Column({ type: "varchar", length: 20 }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "realName", void 0);
__decorate([
typeorm_1.Column({ type: "varchar", length: 64, nullable: true }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "ip", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true }),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "isFirst", void 0);
__decorate([
typeorm_1.Column("tinyint"),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "score", void 0);
__decorate([
typeorm_1.Column("int", { nullable: true }),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "lp", void 0);
__decorate([
typeorm_1.Column("smallint", { nullable: true }),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "cardCount", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "startDeckBuffer", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], DuelLogPlayer.prototype, "currentDeckBuffer", void 0);
__decorate([
typeorm_1.Column("tinyint"),
__metadata("design:type", Number)
], DuelLogPlayer.prototype, "winner", void 0);
__decorate([
typeorm_1.ManyToOne(() => DuelLog_1.DuelLog, duelLog => duelLog.players),
__metadata("design:type", DuelLog_1.DuelLog)
], DuelLogPlayer.prototype, "duelLog", void 0);
DuelLogPlayer = DuelLogPlayer_1 = __decorate([
typeorm_1.Entity()
], DuelLogPlayer);
exports.DuelLogPlayer = DuelLogPlayer;
//# sourceMappingURL=DuelLogPlayer.js.map
\ No newline at end of file
......@@ -11,39 +11,36 @@ var __metadata = (this && this.__metadata) || function (k, v) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.RandomDuelBan = void 0;
const typeorm_1 = require("typeorm");
let RandomDuelBan = /** @class */ (() => {
let RandomDuelBan = class RandomDuelBan {
setNeedTip(need) {
this.needTip = need ? 1 : 0;
}
getNeedTip() {
return this.needTip > 0 ? true : false;
}
};
__decorate([
typeorm_1.PrimaryColumn({ type: "varchar", length: 64 }),
__metadata("design:type", String)
], RandomDuelBan.prototype, "ip", void 0);
__decorate([
typeorm_1.Column("datetime"),
__metadata("design:type", Date)
], RandomDuelBan.prototype, "time", void 0);
__decorate([
typeorm_1.Column("smallint"),
__metadata("design:type", Number)
], RandomDuelBan.prototype, "count", void 0);
__decorate([
typeorm_1.Column({ type: "simple-array" }),
__metadata("design:type", Array)
], RandomDuelBan.prototype, "reasons", void 0);
__decorate([
typeorm_1.Column({ type: "tinyint", unsigned: true }),
__metadata("design:type", Number)
], RandomDuelBan.prototype, "needTip", void 0);
RandomDuelBan = __decorate([
typeorm_1.Entity()
], RandomDuelBan);
return RandomDuelBan;
})();
let RandomDuelBan = class RandomDuelBan {
setNeedTip(need) {
this.needTip = need ? 1 : 0;
}
getNeedTip() {
return this.needTip > 0 ? true : false;
}
};
__decorate([
typeorm_1.PrimaryColumn({ type: "varchar", length: 64 }),
__metadata("design:type", String)
], RandomDuelBan.prototype, "ip", void 0);
__decorate([
typeorm_1.Column("datetime"),
__metadata("design:type", Date)
], RandomDuelBan.prototype, "time", void 0);
__decorate([
typeorm_1.Column("smallint"),
__metadata("design:type", Number)
], RandomDuelBan.prototype, "count", void 0);
__decorate([
typeorm_1.Column({ type: "simple-array" }),
__metadata("design:type", Array)
], RandomDuelBan.prototype, "reasons", void 0);
__decorate([
typeorm_1.Column({ type: "tinyint", unsigned: true }),
__metadata("design:type", Number)
], RandomDuelBan.prototype, "needTip", void 0);
RandomDuelBan = __decorate([
typeorm_1.Entity()
], RandomDuelBan);
exports.RandomDuelBan = RandomDuelBan;
//# sourceMappingURL=RandomDuelBan.js.map
\ No newline at end of file
......@@ -17,45 +17,42 @@ const typeorm_1 = require("typeorm");
const UserDialog_1 = require("./UserDialog");
const VipKey_1 = require("./VipKey");
const moment_1 = __importDefault(require("moment"));
let User = /** @class */ (() => {
let User = class User {
isVip() {
return this.vipExpireDate && moment_1.default().isBefore(this.vipExpireDate);
}
};
__decorate([
typeorm_1.PrimaryColumn({ type: "varchar", length: 128 }),
__metadata("design:type", String)
], User.prototype, "key", void 0);
__decorate([
typeorm_1.Column("varchar", { length: 16, nullable: true }),
__metadata("design:type", String)
], User.prototype, "chatColor", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column("datetime", { nullable: true }),
__metadata("design:type", Date)
], User.prototype, "vipExpireDate", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], User.prototype, "victory", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], User.prototype, "words", void 0);
__decorate([
typeorm_1.OneToMany(() => UserDialog_1.UserDialog, dialog => dialog.user),
__metadata("design:type", Array)
], User.prototype, "dialogues", void 0);
__decorate([
typeorm_1.OneToMany(() => VipKey_1.VipKey, vipKey => vipKey.usedBy),
__metadata("design:type", Array)
], User.prototype, "usedKeys", void 0);
User = __decorate([
typeorm_1.Entity()
], User);
return User;
})();
let User = class User {
isVip() {
return this.vipExpireDate && moment_1.default().isBefore(this.vipExpireDate);
}
};
__decorate([
typeorm_1.PrimaryColumn({ type: "varchar", length: 128 }),
__metadata("design:type", String)
], User.prototype, "key", void 0);
__decorate([
typeorm_1.Column("varchar", { length: 16, nullable: true }),
__metadata("design:type", String)
], User.prototype, "chatColor", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column("datetime", { nullable: true }),
__metadata("design:type", Date)
], User.prototype, "vipExpireDate", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], User.prototype, "victory", void 0);
__decorate([
typeorm_1.Column("text", { nullable: true }),
__metadata("design:type", String)
], User.prototype, "words", void 0);
__decorate([
typeorm_1.OneToMany(() => UserDialog_1.UserDialog, dialog => dialog.user),
__metadata("design:type", Array)
], User.prototype, "dialogues", void 0);
__decorate([
typeorm_1.OneToMany(() => VipKey_1.VipKey, vipKey => vipKey.usedBy),
__metadata("design:type", Array)
], User.prototype, "usedKeys", void 0);
User = __decorate([
typeorm_1.Entity()
], User);
exports.User = User;
//# sourceMappingURL=User.js.map
\ No newline at end of file
......@@ -12,30 +12,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.UserDialog = void 0;
const typeorm_1 = require("typeorm");
const User_1 = require("./User");
let UserDialog = /** @class */ (() => {
let UserDialog = class UserDialog {
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], UserDialog.prototype, "id", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column("int", { unsigned: true }),
__metadata("design:type", Number)
], UserDialog.prototype, "cardCode", void 0);
__decorate([
typeorm_1.Column("text"),
__metadata("design:type", String)
], UserDialog.prototype, "text", void 0);
__decorate([
typeorm_1.ManyToOne(() => User_1.User, user => user.dialogues),
__metadata("design:type", User_1.User)
], UserDialog.prototype, "user", void 0);
UserDialog = __decorate([
typeorm_1.Entity()
], UserDialog);
return UserDialog;
})();
let UserDialog = class UserDialog {
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], UserDialog.prototype, "id", void 0);
__decorate([
typeorm_1.Index(),
typeorm_1.Column("int", { unsigned: true }),
__metadata("design:type", Number)
], UserDialog.prototype, "cardCode", void 0);
__decorate([
typeorm_1.Column("text"),
__metadata("design:type", String)
], UserDialog.prototype, "text", void 0);
__decorate([
typeorm_1.ManyToOne(() => User_1.User, user => user.dialogues),
__metadata("design:type", User_1.User)
], UserDialog.prototype, "user", void 0);
UserDialog = __decorate([
typeorm_1.Entity()
], UserDialog);
exports.UserDialog = UserDialog;
//# sourceMappingURL=UserDialog.js.map
\ No newline at end of file
......@@ -12,37 +12,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.VipKey = void 0;
const typeorm_1 = require("typeorm");
const User_1 = require("./User");
let VipKey = /** @class */ (() => {
let VipKey = class VipKey {
toJSON() {
return { key: this.key, type: this.type };
}
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], VipKey.prototype, "id", void 0);
__decorate([
typeorm_1.Index({ unique: true }),
typeorm_1.Column("varchar", { length: 30 }),
__metadata("design:type", String)
], VipKey.prototype, "key", void 0);
__decorate([
typeorm_1.Column("int", { unsigned: true }),
__metadata("design:type", Number)
], VipKey.prototype, "type", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true, default: 0 }),
__metadata("design:type", Number)
], VipKey.prototype, "isUsed", void 0);
__decorate([
typeorm_1.ManyToOne(() => User_1.User, user => user.usedKeys),
__metadata("design:type", User_1.User)
], VipKey.prototype, "usedBy", void 0);
VipKey = __decorate([
typeorm_1.Entity()
], VipKey);
return VipKey;
})();
let VipKey = class VipKey {
toJSON() {
return { key: this.key, type: this.type };
}
};
__decorate([
typeorm_1.PrimaryGeneratedColumn({ unsigned: true, type: "bigint" }),
__metadata("design:type", Number)
], VipKey.prototype, "id", void 0);
__decorate([
typeorm_1.Index({ unique: true }),
typeorm_1.Column("varchar", { length: 30 }),
__metadata("design:type", String)
], VipKey.prototype, "key", void 0);
__decorate([
typeorm_1.Column("int", { unsigned: true }),
__metadata("design:type", Number)
], VipKey.prototype, "type", void 0);
__decorate([
typeorm_1.Column("tinyint", { unsigned: true, default: 0 }),
__metadata("design:type", Number)
], VipKey.prototype, "isUsed", void 0);
__decorate([
typeorm_1.ManyToOne(() => User_1.User, user => user.usedKeys),
__metadata("design:type", User_1.User)
], VipKey.prototype, "usedBy", void 0);
VipKey = __decorate([
typeorm_1.Entity()
], VipKey);
exports.VipKey = VipKey;
//# sourceMappingURL=VipKey.js.map
\ No newline at end of file
......@@ -189,8 +189,8 @@
"vip_set_dialogues_part2": " have been set.",
"vip_cleared_words": "Your join word have been deleted.",
"vip_set_words": "Your join word have been set.",
"vip_cleared_victory": "Your victory word have been deleted.",
"vip_set_victory": "Your victory word have been set.",
"vip_cleared_victory": "Your victory word have been deleted, which would take effect next duel.",
"vip_set_victory": "Your victory word have been set, which would take effect next duel.",
"vip_password_changed": "Password changed.",
"vip_player_name_too_long": "Your username or password is too long to log in. Please change your username and try again.",
"vip_no_pass": "You must use the name format of Name$Password to support.",
......@@ -540,8 +540,8 @@
"vip_set_dialogues_part2": " 设置召唤台词。",
"vip_cleared_words": "已删除进场台词。",
"vip_set_words": "已设置进场台词。",
"vip_cleared_victory": "已删除胜利台词。",
"vip_set_victory": "已设置胜利台词。",
"vip_cleared_victory": "已删除胜利台词,将在下次决斗生效。",
"vip_set_victory": "已设置胜利台词,将在下次决斗生效。",
"vip_password_changed": "密码修改成功。",
"vip_player_name_too_long": "你的用户名或设置的密码太长,使用此用户名可能会无法登陆。请更换用户名重试。",
"vip_no_pass": "为了保证未来可以识别您的身份,请使用 用户名$密码 的格式重试。",
......
......@@ -1912,6 +1912,10 @@ netRequestHandler = (client) ->
CLIENT_kick(client)
return
client.playLines = (lines) ->
for line in _.lines lines
ygopro.stoc_send_chat(client, line, ygopro.constants.COLORS.PINK)
if settings.modules.cloud_replay.enabled
client.open_cloud_replay = (replay)->
if !replay
......@@ -2244,9 +2248,9 @@ ygopro.ctos_follow 'JOIN_GAME', true, (buffer, info, client, server, datas)->
client.rid = _.indexOf(ROOM_all, room)
client.is_post_watcher = true
if settings.modules.vip.enabled and await CLIENT_check_vip(client)
words = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if words
room.playLines(words)
playWords = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if playWords
room.playLines(playWords)
else if settings.modules.words.enabled and words.words[client.name]
room.playLines words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]
ygopro.stoc_send_chat_to_room(room, "#{client.name} ${watch_join}")
......@@ -2435,9 +2439,9 @@ ygopro.ctos_follow 'JOIN_GAME', true, (buffer, info, client, server, datas)->
client.rid = _.indexOf(ROOM_all, room)
client.is_post_watcher = true
if settings.modules.vip.enabled and await CLIENT_check_vip(client)
words = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if words
room.playLines(words)
playWords = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if playWords
room.playLines(playWords)
else if settings.modules.words.enabled and words.words[client.name]
room.playLines words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]
ygopro.stoc_send_chat_to_room(room, "#{client.name} ${watch_join}")
......@@ -2523,9 +2527,9 @@ ygopro.ctos_follow 'JOIN_GAME', true, (buffer, info, client, server, datas)->
client.rid = _.indexOf(ROOM_all, room)
client.is_post_watcher = true
if settings.modules.vip.enabled and await CLIENT_check_vip(client)
words = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if words
room.playLines(words)
playWords = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if playWords
room.playLines(playWords)
else if settings.modules.words.enabled and words.words[client.name]
room.playLines words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]
ygopro.stoc_send_chat_to_room(room, "#{client.name} ${watch_join}")
......@@ -2550,9 +2554,9 @@ ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
if !room.join_game_buffer
room.join_game_buffer = buffer
if settings.modules.vip.enabled and await CLIENT_check_vip(client)
words = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if words
room.playLines(words)
playWords = await dataManager.getUserWords(CLIENT_get_authorize_key(client))
if playWords
room.playLines(playWords)
else if settings.modules.words.enabled and words.words[client.name]
room.playLines words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]
if settings.modules.welcome
......@@ -2705,6 +2709,8 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server, datas)->
if settings.modules.retry_handle.enabled
client.retry_count = 0
client.last_game_msg = null
if client.pos < 3 and settings.modules.vip.enabled and await CLIENT_check_vip(client)
client.victory_words = await dataManager.getUserVictoryWords(CLIENT_get_authorize_key(client))
#ygopro.stoc_send_chat_to_room(room, "LP跟踪调试信息: #{client.name} 初始LP #{client.lp}")
......@@ -2776,9 +2782,8 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server, datas)->
victoryWordPlayerList = [room.dueling_players[pos]]
if room.hostinfo.mode == 2
victoryWordPlayerList.push(room.dueling_players[pos + 1])
for player in victoryWordPlayerList when await CLIENT_check_vip(player) and await dataManager.getUserVictoryWords(CLIENT_get_authorize_key(player))
words = await dataManager.getUserVictoryWords(CLIENT_get_authorize_key(player))
room.playLines(words)
for player in victoryWordPlayerList when player.victory_words
room.playLines(player.victory_words)
break
if room.death
if settings.modules.http.quick_death_rule == 1 or settings.modules.http.quick_death_rule == 3
......@@ -2910,13 +2915,13 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server, datas)->
act_pos = act_pos * 2
if ygopro.constants.MSG[msg] != 'CHAINING' or (trigger_location & 0x8) and client.ready_trap
if settings.modules.vip.enabled and await CLIENT_check_vip(room.dueling_players[act_pos]) and await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos]), card)
room.playLines await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos]), card)
client.playLines await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos]), card)
else if settings.modules.vip.enabled and room.hostinfo.mode == 2 and await CLIENT_check_vip(room.dueling_players[act_pos + 1]) and await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos + 1]), card)
room.playLines await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos + 1]), card)
client.playLines await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos + 1]), card)
else if settings.modules.dialogues.enabled and dialogues.dialogues[card]
room.playLines dialogues.dialogues[card][Math.floor(Math.random() * dialogues.dialogues[card].length)]
client.playLines dialogues.dialogues[card][Math.floor(Math.random() * dialogues.dialogues[card].length)]
else if settings.modules.dialogues.enabled and dialogues.dialogues_custom[card]
room.playLines dialogues.dialogues_custom[card][Math.floor(Math.random() * dialogues.dialogues_custom[card].length)]
client.playLines dialogues.dialogues_custom[card][Math.floor(Math.random() * dialogues.dialogues_custom[card].length)]
if ygopro.constants.MSG[msg] == 'POS_CHANGE'
loc = buffer.readUInt8(6)
ppos = buffer.readUInt8(8)
......@@ -3944,7 +3949,7 @@ if true
response.end(addCallback(u.query.callback, "Unauthorized."))
return
else
ret_keys = JSON.stringify(await dataMager.getVipKeys(parseInt(u.query.keytype)), null, 2)
ret_keys = JSON.stringify(await dataManager.getVipKeys(if u.query.keytype then parseInt(u.query.keytype) else undefined), null, 2)
response.writeHead(200)
response.end(addCallback(u.query.callback, ret_keys))
......
......@@ -2594,6 +2594,16 @@
CLIENT_kick(client);
return;
}
client.playLines = function(lines) {
var j, len, line, ref, results;
ref = _.lines(lines);
results = [];
for (j = 0, len = ref.length; j < len; j++) {
line = ref[j];
results.push(ygopro.stoc_send_chat(client, line, ygopro.constants.COLORS.PINK));
}
return results;
};
if (settings.modules.cloud_replay.enabled) {
client.open_cloud_replay = async function(replay) {
var buffer, e, replay_buffer;
......@@ -2791,7 +2801,7 @@
});
ygopro.ctos_follow('JOIN_GAME', true, async function(buffer, info, client, server, datas) {
var available_logs, check_buffer_indentity, create_room_with_action, duelLog, exactBan, index, j, l, len, len1, len2, len3, m, n, name, pre_room, recover_match, ref, ref1, replay, replay_id, replays, room, struct;
var available_logs, check_buffer_indentity, create_room_with_action, duelLog, exactBan, index, j, l, len, len1, len2, len3, m, n, name, playWords, pre_room, recover_match, ref, ref1, replay, replay_id, replays, room, struct;
//log.info info
info.pass = info.pass.trim();
client.pass = info.pass;
......@@ -2869,7 +2879,7 @@
return (checksum & 0xFF) === 0;
};
create_room_with_action = async function(buffer, decrypted_buffer, match_permit) {
var action, len2, len3, m, n, name, opt1, opt2, opt3, options, player, ref, ref1, room, room_title, title;
var action, len2, len3, m, n, name, opt1, opt2, opt3, options, playWords, player, ref, ref1, room, room_title, title;
if (client.closed) {
return;
}
......@@ -2997,9 +3007,9 @@
client.rid = _.indexOf(ROOM_all, room);
client.is_post_watcher = true;
if (settings.modules.vip.enabled && (await CLIENT_check_vip(client))) {
words = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (words) {
room.playLines(words);
playWords = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (playWords) {
room.playLines(playWords);
}
} else if (settings.modules.words.enabled && words.words[client.name]) {
room.playLines(words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]);
......@@ -3167,7 +3177,7 @@
});
}
}, async function(err, datas) {
var create_room_name, found, k, len3, len4, match, n, o, player, ref1, ref2, ref3, ref4, user;
var create_room_name, found, k, len3, len4, match, n, o, playWords, player, ref1, ref2, ref3, ref4, user;
if (client.closed) {
return;
}
......@@ -3226,9 +3236,9 @@
client.rid = _.indexOf(ROOM_all, room);
client.is_post_watcher = true;
if (settings.modules.vip.enabled && (await CLIENT_check_vip(client))) {
words = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (words) {
room.playLines(words);
playWords = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (playWords) {
room.playLines(playWords);
}
} else if (settings.modules.words.enabled && words.words[client.name]) {
room.playLines(words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]);
......@@ -3322,9 +3332,9 @@
client.rid = _.indexOf(ROOM_all, room);
client.is_post_watcher = true;
if (settings.modules.vip.enabled && (await CLIENT_check_vip(client))) {
words = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (words) {
room.playLines(words);
playWords = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (playWords) {
room.playLines(playWords);
}
} else if (settings.modules.words.enabled && words.words[client.name]) {
room.playLines(words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]);
......@@ -3351,7 +3361,7 @@
});
ygopro.stoc_follow('JOIN_GAME', false, async function(buffer, info, client, server, datas) {
var j, len, player, recorder, ref, room, watcher;
var j, len, playWords, player, recorder, ref, room, watcher;
//欢迎信息
room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) {
......@@ -3361,9 +3371,9 @@
room.join_game_buffer = buffer;
}
if (settings.modules.vip.enabled && (await CLIENT_check_vip(client))) {
words = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (words) {
room.playLines(words);
playWords = (await dataManager.getUserWords(CLIENT_get_authorize_key(client)));
if (playWords) {
room.playLines(playWords);
}
} else if (settings.modules.words.enabled && words.words[client.name]) {
room.playLines(words.words[client.name][Math.floor(Math.random() * words.words[client.name].length)]);
......@@ -3562,6 +3572,9 @@
client.retry_count = 0;
client.last_game_msg = null;
}
if (client.pos < 3 && settings.modules.vip.enabled && (await CLIENT_check_vip(client))) {
client.victory_words = (await dataManager.getUserVictoryWords(CLIENT_get_authorize_key(client)));
}
}
//ygopro.stoc_send_chat_to_room(room, "LP跟踪调试信息: #{client.name} 初始LP #{client.lp}")
if (ygopro.constants.MSG[msg] === 'HINT') {
......@@ -3654,11 +3667,10 @@
}
for (l = 0, len1 = victoryWordPlayerList.length; l < len1; l++) {
player = victoryWordPlayerList[l];
if (!((await CLIENT_check_vip(player)) && (await dataManager.getUserVictoryWords(CLIENT_get_authorize_key(player))))) {
if (!player.victory_words) {
continue;
}
words = (await dataManager.getUserVictoryWords(CLIENT_get_authorize_key(player)));
room.playLines(words);
room.playLines(player.victory_words);
break;
}
}
......@@ -3846,13 +3858,13 @@
}
if (ygopro.constants.MSG[msg] !== 'CHAINING' || (trigger_location & 0x8) && client.ready_trap) {
if (settings.modules.vip.enabled && (await CLIENT_check_vip(room.dueling_players[act_pos])) && (await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos]), card))) {
room.playLines((await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos]), card)));
client.playLines((await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos]), card)));
} else if (settings.modules.vip.enabled && room.hostinfo.mode === 2 && (await CLIENT_check_vip(room.dueling_players[act_pos + 1])) && (await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos + 1]), card))) {
room.playLines((await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos + 1]), card)));
client.playLines((await dataManager.getUserDialogueText(CLIENT_get_authorize_key(room.dueling_players[act_pos + 1]), card)));
} else if (settings.modules.dialogues.enabled && dialogues.dialogues[card]) {
room.playLines(dialogues.dialogues[card][Math.floor(Math.random() * dialogues.dialogues[card].length)]);
client.playLines(dialogues.dialogues[card][Math.floor(Math.random() * dialogues.dialogues[card].length)]);
} else if (settings.modules.dialogues.enabled && dialogues.dialogues_custom[card]) {
room.playLines(dialogues.dialogues_custom[card][Math.floor(Math.random() * dialogues.dialogues_custom[card].length)]);
client.playLines(dialogues.dialogues_custom[card][Math.floor(Math.random() * dialogues.dialogues_custom[card].length)]);
}
}
}
......@@ -5301,7 +5313,7 @@
response.end(addCallback(u.query.callback, "Unauthorized."));
return;
} else {
ret_keys = JSON.stringify((await dataMager.getVipKeys(parseInt(u.query.keytype))), null, 2);
ret_keys = JSON.stringify((await dataManager.getVipKeys(u.query.keytype ? parseInt(u.query.keytype) : void 0)), null, 2);
response.writeHead(200);
response.end(addCallback(u.query.callback, ret_keys));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment