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 GM_COST = 1228;//gm删除道具
int EXPLORE_MAP_COST = 1229;//探索地图消耗 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)){ if(!explorer.containsKey(i)){
record = CommonProto.ExplorerMapInfo.newBuilder().setTeamId(i).build(); record = CommonProto.ExplorerMapInfo.newBuilder().setTeamId(i).build();
}else{ }else{
for(int[]drop:explorer.get(i).getDropItem() ){ for(Map.Entry<Integer,Integer> keyVal:explorer.get(i).getDropMap().entrySet() ){
dropKeyValList.add( CommonProto.CommKeyVal.newBuilder().setKey(drop[0]).setVal(drop[1]).build()); 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()). record = CommonProto.ExplorerMapInfo.newBuilder().setTeamId(i).setMapId(explorer.get(i).getMapId()).setHp(explorer.get(i).getPlayerHp()).
setExploreTime(explorer.get(i).getSendEndTime()).addAllDropReward(dropKeyValList).build(); setExploreTime(explorer.get(i).getSendEndTime()).addAllDropReward(dropKeyValList).build();

View File

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

View File

@ -3,7 +3,9 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase; import com.ljsd.common.mogodb.MongoBase;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class ExplorerInfo extends MongoBase { public class ExplorerInfo extends MongoBase {
@ -15,13 +17,13 @@ public class ExplorerInfo extends MongoBase {
private int enemyHp;//敌人血量 private int enemyHp;//敌人血量
private int enemyReliveTime;//敌人复活时间 private int enemyReliveTime;//敌人复活时间
private int batteTime;//战斗时间 private int batteTime;//战斗时间
private List<int[]> dropItem = new ArrayList<>(); private Map<Integer,Integer> dropMap = new HashMap<>();//掉落
public ExplorerInfo() { 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.mapId = mapId;
this.sendEndTime = sendEndTime; this.sendEndTime = sendEndTime;
this.sendTime = sendTime; this.sendTime = sendTime;
@ -30,7 +32,7 @@ public class ExplorerInfo extends MongoBase {
this.enemyHp = enemyHp; this.enemyHp = enemyHp;
this.enemyReliveTime = enemyReliveTime; this.enemyReliveTime = enemyReliveTime;
this.batteTime = batteTime; this.batteTime = batteTime;
this.dropItem = dropItem; this.dropMap = dropMap;
} }
public int getMapId() { public int getMapId() {
@ -101,16 +103,6 @@ public class ExplorerInfo extends MongoBase {
this.sendTime = sendTime; this.sendTime = sendTime;
} }
public List<int[]> getDropItem() {
return dropItem;
}
public void setDropItem(List<int[]> dropItem) {
updateString("dropItem", dropItem);
this.dropItem = dropItem;
}
public int getBatteTime() { public int getBatteTime() {
return batteTime; return batteTime;
} }
@ -119,4 +111,13 @@ public class ExplorerInfo extends MongoBase {
updateString("batteTime", batteTime); updateString("batteTime", batteTime);
this.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.StringUtil;
import util.TimeUtils; import util.TimeUtils;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ExplorerMapLogic { public class ExplorerMapLogic {
@ -105,23 +102,37 @@ public class ExplorerMapLogic {
LOGGER.error("玩家死亡=》重生时间{}", explorerInfo.getPlayerReliveTime()); LOGGER.error("玩家死亡=》重生时间{}", explorerInfo.getPlayerReliveTime());
} }
//怪物死亡 设置重生时间 //怪物死亡 设置重生时间
if (explorerInfo.getEnemyHp() == 0) { if (explorerInfo.getEnemyHp()== 0) {
//玩家赢了 //玩家赢了
List<int[]> dropitem = explorerInfo.getDropItem(); Map<Integer,Integer> dropMap = explorerInfo.getDropMap();
if (dropitem == null) { if(dropMap == null){
dropitem = new ArrayList<>(); dropMap = new HashMap<>();
} }
Map<Integer, Integer> itemMap = ItemUtil.getItemMapByGroupId(user, exploreConfig.getReward(), 1, 0, BIReason.EXPLORE_MAP_GET); 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()); for(Map.Entry<Integer,Integer> keyVal:itemMap.entrySet()){
dropitem.addAll(addDropitem); if(dropMap.containsKey(keyVal.getKey())){
explorerInfo.setDropItem(dropitem); dropMap.put(keyVal.getKey(),dropMap.get(keyVal.getKey())+keyVal.getValue());
}else{
if (time == 0) { 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); explorerInfo.setEnemyReliveTime(TimeUtils.nowInt() + 300);
} else { } else {
explorerInfo.setEnemyReliveTime(time + 300); explorerInfo.setEnemyReliveTime(time + 300);
} }
LOGGER.error("玩家死亡=》重生时间{} 掉落=>{}", explorerInfo.getEnemyReliveTime(),exploreConfig.getReward()); LOGGER.error("怪物死亡=》重生时间{} 掉落=>{}", explorerInfo.getEnemyReliveTime(),exploreConfig.getReward());
} }
} }
if (time == 0) { if (time == 0) {
@ -261,7 +272,7 @@ public class ExplorerMapLogic {
String teamName = TeamEnum.getEnumByteamId(id).getRemarks(); String teamName = TeamEnum.getEnumByteamId(id).getRemarks();
String mapName = exploreConfig.getName(); String mapName = exploreConfig.getName();
int hour =explorer.get(id).getSendTime()/3600; 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("到期啥都没得到发邮件"); LOGGER.error("到期啥都没得到发邮件");
String title = SErrorCodeEerverConfig.getI18NMessage("explorefail_mail_title"); String title = SErrorCodeEerverConfig.getI18NMessage("explorefail_mail_title");
String content = SErrorCodeEerverConfig.getFormatMessage("explorefail_mail_txt", new Object[]{teamName,mapName,hour}); 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 title = SErrorCodeEerverConfig.getI18NMessage("exploresuccess_mail_title");
String content = SErrorCodeEerverConfig.getFormatMessage("exploresuccess_mail_txt", new Object[]{teamName,mapName,hour}); 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); //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, MailLogic.getInstance().sendMail(uid, title, content,
StringUtil.parseArrayToString(dropArray), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); StringUtil.parseArrayToString(dropArray), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
} }