back_recharge
xuexinpeng 2021-12-28 16:32:49 +08:00
parent 3c5f29e2e5
commit 705e81c629
5 changed files with 59 additions and 45 deletions

View File

@ -380,5 +380,6 @@ public interface BIReason {
int GM_COST = 1228;//gm删除道具
int EXPLORE_MAP_COST = 1229;//探索地图消耗
int EXPLORE_MAP_GET = 1230;//探索地图消耗
int EXPLORE_MAP_GET = 1230;//探索地图奖励
int EXPLORE_MAP_COST_RETURN = 1231;//探索地图消耗返还
}

View File

@ -36,8 +36,8 @@ public class ExplorerMapInfoHandler extends BaseHandler<PlayerInfoProto.Explore
if(!explorer.containsKey(i)){
record = CommonProto.ExplorerMapInfo.newBuilder().setTeamId(i).build();
}else{
for(int[]drop:explorer.get(i).getDropItem() ){
dropKeyValList.add( CommonProto.CommKeyVal.newBuilder().setKey(drop[0]).setVal(drop[1]).build());
for(Map.Entry<Integer,Integer> keyVal:explorer.get(i).getDropMap().entrySet() ){
dropKeyValList.add( CommonProto.CommKeyVal.newBuilder().setKey(keyVal.getKey()).setVal(keyVal.getValue()).build());
}
record = CommonProto.ExplorerMapInfo.newBuilder().setTeamId(i).setMapId(explorer.get(i).getMapId()).setHp(explorer.get(i).getPlayerHp()).
setExploreTime(explorer.get(i).getSendEndTime()).addAllDropReward(dropKeyValList).build();

View File

@ -19,6 +19,7 @@ import util.StringUtil;
import util.TimeUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -47,20 +48,20 @@ public class ExplorerMapRewardHandler extends BaseHandler<PlayerInfoProto.Explor
if(exInfo.getSendEndTime()> TimeUtils.nowInt()){
int min = (exInfo.getSendEndTime() - TimeUtils.nowInt())/60;
SExplore exploreConfig = STableManager.getConfig(SExplore.class).get(exInfo.getMapId());
int [] drop = new int[2];
drop[0]=exploreConfig.getCost()[0];
drop[1]=exploreConfig.getCost()[1]*min;
/*MailLogic.getInstance().sendMail(uid, "探索返还晶石", "您提前结束了队伍X在【地图名称】中的探索以下为尚未消耗的晶石请查收。",
StringUtil.parseArrayToString(drop), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);*/
List<int[]> comDrop =new ArrayList<int[]>();
comDrop.add(drop);
comDrop.addAll(explorer.get(teamId).getDropItem());
//CommonProto.Drop.Builder returnReward = ItemUtil.drop(user, drop, BIReason.EXPEDITION_BOX_REWARD);
//MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerMapInfoResponse.getNumber(), builder.build(), true);
int itemId = exploreConfig.getCost()[0];
int itemNum = exploreConfig.getCost()[1]*min;
Map<Integer,Integer> comDropMap = new HashMap<>();
Map<Integer,Integer> dropmap=explorer.get(teamId).getDropMap();
comDropMap.putAll(dropmap);
if(comDropMap.containsKey(itemId)){
comDropMap.put(itemId,comDropMap.get(itemId)+itemNum);
}else{
comDropMap.put(itemId,itemNum);
}
CommonProto.Drop.Builder dropPro = ItemUtil.drop(user, comDropMap.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()}).toArray(int[][]::new), BIReason.EXPLORE_MAP_COST_RETURN);
explorer.get(teamId).getDropMap().clear();
explorer.get(teamId).setDropMap(explorer.get(teamId).getDropMap());
CommonProto.ExplorerMapInfo explorerMapInfo = CommonProto.ExplorerMapInfo.newBuilder().setTeamId(teamId).build();
CommonProto.Drop.Builder dropPro = ItemUtil.drop(user, explorer.get(teamId).getDropItem().stream().toArray(int[][]::new), BIReason.EXPEDITION_BOX_REWARD);
explorer.get(teamId).getDropItem().clear();
explorer.get(teamId).setDropItem(explorer.get(teamId).getDropItem());
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerMapRewardResponse.getNumber(), builder.setDrop(dropPro).
setExploreInfo(explorerMapInfo).build(), true);
}

View File

