Merge branch 'refs/heads/master_zzxx' into master_xiyou

master_zzxx
grimm 2024-06-04 18:22:15 +08:00
commit 7ef3ff3439
34 changed files with 244 additions and 105 deletions

View File

@ -59,6 +59,7 @@ public class CarDelayFunction implements FunctionManager {
LOGGER.error("跨服车迟斗法,发奖, key{} 跨服分组 ={},锁状态:{},未获取到锁",lockKey, crossGroup, lock);
return;
}
RedisUtil.getInstence().expireMills(lockKey, TimeUtils.ONE_HOUR);
personRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(personRank.getCrossRedisKey(), "", 0, -1, false);
guildRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(guildRank.getCrossRedisKey(), "", 0, -1, false);
}else {

View File

@ -234,10 +234,10 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
}
CommonProto.Drop.Builder drop;
if(nodeInfo.getType()==ExpeditionLogic.NODETYPE_GREED){
drop = ItemUtil.drop(user,new int[]{STableManager.getConfig(SExpeditionSetting.class).get(1).getSpecialReward()},1, BIReason.EXPEDITION_DROP_REWARD);
drop = ItemUtil.dropByGroup(user,new int[]{STableManager.getConfig(SExpeditionSetting.class).get(1).getSpecialReward()},1, BIReason.EXPEDITION_DROP_REWARD);
}else{
if(sExpeditionFloorConfig.getReward()!=null&&sExpeditionNodeConfig.getReward()!=0){
drop = ItemUtil.drop(user, sExpeditionFloorConfig.getReward(),sExpeditionNodeConfig.getReward(), BIReason.EXPEDITION_DROP_REWARD);
drop = ItemUtil.dropByGroup(user, sExpeditionFloorConfig.getReward(),sExpeditionNodeConfig.getReward(), BIReason.EXPEDITION_DROP_REWARD);
}else {
drop = CommonProto.Drop.newBuilder();
}

View File

@ -100,7 +100,7 @@ public class GetShejiAwardRequestHandler extends BaseHandler<ActivityProto.GetSh
activityType.sendActivityProgress(sessionByUid, null);
int[] dropList = new int[1];
dropList[0]=sGodSacrificeSetting.getTimeRewardGroup();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList,1, BIReason.SHEJI_ACTIVITY);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, dropList,1, BIReason.SHEJI_ACTIVITY);
Poster.getPoster().dispatchEvent(new GetSheJiAwardEvent(uid));
return ActivityProto.GetShejiAwardResponse.newBuilder().setDrop(drop).build();
}

View File

@ -127,7 +127,7 @@ public class NewGeneralAttackHandler extends BaseHandler<ActivityProto.NewGenera
// 当前类型奖励次数
int v = (int) b / ints[0];
dropList[0] = ints[1];
ItemUtil.drop(user, dropList, drop, v, BIReason.NEW_GENERAL_ATTACK);
ItemUtil.dropByGroup(user, dropList, drop, v, BIReason.NEW_GENERAL_ATTACK);
}
// 消耗道具
PlayerLogic.getInstance().checkAndUpdate(user, proto.getPrivilageTypeId(),1);

View File

@ -140,7 +140,7 @@ public class TasuilingxiaoHandler extends BaseHandler<ActivityProto.Tasuilingxia
}
rank.addRank(uid,String.valueOf(proto.getActivityId()),lessBlood);
}
ItemUtil.drop(user,dropList.stream().mapToInt(Integer::intValue).toArray(),drop,1, BIReason.TA_SUI_LING_XIAO);
ItemUtil.dropByGroup(user,dropList.stream().mapToInt(Integer::intValue).toArray(),drop,1, BIReason.TA_SUI_LING_XIAO);
return ActivityProto.TasuilingxiaoResponse.newBuilder().setFightData(fightData).setDrop(drop).setDamageVal((int)lessBlood).build();
}
}

View File

@ -72,7 +72,7 @@ public class CompareNumBonusHandler extends BaseHandler {
}
int[] dropList = new int[1];
dropList[0] = reward[1];
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList,1, BIReason.COMPARENUM_TOTAL_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, dropList,1, BIReason.COMPARENUM_TOTAL_REWARD);
response.setDrop(drop);
break;
}
@ -83,7 +83,7 @@ public class CompareNumBonusHandler extends BaseHandler {
if (reward[0] == levelNum) {
int[] dropList = new int[1];
dropList[0] = reward[1];
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropList,1, BIReason.COMPARENUM_TOTAL_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, dropList,1, BIReason.COMPARENUM_TOTAL_REWARD);
response.setDrop(drop);
break;
}

View File

@ -91,7 +91,7 @@ public class ExplorerMapEventHandler extends BaseHandler<PlayerInfoProto.Explore
.build();
builder.setFightData(fightData);
builder.setFightResult(fightResult.getResult());
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{exploreEventConfig.get(id).getRewardGroup()}, 1, BIReason.EXPLORE_EVENT_MONSTER);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, new int[]{exploreEventConfig.get(id).getRewardGroup()}, 1, BIReason.EXPLORE_EVENT_MONSTER);
builder.setDrop(drop);
if ((int) fightResult.getCheckResult()[0] == 1) {
//user.getUserMissionManager().onGameEvent(user, GameEvent.EXPLORE, MissionType.EXPLORE_REPELMONSTER_NUM,1);
@ -120,14 +120,14 @@ public class ExplorerMapEventHandler extends BaseHandler<PlayerInfoProto.Explore
.build();
builder.setFightData(fightData);
builder.setFightResult((int) fightResult.getCheckResult()[0]);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{exploreEventConfig.get(id).getRewardGroup()}, 1, BIReason.EXPLORE_EVENT_MONSTER);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, new int[]{exploreEventConfig.get(id).getRewardGroup()}, 1, BIReason.EXPLORE_EVENT_MONSTER);
builder.setDrop(drop);
if ((int) fightResult.getCheckResult()[0] == 1) {
//user.getUserMissionManager().onGameEvent(user, GameEvent.EXPLORE, MissionType.EXPLORE_REPELXINMO_NUM, 1);
eventList.remove(index);
}
} else if (exploreEventConfig.get(id).getType() == 3) {
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{exploreEventConfig.get(id).getRewardGroup()}, 1, BIReason.EXPLORE_EVENT_BOX);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, new int[]{exploreEventConfig.get(id).getRewardGroup()}, 1, BIReason.EXPLORE_EVENT_BOX);
builder.setDrop(drop);
//user.getUserMissionManager().onGameEvent(user, GameEvent.EXPLORE, MissionType.EXPLORE_PICKYM_NUM, 1);
eventList.remove(index);

