Merge branch 'master_test_gn_zf' into 开发/dev_dh
commit
5911e2dc8f
|
@ -253,6 +253,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),10023,0));
|
||||
// 无尽秘宝处理
|
||||
endLessTreasureHandler(user);
|
||||
expeditionTreasureHandler(user);
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,0,user);
|
||||
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.WorldLevelIndication_VALUE, PlayerInfoProto.WorldLevelIndication.newBuilder().setWorldLeve(GlobleSystemLogic.getGlobalWorldLevelCache()).build(), true);
|
||||
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GET_PLAYERINFO_RESPONSE_VALUE, getPlayerInfoResponse, true);
|
||||
|
@ -283,6 +284,22 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 天宫秘宝刷新
|
||||
* @param user
|
||||
*/
|
||||
private void expeditionTreasureHandler(User user){
|
||||
// 天宫秘宝礼包获取
|
||||
ReceiveWelfareBag bagInfo = (ReceiveWelfareBag) user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap().get(106);
|
||||
if (bagInfo == null){
|
||||
return;
|
||||
}
|
||||
// 刷新礼包
|
||||
if (user.getExpeditionManager().getWorldTreasureReward().getIsBuy() == 0 && bagInfo.isBought()){
|
||||
bagInfo.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
///登录获取四象心法数据
|
||||
private List<CommonProto.SixiangxinfaInfo> getSixiangxinfaInfos(HeroManager heroManager) {
|
||||
Map<Integer,SixiangProfessionInfo> sixiangDataMap = heroManager.getSixiangDataMap();
|
||||
|
|
|
@ -152,6 +152,13 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
|
|||
}
|
||||
teamInfo = FightUtil.makeCrossPersonData(csPlayer, proto.getTeamId(), null, crossArenaManager);
|
||||
arenaEnemys = ArenaLogic.getInstance().getUserCrossArenaEnemy(csPlayer,proto.getChallengeRank(),false).build();
|
||||
// 旧数据兼容
|
||||
if (csPlayer.getLuoFuForce() == 0){
|
||||
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
|
||||
if (redis != null){
|
||||
csPlayer = redis;
|
||||
}
|
||||
}
|
||||
defendForce = csPlayer.getLuoFuForce();
|
||||
} else {
|
||||
//机器人
|
||||
|
|
|
@ -26,7 +26,7 @@ public interface ActivityType {
|
|||
// int RechargeTotal = 5; //累计充值
|
||||
int GrowthFund = 6; //成长基金
|
||||
int BLESSACTIVITY = 7;//云梦祈福
|
||||
int TREASURE = 8; //戒灵秘宝(孙龙的宝藏)
|
||||
int TREASURE = 8; //青龙秘宝(孙龙的宝藏)
|
||||
int LUCKYCAT = 9;//招財貓
|
||||
int SERVERHAPPY = 10; //七日狂欢
|
||||
int FORCERANK = 11; //战力排行
|
||||
|
|
|
@ -44,19 +44,13 @@ class ExpectRankActivity extends AbstractActivity {
|
|||
MapManager mapManager = user.getMapManager();
|
||||
TrialInfo trialInfo = mapManager.getTrialInfo();
|
||||
//排除神秘关卡
|
||||
activityMission.setV(count + activityMission.getV());
|
||||
int rankFloor = 0;
|
||||
if(trialInfo.getFloor()<10000 && trialInfo.getFloor() > activityMission.getV()){
|
||||
activityMission.setV(trialInfo.getFloor());
|
||||
rankFloor = trialInfo.getFloor();
|
||||
}else if(trialInfo.getFloor()>10000){
|
||||
activityMission.setV(trialInfo.getFloor()-10000);
|
||||
rankFloor = trialInfo.getFloor()-10000;
|
||||
}
|
||||
if( rankFloor!=0 ){
|
||||
RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(),String.valueOf(id),rankFloor);
|
||||
}
|
||||
|
||||
}
|
||||
RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(),String.valueOf(id),activityMission.getV());
|
||||
}else{
|
||||
activityMission.setV(count + activityMission.getV());
|
||||
}
|
||||
|
|
|
@ -25,9 +25,8 @@ class GrowthFundActivity extends AbstractActivity {
|
|||
int[][] values = sActivityRewardConfig.getValues();
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
AbstractWelfareBag bag = user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap().get(sGlobalActivity.getCanBuyRechargeId()[0]);
|
||||
int buyTimes = bag.getBuyTimes();
|
||||
if(buyTimes == 0){
|
||||
ReceiveWelfareBag bag = (ReceiveWelfareBag)user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap().get(sGlobalActivity.getCanBuyRechargeId()[0]);
|
||||
if (!bag.isBought()){
|
||||
return false;
|
||||
}
|
||||
int type = values[0][0];
|
||||
|
@ -43,14 +42,6 @@ class GrowthFundActivity extends AbstractActivity {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityEndOnMySelf(User user) throws Exception {
|
||||
// SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
// if(sGlobalActivity.getCanBuyRechargeId()!=null&&sGlobalActivity.getCanBuyRechargeId().length>0){
|
||||
// Arrays.stream(sGlobalActivity.getCanBuyRechargeId()).forEach(n->user.getPlayerInfoManager().getRechargeInfo().updateBuyGoodsTimes(n,0));
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
void updateProgress(ActivityMission activityMission, int count) {
|
||||
activityMission.setV(count);
|
||||
|
|
|
@ -107,43 +107,43 @@ public class CrossServiceLogic {
|
|||
}
|
||||
|
||||
private static CSPlayer formatUserToPlayer(User user){
|
||||
CSPlayer csPlayer = CrossServiceLogic.getPlayerByRedis(user.getId());
|
||||
CSPlayer csPlayer = RedisUtil.getInstence().getObject(getKey(user.getId()), CSPlayer.class);
|
||||
int newScore=0,oldScore =0,crossYxldMaxLevel=0 ;
|
||||
if (csPlayer != null) {
|
||||
newScore = csPlayer.getCrossYuxulundaoNewScore();
|
||||
oldScore = csPlayer.getCrossYuxulundaoOldScore();
|
||||
crossYxldMaxLevel = csPlayer.getCrossYxldMaxLevel();
|
||||
} else {
|
||||
csPlayer = new CSPlayer();
|
||||
}
|
||||
|
||||
CSPlayer player = new CSPlayer();
|
||||
PlayerManager p = user.getPlayerInfoManager();
|
||||
player.setUserId(user.getId());
|
||||
player.setLevel(p.getLevel());
|
||||
player.setName(p.getNickName());
|
||||
player.setHead(p.getHead());
|
||||
player.setHeadFrame(p.getHeadFrame());
|
||||
player.setSkin(p.getUserSkin());
|
||||
player.setUserTitle(p.getUserTitle());
|
||||
player.setPracticeLevel(user.getHeroManager().getPracticeLevel());
|
||||
player.setServerId(GameApplication.serverId);
|
||||
player.setSex(p.getSex());
|
||||
player.setUserMount(p.getUserMount());
|
||||
player.setCrossYuxulundaoNewScore(newScore);
|
||||
player.setCrossYuxulundaoOldScore(oldScore);
|
||||
player.setGuildId(p.getGuildId());
|
||||
player.setCrossYxldMaxLevel(crossYxldMaxLevel);
|
||||
csPlayer.setUserId(user.getId());
|
||||
csPlayer.setLevel(p.getLevel());
|
||||
csPlayer.setName(p.getNickName());
|
||||
csPlayer.setHead(p.getHead());
|
||||
csPlayer.setHeadFrame(p.getHeadFrame());
|
||||
csPlayer.setSkin(p.getUserSkin());
|
||||
csPlayer.setUserTitle(p.getUserTitle());
|
||||
csPlayer.setPracticeLevel(user.getHeroManager().getPracticeLevel());
|
||||
csPlayer.setServerId(GameApplication.serverId);
|
||||
csPlayer.setSex(p.getSex());
|
||||
csPlayer.setUserMount(p.getUserMount());
|
||||
csPlayer.setCrossYuxulundaoNewScore(newScore);
|
||||
csPlayer.setCrossYuxulundaoOldScore(oldScore);
|
||||
csPlayer.setGuildId(p.getGuildId());
|
||||
csPlayer.setCrossYxldMaxLevel(crossYxldMaxLevel);
|
||||
//玉虚三个队伍总战力
|
||||
int force1 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_ONE.getTeamId(), false);
|
||||
int force2 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_TWO.getTeamId(), false);
|
||||
int force3 = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_YU_XU_LUN_DAO_THREE.getTeamId(), false);
|
||||
player.setMaxFore(force1+force2+force3);
|
||||
csPlayer.setMaxFore(force1+force2+force3);
|
||||
// 主线编队战力
|
||||
int mainLine = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false);
|
||||
player.setMainLineForce(mainLine);
|
||||
csPlayer.setMainLineForce(mainLine);
|
||||
// 罗浮编队战力
|
||||
int luoFu = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false);
|
||||
player.setLuoFuForce(luoFu);
|
||||
return player;
|
||||
csPlayer.setLuoFuForce(luoFu);
|
||||
return csPlayer;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -684,6 +684,15 @@ public class ArenaLogic {
|
|||
CrossArenaManager crossArenaManager = null;
|
||||
if (csPlayer.getServerId() != GameApplication.serverId){
|
||||
crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
|
||||
if(crossArenaManager.getTotalForceByTeam().containsKey(myteamId)){
|
||||
deforce = crossArenaManager.getTotalForceByTeam().get(myteamId);
|
||||
}
|
||||
}else{
|
||||
User defUser = UserManager.getUserNotCache(challengeUid);
|
||||
if (defUser == null){
|
||||
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);
|
||||
}
|
||||
deforce = HeroLogic.getInstance().calTeamTotalForce(defUser, myteamId, false);
|
||||
}
|
||||
deffightTeamInfo = FightUtil.makeCrossPersonData(csPlayer, myteamId, null, crossArenaManager);
|
||||
}
|
||||
|
@ -1001,6 +1010,13 @@ public class ArenaLogic {
|
|||
Object get = RedisUtil.getInstence().hget(RedisKey.ARENA_PROUD_COUNT, String.valueOf(csPlayer.getUserId()));
|
||||
int proudTime = get==null?1:Integer.parseInt((String)get);
|
||||
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
|
||||
// 旧数据兼容
|
||||
if (csPlayer.getLuoFuForce() == 0){
|
||||
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
|
||||
if (redis != null){
|
||||
csPlayer = redis;
|
||||
}
|
||||
}
|
||||
CommonProto.ArenaPersonInfo personInfoBuild = CommonProto.ArenaPersonInfo.newBuilder()
|
||||
.setUid(csPlayer.getUserId())
|
||||
.setLevel(csPlayer.getLevel())
|
||||
|
|
|
@ -45,7 +45,7 @@ public class UserManager {
|
|||
private static Map<Integer,Long> userMapPutTime = new ConcurrentHashMap<>(); //离线读入
|
||||
private static AtomicInteger login_f_num = new AtomicInteger(0);//登陆计数
|
||||
private static final int LOGIN_F_LIMIT = 100;//报警界限
|
||||
private static final long LIVE_TIME = 60 * 60 * 1000L;
|
||||
private static final long LIVE_TIME = 12 * 60 * 60 * 1000L;
|
||||
|
||||
public static void addUser(User user) {
|
||||
userMap.put(user.getId(), user);
|
||||
|
@ -62,43 +62,37 @@ public class UserManager {
|
|||
|
||||
//离线清除逻辑
|
||||
public static void checkOffline(){
|
||||
// try {
|
||||
// Set<User> collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet());
|
||||
// if (OnlineUserManager.sessionMap.entrySet().isEmpty() && ChampionshipLogic.getProgress() == -1) {
|
||||
// userMap.clear();
|
||||
// userMapPutTime.clear();
|
||||
// LOGGER.info("checkOffline no online clear all {}", userMap.keySet().size());
|
||||
// return;
|
||||
// }
|
||||
// long now = System.currentTimeMillis();
|
||||
// for (User integerUserEntry : collect) {
|
||||
// Long addTime = userMapPutTime.getOrDefault(integerUserEntry.getId(), LIVE_TIME);
|
||||
// if (now - addTime >= LIVE_TIME) {
|
||||
// userMap.remove(integerUserEntry.getId());
|
||||
// userMapPutTime.remove(integerUserEntry.getId());
|
||||
// }
|
||||
// }
|
||||
// LOGGER.info("checkOffline left count={}", userMap.keySet().size());
|
||||
// }catch (Exception e){
|
||||
// LOGGER.error("Exception离线清除逻辑err={}",e.toString());
|
||||
// }
|
||||
try {
|
||||
Set<User> collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet());
|
||||
long l = System.currentTimeMillis();
|
||||
collect.forEach(integerUserEntry -> {
|
||||
long offLineTime = integerUserEntry.getPlayerInfoManager().getOffLineTime();
|
||||
if (offLineTime < integerUserEntry.getPlayerInfoManager().getOnlineTime()) {
|
||||
return;
|
||||
}
|
||||
if (l - offLineTime > 12 * 60 * 60 * 1000 && userMapPutTime.getOrDefault(integerUserEntry.getId(), 0L) > 12 * 60 * 60 * 1000) {
|
||||
long now = System.currentTimeMillis();
|
||||
for (User integerUserEntry : collect) {
|
||||
Long addTime = userMapPutTime.getOrDefault(integerUserEntry.getId(), LIVE_TIME);
|
||||
if (now - addTime >= LIVE_TIME) {
|
||||
userMap.remove(integerUserEntry.getId());
|
||||
userMapPutTime.remove(integerUserEntry.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
LOGGER.info("checkOffline left count={}", userMap.keySet().size());
|
||||
}catch (Exception e){
|
||||
LOGGER.error("Exception离线清除逻辑err={}",e.toString());
|
||||
}
|
||||
// try {
|
||||
// Set<User> collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet());
|
||||
// long l = System.currentTimeMillis();
|
||||
// collect.forEach(integerUserEntry -> {
|
||||
// long offLineTime = integerUserEntry.getPlayerInfoManager().getOffLineTime();
|
||||
// if (offLineTime < integerUserEntry.getPlayerInfoManager().getOnlineTime()) {
|
||||
// return;
|
||||
// }
|
||||
// if (l - offLineTime > 12 * 60 * 60 * 1000 && userMapPutTime.getOrDefault(integerUserEntry.getId(), 0L) > 12 * 60 * 60 * 1000) {
|
||||
// userMap.remove(integerUserEntry.getId());
|
||||
// userMapPutTime.remove(integerUserEntry.getId());
|
||||
// }
|
||||
// });
|
||||
// LOGGER.info("checkOffline left count={}", userMap.keySet().size());
|
||||
// } catch (Exception e) {
|
||||
// LOGGER.error("Exception离线清除逻辑err={}", e.toString());
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
@ -209,6 +203,7 @@ public class UserManager {
|
|||
public static User getUser(int uid,boolean canNull) throws Exception {
|
||||
User user = userMap.get(uid);
|
||||
if (user != null) {
|
||||
userMapPutTime.put(uid, TimeUtils.now());
|
||||
return user;
|
||||
}
|
||||
user = MongoUtil.getInstence().getMyMongoTemplate().findById(User.getCollectionName(), uid, User.class);
|
||||
|
|
|
@ -36,7 +36,6 @@ public class WorldTreasureReward extends MongoBase {
|
|||
score = 0;
|
||||
setRewardStatusMap(new HashMap<>());
|
||||
setIsBuy(0);
|
||||
// updateRound(round+1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.ljsd.jieling.logic.dao.cross;
|
||||
|
||||
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.db.mongo.AreaManager;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
|
@ -191,6 +192,7 @@ public class CSPlayer {
|
|||
}
|
||||
|
||||
public int getServerId() {
|
||||
int serverId = AreaManager.getInstance().getServerIdByUid(userId, GameApplication.serverId);
|
||||
return serverId;
|
||||
}
|
||||
|
||||
|
@ -231,10 +233,6 @@ public class CSPlayer {
|
|||
}
|
||||
|
||||
public int getMainLineForce() {
|
||||
if (mainLineForce == 0){
|
||||
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(userId, false);
|
||||
mainLineForce = redis==null?0:redis.getMainLineForce();
|
||||
}
|
||||
return mainLineForce;
|
||||
}
|
||||
|
||||
|
@ -243,10 +241,6 @@ public class CSPlayer {
|
|||
}
|
||||
|
||||
public int getLuoFuForce() {
|
||||
if (mainLineForce == 0){
|
||||
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(userId, false);
|
||||
luoFuForce = redis==null?0:redis.getLuoFuForce();
|
||||
}
|
||||
return luoFuForce;
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.ljsd.jieling.logic.mail.MailLogic;
|
|||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
|
||||
import com.ljsd.jieling.logic.store.StoreLogic;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
|
@ -550,6 +551,12 @@ public class ExpeditionLogic {
|
|||
//重置
|
||||
if(TimeUtils.nowInt()>=createTime){
|
||||
user.getExpeditionManager().resetTreasureReward();
|
||||
// 天宫秘宝礼包刷新
|
||||
ReceiveWelfareBag bagInfo = (ReceiveWelfareBag) user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap().get(106);
|
||||
if (bagInfo == null){
|
||||
return;
|
||||
}
|
||||
bagInfo.refresh();
|
||||
sendAllTreasureInfo(user);
|
||||
BuyGoodsNewLogic.sendGiftGooodsIndication(user.getId());
|
||||
}
|
||||
|
|
|
@ -330,13 +330,16 @@ public class FriendLogic {
|
|||
public void sendAgree(ISession iSession, int type, int friendId ) throws Exception {
|
||||
int msgId = MessageTypeProto.MessageType.FRIEND_INVITE_OPERATION_RESPONSE_VALUE;
|
||||
int uid = iSession.getUid();
|
||||
// 自己的信息
|
||||
User user = UserManager.getUser(uid);
|
||||
FriendManager friendManager = user.getFriendManager();
|
||||
User friendUser = UserManager.getUserNotCache(friendId);
|
||||
if (friendId == 0 || friendUser == null){
|
||||
return;
|
||||
// 好友的信息
|
||||
User friendUser = null;
|
||||
FriendManager friendManager1 = null;
|
||||
if(friendId!=0){
|
||||
friendUser = UserManager.getUserNotCache(friendId);
|
||||
friendManager1 = friendUser.getFriendManager();
|
||||
}
|
||||
FriendManager friendManager1 = friendUser.getFriendManager();
|
||||
List<Integer> friends = friendManager.getFriends();
|
||||
List<Integer> applyFriends = friendManager.getApplyFriends();
|
||||
int maxFriends = SSpecialConfig.getIntegerValue(SSpecialConfig.FRIENDAMOUNT_LIMIT);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.ljsd.jieling.logic.hero;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.gson.Gson;
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.fight.FamilyHeroInfo;
|
||||
import com.ljsd.jieling.chat.logic.ChatLogic;
|
||||
|
@ -1222,7 +1224,7 @@ public class HeroLogic {
|
|||
if (teamId == TeamEnum.FORMATION_NORMAL.getTeamId()) {
|
||||
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid()));
|
||||
}
|
||||
//跨服 玉虚论道
|
||||
//跨服编队
|
||||
if (TeamEnum.isCrossTeam(teamId)) {
|
||||
CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user);
|
||||
}
|
||||
|
@ -2728,7 +2730,16 @@ public class HeroLogic {
|
|||
if (propertyItem == null) {
|
||||
continue;
|
||||
}
|
||||
Jewel j = (Jewel) propertyItem;
|
||||
Jewel j = null;
|
||||
if (propertyItem instanceof Jewel){
|
||||
j = (Jewel) propertyItem;
|
||||
}else {
|
||||
j = new Jewel();
|
||||
j.setHeroId(propertyItem.getHeroId());
|
||||
j.setLevel(propertyItem.getLevel());
|
||||
j.setEquipId(propertyItem.getEquipId());
|
||||
j.setBuildLevel(1);
|
||||
}
|
||||
SJewelConfig config = STableManager.getConfig(SJewelConfig.class).get(j.getEquipId());
|
||||
// 进阶
|
||||
Map<Integer, Map<Integer, SJewelRankupConfig>> rankPoolMap = SJewelRankupConfig.rankupMap.get(config.getRankupPool());
|
||||
|
@ -3300,7 +3311,6 @@ public class HeroLogic {
|
|||
if (heroManager.getHero(equip.getHeroId()) == null) {
|
||||
equip.setHeroId("");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
String remove = "";
|
||||
|
|
|
@ -336,9 +336,12 @@ public class ItemLogic {
|
|||
throw new ErrorCodeException(ErrorCode.ITEM_DECOMPOSE_NO_EQUIP);
|
||||
}
|
||||
PropertyItem propertyItem = equipMap.get(jewelId);
|
||||
if (!StringUtil.isEmpty(propertyItem.getHeroId())&&user.getHeroManager().getHero(propertyItem.getHeroId())!=null) {
|
||||
if (!StringUtil.isEmpty(propertyItem.getHeroId())) {
|
||||
Hero hero = user.getHeroManager().getHero(propertyItem.getHeroId());
|
||||
if (hero != null && hero.getJewelInfo().contains(jewelId)) {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_DECOMPOSE_SOULE_CANT);
|
||||
}
|
||||
}
|
||||
Jewel jewel = (Jewel) propertyItem;
|
||||
SJewelConfig config = STableManager.getConfig(SJewelConfig.class).get(propertyItem.getEquipId());
|
||||
if (jewel.getLevel() == 0 && jewel.getBuildLevel() == 0) {
|
||||
|
@ -781,18 +784,27 @@ public class ItemLogic {
|
|||
}
|
||||
|
||||
public static TreeSet<String> getJewelEquipWithLeve(User user, int type, int rance, int leve) {
|
||||
return user.getEquipManager().getEquipMap().entrySet().stream().filter(stringEquipEntry ->
|
||||
StringUtil.isEmpty(stringEquipEntry.getValue().getHeroId())
|
||||
).filter(stringPropertyItemEntry -> stringPropertyItemEntry.getValue() instanceof Jewel).filter(stringPropertyItemEntry -> {
|
||||
if (((Jewel) stringPropertyItemEntry.getValue()).getBuildLevel() != 0 || stringPropertyItemEntry.getValue().getLevel() != 0) {
|
||||
return false;
|
||||
}
|
||||
TreeSet<String> strings = new TreeSet<>();
|
||||
for (Map.Entry<String, PropertyItem> stringPropertyItemEntry : user.getEquipManager().getEquipMap().entrySet()) {
|
||||
SJewelConfig config = STableManager.getConfig(SJewelConfig.class).get(stringPropertyItemEntry.getValue().getEquipId());
|
||||
if (config == null) {
|
||||
return false;
|
||||
continue;
|
||||
}
|
||||
return config.getLocation() == type && config.getRace() == rance && config.getLevel() == leve;
|
||||
}).map(Map.Entry::getKey).collect(Collectors.toCollection(TreeSet::new));
|
||||
if (config.getLocation() != type || config.getRace() != rance || config.getLevel() != leve) {
|
||||
continue;
|
||||
}
|
||||
if (!StringUtil.isEmpty(stringPropertyItemEntry.getValue().getHeroId())) {
|
||||
Hero hero = user.getHeroManager().getHero(stringPropertyItemEntry.getValue().getHeroId());
|
||||
if (hero != null && hero.getJewelInfo().contains(stringPropertyItemEntry.getKey())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (((Jewel) stringPropertyItemEntry.getValue()).getBuildLevel() != 0 || stringPropertyItemEntry.getValue().getLevel() != 0) {
|
||||
continue;
|
||||
}
|
||||
strings.add(stringPropertyItemEntry.getValue().getId());
|
||||
}
|
||||
return strings;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1710,6 +1710,9 @@ public class PlayerLogic {
|
|||
}
|
||||
}
|
||||
String rpcString = RedisUtil.getInstence().getObject(RedisKey.LOGIC_SERVER_INFO, Integer.toString(serverId), String.class, -1);
|
||||
if (rpcString == null) {
|
||||
return null;
|
||||
}
|
||||
String[] split = rpcString.split(":");
|
||||
if (split.length < 4) {
|
||||
LOGGER.error("获取玩家rpc地址,长度错误,rpc:{},玩家id:{},服务器id:{}", rpcString, uid, serverId);
|
||||
|
@ -1736,7 +1739,8 @@ public class PlayerLogic {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
if (userStr == null) {
|
||||
if (userStr == null || userStr.isEmpty()) {
|
||||
LOGGER.error("getUserByRpc ,userStr == null uid={}", uid);
|
||||
return null;
|
||||
}
|
||||
Gson gson = RedisUtil.getInstence().getGson();
|
||||
|
|
|
@ -267,6 +267,13 @@ public abstract class AbstractRank implements IRank {
|
|||
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
|
||||
String serverName = CrossServiceLogic.simplifyServerName(csPlayer.getServerId());
|
||||
GuildCache mapEntry = CrossDeathPathLogic.getCrossGuild(csPlayer.getGuildId());
|
||||
// 兼容
|
||||
if (csPlayer.getMainLineForce() == 0){
|
||||
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
|
||||
if (redis != null){
|
||||
csPlayer = redis;
|
||||
}
|
||||
}
|
||||
return CommonProto.UserRank.newBuilder()
|
||||
.setUid(csPlayer.getUserId())
|
||||
.setLevel(csPlayer.getLevel())
|
||||
|
|
|
@ -76,6 +76,13 @@ public class CrossArenaRank extends AbstractRank {
|
|||
if (query == null){
|
||||
return;
|
||||
}
|
||||
// 旧数据兼容
|
||||
if (query.getLuoFuForce() == 0){
|
||||
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(query.getUserId(), false);
|
||||
if (redis != null){
|
||||
query = redis;
|
||||
}
|
||||
}
|
||||
CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(index)
|
||||
.setParam1(query.getLuoFuForce())
|
||||
|
@ -89,6 +96,13 @@ public class CrossArenaRank extends AbstractRank {
|
|||
@Override
|
||||
public CommonProto.UserRank.Builder getCrossOneUserRank(CSPlayer csPlayer, CommonProto.RankInfo.Builder everyRankInfo){
|
||||
CommonProto.UserRank.Builder oneUserRank = super.getCrossOneUserRank(csPlayer, everyRankInfo);
|
||||
// 旧数据兼容
|
||||
if (csPlayer.getLuoFuForce() == 0){
|
||||
CSPlayer redis = CrossServiceLogic.getPlayerByRedis(csPlayer.getUserId(), false);
|
||||
if (redis != null){
|
||||
csPlayer = redis;
|
||||
}
|
||||
}
|
||||
oneUserRank.setForce(csPlayer.getLuoFuForce());
|
||||
return oneUserRank;
|
||||
}
|
||||
|
|
|
@ -786,7 +786,12 @@ public class BuyGoodsNewLogic {
|
|||
}else{
|
||||
builder.setDynamicBuyTimes(bag.getLimit() - bag.getBuyTimes());
|
||||
}
|
||||
|
||||
// 礼包类型特殊处理,使用bought字段验证是否购买
|
||||
if(bag.getType() == RechargeType.receive.getType()){
|
||||
ReceiveWelfareBag receiveBag = (ReceiveWelfareBag) bag;
|
||||
int bought = receiveBag.isBought()?1:0;
|
||||
builder.setIsBought(bought);
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,6 @@ public class ReceiveWelfareBag extends AbstractWelfareBag {
|
|||
|
||||
@Override
|
||||
public boolean buy() {
|
||||
if(super.buy()){
|
||||
if (bought) {
|
||||
LOGGER.error("礼包:{}已经购买", getModId());
|
||||
return false;
|
||||
|
@ -74,8 +73,6 @@ public class ReceiveWelfareBag extends AbstractWelfareBag {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refresh(){
|
||||
|
|
Loading…
Reference in New Issue