Commit 9494c3c6 authored by nanahira's avatar nanahira

Merge branch 'mc'

parents 5b108161 160c8f96
...@@ -27,6 +27,20 @@ class Handler { ...@@ -27,6 +27,20 @@ class Handler {
class YGOProMessagesHelper { class YGOProMessagesHelper {
constructor() { constructor() {
this.handlers = {
STOC: [{},
{},
{},
{},
{},
],
CTOS: [{},
{},
{},
{},
{},
]
}
this.initDatas(); this.initDatas();
this.initStructs(); this.initStructs();
} }
...@@ -39,6 +53,7 @@ class YGOProMessagesHelper { ...@@ -39,6 +53,7 @@ class YGOProMessagesHelper {
} }
initStructs() { initStructs() {
this.structs = {};
for (let name in this.structs_declaration ) { for (let name in this.structs_declaration ) {
const declaration = this.structs_declaration [name]; const declaration = this.structs_declaration [name];
let result = Struct(); let result = Struct();
...@@ -232,20 +247,4 @@ class YGOProMessagesHelper { ...@@ -232,20 +247,4 @@ class YGOProMessagesHelper {
} }
YGOProMessagesHelper.prototype.structs = {}
YGOProMessagesHelper.prototype.handlers = {
STOC: [{},
{},
{},
{},
{},
],
CTOS: [{},
{},
{},
{},
{},
]
}
module.exports = YGOProMessagesHelper; module.exports = YGOProMessagesHelper;
...@@ -1989,7 +1989,7 @@ ygopro.ctos_follow 'PLAYER_INFO', true, (buffer, info, client, server, datas)-> ...@@ -1989,7 +1989,7 @@ ygopro.ctos_follow 'PLAYER_INFO', true, (buffer, info, client, server, datas)->
else else
#log.info("Not in map", geo.country, client.name, client.ip) #log.info("Not in map", geo.country, client.name, client.ip)
client.lang=settings.modules.i18n.fallback client.lang=settings.modules.i18n.fallback
return false await return false
ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
#log.info info #log.info info
...@@ -2494,7 +2494,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)-> ...@@ -2494,7 +2494,7 @@ ygopro.ctos_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
client.setTimeout(300000) #连接后超时5分钟 client.setTimeout(300000) #连接后超时5分钟
client.rid = _.indexOf(ROOM_all, room) client.rid = _.indexOf(ROOM_all, room)
room.connect(client) room.connect(client)
return await return
ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
#欢迎信息 #欢迎信息
...@@ -2577,7 +2577,7 @@ ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)-> ...@@ -2577,7 +2577,7 @@ ygopro.stoc_follow 'JOIN_GAME', false, (buffer, info, client, server, datas)->
watcher.on 'error', (error)-> watcher.on 'error', (error)->
log.error "watcher error", error log.error "watcher error", error
return return
return await return
# 登场台词 # 登场台词
load_words = global.load_words = (callback) -> load_words = global.load_words = (callback) ->
...@@ -2615,7 +2615,7 @@ load_dialogues = global.load_dialogues = (callback) -> ...@@ -2615,7 +2615,7 @@ load_dialogues = global.load_dialogues = (callback) ->
if callback if callback
callback(error, body) callback(error, body)
return return
return await return
load_dialogues_custom = global.load_dialogues_custom = (callback) -> load_dialogues_custom = global.load_dialogues_custom = (callback) ->
request request
...@@ -2938,7 +2938,7 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server, datas)-> ...@@ -2938,7 +2938,7 @@ ygopro.stoc_follow 'GAME_MSG', true, (buffer, info, client, server, datas)->
room.recover_buffers[client.pos].push(buffer) room.recover_buffers[client.pos].push(buffer)
return true return true
return false await return false
#房间管理 #房间管理
ygopro.ctos_follow 'HS_TOOBSERVER', true, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'HS_TOOBSERVER', true, (buffer, info, client, server, datas)->
...@@ -2953,7 +2953,7 @@ ygopro.ctos_follow 'HS_TOOBSERVER', true, (buffer, info, client, server, datas)- ...@@ -2953,7 +2953,7 @@ ygopro.ctos_follow 'HS_TOOBSERVER', true, (buffer, info, client, server, datas)-
if player == client if player == client
ygopro.stoc_send_chat(client, "${cannot_to_observer}", ygopro.constants.COLORS.BABYBLUE) ygopro.stoc_send_chat(client, "${cannot_to_observer}", ygopro.constants.COLORS.BABYBLUE)
return true return true
return false await return false
ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -2971,7 +2971,7 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server, datas)-> ...@@ -2971,7 +2971,7 @@ ygopro.ctos_follow 'HS_KICK', true, (buffer, info, client, server, datas)->
CLIENT_kick(client) CLIENT_kick(client)
return true return true
ygopro.stoc_send_chat_to_room(room, "#{player.name} ${kicked_by_player}", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{player.name} ${kicked_by_player}", ygopro.constants.COLORS.RED)
return false await return false
ygopro.stoc_follow 'TYPE_CHANGE', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'TYPE_CHANGE', true, (buffer, info, client, server, datas)->
selftype = info.type & 0xf selftype = info.type & 0xf
...@@ -2982,7 +2982,7 @@ ygopro.stoc_follow 'TYPE_CHANGE', true, (buffer, info, client, server, datas)-> ...@@ -2982,7 +2982,7 @@ ygopro.stoc_follow 'TYPE_CHANGE', true, (buffer, info, client, server, datas)->
client.is_host = is_host client.is_host = is_host
client.pos = selftype client.pos = selftype
#console.log "TYPE_CHANGE to #{client.name}:", info, selftype, is_host #console.log "TYPE_CHANGE to #{client.name}:", info, selftype, is_host
return false await return false
ygopro.stoc_follow 'HS_PLAYER_ENTER', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'HS_PLAYER_ENTER', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -2993,7 +2993,7 @@ ygopro.stoc_follow 'HS_PLAYER_ENTER', true, (buffer, info, client, server, datas ...@@ -2993,7 +2993,7 @@ ygopro.stoc_follow 'HS_PLAYER_ENTER', true, (buffer, info, client, server, datas
struct._setBuff(buffer) struct._setBuff(buffer)
struct.set("name", "********") struct.set("name", "********")
buffer = struct.buffer buffer = struct.buffer
return false await return false
ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3039,10 +3039,10 @@ ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server, dat ...@@ -3039,10 +3039,10 @@ ygopro.stoc_follow 'HS_PLAYER_CHANGE', false, (buffer, info, client, server, dat
if room.ready_player_count_without_host >= room.max_player - 1 if room.ready_player_count_without_host >= room.max_player - 1
#log.info "all ready" #log.info "all ready"
setTimeout (()-> wait_room_start(ROOM_all[client.rid], settings.modules.random_duel.ready_time);return), 1000 setTimeout (()-> wait_room_start(ROOM_all[client.rid], settings.modules.random_duel.ready_time);return), 1000
return await return
ygopro.ctos_follow 'REQUEST_FIELD', true, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'REQUEST_FIELD', true, (buffer, info, client, server, datas)->
return true await return true
ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3054,7 +3054,7 @@ ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server, datas)-> ...@@ -3054,7 +3054,7 @@ ygopro.stoc_follow 'FIELD_FINISH', true, (buffer, info, client, server, datas)->
if client.last_hint_msg if client.last_hint_msg
ygopro.stoc_send(client, 'GAME_MSG', client.last_hint_msg) ygopro.stoc_send(client, 'GAME_MSG', client.last_hint_msg)
ygopro.stoc_send(client, 'GAME_MSG', client.last_game_msg) ygopro.stoc_send(client, 'GAME_MSG', client.last_game_msg)
return true await return true
ygopro.stoc_follow 'DUEL_END', false, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'DUEL_END', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3067,6 +3067,7 @@ ygopro.stoc_follow 'DUEL_END', false, (buffer, info, client, server, datas)-> ...@@ -3067,6 +3067,7 @@ ygopro.stoc_follow 'DUEL_END', false, (buffer, info, client, server, datas)->
CLIENT_send_replays(player, room) CLIENT_send_replays(player, room)
for player in room.watchers when player for player in room.watchers when player
CLIENT_send_replays(player, room) CLIENT_send_replays(player, room)
await return
wait_room_start = (room, time)-> wait_room_start = (room, time)->
if room and room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.ready_player_count_without_host >= room.max_player - 1 if room and room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.ready_player_count_without_host >= room.max_player - 1
...@@ -3081,7 +3082,7 @@ wait_room_start = (room, time)-> ...@@ -3081,7 +3082,7 @@ wait_room_start = (room, time)->
ROOM_ban_player(player.name, player.ip, "${random_ban_reason_zombie}") ROOM_ban_player(player.name, player.ip, "${random_ban_reason_zombie}")
ygopro.stoc_send_chat_to_room(room, "#{player.name} ${kicked_by_system}", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{player.name} ${kicked_by_system}", ygopro.constants.COLORS.RED)
CLIENT_kick(player) CLIENT_kick(player)
return await return
wait_room_start_arena = (room)-> wait_room_start_arena = (room)->
if room and room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.waiting_for_player if room and room.duel_stage == ygopro.constants.DUEL_STAGE.BEGIN and room.waiting_for_player
...@@ -3097,7 +3098,7 @@ wait_room_start_arena = (room)-> ...@@ -3097,7 +3098,7 @@ wait_room_start_arena = (room)->
if room.waiting_for_player_interval if room.waiting_for_player_interval
clearInterval room.waiting_for_player_interval clearInterval room.waiting_for_player_interval
room.waiting_for_player_interval = null room.waiting_for_player_interval = null
return await return
#tip #tip
ygopro.stoc_send_random_tip = (client)-> ygopro.stoc_send_random_tip = (client)->
...@@ -3106,14 +3107,14 @@ ygopro.stoc_send_random_tip = (client)-> ...@@ -3106,14 +3107,14 @@ ygopro.stoc_send_random_tip = (client)->
tip_type = "tips_zh" tip_type = "tips_zh"
if settings.modules.tips.enabled && tips.tips.length && !client.is_local && !client.closed if settings.modules.tips.enabled && tips.tips.length && !client.is_local && !client.closed
ygopro.stoc_send_chat(client, "Tip: " + tips[tip_type][Math.floor(Math.random() * tips[tip_type].length)]) ygopro.stoc_send_chat(client, "Tip: " + tips[tip_type][Math.floor(Math.random() * tips[tip_type].length)])
return await return
ygopro.stoc_send_random_tip_to_room = (room)-> ygopro.stoc_send_random_tip_to_room = (room)->
if settings.modules.tips.enabled && tips.tips.length if settings.modules.tips.enabled && tips.tips.length
for player in room.players when player and !player.is_local and !player.closed for player in room.players when player and !player.is_local and !player.closed
ygopro.stoc_send_random_tip(player) ygopro.stoc_send_random_tip(player)
for player in room.watchers when player and !player.is_local and !player.closed for player in room.watchers when player and !player.is_local and !player.closed
ygopro.stoc_send_random_tip(player) ygopro.stoc_send_random_tip(player)
return await return
load_tips = global.load_tips = (callback)-> load_tips = global.load_tips = (callback)->
request request
...@@ -3130,7 +3131,7 @@ load_tips = global.load_tips = (callback)-> ...@@ -3130,7 +3131,7 @@ load_tips = global.load_tips = (callback)->
if callback if callback
callback(error, body) callback(error, body)
return return
return await return
load_tips_zh = global.load_tips_zh = (callback)-> load_tips_zh = global.load_tips_zh = (callback)->
request request
...@@ -3147,7 +3148,7 @@ load_tips_zh = global.load_tips_zh = (callback)-> ...@@ -3147,7 +3148,7 @@ load_tips_zh = global.load_tips_zh = (callback)->
if callback if callback
callback(error, body) callback(error, body)
return return
return await return
if settings.modules.tips.enabled and settings.modules.tips.get if settings.modules.tips.enabled and settings.modules.tips.get
load_tips() load_tips()
...@@ -3231,7 +3232,7 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server, datas)-> ...@@ -3231,7 +3232,7 @@ ygopro.stoc_follow 'DUEL_START', false, (buffer, info, client, server, datas)->
#log.info 'DECK POST OK', response.statusCode, client.name, body #log.info 'DECK POST OK', response.statusCode, client.name, body
return return
client.deck_saved = true client.deck_saved = true
return await return
ygopro.ctos_follow 'SURRENDER', true, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'SURRENDER', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3250,7 +3251,7 @@ ygopro.ctos_follow 'SURRENDER', true, (buffer, info, client, server, datas)-> ...@@ -3250,7 +3251,7 @@ ygopro.ctos_follow 'SURRENDER', true, (buffer, info, client, server, datas)->
ygopro.stoc_send_chat(client, "${surrender_confirm_sent}", ygopro.constants.COLORS.BABYBLUE) ygopro.stoc_send_chat(client, "${surrender_confirm_sent}", ygopro.constants.COLORS.BABYBLUE)
sur_player.surrend_confirm = true sur_player.surrend_confirm = true
return true return true
return false await return false
report_to_big_brother = global.report_to_big_brother = (roomname, sender, ip, level, content, match) -> report_to_big_brother = global.report_to_big_brother = (roomname, sender, ip, level, content, match) ->
return unless settings.modules.big_brother.enabled return unless settings.modules.big_brother.enabled
...@@ -3271,7 +3272,7 @@ report_to_big_brother = global.report_to_big_brother = (roomname, sender, ip, le ...@@ -3271,7 +3272,7 @@ report_to_big_brother = global.report_to_big_brother = (roomname, sender, ip, le
#else #else
#log.info 'BIG BROTHER OK', response.statusCode, roomname, body #log.info 'BIG BROTHER OK', response.statusCode, roomname, body
return return
return await return
ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3531,7 +3532,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server, datas)-> ...@@ -3531,7 +3532,7 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server, datas)->
if client.abuse_count>=5 if client.abuse_count>=5
ygopro.stoc_send_chat_to_room(room, "#{client.name} ${chat_banned}", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat_to_room(room, "#{client.name} ${chat_banned}", ygopro.constants.COLORS.RED)
ROOM_ban_player(client.name, client.ip, "${random_ban_reason_abuse}") ROOM_ban_player(client.name, client.ip, "${random_ban_reason_abuse}")
return cancel await return cancel
ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)->
if settings.modules.reconnect.enabled and client.pre_reconnecting if settings.modules.reconnect.enabled and client.pre_reconnecting
...@@ -3632,13 +3633,13 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)-> ...@@ -3632,13 +3633,13 @@ ygopro.ctos_follow 'UPDATE_DECK', true, (buffer, info, client, server, datas)->
else else
#log.info("player deck not found: " + client.name) #log.info("player deck not found: " + client.name)
ygopro.stoc_send_chat(client, "#{client.name}${deck_not_found}", ygopro.constants.COLORS.RED) ygopro.stoc_send_chat(client, "#{client.name}${deck_not_found}", ygopro.constants.COLORS.RED)
return false await return false
ygopro.ctos_follow 'RESPONSE', false, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'RESPONSE', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
return unless room and (room.random_type or room.arena) return unless room and (room.random_type or room.arena)
room.last_active_time = moment() room.last_active_time = moment()
return await return
ygopro.stoc_follow 'TIME_LIMIT', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'TIME_LIMIT', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3678,7 +3679,7 @@ ygopro.stoc_follow 'TIME_LIMIT', true, (buffer, info, client, server, datas)-> ...@@ -3678,7 +3679,7 @@ ygopro.stoc_follow 'TIME_LIMIT', true, (buffer, info, client, server, datas)->
return unless settings.modules.heartbeat_detection.enabled and room.duel_stage == ygopro.constants.DUEL_STAGE.DUELING and !room.windbot return unless settings.modules.heartbeat_detection.enabled and room.duel_stage == ygopro.constants.DUEL_STAGE.DUELING and !room.windbot
if check if check
CLIENT_heartbeat_register(client, false) CLIENT_heartbeat_register(client, false)
return false await return false
ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3697,7 +3698,7 @@ ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server, datas)- ...@@ -3697,7 +3698,7 @@ ygopro.ctos_follow 'TIME_CONFIRM', false, (buffer, info, client, server, datas)-
client.heartbeat_protected = false client.heartbeat_protected = false
client.heartbeat_responsed = true client.heartbeat_responsed = true
CLIENT_heartbeat_unregister(client) CLIENT_heartbeat_unregister(client)
return await return
ygopro.ctos_follow 'HAND_RESULT', false, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'HAND_RESULT', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3707,7 +3708,7 @@ ygopro.ctos_follow 'HAND_RESULT', false, (buffer, info, client, server, datas)-> ...@@ -3707,7 +3708,7 @@ ygopro.ctos_follow 'HAND_RESULT', false, (buffer, info, client, server, datas)->
if client.pos == 0 if client.pos == 0
room.waiting_for_player = room.waiting_for_player2 room.waiting_for_player = room.waiting_for_player2
room.last_active_time = moment().subtract(settings.modules.random_duel.hang_timeout - 19, 's') room.last_active_time = moment().subtract(settings.modules.random_duel.hang_timeout - 19, 's')
return await return
ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server, datas)-> ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3716,7 +3717,7 @@ ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server, datas)-> ...@@ -3716,7 +3717,7 @@ ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server, datas)->
# room.selecting_tp = false # room.selecting_tp = false
return unless room.random_type or room.arena return unless room.random_type or room.arena
room.last_active_time = moment() room.last_active_time = moment()
return await return
ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3742,7 +3743,7 @@ ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server, datas)-> ...@@ -3742,7 +3743,7 @@ ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server, datas)->
msg: tplayer.name + ": " + info.msg msg: tplayer.name + ": " + info.msg
} }
return true return true
return await return
ygopro.stoc_follow 'SELECT_HAND', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'SELECT_HAND', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3762,12 +3763,12 @@ ygopro.stoc_follow 'SELECT_HAND', true, (buffer, info, client, server, datas)-> ...@@ -3762,12 +3763,12 @@ ygopro.stoc_follow 'SELECT_HAND', true, (buffer, info, client, server, datas)->
return true return true
else else
client.selected_preduel = false client.selected_preduel = false
return false await return false
ygopro.stoc_follow 'HAND_RESULT', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'HAND_RESULT', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
return false unless room return false unless room
return room.determine_firstgo await return room.determine_firstgo
ygopro.stoc_follow 'SELECT_TP', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'SELECT_TP', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3784,7 +3785,7 @@ ygopro.stoc_follow 'SELECT_TP', true, (buffer, info, client, server, datas)-> ...@@ -3784,7 +3785,7 @@ ygopro.stoc_follow 'SELECT_TP', true, (buffer, info, client, server, datas)->
else else
client.selected_preduel = false client.selected_preduel = false
room.selecting_tp = client room.selecting_tp = client
return false await return false
ygopro.stoc_follow 'CHANGE_SIDE', false, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'CHANGE_SIDE', false, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3832,7 +3833,7 @@ ygopro.stoc_follow 'CHANGE_SIDE', false, (buffer, info, client, server, datas)-> ...@@ -3832,7 +3833,7 @@ ygopro.stoc_follow 'CHANGE_SIDE', false, (buffer, info, client, server, datas)->
else else
room.waiting_for_player2 = client room.waiting_for_player2 = client
room.last_active_time = moment() room.last_active_time = moment()
return await return
ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)-> ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)->
room=ROOM_all[client.rid] room=ROOM_all[client.rid]
...@@ -3881,9 +3882,9 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)-> ...@@ -3881,9 +3882,9 @@ ygopro.stoc_follow 'REPLAY', true, (buffer, info, client, server, datas)->
) )
if settings.modules.cloud_replay.enabled and settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.replay_safe if settings.modules.cloud_replay.enabled and settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.replay_safe
ygopro.stoc_send_chat(client, "${cloud_replay_delay_part1}R##{room.cloud_replay_id}${cloud_replay_delay_part2}", ygopro.constants.COLORS.BABYBLUE) ygopro.stoc_send_chat(client, "${cloud_replay_delay_part1}R##{room.cloud_replay_id}${cloud_replay_delay_part2}", ygopro.constants.COLORS.BABYBLUE)
return settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.block_replay_to_player or settings.modules.replay_delay and room.hostinfo.mode == 1 await return settings.modules.tournament_mode.enabled and settings.modules.tournament_mode.block_replay_to_player or settings.modules.replay_delay and room.hostinfo.mode == 1
else else
return settings.modules.replay_delay and room.hostinfo.mode == 1 await return settings.modules.replay_delay and room.hostinfo.mode == 1
if settings.modules.random_duel.enabled if settings.modules.random_duel.enabled
setInterval ()-> setInterval ()->
......
...@@ -2614,7 +2614,7 @@ ...@@ -2614,7 +2614,7 @@
// 功能模块 // 功能模块
// return true to cancel a synchronous message // return true to cancel a synchronous message
ygopro.ctos_follow('PLAYER_INFO', true, function(buffer, info, client, server, datas) { ygopro.ctos_follow('PLAYER_INFO', true, async function(buffer, info, client, server, datas) {
var geo, lang, name, name_full, struct, vpass; var geo, lang, name, name_full, struct, vpass;
// checkmate use username$password, but here don't // checkmate use username$password, but here don't
// so remove the password // so remove the password
...@@ -2685,7 +2685,7 @@ ...@@ -2685,7 +2685,7 @@
return false; return false;
}); });
ygopro.ctos_follow('JOIN_GAME', false, function(buffer, info, client, server, datas) { ygopro.ctos_follow('JOIN_GAME', false, async function(buffer, info, client, server, datas) {
var available_logs, check_buffer_indentity, create_room_with_action, len3, len4, len5, len6, line, n, name, o, p, pre_room, q, recover_match, ref4, ref5, ref6, ref7, replay_id, room; var available_logs, check_buffer_indentity, create_room_with_action, len3, len4, len5, len6, line, n, name, o, p, pre_room, q, recover_match, ref4, ref5, ref6, ref7, replay_id, room;
//log.info info //log.info info
info.pass = info.pass.trim(); info.pass = info.pass.trim();
...@@ -3283,7 +3283,7 @@ ...@@ -3283,7 +3283,7 @@
} }
}); });
ygopro.stoc_follow('JOIN_GAME', false, function(buffer, info, client, server, datas) { ygopro.stoc_follow('JOIN_GAME', false, async function(buffer, info, client, server, datas) {
var len3, len4, len5, line, n, o, p, player, recorder, ref4, ref5, ref6, room, watcher; var len3, len4, len5, line, n, o, p, player, recorder, ref4, ref5, ref6, room, watcher;
//欢迎信息 //欢迎信息
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
...@@ -3419,7 +3419,7 @@ ...@@ -3419,7 +3419,7 @@
load_words(); load_words();
} }
load_dialogues = global.load_dialogues = function(callback) { load_dialogues = global.load_dialogues = async function(callback) {
request({ request({
url: settings.modules.dialogues.get, url: settings.modules.dialogues.get,
json: true json: true
...@@ -3465,7 +3465,7 @@ ...@@ -3465,7 +3465,7 @@
load_dialogues_custom(); load_dialogues_custom();
} }
ygopro.stoc_follow('GAME_MSG', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('GAME_MSG', true, async function(buffer, info, client, server, datas) {
var act_pos, card, chain, check, count, cpos, deck_found, found, hint_type, i, id, len10, len11, len3, len4, len5, len6, len7, len8, len9, limbo_found, line, loc, max_loop, msg, n, o, oppo_pos, p, phase, player, playertype, pos, ppos, q, r, r_player, reason, ref10, ref11, ref12, ref13, ref14, ref4, ref5, ref6, ref7, ref8, ref9, room, s, t, trigger_location, val, win_pos, x, y, z; var act_pos, card, chain, check, count, cpos, deck_found, found, hint_type, i, id, len10, len11, len3, len4, len5, len6, len7, len8, len9, limbo_found, line, loc, max_loop, msg, n, o, oppo_pos, p, phase, player, playertype, pos, ppos, q, r, r_player, reason, ref10, ref11, ref12, ref13, ref14, ref4, ref5, ref6, ref7, ref8, ref9, room, s, t, trigger_location, val, win_pos, x, y, z;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) { if (!(room && !client.reconnecting)) {
...@@ -3884,7 +3884,7 @@ ...@@ -3884,7 +3884,7 @@
}); });
//房间管理 //房间管理
ygopro.ctos_follow('HS_TOOBSERVER', true, function(buffer, info, client, server, datas) { ygopro.ctos_follow('HS_TOOBSERVER', true, async function(buffer, info, client, server, datas) {
var len3, n, player, ref4, room; var len3, n, player, ref4, room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -3908,7 +3908,7 @@ ...@@ -3908,7 +3908,7 @@
return false; return false;
}); });
ygopro.ctos_follow('HS_KICK', true, function(buffer, info, client, server, datas) { ygopro.ctos_follow('HS_KICK', true, async function(buffer, info, client, server, datas) {
var len3, n, player, ref4, room; var len3, n, player, ref4, room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -3936,7 +3936,7 @@ ...@@ -3936,7 +3936,7 @@
return false; return false;
}); });
ygopro.stoc_follow('TYPE_CHANGE', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('TYPE_CHANGE', true, async function(buffer, info, client, server, datas) {
var is_host, selftype; var is_host, selftype;
selftype = info.type & 0xf; selftype = info.type & 0xf;
is_host = ((info.type >> 4) & 0xf) !== 0; is_host = ((info.type >> 4) & 0xf) !== 0;
...@@ -3949,7 +3949,7 @@ ...@@ -3949,7 +3949,7 @@
return false; return false;
}); });
ygopro.stoc_follow('HS_PLAYER_ENTER', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('HS_PLAYER_ENTER', true, async function(buffer, info, client, server, datas) {
var pos, room, struct; var pos, room, struct;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!(room && settings.modules.hide_name && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN)) { if (!(room && settings.modules.hide_name && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN)) {
...@@ -3965,7 +3965,7 @@ ...@@ -3965,7 +3965,7 @@
return false; return false;
}); });
ygopro.stoc_follow('HS_PLAYER_CHANGE', false, function(buffer, info, client, server, datas) { ygopro.stoc_follow('HS_PLAYER_CHANGE', false, async function(buffer, info, client, server, datas) {
var is_ready, len3, len4, n, o, p1, p2, player, pos, ref4, ref5, room; var is_ready, len3, len4, n, o, p1, p2, player, pos, ref4, ref5, room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!(room && room.max_player && client.is_host)) { if (!(room && room.max_player && client.is_host)) {
...@@ -4036,11 +4036,11 @@ ...@@ -4036,11 +4036,11 @@
} }
}); });
ygopro.ctos_follow('REQUEST_FIELD', true, function(buffer, info, client, server, datas) { ygopro.ctos_follow('REQUEST_FIELD', true, async function(buffer, info, client, server, datas) {
return true; return true;
}); });
ygopro.stoc_follow('FIELD_FINISH', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('FIELD_FINISH', true, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!(room && settings.modules.reconnect.enabled)) { if (!(room && settings.modules.reconnect.enabled)) {
...@@ -4058,8 +4058,8 @@ ...@@ -4058,8 +4058,8 @@
return true; return true;
}); });
ygopro.stoc_follow('DUEL_END', false, function(buffer, info, client, server, datas) { ygopro.stoc_follow('DUEL_END', false, async function(buffer, info, client, server, datas) {
var len3, len4, n, o, player, ref4, ref5, results, room; var len3, len4, n, o, player, ref4, ref5, room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!(room && settings.modules.replay_delay && room.hostinfo.mode === 1)) { if (!(room && settings.modules.replay_delay && room.hostinfo.mode === 1)) {
return; return;
...@@ -4076,18 +4076,16 @@ ...@@ -4076,18 +4076,16 @@
} }
} }
ref5 = room.watchers; ref5 = room.watchers;
results = [];
for (o = 0, len4 = ref5.length; o < len4; o++) { for (o = 0, len4 = ref5.length; o < len4; o++) {
player = ref5[o]; player = ref5[o];
if (player) { if (player) {
results.push(CLIENT_send_replays(player, room)); CLIENT_send_replays(player, room);
} }
} }
return results;
} }
}); });
wait_room_start = function(room, time) { wait_room_start = async function(room, time) {
var len3, n, player, ref4; var len3, n, player, ref4;
if (room && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.ready_player_count_without_host >= room.max_player - 1) { if (room && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.ready_player_count_without_host >= room.max_player - 1) {
time -= 1; time -= 1;
...@@ -4112,7 +4110,7 @@ ...@@ -4112,7 +4110,7 @@
} }
}; };
wait_room_start_arena = function(room) { wait_room_start_arena = async function(room) {
var display_name, len3, n, player, ref4; var display_name, len3, n, player, ref4;
if (room && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.waiting_for_player) { if (room && room.duel_stage === ygopro.constants.DUEL_STAGE.BEGIN && room.waiting_for_player) {
room.waiting_for_player_time = room.waiting_for_player_time - 1; room.waiting_for_player_time = room.waiting_for_player_time - 1;
...@@ -4140,7 +4138,7 @@ ...@@ -4140,7 +4138,7 @@
}; };
//tip //tip
ygopro.stoc_send_random_tip = function(client) { ygopro.stoc_send_random_tip = async function(client) {
var tip_type; var tip_type;
tip_type = "tips"; tip_type = "tips";
if (settings.modules.tips.split_zh && tips.tips_zh.length && client.lang === "zh-cn") { if (settings.modules.tips.split_zh && tips.tips_zh.length && client.lang === "zh-cn") {
...@@ -4151,7 +4149,7 @@ ...@@ -4151,7 +4149,7 @@
} }
}; };
ygopro.stoc_send_random_tip_to_room = function(room) { ygopro.stoc_send_random_tip_to_room = async function(room) {
var len3, len4, n, o, player, ref4, ref5; var len3, len4, n, o, player, ref4, ref5;
if (settings.modules.tips.enabled && tips.tips.length) { if (settings.modules.tips.enabled && tips.tips.length) {
ref4 = room.players; ref4 = room.players;
...@@ -4171,7 +4169,7 @@ ...@@ -4171,7 +4169,7 @@
} }
}; };
load_tips = global.load_tips = function(callback) { load_tips = global.load_tips = async function(callback) {
request({ request({
url: settings.modules.tips.get, url: settings.modules.tips.get,
json: true json: true
...@@ -4190,7 +4188,7 @@ ...@@ -4190,7 +4188,7 @@
}); });
}; };
load_tips_zh = global.load_tips_zh = function(callback) { load_tips_zh = global.load_tips_zh = async function(callback) {
request({ request({
url: settings.modules.tips.get_zh, url: settings.modules.tips.get_zh,
json: true json: true
...@@ -4231,7 +4229,7 @@ ...@@ -4231,7 +4229,7 @@
}, 30000); }, 30000);
} }
ygopro.stoc_follow('DUEL_START', false, function(buffer, info, client, server, datas) { ygopro.stoc_follow('DUEL_START', false, async function(buffer, info, client, server, datas) {
var deck_arena, deck_name, deck_text, len3, len4, n, o, player, ref4, ref5, room; var deck_arena, deck_name, deck_text, len3, len4, n, o, player, ref4, ref5, room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!(room && !client.reconnecting)) { if (!(room && !client.reconnecting)) {
...@@ -4341,7 +4339,7 @@ ...@@ -4341,7 +4339,7 @@
} }
}); });
ygopro.ctos_follow('SURRENDER', true, function(buffer, info, client, server, datas) { ygopro.ctos_follow('SURRENDER', true, async function(buffer, info, client, server, datas) {
var room, sur_player; var room, sur_player;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -4368,7 +4366,7 @@ ...@@ -4368,7 +4366,7 @@
return false; return false;
}); });
report_to_big_brother = global.report_to_big_brother = function(roomname, sender, ip, level, content, match) { report_to_big_brother = global.report_to_big_brother = async function(roomname, sender, ip, level, content, match) {
if (!settings.modules.big_brother.enabled) { if (!settings.modules.big_brother.enabled) {
return; return;
} }
...@@ -4396,7 +4394,7 @@ ...@@ -4396,7 +4394,7 @@
//else //else
//log.info 'BIG BROTHER OK', response.statusCode, roomname, body //log.info 'BIG BROTHER OK', response.statusCode, roomname, body
ygopro.ctos_follow('CHAT', true, function(buffer, info, client, server, datas) { ygopro.ctos_follow('CHAT', true, async function(buffer, info, client, server, datas) {
var buy_result, cancel, ccolor, cip, cmd, cmsg, cname, code, color, cvalue, key, msg, name, oldmsg, ref4, room, struct, sur_player, uname, windbot, word; var buy_result, cancel, ccolor, cip, cmd, cmsg, cname, code, color, cvalue, key, msg, name, oldmsg, ref4, room, struct, sur_player, uname, windbot, word;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -4738,7 +4736,7 @@ ...@@ -4738,7 +4736,7 @@
return cancel; return cancel;
}); });
ygopro.ctos_follow('UPDATE_DECK', true, function(buffer, info, client, server, datas) { ygopro.ctos_follow('UPDATE_DECK', true, async function(buffer, info, client, server, datas) {
var buff_main, buff_side, card, current_deck, deck, deck_array, deck_main, deck_side, deck_text, deckbuf, decks, found_deck, i, len3, len4, line, n, o, oppo_pos, recover_player_data, room, struct, win_pos; var buff_main, buff_side, card, current_deck, deck, deck_array, deck_main, deck_side, deck_text, deckbuf, decks, found_deck, i, len3, len4, line, n, o, oppo_pos, recover_player_data, room, struct, win_pos;
if (settings.modules.reconnect.enabled && client.pre_reconnecting) { if (settings.modules.reconnect.enabled && client.pre_reconnecting) {
if (!CLIENT_is_able_to_reconnect(client) && !CLIENT_is_able_to_kick_reconnect(client)) { if (!CLIENT_is_able_to_reconnect(client) && !CLIENT_is_able_to_kick_reconnect(client)) {
...@@ -4885,7 +4883,7 @@ ...@@ -4885,7 +4883,7 @@
return false; return false;
}); });
ygopro.ctos_follow('RESPONSE', false, function(buffer, info, client, server, datas) { ygopro.ctos_follow('RESPONSE', false, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!(room && (room.random_type || room.arena))) { if (!(room && (room.random_type || room.arena))) {
...@@ -4894,7 +4892,7 @@ ...@@ -4894,7 +4892,7 @@
room.last_active_time = moment(); room.last_active_time = moment();
}); });
ygopro.stoc_follow('TIME_LIMIT', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('TIME_LIMIT', true, async function(buffer, info, client, server, datas) {
var check, cur_players, room; var check, cur_players, room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -4951,7 +4949,7 @@ ...@@ -4951,7 +4949,7 @@
return false; return false;
}); });
ygopro.ctos_follow('TIME_CONFIRM', false, function(buffer, info, client, server, datas) { ygopro.ctos_follow('TIME_CONFIRM', false, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -4979,7 +4977,7 @@ ...@@ -4979,7 +4977,7 @@
} }
}); });
ygopro.ctos_follow('HAND_RESULT', false, function(buffer, info, client, server, datas) { ygopro.ctos_follow('HAND_RESULT', false, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -4994,7 +4992,7 @@ ...@@ -4994,7 +4992,7 @@
} }
}); });
ygopro.ctos_follow('TP_RESULT', false, function(buffer, info, client, server, datas) { ygopro.ctos_follow('TP_RESULT', false, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -5008,7 +5006,7 @@ ...@@ -5008,7 +5006,7 @@
room.last_active_time = moment(); room.last_active_time = moment();
}); });
ygopro.stoc_follow('CHAT', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('CHAT', true, async function(buffer, info, client, server, datas) {
var len3, n, pid, player, ref4, room, tcolor, tplayer; var len3, n, pid, player, ref4, room, tcolor, tplayer;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
pid = info.player; pid = info.player;
...@@ -5047,7 +5045,7 @@ ...@@ -5047,7 +5045,7 @@
} }
}); });
ygopro.stoc_follow('SELECT_HAND', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('SELECT_HAND', true, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -5075,7 +5073,7 @@ ...@@ -5075,7 +5073,7 @@
return false; return false;
}); });
ygopro.stoc_follow('HAND_RESULT', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('HAND_RESULT', true, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -5084,7 +5082,7 @@ ...@@ -5084,7 +5082,7 @@
return room.determine_firstgo; return room.determine_firstgo;
}); });
ygopro.stoc_follow('SELECT_TP', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('SELECT_TP', true, async function(buffer, info, client, server, datas) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -5107,7 +5105,7 @@ ...@@ -5107,7 +5105,7 @@
return false; return false;
}); });
ygopro.stoc_follow('CHANGE_SIDE', false, function(buffer, info, client, server, datas) { ygopro.stoc_follow('CHANGE_SIDE', false, async function(buffer, info, client, server, datas) {
var room, room_name, sinterval, temp_log; var room, room_name, sinterval, temp_log;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
...@@ -5166,7 +5164,7 @@ ...@@ -5166,7 +5164,7 @@
} }
}); });
ygopro.stoc_follow('REPLAY', true, function(buffer, info, client, server, datas) { ygopro.stoc_follow('REPLAY', true, async function(buffer, info, client, server, datas) {
var duellog, dueltime, i, len3, len4, n, o, player, ref4, ref5, replay_filename, room; var duellog, dueltime, i, len3, len4, n, o, player, ref4, ref5, replay_filename, room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
......
...@@ -18,7 +18,7 @@ YGOProMessageHelper = require("./YGOProMessages.js") # 为 SRVPro2 准备的库 ...@@ -18,7 +18,7 @@ YGOProMessageHelper = require("./YGOProMessages.js") # 为 SRVPro2 准备的库
translateHandler = (handler) -> translateHandler = (handler) ->
return (buffer, info, datas, params)-> return (buffer, info, datas, params)->
await return handler(buffer, info, params.client, params.server, datas) await return await handler(buffer, info, params.client, params.server, datas)
@stoc_follow = (proto, synchronous, callback)-> @stoc_follow = (proto, synchronous, callback)->
@helper.addHandler("STOC_#{proto}", translateHandler(callback), synchronous, 1) @helper.addHandler("STOC_#{proto}", translateHandler(callback), synchronous, 1)
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
translateHandler = function(handler) { translateHandler = function(handler) {
return async function(buffer, info, datas, params) { return async function(buffer, info, datas, params) {
return handler(buffer, info, params.client, params.server, datas); return (await handler(buffer, info, params.client, params.server, datas));
}; };
}; };
......
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