Commit d36b98eb authored by nanahira's avatar nanahira

Merge branch 'master' of https://github.com/moecube/srvpro into mc

parents 702b3eb1 8757cd68
......@@ -11,9 +11,10 @@ config.user.bak
/config
/ygopro
/windbot
/decks/
/decks
/decks_save*
/node_modules/
/replays
/node_modules
/ssl
/ygosrv233
......
{
"name": "ygopro-server",
"name": "srvpro",
"version": "2.3.3",
"description": "a server for ygopro",
"repository": "github:mycard/ygopro-server",
"repository": "github:mycard/srvpro",
"keywords": [
"mycard",
"ygopro",
"srvpro",
"server"
],
"author": "zh99998 <zh99998@gmail.com>, mercury233 <me@mercury233.me>",
"dependencies": {
"bunyan": "latest",
"deepmerge": "latest",
"load-json-file": "latest",
"moment": "latest",
"request": "latest",
"underscore": "latest",
......
......@@ -8,8 +8,9 @@
*/
var sqlite3 = require('sqlite3').verbose();
var fs = require('fs');
var config = require('./config/deckstats.json'); //{ "deckpath": "../decks", "dbfile": "cards.cdb" }
var constants = require('./data/constants.json');
var loadJSON = require('load-json-file').sync;
var config = loadJSON('./config/deckstats.json'); //{ "deckpath": "../decks", "dbfile": "cards.cdb" }
var constants = loadJSON('./data/constants.json');
var ALL_MAIN_CARDS={};
var ALL_SIDE_CARDS={};
......
......@@ -15,16 +15,19 @@ var spawn = require('child_process').spawn;
var url = require('url');
var moment = require('moment');
moment.locale('zh-cn');
var loadJSON = require('load-json-file').sync;
var constants = require('./data/constants.json');
var constants = loadJSON('./data/constants.json');
var settings = require('./config/config.json');
var settings = loadJSON('./config/config.json');
config=settings.modules.pre_util;
//全卡HTML列表
var cardHTMLs=[];
//http长连接
var responder;
//URL里的更新时间戳
var dataver = moment().format("YYYYMMDDHHmmss");
//输出反馈信息,如有http长连接则输出到http,否则输出到控制台
var sendResponse = function(text) {
......@@ -186,6 +189,7 @@ var loadDb = function(db_file) {
sendResponse(db_file + ":" + err);
}
else {
dataver = moment().format("YYYYMMDDHHmmss");
sendResponse("已加载数据库"+db_file+",共"+num+"张卡。");
}
});
......@@ -196,6 +200,8 @@ var writeToFile = function(message) {
var fileContent=fs.readFileSync(config.html_path+config.html_filename, {"encoding":"utf-8"});
var newContent=cardHTMLs.join("\n");
fileContent=fileContent.replace(/<tbody class="auto-generated">[\w\W]*<\/tbody>/,'<tbody class="auto-generated">\n'+newContent+'\n</tbody>');
fileContent = fileContent.replace(/data-ygosrv233-download="(http.+)" href="http.+"/g, 'data-ygosrv233-download="$1" href="$1"');
fileContent = fileContent.replace(/href="(http.+)dataver/g, 'href="$1' + dataver);
if (message) {
message="<li>"+moment().format('L HH:mm')+"<ul><li>"+message.split("!换行符!").join("</li><li>")+"</li></ul></li>";
fileContent=fileContent.replace(/<ul class="auto-generated">/,'<ul class="auto-generated">\n'+message);
......@@ -250,12 +256,17 @@ var fetchDatas = function() {
//更新本地网页到服务器,异步
var pushDatas = function() {
if (config.cdn.enabled) {
uploadCDN(config.cdn.local, config.cdn.remote, function () {
uploadCDN(config.cdn.local, config.cdn.remote + "/" + dataver, function () {
uploadCDN(config.db_path + "pics", config.cdn.pics_remote + "pics", function () {
sendResponse("CDN上传全部完成。");
pushHTMLs();
});
});
}
}
var pushHTMLs = function() {
sendResponse("开始上传到网页。");
try {
execSync('git add --all .', { cwd: config.git_html_path, env: process.env });
execSync('git commit -m update-auto', { cwd: config.git_html_path, env: process.env });
......@@ -427,7 +438,7 @@ http.createServer(function (req, res) {
}
else if (u.pathname === '/api/push_datas') {
res.writeHead(200);
res.end(u.query.callback+'({"message":"开始上传到网页。"});');
res.end(u.query.callback+'({"message":"开始上传数据。"});');
pushDatas();
}
else if (u.pathname === '/api/write_to_file') {
......
......@@ -42,6 +42,8 @@ moment.locale('zh-cn', {
merge = require 'deepmerge'
loadJSON = require('load-json-file').sync
#heapdump = require 'heapdump'
# 配置
......@@ -49,7 +51,7 @@ merge = require 'deepmerge'
if not fs.existsSync('./config')
fs.mkdirSync('./config')
try
oldconfig=require('./config.user.json')
oldconfig=loadJSON('./config.user.json')
if oldconfig.tips
oldtips = {}
oldtips.file = './config/tips.json'
......@@ -90,7 +92,7 @@ try
log.info 'imported old config from config.user.json'
fs.renameSync('./config.user.json', './config.user.bak')
catch e
log.info e unless e.code == 'MODULE_NOT_FOUND'
log.info e unless e.code == 'ENOENT'
setting_save = (settings) ->
fs.writeFileSync(settings.file, JSON.stringify(settings, null, 2))
......@@ -113,37 +115,37 @@ setting_change = (settings, path, val) ->
return
# 读取配置
default_config = require('./data/default_config.json')
default_config = loadJSON('./data/default_config.json')
try
config = require('./config/config.json')
config = loadJSON('./config/config.json')
catch
config = {}
settings = global.settings = merge(default_config, config, { arrayMerge: (destination, source) -> source })
# 读取数据
default_data = require('./data/default_data.json')
default_data = loadJSON('./data/default_data.json')
try
tips = require('./config/tips.json')
tips = loadJSON('./config/tips.json')
catch
tips = default_data.tips
setting_save(tips)
try
dialogues = require('./config/dialogues.json')
dialogues = loadJSON('./config/dialogues.json')
catch
dialogues = default_data.dialogues
setting_save(dialogues)
try
badwords = require('./config/badwords.json')
badwords = loadJSON('./config/badwords.json')
catch
badwords = default_data.badwords
setting_save(badwords)
try
duel_log = require('./config/duel_log.json')
duel_log = loadJSON('./config/duel_log.json')
catch
duel_log = default_data.duel_log
setting_save(duel_log)
try
chat_color = require('./config/chat_color.json')
chat_color = loadJSON('./config/chat_color.json')
catch
chat_color = default_data.chat_color
setting_save(chat_color)
......@@ -170,7 +172,7 @@ if settings.modules.cloud_replay.enabled
return
if settings.modules.windbot.enabled
windbots = require(settings.modules.windbot.botlist).windbots
windbots = loadJSON(settings.modules.windbot.botlist).windbots
# 组件
ygopro = require './ygopro.js'
......@@ -1401,6 +1403,7 @@ ygopro.stoc_follow 'GAME_MSG', false, (buffer, info, client, server)->
pos = pos * 2 if pos >= 0 and room.hostinfo.mode == 2
val = buffer.readInt32LE(2)
room.dueling_players[pos].lp -= val
room.dueling_players[pos].lp = 0 if room.dueling_players[pos].lp < 0
if 0 < room.dueling_players[pos].lp <= 100
ygopro.stoc_send_chat_to_room(room, "${lp_low_opponent}", ygopro.constants.COLORS.PINK)
......@@ -1424,6 +1427,7 @@ ygopro.stoc_follow 'GAME_MSG', false, (buffer, info, client, server)->
pos = pos * 2 if pos >= 0 and room.hostinfo.mode == 2
val = buffer.readInt32LE(2)
room.dueling_players[pos].lp -= val
room.dueling_players[pos].lp = 0 if room.dueling_players[pos].lp < 0
if 0 < room.dueling_players[pos].lp <= 100
ygopro.stoc_send_chat_to_room(room, "${lp_low_self}", ygopro.constants.COLORS.PINK)
......@@ -1904,14 +1908,12 @@ ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server)->
return unless room and pid < 4 and settings.modules.chat_color.enabled
if room.started and room.turn > 0 and !room.dueling_players[0].is_first
if room.hostinfo.mode == 2
if pid == 0
pid = 2
else if pid = 1
pid = 3
else if pid = 2
pid = 0
else if pid = 3
pid = 1
pid = {
0: 2,
1: 3,
2: 0,
3: 1
}[pid]
else
pid = 1 - pid
for player in room.players when player and player.pos == pid
......
// Generated by CoffeeScript 1.12.7
(function() {
var Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_players_banned, ROOM_players_oppentlist, ROOM_unwelcome, ROOM_validate, Room, _, addCallback, badwords, ban_user, bunyan, chat_color, config, cppversion, crypto, date, default_config, default_data, dialogues, duel_log, e, exec, execFile, fs, geoip, get_memory_usage, http, http_server, https, https_server, lflists, list, load_dialogues, load_tips, log, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, options, os, path, pgClient, pg_client, pg_query, redis, redisdb, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, tips, url, users_cache, wait_room_start, wait_room_start_arena, windbot_bin, windbot_parameters, windbot_process, windbots, ygopro, zlib;
var Cloud_replay_ids, ROOM_all, ROOM_bad_ip, ROOM_ban_player, ROOM_connected_ip, ROOM_find_by_name, ROOM_find_by_port, ROOM_find_by_title, ROOM_find_or_create_ai, ROOM_find_or_create_by_name, ROOM_find_or_create_random, ROOM_players_banned, ROOM_players_oppentlist, ROOM_unwelcome, ROOM_validate, Room, _, addCallback, badwords, ban_user, bunyan, chat_color, config, cppversion, crypto, date, default_config, default_data, dialogues, duel_log, e, exec, execFile, fs, geoip, get_memory_usage, http, http_server, https, https_server, lflists, list, loadJSON, load_dialogues, load_tips, log, memory_usage, merge, moment, net, oldbadwords, oldconfig, olddialogues, oldduellog, oldtips, options, os, path, pgClient, pg_client, pg_query, redis, redisdb, report_to_big_brother, request, requestListener, roomlist, setting_change, setting_save, settings, spawn, spawnSync, tips, url, users_cache, wait_room_start, wait_room_start_arena, windbot_bin, windbot_parameters, windbot_process, windbots, ygopro, zlib;
net = require('net');
......@@ -60,12 +60,14 @@
merge = require('deepmerge');
loadJSON = require('load-json-file').sync;
if (!fs.existsSync('./config')) {
fs.mkdirSync('./config');
}
try {
oldconfig = require('./config.user.json');
oldconfig = loadJSON('./config.user.json');
if (oldconfig.tips) {
oldtips = {};
oldtips.file = './config/tips.json';
......@@ -115,7 +117,7 @@
fs.renameSync('./config.user.json', './config.user.bak');
} catch (error1) {
e = error1;
if (e.code !== 'MODULE_NOT_FOUND') {
if (e.code !== 'ENOENT') {
log.info(e);
}
}
......@@ -144,10 +146,10 @@
setting_save(settings);
};
default_config = require('./data/default_config.json');
default_config = loadJSON('./data/default_config.json');
try {
config = require('./config/config.json');
config = loadJSON('./config/config.json');
} catch (error1) {
config = {};
}
......@@ -158,38 +160,38 @@
}
});
default_data = require('./data/default_data.json');
default_data = loadJSON('./data/default_data.json');
try {
tips = require('./config/tips.json');
tips = loadJSON('./config/tips.json');
} catch (error1) {
tips = default_data.tips;
setting_save(tips);
}
try {
dialogues = require('./config/dialogues.json');
dialogues = loadJSON('./config/dialogues.json');
} catch (error1) {
dialogues = default_data.dialogues;
setting_save(dialogues);
}
try {
badwords = require('./config/badwords.json');
badwords = loadJSON('./config/badwords.json');
} catch (error1) {
badwords = default_data.badwords;
setting_save(badwords);
}
try {
duel_log = require('./config/duel_log.json');
duel_log = loadJSON('./config/duel_log.json');
} catch (error1) {
duel_log = default_data.duel_log;
setting_save(duel_log);
}
try {
chat_color = require('./config/chat_color.json');
chat_color = loadJSON('./config/chat_color.json');
} catch (error1) {
chat_color = default_data.chat_color;
setting_save(chat_color);
......@@ -234,7 +236,7 @@
}
if (settings.modules.windbot.enabled) {
windbots = require(settings.modules.windbot.botlist).windbots;
windbots = loadJSON(settings.modules.windbot.botlist).windbots;
}
ygopro = require('./ygopro.js');
......@@ -1689,6 +1691,9 @@
}
val = buffer.readInt32LE(2);
room.dueling_players[pos].lp -= val;
if (room.dueling_players[pos].lp < 0) {
room.dueling_players[pos].lp = 0;
}
if ((0 < (ref = room.dueling_players[pos].lp) && ref <= 100)) {
ygopro.stoc_send_chat_to_room(room, "${lp_low_opponent}", ygopro.constants.COLORS.PINK);
}
......@@ -1725,6 +1730,9 @@
}
val = buffer.readInt32LE(2);
room.dueling_players[pos].lp -= val;
if (room.dueling_players[pos].lp < 0) {
room.dueling_players[pos].lp = 0;
}
if ((0 < (ref1 = room.dueling_players[pos].lp) && ref1 <= 100)) {
ygopro.stoc_send_chat_to_room(room, "${lp_low_self}", ygopro.constants.COLORS.PINK);
}
......@@ -2401,15 +2409,12 @@
}
if (room.started && room.turn > 0 && !room.dueling_players[0].is_first) {
if (room.hostinfo.mode === 2) {
if (pid === 0) {
pid = 2;
} else if (pid = 1) {
pid = 3;
} else if (pid = 2) {
pid = 0;
} else if (pid = 3) {
pid = 1;
}
pid = {
0: 2,
1: 3,
2: 0,
3: 1
}[pid];
} else {
pid = 1 - pid;
}
......
......@@ -14,8 +14,9 @@ var formidable = require('formidable');
var _ = require('underscore');
_.str = require('underscore.string');
_.mixin(_.str.exports());
var loadJSON = require('load-json-file').sync;
var settings = require('./config/config.json');
var settings = loadJSON('./config/config.json');
config=settings.modules.tournament_mode;
//http长连接
......
......@@ -16,10 +16,11 @@ var spawnSync = require('child_process').spawnSync;
var url = require('url');
var moment = require('moment');
moment.locale('zh-cn');
var loadJSON = require('load-json-file').sync;
var constants = require('./data/constants.json');
var constants = loadJSON('./data/constants.json');
var settings = require('./config/config.json');
var settings = loadJSON('./config/config.json');
config=settings.modules.update_util;
//全卡名称列表
......
......@@ -3,14 +3,15 @@ _.str = require 'underscore.string'
_.mixin(_.str.exports())
Struct = require('./struct.js').Struct
loadJSON = require('load-json-file').sync
i18ns = require './data/i18n.json'
i18ns = loadJSON './data/i18n.json'
#常量/类型声明
structs_declaration = require './data/structs.json' #结构体声明
typedefs = require './data/typedefs.json' #类型声明
@proto_structs = require './data/proto_structs.json' #消息与结构体的对应,未完成,对着duelclient.cpp加
@constants = require './data/constants.json' #network.h里定义的常量
structs_declaration = loadJSON './data/structs.json' #结构体声明
typedefs = loadJSON './data/typedefs.json' #类型声明
@proto_structs = loadJSON './data/proto_structs.json' #消息与结构体的对应,未完成,对着duelclient.cpp加
@constants = loadJSON './data/constants.json' #network.h里定义的常量
#结构体定义
@structs = {}
......
// Generated by CoffeeScript 1.12.7
(function() {
var Struct, _, declaration, field, i, i18ns, len, name, result, structs_declaration, type, typedefs;
var Struct, _, declaration, field, i, i18ns, len, loadJSON, name, result, structs_declaration, type, typedefs;
_ = require('underscore');
......@@ -10,15 +10,17 @@
Struct = require('./struct.js').Struct;
i18ns = require('./data/i18n.json');
loadJSON = require('load-json-file').sync;
structs_declaration = require('./data/structs.json');
i18ns = loadJSON('./data/i18n.json');
typedefs = require('./data/typedefs.json');
structs_declaration = loadJSON('./data/structs.json');
this.proto_structs = require('./data/proto_structs.json');
typedefs = loadJSON('./data/typedefs.json');
this.constants = require('./data/constants.json');
this.proto_structs = loadJSON('./data/proto_structs.json');
this.constants = loadJSON('./data/constants.json');
this.structs = {};
......
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