Commit 90a53ecd authored by nanahira's avatar nanahira

add custom chat color

parent 1f3277dd
...@@ -58,6 +58,9 @@ ...@@ -58,6 +58,9 @@
"server_ip": "127.0.0.1", "server_ip": "127.0.0.1",
"my_ip": "127.0.0.1" "my_ip": "127.0.0.1"
}, },
"chat_color": {
"enabled": false
},
"mycard": { "mycard": {
"enabled": false, "enabled": false,
"auth_base_url": "https://ygobbs.com", "auth_base_url": "https://ygobbs.com",
......
...@@ -27,5 +27,9 @@ ...@@ -27,5 +27,9 @@
"duel_log": { "duel_log": {
"file": "./config/duel_log.json", "file": "./config/duel_log.json",
"duel_log": [] "duel_log": []
},
"chat_color": {
"file": "./config/chat_color.json",
"save_list": {}
} }
} }
\ No newline at end of file
...@@ -172,6 +172,8 @@ ...@@ -172,6 +172,8 @@
"chat_order_roomname": "/roomname 显示当前房间的名字", "chat_order_roomname": "/roomname 显示当前房间的名字",
"chat_order_windbot": "/ai 添加一个AI,/ai 角色名 可指定添加的角色", "chat_order_windbot": "/ai 添加一个AI,/ai 角色名 可指定添加的角色",
"chat_order_tip": "/tip 显示一条提示", "chat_order_tip": "/tip 显示一条提示",
"chat_order_chatcolor_1": "/color 查看自己的聊天文字颜色,/color 颜色名 设定自己的聊天文字颜色",
"chat_order_chatcolor_2": "/color default 恢复默认聊天字体颜色,/color help 查看所有可用的颜色",
"room_name": "您当前的房间名是", "room_name": "您当前的房间名是",
"banned_chat_tip": "您已被禁言!", "banned_chat_tip": "您已被禁言!",
"banned_duel_tip": "您的发言存在严重不适当的内容,禁止您使用随机对战功能!", "banned_duel_tip": "您的发言存在严重不适当的内容,禁止您使用随机对战功能!",
...@@ -213,6 +215,15 @@ ...@@ -213,6 +215,15 @@
"side_overtime_room": " 因为更换副卡组超时,本次比赛已被判负。", "side_overtime_room": " 因为更换副卡组超时,本次比赛已被判负。",
"side_remain_part1": "更换副卡组时间还剩", "side_remain_part1": "更换副卡组时间还剩",
"side_remain_part2": "分钟。", "side_remain_part2": "分钟。",
"get_chat_color_part1": "你正在使用的聊天字体颜色是 ",
"get_chat_color_part2": " 。",
"get_chat_color_default": "你没有设置过聊天文字颜色,输入 /color 颜色名 来设置聊天文字颜色。",
"set_chat_color_part1": "已设置聊天文字颜色为 ",
"set_chat_color_part2": " 。",
"set_chat_color_default": "已恢复默认聊天文字颜色。",
"color_not_found_part1": "颜色 ",
"color_not_found_part2": " 不存在,输入 /color help 查看所有可用的颜色。",
"show_color_list": "可用的聊天字体颜色有:",
"athletic_arena_tip": "在竞技匹配中,比赛开始前退出游戏也会视为投降。" "athletic_arena_tip": "在竞技匹配中,比赛开始前退出游戏也会视为投降。"
}, },
"ko-kr": { "ko-kr": {
......
...@@ -142,6 +142,11 @@ try ...@@ -142,6 +142,11 @@ try
catch catch
duel_log = default_data.duel_log duel_log = default_data.duel_log
setting_save(duel_log) setting_save(duel_log)
try
chat_color = require('./config/chat_color.json')
catch
chat_color = default_data.chat_color
setting_save(chat_color)
try try
cppversion = parseInt(fs.readFileSync('ygopro/gframe/game.cpp', 'utf8').match(/PRO_VERSION = ([x\dABCDEF]+)/)[1], '16') cppversion = parseInt(fs.readFileSync('ygopro/gframe/game.cpp', 'utf8').match(/PRO_VERSION = ([x\dABCDEF]+)/)[1], '16')
...@@ -1683,6 +1688,8 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)-> ...@@ -1683,6 +1688,8 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
ygopro.stoc_send_chat(client, "${chat_order_roomname}") if !settings.modules.mycard.enabled ygopro.stoc_send_chat(client, "${chat_order_roomname}") if !settings.modules.mycard.enabled
ygopro.stoc_send_chat(client, "${chat_order_windbot}") if settings.modules.windbot.enabled ygopro.stoc_send_chat(client, "${chat_order_windbot}") if settings.modules.windbot.enabled
ygopro.stoc_send_chat(client, "${chat_order_tip}") if settings.modules.tips.enabled ygopro.stoc_send_chat(client, "${chat_order_tip}") if settings.modules.tips.enabled
ygopro.stoc_send_chat(client, "${chat_order_chatcolor_1}") if settings.modules.chat_color.enabled
ygopro.stoc_send_chat(client, "${chat_order_chatcolor_2}") if settings.modules.chat_color.enabled
when '/tip' when '/tip'
ygopro.stoc_send_random_tip(client) if settings.modules.tips.enabled ygopro.stoc_send_random_tip(client) if settings.modules.tips.enabled
...@@ -1702,6 +1709,29 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)-> ...@@ -1702,6 +1709,29 @@ ygopro.ctos_follow 'CHAT', true, (buffer, info, client, server)->
when '/roomname' when '/roomname'
ygopro.stoc_send_chat(client, "${room_name} " + room.name, ygopro.constants.COLORS.BABYBLUE) if room ygopro.stoc_send_chat(client, "${room_name} " + room.name, ygopro.constants.COLORS.BABYBLUE) if room
when '/color'
if settings.modules.chat_color.enabled
if cmsg = cmd[1]
if cmsg.toLowerCase() == "help"
ygopro.stoc_send_chat(client, "${show_color_list}", ygopro.constants.COLORS.BABYBLUE)
for cname,cvalue of ygopro.constants.COLORS when cvalue > 10
ygopro.stoc_send_chat(client, cname, cvalue)
else if cmsg.toLowerCase() == "default"
setting_change(chat_color, 'save_list:' + client.name, false)
ygopro.stoc_send_chat(client, "${set_chat_color_default}", ygopro.constants.COLORS.BABYBLUE)
else
ccolor = cmsg.toUpperCase()
if ygopro.constants.COLORS[ccolor] and ygopro.constants.COLORS[ccolor] > 10
setting_change(chat_color, 'save_list:' + client.name, ccolor)
ygopro.stoc_send_chat(client, "${set_chat_color_part1}" + ccolor + "${set_chat_color_part2}", ygopro.constants.COLORS.BABYBLUE)
else
ygopro.stoc_send_chat(client, "${color_not_found_part1}" + ccolor + "${color_not_found_part2}", ygopro.constants.COLORS.RED)
else
if color = chat_color.save_list[client.name]
ygopro.stoc_send_chat(client, "${get_chat_color_part1}" + color + "${get_chat_color_part2}", ygopro.constants.COLORS.BABYBLUE)
else
ygopro.stoc_send_chat(client, "${get_chat_color_default}", ygopro.constants.COLORS.BABYBLUE)
#when '/test' #when '/test'
# ygopro.stoc_send_hint_card_to_room(room, 2333365) # ygopro.stoc_send_hint_card_to_room(room, 2333365)
if (msg.length>100) if (msg.length>100)
...@@ -1859,6 +1889,22 @@ ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server)-> ...@@ -1859,6 +1889,22 @@ ygopro.ctos_follow 'TP_RESULT', false, (buffer, info, client, server)->
room.last_active_time = moment() room.last_active_time = moment()
return return
ygopro.stoc_follow 'CHAT', true, (buffer, info, client, server)->
room=ROOM_all[client.rid]
pid = info.player
return unless room and pid < 4 and settings.modules.chat_color.enabled
for player in room.players when player and player.pos == pid
tplayer = player
return unless tplayer
tcolor = chat_color.save_list[tplayer.name]
if tcolor
ygopro.stoc_send client, 'CHAT', {
player: ygopro.constants.COLORS[tcolor]
msg: tplayer.name + ": " + info.msg
}
return true
return
ygopro.stoc_follow 'SELECT_HAND', false, (buffer, info, client, server)-> ygopro.stoc_follow 'SELECT_HAND', false, (buffer, info, client, server)->
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)
......
// Generated by CoffeeScript 1.12.7 // Generated by CoffeeScript 1.12.7
(function() { (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, 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, 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'); net = require('net');
...@@ -188,6 +188,13 @@ ...@@ -188,6 +188,13 @@
setting_save(duel_log); setting_save(duel_log);
} }
try {
chat_color = require('./config/chat_color.json');
} catch (error1) {
chat_color = default_data.chat_color;
setting_save(chat_color);
}
try { try {
cppversion = parseInt(fs.readFileSync('ygopro/gframe/game.cpp', 'utf8').match(/PRO_VERSION = ([x\dABCDEF]+)/)[1], '16'); cppversion = parseInt(fs.readFileSync('ygopro/gframe/game.cpp', 'utf8').match(/PRO_VERSION = ([x\dABCDEF]+)/)[1], '16');
setting_change(settings, "version", cppversion); setting_change(settings, "version", cppversion);
...@@ -2053,7 +2060,7 @@ ...@@ -2053,7 +2060,7 @@
}; };
ygopro.ctos_follow('CHAT', true, function(buffer, info, client, server) { ygopro.ctos_follow('CHAT', true, function(buffer, info, client, server) {
var cancel, cmd, msg, name, oldmsg, room, struct, windbot; var cancel, ccolor, cmd, cmsg, cname, color, cvalue, msg, name, oldmsg, ref, room, struct, windbot;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
if (!room) { if (!room) {
return; return;
...@@ -2093,6 +2100,12 @@ ...@@ -2093,6 +2100,12 @@
if (settings.modules.tips.enabled) { if (settings.modules.tips.enabled) {
ygopro.stoc_send_chat(client, "${chat_order_tip}"); ygopro.stoc_send_chat(client, "${chat_order_tip}");
} }
if (settings.modules.chat_color.enabled) {
ygopro.stoc_send_chat(client, "${chat_order_chatcolor_1}");
}
if (settings.modules.chat_color.enabled) {
ygopro.stoc_send_chat(client, "${chat_order_chatcolor_2}");
}
break; break;
case '/tip': case '/tip':
if (settings.modules.tips.enabled) { if (settings.modules.tips.enabled) {
...@@ -2119,6 +2132,39 @@ ...@@ -2119,6 +2132,39 @@
if (room) { if (room) {
ygopro.stoc_send_chat(client, "${room_name} " + room.name, ygopro.constants.COLORS.BABYBLUE); ygopro.stoc_send_chat(client, "${room_name} " + room.name, ygopro.constants.COLORS.BABYBLUE);
} }
break;
case '/color':
if (settings.modules.chat_color.enabled) {
if (cmsg = cmd[1]) {
if (cmsg.toLowerCase() === "help") {
ygopro.stoc_send_chat(client, "${show_color_list}", ygopro.constants.COLORS.BABYBLUE);
ref = ygopro.constants.COLORS;
for (cname in ref) {
cvalue = ref[cname];
if (cvalue > 10) {
ygopro.stoc_send_chat(client, cname, cvalue);
}
}
} else if (cmsg.toLowerCase() === "default") {
setting_change(chat_color, 'save_list:' + client.name, false);
ygopro.stoc_send_chat(client, "${set_chat_color_default}", ygopro.constants.COLORS.BABYBLUE);
} else {
ccolor = cmsg.toUpperCase();
if (ygopro.constants.COLORS[ccolor] && ygopro.constants.COLORS[ccolor] > 10) {
setting_change(chat_color, 'save_list:' + client.name, ccolor);
ygopro.stoc_send_chat(client, "${set_chat_color_part1}" + ccolor + "${set_chat_color_part2}", ygopro.constants.COLORS.BABYBLUE);
} else {
ygopro.stoc_send_chat(client, "${color_not_found_part1}" + ccolor + "${color_not_found_part2}", ygopro.constants.COLORS.RED);
}
}
} else {
if (color = chat_color.save_list[client.name]) {
ygopro.stoc_send_chat(client, "${get_chat_color_part1}" + color + "${get_chat_color_part2}", ygopro.constants.COLORS.BABYBLUE);
} else {
ygopro.stoc_send_chat(client, "${get_chat_color_default}", ygopro.constants.COLORS.BABYBLUE);
}
}
}
} }
if (msg.length > 100) { if (msg.length > 100) {
log.warn("SPAM WORD", client.name, client.ip, msg); log.warn("SPAM WORD", client.name, client.ip, msg);
...@@ -2327,6 +2373,33 @@ ...@@ -2327,6 +2373,33 @@
room.last_active_time = moment(); room.last_active_time = moment();
}); });
ygopro.stoc_follow('CHAT', true, function(buffer, info, client, server) {
var j, len, pid, player, ref, room, tcolor, tplayer;
room = ROOM_all[client.rid];
pid = info.player;
if (!(room && pid < 4 && settings.modules.chat_color.enabled)) {
return;
}
ref = room.players;
for (j = 0, len = ref.length; j < len; j++) {
player = ref[j];
if (player && player.pos === pid) {
tplayer = player;
}
}
if (!tplayer) {
return;
}
tcolor = chat_color.save_list[tplayer.name];
if (tcolor) {
ygopro.stoc_send(client, 'CHAT', {
player: ygopro.constants.COLORS[tcolor],
msg: tplayer.name + ": " + info.msg
});
return true;
}
});
ygopro.stoc_follow('SELECT_HAND', false, function(buffer, info, client, server) { ygopro.stoc_follow('SELECT_HAND', false, function(buffer, info, client, server) {
var room; var room;
room = ROOM_all[client.rid]; room = ROOM_all[client.rid];
......
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