vip权限

back_recharge
wangyuan 2020-01-08 17:58:36 +08:00
parent a0fe74fa22
commit cb1954d8a2
31 changed files with 255 additions and 141 deletions

View File

@ -214,7 +214,7 @@ function BattleMain.Execute(args, fightData, optionData)
Random.SetSeed(args.seed)
BattleLogic.Init(args.maxTime, fightData, optionData)
BattleLogic.Type = _type
if _type == 9 then
if _type == 9 or _type == 10 then
AddRecord(fightData)
end
BattleLogic.StartOrder()
@ -263,7 +263,19 @@ function BattleMain.Execute(args, fightData, optionData)
else
resultList.result = BattleLogic.Result
end
--print("result:"..BattleLogic.Result)
if _type == 10 then
local playerDamage=0
for k,v in pairs(BattleRecord)do
if v.camp == 0 then
playerDamage = playerDamage + v.damage
end
end
resultList.duration = playerDamage --TODO:公会boss的持续时间传递的是我方总伤害值
else
resultList.duration = BattleLogic.CurFrame() / BattleLogic.GameFrameRate
end
addBattleData()
return resultList

View File

@ -215,7 +215,7 @@ function BattleMain.Execute(args, fightData, optionData)
Random.SetSeed(args.seed)
BattleLogic.Init(args.maxTime, fightData, optionData)
BattleLogic.Type = _type
if _type == 9 then
if _type == 9 or _type == 10 then
AddRecord(fightData)
end
BattleLogic.StartOrder()
@ -265,9 +265,18 @@ function BattleMain.Execute(args, fightData, optionData)
resultList.result = BattleLogic.Result
end
resultList.duration = BattleLogic.CurFrame() / BattleLogic.GameFrameRate
if _type == 10 then
local playerDamage=0
for k,v in pairs(BattleRecord)do
if v.camp == 0 then
playerDamage = playerDamage + v.damage
end
end
resultList.duration = playerDamage --TODO:公会boss的持续时间传递的是我方总伤害值
else
resultList.duration = BattleLogic.CurFrame() / BattleLogic.GameFrameRate
end
--print("result:"..BattleLogic.Result)
addBattleData()
return resultList

View File

@ -3,26 +3,19 @@ package com.ljsd.jieling.core.function;
import com.ljsd.jieling.core.FunctionManager;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.family.GuildFightLogic;
import config.SGuildBossConfig;
import manager.STableManager;
import java.util.Map;
public class GuildBossFunction implements FunctionManager {
@Override
public void startAction(TimeControllerOfFunction timeControllerOfFunction) throws Exception {
int times = timeControllerOfFunction.getTimes();
Map<Integer, SGuildBossConfig> config = STableManager.getConfig(SGuildBossConfig.class);
int id = times%config.size();
if(id == 0){
id = config.size();
}
GuildFightLogic.updateGuildBossInfo(config.get(id));
GuildFightLogic.updateGuildBossInfoByTimes(times);
}
@Override
public void closeAction() throws Exception {
GuildFightLogic.updateGuildBossInfo(null);
GuildFightLogic.updateGuildBossInfoByTimes(-1);
}
}

View File

@ -131,6 +131,8 @@ public class RedisKey {
public static final String RANDOM_CARD_RANK="RANDOM_CARD_RANK";
public static final String RANDOM_CARD_PERFECT_RANK = "RANDOM_CARD_PERFECT_RANK";
public static final String GUILD_BOSS_RANK = "GUILD_BOSS_RANK";
public static final String FAMILY_ID = "FAMILY_ID";
public static final String FAMILY_JOIN = "FAMILY_JOIN";
@ -223,6 +225,8 @@ public class RedisKey {
public final static String PIDGIDTEMP = "PIDGIDTEMP";
public final static String GUILDBOSS_ARENA_RECORD = "GUILDBOSS_ARENA_RECORD";
public static Set<String> familyKey = new HashSet<>();

View File

@ -6,6 +6,7 @@ import com.ljsd.GameApplication;
import com.ljsd.common.mogodb.util.GlobalData;
import com.ljsd.jieling.util.ConfigurableApplicationContextManager;
import org.springframework.data.redis.RedisConnectionFailureException;
import util.StringUtil;
import util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -132,6 +133,15 @@ public class RedisUtil {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
public <T> T get(String type,String key,Class<T> tClass) {
String rkey = getKey(type, key);
String s = redisTemplate.opsForValue().get(rkey);
if(StringUtil.isEmpty(s)){
return null;
}
return gson.fromJson(s,tClass);
}
public Object getAndDelete(String key) {
Object value = redisTemplate.opsForValue().get(key);
del(key);
@ -213,6 +223,11 @@ public class RedisUtil {
}
}
public <T> void set(String type, String rkey, T t) {
String key = getKey(type, rkey);
redisTemplate.opsForValue().set(key, gson.toJson(t));
}
/**
*
*

View File

@ -101,8 +101,7 @@ public interface BIReason {
int CHAMPIION_BET_WIN_REWARD = 60 ; // 巅峰赛竞猜赢取
int GUILD_BOSS_FIGHT_BASE_REWARD = 61;//工会boss基础奖励
int GUILD_BOSS_FIGHT_RANDOM_REWARD = 62;//工会boss随机奖励
int GUILD_BOSS_FIGHT_REWARD = 61;//工会boss奖励
int CHAMPIONM_EXCHANGE_REWARD = 1050;//巅峰赛兑换奖励

View File

@ -1081,8 +1081,8 @@ public class MapLogic {
mapManager.setHighestTower(mapManager.getTower());
AbstractRank towerRank = RankContext.getRankEnum(RankEnum.TOWER_RANK.getType());
// TowerRankUtil.getRankNumber(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))
if(towerRank.getScore(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))>towerRank.getScoreById(user.getId(),0)){
towerRank.addRank(user.getId(),0,mapManager.getTower(),(int)mapManager.getCurrTowerTime()/1000);
if(towerRank.getScore(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))>towerRank.getScoreById(user.getId(),"")){
towerRank.addRank(user.getId(),"",mapManager.getTower(),(int)mapManager.getCurrTowerTime()/1000);
// RedisUtil.getInstence().zsetAddOne(RedisKey.getKey(RedisKey.TOWER_RANK,"",false),String.valueOf(user.getId()),TowerRankUtil.getRankNumber(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000)));
}
}
@ -2122,7 +2122,7 @@ public class MapLogic {
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
// 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,0,sMainLevelConfig.getVirtureId());
RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).addRank(uid,"",sMainLevelConfig.getVirtureId());
}
// public void getMainLevelRankInfo(ISession session) throws Exception {
@ -2330,7 +2330,7 @@ public class MapLogic {
//排行榜
// String rankKey = RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK,"", false);
// RedisUtil.getInstence().zsetAddOneOffsetByTime(rankKey, String.valueOf(user.getId()), checkFightId);
RankContext.getRankEnum(RankEnum.MONSTER_ATTACK_RANK.getType()).addRank(uid,0,checkFightId);
RankContext.getRankEnum(RankEnum.MONSTER_ATTACK_RANK.getType()).addRank(uid,"",checkFightId);
//归还水滴
Map<Integer,Integer> itemMap = new HashMap<>(1);
itemMap.put( Global.DROP,1);
@ -2883,7 +2883,7 @@ public class MapLogic {
// User user = UserManager.getUser(session.getUid());
int rankEndLine = SSpecialConfig.getIntegerValue(SSpecialConfig.TRIAL_RANKINGSHOWNUM);
PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),0,1, rankEndLine);
PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),"",1, rankEndLine);
// Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.TOWER_RANK, "", 0, rankEndLine);

View File

@ -12,6 +12,7 @@ import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.dao.Item;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.player.PlayerLogic;
import util.MathUtils;
import config.SVipLevelConfig;
import manager.STableManager;
@ -257,10 +258,7 @@ public class MapManager extends MongoBase {
if(recoveryItemInfo == null){
return;
}
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(user.getPlayerInfoManager().getVipLevel());
Map<Integer, Integer> privilegeMap = sVipLevelConfig.getPrivilegeMap();
Integer heroTimes = privilegeMap.get(recoveryItemInfo[3]);
Integer heroTimes = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user,recoveryItemInfo[3]);
int recoveryTimes = (updateTime - lastUpdateEnergyTime)/recoveryItemInfo[2];
if(itemNum>=heroTimes){
item.setEndingTime(updateTime);

View File

@ -44,10 +44,10 @@ public class FourtyTwoBehavior extends BaseBehavior {
AbstractRank towerRank = RankContext.getRankEnum(RankEnum.TOWER_RANK.getType());
// Double zSetScore = RedisUtil.getInstence().getZSetScore(RedisKey.TOWER_RANK, "", String.valueOf(user.getId()));
// TowerRankUtil.getRankNumber(mapManager.getTower(),(int)time/1000)
if(towerRank.getScore(mapManager.getTower(),(int)time/1000)>towerRank.getScoreById(user.getId(),0)){
if(towerRank.getScore(mapManager.getTower(),(int)time/1000)>towerRank.getScoreById(user.getId(),"")){
// String key = RedisKey.getKey(RedisKey.TOWER_RANK,"",false);
// RedisUtil.getInstence().zsetAddOne(key,String.valueOf(user.getId()),TowerRankUtil.getRankNumber(mapManager.getTower(),(int)time/1000));
towerRank.addRank(user.getId(),0,mapManager.getTower(),(int)time/1000);
towerRank.addRank(user.getId(),"",mapManager.getTower(),(int)time/1000);
}
}
user.getUserMissionManager().onGameEvent(user, GameEvent.COPY_TOWER_LEVEL, mapManager.getTower());

View File

@ -4,14 +4,11 @@ import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.family.GuildFightLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.FightInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.MessageUtil;
import org.springframework.stereotype.Component;
@Component
@ -42,7 +39,7 @@ public class StartFightRequestHandler extends BaseHandler<FightInfoProto.FightSt
// }
// MapLogic.getInstance().startLevelDifficultyFight(iSession,fightId,teamId,type,MessageTypeProto.MessageType.FIGHT_START_RESPONSE);
// }else if(type == 2){
// MapLogic.getInstance().startFight(iSession, MessageTypeProto.MessageType.FIGHT_START_RESPONSE);
// MapLogic.getInstance().startBossFight(iSession, MessageTypeProto.MessageType.FIGHT_START_RESPONSE);
//
// }else if(type == 3){
// MapLogic.getInstance().startSuddlenlyFight(iSession,teamId, MessageTypeProto.MessageType.FIGHT_START_RESPONSE);
@ -69,7 +66,7 @@ public class StartFightRequestHandler extends BaseHandler<FightInfoProto.FightSt
}else if(type == 6){
MapLogic.getInstance().startMainLevelFight(iSession,fightId,teamId, MessageTypeProto.MessageType.FIGHT_START_RESPONSE);
} else if(type == 7){
GuildFightLogic.startFight(iSession, MessageTypeProto.MessageType.FIGHT_START_RESPONSE);
GuildFightLogic.startBossFight(iSession, MessageTypeProto.MessageType.FIGHT_START_RESPONSE);
}else {
throw new ErrorCodeException(ErrorCode.newDefineCode("type is wrong:" + type));
}

View File

@ -121,7 +121,7 @@ public class QuickStartMonsterFighter extends BaseHandler<FightInfoProto.QuickSt
//排行榜
// String rankKey = RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK,"", false);
// RedisUtil.getInstence().zsetAddOneOffsetByTime(rankKey, String.valueOf(user.getId()), fightId);
RankContext.getRankEnum(RankEnum.MONSTER_ATTACK_RANK.getType()).addRank(uid,0,fightId);
RankContext.getRankEnum(RankEnum.MONSTER_ATTACK_RANK.getType()).addRank(uid,"",fightId);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sFloodConfig.getReward(), BIReason.MONSTERATTACK_REWARD);
FightInfoProto.QuickStartMonsterFightResponse builder = FightInfoProto.QuickStartMonsterFightResponse.newBuilder()

View File

@ -226,6 +226,9 @@ public class GlobalDataManaager implements IManager {
MapLogic.getInstance().updateEndlessSeason(globalSystemControl.getTimeControllerOfFunctionMap().get(FunctionIdEnum.Endless.getFunctionType()).getTimes());
MapLogic.setEndlessMapId(getEndleeMapIdByLevel());
}
if(globalSystemControl.getTimeControllerOfFunctionMap().containsKey(FunctionIdEnum.GuildBossFight.getFunctionType())){
GuildFightLogic.updateGuildBossInfoByTimes(globalSystemControl.getTimeControllerOfFunctionMap().get(FunctionIdEnum.GuildBossFight.getFunctionType()).getTimes());
}
}
@ -320,6 +323,7 @@ public class GlobalDataManaager implements IManager {
FriendLogic.getInstance().refreshState(session);
PlayerLogic.getInstance().sendTimingMail(user);
user.getGuildMyInfo().setLastHurt(0);
if(fBuilder!=null){
fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build());

View File

@ -38,7 +38,7 @@ class ForceRankActivity extends AbstractActivity {
return;
}
UserForceChangeEvent forceChangeEvent = (UserForceChangeEvent) event;
RankContext.getRankEnum(RankEnum.FORCE_RANK.getType()).addRank(forceChangeEvent.getUid(),id,forceChangeEvent.getForce());
RankContext.getRankEnum(RankEnum.FORCE_RANK.getType()).addRank(forceChangeEvent.getUid(),String.valueOf(id),forceChangeEvent.getForce());
}
@ -60,7 +60,7 @@ class ForceRankActivity extends AbstractActivity {
activityMission.setValue(count);
// String key = RedisKey.getKey(RedisKey.FORCE_RANK, "", false);
// RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count);
RankContext.getRankEnum(RankEnum.FORCE_RANK.getType()).addRank(user.getId(),id,count);
RankContext.getRankEnum(RankEnum.FORCE_RANK.getType()).addRank(user.getId(),String.valueOf(id),count);
}
}
@ -89,7 +89,7 @@ class ForceRankActivity extends AbstractActivity {
}
// Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FORCE_RANK, "", 0, maxRank-1);
Set<ZSetOperations.TypedTuple<String>> rankInfo = RankContext.getRankEnum(RankEnum.FORCE_RANK.getType()).getRankByKey(id,0,maxRank - 1);
Set<ZSetOperations.TypedTuple<String>> rankInfo = RankContext.getRankEnum(RankEnum.FORCE_RANK.getType()).getRankByKey(String.valueOf(id),0,maxRank - 1);
int rank = 1;
int nowTime = (int) (TimeUtils.now() / 1000);
for (ZSetOperations.TypedTuple<String> item : rankInfo) {

View File

@ -53,14 +53,14 @@ public class LimitRandomCardActivity extends AbstractActivity {
return;
}
AbstractRank randomRank= RankContext.getRankEnum(RankEnum.RANDOM_CARD_RANK.getType());
int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid(),id)).intValue();
int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid(),String.valueOf(id))).intValue();
if(scoreById==-1){
scoreById=0;
}
randomRank.addRank(cardEvent.getUid(),id,scoreById+cardEvent.getScore());
randomRank.addRank(cardEvent.getUid(),String.valueOf(id),scoreById+cardEvent.getScore());
Predicate<int[]> pre = a-> (SCHero.getHeroByPieceId(a[0])!=null&&SCHero.getHeroByPieceId(a[0]).getNatural()>=13);
Consumer<int[]> consumer = a->RankContext.getRankEnum(RankEnum.RANDOM_CARD_PERFECT_RANK.getType()).addRank(cardEvent.getUid(),id, TimeUtils.now()/1000,a[0]);
Consumer<int[]> consumer = a->RankContext.getRankEnum(RankEnum.RANDOM_CARD_PERFECT_RANK.getType()).addRank(cardEvent.getUid(),String.valueOf(id), TimeUtils.now()/1000,a[0]);
Stream.of(cardEvent.getHeros()).filter(pre).forEach(consumer);
update(UserManager.getUser(cardEvent.getUid()),cardEvent.getScore());

View File

@ -589,7 +589,8 @@ public class ArenaLogic {
arenaRecord = RedisUtil.getInstence().getMapEntry(RedisKey.CHAMPION_ARENA_RECORD,"", fightId, ArenaRecord.class);
}else if(type == 1){
arenaRecord = RedisUtil.getInstence().getMapEntry(RedisKey.ARENA_RRECORD, Integer.toString(uid), fightId, ArenaRecord.class);
}else if(type == 3){
arenaRecord = RedisUtil.getInstence().get(RedisKey.GUILDBOSS_ARENA_RECORD, fightId, ArenaRecord.class);
}
if(arenaRecord == null){
throw new ErrorCodeException(ErrorCode.newDefineCode("arena_rrecord null"));

View File

@ -27,6 +27,8 @@ import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.rank.RankEnum;
import com.ljsd.jieling.logic.rank.rankImpl.GuildBossRank;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.Family;
@ -63,6 +65,7 @@ public class GuildFightLogic {
private static SGuildBossConfig curSGuildBossConfig; // 为null代表关闭
public static int bossSeason;
public static int getStatus() {
return status;
@ -1041,7 +1044,7 @@ public class GuildFightLogic {
}
public static void startFight(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
public static void startBossFight(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
if(curSGuildBossConfig == null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
@ -1062,9 +1065,9 @@ public class GuildFightLogic {
String fightInfo =Integer.toString(monsterId);
String key = RedisKey.getKey(RedisKey.GUILD_MONSTER_INFO, String.valueOf(uid), false);
RedisUtil.getInstence().set(key, fightInfo, -1);
//扣除预先道具
FightInfoProto.FightStartResponse.Builder fightStartResponse = FightInfoProto.FightStartResponse.newBuilder();
BehaviorUtil.getLevelDifficultyifficuFightInfo(user, FightType.GuildBossFight,monsterId, teamId, 90, fightStartResponse, RedisKey.GUILD_MONSTER_FIGHT);
BehaviorUtil.getLevelDifficultyifficuFightInfo(user, FightType.GuildBossFight,monsterId, teamId, SGuildSetting.sGuildSetting.getBossTime(), fightStartResponse, RedisKey.GUILD_MONSTER_FIGHT);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightStartResponse.build(), true);
}
@ -1079,24 +1082,32 @@ public class GuildFightLogic {
LOGGER.info("endFight() uid=>{} fightKey={},fightId={} fightInfos == null", uid, fightKey);
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
FightEvent fightEvent = new FightEvent(uid, -1, 90,frames, GameFightType.GuildBossFight);
FightEvent fightEvent = new FightEvent(uid, -1, SGuildSetting.sGuildSetting.getBossTime(),frames, GameFightType.GuildBossFight);
FightResult fightResult = FightDispatcher.dispatcher(fightEvent);
PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.GUILD_BOSS_CHALLENGE_TIMES, 1);
//校验结果码 1胜利
int[] checkResult = fightResult.getCheckResult();
int myHurt = 1000;
int myHurt = 2000;
if(myHurt>user.getGuildMyInfo().getMaxBossHurt()){
user.getGuildMyInfo().setMaxBossHurt(myHurt);
}
if(myHurt>user.getGuildMyInfo().getLastHurt()){
//排行榜更新
String rkey = user.getPlayerInfoManager().getGuildId() + RedisKey.Delimiter_colon + bossSeason;
double scoreById = RankEnum.toRank(RankEnum.GUILD_BOSS_RANK.getType()).getScoreById(uid, rkey);
if(myHurt>scoreById){
RankEnum.toRank(RankEnum.GUILD_BOSS_RANK.getType()).addRank(uid,rkey,myHurt);
ArenaRecord arenaRecord = new ArenaRecord();
arenaRecord.setFightData(fightResult.getFightData().toByteArray());
RedisUtil.getInstence().set(RedisKey.GUILDBOSS_ARENA_RECORD, Integer.toString(uid),arenaRecord);
}
}
user.getGuildMyInfo().setLastHurt(myHurt);
SGuildBossRewardConfig sGuildBossRewardConfig = SGuildBossRewardConfig.getIndexByHurt(myHurt);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sGuildBossRewardConfig.getReward(), 1, 0, BIReason.GUILD_BOSS_FIGHT_BASE_REWARD);
CommonProto.Drop.Builder randomDrop = ItemUtil.drop(user, sGuildBossRewardConfig.getReward(), 1, 0, BIReason.GUILD_BOSS_FIGHT_RANDOM_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sGuildBossRewardConfig.getReward(), 1, 0, BIReason.GUILD_BOSS_FIGHT_REWARD);
FightInfoProto.FightEndResponse.Builder fightEndResponse = FightInfoProto.FightEndResponse.newBuilder();
fightEndResponse.setEnventDrop(drop);
fightEndResponse.setMissionDrop(randomDrop);
fightEndResponse.setEssenceValue(myHurt);
fightEndResponse.build();
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
@ -1104,8 +1115,71 @@ public class GuildFightLogic {
public static void updateGuildBossInfo(SGuildBossConfig sGuildBossConfig){
curSGuildBossConfig = sGuildBossConfig;
public static void updateGuildBossInfoByTimes(int times) {
if(times == -1){
ThreadManager.getScheduledExecutor().execute(()->{
try {
sendBossFightReward(bossSeason);
} catch (Exception e) {
e.printStackTrace();
}
});
bossSeason = times;
return;
}
Map<Integer, SGuildBossConfig> config = STableManager.getConfig(SGuildBossConfig.class);
int id = times%config.size();
if(id == 0){
id = config.size();
}
bossSeason = times;
curSGuildBossConfig = config.get(id);
}
public static void sendBossFightReward( int season) throws Exception {
String title= SErrorCodeEerverConfig.getI18NMessage("arena_daily_reward_title");;
String content = SErrorCodeEerverConfig.getI18NMessage("arena_season_reward_title");;
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
int now = (int)(TimeUtils.now()/1000);
float[][] bossReward = SGuildSetting.sGuildSetting.getBossReward();
List<String> delKeys = new ArrayList<>();
for(GuildInfo guildInfo : guildInfoMap.values()){
int guildId = guildInfo.getId();
String rkey =guildId + RedisKey.Delimiter_colon + season;
Set<ZSetOperations.TypedTuple<String>> bossHurtRankInfo = RankEnum.toRank(RankEnum.GUILD_BOSS_RANK.getType()).getRankByKey(rkey, 0, 1);
if(bossHurtRankInfo==null || bossHurtRankInfo.isEmpty()){
continue;
}
int maxHurt = bossHurtRankInfo.iterator().next().getScore().intValue();
int[][] mineReward = new int[bossReward.length][];
int j=0;
for(int i=0;i<bossReward.length;i++){
int itemNum = (int) (bossReward[i][1] * maxHurt);
if(itemNum==0){
continue;
}
mineReward[j] = new int[2];
mineReward[j][0] =(int)bossReward[i][0];
mineReward[j++][1] =itemNum;
}
String rewardByRank = StringUtil.parseArrayToString(mineReward);
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
Iterator<Set<Integer>> iterator = members.values().iterator();
while (iterator.hasNext()){
Set<Integer> uids = iterator.next();
for(Integer uid : uids){
MailLogic.getInstance().sendMail(uid,title,content,rewardByRank,now, Global.MAIL_EFFECTIVE_TIME);
}
}
delKeys.add( RankEnum.toRank(RankEnum.GUILD_BOSS_RANK.getType()).getRedisKey() + rkey);
}
MongoUtil.getLjsdMongoTemplate().lastUpdate();
RedisUtil.getInstence().del(delKeys.toArray(new String[0]));
}
public static SGuildBossConfig getCurSGuildBossConfig() {

View File

@ -128,7 +128,7 @@ public class FightUtil {
}
public static int[] getFightFromRedis(FightEvent fightEvent) throws Exception {
public static FightResult getFightFromRedis(FightEvent fightEvent) throws Exception {
GameFightType fightType = fightEvent.getFightType();
int playerId = fightEvent.getAttackUid();
String frames = fightEvent.getFrames();
@ -148,7 +148,13 @@ public class FightUtil {
List<CommonProto.FightTeamInfo> monsterTeamList = BehaviorUtil.getFightTeamInfos(valueMap);
LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterTeamList);
LuaValue getOptionData = FightDataUtil.getOptionData(frames);
return CheckFight.getInstance().checkFight(seed,fightTime, getFightData, getOptionData,fightType.getFightType());
FightResult.Builder fightResult = FightResult.newBuilder();
int[] fightResultInfo = CheckFight.getInstance().checkFight(seed, fightTime, getFightData, getOptionData, fightType.getFightType());
fightResult.setCheckResult(fightResultInfo);
CommonProto.FightData fightData = CommonProto.FightData.newBuilder().setFightType(fightType.getFightType().getType()).setHeroFightInfos(fightTeamInfo).addAllMonsterList(monsterTeamList).setFightSeed(seed).setFightMaxTime(fightTime).build();
fightResult.setFightData(fightData);
return fightResult.build();
}

View File

@ -9,7 +9,6 @@ public class DefaultOfRedisCacheFightHandler implements IFightEventProcesor {
@Override
public FightResult process(FightEvent fightEvent) throws Exception {
int[] fightResult = FightUtil.getFightFromRedis(fightEvent);
return FightResult.newBuilder().setCheckResult(fightResult).build();
return FightUtil.getFightFromRedis(fightEvent);
}
}

View File

@ -305,23 +305,21 @@ public class PlayerLogic {
}
public void sendVipDailyOrLevlUpReward(User user, int vipLevel,int reson) throws Exception {
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel);
Map<Integer, Integer> privilegeMap = sVipLevelConfig.getPrivilegeMap();
int[][] dailyGifts = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getDailyGift();
for(int[] dailyGift : dailyGifts){
if(privilegeMap!=null&&privilegeMap.containsKey(dailyGift[1])){
int num = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user, dailyGift[1]);
if(num>0){
Item item = user.getItemManager().getItem(dailyGift[0]);
Integer num = privilegeMap.get(dailyGift[1]);
int hadNum=0;
if(item!=null){
hadNum=item.getItemNum();
}
if(hadNum<num){
Map<Integer,Integer> itemMap = new HashMap<>(1);
if(reson == BIReason.VIP_LEVEL_REWARD && vipLevel!=0){
/* if(reson == BIReason.VIP_LEVEL_REWARD && vipLevel!=0){
Map<Integer, Integer> privilegePreMap = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel - 1).getPrivilegeMap();
hadNum = privilegePreMap.get(dailyGift[1]);
}
}*/
itemMap.put(dailyGift[0],num-hadNum);
ItemUtil.addItem(user,itemMap,null, reson);
}
@ -781,7 +779,7 @@ public class PlayerLogic {
}
return false;
}
public int getMaxCountByPrivilege(User user,int privilegeId){
private int getMaxCountByPrivilege(User user,int privilegeId){
SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilegeId);
Map<Integer, Map<Integer, Integer>> conditionMap = SPrivilegeTypeConfig.conditionMap.get(sPrivilegeTypeConfig.getUnlockType());
int mCount = 0;

View File

@ -9,9 +9,9 @@ import com.ljsd.jieling.protocols.PlayerInfoProto;
*/
public interface IRank {
PlayerInfoProto.RankResponse getRank(int uid,int activityId,int page,int rankEndLine) throws Exception ;
PlayerInfoProto.RankResponse getRank(int uid,String rkey,int page,int rankEndLine) throws Exception ;
void addRank(int uid,int activityId,double... data);
void addRank(int uid,String rkey,double... data);
int getParam1(double data);

View File

@ -19,7 +19,8 @@ public enum RankEnum {
MAIN_LEVEL_RANK(3,RedisKey.MAIN_LEVEL_RANK, MainLevelRank::new),//param1通关关卡Id param2无 param3:无
MONSTER_ATTACK_RANK(4,RedisKey.MONSTER_ATTACK_RANK,MonsterAttackRank::new),//param1兽潮层数 param2无 param3:无
RANDOM_CARD_RANK(10,RedisKey.RANDOM_CARD_RANK, RandomCardRank::new),//param1抽取积分 param2无 param3:无
RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new)//param1时间 param2英雄tempId param3:uid
RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new),//param1时间 param2英雄tempId param3:uid
GUILD_BOSS_RANK(12,RedisKey.GUILD_BOSS_RANK,GuildBossRank::new),//param1时间 param2英雄tempId param3:uid
;
private int type;
private String redisKey;

View File

@ -33,7 +33,11 @@ public class RankLogic {
}
public void getRank(ISession session, int type, int activityId,MessageTypeProto.MessageType messageType) throws Exception {
int page = 1;
PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),activityId,1, -1);
String rkey = "";
if(activityId != 0){
rkey = String.valueOf(activityId);
}
PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),rkey,1, -1);
MessageUtil.sendMessage(session,1,messageType.getNumber(),rankResponse,true);
}
}

View File

@ -28,13 +28,13 @@ public abstract class AbstractRank implements IRank {
/**
*
* @param activityId id
* @param rkey key id bossid++ key
* @param uid id
* @param rankEndLine 线
* @return
* @throws Exception
*/
public PlayerInfoProto.RankResponse getRank(int uid,int activityId,int page,int rankEndLine) throws Exception {
public PlayerInfoProto.RankResponse getRank(int uid,String rkey,int page,int rankEndLine) throws Exception {
if(rankEndLine==-1){
rankEndLine = 100;
}
@ -43,23 +43,24 @@ public abstract class AbstractRank implements IRank {
page = 1;
}
int start = (page - 1) * rankEndLine, end = page * rankEndLine - 1;
Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = getRankByKey(activityId,start,end);
Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = getRankByKey(rkey,start,end);
if(start==0){
start=1;
}
PlayerInfoProto.RankResponse.Builder allUserResponse = getAllUserResponse(zsetreverseRangeWithScores,start);
//当前用户信息
getMyInfo(user,activityId,allUserResponse);
getMyInfo(user,rkey,allUserResponse);
return allUserResponse.build();
}
/**
*
* @param uid id
* @param rkey redis key
* @param data getScore
*/
public void addRank(int uid,int activityId,double... data){
String key = RedisKey.getKey(redisKey,String.valueOf(activityId),false);
public void addRank(int uid,String rkey,double... data){
String key = RedisKey.getKey(redisKey,rkey,false);
RedisUtil.getInstence().zsetAddOne(key,String.valueOf(uid), getScore(data));
}
public AbstractRank(int type,String redisKey){
@ -74,8 +75,8 @@ public abstract class AbstractRank implements IRank {
return type;
}
public Set<ZSetOperations.TypedTuple<String>> getRankByKey(int activityId,int start,int end){
return RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, String.valueOf(activityId), start, end);
public Set<ZSetOperations.TypedTuple<String>> getRankByKey(String rkey,int start,int end){
return RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, rkey, start, end);
}
protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores,int start) throws Exception{
PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder();
@ -107,9 +108,9 @@ public abstract class AbstractRank implements IRank {
builder.addRanks(everyRank);
}
protected void getMyInfo(User user,int activityId,PlayerInfoProto.RankResponse.Builder allUserResponse){
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,String.valueOf(activityId),Integer.toString(user.getId())).intValue();
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, String.valueOf(activityId), Integer.toString(user.getId()));
protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,rkey,Integer.toString(user.getId())).intValue();
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, rkey, Integer.toString(user.getId()));
CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder()
.setRank(myRank)
.setParam1(getParam1(zSetScore))
@ -162,7 +163,8 @@ public abstract class AbstractRank implements IRank {
public int getParam3(double data) {
return getDataByScore(data).length>2?getDataByScore(data)[2]:0;
}
public double getScoreById(int uid,int activityId){
return RedisUtil.getInstence().getZSetScore(redisKey, String.valueOf(activityId), String.valueOf(uid));
public double getScoreById(int uid,String rkey){
return RedisUtil.getInstence().getZSetScore(redisKey,rkey, String.valueOf(uid));
}
}

View File

@ -0,0 +1,27 @@
package com.ljsd.jieling.logic.rank.rankImpl;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.family.GuildFightLogic;
import com.ljsd.jieling.protocols.PlayerInfoProto;
public class GuildBossRank extends AbstractRank{
public GuildBossRank(int type, String redisKey) {
super(type, redisKey);
}
@Override
public int[] getDataByScore(double score) {
return new int[]{(int)score};
}
@Override
public double getScore(double... data) {
return data[0];
}
@Override
public PlayerInfoProto.RankResponse getRank(int uid, String rkey, int page, int rankEndLine) throws Exception {
rkey = UserManager.getUser(uid).getPlayerInfoManager().getGuildId() + ":" + GuildFightLogic.bossSeason;
return super.getRank(uid, rkey, page, rankEndLine);
}
}

View File

@ -50,8 +50,8 @@ public class MainLevelRank extends AbstractRank {
}
@Override
public Set<ZSetOperations.TypedTuple<String>> getRankByKey(int activityId,int start, int end) {
Set<ZSetOperations.TypedTuple<String>> rankByKey = super.getRankByKey(0,start, end);
public Set<ZSetOperations.TypedTuple<String>> getRankByKey(String rkey,int start, int end) {
Set<ZSetOperations.TypedTuple<String>> rankByKey = super.getRankByKey(rkey,start, end);
return rankByKey;
}

View File

@ -26,7 +26,7 @@ public class RandomCardPerfectRank extends AbstractRank {
}
@Override
public void addRank(int uid,int activityId, double... data) {
public void addRank(int uid,String rkey, double... data) {
String key = RedisKey.getKey(redisKey,"",false);
double[] doubles = new double[3];
System.arraycopy(data, 0, doubles, 0, data.length);

View File

@ -15,9 +15,9 @@ public class TowerRank extends AbstractRank {
}
@Override
public PlayerInfoProto.RankResponse getRank(int uid,int activityId,int page,int rankEndLine) throws Exception {
public PlayerInfoProto.RankResponse getRank(int uid,String rkey,int page,int rankEndLine) throws Exception {
rankEndLine = SSpecialConfig.getIntegerValue(SSpecialConfig.TRIAL_RANKINGSHOWNUM);
return super.getRank(uid,activityId,1, rankEndLine);
return super.getRank(uid,rkey,1, rankEndLine);
}
@Override

View File

@ -394,10 +394,8 @@ public class StoreLogic {
add += sPlayerLevelConfig.getExtraAdd();
}else if(type == 2){
int addPrivageId = extra[1];
int vipLevel = user.getPlayerInfoManager().getVipLevel();
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel);
Map<Integer, Integer> privilegeMap = sVipLevelConfig.getPrivilegeMap();
add +=privilegeMap.get(addPrivageId);
PlayerLogic.getInstance().getMaxCountByPrivilegeType(user,addPrivageId);
add += PlayerLogic.getInstance().getMaxCountByPrivilegeType(user,addPrivageId);
}
}
}

View File

@ -70,9 +70,9 @@ public class SGuildSetting implements BaseConfig {
public static SGuildSetting sGuildSetting;
private int[] bossTime;
private int bossTime;
private int[][] bossReward;
private float[][] bossReward;
@Override
@ -205,4 +205,12 @@ public class SGuildSetting implements BaseConfig {
public int[][] getRenameCost() {
return renameCost;
}
public int getBossTime() {
return bossTime;
}
public float[][] getBossReward() {
return bossReward;
}
}

View File

@ -14,8 +14,6 @@ public class SVipLevelConfig implements BaseConfig {
private static TreeMap<Integer,Integer> money2vip ;
private int vipLevel;
private int[][] privileges;
private int[][] vipBoxDailyReward;
private int[][] vipBoxReward;
@ -24,24 +22,12 @@ public class SVipLevelConfig implements BaseConfig {
private int moneyLimit;
private Map<Integer,Integer> privilegeMap;
@Override
public void init() throws Exception {
Map<Integer, SVipLevelConfig> config = STableManager.getConfig(SVipLevelConfig.class);
money2vip = new TreeMap<>();
for(SVipLevelConfig sVipLevelConfig : config.values()){
int[][] privileges = sVipLevelConfig.getPrivileges();
if(privileges!=null&&privileges.length>0){
Map<Integer,Integer> privilegeMap = new HashMap<>(privileges.length);
for(int[] temp : privileges){
privilegeMap.put(temp[0],temp[1]);
}
sVipLevelConfig.setPrivilegeMap(privilegeMap);
}
money2vip.put(sVipLevelConfig.getMoneyLimit(),sVipLevelConfig.getVipLevel());
}
sVipLevelConfigMap =config;
@ -64,22 +50,10 @@ public class SVipLevelConfig implements BaseConfig {
return vipLevel;
}
public int[][] getPrivileges() {
return privileges;
}
public int[][] getVipBoxReward() {
return vipBoxReward;
}
public Map<Integer, Integer> getPrivilegeMap() {
return privilegeMap;
}
public void setPrivilegeMap(Map<Integer, Integer> privilegeMap) {
this.privilegeMap = privilegeMap;
}
public int[][] getVipBoxDailyReward() {
return vipBoxDailyReward;
}
@ -92,15 +66,8 @@ public class SVipLevelConfig implements BaseConfig {
return moneyLimit;
}
public void setMoneyLimit(int moneyLimit) {
this.moneyLimit = moneyLimit;
}
public static TreeMap<Integer, Integer> getMoney2vip() {
return money2vip;
}
public static void setMoney2vip(TreeMap<Integer, Integer> money2vip) {
SVipLevelConfig.money2vip = money2vip;
}
}

View File

@ -8,7 +8,7 @@ import java.util.*;
public class ExcelUtils {
private static boolean isWrite = true;
private static String excelPath ="D:/excel/0.94/data_execl/base_data/"; //excel 文件
private static String excelPath ="F:/work2/data_execl/base_data/"; //excel 文件
// private static String excelPath ="D:/excel/0.94/data_execl/Map_data/"; //excel 文件
private static String path = "conf/server/";
private static Set<String> oldFileNames = new HashSet<>();
@ -19,30 +19,28 @@ public class ExcelUtils {
String[] list = oldfile.list();
oldFileNames.addAll(Arrays.asList(list));
readExcelData();
// //只加载新文件
//// Set<String> newFileNames = new HashSet<>();
//// File newfile = new File(path);
//// String[] newList = newfile.list();
//// newFileNames.addAll(Arrays.asList(newList));
//// newFileNames.removeAll(oldFileNames);
//// if(!newFileNames.isEmpty()){
//// for(String newFileName : newFileNames){
//// String finalNewFileName = newFileName.replaceAll(".txt", "");
//// genJavaFile(finalNewFileName);
//// }
////
//// }
// genJavaFile("DialRewardSetting");
//只加载新文件
Set<String> newFileNames = new HashSet<>();
File newfile = new File(path);
String[] newList = newfile.list();
newFileNames.addAll(Arrays.asList(newList));
newFileNames.removeAll(oldFileNames);
if(!newFileNames.isEmpty()) {
for (String newFileName : newFileNames) {
String finalNewFileName = newFileName.replaceAll(".txt", "");
genJavaFile(finalNewFileName);
}
}
}
public static void genJavaFile(String fileName){
Map<String,String> fieldInfo = new HashMap<>();
File file = new File("conf/server/"+fileName +".txt");
StringBuffer stringBuffer = new StringBuffer("package com.ljsd.jieling.config;\n" +
StringBuffer stringBuffer = new StringBuffer("package config;\n" +
"\n" +
"import manager.STableManager;\n" +
"import com.ljsd.jieling.logic.Table;\n" +
"import manager.Table;\n" +
"\n" +
"import java.util.Map;\n" +
"\n" +