@ -3,7 +3,9 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ExplorerInfo extends MongoBase {
@ -15,13 +17,13 @@ public class ExplorerInfo extends MongoBase {
private int enemyHp;//敌人血量
private int enemyReliveTime;//敌人复活时间
private int batteTime;//战斗时间
private List<int[]> dropItem = new ArrayList<>();
private Map<Integer,Integer> dropMap = new HashMap<>();//掉落
public ExplorerInfo() {
}
public ExplorerInfo(int mapId, int sendEndTime, int sendTime, int playerHp, int playerReliveTime, int enemyHp, int enemyReliveTime, int batteTime, List<int[]> dropItem) {
public ExplorerInfo(int mapId, int sendEndTime, int sendTime, int playerHp, int playerReliveTime, int enemyHp, int enemyReliveTime, int batteTime, Map<Integer, Integer> dropMap) {
this.mapId = mapId;
this.sendEndTime = sendEndTime;
this.sendTime = sendTime;
@ -30,7 +32,7 @@ public class ExplorerInfo extends MongoBase {
this.enemyHp = enemyHp;
this.enemyReliveTime = enemyReliveTime;
this.batteTime = batteTime;
this.dropItem = dropItem;
this.dropMap = dropMap;
}
public int getMapId() {
@ -101,16 +103,6 @@ public class ExplorerInfo extends MongoBase {
this.sendTime = sendTime;
}
public List<int[]> getDropItem() {
return dropItem;
}
public void setDropItem(List<int[]> dropItem) {
updateString("dropItem", dropItem);
this.dropItem = dropItem;
}
public int getBatteTime() {
return batteTime;
}
@ -119,4 +111,13 @@ public class ExplorerInfo extends MongoBase {
updateString("batteTime", batteTime);
this.batteTime = batteTime;
}
public Map<Integer, Integer> getDropMap() {
return dropMap;
}
public void setDropMap(Map<Integer, Integer> dropMap) {
updateString("dropMap", dropMap);
this.dropMap = dropMap;
}
}

View File

@ -30,10 +30,7 @@ import rpc.protocols.MessageTypeProto;
import util.StringUtil;
import util.TimeUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
public class ExplorerMapLogic {
@ -105,23 +102,37 @@ public class ExplorerMapLogic {
LOGGER.error("玩家死亡=》重生时间{}", explorerInfo.getPlayerReliveTime());
}
//怪物死亡 设置重生时间
if (explorerInfo.getEnemyHp() == 0) {
if (explorerInfo.getEnemyHp()== 0) {
//玩家赢了
List<int[]> dropitem = explorerInfo.getDropItem();
if (dropitem == null) {
dropitem = new ArrayList<>();
Map<Integer,Integer> dropMap = explorerInfo.getDropMap();
if(dropMap == null){
dropMap = new HashMap<>();
}
Map<Integer, Integer> itemMap = ItemUtil.getItemMapByGroupId(user, exploreConfig.getReward(), 1, 0, BIReason.EXPLORE_MAP_GET);
List<int[]> addDropitem = itemMap.entrySet().stream().map(n -> new int[]{n.getKey(), n.getValue()}).collect(Collectors.toList());
dropitem.addAll(addDropitem);
explorerInfo.setDropItem(dropitem);
if (time == 0) {
for(Map.Entry<Integer,Integer> keyVal:itemMap.entrySet()){
if(dropMap.containsKey(keyVal.getKey())){
dropMap.put(keyVal.getKey(),dropMap.get(keyVal.getKey())+keyVal.getValue());
}else{
dropMap.put(keyVal.getKey(),keyVal.getValue());
}
}
explorerInfo.setDropMap(dropMap);
ISession sess = OnlineUserManager.sessionMap.get(user.getId());
if (sess != null){
List<CommonProto.CommKeyVal> dropKeyValList = new ArrayList<>();
for(Map.Entry<Integer,Integer> keyVal:explorerInfo.getDropMap().entrySet() ){
dropKeyValList.add( CommonProto.CommKeyVal.newBuilder().setKey(keyVal.getKey()).setVal(keyVal.getValue()).build());
}
CommonProto.ExplorerMapInfo mapInfo = CommonProto.ExplorerMapInfo.newBuilder().setTeamId(teamId).setMapId(explorerInfo.getMapId()).setHp(explorerInfo.getPlayerHp()).
setExploreTime(explorerInfo.getSendEndTime()).addAllDropReward(dropKeyValList).build();
MessageUtil.sendIndicationMessage(sess, 1, MessageTypeProto.MessageType.ExplorerMapIndicationResponse_VALUE, mapInfo, true);
}
if (time == 0) {
explorerInfo.setEnemyReliveTime(TimeUtils.nowInt() + 300);
} else {
explorerInfo.setEnemyReliveTime(time + 300);
}
LOGGER.error("玩家死亡=》重生时间{} 掉落=>{}", explorerInfo.getEnemyReliveTime(),exploreConfig.getReward());
LOGGER.error("怪物死亡=》重生时间{} 掉落=>{}", explorerInfo.getEnemyReliveTime(),exploreConfig.getReward());
}
}
if (time == 0) {
@ -261,7 +272,7 @@ public class ExplorerMapLogic {
String teamName = TeamEnum.getEnumByteamId(id).getRemarks();
String mapName = exploreConfig.getName();
int hour =explorer.get(id).getSendTime()/3600;
if (explorer.get(id).getDropItem().size() == 0 || explorer.get(id).getDropItem() == null) {
if (explorer.get(id).getDropMap().size() == 0 || explorer.get(id).getDropMap() == null) {
LOGGER.error("到期啥都没得到发邮件");
String title = SErrorCodeEerverConfig.getI18NMessage("explorefail_mail_title");
String content = SErrorCodeEerverConfig.getFormatMessage("explorefail_mail_txt", new Object[]{teamName,mapName,hour});
@ -272,7 +283,7 @@ public class ExplorerMapLogic {
String title = SErrorCodeEerverConfig.getI18NMessage("exploresuccess_mail_title");
String content = SErrorCodeEerverConfig.getFormatMessage("exploresuccess_mail_txt", new Object[]{teamName,mapName,hour});
//CommonProto.Drop.Builder drop = ItemUtil.drop(user, explorer.get(id).getDropItem().stream().toArray(int[][]::new), BIReason.EXPEDITION_BOX_REWARD);
int[][] dropArray = explorer.get(id).getDropItem().stream().toArray(int[][]::new);
int[][] dropArray = explorer.get(id).getDropMap().entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()}).toArray(int[][]::new);
MailLogic.getInstance().sendMail(uid, title, content,
StringUtil.parseArrayToString(dropArray), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
}