View File

@ -37,7 +37,7 @@ public class GetHardStageChapterRewardHandler extends BaseHandler<PlayerInfoProt
HardStageLogic.getChapterReward(user,rewardStage,dropList);
}
}
ItemUtil.drop(user,dropList.stream().mapToInt(Integer::intValue).toArray(),drop,1, BIReason.HARD_STAGE_GET);
ItemUtil.dropByGroup(user,dropList.stream().mapToInt(Integer::intValue).toArray(),drop,1, BIReason.HARD_STAGE_GET);
PlayerInfoProto.GetHardStageChapterRewardResponse.Builder response = PlayerInfoProto.GetHardStageChapterRewardResponse.newBuilder();
response.setDrop(drop);
MessageUtil.sendMessage(iSession, 1,MessageTypeProto.MessageType.HARD_STAGE_CHAPTER_REWARD_RESPONSE.getNumber(), response.build(), true);

View File

@ -215,7 +215,7 @@ public class StartHardStageRequestHandler extends BaseHandler<PlayerInfoProto.Ha
int hardStageId = SHardStage.getStageIdByChapterAndSection(user.getHardStageManager().getCurChapter(), user.getHardStageManager().getCurNode());
Poster.getPoster().dispatchEvent(new ShanHeSheJiTuStarEvent(iSession.getUid(), 1, hardStageId));
ItemUtil.drop(user, dropList.stream().mapToInt(Integer::intValue).toArray(), drop, 1, BIReason.HARD_STAGE_GET);
ItemUtil.dropByGroup(user, dropList.stream().mapToInt(Integer::intValue).toArray(), drop, 1, BIReason.HARD_STAGE_GET);
fightStartResponse.setDrop(drop);
Map<Integer, HardStageChapter> chapt = user.getHardStageManager().getChapterMap(user);
if (chapt != null) {

View File

@ -433,7 +433,7 @@ public class JourneyMap {
Integer[] array = reward.toArray(new Integer[0]);
int[] ints = Arrays.stream(array).mapToInt(Integer::intValue).toArray();
drop = ItemUtil.drop(user,ints,1, BIReason.JOURNEY_COMMON_REWARD);
drop = ItemUtil.dropByGroup(user,ints,1, BIReason.JOURNEY_COMMON_REWARD);
builder.setDrop(drop);
arrivePath.setMapPointId(0);
user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo);
@ -543,7 +543,7 @@ public class JourneyMap {
MapInfoProto.JourneyFightResponse.Builder response =MapInfoProto.JourneyFightResponse.newBuilder();
String combat_results = "失败";
if(fightResult.getResult()==1){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{monster.getReward()}, 1, BIReason.JOURNEY_FIGHT_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, new int[]{monster.getReward()}, 1, BIReason.JOURNEY_FIGHT_REWARD);
response.setDrop(drop);
pathInfo.removeMonster(bossIndex);
@ -630,7 +630,7 @@ public class JourneyMap {
}else {
pathInfo.setRandomReward(null);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{reward}, 1, BIReason.JOURNEY_RANDOM_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, new int[]{reward}, 1, BIReason.JOURNEY_RANDOM_REWARD);
response.setDrop(drop);
response.setLocation(position);

View File

@ -823,7 +823,7 @@ public class MapLogic {
MapMissionManager.updateMapMission(user, EventType.updatePonintEvent, pointId, pointId);
CommonProto.Drop.Builder dropBuilder = null;
if (sOptionConfig.getReward().length > 0) {
dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1, BIReason.MAP_EVENET_REWARD);
dropBuilder = ItemUtil.dropByGroup(user, sOptionConfig.getReward(), 1, BIReason.MAP_EVENET_REWARD);
}
List<CommonProto.EventBehaviorValues> eventBehaviorValuesList = new ArrayList<>();
for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) {
@ -1303,7 +1303,7 @@ public class MapLogic {
if (mission.getMissionInfo() != null) {
checkMissionReturn.newEventId = mission.getMissionInfo();
}
checkMissionReturn.drop = ItemUtil.drop(user, sMissionEventsConfig.getReward(), 1, BIReason.MAP_MISSION_REWARD);
checkMissionReturn.drop = ItemUtil.dropByGroup(user, sMissionEventsConfig.getReward(), 1, BIReason.MAP_MISSION_REWARD);
int useTime = getUseTime(user);
mission.setTime(useTime);
CrossInfo crossInfo = user.getMapManager().getCrossInfoMap().get(mapManager.getCurMapId());
@ -1526,7 +1526,7 @@ public class MapLogic {
SChallengeMapConfig sChallengeMapConfig = STableManager.getConfig(SChallengeMapConfig.class).get(mapId);
for (int i = 0; i < count; i++) {
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sChallengeMapConfig.getSweepingAward(), 1, BIReason.MAP_SWEEP_REWARD);
CommonProto.Drop.Builder dropBuilder = ItemUtil.dropByGroup(user, sChallengeMapConfig.getSweepingAward(), 1, BIReason.MAP_SWEEP_REWARD);
mapSweepResponse.addDrop(dropBuilder);
}
Poster.getPoster().dispatchEvent(new StoryEvent(user.getId(), count));
@ -1580,7 +1580,7 @@ public class MapLogic {
.setResult(fightResult.getResult());
if (fightResult.getResult() == 1) {
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(mapManager.getSuddenlyBoss());
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1.0f, BIReason.SUDDENLY_REWARD);
CommonProto.Drop.Builder dropBuilder = ItemUtil.dropByGroup(user, sMonsterGroup.getRewardgroup(), 1.0f, BIReason.SUDDENLY_REWARD);
builderResponse.setEnventDrop(dropBuilder);
mapManager.findSuddenlyBoss(0, 0);
}
@ -1755,7 +1755,7 @@ public class MapLogic {
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.MAIN_LEVEL_FIGHT_UPDATE_INDICATION_VALUE, build, true);
// 打点,现在不用
SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId);
ReportUtil.onReportEvent(user, ReportEventEnum.PASS_STAGE.getType(), String.valueOf(fightId), "", sMainLevelConfig.getReward(), new Date());
// ReportUtil.onReportEvent(user, ReportEventEnum.PASS_STAGE.getType(), String.valueOf(fightId), "", sMainLevelConfig.getReward(), new Date());
// 奖励道具
return ItemUtil.dropToPrivilege(user, sMainLevelConfig.getReward(), BIReason.LEVELDIFFICULTY_FIGHT_REWARD);
}
@ -2633,7 +2633,7 @@ public class MapLogic {
if (!dailyPass.contains(id)) {
throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 1);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sDailyChallengeConfig.getReward(), 1, 1);
builder.setDrop(drop);
consumeCount = true;
} else if (type == 1) {
@ -2686,7 +2686,7 @@ public class MapLogic {
FightRecordLogic.getInstance().addRecordMap(user, fightData);
if (fightResult.getResult() > 0) {
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 1);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sDailyChallengeConfig.getReward(), 1, 1);
builder.setDrop(drop);
playerInfoManager.addDailyPass(id);
} else {
@ -3127,7 +3127,7 @@ public class MapLogic {
killNum++;
SEventPointConfig point = eventPointConfig.get(cell.getEventId());
SMonsterGroup monsterGroup = SMonsterGroup.getsMonsterGroupMap().get(point.getOption()[0]);
ItemUtil.drop(user, monsterGroup.getRewardgroup(), drop, 1, BIReason.MAP_FAST_FIGHT_REWARD);
ItemUtil.dropByGroup(user, monsterGroup.getRewardgroup(), drop, 1, BIReason.MAP_FAST_FIGHT_REWARD);
BehaviorUtil.destoryApointXY(user, cell.getCellId());
}
// 扫荡boss增加杀敌数量

View File

@ -284,7 +284,7 @@ public class EndlessMap extends AbstractMap{
// user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.ENDLESS_MONSTER_KILL);
mapManager.removeEndlessOneMonsterHp(mapManager.getTriggerXY());
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(groupId);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, BIReason.MAP_FAST_FIGHT_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sMonsterGroup.getRewardgroup(), 1, BIReason.MAP_FAST_FIGHT_REWARD);
fastFightResponseBuilder.setEnventDrop(drop.build());
}
mapManager.setLastFightResult(resultCode);
@ -686,7 +686,7 @@ public class EndlessMap extends AbstractMap{
mapManager.removeEndlessOneMonsterHp(mapManager.getCurXY());
//血量更新
// refreshHp(user, mapManager.getTeamId(),checkResult);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, BIReason.MAP_GENERAL_FIGHT_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sMonsterGroup.getRewardgroup(), 1, BIReason.MAP_GENERAL_FIGHT_REWARD);
checkMoraleLevel(user);
builder.setEnventDrop(drop.build());
builder.setResult(resultCode);

View File

@ -475,7 +475,7 @@ public class TowerMap extends AbstractMap {
mapManager.updateTrialKillCount(trialInfo.getKillCount()+1);
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(groupId);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, BIReason.MAP_FAST_FIGHT_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sMonsterGroup.getRewardgroup(), 1, BIReason.MAP_FAST_FIGHT_REWARD);
fastFightResponseBuilder.setEnventDrop(drop.build());
}else{
List<Long> hpList= fightResult.getRemainHp();
@ -646,7 +646,7 @@ public class TowerMap extends AbstractMap {
mapManager.updateTrialKillCount(mapManager.getTrialInfo().getKillCount()+monsterAmount);
int[] bombReward = rewardResult.stream().mapToInt(Integer::valueOf).toArray();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, bombReward, 1, BIReason.BOMB_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, bombReward, 1, BIReason.BOMB_REWARD);
mapManager.updateBombUseCount(mapManager.getTrialInfo().getBombUseTimes()+1);

View File

@ -34,7 +34,7 @@ public class GetPhoneRewardRequestHandler extends BaseHandler<PlayerInfoProto.Ge
rewardIds[0] = reward;
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
CommonProto.Drop.Builder drop = ItemUtil.drop(user,rewardIds, 1, BIReason.BIND_PHONE);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user,rewardIds, 1, BIReason.BIND_PHONE);
if(user.getPlayerInfoManager().getPhoneBindInfo().getState()!=1){
throw new ErrorCodeException(ErrorCode.PHONE_GET);
}

