Merge branch 'master_test_gn' of http://60.1.1.230/backend/jieling_server into master_test_gn

back_recharge
jiahuiwen 2021-11-27 15:43:34 +08:00
commit f929ea69db
12 changed files with 187 additions and 26 deletions

View File

@ -279,16 +279,18 @@ public class GetPlayerInfoHandler extends BaseHandler{
*/
private void finalActivityReset(User user){
Map<Integer, ActivityMission> missionMap = user.getActivityManager().getActivityMissionMap();
int choiceDrawId = 20012;
int specialMonsterId = 14501;
// 限时招募
ActivityMission mission = missionMap.get(20012);
ActivityMission mission = missionMap.get(choiceDrawId);
if (mission != null){
ChoiceDrawCardActivity activity = (ChoiceDrawCardActivity)ActivityTypeEnum.getActicityType(20012);
ChoiceDrawCardActivity activity = (ChoiceDrawCardActivity)ActivityTypeEnum.getActicityType(choiceDrawId);
activity.checkResetProgress(user,mission);
}
// 灵兽招募
ActivityMission mission2 = missionMap.get(14501);
ActivityMission mission2 = missionMap.get(specialMonsterId);
if (mission2 != null){
LimitRandomSpecialMonsterActivityNew activity = (LimitRandomSpecialMonsterActivityNew)ActivityTypeEnum.getActicityType(14501);
LimitRandomSpecialMonsterActivityNew activity = (LimitRandomSpecialMonsterActivityNew)ActivityTypeEnum.getActicityType(specialMonsterId);
activity.checkResetProgress(user,mission2);
}
}

View File

@ -0,0 +1,40 @@
package com.ljsd.jieling.handler.activity;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil;
import rpc.protocols.ActivityProto;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class GetTrumpSelectItemHandler extends BaseHandler<ActivityProto.GetTrumpSelectItemRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.GET_TRUMP_SELECT_ITEM_REQUEST;
}
/**
* up
* @param session
* @param proto
* @throws Exception
*/
@Override
public void processWithProto(ISession session, ActivityProto.GetTrumpSelectItemRequest proto) throws Exception{
ActivityProto.GetTrumpSelectItemResponse.Builder builder = ActivityProto.GetTrumpSelectItemResponse.newBuilder();
User user = UserManager.getUser(session.getUid());
List<Integer>selectList=new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : user.getHeroManager().getTrumpSelectItemMap().entrySet()) {
selectList.add(entry.getValue());
}
builder.addAllSelectIds(selectList);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GET_TRUMP_SELECT_ITEM_RESPONSE_VALUE, builder.build(), true);
}
}

View File

@ -0,0 +1,46 @@
package com.ljsd.jieling.handler.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil;
import org.springframework.stereotype.Component;
import rpc.protocols.ActivityProto;
import rpc.protocols.MessageTypeProto;
import java.util.HashMap;
import java.util.Map;
/**
* @author lvxinran
* @date 2020/11/11
* @discribe
*/
@Component
public class TrumpGachaSelectItemRequestHandler extends BaseHandler<ActivityProto.TrumpGachaSelectItemRequest>{
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.TRUMP_GACHA_SELECT_ITEM_REQUEST;
}
@Override
public void processWithProto(ISession iSession, ActivityProto.TrumpGachaSelectItemRequest proto) throws Exception {
User user = UserManager.getUser(iSession.getUid());
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
ActivityMission activityMission = activityMissionMap.get(proto.getActivityId());
if(activityMission==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < proto.getSelectIdsList().size(); i++) {
map.put(i+1,proto.getSelectIdsList().get(i));
}
user.getHeroManager().setTrumpSelectItemMap(map);
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TRUMP_GACHA_SELECT_ITEM_RESPONSE_VALUE,null,true);
}
}

View File

@ -118,6 +118,7 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
} else if (fightResult.getResult() == 1) {
//赢了
//结算已有的灵脉
int score =0;
if (myLingmaiId != 0){
LingMaiSecretArea myLingmai = lingMaiMap.get(String.valueOf(myLingmaiId));
config = SLodeConfig.lodeConfig.get(myLingmaiId);
@ -128,7 +129,7 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
myLingmai.setScore1(myLingmai.getScore1() + minute*config.getRewardList()[0][1]+(second*config.getRewardList()[0][1]/60));
//myLingmai.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
LOGGER.info("uid:"+uid+"first occupy myLingmaiId: "+myLingmaiId+" minute:"+minute+"second:"+second);
int score = myLingmai.getScore1() + config.getRewardList()[0][1] * myLingmai.getOccupyTime()/60;
score = myLingmai.getScore1() + config.getRewardList()[0][1] * myLingmai.getOccupyTime()/60;
rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType());
rank.addRank(user.getId(), String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score);
//清除已有灵脉数据
@ -136,8 +137,23 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
RedisUtil.getInstence().removeMapEntrys(RedisKey.CROSS_LINGMAISECRET_INFO,
crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(myLingmaiId));
}
LingMaiSecretArea lingMaiSecretArea = CrossLingmaiLogic.getLingaMaiData(id, uid,crossGroup,group);
LingMaiSecretArea lingMaiSecretArea = new LingMaiSecretArea();
lingMaiSecretArea.setId(id);
lingMaiSecretArea.setUid(uid);
String serverName = CrossServiceLogic.simplifyServerName(GameApplication.serverId);
lingMaiSecretArea.setServerName(serverName);
lingMaiSecretArea.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
lingMaiSecretArea.setBeginOccupyTime(TimeUtils.nowInt());
if(myLingmaiId != 0&&score!=0){
lingMaiSecretArea.setScore1(score);
}
//被打下榜 重新上
if(myLingmaiId ==0){
double disappearScore = rank.getScoreById(uid, crossGroup + RedisKey.Delimiter_colon + group);
if(disappearScore>0){
lingMaiSecretArea.setScore1((int) disappearScore);
}
}
RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea);
}
res.setResult(fightResult.getResult());
@ -190,33 +206,44 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
60 : ((TimeUtils.nowInt() - (int)oldOwner.getGetAwardTimeOrOccupyTime()) % 60);
long tempScore = second*config.getRewardList()[0][1]/60;
LOGGER.info("uid:"+uid+"pvp other occupy id:"+id+" minute:"+minute+"second:"+second);
oldOwner.setScore1(oldOwner.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore);
long score = oldOwner.getScore1() + config.getRewardList()[0][1]*(long)oldOwner.getOccupyTime()/60;
rank.addRank(defUid, String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score);
//oldOwner.setScore1(oldOwner.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore);
int score1 =oldOwner.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore;
long scoreOld = score1 + config.getRewardList()[0][1]*(long)oldOwner.getOccupyTime()/60;
rank.addRank(defUid, String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, scoreOld);
LingMaiSecretArea myLingmai =null;
if (myLingmaiId != 0) {
//本人已有灵脉结算
LingMaiSecretArea myLingmai = lingMaiMap.get(String.valueOf(myLingmaiId));//上一个占领者
myLingmai = lingMaiMap.get(String.valueOf(myLingmaiId));//上一个占领者
config = SLodeConfig.lodeConfig.get(myLingmaiId);
//minute = ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) / 60) > 10 ? 10 : ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) / 60);
minute = ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) / 60);
second =((TimeUtils.nowInt() - (int)oldOwner.getGetAwardTimeOrOccupyTime()) % 60) >60 ?
60 : ((TimeUtils.nowInt() - (int)oldOwner.getGetAwardTimeOrOccupyTime()) % 60);
second =((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) % 60) >60 ?
60 : ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) % 60);
LOGGER.info("uid:"+uid+"pvp owner occupy id:"+myLingmaiId+" minute:"+minute+"second:"+second);
tempScore =(second*config.getRewardList()[0][1]/60);
myLingmai.setScore1(myLingmai.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore);
score1 = myLingmai.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore;
//long newScore = score1+
//myLingmai.setScore1(myLingmai.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore);
myLingmai.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
score = myLingmai.getScore1() + config.getRewardList()[0][1] * (long)myLingmai.getOccupyTime()/60;
//我的
long score = score1 + config.getRewardList()[0][1] * (long)myLingmai.getOccupyTime()/60;
rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType());
rank.addRank(user.getId(), String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score);
myLingmai.setScore1((int)score);
//两边都计算分 置换
//oldOwner.setScore1(score);
oldOwner.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
oldOwner.setId(myLingmaiId);
oldOwner.setBeginOccupyTime(TimeUtils.nowInt());
oldOwner.setOccupyTime(0);
oldOwner.setScore1((int)scoreOld);
RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(myLingmaiId), oldOwner);
}
//易主
LingMaiSecretArea lingMaiSecretArea = CrossLingmaiLogic.getLingaMaiData(id, uid,crossGroup,group);
if(myLingmai!=null){
lingMaiSecretArea.setScore1(myLingmai.getScore1());
}
RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea);
//挑战者记录
String key1 = RedisKey.getKey(RedisKey.CROSS_LINGMAISECRET_RECORD, String.valueOf(user.getId()), false);

View File

@ -88,6 +88,7 @@ public enum ActivityTypeEnum {
LING_LONG_PAVILION(ActivityType.LING_LONG_PAVILION,DefaultEmptyActivity::new),
RIDING_SWARD(ActivityType.RIDING_SWARD,RidingSwardActivity::new),
ITEMS_STORE_NEW(ActivityType.ITEMS_STORE_NEW,SuperBoxActivity::new),
TRUMP_GACHA_ACTIVITY(ActivityType.TRUMP_GACHA_ACTIVITY,LimitRandomCardActivity::new),
;
private int type;

View File

@ -151,7 +151,6 @@ public class LimitRandomSpecialMonsterActivityNew extends LimitRandomCardActivit
mission.getActivityMissionMap().put(0, progressInfo);
mission.setOpenType(1);
mission.setV(0);
mission.setActivityState(ActivityType.OPEN_STATE);
}
}
@ -160,7 +159,7 @@ public class LimitRandomSpecialMonsterActivityNew extends LimitRandomCardActivit
*
* @param uid
* @param activityId
* @param activityMission4
* @param activityMission
* @return
*/
@Override

View File

@ -55,7 +55,10 @@ public class CrossLingmaiLogic {
lingMaiSecretArea.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
lingMaiSecretArea.setBeginOccupyTime(TimeUtils.nowInt());
if(disappearScore>0){
lingMaiSecretArea.setScore1((int) disappearScore);
Map<String, LingMaiSecretArea> lingMaiMap = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.class, LingMaiSecretArea.class);
if(!lingMaiMap.values().stream().anyMatch(n->n.getUid()==uid)){
lingMaiSecretArea.setScore1((int) disappearScore);
}
}
return lingMaiSecretArea;
}

View File

@ -94,6 +94,10 @@ public class HeroManager extends MongoBase {
*/
private HashMap<Integer,Integer> beautyBagCardInfoMap = new HashMap<>();
/**
* -
*/
private HashMap<Integer,Integer> trumpSelectItemMap = new HashMap<>();
/**
*
* key: value:
@ -601,6 +605,17 @@ public class HeroManager extends MongoBase {
this.beautyBagCardInfoMap = beautyBagCardInfoMap;
updateString("beautyBagCardInfoMap", beautyBagCardInfoMap);
}
public HashMap<Integer, Integer> getTrumpSelectItemMap() {
return trumpSelectItemMap;
}
public void setTrumpSelectItemMap(HashMap<Integer, Integer> trumpSelectItemMap) {
this.trumpSelectItemMap = trumpSelectItemMap;
updateString("trumpSelectItemMap", trumpSelectItemMap);
}
public void putBeautyBagCardInfoMap(Integer key,Integer val) {
this.beautyBagCardInfoMap.put(key,val);
updateString("beautyBagCardInfoMap", beautyBagCardInfoMap);

View File

@ -422,7 +422,10 @@ public class HeroLogic {
} else if (sLotterySetting.getLotteryType() == 3 &&
isActivityBeautyBag(sLotterySetting.getActivityId())) {//乾坤宝盒-许愿魂印
result = BeautyBagDrawCard(user, sLotteryRewardConfig);
} else {
}else if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){
result = TrumpGachaDrawCard(user, sLotteryRewardConfig);
}
else {
result = reward;
}
//活动抽奖计数
@ -432,6 +435,9 @@ public class HeroLogic {
} else if (isActivityByIdAndType(sLotterySetting.getActivityId(), ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY)) {
//灵兽招募 计次数
user.getUserMissionManager().onGameEvent(user, GameEvent.SOUL_RECRUIT, 1);
}else if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){
//天地洪炉抽奖 计次数
user.getUserMissionManager().onGameEvent(user, GameEvent.TRUMP_GACHA, 1);
}
//记录卡池抽奖次数
heroManager.putRandomType(type, num + result[1]);
@ -466,6 +472,30 @@ public class HeroLogic {
return result;
}
///天地洪炉抽奖处理
private int[] TrumpGachaDrawCard(User user, SLotteryRewardConfig sLotteryRewardConfig) {
int count = 4;
List<SLotteryRewardConfig> list = SLotteryRewardConfig.getSLotteryRewardConfigListByPoolId(sLotteryRewardConfig.getPool());
if (list == null) {
return sLotteryRewardConfig.getReward();
}
int index = list.indexOf(sLotteryRewardConfig);
if (index >= count) {
return sLotteryRewardConfig.getReward();
}
if (!user.getHeroManager().getTrumpSelectItemMap().containsKey(index + 1)) {
return sLotteryRewardConfig.getReward();
}
int[] result = new int[2];
result[0] = user.getHeroManager().getTrumpSelectItemMap().get(index + 1);
result[1] = sLotteryRewardConfig.getReward()[1];
LOGGER.info("天地洪炉抽到了UP---->" + sLotteryRewardConfig.getReward()[0] + "替换为---->" + result[0]);
return result;
}
private boolean isActivityBeautyBag(int activityId) {
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
if (activity == null) {
@ -2308,9 +2338,6 @@ public class HeroLogic {
public void getPracticeSkill(List<CommonProto.FightUnitInfo> infoList,
Map<Integer, Integer> practiceSkillMap,
long maxForce,int sex,int userLv,List<Integer> tfInfoList) {
if (practiceSkillMap.isEmpty()) {
return;
}
StringBuilder skillStr = new StringBuilder();
// 修行技能
for (Map.Entry<Integer, Integer> entry : practiceSkillMap.entrySet()) {

View File

@ -137,5 +137,6 @@ public enum GameEvent {
DAILY_CHALLENGE_COUNT,//日常副本挑战次数
HARSTAGE_PARTICIPATION_REWARD,//山河社稷图参与奖励
NEW_HERO_ZHAOMU,//新将招募次数
TRUMP_GACHA,//天地洪炉
}

View File

@ -336,12 +336,12 @@ public class MinuteTask extends Thread {
}
//bug 修复
if(w==4){
/*if(w==4){
if(hour ==10 && minute ==50){
LOGGER.error("lingmaimijing0 000000");
CrossLingmaiLogic.getInstance().fixBug();
}
}
}*/
}
}
}

View File

@ -268,14 +268,14 @@ public class FightDataUtil {
for (int i = 0; i < pokemonUnitList.size(); i++) {
CommonProto.FightUnitInfo unitInfo=pokemonUnitList.get(i);
String skillId = unitInfo.getUnitSkillIds();
if(skillId.equals("0")||skillId==""){
if(skillId.equals("0")|| StringUtil.isEmpty(skillId)){
continue;
}
///100代表是修行技能
if (unitInfo.getPosition()==100){
LuaValue monster = new LuaTable();
monster.set("id",0);
monster.set("star",0);
monster.set("star",unitInfo.getStar());
monster.set("teamDamage",unitInfo.getForceScore());
monster.set("camp",camp);
monster.set("position",unitInfo.getPosition());