Warning: session_write_close(): write failed: No space left on device (28) in /up_wiki/doku.php on line 123
Warning: session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/sessions) in /up_wiki/doku.php on line 123
======掠夺======
=====原型=====
[[generated:rob_setting]] 掠夺设置
[[generated:pvp_rank_config]] 杯的设置
[[generated:robot_config]] 机器人配置表
[[generated:robot_rate_config]] 机器人出现几率
[[generated:ITEM_USE_TYPE]] 增加了21 枚局,直接增加PVP保护时间(item_function_config.extra)为时间(单位是分)
需要填写 [[generated:item_config]] 和 [[generated:item_function_config]]
=====存档=====
[[generated:player_info]] 增加
^ 字段 ^ 说明 ^ 枚举 ^
| pvp_group | 战场组 | 109 |
| pvp_trophy | pvp奖杯 | 107 |
| pvp_rank | pvp等级 | 108 |
| pvp_protect_time | pvp保护时间 | |
[[generated:rob_target_info]] 掠夺目标
[[generated:rob_result_info]] 掠夺结果
=====协议=====
[[generated:RobSync]] 掠夺信息同步 获得新log/结算未完成的战斗
[[generated:RobRefresh]] 掠夺搜索对手
[[generated:RobRevenage]] 掠夺复仇搜索对手
[[generated:RobGetLog]] 掠夺获取Log 最多获得50条log
[[generated:GMRobRefresh]] GM指定搜索目标
=====要点说明=====
====1机器人====
玩家开始搜索时,如果奖杯小于[[generated:rob_setting]].robot_trophy_max 则需要判断是否需要机器人
首先从[[generated:robot_rate_config]] 中匹配到所在的档次,然后roll出自己是否需要匹配机器人
如果不需要匹配,则正常逻辑下去。需要匹配则 按规则 随机一个奖杯区间,在这个区间找到一个机器人,作为结果。
====2保护====
需要道具进行配置,并且作为立即使用的道具,特殊逻辑去修改 [[generated:player_info]].pvp_protect
如果pvp_protect 小于当前时间,则从当前时间开始加,否则从pvp_protect的时间开始加
====3搜索====
如果玩家需要匹配真人,需要根据自己的 trophy 划定范围 [[generated:rob_setting]] search_score_min/search_score_max
然后在数据库进行匹配, 规则需要包含
1/ pvp_protect < now
2/ trophy 的范围
3/ pvp_group一致
4/ last_online > now + [[generated:rob_setting]] offline_time
5/ 不能是自己
搜索失败给出提示信息
====4生成目标=====
根据目标当时的数据,计算他的watch tower 有效值(TODO)
根据 [[generated:rob_setting]] loot_win_rate/loot_lost_rate 分别计算攻守方收益
然后根据双方奖杯,计算得失分数
胜利获得奖杯=30+(对方奖杯-自己奖杯)*0.075
失败失去奖杯=30-(对方奖杯-自己奖杯)*0.075
结果保存到 [[generated:rob_target_info]]
====5战斗====
[[generated:BattleStart]] 如果输入的关卡是pvp的 stage_config.type==3
则认为就是以当前rob_target_info 为目标的掠夺战斗
在[[generated:BattleEnd]],对战斗结果进行结算,给予攻方奖励,并记录[[generated:rob_result_info]]
同一个对手的挑战次数由 [[generated:rob_target_info]].attempt_count 和 [[generated:rob_setting]].attempt_max 进行比较
=== 战斗细则 ===
战斗超时 和 逃跑
[[generated:PlayerLogin]] 或者 [[generated:RobSync]] 需要对正在攻击的战斗进行判负
超时时间为5分钟,由 [[generated:rob_setting]].battle_max_time
并且[[generated:rob_target_info]].attack_time + 5分钟,就要视为超时。战斗立刻失败(需要一些倒计时等表现)
战斗中的30回合变强规则暂缓制作(统一的战场技能规则)
====6守方结算====
守方在上线的那一刻 [[generated:PlayerLogin]] 或者 [[generated:RobSync]] 进行结算
[[generated:RobSync]] 可以获得之前的全部战斗记录,并且扣除loot_lost 到瞭望塔的收益。(先扣除再计算时间)
有synced标记为
奖杯应该在rob 完成的时候就修改。
====7复仇====
[[generated:rob_result_info]] 里的 revenged 字段表示是否复仇过
[[generated:rob_target_info]].revenge_id 和 [[generated:rob_result_info]].revenge_id都指向了对应的条目
复仇搜索不需要消耗肉
====8回放====
[[generated:BattleLoad]] 指向 [[generated:rob_result_info]].replay_id
**作弊校验**
在本地回放的时候,会检查每一个action是否可以执行。(比如在没有魔法的时候释放技能)
也会校验每个action之后的分数,如果分数不吻合也视为作弊。
分数的计算包含 场面 血量 魔法 等
如果发现作弊,会通过 [[generated:BattleReport]] 提交到服务器,记录在[[generated:cheat_info]], 每个replay只能提交一次
聊天分享 待定
====9战场分组====
目前用 pvp_group ,枚举id 109控制