源战役
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 

562 rindas
23 KiB

%% ---------------------------------------------------------------------------
%% @doc guild.hrl
%% @author hjh
%% @email hejiahua@163.com
%% @since 2016-12-19
%% @deprecated 公会
%% ---------------------------------------------------------------------------
%% @说明
%%20201215补充
%%社团等级创建初始化,社团活跃(劳务)任务可增加社团经验 满足则自动升级
%%call进程判断的时候最好在玩家进程,不要在公会进程
%%社团贡献 TYPE_GFAME 8 100004
%% ----------------------- 进程字典定义 -----------------------
%% 公会数据较大,使用进程State会导致存储和读取的性能差,目前使用进程字典来避免.
%% 公会进程的进程字典
-define(P_GUILD, "P_Guild"). % 公会Maps Value:#{GuildId => #guild{} }
-define(P_GUILD_MEMBER(GuildId), lists:concat(["P_Guild_Member_", GuildId])). % 公会玩家Maps Value:#{MemberId => #guild_member{}}
-define(P_MEMBER_GUILD_ID, "P_Member_Guild_Id"). % 成员和公会id的Maps Value:#{玩家id => 公会id}
-define(P_GUILD_DEPOT, "P_Guild_Depot"). % 公会仓库
-define(P_GUILD_SKILL, "P_Guild_Skill"). % 公会技能
% -define(P_GUILD_BUILDING_LV(GuildId), lists:concat(["P_Guild_Building_Lv_", GuildId])). % 建筑 Value:#{BuildingType => BuildingLv}
-define(P_POS_PERMISSION(GuildId), lists:concat(["P_Pos_Permission_", GuildId])). % 职位权限 Value:#{Pos => #{PermissionType=IsAllow} }
-define(P_POS_NAME(GuildId), lists:concat(["P_Pos_Name_", GuildId])). % 职位名字 Value:#{Pos => PositionName}
-define(P_GUILD_APPLY, "P_Guild_Apply"). % Value:#{ {RoleId, GuildId} => #guild_apply{} }
-define(P_GUILD_APPLY_GUILD, "P_Guild_Apply_Guild"). % Value:{GuildId => [RoleId|...]}
-define(P_GUILD_MERGE_GUILD, "P_Guild_Merge_Guild").
-define(P_GUILD_SUPPORT(GuildId), lists:concat(["P_Guild_Support_", GuildId])). % 公会协助
%% 玩家进程dict拼单感谢信和记录相关key
-define(P_GUILD_ORDER_THANK, guild_order_thank). % 公会拼单礼包
-define(P_GUILD_ORDER_LOG, guild_order_log). % 公会拼单记录
% -define(P_GUILD_WAR_SHINE_BUY(GuildId), lists:concat(["P_Guild_War_Shine_Buy_", GuildId])). % 公会祭坛购买 Value:#guild_war_shine_buy{}
% -define(P_GUILD_WAR_SHINE_MACHINE(GuildId), lists:concat(["P_Guild_War_Shine_Machine_", GuildId])). % Value: [{MachineId, Num}|...]
-define(P_GUILD_DONATE_LOG(GuildId), lists:concat(["P_GUILD_DONATE_LOG_", GuildId])). % 捐献日志 Value:[{CfgId, Name, DonateNum, Gfunds, Time}|..]
%% ----------------------- 职位定义(#guild_member.position/.sec_position) -----------------------
-define(POS_CHIEF, 1). % 会长
-define(POS_DUPTY_CHIEF, 2). % 副会长
-define(POS_DIRECTOR, 3). % 长老
-define(POS_ELITE, 4). % 精英
-define(POS_NORMAL, 5). % 普通成员 默认是普通成员
-define(POS_AGENT, 6). % 代理团长
%% ----------------------- 职位变更类型 -------------------------------
-define(POS_LOG_JOIN, 0). % 加入社团
-define(POS_LOG_CHIEF, 1). % 成为团长
-define(POS_LOG_DUPTY_CHIEF, 2). % 成为副团长
-define(POS_LOG_ELITE, 3). % 成为骨干
-define(POS_LOG_BABY, 4). % 成为活宝
-define(POS_LOG_NORMAIL, 5). % 成为普通成员
-define(POS_LOG_AGENT, 6). % 成为代理团长
-define(POS_LOG_QUIT, 7). % 离开社团
%%社团合并相关
-define(MERGE_APPLY, 1). %%申请合并
-define(MERGE_AGREE, 2). %%同意合并
-define(MERGE_REFUSE, 3). %%拒绝合并
%% 徽章特性,详情看后台配置
-define(GBADGE_CASH, 1). %%分红税率降低
-define(GBADGE_CONTRIBUTE, 2). %%社团贡献增加
-define(GBADGE_REPUTATION, 3). %%名望值收益
-define(GBADGE_BOSS, 4). %%社团BOSS伤害
-define(GBADGE_ATTR, 5). %%徽章属性
%日志内容
%1.玩家加入
%2.玩家活跃记录
%3.职位变更
%4.社团升级
%% 职位(用于初始化职位名字和职位权限列表)
-define(POS_LIST, [
?POS_NORMAL
, ?POS_ELITE
, ?POS_DIRECTOR
, ?POS_DUPTY_CHIEF
, ?POS_CHIEF
, ?POS_AGENT
]).
%% 能被任命的职位
-define(BE_APPOINT_POS_LIST, [
?POS_NORMAL
, ?POS_ELITE
, ?POS_DIRECTOR
, ?POS_DUPTY_CHIEF
]).
%% 能被修改权限的职位列表
-define(MODIFIED_PERMISSION_POS_LIST, [
?POS_BABY
, ?POS_DIRECTOR
, ?POS_DUPTY_CHIEF
]).
%% ----------------------- 权限(permission) -----------------------
-define(PERMISSION_APPROVE_APPLY, 1). % 审批申请
-define(PERMISSION_APPOINT_POS, 2). % 任命职位
-define(PERMISSION_FIRE_MEMBER, 3). % 开除成员
-define(PERMISSION_MODIFY_TENET_AND_ANNOUNCE, 4). % 宣言/公告修改
-define(PERMISSION_APPROVE_SETTING, 5). % 审批设置
-define(PERMISSION_RENAME, 6). % 改名
-define(PERMISSION_GUILD_MERGE, 7). % 社团合并
%% 可修改的权限列表
-define(MODIFIABLE_PERMISSION_LIST, [
?PERMISSION_APPROVE_APPLY
, ?PERMISSION_FIRE_MEMBER
]).
%% ----------------------- #guild.apply_type -----------------------
-define(APPROVE_TYPE_AUTO, 0). % 自动
-define(APPROVE_TYPE_MANUAL, 1). % 手动
%% ----------------------- permission_type is_allow -----------------------
-define(IS_ALLOW_NO, 0). % 不允许使用该权限
-define(IS_ALLOW_YES, 1). % 允许
%% ----------------------- 搜索和匹配 -----------------------
%% 公会成员的搜索
%% search_guild_memer
-define(sgm_default, 0). % 默认
-define(sgm_lv, 1). % 等级
-define(sgm_guild_pos, 2). % 公会职位
-define(sgm_donate, 3). % 贡献
-define(sgm_liveness, 4). % 活跃度
-define(sgm_online_pos_lv, 5). % 根据在线,职位,等级降序(40006默认)
-define(sgm_pos_donate_lv_liveness, 6). % 根据职位,贡献,等级,活跃度降序(40008默认)
-define(sgm_pos_lv_donate, 7). % 根据职位,等级,贡献降序(40016默认)
-define(sort_flag_desc, 0). % 降序
-define(sort_flag_asc, 1). % 升序
-define(member_type_all, 0). % 所有成员
-define(member_type_online, 1). % 在线成员
-define(member_type_logout, 2). % 离线成员
%% search 的 特殊类型
-define(s_special_type_normal, 0). % 正常
-define(s_special_type_take_me_first, 1). % 提取自己在最前面
-define(s_special_type_del_me, 2). % 移除自己
-define(MANUAL_APPOINT, 1). % 手动任命会长
-define(AUTO_APPOINT, 2). % 自动任命会长
-define(CREATE_GUILD, 1). % 创建公会
-define(DISBAND_REASON_MERGE, 2). % 社团合并
-define(DISBAND_REASON_CHIEF, 3). % 会长解散公会
-define(DISBAND_REASON_MEMBER_NUM,4). % 人数达不到要求自动解散
-define(DISBAND_REASON_ACTIVITY, 5). % 活跃度不足自动解散
-define(DISBAND_REASON_CHIEF_QUIT, 6). % 会长退出公会
-define(DISBAND_REASON_GM, 7). % GM解散公会
-define(DISBAND_REASON_FUNDS, 8). % 社团管理资金不足自动解散
%% ----------------------- 事件定义 -----------------------
-define(GEVENT_APPOINT_POSITION_TO_CHIEF, 1). % 任命成会长
-define(GEVENT_APPOINT_POSITION_TO_OTHER, 2). % 任命成其他职位(除了会长,领袖,学徒)
-define(GEVENT_RENAME_POSITION, 3). % 修改职位称谓
-define(GEVENT_BECOME_NORAML_AF_APPOINT_OTHER_TO_CHIEF, 4). % 在任命其他人为会长后旧会长第一职位变成普通成员
-define(GEVENT_CREATE_GUILD, 5). % 创建公会
-define(GEVENT_QUIT, 6). % 主动退出
-define(GEVENT_KICK_OUT, 7). % 被踢出公会
-define(GEVENT_UPGRADE_GUILD, 8). % 升级公会
-define(GEVENT_RENAME, 9). % 公会改名
-define(GEVENT_JOIN_GUILD, 10). % 加入公会
%% ----------------------- 日志定义 -----------------------
-define(SEPARATOR_STRING, "=>").
-define(GLOG_CREATE, 1). % 创建公会
-define(GLOG_JOIN, 2). % 加入公会
-define(GLOG_KICK_OUT, 3). % 踢出公会
-define(GLOG_POS_CHANGE, 4). % 职位变动
-define(GLOG_DISBAND, 5). % 解散公会
-define(GLOG_QUIT, 6). % 主动退出公会
-define(GLOG_AUTO_CHIEF, 7). % 自动任命会长
-define(GLOG_MERGE, 8). % 社团合并
% -define(GLOG_DONATE, 7). % 捐献
%% ----------------------- 其他定义 -----------------------
-define(GUILD_PID, mod_guild). % 公会进程
-define(NEED_SQL_TYPE, 1). % 需要操作sql
-define(NO_SQL_TYPE, 2). % 不需要操作sql
-define(MAX_SMALLINT, 65535). % 最大的smallint数值
-define(MAX_INT, 4294967295). % 最大的int数值
-define(CAL_GUILD_POWER_VAILD_TIME, 86400 * 2). % 超过这个离线时间不计入公会战力
-define(AUTO_DISBAND_OFFLINE_TIME, 86400 * 2). % 公会所有成员离线超过这个时间自动解散
-define(AUTO_DISBAND_AF_WARNNING, 86400). % 在解散警告时间多久后自动解散公会
-define(AUTO_DISBAND_NEED_NUM, 1). % 公会少于这个人数进入自动解散倒计时
-define(DISBAND_NEED_NUM, 3). % 公会少于这个人数可以解散
-define(APPLY_EXPIRED_TIME, 86400). % 申请过期时间
-define(DEPOT_EXP_EXCHANGE_SCORE, 2000). % 仓库里面的经验道具兑换需要积分
-define(DEPOT_EXP_GOODS_ID, 18030001). % 仓库经验道具的物品类型id
-define(DEPOT_RECORD_SHOW_LEN, 20). % 仓库记录显示长度限制
-define(DEPOT_RECORD_MAX_LEN, 40). % 仓库记录缓存长度限制
-define(KICK_OUT_POSTION, 0). % 提出公会默认职位
-define(PAGE_SIZE, 40). % 默认页码
%% ---------------------- 公会共用仓库操作 ----------------------
-define(GUILD_DEPOT_CTRL_ADD, 1). % 往仓库存放道具
-define(GUILD_DEPOT_CTRL_EXCHANGE, 2). % 从仓库兑换道具
-define(GUILD_DEPOT_CTRL_DESTORY, 3). % 销毁仓库道具
-define(GUILD_REM_POOL(GuildId), (GuildId rem ?GUILD_REM)).
-define(GUILD_REM, 20).%N个驻地分线池
%% ------------------------------------------------
%% @doc 游戏数据格式
%% ------------------------------------------------
%% ----------- 基础 --------------
%% 公会 活跃就是经验值
-record(guild, {
id = 0 % 公会id
, name = <<>> % 公会名字
, name_upper = "" % 公会名字(大写)
, announce = <<>> % 公会公告
, chief_id = 0 % 会长id
, chief_name = <<>> % 会长名字
, agent = 0 % 代理团长
, agent_time = 0 % 代理时间
, lv = 0 % 等级
, exp = 0 % 经验
, division = 0 % 评级
, funds = 0 % 资金
, arrears = 0 % 拖欠次数
, flag = 0 % 社团旗帜
, member_num = 0 % 成员数量
, combat_power = 0 % 战力
, create_time = 0 % 创建时间
, modify_times = 0 % 公告修改次数
, approve_type = 0 % 审批类型 0:自动 1:手动
, auto_approve_lv = 0 % 自动加入的等级
, auto_approve_power = 0 % 自动加入的战力
, disband_warnning_time = 0 % 自动解散警告时间
, week_labor = 0 % 周活跃(劳动量)
, week_labor_refresh = 0 % 周刷新时间
, week_labor_last = 0 % 上周活跃(劳动量)
, c_rename = 0 % 免费改名次数 0: 没有免费改名 >1:能免费改名字
, c_rename_time = 0 % 最后免费改名时间
, badges = []
, fire_num = 0 %%篝火周最高参与人数
, assist = 0 %%周助战次数
, war_win = 0 %%社团战获胜累记
, last_renew = 0 %%下次刷新时间
, race_rank = 0 % 竞速榜排名
, add_member_num = 0 % 增加成员人数
, cgwar_room = 0 % 团战名次(房间)
}).
%% 公会成员
-record(guild_member, {
id = 0 % 玩家ID
, figure = undefined % #figure{}
, guild_id = 0 % 公会ID
, guild_name = <<>> % 公会名称
, position = 0 % 职位
, precursor = 5 % 前身职位 申请代理社长记录旧的职位
, week_labor = 0 % 周活跃
, week_labor_refresh = 0 % 周刷新时间
, labors = 0 % 历史活跃
, online_flag = 0 % 是否在线
, combat_power = 0 % 玩家当前战力
, h_combat_power = 0 % 历史最高战力
, last_login_time = 0 % 最后登录时间
, last_logout_time = 0 % 最后登出游戏时间
, create_time = 0 % 入会时间
}).
%% 公会请求
-record(guild_apply, {
key = undefined % key值
, role_id = 0 % 玩家id
, guild_id = 0 % 公会id
, create_time = 0 % 创建时间
, position = 0
}).
%% 公会合并
-record(guild_merge, {
guild_id = 0 % 公会id
, tapply = 0 % 我申请合并的社团
, fapplys = [] % 向我申请合并的社团
, notes = [] % 记录最近三天内五组拒绝数据
}).
%% 玩家进程status
-record(status_guild, {
id = 0 % 公会id
, flag = 0 % 社团旗帜
, name = <<>> % 公会名字
, lv = 0 % 公会等级
, position = 0 % 职位
, position_name = <<>> % 职位名字
, create_time = 0 % 入会时间
, leave_time = 0 % 退出公会时间
, attr = [] % 公会的属性加成
, red_packet = 0 % 抢的红包金额
, red_gold_packet = 0 % 抢的钻石红包金额
, support_id = 0 % 协助Id(唯一Id)
, support_cfg_id = 0 % 协助配置Id
, support_leader_id = 0 % 协助玩家Id
, support_leader_name = "" % 协助玩家名字
, support_team_id = 0 % 协助队伍Id
, support_scene_info = [] % 协助场景信息(判断玩家是否成功进入协助场景)
, is_support_asker = 0 % 是否请求协助者
, is_in_support = 0 % 是否在协助玩法中 0-否 1-是
, guild_reputation = 0 % 社团每日声望(已废弃)
, badges = []
, orders = [] % 拼单任务
}).
%%徽章结构
-record(guild_badge, {
id = 0,
type = 0,
stime = 0,
etime = 0
}).
%%徽章配置
-record(base_badge, {
id = 0,
name = "",
level = 0,
type = 0,
cool = 0, %%冷却时间 0表示永久
effect = 0,
condition = [],
next = 0
}).
%% 公会技能
-record(guild_skill, {
guild_id = 0, % 公会id
skill_id = 0, % 技能id
research_lv = 0 % 研究等级
}).
%% 公会技能 ps上的
-record(status_guild_skill, {
attr = [],
gskill_map = #{}
}).
%% 公会协助
-record(guild_support, {
support_sid = 0, %% 协助Id,全服唯一
ask_id = 0, %% 请求协助者
ask_scene_id = 0, %% 请求协助者场景Id
ask_pool_id = 0, %% 请求协助者场景分区进程Id
ask_copy_id = 0, %% 请求协助者副本Id
ask_x = 0, %% 请求协助者坐标X
ask_y = 0, %% 请求协助者坐标Y
support_cfg_id = 0, %% 协助的配置Id
support_role_list = [], %% 协助者列表
status = 0, %% 协助状态 0-未开始 1-正在进行 2-已经结束
content = {}, %% 请求协助内容.例如{team, TeamId, CopyId}, {boss, BossId}...
extra_data = [], %% 其他数据(各类玩法定制)
team_id = 0, %% 队伍Id(请求协助者所在队伍Id)
team_leader_name = "", %% 队伍队长名字(请求协助者所在队伍队长名字)
create_time = 0 %% 创建时间
,module = 0 %% 处理模块名
}).
%% ------------------------------------------------
%% @doc 公会基础配置
%% ------------------------------------------------
%% ----------- 基础 --------------
%% 创建公会配置
-record(base_guild_create,{
cfg_id = 0,
cost = [], %%消耗
guild_lv = 0, %%初始公会大厅等级
condition = [] %%创建条件
}).
%% 公会等级配置
-record(base_guild_lv, {
lv = 0,
exp = 0,
member_capacity = 0,
pos_list = []
}).
%% 公会职位配置
-record(guild_pos_cfg, {
position = 0 % 职位(看宏)
, name = "" % 职位名字
, permission_list = [] % 权限列表
, num = 0 % 人数
}).
%% 公会职位配置
-record(base_guild_pos, {
position = 0 % 职位(看宏)
, name = "" % 职位名字
, permission_list = [] % 权限列表
, reputation_add % 每日声望加成
}).
%% 公会商店
-record(base_shop_good, {
auto_id = 0, % 唯一id
id = 0, % 商品id
cost = 0, % 消耗贡献
limit = 0, % 购买上限
building_lv = 0 % 建筑等级
}).
%% 公会技能
-record(base_skill,{
skill_id = 0,
skill_lv = 0,
skill_name = "",
building_lv = 0, % 所需建筑等级下限
building_lv_max = 0,% 所需建筑等级上限
guild_lv = 0, % 公会等级
role_min_lv = 0, % 人物等级下限
role_max_lv = 0, % 人物等级上限
attr = [],
cost = 0 % 消耗贡献
}).
%% 公会个人额外活跃度奖励
-record(base_extra_live_reward, {
reward_id = 0, % 奖励id
live = 0, % 个人累计活跃度
extra_add = 0 % 额外公会活跃度
}).
%% 公会技能
-define(DEFAULT_GSKILL_RESEARCH_LV, 3). %% 默认公会技能研究等级
-record(guild_skill_cfg, {
skill_id = 0 % 技能id(技能配置表)
, type = 0 % 类型 1: 基础技能 2: 高级技能
, unlock_lv = 0 % 解锁需要的公会等级
}).
%% 公会技能研究
-record(guild_skill_research_cfg, {
skill_id = 0 % 技能id(技能配置表)
, lv = 0 % 等级
, research_condition = [] % 研究条件
, research_cost = [] % 研究消耗
, learn_condition = [] % 学习条件
, learn_cost = [] % 学习消耗
}).
-define(INIT_ORDER, 0). %%初始化
-define(ANCHOR_ORDER, 1). %%可拼单
-define(ALIVE_ORDER, 2). %%已出单待完成
-define(OVER_ORDER, 3). %%已完成可感谢
-define(CLOSE_ORDER, 4). %%已完成
%%社团派单
-record(guild_order, {
id = 0, %%位置ID
cfgid = 0, %%配置ID
status = 0, %%订单状态0未派发1选中(可拼单)1已出待完成3已完成可领取
content = {}, %%任务内容{}
teams = [], %%拼单人
finish_time = 0 %%完成时间
}).
%% 拼单感谢礼包
-record(guild_order_thank_packet, {
ask_id = 0,
order_id = 0,
role_list = [],
order_cfg_id = 0,
content = [],
is_send = 0, %% 是否已经发送感谢
time = 0
}).
%% 拼单记录(需求发起者先发送感谢)
-record(guild_order_thank_log, {
ask_id = 0,
order_id = 0,
order_cfg_id = 0,
content = [],
chat_msg = "",
is_receive = 0, %% 是否已经领取奖励
time = 0
}).
%%订单配置
-record(base_guild_order, {
id = 0,
name = "",
color = 0,
min_lv = 0,
max_lv = 0,
content = {},
max_num = 0, %%可拼单人数
cost = [],
gain = [], %%派单奖励
awards = [] %%完成获得
,thank_reward = [] %% 感谢奖励(发起者获得)
,order_reward = [] %% 接单奖励(协助者获得)
,weight = 0
,ai_ratio = 0 %%AI收益百分比
,people_ratio = 0 %%真人收益百分比
}).
%% 社团协助配置表
-record(base_guild_support, {
support_id = 0, %% 协助Id(主键)
module_id = 0, %% 功能Id
sub_mod_id = 0, %% 功能子Id
mod_name = "", %% 玩法名字
support_limit = 0, %% 协助人数上限
reward_reputation = 0, %% 协助声望
thank_reward = [], %% 感谢奖励
support_reward = [] %% 协助奖励
,is_conflict = 1 %% 协助状态冲突
,out_scene_cancel = 1 %% 退出场景是否取消协助请求
,is_lv_limit = 1 %% 是否限制等级
,scene_limit = 0 %% 场景限制(是否可以发协助)
,show_support_list = 0 %% 是否展示协助列表
,show_hurt = 0 %% 是否显示伤害列表
,show_ask_picture = 0 %% 是否显示被协助者头像
,head_label = 0 %% 协助者头标
}).
-define(SAVE_ORDER_THANK, <<"REPLACE INTO guild_order_thank (`order_id`, `guild_id`, `ask_id`,`cfg_id`,`role_list`,`content`,`is_send`,`time`) VALUES (~p, ~p, ~p, ~p, '~ts', '~ts', ~p, ~p)">>).
-define(SELECT_ORDER_THANK, <<"SELECT `order_id`,`guild_id`,`ask_id`,`cfg_id`,`role_list`,`content`,`is_send`,`time` FROM guild_order_thank WHERE `ask_id` = ~p and `time` > ~p">>).
-define(DELETE_ORDER_THANK, <<"DELETE FROM guild_order_thank WHERE `time` < ~p">>).
-define(BATCH_SAVE_ORDER_LOG, <<"REPLACE INTO guild_order_log (`order_id`,`guild_id`,`role_id`,`ask_id`,`cfg_id`,`content`,`chat_msg`,`is_receive`,`time`) VALUES ~ts">>).
-define(BATCH_SAVE_ORDER_LOG_VALUE, <<"(~p, ~p, ~p, ~p, ~p, '~ts', '~ts', ~p, ~p)">>).
-define(SELECT_ORDER_LOG, <<"SELECT `order_id`,`guild_id`,`role_id`,`ask_id`,`cfg_id`,`content`,`chat_msg`,`is_receive`,`time` FROM guild_order_log WHERE `role_id` = ~p and `time` > ~p">>).
-define(DELETE_ORDER_LOG, <<"DELETE FROM guild_order_log WHERE `time` < ~p">>).