Merge branch 'master_dev' into cycle_activity
commit
065d492cde
|
@ -6,16 +6,18 @@ import com.ljsd.jieling.db.redis.RedisUtil;
|
|||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import com.ljsd.jieling.logic.dao.Item;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.family.GuildLogic;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 通用修复,在线后台修改玩家数据
|
||||
* // general unlockfaxiang uid
|
||||
*/
|
||||
public class Cmd_general extends GmAbstract {
|
||||
|
||||
|
@ -102,6 +104,32 @@ public class Cmd_general extends GmAbstract {
|
|||
}
|
||||
LOGGER.info("查询用户字符串......{}",args[1]);
|
||||
break;
|
||||
case "unlockfaxiang":
|
||||
try {
|
||||
int uid = Integer.parseInt(args[1]);
|
||||
User user = UserManager.getUser(uid);
|
||||
if (user == null){
|
||||
LOGGER.error("用户找不到");
|
||||
}else {
|
||||
EquipManager equipManager = user.getEquipManager();
|
||||
List<PropertyItem> faxiangList = equipManager.getFaxiangList();
|
||||
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
||||
for (PropertyItem item : faxiangList) {
|
||||
String faxiangId = item.getId();
|
||||
String heroId = item.getHeroId();
|
||||
if (!heroId.isEmpty()){
|
||||
Hero hero = heroMap.get(heroId);
|
||||
if (hero == null || !hero.getFaxiangList().contains(faxiangId)){
|
||||
equipManager.unloadFaxiang(faxiangId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
LOGGER.info("卸载用户法相......{}",args[1]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ public class UserManager {
|
|||
user.getUserMissionManager().onGameEvent(user, GameEvent.BEGINNER);
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.VIP_LEVLUP, MissionType.VIP_LEVEL,0);
|
||||
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.LOGIN_TIMES.getType(),1));
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.CREATE_ROLE.getType());//先发送注册事件
|
||||
ActivityLogic.getInstance().newPlayerOpenActivityMission(user);
|
||||
ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD);
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
Map<String, Hero> heroMap = heroManager.getHeroMap();
|
||||
|
@ -179,10 +179,9 @@ public class UserManager {
|
|||
teamPosManager.addTeamOfInitPlayer(teamHeros);
|
||||
long force = HeroLogic.getInstance().calTeamTotalForce(user, 1);
|
||||
playerManager.setMaxForce(force);
|
||||
ActivityLogic.getInstance().newPlayerOpenActivityMission(user);
|
||||
user.getExpeditionManager().setExpeditionLeve(1);
|
||||
CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user);//初始化角色
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserRegister);
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.CREATE_ROLE.getType());//先发送注册事件
|
||||
}
|
||||
|
||||
public static User getUser(int uid,boolean canNull) throws Exception {
|
||||
|
|
|
@ -6376,7 +6376,7 @@ public class HeroLogic {
|
|||
}
|
||||
// 避免zero异常
|
||||
if (count == 0) {
|
||||
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
|
||||
count = averageNum;
|
||||
}
|
||||
return count / averageNum;
|
||||
}
|
||||
|
|
|
@ -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,50 @@ 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);
|
||||
// id
|
||||
switch (id){
|
||||
case Global.EXP://经验
|
||||
userLevelUp(user, itemNum);
|
||||
break;
|
||||
case Global.TREASURE_SCORE://青龙秘宝积分
|
||||
treasureLevelUp(user);
|
||||
break;
|
||||
case Global.DAILY_TASK_REMOVE_ITEM:
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.DAILY_TASK_FINISH, (int) itemNum);
|
||||
break;
|
||||
default:break;
|
||||
}
|
||||
if (sItem.getId() == Global.TREASURE_SCORE) {
|
||||
treasureLevelUp(user);
|
||||
|
||||
// 类型
|
||||
switch (sItem.getItemType()){
|
||||
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 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 (id != Global.EXP){
|
||||
sendToFront.add(CBean2Proto.getItem(item, -1));
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
// 发送装备图鉴修改推送
|
||||
|
@ -824,21 +810,31 @@ public class ItemUtil {
|
|||
dropBuilder.addAllItemlist(itemProtoList);
|
||||
}
|
||||
|
||||
boolean extraBol = !extraItem.isEmpty();
|
||||
if (!sendToFront.isEmpty() || extraBol) {
|
||||
MessageUtil.sendBagIndication(user.getId(), 0, sendToFront, extraBol);
|
||||
// 经验道具特殊,不发邮件
|
||||
Iterator<Map.Entry<Integer, Integer>> iterator = extraItem.entrySet().iterator();
|
||||
while (iterator.hasNext()){
|
||||
Integer itemId = iterator.next().getKey();
|
||||
SItem item = SItem.getsItemMap().get(itemId);
|
||||
if (item.getId() == Global.EXP){
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
|
||||
boolean extraBol = !extraItem.isEmpty();
|
||||
if (extraBol) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for(Map.Entry<Integer,Integer> entry : extraItem.entrySet()){
|
||||
SItem item = SItem.getsItemMap().get(entry.getKey());
|
||||
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();
|
||||
}
|
||||
MessageUtil.sendBagIndication(user.getId(), 0, sendToFront, true);
|
||||
}
|
||||
else if (!sendToFront.isEmpty()) {
|
||||
MessageUtil.sendBagIndication(user.getId(), 0, sendToFront, false);
|
||||
}
|
||||
|
||||
Poster.getPoster().dispatchEvent(new AddItemEvent(user.getId(),itemMap));
|
||||
|
@ -968,13 +964,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 +984,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 +994,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 +1097,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:
|
||||
|
|
Loading…
Reference in New Issue