View File

@ -206,7 +206,7 @@ public class SituationLogic {
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, BIReason.SITUATION_CHALLENGE_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sRaceTowerConfig.getReward(), 1, BIReason.SITUATION_CHALLENGE_REWARD);
builder.setDrop(drop);
ReportUtil.dropToString(drop,dropResult);
@ -266,7 +266,7 @@ public class SituationLogic {
//挑战成功
if(fightResult.getResult()>0){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getFirstReward(), 1, BIReason.SITUATION_CHALLENGE_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sRaceTowerConfig.getFirstReward(), 1, BIReason.SITUATION_CHALLENGE_REWARD);
builder.setDrop(drop);
// 埋点用的

View File

@ -277,10 +277,13 @@ public class ActivityLogic implements IEventHandler{
}
public void newPlayerOpenActivityMission(User user) throws Exception {
long now = TimeUtils.now();
checkActivityOfUser(user, null);
LOGGER.info("初始化玩家活动耗时1{}",TimeUtils.now() - now);
ISession session = OnlineUserManager.getSessionByUid(user.getId());
if (null != session)
if (null != session) {
sendLuckWheelPool(user, session);
}
}
public void checkNeedOpenStore(User user,int storeId,long startTime,long endTime) throws Exception {
@ -347,7 +350,7 @@ public class ActivityLogic implements IEventHandler{
*/
public Set<Integer> checkActivityOfUser(User user, PlayerInfoProto.ActivityUpateIndication.Builder builder) throws Exception {
long now = TimeUtils.now();
if(user==null){
if(user == null){
return new HashSet<>(1);
}
ActivityManager activityManager = user.getActivityManager();
@ -466,6 +469,7 @@ public class ActivityLogic implements IEventHandler{
goRewardActivity(user, activityId, builder, isRemove);
}
}
LOGGER.info("校验活动耗时,uid{},耗时:{}",user.getId(), TimeUtils.now() - now);
return openNewActivityIds;
}

View File

@ -118,7 +118,7 @@ public enum ActivityTypeEnum {
FABAO_BOOK_REWARD(ActivityType.FABAO_BOOK_REWARD,FabaoBookRewardActivity::new),//法宝图鉴宝箱
DRAW_FABAO_LV_CHEST(ActivityType.DRAW_FABAO_LV_CHEST,DrawLvChestActivity::new),//抽卡等级宝箱
TIAN_JIANG_GIFT(ActivityType.TIAN_JIANG_GIFT,DefaultEmptyActivity::new),//天降礼包
DA_NAO_TIAN_GONG(ActivityType.DA_NAO_TIAN_GONG, ExpeditionActivity::new),//大闹天宫
// DA_NAO_TIAN_GONG(ActivityType.DA_NAO_TIAN_GONG, ExpeditionActivity::new),//大闹天宫
LINGLONG_BAOJING_TASK(ActivityType.LINGLONG_BAOJING_TASK, DefaultEmptyActivity::new),//玲珑宝镜任务
NOVICE_GEM_CHEST(ActivityType.NOVICE_GEM_CHEST, GemChestActivity::new),//初级命石宝箱
ADVANCED_GEM_CHEST(ActivityType.ADVANCED_GEM_CHEST, GemChestActivity::new),//高级命石宝箱

View File

@ -200,7 +200,7 @@ public class ArenaLogic {
*/
public void checkChallenge(User user, boolean ifUpdate) throws Exception {
if (!user.getTeamPosManager().getTeamPosForHero().containsKey(TeamEnum.TEAM_ARENA_DEFENSE.getTeamId())) {
throw new ErrorTableException(161);//编队未配置
throw new ErrorTableException(189);//编队未配置
}
SArenaSetting sArenaSetting = SArenaSetting.getSArenaSetting();
int battleFree = sArenaSetting.getBattleFree();
@ -575,7 +575,7 @@ public class ArenaLogic {
int reason = fightResult == 1 ? BIReason.ARENA_WIN_REWARD : BIReason.ARENA_LOSE_REWARD;
int[] dropList = new int[1];
dropList[0] = rewardGroupId;
return ItemUtil.drop(user, dropList, 1, reason);
return ItemUtil.dropByGroup(user, dropList, 1, reason);
}

View File

@ -31,6 +31,8 @@ public class MainLevelManager extends MongoBase {
private int upSoldierLvEndTime;//兵力升级结束时间
private int soldierRestartTime;//小兵挂机开始时间
private Map<Integer, Integer> soldierStateInfo = new HashMap<>();//小兵每关单独挂机时间
private int soldierLowCount;// 小兵最低属性次数
public void init(){
int nowInt = TimeUtils.nowInt();
setStartTime(nowInt);
@ -269,4 +271,18 @@ public class MainLevelManager extends MongoBase {
this.soldierStateInfo.clear();
updateString("soldierStateInfo",soldierStateInfo);
}
public int getSoldierLowCount() {
return soldierLowCount;
}
public void setSoldierLowCount(int soldierLowCount) {
this.soldierLowCount = soldierLowCount;
updateString("soldierLowCount",soldierLowCount);
}
public void addSoldierLowCount(int count) {
this.soldierLowCount += count;
updateString("soldierLowCount",soldierLowCount);
}
}

View File

@ -106,13 +106,16 @@ public class UserManager {
}
public static User userLogin(int uid,String openId,String channel,int pid,int gid,String platform,String ip,String channle_id,String bundle_id,String ccId,String pack_Id) throws Exception {
long now = TimeUtils.now();
User user;
if (!UserManager.isUserExist(uid)){
user = MongoUtil.getInstence().getMyMongoTemplate().findById(User.getCollectionName(), uid, User.class);
LOGGER.info("玩家登陆耗时2{}",TimeUtils.now()-now);
now = TimeUtils.now();
if (user == null) {
user = registerUser(uid,openId,channel,pid,gid,platform,ip,channle_id,bundle_id,ccId,pack_Id);
LOGGER.info("玩家登陆耗时3{}",TimeUtils.now()-now);
}
UserManager.addUser(user);
}else{
user = getUser(uid);
user.getPlayerInfoManager().setGid(gid);
@ -124,17 +127,22 @@ public class UserManager {
private static User registerUser(int uid,String openId,String channel,int pid,int gid,String platform,String ip,String channle_id,String bundle_id,String ccId,String pack_Id) throws Exception {
long now = TimeUtils.now();
User user = new User(uid);
UserManager.addUser(user);
now = TimeUtils.now();
initPlayer(user,openId,channel,pid,gid,platform,ip,channle_id,bundle_id,ccId,pack_Id);
LOGGER.info("注册玩家耗时2{}", TimeUtils.now() - now);
now = TimeUtils.now();
MongoUtil.getInstence().getMyMongoTemplate().save(user.getId(),user);
LOGGER.info("注册玩家耗时3{}", TimeUtils.now() - now);
return user;
}
private static void initPlayer(User user,String openId,String channel,int pid,int gid,String platform,String ip,String channle_id,String bundle_id,String ccId,String pack_Id) throws Exception {
long now = TimeUtils.now();
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
PlayerManager playerManager = user.getPlayerInfoManager();
long now = TimeUtils.now();
playerManager.setNickName(Integer.toString(user.getId()));
playerManager.setNameColor("F6E1B6");
playerManager.setOpenId(openId);
@ -185,19 +193,29 @@ public class UserManager {
user.getUserMissionManager().onGameEvent(user, GameEvent.BEGINNER);
user.getUserMissionManager().onGameEvent(user, GameEvent.VIP_LEVLUP, MissionType.VIP_LEVEL,0);
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.LOGIN_TIMES.getType(),1));
now = TimeUtils.now();
ActivityLogic.getInstance().newPlayerOpenActivityMission(user);
LOGGER.info("初始化玩家耗时11{}", TimeUtils.now() - now);
now = TimeUtils.now();
Poster.getPoster().dispatchEvent(new EveryDayDiscountUnlockEvent(user.getId()));
LOGGER.info("初始化玩家耗时12{}", TimeUtils.now() - now);
now = TimeUtils.now();
ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD);
LOGGER.info("初始化玩家耗时13{}", TimeUtils.now() - now);
HeroManager heroManager = user.getHeroManager();
Map<String, Hero> heroMap = heroManager.getHeroMap();
TeamPosManager teamPosManager = user.getTeamPosManager();
List<Hero> teamHeros = new ArrayList<>(1);
teamHeros.add(heroMap.values().iterator().next());
teamPosManager.addTeamOfInitPlayer(teamHeros);
now = TimeUtils.now();
long force = HeroLogic.getInstance().calTeamTotalForce(user, 1);
LOGGER.info("初始化玩家耗时15{}", TimeUtils.now() - now);
playerManager.setMaxForce(force);
user.getExpeditionManager().setExpeditionLeve(1);
now = TimeUtils.now();
CrossServiceLogic.getInstance().saveBasicPlayerToRedis(user);//初始化角色
LOGGER.info("初始化玩家耗时16{}", TimeUtils.now() - now);
ReportUtil.onReportEvent(user, ReportEventEnum.CREATE_ROLE.getType());//先发送注册事件
}

View File

@ -8,10 +8,14 @@ import com.ljsd.jieling.jbean.gm.GmActivityManager;
import com.ljsd.jieling.logic.dao.*;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.mapping.Document;
@Document
@CompoundIndex(def = "{'playerManager.level' : 1, 'playerManager.loginTime': 1}", name = "level_loginTime_idx")
@CompoundIndexes({
@CompoundIndex(name = "unique_id", def = "{'_id': 1}"),
@CompoundIndex(name = "level_loginTime_idx", def = "{'playerManager.level' : 1, 'playerManager.loginTime': 1}")
})
public class User {
public static final String _COLLECTION_NAME = "user";

View File

@ -304,10 +304,10 @@ public class GuildChallengeLogic {
}
}
drop = ItemUtil.drop(user, new int[]{config.getReward(),config.getKillReward()}, 1, 1);
drop = ItemUtil.dropByGroup(user, new int[]{config.getReward(),config.getKillReward()}, 1, 1);
}else{
drop = ItemUtil.drop(user, new int[]{config.getReward()}, 1, 1);
drop = ItemUtil.dropByGroup(user, new int[]{config.getReward()}, 1, 1);
}
int remainHp;
if(guildInfo.getBossHpRemain()==0){

View File

@ -1097,8 +1097,8 @@ public class GuildFightLogic {
SGuildBossRewardConfig sGuildBossRewardConfig = SGuildBossRewardConfig.getIndexByHurt(myHurt);
int[] randomGroupIds = MathUtils.randomFromWeight(sGuildBossRewardConfig.getRandomRewardAllGroup());
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sGuildBossRewardConfig.getReward(), 1, BIReason.GUILD_BOSS_FIGHT_BASE_REWARD);
CommonProto.Drop.Builder raadomDrop = ItemUtil.drop(user, randomGroupIds, 1, BIReason.GUILD_BOSS_FIGHT_RANDOM_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sGuildBossRewardConfig.getReward(), 1, BIReason.GUILD_BOSS_FIGHT_BASE_REWARD);
CommonProto.Drop.Builder raadomDrop = ItemUtil.dropByGroup(user, randomGroupIds, 1, BIReason.GUILD_BOSS_FIGHT_RANDOM_REWARD);
FightInfoProto.FightEndResponse.Builder fightEndResponse = FightInfoProto.FightEndResponse.newBuilder();
fightEndResponse.setEnventDrop(drop);
@ -1125,8 +1125,8 @@ public class GuildFightLogic {
CommonProto.FightData fightDataProto = CommonProto.FightData.parseFrom(fightData);
SGuildBossRewardConfig sGuildBossRewardConfig = SGuildBossRewardConfig.getIndexByHurt(lastHurt);
int[] randomGroupIds = MathUtils.randomFromWeight(sGuildBossRewardConfig.getRandomRewardAllGroup());
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sGuildBossRewardConfig.getReward(), 1, BIReason.GUILD_BOSS_FIGHT_BASE_REWARD);
CommonProto.Drop.Builder raadomDrop = ItemUtil.drop(user, randomGroupIds, 1, BIReason.GUILD_BOSS_FIGHT_RANDOM_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, sGuildBossRewardConfig.getReward(), 1, BIReason.GUILD_BOSS_FIGHT_BASE_REWARD);
CommonProto.Drop.Builder raadomDrop = ItemUtil.dropByGroup(user, randomGroupIds, 1, BIReason.GUILD_BOSS_FIGHT_RANDOM_REWARD);
FightInfoProto.SweepRightResponse build = FightInfoProto.SweepRightResponse.newBuilder().setDrop(drop).setRandomDrop(raadomDrop).setFightData(fightDataProto).setHurt(lastHurt).build();
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.SWEEP_RIGHT_RESPONSE_VALUE,build, true);
}

View File

@ -277,11 +277,11 @@ public class CombatLogic {
}
}
}
ItemUtil.combineRewardByMainLine(user,false, mainLevelConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardByMainLine(user,true, mainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
ItemUtil.combineRewardGroupByMainLine(user,false, mainLevelConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardGroupByMainLine(user,true, mainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
// 小兵关卡
SSoldierStageConfig stageConfig = SSoldierStageConfig.idMap.get(mainLevelManager.getSoldierLayerId());
ItemUtil.combineRewardByMainLine(user,false, stageConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardGroupByMainLine(user,false, stageConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
itemRandomObj.setEquipMap(equipAutoCombine(itemRandomObj.getEquipMap()));
//清除无用活动道具
@ -639,11 +639,11 @@ public class CombatLogic {
String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_find_reward_title");
String content = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_find_reward__txt");
if (findRewardgroup != null) {
String findRewardMail = ItemUtil.getMailReward(findUser,findRewardgroup, 1.0f);
String findRewardMail = ItemUtil.getMailRewardByGroup(findUser,findRewardgroup, 1.0f);
MailLogic.getInstance().sendMail(findUserId,title,content,findRewardMail,nowTime, Global.MAIL_EFFECTIVE_TIME);
}
User killUser = UserManager.getUser(killUid);
String killRewardMail = ItemUtil.getMailReward(killUser,killReward, 1.0f);
String killRewardMail = ItemUtil.getMailRewardByGroup(killUser,killReward, 1.0f);
title = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_kill_reward_title");
content = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_kill_reward__txt");
MailLogic.getInstance().sendMail(killUid,title,content,killRewardMail,nowTime, Global.MAIL_EFFECTIVE_TIME);
@ -966,13 +966,13 @@ public class CombatLogic {
getSoldierBaseReward(baseList);
ItemMap itemObj = new ItemMap();
ItemMap itemRandom = new ItemMap();
ItemUtil.combineRewardByMainLineNotCycle(user,true,baseList,itemObj,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardGroupByMainLineNotCycle(user,true,baseList,itemObj,BIReason.ADVENTURE_BASE_REWARD);
if (viewBaseReward){
myResult = true;
rewardStr = ItemUtil.getReward(itemObj);
return this;
}
ItemUtil.combineRewardByMainLineNotCycle(user, false, randomList,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
ItemUtil.combineRewardGroupByMainLineNotCycle(user, false, randomList,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
//装备合成
itemRandom.setEquipMap(equipAutoCombine(itemRandom.getEquipMap()));
removeNoUseItem(user,itemRandom.getItemMap());

View File

@ -101,7 +101,7 @@ public class DuoduiTowerLogic {
}
if (!verifyTeam(type, user)) {
LOGGER.error("队伍存在空阵容,类型:{},当前层数:{},要挑战层数:{}uid{}", type, rankTier, tier, user.getId());
throw new ErrorTableException(187);
throw new ErrorTableException(187);//编队为空
}
for (SDuoDuiTower tower : towers) {
PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), tower.getTowerWaveTeam(), 20, GameFightType.DuoduiFight, tower.getId());

View File

@ -302,7 +302,7 @@ public class HardStageLogic {
*
*/
public static CommonProto.Drop.Builder getReward(User user, int rewardId) throws Exception {
return ItemUtil.drop(user, new int[]{rewardId}, 1, BIReason.HARD_STAGE_GET);
return ItemUtil.dropByGroup(user, new int[]{rewardId}, 1, BIReason.HARD_STAGE_GET);
}
private static boolean addDropAndStar(HardStageNode node, List<Integer> dropList, int rewardGroupId) {

View File

@ -85,7 +85,7 @@ public class ItemLogic {
if (!result) {
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.DECOMPOS_ITEM_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.DECOMPOS_ITEM_REWARD);
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
@ -184,7 +184,7 @@ public class ItemLogic {
if (!result) {
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.USER_ITEM);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.USER_ITEM);
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
@ -277,11 +277,11 @@ public class ItemLogic {
SMainLevelConfig targetMainLevelConfig = mainLevelConfigMap.get(mainLevelManager.getFightId());
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
int[] randomReward = targetMainLevelConfig.getRandomReward();
ItemUtil.combineRewardByMainLine(user, false, randomRewardMin, dropRatio, itemObj, BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardByMainLine(user, true, randomReward, dropRatio, itemObj, BIReason.ADVENTURE_RANDOM_REWARDD);
ItemUtil.combineRewardGroupByMainLine(user, false, randomRewardMin, dropRatio, itemObj, BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardGroupByMainLine(user, true, randomReward, dropRatio, itemObj, BIReason.ADVENTURE_RANDOM_REWARDD);
// 小兵关卡
SSoldierStageConfig stageConfig = idMap.get(mainLevelManager.getSoldierLayerId());
ItemUtil.combineRewardByMainLine(user, false, stageConfig.getRandomRewardMin(), dropRatio, itemObj, BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardGroupByMainLine(user, false, stageConfig.getRandomRewardMin(), dropRatio, itemObj, BIReason.ADVENTURE_BASE_REWARD);
if (itemObj.getItemMap().containsKey(itemId)) {
dropArr[index][0] = itemId;
@ -326,7 +326,7 @@ public class ItemLogic {
}
SItem sItem = SItem.getsItemMap().get(item.getItemId());
num += (int) item.getItemNum();
ItemUtil.combineReward(user, true, sItem.getRewardGroup(), 1f, itemObj, 0);
ItemUtil.combineRewardByGroup(user, true, sItem.getRewardGroup(), 1f, itemObj, 0);
}
int[][] costItemArr = StringUtil.parseFiledInt2(cost.toString());
long mapNum = ItemUtil.getMapById(itemId, itemObj);
@ -371,7 +371,7 @@ public class ItemLogic {
reward.append("#").append(sItem.getResolveReward());
}
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.DECOMPOS_EQUIP_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.DECOMPOS_EQUIP_REWARD);
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
@ -419,7 +419,7 @@ public class ItemLogic {
user.getEquipManager().removeEquip(jewelId);
}
// 奖励组
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.JEWEL_DECOMPOSE);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, StringUtil.parseFiledInt(reward.toString()), 1, BIReason.JEWEL_DECOMPOSE);
// 直接的奖励
ItemUtil.drop(user, items, drop, BIReason.JEWEL_DECOMPOSE);
// 协议返回

View File

@ -746,7 +746,7 @@ public class MissionLoigc {
throw new ErrorCodeException(ErrorCode.newDefineCode("had taked reward"));
}
int rewardGroup = STableManager.getConfig(SBloodyBattleTask.class).get(missionId).getRewardGroup();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{rewardGroup}, 1.0f, BIReason.TAKE_MISSION_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, new int[]{rewardGroup}, 1.0f, BIReason.TAKE_MISSION_REWARD);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),missionId,GameMisionType.BLOODYMISSION.toString());
@ -769,7 +769,7 @@ public class MissionLoigc {
}
takeCopyMisionRewards.add(missionId);
user.getMapManager().setTakeCopyMisionRewards(takeCopyMisionRewards);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, STableManager.getConfig(SAccomplishmentConfig.class).get(missionId).getReward(), 1, BIReason.TAKE_COPY_REWARD);
CommonProto.Drop.Builder drop = ItemUtil.dropByGroup(user, STableManager.getConfig(SAccomplishmentConfig.class).get(missionId).getReward(), 1, BIReason.TAKE_COPY_REWARD);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);

View File

@ -1110,7 +1110,7 @@ public class PlayerLogic {
}
String title = sTestWelfare.gettitle();
String content = sTestWelfare.getvalue();
String mailReward = ItemUtil.getMailReward(user, sTestWelfare.getReward(), 1.0f);
String mailReward = ItemUtil.getMailRewardByGroup(user, sTestWelfare.getReward(), 1.0f);
MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, (int) (System.currentTimeMillis() / 1000), Global.MAIL_EFFECTIVE_TIME);
timingMailIds.add(sTestWelfare.getId());

View File

@ -62,9 +62,6 @@ public class RankLogic {
LOGGER.info("获取排行榜信息type={},activityId={}",type,activityId);
String rkey = activityId==0 ? "" : String.valueOf(activityId);
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
if (crossGroup < 0){
LOGGER.error("服务器验证未跨服跨服id{}",crossGroup);
}
PlayerInfoProto.RankResponse rankResponse;
AbstractRank rank = RankContext.getRankEnum(type);
if(RankContext.isCrossRank(type) && isCross == 1 && crossGroup > 0){//跨服

View File

@ -25,6 +25,7 @@ import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.*;
import org.apache.commons.lang3.RandomUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
@ -159,6 +160,35 @@ public class SoldierLogic {
if (lotteryConfig == null){
throw new ErrorCodeException(ErrorCode.CFG_NULL);//配置不存在
}
Soldier soldier = null;
int lowCount = mainLevelManager.getSoldierLowCount();//be
int maxNumber = SSpecialConfig.getIntegerValue("Soldiers_Lottery_Maxnumber");
if (lowCount >= maxNumber){
// 特殊招募
soldier = specialRecruitSoldier(user);
}
if (soldier == null){
// 普通招募
soldier = usuallyRecruitSoldier(user);
}
// 消耗
ItemUtil.itemCost(user, new int[][]{lotteryCost}, BIReason.SOLDIER_LOTTERY_COST, 0);
// 获得
mainLevelManager.updateSoldier(soldier);
CommonProto.Soldier soldierProto = CBean2Proto.getSoldierProto(soldier);
MapInfoProto.RecruitSoldierResponse.Builder builder = MapInfoProto.RecruitSoldierResponse.newBuilder().setSoldier(soldierProto);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.RecruitSoldierResponse_VALUE, builder.build(), true);
}
/**
*
* @param user
* @return
*/
public Soldier usuallyRecruitSoldier(User user){
int soldierLv = user.getMainLevelManager().getSoldierLv();
SSoldiersLotteryConfig lotteryConfig = SSoldiersLotteryConfig.levelMap.get(soldierLv);
int[] soldierType = lotteryConfig.getSoldierType();
Random random = new Random();
int typeIndex = random.nextInt(soldierType.length);
@ -193,14 +223,73 @@ public class SoldierLogic {
soldier.setLevel(level);
soldier.setPosition(-1);
soldier.setAttributes(attributes);
// 消耗
ItemUtil.itemCost(user, new int[][]{lotteryCost}, BIReason.SOLDIER_LOTTERY_COST, 0);
// 获得
mainLevelManager.updateSoldier(soldier);
CommonProto.Soldier soldierProto = CBean2Proto.getSoldierProto(soldier);
MapInfoProto.RecruitSoldierResponse.Builder builder = MapInfoProto.RecruitSoldierResponse.newBuilder().setSoldier(soldierProto);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.RecruitSoldierResponse_VALUE, builder.build(), true);
return soldier;
}
/**
*
* @param user
* @return
*/
public Soldier specialRecruitSoldier(User user){
MainLevelManager manager = user.getMainLevelManager();
int size = manager.getSoldierMap().values().size();
if (size == 0){
LOGGER.error("特殊次数招募小兵退出,玩家当前没有小兵, uid:{}, size{}",user.getId(), size);
return null;
}
int[] randomIntS = new int[size];
int index = 0;
for (Soldier value : manager.getSoldierMap().values()) {
randomIntS[index] = value.getPosition();
index++;
}
int i = RandomUtils.nextInt(0, size);
Soldier soldier = manager.getSoldier(randomIntS[i]);
if (soldier == null){
LOGGER.error("特殊次数招募小兵退出,随机的位置没有小兵, uid:{}, position{}",user.getId(), randomIntS[i]);
return null;
}
SSoldiersSetting setting = SSoldiersSetting.idMap.get(soldier.getId());
if (setting == null){
LOGGER.error("特殊次数招募小兵退出小兵id在SoldiersSetting表找不到, uid:{}, id{}",user.getId(), soldier.getId());
return null;
}
SSoldiersLevelConfig levelConfig = SSoldiersLevelConfig.libForLevelMap.get(setting.getSoldiers()).get(soldier.getLevel());
if (levelConfig == null){
LOGGER.error("特殊次数招募小兵退出小兵信息在SoldiersLevelConfig表找不到, uid:{}, libraryId{}, level:{}",user.getId(), setting.getSoldiers(), soldier.getLevel());
return null;
}
// 最大属性
HashMap<Integer, Long> maxAttrMap = new HashMap<>();
for (int[] ints : levelConfig.getProperty()) {
maxAttrMap.put(ints[0], (long) (ints[1] * (setting.getSoldierProperty()[1]/10000D)));
}
// 属性
HashMap<Integer, Long> attributes = new HashMap<>();
for (Map.Entry<Integer, Long> entry : soldier.getAttributes().entrySet()) {
int id = entry.getKey();
long value = entry.getValue();
Long maxValue = maxAttrMap.getOrDefault(id, 0L);
// 不到最大属性值,则随机增加
if (maxValue != 0 && value < maxValue){
attributes.put(id, value+1);
}else {
attributes.put(id, value);
}
}
// 封装
Soldier resultSoldier = new Soldier();
resultSoldier.setId(soldier.getId());
resultSoldier.setType(soldier.getType());
resultSoldier.setQuality(soldier.getQuality());
resultSoldier.setLevel(soldier.getLevel());
resultSoldier.setPosition(-1);
resultSoldier.setAttributes(attributes);
// 清零特殊次数
manager.setSoldierLowCount(0);
return resultSoldier;
}
/**
@ -235,6 +324,8 @@ public class SoldierLogic {
}
soldier.setPosition(position);
soldierMap.put(position, soldier);
// 清零特殊次数
mainLevelManager.addSoldierLowCount(0);
}
// 自动遣散或者遣散
int autoLayOff = proto.getAutoLayOff();
@ -249,6 +340,8 @@ public class SoldierLogic {
builder.setDrop(drop);
// 删除待招募区小兵
soldierMap.remove(notUsePosition);
// 记录遣散次数
mainLevelManager.addSoldierLowCount(1);
}
}
@ -276,7 +369,7 @@ public class SoldierLogic {
}
boolean levelOpen = MapLogic.getInstance().checkMainLevelOpen(user, stageConfig.getOpenRule());
if (!levelOpen){
throw new ErrorTableException(162);//关卡条件不满足
throw new ErrorTableException(188);//关卡条件不满足
}
int teamId = TeamEnum.MIAN_LINE_TEAM.getTeamId();
@ -307,8 +400,11 @@ public class SoldierLogic {
mainLevelManager.setSoldierLayerId(stageConfig.getNextId());
mainLevelManager.putSoldierState(stageConfig.getId(), TimeUtils.nowInt());
// 通关奖励
CommonProto.Drop.Builder drop = ItemUtil.drop(user, stageConfig.getReward(), 1, BIReason.SOLDIER_MIAN_LEVEL_REWARD);
builder.setDrop(drop);
int[][] reward = stageConfig.getReward();
if (reward != null && reward.length > 0){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, 1, BIReason.SOLDIER_MIAN_LEVEL_REWARD);
builder.setDrop(drop);
}
builder.setResult(1);
// 排行榜
AbstractRank rank = RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType());

View File

@ -215,7 +215,10 @@ public class BuyGoodsNewLogic {
// 单笔充值
Poster.getPoster().dispatchEvent(new SingleRechargeEvent(user.getId(),amount));
}
// rmb充值
// gm购买支付
else if (orderId.equals(gm_modifier)){
}
// rmb支付 , test支付 扶持支付
else{
// 记录真实充值
user.getPlayerInfoManager().getNewRechargeInfo().addRealityRmb(amount);

View File

@ -178,14 +178,13 @@ public class ItemUtil {
}
return dropBuilder;
}
//活动额外掉落
public static void activityDrop(User user,CommonProto.Drop.Builder dropBuilder ,int[] dropGroupIds, float dropRatio,int reason) throws Exception {
ItemMap itemObj = new ItemMap();
combineRewardDropGroup(user, dropGroupIds, dropRatio,itemObj);
mapToAdd(user,itemObj,dropBuilder,reason);
}
// public static void activityDrop(User user,CommonProto.Drop.Builder dropBuilder ,int[] dropGroupIds, float dropRatio,int reason) throws Exception {
// ItemMap itemObj = new ItemMap();
// combineRewardDropGroup(user, dropGroupIds, dropRatio,itemObj);
// mapToAdd(user,itemObj,dropBuilder,reason);
// }
private static void combineRewardDropGroup(User user, int[] dropGroupIds, float dropRatio,ItemMap itemObj) throws ErrorCodeException{
for (int dropGroupId : dropGroupIds) {
@ -206,20 +205,20 @@ public class ItemUtil {
}
//掉落组概率
public static CommonProto.Drop.Builder drop(User user, Map<int [],Float> dropGroupAndRatioMap,int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
for (Map.Entry<int [],Float> entry :dropGroupAndRatioMap.entrySet()){
int[] dropGroupIds = entry.getKey();
float dropRatio = entry.getValue();
activityDrop(user,dropBuilder,dropGroupIds,dropRatio,reason);
}
return dropBuilder;
}
// public static CommonProto.Drop.Builder drop(User user, Map<int [],Float> dropGroupAndRatioMap,int reason) throws Exception {
// CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
// for (Map.Entry<int [],Float> entry :dropGroupAndRatioMap.entrySet()){
// int[] dropGroupIds = entry.getKey();
// float dropRatio = entry.getValue();
// activityDrop(user,dropBuilder,dropGroupIds,dropRatio,reason);
// }
// return dropBuilder;
// }
/**
*
*/
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds, float dropRatio, int reason) throws Exception {
public static CommonProto.Drop.Builder dropByGroup(User user, int[] dropGroupIds, float dropRatio, int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
ItemMap itemObj = new ItemMap();
combineRewardDropGroup(user, dropGroupIds, dropRatio,itemObj);
@ -230,16 +229,17 @@ public class ItemUtil {
/**
*
*/
public static CommonProto.Drop.Builder dropToPrivilege(User user, int[] dropGroupIds, int reason) throws Exception {
public static CommonProto.Drop.Builder dropToPrivilege(User user, int[][] dropIds, int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
ItemMap itemObj = new ItemMap();
combineRewardDropGroup(user, dropGroupIds, 1,itemObj);
selectItemArr(dropIds,itemObj);
// combineRewardDropGroup(user, dropIds, 1,itemObj);
privilegeAddToMainLevelChallenge(user, itemObj);
mapToAdd(user,itemObj,dropBuilder,reason);
return dropBuilder;
}
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds, CommonProto.Drop.Builder dropBuilder, float dropRatio, int reason) throws Exception {
public static CommonProto.Drop.Builder dropByGroup(User user, int[] dropGroupIds, CommonProto.Drop.Builder dropBuilder, float dropRatio, int reason) throws Exception {
ItemMap itemObj = new ItemMap();
combineRewardDropGroup(user, dropGroupIds, dropRatio,itemObj);
mapToAdd(user,itemObj,dropBuilder,reason);
@ -261,7 +261,7 @@ public class ItemUtil {
/**
*
*/
public static String getMailReward (User user,int[] dropGroupIds,float dropRatio) throws Exception {
public static String getMailRewardByGroup(User user, int[] dropGroupIds, float dropRatio) throws Exception {
ItemMap itemObj = new ItemMap();
combineRewardDropGroup(user, dropGroupIds, dropRatio,itemObj);
return getReward(itemObj);
@ -292,7 +292,7 @@ public class ItemUtil {
}
public static void combineReward(User user,boolean isLoop,int[] dropGroupIds,float dropRatio,ItemMap itemObj,int reason)throws ErrorCodeException{
public static void combineRewardByGroup(User user, boolean isLoop, int[] dropGroupIds, float dropRatio, ItemMap itemObj, int reason)throws ErrorCodeException{
combineRewardDropGroup(user, dropGroupIds, dropRatio,itemObj);
if(!isLoop){
extraAddItem(user,itemObj.getItemMap(),reason);
@ -302,7 +302,7 @@ public class ItemUtil {
/**
* 线
*/
public static void combineRewardByMainLine(User user, boolean fiexdOrRandom, int[] dropGroupIds, int time, ItemMap itemObj, int reason) throws ErrorCodeException{
public static void combineRewardGroupByMainLine(User user, boolean fiexdOrRandom, int[] dropGroupIds, int time, ItemMap itemObj, int reason) throws ErrorCodeException{
combineReward(user, fiexdOrRandom, dropGroupIds, time, itemObj);
// 特权加成奖励
extraAddItem(user,itemObj.getItemMap(),reason);
@ -311,7 +311,7 @@ public class ItemUtil {
/**
* 线, redis
*/
public static void combineRewardByMainLineNotCycle(User user, boolean fiexdOrRandom, List<int[][]> groupList, ItemMap itemObj, int reason) throws ErrorCodeException{
public static void combineRewardGroupByMainLineNotCycle(User user, boolean fiexdOrRandom, List<int[][]> groupList, ItemMap itemObj, int reason) throws ErrorCodeException{
for (int[][] list : groupList) {
int[] groups = list[0];
if (groups == null){
@ -1593,7 +1593,7 @@ public class ItemUtil {
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
if (!dropIds.toString().isEmpty()){
int[] ints = StringUtil.parseFiledInt(dropIds.toString());
drop = ItemUtil.drop(user, ints, 1, reason);
drop = ItemUtil.dropByGroup(user, ints, 1, reason);
}
return drop;
}

View File

@ -21,7 +21,7 @@ public class SMainLevelConfig implements BaseConfig {
private int monsterGroup;
private int[] reward;
private int[][] reward;
private int[] randomRewardMin;
@ -113,7 +113,7 @@ public class SMainLevelConfig implements BaseConfig {
return monsterGroup;
}
public int[] getReward() {
public int[][] getReward() {
return reward;
}