99 lines
3.6 KiB
TypeScript
99 lines
3.6 KiB
TypeScript
import DB from "../utils/DB";
|
|
import SKLogger from "../gear/SKLogger";
|
|
import {MsgCode} from "../role/EEnum";
|
|
import ItemUtil from "../core/ItemUtil";
|
|
import SKDateUtil from "../gear/SKDateUtil";
|
|
|
|
export default class Exchange {
|
|
roleId: number;
|
|
list: string[];
|
|
convert: any[];
|
|
|
|
constructor(roleId: number) {
|
|
this.roleId = roleId;
|
|
this.convert = [];
|
|
}
|
|
|
|
readDB() {
|
|
DB.getExchange(this.roleId, (list) => {
|
|
this.list = list;
|
|
})
|
|
}
|
|
|
|
// 是否已兑换
|
|
hasCode(msg: string): boolean {
|
|
for (let code of this.list) {
|
|
if (msg == code) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// 检查是否有兑换- 需要优化
|
|
checkCode(msg: string, player: any): any {
|
|
if (!msg || msg.length < 1) {
|
|
return null;
|
|
}
|
|
if (this.hasCode(msg)) {
|
|
return null;
|
|
}
|
|
player.exchange.list.push(msg);
|
|
let callback = (ret: any, rows: any) => {
|
|
if (ret == MsgCode.SUCCESS) {
|
|
for (let i = 0; i < rows.length; i++) {
|
|
this.convert.push({
|
|
code: rows[i].code,
|
|
reward: rows[i].reward,
|
|
start: rows[i].start,
|
|
end: rows[i].end
|
|
})
|
|
}
|
|
let data = this.convert
|
|
for (let key in data) {
|
|
let item = data[key];
|
|
if (item.code == msg) {
|
|
if (item) {
|
|
let params = item.reward.split(",");
|
|
let hasReward = false;
|
|
for (let temp of params) {
|
|
let itemParams = temp.split(":");
|
|
let itemId = itemParams[0];
|
|
let itemData = ItemUtil.getItemData(itemId);
|
|
if (!itemData) {
|
|
continue;
|
|
}
|
|
let start = item.start ? item.start : "";
|
|
let end = item.end ? item.end : "";
|
|
let atRange = SKDateUtil.atRange(start, end);
|
|
if (!atRange) {
|
|
player.send_notice(`您的兑换码[${msg}]不在有效期内!`);
|
|
return;
|
|
}
|
|
hasReward = true;
|
|
let itemCount = itemParams[1];
|
|
player.addItem(itemId, itemCount, true, `您通过兑换码[${msg}]获得${itemData.name}${itemCount}个`);
|
|
}
|
|
if (hasReward) {
|
|
DB.saveExchange(player.roleid, msg, (code, msg) => {
|
|
if (code == 0) {
|
|
SKLogger.debug(msg);
|
|
} else {
|
|
SKLogger.warn(msg);
|
|
}
|
|
});
|
|
}
|
|
player.send('s2c_convert', {
|
|
reward: item.reward
|
|
});
|
|
} else {
|
|
player.send_notice(`激活失败,此码错误或已过期!`);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
callback = null;
|
|
}
|
|
DB.checkCod(msg, callback);
|
|
}
|
|
} |