用户工具

站点工具


好友_伙伴模块笔记

====== 好友伙伴 ====== **FRIEND** ===== 1填表 ===== ==== 1.1次数填写 ==== 次数填在[[generated:dailyrefresh_config]] 中,VIP和非VIP区分对待 === 1.1.1相关枚举 === [[generated:daily_limit|DAILY_LIMIT]] - 普通送礼次数 1004 - 钻石送礼次数 1005 - 普通收礼次数 1006 - 钻石收礼次数 1007 - 普通被召唤助战可拿奖励次数 1041 - 皇牌被召唤助战可拿奖励次数 1042 - 普通召唤助战可拿奖励次数 1043 - 皇牌召唤助战可拿奖励次数 1044 ==== 1.2 INI配置 ==== [[generated:friend_setting]] 好友系统 [[generated:friend_gift_setting]] 好友送礼设置 ===== 2 数据表 ===== [[generated:friends_info]] 好友关系表 [[generated:friends_help_info]] 好友助战表 [[generated:buff_info]] buff信息 [[generated:dailyrefresh_config]] 每日刷新配置 ===== 3 协议 ===== [[generated:FriendApply]] 申请好友 #好友# 成功返回__**刷新当前好关系列表**__ [[generated:FriendAccept]] 接受好友 #好友# 成功返回__**刷新当前好关系列表**__,如果是同意__**刷新好友角色基础信息**__ [[generated:FriendGetApplyList]] 获得好友申请列表 #好友# 返回__**当前好关系列表**__以及__**申请角色的基础信息的列表**__ [[generated:FriendSearch]] 好友搜索 #好友# 返回__**匹配的角色基础信息列表**__ [[generated:FriendGetMyFriends]] 获得我的好友列表 #好友# 返回__**当前好关系列表**__以及__**好友角色基础信息的列表**__ [[generated:FriendSendGift]] 赠送好友礼物 #好友# __**更新每日限制**__,返回__**当前好关系列表**__,__**临时背包**__ [[generated:FriendReceiveGift]] 接受好友礼物 #好友# __**更新每日限制**__,返回__**当前好关系列表**__,__**临时背包**__ [[generated:FriendGetPetsInfo]] 获得某个好友的宠物 #好友# 返回__**满足条件的好友宠物列表**__ [[generated:FriendPetToSlot]] 好友的宠物装备给自己 #好友# 返回__**当前自己的宠物列表**__ [[generated:FriendDelete]] 删除好友 #好友# 返回__**刷新当前好关系列表**__,如果是同意__**刷新好友角色基础信息**__ [[generated:FriendReceiveAssistIncome]] 领取好友助战奖励 #好友# 返回__**刷新**__//**有效周期**//__**好友助战奖励列表**__ [[generated:FriendReceiveBuff]] 领取好友强化Buff #好友# 返回__**刷新当前好关系列表**__,如果是同意__**刷新当前生效buff**__ [[generated:BlockCharacter]] 屏蔽角色,已经屏蔽的取消屏蔽 #好友# 返回__**刷新当前好关系列表**__ ===== 4 服务器逻辑 ===== **当前好关系列表** <code mysql> #friends_info my_character_id=[$my_character_id] and (relationship=2 or relationship=9 or relationship=1) #好友、屏蔽、申请 or target_charater_id=[$my_character_id] and (relationship=1 or relationship=2) #申请加我好友 </code> **当前生效buff** <code mysql> #buff_info start_time < =now() and now() < end_time </code> **在同一有效周期** <code php> //$time_difference 时间偏差 必须>=0 //$cycle_length 周期长度 以天为单位 //$datetime1,$datetime2 datetime 或 时间戳 function in_the_same_cycle($time_difference,$cycle_length,$datetime1,$datetime2) { $_datetime1 = is_numeric($datetime1)?date("Y-m-d",strtotime("-$time_difference hour",$datetime1)):date("Y-m-d",strtotime("-$time_difference hour",strtotime($datetime1))); $_datetime2 = is_numeric($datetime2)?date("Y-m-d",strtotime("-$time_difference hour",$datetime2)):date("Y-m-d",strtotime("-$time_difference hour",strtotime($datetime2))); $difdays=(strtotime($_datetime1) - strtotime($_datetime2))/86400; return ($difdays<$cycle_length)||(-1*$difdays>$cycle_length); } </code> ===== 5 客户端逻辑 ===== ====好友关系==== <code c#> //好友关系 friends_info->my_character_id=当前角色ID && friends_info->relationship=2 or friends_info->target_charater_id=当前角色ID && friends_info->relationship=2 //我屏蔽的角色 friends_info->my_character_id=当前角色ID && friends_info->relationship=9 //我申请其他角色好友 friends_info->my_character_id=当前角色ID && friends_info->relationship=1 //其他角色申请我好友 friends_info->target_charater_id=当前角色ID && friends_info->relationship=1 </code> ====在线比较==== 使用 character_info->last_online 字段,根据策划文档做比较, ====好友强化可显示==== friends_info->my_character_id=当前角色ID && friends_info->target_charater_id=好友ID && friends_info->relationship=2 #好友关系 && ( relationship_point>=1500 #一档buff || relationship_point>=3000 #二点buff ) relationship_point 具体数值[[generated:friend_setting]] relationship_point_lv1 #一档buff relationship_point_lv2 #二点buff ====好友强化可领取==== 首先要满足__**好友强化可显示**__ <code c#> friends_info->buff_time="" #从来没领过 可领 friends_info->buff_time!="" && 不在同一个刷新周期内 #可领 friends_info->buff_time!="" && 在同一个刷新周期内 #本周期已领 不可领 </code> ====好友送礼,收礼==== 首先要满足__**好友关系**__ 再判断是否达到送礼,收礼次数上限 - 普通送礼次数 1004 - 钻石送礼次数 1005 - 普通收礼次数 1006 - 钻石收礼次数 1007 **普通送礼** <code c#> //可送礼状态 friends_info->my_character_id=当前角色ID && friends_info->relationship=2 //好友关系 && ( friends_info->send_normal_gift_time=="" || friends_info->send_normal_gift_time!="" && friends_info->send_normal_gift_time 不在同一刷新周期 ) //已送礼状态 friends_info->send_normal_gift_time 在同一刷新周期 </code> **钻石送礼** <code c#> send_normal_gift_time => send_diamond_gift_time </code> <del>**普通收礼** <code c#> //好友还没送礼,不显示 friends_gift_log_info->send_normal_gift_time=="" || friends_info->send_normal_gift_time!="" && friends_info->send_normal_gift_time 不在同一刷新周期 //收到好友送礼,可领状态,显示条目 friends_info->target_charater_id=当前角色ID && friends_info->relationship=2 //好友关系 && ( friends_info->send_normal_gift_time!="" && friends_info->send_normal_gift_time 在同一刷新周期 && friends_info->normal_gift_taken==0 ) //收到好友送礼,已领状态,显示条目 friends_info->send_normal_gift_time!="" && friends_info->send_normal_gift_time 在同一刷新周期 && friends_info->normal_gift_taken==1 </code> **钻石收礼** <code c#> <del>send_normal_gift_time => send_diamond_gift_time normal_gift_taken => diamond_gift_taken</del> </code></del> **收礼** <code c#> //服务器只下放在有效期内的收礼记录 friends_gift_log_info->type=1;//普通 friends_gift_log_info->type=2;//钻石 friends_gift_log_info->my_character_id;//friend_id friends_gift_log_info->target_charater_id;//my_character_id friends_gift_log_info->taken = 0;//可领 friends_gift_log_info->taken = 1;//已领 </code> ====领取好友助战奖励==== - 普通被召唤助战可拿奖励次数 1041 - 皇牌被召唤助战可拿奖励次数 1042 - 普通召唤助战可拿奖励次数 1043 - 皇牌召唤助战可拿奖励次数 1044 先判断领取上限 主要信息从[[generated:friends_help_info]]取得,**__字段描述有调整__** 服务器只下放**__请求时__**在有效期内的信息 ====好友宠物==== **好友筛选条件** relationship_point>=relationship_point_lv3 relationship_point 具体数值[[generated:friend_setting]] <code mysql> relationship_point_lv3 #可借用紫色宠物 relationship_point_lv4 #可借用紫色,橙色宠物 </code>

好友_伙伴模块笔记.txt · 最后更改: 2020/04/13 21:17 (外部编辑)