====== 好友伙伴 ======
**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 服务器逻辑 =====
**当前好关系列表**
#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) #申请加我好友
**当前生效buff**
#buff_info
start_time < =now() and now() < end_time
**在同一有效周期**
//$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);
}
===== 5 客户端逻辑 =====
====好友关系====
//好友关系
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
====在线比较====
使用 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
====好友强化可领取====
首先要满足__**好友强化可显示**__
friends_info->buff_time="" #从来没领过 可领
friends_info->buff_time!="" && 不在同一个刷新周期内 #可领
friends_info->buff_time!="" && 在同一个刷新周期内 #本周期已领 不可领
====好友送礼,收礼====
首先要满足__**好友关系**__
再判断是否达到送礼,收礼次数上限
- 普通送礼次数 1004
- 钻石送礼次数 1005
- 普通收礼次数 1006
- 钻石收礼次数 1007
**普通送礼**
//可送礼状态
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 在同一刷新周期
**钻石送礼**
send_normal_gift_time => send_diamond_gift_time
**普通收礼**
//好友还没送礼,不显示
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
**钻石收礼**
send_normal_gift_time => send_diamond_gift_time
normal_gift_taken => diamond_gift_taken
**收礼**
//服务器只下放在有效期内的收礼记录
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;//已领
====领取好友助战奖励====
- 普通被召唤助战可拿奖励次数 1041
- 皇牌被召唤助战可拿奖励次数 1042
- 普通召唤助战可拿奖励次数 1043
- 皇牌召唤助战可拿奖励次数 1044
先判断领取上限
主要信息从[[generated:friends_help_info]]取得,**__字段描述有调整__**
服务器只下放**__请求时__**在有效期内的信息
====好友宠物====
**好友筛选条件**
relationship_point>=relationship_point_lv3
relationship_point 具体数值[[generated:friend_setting]]
relationship_point_lv3 #可借用紫色宠物
relationship_point_lv4 #可借用紫色,橙色宠物