%%%-------------------------------------- %%% @Author : calvin %%% @Email : calvinzhong888@gmail.com %%% @Created : 2012.5.9 %%% @Description: 聊天 %%%-------------------------------------- %% 11017协议 %% 目前暂时只有队伍频道 -define(FLOAT_TEXT_ONLY, 1). %% 只飘字 -define(CHAT_WINDOW_ONLY, 2). %% 只聊天框 -define(FLOAT_AND_CHAT, 3). %% 飘字加聊天框 %% ---------------------------------------------------- %% 举报/禁言 %% ---------------------------------------------------- %% 禁言类型 -define(TALK_LIMIT_TYPE_1, 1). %% gm或指导员禁言 -define(TALK_LIMIT_TYPE_2, 2). %% 违反规则自动禁言A -define(TALK_LIMIT_TYPE_3, 3). %% 违反规则自动禁言B -define(TALK_LIMIT_TYPE_4, 4). %% 被举报次数过多禁言 -define(TALK_LIMIT_TYPE_6, 6). %% 被霸主禁言跨服聊天 %% 释放类型 -define(TALK_RELEASE_TYPE_1, 1). %% gm或管理员手动解禁 -define(TALK_RELEASE_TYPE_2, 2). %% 自动解禁 -define(HORN_TALK_LV, 30). %% 发喇叭级别 -define(TALK_LIMIT_TIME, 180). %% 禁言时 -define(TALK_LIMIT_TIME_0, 300). %% 禁言5分钟 -define(TALK_LIMIT_TIME_1, 600). %% 禁言10分钟 -define(TALK_LIMIT_TIME_2, 1800). %% 禁言30分钟 -define(TALK_LIMIT_TIME_3, 3600). %% 禁言1个小时 -define(TALK_LIMIT_TIME_4, 7200). %% 禁言2小时 -define(TALK_LIMIT_TIME_5, 21600). %% 禁言6小时 -define(TALK_LIMIT_TIME_6, 86400). %% 禁言24小时 -define(TALK_LIMIT_TIME_7, (86400*3)). %% 禁言3天 -define(TALK_LIMIT_TIME_8, (86400*7)). %% 禁言一周 -define(TALK_LIMIT_TIME_9, (3*366*86400)). %% 禁言三年 -define(ALLOW_INFORM_NUM, 10). %% 最多被举报次数 -define(ALLOW_CHAT_NUM_1, 20). %% 40级下,每天最多私聊玩家数 -define(ALLOW_CHAT_NUM_2, 30). %% 40级下,给非好友最多私聊次数 -define(CHAT_RULE_5_REJECT, [[43], [43,229,165,189,229,143,139]]). %% 聊天规则5,排除字符["+","+加好友"] -define(SQL_UPDATE_TALK_LIM, <<"update player_login set talk_lim=~p, talk_lim_type=~p, talk_lim_time=~p where id=~p">>). -define(SQL_UPDATE_LIM_RIGHT, <<"update player_login set talk_lim_right=~p where id=~p">>). -define(SQL_SELECT_TALK_LIM, <<"select talk_lim, talk_lim_time, talk_lim_right from player_login where id =~p">>). %% 存储被举报的信息 -define(SQL_TALK_REPORT,<<"insert into `talk_report`(from_id, to_id, `msg`, `time`) values(~p, ~p, '~ts', UNIX_TIMESTAMP() )">>). -record(talk_accept, { all_accept = 1, %% 世界消息的接受。1:接受|0:拒绝 all_tv_accept = 1 %% 世界传闻消息的接受。1:接受|0:拒绝 }). %% ---------------------------------------------------- %% 聊天 %% ---------------------------------------------------- %% 聊天类型 -define(CHAT_CHANNEL_WORLD, 1). %% 世界频道 -define(CHAT_CHANNEL_HORN, 2). %% 喇叭 -define(CHAT_CHANNEL_NEARBY, 3). %% 区域频道 -define(CHAT_CHANNEL_GUILD, 4). %% 公会频道 -define(CHAT_CHANNEL_TEAM, 5). %% 队伍频道 -define(CHAT_CHANNEL_PRIVATE, 6). %% 私聊频道 -define(CHAT_CHANNEL_RELA, 7). %% 好友频道(给所有好友发送) -define(CHAT_CHANNEL_RECRUIT, 8). %% 招募频道 -define(CHAT_CHANNEL_INFORM, 9). %% 举报频道 -define(CHAT_CHANNEL_SYS, 10). %% 系统频道 -define(CHAT_CHANNEL_WAIT_TEAM,11). %% 组队(招募)频道 -define(CHAT_CHANNEL_SCENE, 12). %% 场景聊天(只针对活动场景的聊天) -define(CHAT_CHANNEL_WORLD_KF, 13). %% 跨服世界频道 -define(CHAT_CHANNEL_REPLY, 14). %% 答题频道 -define(CHAT_CHANNEL_3V3_TEAM, 15). %% 跨服3v3队伍 -define(CHAT_CHANNEL_1VN_BET, 16). %% 跨服1vN押注 -define(CHAT_CHANNEL_BEACH, 17). %% 温泉频道 -define(CHAT_CHANNEL_WEDDING, 18). %% 婚礼弹幕 -define(CHAT_CHANNEL_GLAMOUR, 19). %% 跑马弹幕 -define(CHAT_CHANNEL_GUARD_RECRUIT, 20). %% 三人守塔招募频道 -define(CHAT_CHANNEL_COUNTRY, 21). %% 本国频道 %% 聊天类型开放列表 -define(CHAT_CHANNEL_OPEN_LIST, [ ?CHAT_CHANNEL_WORLD, ?CHAT_CHANNEL_NEARBY, ?CHAT_CHANNEL_GUILD, ?CHAT_CHANNEL_TEAM, ?CHAT_CHANNEL_PRIVATE, ?CHAT_CHANNEL_RELA, ?CHAT_CHANNEL_WAIT_TEAM, ?CHAT_CHANNEL_SCENE, ?CHAT_CHANNEL_WORLD_KF, ?CHAT_CHANNEL_REPLY, ?CHAT_CHANNEL_3V3_TEAM, ?CHAT_CHANNEL_1VN_BET, ?CHAT_CHANNEL_BEACH, ?CHAT_CHANNEL_WEDDING, ?CHAT_CHANNEL_GLAMOUR, ?CHAT_CHANNEL_GUARD_RECRUIT, ?CHAT_CHANNEL_COUNTRY ]). %% 聊天内容 -define(CHAT_CONTENT_TEXT, 1). %% 文字聊天 -define(CHAT_CONTENT_PICTURE, 2). %% 图片聊天 -define(CHAT_CONTENT_VOICE, 3). %% 声音聊天 %% 聊天时间 -define(CHAT_GAP_WORLD, 5). %% 世界频道发言间隔 -define(CHAT_GAP_NEARBY, 5). %% 附近频道发言间隔 -define(CHAT_GAP_GUILD, 3). %% 社团(公会)频道发言间隔 -define(CHAT_GAP_TEAM, 3). %% 队伍频道发言间隔 -define(CHAT_GAP_PRIVATE, 3). %% 私聊频道发言间隔 -define(CHAT_GAP_RELA, 3). %% 好友频道发言间隔 -define(CHAT_GAP_INFORM, 3). %% 举报间隔 -define(CHAT_GAP_WAIT_TEAM, 10). %% 组队邀请时间间隔 -define(CHAT_GAP_SCENE, 5). %% 场景聊天时间间隔 -define(CHAT_GAP_WORLD_KF, 3). %% 跨服世界频道聊天时间间隔 -define(CHAT_GAP_HORN, 3). %% 喇叭发言间隔(本项目不使用) -define(CHAT_GAP_CAREER, 3). %% 职业/门派发言间隔(本项目不使用) -define(CHAT_GAP_REPLY, 0). %% 答题频道间隔(本项目不使用) -define(CHAT_GAP_DEFAULT, 3). %% 默认发言间隔 -define(CHAT_GAP_GUARD, 10). %% 守卫信标招募间隔 %% 聊天等级 -define(CHAT_LV_WORLD, 60). %% 世界频道发言等级 -define(CHAT_LV_NEARBY, 70). %% 附近频道 -define(CHAT_LV_GUILD, 60). %% 社团(公会) -define(CHAT_LV_TEAM, 70). %% 队伍频道 -define(CHAT_LV_PRIVATE, 60). %% 私聊频道 -define(CHAT_LV_RELA, 60). %% 好友频道 -define(CHAT_LV_SCENE, 60). %% 场景聊天频道 -define(CHAT_LV_WORLD_KF,180). %% 跨服世界频道 %% 350 -define(CHAT_LV_WEDDING, 75). %% 婚礼弹幕等级 -define(CHAT_LV_HORN, 110). %% 喇叭(本项目不使用) -define(CHAT_LV_CAREER, 60). %% 职业/门派频道(本项目不使用) -define(CHAT_LV_DEFAULT, 60). %% 默认发言等级 %% 聊天长度 -define(CHAT_LEN_DEFAULT, 250). %% 默认长度(服务器放宽,1汉字=2单位长度,1数字字母=1单位长度) %% 聊天道具 -define(CHAT_GOODS_HORN, 38050001). %% 喇叭道具 -define(CHAT_GOODS_WORLD_KF, 38050002). %% 跨服频道道具 %% 聊天内容相同 -define(CHAT_CONTENT_SAME_NO, 0). %% 不相同 -define(CHAT_CONTENT_SAME_YES, 1). %% 相同 %% 参数结果类型 -define(CHAT_ARGS_RESULT_NO, 0). %% 没有参数 -define(CHAT_ARGS_RESULT_PASS, 1). %% 有参数校验正常 -define(CHAT_ARGS_RESULT_NO_PASS, 2). %% 有参数校验失败 %% 其他 -define(CHAT_HORN_SHOW_TIME, 5). %% 喇叭展示时间 %% 聊天 -record(status_chat, { prev_record_time = [], %% 上次记录内容的时间[{Channel,Time}] record_content = [] %% 记录的聊天内容 }). %% 聊天喇叭 -record(bugle_state, { bugle_queue = queue:new(), %% 玩家喇叭队列 gm_bugle_queue = queue:new(), %% gm喇叭队列(优先) ref = none %% 定时器 }). %% 喇叭 -record(bugle, { role_id = 0, %% 玩家id bugle_id = 0, %% 喇叭id show_time = 0, %% 展示时间 msg = [] %% 消息列表 }). %% 喇叭配置 -record(bugle_cfg, { id = 0, first_cost = [], second_cost = [], show_time = 0, conditions = [] }). %% 聊天缓存 -record(cache_state, { priv_cache_map = #{} %% 私聊离线缓存 在线的私聊不做缓存 客户端自己存cookie #{ReceiverId => #priv_cache{}} }). -record(priv_cache, { len = 0, msg = [] }). %% 私聊信息 -record(msg_record, { channel = 0 , sender_id = 0 , sender_figure = undefined , sender_server_id = 0 , sender_server_num = 0 , sender_server_name = <<>> , receive_id = 0 , receive_figure = undefined , msg_send = "" , args = [] , args_result = 0 , utime = 0 , client_ver = 0 , client_auto_id = 0 , voice_msg_time = 0 }). %% 语音 -record(voice_state, { voice_dict = dict:new(), picture_dict = dict:new() }). %% 私聊对象基本信息(聊天监控用) -record(chat_to, { id = 0 ,name = <<>> ,accname = <<>> ,level = 0 ,vip_level = 0 ,power = 0 ,career = 0 }). %% ---------------------------------------------------- %% 小红点 %% ---------------------------------------------------- %% 公会 -define(RED_POINT_GUILD_APPLY, 1). % 公会申请 -define(RED_POINT_GUILD_UPGRADE, 2). % 公会升级 -define(RED_POINT_RECEIVE_FLOWER_GIFT, 1). % 收到新的鲜花礼物 -define(RED_POINT_SALARY_STATE, 3). % 公会工资 %% 图鉴 -define(RED_POINT_PIC_CHAPTER, 1). % 图鉴章节激活 -define(RED_POINT_PIC_TYPE_TWO, 2). % 图鉴2类型 -define(RED_POINT_PIC_TYPE_THREE, 3). % 图鉴3类型 %% ---------------------------------------------------- %% 其他 %% ---------------------------------------------------- %% 公告Ets -define(ETS_SYS_NOTICE, ets_sys_notice). %% ---------------------------------------------------- %% 聊天次数监控 %% ---------------------------------------------------- -define(SQL_CHAT_LIMIT_GET, <<"select chat_count, chat_limit, role_shield from role_chat_limit where role_id = ~p">>). -define(SQL_CHAT_LIMIT_UPDATE, <<"replace into role_chat_limit set role_id = ~p, chat_count = ~p, chat_limit = '~ts', role_shield = '~ts'">>). -define(SQL_CHAT_ROLE_SHIELD_UPDATE, <<"update role_chat_limit set role_shield = '~ts' where role_id = ~p">>). %% 世界频道发言,聊天字符长度限制 -define(DIFF_LV, 150). %% -define(DIFF_POWER, 60000). %% -define(DIFF_STRING, 50). %% -define(DIFF_VIP, 1). %% 敏感词等级战力检测 -define(SEN_LV, 250). -define(SEN_VIP, 4). -define(SEN_POWER, 1000000). %% 私人聊天双方等级差 -define(PRI_LV, 50). -define(PRI_POWER, 2000000). -record(role_chat_limit, { role_id = 0, chat_count = 0, %% 聊天次数特定等级下检测 chat_limit = [], %% 特殊操作监控 role_shield = undefined %% 玩家屏蔽列表 }). %% 离线聊天时的亲密度限制 -define(INTIMACY_LIMIT, 100). %% 屏蔽&取消 -define(CHAT_SHEILD, 1). -define(CHAT_UNSHEILD, 2). %% 黑名单人数限制(本服+其他服) -define(SHEILD_NUM, 20). %% -record(role_shield, { shield_roles = [], %% 玩家屏蔽列表 role_figure = [] %% 玩家头像等信息 }). %% ---------------------------------------------------- %% 聊天机器人 %% ---------------------------------------------------- -record(chat_simulation, { trigger_id = 0, trigger_content = [], trigger_lv = [] }). -record(chat_simulation_log, { name = <<>>, sex = 1, vip = 0, picture = 0, msg = <<>>, time = 0, lv = 1 }). -record(base_chat_simulation_content, { classify, order, id, content, space_time, desc, condition }). -record(base_chat_simulation_robot, { id, name, vip, sex = 1, picture, lv = 1 }). -record(base_chat_simulation_trigger, { id, lv_min, lv_max, content }).