经验到上限后不发邮件

master_dev
grimm 2024-01-22 11:28:38 +08:00
parent 782cd915fd
commit 49165586a3
1 changed files with 53 additions and 72 deletions

View File

@ -698,44 +698,30 @@ public class ItemUtil {
List<CommonProto.Item> itemProtoList = new ArrayList<>();
List<CommonProto.Item> sendToFront = new ArrayList<>();
Map<Integer, Integer> extraItem = new HashMap<>(itemMap.size());
List<Integer> changeEquipList = null;
List<Integer> changeEquipList = new ArrayList<>();
for (Map.Entry<Integer, Long> entry : itemMap.entrySet()) {
int itemId = entry.getKey();
long itemNum = entry.getValue();
SItem sItem = SItem.getsItemMap().get(itemId);
if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
equipManager.addSoulGeal(itemId);
}
if (sItem.getItemType() == 3 && reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD) {
if (changeEquipList == null) {
changeEquipList = new ArrayList<>();
}
itemManager.setEquipBookMap(itemId, itemNum);
changeEquipList.add(itemId);
}
long itemNumlimit = sItem.getItemNumlimit();
if (itemNum <= 0) {
continue;
}
if (itemNum >= itemNumlimit) {
itemNum = itemNumlimit;
}
SItem sItem = SItem.getsItemMap().get(itemId);
int id = sItem.getId();
long itemNumlimit = sItem.getItemNumlimit();
itemNum = Math.min(itemNum, itemNumlimit);
Item item = itemManager.getItem(itemId);
if (item == null) {
item = itemManager.newItem(itemId, itemNum);
} else {
if (sItem.getId() == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax();
}
if (item.getItemNum() > itemNumlimit) {
if (sItem.getId() == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
continue;
}
if (reason == BIReason.TAKE_MAIL_REWARD) {
@ -746,9 +732,10 @@ public class ItemUtil {
continue;
}
if (item.getItemNum() + itemNum > itemNumlimit) {
if (sItem.getId() == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
item.setItemNum((int) (item.getItemNum() + itemNum));
long num = item.getItemNum() + itemNum;
if (num > itemNumlimit) {
if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
item.setItemNum(num);
} else {
if (reason == BIReason.TAKE_MAIL_REWARD) {
return 2;
@ -758,7 +745,7 @@ public class ItemUtil {
}
}
} else {
item.setItemNum(item.getItemNum() + itemNum);
item.setItemNum(num);
}
}
@ -766,51 +753,41 @@ public class ItemUtil {
itemProtoList.add(CBean2Proto.getItem(item, itemNum));
}
// 触发任务,东海寻仙
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD) {
long count = itemNum;
while (count >= Integer.MAX_VALUE) {
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GET_TRANSFIGURATION_CARD_NUM, sItem.getQuantity(), Integer.MAX_VALUE);
count -= Integer.MAX_VALUE;
}
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GET_TRANSFIGURATION_CARD_NUM, sItem.getQuantity(), (int) count);
}
int eventType = ParamEventBean.UserItemEvent;
if (ifCurrency(itemId)) {
eventType = ParamEventBean.UserCurrencyEvent;
}
KtEventUtils.onKtEvent(user, eventType, reason, GlobalsDef.addReason, itemId, itemNum, item.getItemNum());
// 日志记录
baseItemReport(user, itemId, (int) itemNum, 1, reason);
// 日志记录
ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, reason, item, itemNum));
if (sItem.getId() == Global.EXP) {
userLevelUp(user, itemNum);
}
if (sItem.getId() == Global.TREASURE_SCORE) {
treasureLevelUp(user);
switch (id){
case Global.EXP://经验
userLevelUp(user, itemNum);
break;
case Global.TREASURE_SCORE://青龙秘宝积分
treasureLevelUp(user);
break;
case GlobalItemType.EQUIP://装备
if (reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD) {
itemManager.setEquipBookMap(itemId, itemNum);
changeEquipList.add(itemId);
user.getUserMissionManager().onGameEvent(user, GameEvent.GET_EQUIP, id, (int) itemNum);
ReportUtil.onReportEvent(user, ReportEventEnum.GET_EQUIP.getType(), id, (int) itemNum, reason);
}
break;
case GlobalItemType.SOUL_MARK://魂印
equipManager.addSoulGeal(itemId);
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GOT_SOUL_MARK, id, (int) itemNum);
break;
case Global.DAILY_TASK_REMOVE_ITEM:
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.DAILY_TASK_FINISH, (int) itemNum);
break;
case GlobalItemType.TRANSFORMATION_CARD://东海寻仙
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GET_TRANSFIGURATION_CARD_NUM, sItem.getQuantity(), (int) itemNum);
break;
default:break;
}
extraDropAop(user, dropBuilder, sItem);
sendToFront.add(CBean2Proto.getItem(item, -1));
if (sItem.getItemType() == GlobalItemType.EQUIP) {
if (reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD) {
user.getUserMissionManager().onGameEvent(user, GameEvent.GET_EQUIP, sItem.getId(), (int) itemNum);
ReportUtil.onReportEvent(user, ReportEventEnum.GET_EQUIP.getType(), sItem.getId(), (int) itemNum, reason);
}
}
if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GOT_SOUL_MARK, sItem.getId(), (int) itemNum);
}
if (sItem.getId() == Global.DAILY_TASK_REMOVE_ITEM) {
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.DAILY_TASK_FINISH, (int) itemNum);
}
// 日志记录
ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, reason, item, itemNum));
}
// 发送装备图鉴修改推送
@ -832,9 +809,12 @@ public class ItemUtil {
if (extraBol) {
StringBuilder builder = new StringBuilder();
for(Map.Entry<Integer,Integer> entry : extraItem.entrySet()){
SItem item = SItem.getsItemMap().get(entry.getKey());
if (item.getItemType() == Global.EXP){
continue;
}
builder.append(entry.getKey()).append("#").append(entry.getValue());
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
SItem item = SItem.getsItemMap().get(entry.getKey());
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())},new int[]{1,0},"#");
MailLogic.getInstance().sendMail(user.getId(),title,content,builder.toString(),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
builder = new StringBuilder();
@ -968,13 +948,14 @@ public class ItemUtil {
* //zsx 保留 TODO 由事件分发到 Activitylogic 去处理
*/
public static void treasureLevelUp(User user) throws Exception {
PlayerManager playerInfoManager = user.getPlayerInfoManager();
List<SGlobalActivity> activities = SGlobalActivity.sGlobalActivityMapByType.get(ActivityType.TREASURE);
SGlobalActivity activity = activities.stream().filter(a -> user.getActivityManager().getActivityMissionMap().containsKey(a.getId())).findAny().orElse(null);
if(activity==null){
return;
}
STreasureSunlongConfig levelConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(activity.getId()).get(user.getPlayerInfoManager().getTreasureLevel());
STreasureSunlongConfig levelConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(activity.getId()).get(playerInfoManager.getTreasureLevel());
if (levelConfig != null) {
//需要先确定下每级真实需要的经验,与客户端实现方式同步,认为表里填的升到下一级所需经验是前边各级经验总和
int[][] integral = levelConfig.getIntegral();
@ -987,9 +968,9 @@ public class ItemUtil {
costItems = new int[][]{{integral[0][0], integral[0][1] - lastLevelConfig.getIntegral()[0][1]}};
}
while(levelConfig != null && ItemUtil.itemCost(user, costItems, BIReason.TREASURE_LEVEL_UP_CONSUME, 1)){
user.getPlayerInfoManager().addTreasureLevel();
playerInfoManager.addTreasureLevel();
lastLevelConfig = levelConfig;
levelConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(activity.getId()).get(user.getPlayerInfoManager().getTreasureLevel());
levelConfig = STreasureSunlongConfig.levelTreasureConfigMap.get(activity.getId()).get(playerInfoManager.getTreasureLevel());
if (levelConfig != null && levelConfig.getIntegral().length > 0) {
integral = levelConfig.getIntegral();
costItems = new int[][]{{integral[0][0],integral[0][1] - lastLevelConfig.getIntegral()[0][1]}};
@ -997,8 +978,8 @@ public class ItemUtil {
}
}
PlayerInfoProto.TreasureLevelUpIndication indication = PlayerInfoProto.TreasureLevelUpIndication.newBuilder()
.setHadBuy(user.getPlayerInfoManager().getHadBuyTreasure())
.setLevel(user.getPlayerInfoManager().getTreasureLevel()).build();
.setHadBuy(playerInfoManager.getHadBuyTreasure())
.setLevel(playerInfoManager.getTreasureLevel()).build();
MessageUtil.sendIndicationMessage(OnlineUserManager.getSessionByUid(user.getId()),1,MessageTypeProto.MessageType.TREASURE_LEVELUP_INDICATION_VALUE,indication,true);
}
@ -1100,7 +1081,7 @@ public class ItemUtil {
/**
* type = 1 2
*/
public static void baseItemReport(User user,int itemId,int itemNum,int type,int reason) throws Exception {
public static void baseItemReport(User user,int itemId, long itemNum,int type,int reason) throws Exception {
ReportEventEnum item;
switch (itemId){
case ReportUtil.COIN_ID: