Merge branch 'equip_develop'

# Conflicts:
#	serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java
#	serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java
#	serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java
#	serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java
#	tablemanager/src/main/java/config/SSpecialConfig.java
back_recharge
zhangshanxue 2020-08-12 15:20:22 +08:00
commit 2b33f18c05
29 changed files with 746 additions and 70 deletions

View File

@ -62,6 +62,7 @@ public enum FunctionIdEnum {
Achieve(65,null),
DeathPath(72,null),
Car_Delay(73,new CarDelayFunction()),
Situation_challenge(74,null),
;
private int functionType;

View File

@ -261,6 +261,8 @@ public class RedisKey {
public static final String DEATH_PATH_TOTAL_GUILD_RANK = "DEATH_PATH_TOTAL_GUILD_RANK";
public static final String SITUATION_RANK = "SITUATION_RANK";
public static final String DEATH_PAHT_TOTAL_CHALLENGE_COUNT = "DEATH_PAHT_TOTAL_CHALLENGE_COUNT";

View File

@ -145,8 +145,8 @@ public interface BIReason {
int EQUIP_UNLOAD_REWARD = 79;//卸下装备
int ESPECIAL_BACK = 80;//法宝归元获得
int HERO_CHANGE= 81;//抽卡
int SITUATION_CHALLENGE_REWARD = 81;//轩辕宝镜获得
int HERO_CHANGE= 82;//抽卡
int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级
int SECRETBOX_CONSUME = 1001;//秘盒抽卡

View File

@ -7,6 +7,8 @@ import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
@ -124,6 +126,7 @@ public class StartExpeditionBattleRequest extends BaseHandler<Expedition.StartEx
.addMonsterList(deffightTeamInfo)
.build());
MessageUtil.sendMessage(iSession, 1,MessageTypeProto.MessageType.EXPEDITION_START_BATTLE_RESONSE_VALUE, fightStartResponse.build(), true);
// ReportUtil.onReportEvent(user, ReportEventEnum);
}

View File

@ -5,6 +5,8 @@ import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
@ -25,12 +27,15 @@ import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.FightInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.MonsterUtil;
import config.SErrorCodeEerverConfig;
import config.SWorldBossConfig;
import config.SWorldBossSetting;
import manager.STableManager;
import util.TimeUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class FastChallengeHandler extends BaseHandler<FightInfoProto.FastFightChallengeRequest>{
@ -94,7 +99,7 @@ public class FastChallengeHandler extends BaseHandler<FightInfoProto.FastFightCh
RankEnum.toRank(RankEnum.CAR_DEALY_RANK.getType()).incrementRankScore(uid,"",myscore);
RankEnum.toRank(RankEnum.CAR_DEALY_GUILD_RANK.getType()).incrementRankScore(guildInfo.getId(),"",gainScore,isNew?1:0);
user.getUserMissionManager().onGameEvent(user, GameEvent.CAR_PLAY,1);
ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_CHECHI.getType(),sWorldBossSetting.getid(),monsterId, MonsterUtil.getMonsterForce(new int[]{monsterId}),new Date(),new ArrayList<>(),0,"","");
}break;
case 2:{
PVPFightEvent pvpFightEvent = new PVPFightEvent(uid,GlobalsDef.CAR_DELAY_TEAM, battleRound,"", GameFightType.CarPersonChallenge,challeageId,GlobalsDef.CAR_DELAY_TEAM);

View File

@ -88,7 +88,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
for(Map.Entry<Integer,VipInfo> vipInfoItem : vipInfo.entrySet()){
privilegeList.add(CommonProto.Privilege.newBuilder()
.setId(vipInfoItem.getKey())
. setUsedTimes(vipInfoItem.getValue().getCount())
.setUsedTimes(vipInfoItem.getValue().getCount())
.setEffectTime(vipInfoItem.getValue().getEffectTime())
.build());
}

View File

@ -5,6 +5,8 @@ import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.Item;
import com.ljsd.jieling.logic.dao.UserManager;
@ -86,10 +88,12 @@ public class ComplexEquipHandler extends BaseHandler<HeroInfoProto.ComplexEquipR
dropItems[0] = new int[2];
dropItems[0][0] = targetEquip;
dropItems[0][1] = proto.getNum();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItems, BIReason.COMPLEX_EQUIP);
HeroInfoProto.ComplexEquipResponse.Builder response = HeroInfoProto.ComplexEquipResponse.newBuilder();
response.setDrop(drop);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EQUIP_COMPLEX_RESPONSE_VALUE, response.build(), true);
ReportUtil.onReportEvent(user, ReportEventEnum.EQUIP_SYNTHESIS.getType(),targetEquip,proto.getNum(),new ArrayList<>(consumeMap.keySet()),consumeMap.values());
} else {
@ -184,6 +188,7 @@ public class ComplexEquipHandler extends BaseHandler<HeroInfoProto.ComplexEquipR
CommonProto.Drop.Builder drop = ItemUtil.drop(user,createArray,BIReason.COMPLEX_EQUIP);
HeroInfoProto.ComplexEquipResponse.Builder response = HeroInfoProto.ComplexEquipResponse.newBuilder();
response.setDrop(drop);
ReportUtil.onReportEvent(user, ReportEventEnum.EQUIP_SYNTHESIS.getType(),new ArrayList<>(countMap.keySet()),"",new ArrayList<>(consumeMap.keySet()),consumeMap.values());
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EQUIP_COMPLEX_RESPONSE_VALUE, response.build(), true);
}
}

View File

@ -6,6 +6,8 @@ import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.dao.Jewel;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
@ -114,6 +116,8 @@ public class ComplexJewelEquipRequestHandler extends BaseHandler<HeroInfoProto.C
}
response.setDrop(drop);
MessageUtil.sendIndicationMessage(user.getId(), response.build());
ReportUtil.onReportEvent(user, ReportEventEnum.TREASURE_SYNTHESIS.getType(),targetEquip,proto.getNum(),new ArrayList<>(consumeMap.keySet()),consumeMap.values());
} else {
@ -204,6 +208,7 @@ public class ComplexJewelEquipRequestHandler extends BaseHandler<HeroInfoProto.C
for (String id:newids) {
equips.add(CBean2Proto.getEquipProto( user.getEquipManager().getEquipMap().get(id)));
}
ReportUtil.onReportEvent(user, ReportEventEnum.TREASURE_SYNTHESIS.getType(),new ArrayList<>(consumeMap.keySet()),new ArrayList<>(consumeMap.values()),new ArrayList<>(consumeMap.keySet()),consumeMap.values());
ItemUtil.itemCost(user, consumeMap, BIReason.COMPLEX_EQUIP_CONSUME, 0);
}

View File

@ -0,0 +1,26 @@
package com.ljsd.jieling.handler.equip;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.HeroInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
/**
* @author lvxinran
* @date 2020/8/5
* @discribe
*/
@Component
public class EspecialEquipBackHandler extends BaseHandler<HeroInfoProto.EspecialEquipBackRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.ESPECIAL_EQUIP_BACK_REQUEST;
}
@Override
public void processWithProto(ISession iSession, HeroInfoProto.EspecialEquipBackRequest proto) throws Exception {
HeroLogic.getInstance().especialEquipBack(iSession,proto.getHeroIdLsitList());
}
}

View File

@ -2147,7 +2147,7 @@ public class MapLogic {
// String rankKey = RedisKey.getKey(RedisKey.MAINLEVEL_RANK, "", false);
// RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(user.getId()), sMainLevelConfig.getVirtureId());
RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).addRank(uid,"",sMainLevelConfig.getVirtureId(),user.getPlayerInfoManager().getMaxForce());
ReportUtil.onReportEvent(user, ReportEventEnum.PASS_STAGE.getType(),String.valueOf(fightId),"",sMainLevelConfig.getReward());
ReportUtil.onReportEvent(user, ReportEventEnum.PASS_STAGE.getType(),String.valueOf(fightId),"",sMainLevelConfig.getReward(),new Date());
}
@ -2229,6 +2229,7 @@ public class MapLogic {
BehaviorUtil.getLevelDifficultyifficuFightInfo(user,FightType.MonterFight, sFloodConfig.getMonster(), teamId, sFloodConfig.getBattleTime(), fightStartResponse, RedisKey.CHALLENGE_MONSTER_ATTACK);
user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_PLAY);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightStartResponse.build(), true);
ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_XINMO.getType(),fightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),"");
}
@ -2283,6 +2284,15 @@ public class MapLogic {
user.getMapManager().setLastMonsterAttack(checkFightId + 1);
user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_LEVEL);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
List<CommonProto.Item> itemDrop = drop.getItemlistList();
List<Integer> itemIdList = new ArrayList<>();
List<Integer> itemNumList = new ArrayList<>();
itemDrop.forEach(item->{
itemIdList.add(item.getItemId());
itemIdList.add(item.getItemNum());
});
ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_XINMO.getType(),checkFightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),new Date(),"",itemIdList,itemNumList);
}
@ -3013,6 +3023,7 @@ public class MapLogic {
// throw new ErrorCodeException(ErrorCode.REFRESH_WHEL_TIME_NOT);
// }
boolean consumeCount = false;
boolean isFailed = false;
Set<Integer> dailyPass = playerInfoManager.getDailyPass();
if(type==2){
if(!dailyPass.contains(id)){
@ -3067,17 +3078,29 @@ public class MapLogic {
builder.setDrop(drop);
playerInfoManager.addDailyPass(id);
consumeCount = true;
}else{
isFailed = true;
}
}else{
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
if(consumeCount){
boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sDailyChallengeConfig.getPrivilegeId()[1], 1);
if(!consume){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
CommonProto.Drop drop = builder.getDrop();
if(!isFailed){
List<CommonProto.Item> itemDrop = drop.getItemlistList();
List<Integer> itemIdList = new ArrayList<>();
List<Integer> itemNumList = new ArrayList<>();
itemDrop.forEach(item->{
itemIdList.add(item.getItemId());
itemIdList.add(item.getItemNum());
});
ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(),MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),new Date(),"",0,itemIdList,itemNumList,type==1?"挑战":"扫荡");
}
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_CHALLENGE,sDailyChallengeConfig.getType());
MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build());
}

View File

@ -0,0 +1,26 @@
package com.ljsd.jieling.handler.situationHandler;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.SituationLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
/**
* @author lvxinran
* @date 2020/8/6
* @discribe
*/
@Component
public class GetAllSituationStatusHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.SITUATION_INFO_GET_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
SituationLogic.getInstance().getAllSituationStatus(iSession, MessageTypeProto.MessageType.SITUATION_INFO_GET_RESPONSE);
}
}

View File

@ -0,0 +1,26 @@
package com.ljsd.jieling.handler.situationHandler;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.SituationLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MapInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
/**
* @author lvxinran
* @date 2020/8/6
* @discribe
*/
@Component
public class SituationChallengeHandler extends BaseHandler<MapInfoProto.SituationChallengeRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.SITUATION_CHALLENGE_REQUEST;
}
@Override
public void processWithProto(ISession iSession, MapInfoProto.SituationChallengeRequest proto) throws Exception {
SituationLogic.getInstance().situationsChallenge(iSession,proto.getId(),proto.getType(), MessageTypeProto.MessageType.SITUATION_CHALLENGE_RESPONSE);
}
}

View File

@ -45,16 +45,12 @@ public enum ReportEventEnum {
ALLOW_FRIENDS_ASK(31,"allow_friends_ask", new CommonEventHandler(),new String[]{"target_id","target_name","target_level","entrance"}),
SEND_MESSAGE(32,"send_message", new CommonEventHandler(),new String[]{"message_type","message_content"}),
OPEN_MAIL(33,"open_mail", new CommonEventHandler(),new String[]{""}),
START_DAILY_DUNGEON(34,"start_daily_dungeon", new CommonEventHandler(),new String[]{""}),
COMPLETE_DAILY_DUNGEON(35,"complete_daily_dungeon", new CommonEventHandler(),new String[]{""}),
START_XINMO(36,"start_xinmo", new CommonEventHandler(),new String[]{""}),
//-------新一期
COMPLETE_DAILY_DUNGEON(35,"complete_daily_dungeon", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","left_challenge_nums","rewards_id_list","rewards_num_list","pass_type"}),
COMPLETE_XINMO(37,"complete_xinmo", new CommonEventHandler(),new String[]{""}),
COMPLETE_XINMO(37,"complete_xinmo", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","rewards_id_list","rewards_num_list"}),
START_CHECHI(38,"start_chechi", new CommonEventHandler(),new String[]{""}),
COMPLETE_CHECHI(39,"complete_chechi", new CommonEventHandler(),new String[]{""}),
COMPLETE_CHECHI(39,"complete_chechi", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","left_challenge_nums","rewards_id_list","rewards_num_list"}),
START_PANOPTIC_MIRROR(40,"start_panoptic_mirror", new CommonEventHandler(),new String[]{""}),
@ -62,21 +58,22 @@ public enum ReportEventEnum {
COMPLETE_PANOPTIC_MIRROR(42,"complete_panoptic_mirror", new CommonEventHandler(),new String[]{""}),
EQUIP_SYNTHESIS(43,"equip_synthesis", new CommonEventHandler(),new String[]{""}),
EQUIP_SYNTHESIS(43,"equip_synthesis", new CommonEventHandler(),new String[]{"item_id","item_name","cost_item_id","cost_amount"}),
TREASURE_SYNTHESIS(44,"treasure_synthesis", new CommonEventHandler(),new String[]{""}),
TREASURE_SYNTHESIS(44,"treasure_synthesis", new CommonEventHandler(),new String[]{"item_id","item_name","cost_item_id","cost_amount"}),
FATALITY_SYNTHESIS(45,"fatality_synthesis", new CommonEventHandler(),new String[]{""}),
FATALITY_SYNTHESIS(45,"fatality_synthesis", new CommonEventHandler(),new String[]{"item_id","item_name","cost_item_id"}),
NORMAL_SUMMON(46,"Normal_summon", new CommonEventHandler(),new String[]{"hero_id","summon_type","cost_item_id","cost_amount","hero_id_quality_list"}),
FRIENDSHIP_SUMMON(47,"friendship_summon", new CommonEventHandler(),new String[]{"hero_id","summon_type","cost_item_id","cost_amount","hero_id_quality_list"}),
GODS_SUMMON(48,"gods_summon", new CommonEventHandler(),new String[]{"hero_id","summon_type","cost_item_id","cost_amount","hero_id_quality_list"}),
SUMMON_HERO(49,"summon_hero", new CommonEventHandler(),new String[]{""}),//四元阵
HERO_COMPOSITION(50,"hero_composition", new CommonEventHandler(),new String[]{""}),
SUMMON_HERO(49,"summon_hero", new CommonEventHandler(),new String[]{"item_id","hero_group","get_amount"}),//四元阵
SEND_HERO(51,"send_hero", new CommonEventHandler(),new String[]{""}),
HERO_COMPOSITION(50,"hero_composition", new CommonEventHandler(),new String[]{"hero_id","hero_level","hero_quality","reward_list","reward_nums_list"}),
SEND_HERO(51,"send_hero", new CommonEventHandler(),new String[]{"hero_id","hero_level","hero_quality","reward_list","reward_nums_list"}),
TREASURE_DECOMPOSITION(52,"treasure_decomposition", new CommonEventHandler(),new String[]{""}),
VIP_LEVEL_UP(100,"", new VipLevelUpEventHandler(),new String[]{""});

View File

@ -332,7 +332,9 @@ public class GlobalDataManaager implements IManager {
FriendLogic.getInstance().refreshState(session);
PlayerLogic.getInstance().sendTimingMail(user);
user.getGuildMyInfo().setLastHurt(0);
if(TimeUtils.isSpanTime(user.getPlayerInfoManager().getLoginTime(),TimeUtils.now(),1,5)){
user.getPlayerInfoManager().updateSituationPass(new HashMap<>());
}
if(fBuilder!=null){
fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build());
user.getPlayerInfoManager().setLoginTime(TimeUtils.now());

View File

@ -0,0 +1,258 @@
package com.ljsd.jieling.logic;
import com.ljsd.fight.CheckFight;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.*;
import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.MapInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.FightDataUtil;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.MonsterUtil;
import config.*;
import manager.STableManager;
import org.luaj.vm2.LuaValue;
import util.TimeUtils;
import java.util.*;
import static com.ljsd.jieling.logic.fight.FightUtil.makePersonFightData;
/**
* @author lvxinran
* @date 2020/8/6
* @discribe
*/
public class SituationLogic {
public static SituationLogic getInstance() {
return SituationLogic.Instance.instance;
}
public static class Instance {
public final static SituationLogic instance = new SituationLogic();
}
private int[][] openConfig ;
private int[] status ;
private int[] overTime;
public void createCheckStatusTask(){
Runnable runnable = this::checkStatus;
runnable.run();
}
private void checkStatus(){
if(status==null||overTime==null||openConfig==null){
status = new int[4];
openConfig = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.XUANYUAN_OPEN_TIME);
overTime = new int[4];
doCheck();
}else{
if(TimeUtils.getHourOfDay()!=5){
return;
}
doCheck();
}
}
private void doCheck(){
long now = TimeUtils.now();
int hourOfDay = TimeUtils.getHourOfDay();
int week = TimeUtils.getDayOfWeek();
if(hourOfDay<5){
week = week==0?7:week-1;
}
boolean isIndication = false;
for(int[] config:openConfig){
boolean isOpen = false;
for(int i = 1;i<config.length;i++){
if(week!=config[i]){
continue;
}
isOpen = true;
}
if((isOpen&&status[config[0]-1]==1)||(!isOpen&&status[config[0]-1]==0)){
isIndication = true;
}
status[config[0]-1] = isOpen?1:0;
overTime[config[0]-1] =isOpen?(int)(TimeUtils.getLastOrUnderHour(now,5,0,false)/1000):0;
}
if(isIndication){
//周一刷新
boolean remove = false;
if(TimeUtils.getDayOfWeek()==1){
remove = true;
}
try {
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for(Map.Entry<Integer, ISession> entry:sessionMap.entrySet()){
//发推送
PlayerManager playerInfoManager= UserManager.getUser(entry.getKey()).getPlayerInfoManager();
if (remove){
playerInfoManager.updateSituationPass(new HashMap<>());
}
MapInfoProto.GetAllSituationInfoResponse.Builder indication = MapInfoProto.GetAllSituationInfoResponse.newBuilder();
for(int i = 0 ; i < status.length;i++){
if(status[i]==0){
continue;
}
CommonProto.SituationInfo info = CommonProto.SituationInfo.newBuilder().setId(i+1)
.setOverTime(overTime[i])
.setPassId(playerInfoManager.getSituationPass().getOrDefault(i+1,0)).build();
indication.addInfos(info);
}
MessageUtil.sendIndicationMessage(entry.getValue(),1,MessageTypeProto.MessageType.SITUATION_INFO_INDICATION_VALUE,indication.build(),true);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void getAllSituationStatus(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
MapInfoProto.GetAllSituationInfoResponse.Builder response = MapInfoProto.GetAllSituationInfoResponse.newBuilder();
Map<Integer, Integer> situationPass = user.getPlayerInfoManager().getSituationPass();
for(int i = 0 ; i < status.length;i++){
if(status[i]==0){
continue;
}
CommonProto.SituationInfo info = CommonProto.SituationInfo.newBuilder().setId(i+1)
.setOverTime(overTime[i])
.setPassId(situationPass.getOrDefault(i+1,0)).build();
response.addInfos(info);
}
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
}
public void situationsChallenge(ISession session, int id, int type , MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
MapInfoProto.SituationChallengeResponse.Builder builder= MapInfoProto.SituationChallengeResponse.newBuilder();
PlayerManager playerInfoManager = user.getPlayerInfoManager();
// //次数校验
SRaceTowerConfig sRaceTowerConfig = STableManager.getConfig(SRaceTowerConfig.class).get(id);
Map<Integer,Integer> situationPass = playerInfoManager.getSituationPass();
boolean consumeCount = false;
if(type==2){
if(!situationPass.containsKey(sRaceTowerConfig.getType())||situationPass.get(sRaceTowerConfig.getType())<id){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getReward(), 1, 0, BIReason.SITUATION_CHALLENGE_REWARD);
builder.setDrop(drop);
consumeCount = true;
}else if(type==1){
//判断本关是否已过
if(situationPass.containsKey(sRaceTowerConfig.getType())&&situationPass.get(sRaceTowerConfig.getType())>=id){
throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS);
}
// //判断上一关是否已过
int openRules = sRaceTowerConfig.getOpenRules();
if(openRules!=0&&situationPass.get(sRaceTowerConfig.getType())!=openRules){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
//编队规则校验
int formation = sRaceTowerConfig.getFormation();
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(formation);
if(teamPosHeroInfos==null||teamPosHeroInfos.isEmpty()){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
int[] heroType = new int[5];
teamPosHeroInfos.forEach(hero->{
int tempId = user.getHeroManager().getHero(hero.getHeroId()).getTemplateId();
int profession = SCHero.getsCHero().get(tempId).getPropertyName();
heroType[profession] = heroType[profession]+1;
});
for(int[] rule:sRaceTowerConfig.getTeamRules()){
if(heroType[rule[0]]<rule[1]){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
Map<Integer,List<Integer>> buffMap = new HashMap<>();
for(int[] buffid:sRaceTowerConfig.getAttribute()){
buffMap.computeIfAbsent(buffid[0],n->new ArrayList<>()).add(buffid[1]);
}
//组装战斗数据
PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), formation, 20, "", GameFightType.DailyChallenge, sRaceTowerConfig.getMonsterId(), 3);
// FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent);
FightResult fightResult = getFightForSituation(pveFightEvent, buffMap);
CommonProto.FightData fightData = CommonProto.FightData.newBuilder()
.setFightMaxTime(20)
.setFightSeed(fightResult.getSeed())
.setHeroFightInfos(fightResult.getFightTeamInfo())
.addAllMonsterList(fightResult.getMonsterTeamList())
.build();
int[] checkResult = fightResult.getCheckResult();
builder.setFightData(fightData);
//挑战成功
if(checkResult[0]>0){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getFirstReward(), 1, 0, BIReason.SITUATION_CHALLENGE_REWARD);
builder.setDrop(drop);
situationPass.put(sRaceTowerConfig.getType(),id);
playerInfoManager.updateSituationPass(situationPass);
AbstractRank rankEnum = RankContext.getRankEnum(RankEnum.SITUATION_RANK.getType());
int score = Double.valueOf(rankEnum.getScoreById(user.getId(), "")).intValue();
rankEnum.addRank(user.getId(),"",score==-1?1:score+1);
consumeCount = true;
}
}else{
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
// ReportUtil.onReportEvent(user, ReportEventEnum.START_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(), MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),"",0);
if(consumeCount){
boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sRaceTowerConfig.getPrivilege()[0], 1);
if(!consume){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
// user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_CHALLENGE,sDailyChallengeConfig.getType());
MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build());
}
public static FightResult getFightForSituation(FightEvent fightEvent,Map<Integer,List<Integer>> buffInfo){
PVEFightEvent pveFightEvent = (PVEFightEvent)fightEvent;
User userInMem = UserManager.getUserInMem(pveFightEvent.getAttackUid());
CommonProto.FightTeamInfo fightTeamInfo = FightUtil.getFightTeamInfoWithSomeBuff(userInMem, pveFightEvent.getTeamId(),pveFightEvent.getAttackBloodMap(),buffInfo);
int fightSeed = FightUtil.getFightSeed();
List<CommonProto.FightTeamInfo> monsterfightTeamInfos = FightUtil.makeMonsterFightData(pveFightEvent.getMonsterGroupId(), pveFightEvent.getNums());
LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterfightTeamInfos);
LuaValue getOptionData = FightDataUtil.getOptionData(pveFightEvent.getAttackUid()+"");
int[] fightResult = CheckFight.getInstance().checkFight(fightSeed, fightEvent.getMostTime(), getFightData, getOptionData, fightEvent.getFightType().getFightType());
FightResult.Builder builder = FightResult.newBuilder();
builder.setCheckResult(fightResult);
builder.setSeed(fightSeed);
builder.setFightTeamInfo(fightTeamInfo);
builder.setMonsterTeamList(monsterfightTeamInfos);
CommonProto.FightData fightData = CommonProto.FightData.newBuilder().setFightType(fightEvent.getFightType().getFightType().getType()).setHeroFightInfos(fightTeamInfo).addAllMonsterList(monsterfightTeamInfos).setFightSeed(fightSeed).setFightMaxTime(fightEvent.getMostTime()).build();
builder.setFightData(fightData);
return builder.build();
}
}

View File

@ -116,6 +116,8 @@ public class PlayerManager extends MongoBase {
private String ip;
private Map<Integer,Integer> situationPass = new HashMap<>();
public PlayerManager(){
this.setRootCollection(User._COLLECTION_NAME);
@ -774,4 +776,14 @@ public class PlayerManager extends MongoBase {
updateString("bundle_id",bundle_id);
}
public Map<Integer, Integer> getSituationPass() {
return situationPass;
}
public void updateSituationPass(Map<Integer, Integer> situationPass){
this.situationPass = situationPass;
updateString("situationPass",situationPass);
}
}

View File

@ -211,10 +211,8 @@ public class GuildLogic {
if(StringUtil.isEmpty(familyName)){
throw new ErrorCodeException(ErrorCode.NULL_NAME);
}
boolean result = true;
if(!StringUtil.isEmpty(announce)){
result = ShieldedWordUtils.checkName(user,announce,false,ChatContentType.FAMILY_NAME);
if (!result) {
if (!ShieldedWordUtils.checkName(user,familyName,false,ChatContentType.FAMILY_NAME)||!ShieldedWordUtils.checkName(user,announce,false,ChatContentType.FAMILY_NAME)) {
throw new ErrorCodeException(ErrorCode.FAMILY_IN_SENSITIVE);
}
}

View File

@ -96,7 +96,7 @@ public class CombatLogic {
}
}
for(Map.Entry<Integer,Integer> entry:effectValueMap.entrySet()){
int finalValue = value.get(entry.getKey()) + entry.getValue();
int finalValue = value.getOrDefault(entry.getKey(),0) + entry.getValue();
if(finalValue < 0){
finalValue = 0;
}

View File

@ -287,6 +287,43 @@ public class FightUtil {
.setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId,user))
.build();
}
//
public static CommonProto.FightTeamInfo getFightTeamInfoWithSomeBuff(User user, int teamId, Map<String, Integer> attackBloodMap,Map<Integer,List<Integer>> buffInfo) {
user.getTeamPosManager().setCurTeamPosId(teamId);
List<CommonProto.FightUnitInfo> heroFightInfos = new ArrayList<>();
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) {
Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId());
if (hero == null) {
continue;
}
Map<Integer, Integer> heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId);
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
if(buffInfo.containsKey(scHero.getPropertyName())){
CombatLogic.getInstance().bufferOneHeroAttrAfterEat(heroAttributeMap,buffInfo.get(scHero.getPropertyName()));
}
StringBuilder skillSb = new StringBuilder();
StringBuilder propertySb = new StringBuilder();
String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString();
String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getTemplateId(),hero.getLevel(), heroAttributeMap).toString();
CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo
.newBuilder()
.setUnitId(Integer.toString(hero.getTemplateId()))
.setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1))
.setProperty(property.substring(0, property.length()-1))
.setPosition(teamPosHeroInfo.getPosition())
.setStar(hero.getStar())
.build();
heroFightInfos.add(heroFightInfo);
}
return CommonProto.FightTeamInfo.
newBuilder()
.addAllFightUnitList(heroFightInfos)
.setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId))
.setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId))
.setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId,user))
.build();
}
/**

View File

@ -220,6 +220,7 @@ public class HeroLogic{
//检验消耗
boolean allowFree = false;
int[] costAmount = new int[1];
int privilege = sLotterySetting.getFreeTimes();
if(privilege!=0){
allowFree = PlayerLogic.getInstance().checkAndUpdate(user,privilege, perCount);
@ -230,6 +231,7 @@ public class HeroLogic{
int [][] costItems = new int[][]{cost};
enoughCost = ItemUtil.itemCost(user, costItems,BIReason.RANDOM_HERO_CONSUME,type);
if(enoughCost){
costAmount = cost;
break;
}
}
@ -250,6 +252,8 @@ public class HeroLogic{
resultRandom[i] =sLotteryRewardConfig.getReward();
index = i;
}
//上报抽卡
reportRandom(user,sLotterySetting,resultRandom,costAmount);
for(int i = 0;i<tenTimesMustGetItem.length;i++) {
resultRandom[i+index+1] = tenTimesMustGetItem[i];
}
@ -270,6 +274,48 @@ public class HeroLogic{
}
private void reportRandom(User user,SLotterySetting sLotterySetting,int[][] resultRandom,int[] costItem){
int lotteryType = sLotterySetting.getLotteryType();
ReportEventEnum eventEnum = null;
switch (lotteryType){
case 5:
eventEnum = ReportEventEnum.NORMAL_SUMMON;
break;
case 4:
eventEnum = ReportEventEnum.FRIENDSHIP_SUMMON;
break;
case 1:
eventEnum = ReportEventEnum.GODS_SUMMON;
break;
case 2:
eventEnum = ReportEventEnum.SUMMON_HERO;
default:
break;
}
if(eventEnum==null){
return;
}
try {
if(eventEnum == ReportEventEnum.SUMMON_HERO){
ReportUtil.onReportEvent(user,eventEnum.getType(),String.valueOf(resultRandom[0][0]),resultRandom[0][1]);
return;
}
List<String> result = new ArrayList<>(resultRandom.length);
for(int[] random:resultRandom){
SCHero scHero = SCHero.getsCHero().get(random[0]);
if(scHero==null){
result.add(String.valueOf(random[0]));
}else{
result.add(random[0]+"-"+scHero.getStar());
}
}
ReportUtil.onReportEvent(user,eventEnum.getType(),"",String.valueOf(sLotterySetting.getPerCount()),String.valueOf(costItem[0]),String.valueOf(costItem[1]),result);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
@ -2374,6 +2420,14 @@ public class HeroLogic{
throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT);
}
CommonProto.Drop.Builder drop = heroBackDrop(user, heroList, returnPercent, BIReason.HERO_BACK_REWARD,false);
List<CommonProto.Item> itemList = drop.getItemlistList();
List<Integer> itemId = new ArrayList<>(itemList.size());
List<Integer> itemNum = new ArrayList<>(itemList.size());
itemList.forEach(item->{
itemId.add(item.getItemId());
itemNum.add(item.getItemNum());
});
ReportUtil.onReportEvent(user,ReportEventEnum.HERO_COMPOSITION.getType(),String.valueOf(hero.getTemplateId()),hero.getLevel(),hero.getStar(),itemId,itemNum);
hero.setLevel(user,1);
hero.setBreakId(0);
HeroInfoProto.HeroReturnResponse build = HeroInfoProto.HeroReturnResponse.newBuilder().setDrop(drop).build();
@ -2381,6 +2435,34 @@ public class HeroLogic{
}
/**
*
* @param session
* @param heroIdList
* @throws Exception
*/
public void especialEquipBack(ISession session,List<String> heroIdList) throws Exception{
User user = UserManager.getUser(session.getUid());
Map<Integer,Integer> dropMap = new HashMap<>();
for(String heroId:heroIdList){
Hero hero = user.getHeroManager().getHero(heroId);
if(hero==null||hero.getEspecialEquipLevel()<=1){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
Map<Integer, Integer> dropTempMap = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero);
if(dropTempMap==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
dropTempMap.forEach((k,v)->dropMap.put(k,dropMap.getOrDefault(k,0)+v));
hero.updateEspecial(1);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(dropMap), BIReason.ESPECIAL_BACK);
HeroInfoProto.EspecialEquipBackResponse response = HeroInfoProto.EspecialEquipBackResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.ESPECIAL_EQUIP_BACK_RESPONSE_VALUE,response,true);
}
/**
*
* @param user
@ -2448,7 +2530,6 @@ public class HeroLogic{
resultDrop[index] = new int[]{entry.getKey(),entry.getValue()};
index++;
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, resultDrop, reason);
return drop;
@ -2607,7 +2688,7 @@ public class HeroLogic{
HeroInfoProto.MergeSoulResponse build = HeroInfoProto.MergeSoulResponse.newBuilder().setDrop(dropBuilder).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.SOUL_MERGE_RESPONSE_VALUE,build,true);
ReportUtil.onReportEvent(user,ReportEventEnum.FATALITY_SYNTHESIS.getType(),targetId,"",soulIdList);
}
public static void unloadSoulEquipOpt(ISession iSession, String heroId, List<HeroInfoProto.SoulEquipPos> equipIdsList) throws Exception {

View File

@ -8,6 +8,8 @@ import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.activity.event.EspecialEquipUpEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent;
@ -272,6 +274,9 @@ public class ItemLogic {
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
List<int[]> items = new ArrayList<>();
StringBuilder reward = new StringBuilder();
List<Integer> jewelIdReport = new ArrayList<>();
List<Integer> jewelLevelReport = new ArrayList<>();
List<Integer> jewelQualityReport = new ArrayList<>();
for (String jewelId : jewelList) {
if(!equipMap.containsKey(jewelId))
throw new ErrorCodeException(ErrorCode.ITEM_DECOMPOSE_NO_EQUIP);
@ -317,14 +322,21 @@ public class ItemLogic {
}
}
SItem sItem = SItem.getsItemMap().get(propertyItem.getEquipId());
jewelIdReport.add(propertyItem.getEquipId());
jewelLevelReport.add(propertyItem.getLevel());
jewelQualityReport.add(((Jewel) propertyItem).getBuildLevel());
reward = getStringBuilder(reward, 1, sItem.getResolveReward());
}
for (String jewelId : jewelList) {
user.getEquipManager().remove(jewelId);
}
int[][] dropItems = items.toArray(new int[items.size()][]);
Map<Integer, Integer> reportMap = ItemUtil.arrayToMap(dropItems);
ReportUtil.onReportEvent(user,ReportEventEnum.TREASURE_DECOMPOSITION.getType(),jewelIdReport,jewelLevelReport,jewelQualityReport,new ArrayList<>(reportMap.keySet()),reportMap.values());
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, 0,BIReason.JEWEL_DECOMPOSE);
ItemUtil.drop(user,dropItems,drop,BIReason.JEWEL_DECOMPOSE);
sendUseAndPriceItemMessage(session,MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE,drop);
@ -378,6 +390,9 @@ public class ItemLogic {
//2有过突破的卡 =当前等级返还升级材料+突破表返还材料
Map<Integer, Integer> baseItemMap = new HashMap<>();
int rankUpReturnPercent= SSpecialConfig.getIntegerValue(SSpecialConfig.HERO_SACRIFICE_PERCENT);
List<Integer> heroIdReport = new ArrayList<>();
List<Integer> heroLevelReport = new ArrayList<>();
List<Integer> heroStarReport = new ArrayList<>();
for (String heroId : heroIdsList) {
Hero hero = heroManager.getHeroMap().get(heroId);
Map<Integer, Integer> equipByPositionMap = hero.getEquipByPositionMap();
@ -389,6 +404,10 @@ public class ItemLogic {
soulEquipByPositionMap.forEach((k,v)->baseItemMap.put(v,baseItemMap.getOrDefault(v,0)+1));
}
heroIdReport.add(hero.getTemplateId());
heroLevelReport.add(hero.getLevel());
heroStarReport.add(hero.getStar());
heroManager.removeHero(uid,heroId);
int[][] sumConsume = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel()).getSumConsume();
SHeroSacrifice starSHeroSacrifice = STableManager.getFigureConfig(HeroStaticConfig.class).getsHeroSacrificeMap(1, hero.getStar());
@ -404,23 +423,28 @@ public class ItemLogic {
for(int[] item:breakSHeroSacrifice.getValue()){
baseItemMap.put(item[0],baseItemMap.getOrDefault(item[0],0)+item[1]);
}
// 返还法宝修炼材料
int especialEquipLevel = hero.getEspecialEquipLevel();
if(especialEquipLevel==1||especialEquipLevel==0){
continue;
}
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
int[] equipTalismana = scHero.getEquipTalismana();
if(equipTalismana==null||equipTalismana.length<2){
continue;
}
TreeMap<Integer, SEquipTalismana> levelMap = (TreeMap<Integer, SEquipTalismana>) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]));
Map<Integer, SEquipTalismana> returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel());
for(Map.Entry<Integer, SEquipTalismana> entry:returnMap.entrySet()){
int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial();
for(int[] rankUpConsume:rankupBasicMaterial){
baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]);
}
//// 返还法宝修炼材料
// int especialEquipLevel = hero.getEspecialEquipLevel();
// if(especialEquipLevel==1||especialEquipLevel==0){
// continue;
// }
// SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
// int[] equipTalismana = scHero.getEquipTalismana();
// if(equipTalismana==null||equipTalismana.length<2){
// continue;
// }
// TreeMap<Integer, SEquipTalismana> levelMap = (TreeMap<Integer, SEquipTalismana>) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]));
// Map<Integer, SEquipTalismana> returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel());
// for(Map.Entry<Integer, SEquipTalismana> entry:returnMap.entrySet()){
// int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial();
// for(int[] rankUpConsume:rankupBasicMaterial){
// baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]);
// }
// }
//法宝获得
Map<Integer, Integer> especialReturn = heroEspecialEquipReturnItem(hero);
if(especialReturn!=null){
especialReturn.forEach((k,v)->baseItemMap.put(k,baseItemMap.getOrDefault(k,0)+v));
}
}
@ -436,9 +460,37 @@ public class ItemLogic {
}else {
user.getUserMissionManager().onGameEvent(user,GameEvent.DESPOSE_HERO,heroIdsList.size());
}
if(reson== BIReason.DECOMPOS_HERO_REWARD){
ReportUtil.onReportEvent(user, ReportEventEnum.SEND_HERO.getType(),heroIdReport,heroLevelReport,heroStarReport,new ArrayList<>(baseItemMap.keySet()),baseItemMap.values());
}
return ItemUtil.drop(user,itemReturnPercent(itemArray,rankUpReturnPercent),reson);
}
/**
*
*/
public Map<Integer,Integer> heroEspecialEquipReturnItem(Hero hero){
int especialEquipLevel = hero.getEspecialEquipLevel();
if(especialEquipLevel==1||especialEquipLevel==0){
return null;
}
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
int[] equipTalismana = scHero.getEquipTalismana();
if(equipTalismana==null||equipTalismana.length<2){
return null;
}
Map<Integer,Integer> baseItemMap = new HashMap<>();
TreeMap<Integer, SEquipTalismana> levelMap = (TreeMap<Integer, SEquipTalismana>) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]));
Map<Integer, SEquipTalismana> returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel());
for(Map.Entry<Integer, SEquipTalismana> entry:returnMap.entrySet()){
int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial();
for(int[] rankUpConsume:rankupBasicMaterial){
baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]);
}
}
return baseItemMap;
}
/**
*
* @param sumConsume
@ -592,7 +644,7 @@ public class ItemLogic {
* @param equipid
* @return
*/
public static int getEquipByID(User user, int equipId) throws Exception {
public static int getEquipByID(User user, int equipId){
Item item = user.getItemManager().getItemMap().get(equipId);
if(item==null){
return 0;

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.rank;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.rank.rankImpl.*;
import java.util.Arrays;
@ -30,8 +31,10 @@ public enum RankEnum {
DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new),//param1工会总伤害 param2无 param3:无
GUILD_FORCE_RANK(20,RedisKey.GUILD_FORCE_RANK,GuildForceRank::new),//param1公会总战力 param2无 param3:无
EXPERT_RANK(21,RedisKey.EXPERT_RANK,GoldRank::new),//param1活动进度 param2无 param3:无
FORCE_CURR_RANK(22,RedisKey.FORCE_CURR_RANK,ForceCurrRank::new);//param1人物战力 param2无 param3:无
FORCE_CURR_RANK(22,RedisKey.FORCE_CURR_RANK,ForceCurrRank::new),//param1人物战力 param2无 param3:无
SITUATION_RANK(24,RedisKey.SITUATION_RANK,SituationRank::new),//param1通关次数 param2无 param3:无
;
private int type;
private String redisKey;

View File

@ -60,27 +60,35 @@ public class ForceCurrRank extends AbstractRank implements IEventHandler{
if(infoQueue.isEmpty()){
return;
}
int size = infoQueue.size();
List<UserMainTeamForceEvent> eventList = new ArrayList<>(size);
try{
int size = infoQueue.size();
List<UserMainTeamForceEvent> eventList = new ArrayList<>(size);
//看队列长度和每次最多传输多少比较,找最小
int transport = Math.min(size,TRANSPORT_SIZE);
//看队列长度和每次最多传输多少比较,找最小
int transport = Math.min(size,TRANSPORT_SIZE);
for(int i = 0 ; i < transport;i++){
eventList.add(infoQueue.poll());
}
Set<Integer> changeId = new HashSet<>();
eventList.forEach(n->changeId.add(n.getUid()));
changeId.forEach(i-> {
try {
User user = UserManager.getUser(i);
int force = HeroLogic.getInstance().calTeamTotalForce(user, 1, false);
addRank(i,"",force);
} catch (Exception e) {
e.printStackTrace();
for(int i = 0 ; i < transport;i++){
UserMainTeamForceEvent event = infoQueue.poll();
if(event!=null){
eventList.add(event);
}
}
});
Set<Integer> changeId = new HashSet<>();
eventList.forEach(n->changeId.add(n.getUid()));
changeId.forEach(i-> {
try {
User user = UserManager.getUser(i);
int force = HeroLogic.getInstance().calTeamTotalForce(user, 1, false);
addRank(i,"",force);
} catch (Exception e) {
e.printStackTrace();
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,25 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import util.TimeUtils;
/**
* @author lvxinran
* @date 2020/8/14
* @discribe
*/
public class SituationRank extends AbstractRank {
public SituationRank(int type, String redisKey) {
super(type, redisKey);
}
@Override
public long[] getDataByScore(Double score) {
return new long[]{score.longValue()};
}
@Override
public double getScore(double... data) {
return data[0]+ TimeUtils.getDoubleTime();
}
}

View File

@ -20,6 +20,7 @@ import com.ljsd.jieling.ktbeans.sendbeans.KTAppOnline;
import com.ljsd.jieling.ktbeans.sendbeans.ReportServerEvent;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.SituationLogic;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.event.MinuteTaskEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
@ -69,7 +70,7 @@ public class MinuteTask extends Thread {
ActivityLogic.getInstance().checkSecretBoxSeason();
StoreLogic.checkGlobalStore(false);
MapLogic.getInstance().minuteCheckAndRemoveMapRank();
SituationLogic.getInstance().createCheckStatusTask();
everyZeroTask();
everyFiveTask();
everyMondyFiveClockTask();
@ -132,8 +133,6 @@ public class MinuteTask extends Thread {
LOGGER.info("everyHourTask end ...");
}
}
//每日凌晨执行
public void everyZeroTask() throws Exception {
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);

View File

@ -134,7 +134,7 @@ public class FightDataUtil {
if(length<3){
return passivityData;
}
int passivityIndex = 1;
for(int i=2;i<length;i++){
LuaValue detail = new LuaTable();
int passivityId = Integer.parseInt(unitSkill[i]);
@ -150,7 +150,8 @@ public class FightDataUtil {
detail.rawset(j + 2, effectList.get(j));
}
}
passivityData.rawset(i-1,detail);
passivityData.rawset(passivityIndex,detail);
passivityIndex++;
}
return passivityData;

View File

@ -598,7 +598,7 @@ public class ItemUtil {
// }
// KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum());
ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId());
baseItemReport(user,item.getItemId(),itemNum,2,reason);
baseItemReport(user,item.getItemId(),itemNum,1,reason);
if(sItem.getItemType() == GlobalItemType.POKENMON_COMONPENT && sItem.getQuantity()>=SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_differ_content_parm)){
SDifferDemonsConfig sDifferDemonsConfig = SDifferDemonsConfig.sDifferDemonsConfigMapByComId.get(sItem.getId());

View File

@ -0,0 +1,77 @@
package config;
import manager.STableManager;
import manager.Table;
import java.util.Map;
@Table(name ="RaceTowerConfig")
public class SRaceTowerConfig implements BaseConfig {
private int id;
private int type;
private int openRules;
private int[] reward;
private int[] firstReward;
private int monsterId;
private int[][] teamRules;
private int[][] attribute;
private int[] privilege;
private int formation;
@Override
public void init() throws Exception {
}
public int getId() {
return id;
}
public int getType() {
return type;
}
public int getOpenRules() {
return openRules;
}
public int[] getReward() {
return reward;
}
public int[] getFirstReward() {
return firstReward;
}
public int getMonsterId() {
return monsterId;
}
public int[][] getTeamRules() {
return teamRules;
}
public int[][] getAttribute() {
return attribute;
}
public int[] getPrivilege() {
return privilege;
}
public int getFormation() {
return formation;
}
}

View File

@ -68,8 +68,12 @@ public class SSpecialConfig implements BaseConfig {
public static final String GUILD_WAR_ISOPEN = "Guild_war_isopen";//老公会战是否开启
public static final String LUCKYTURNDAILYLIMIT = "LuckyTurnDailyLimit";//幸运探宝每日上限
public static final String REPLACE_ITEM_ID = "replace_item_id";//置换玉道具ID
public static final String REPLACE_COST = "replace_cost";//置换玉消耗
public static final String XUANYUAN_OPEN_TIME = "xuanyuan_open_time";//轩辕开始时间(星期)
@Override
public void init() throws Exception {