back_recharge
wangyuan 2019-05-30 17:40:03 +08:00
parent 56455fefbe
commit 7ef0ac846c
23 changed files with 317 additions and 128 deletions

View File

@ -50,6 +50,8 @@ public class MapPointConfig implements BaseConfig{
private int position;
private int[][] randomProbability;
@Override
public void init() throws Exception {
scMapEventMap = STableManager.getConfig(MapPointConfig.class);
@ -86,4 +88,8 @@ public class MapPointConfig implements BaseConfig{
public int getConfused() {
return confuced;
}
public int[][] getRandomProbability() {
return randomProbability;
}
}

View File

@ -16,6 +16,8 @@ public class SPrivilegeTypeConfig implements BaseConfig {
private int maxTimes;
private int ifFloat;
private static Map<Integer,SPrivilegeTypeConfig> sPrivilegeTypeConfigMap;
@ -41,5 +43,11 @@ public class SPrivilegeTypeConfig implements BaseConfig {
return refreshType;
}
public int getMaxTimes() {
return maxTimes;
}
public int getIfFloat() {
return ifFloat;
}
}

View File

@ -0,0 +1,36 @@
package com.ljsd.jieling.core;
public interface VipPrivilegeType {
int ADVENTURE_BASE_REWARD = 1;//探险基础奖励收益
int ADVENTURE_MINERAL_REWARD = 2;//探险矿石奖励收益
int ADVENTURE_RUNNE_REWARD = 3;//探险符文奖励收益
int FAST_MAP_LIMIT = 4;//快速探险的次数上限
int BUY_STAIM_LIMIT = 5;//购买体力次数上限
int SECRET_RANDOM_LIMIT = 6;//秘盒抽取次数上限
int SIMPLE_MAP_LIMIT = 7;//剧情副本每日恢复次数上限
int HERO_MAP_LIMIT = 8;//英雄副本每日购买次数上限
int CHALLENGE_INVASIONBOSS_LIMIT = 9;//外敌入侵每日次数上限
int STORE_GROCERY_FLUSH_LIMIT = 10;//杂货商店刷新次数
int STORE_SOUL_FLUSH_LIMIT = 11;//契魂商店刷新次数
int BUY_GOLD_DAY_LIMIT = 12; //每日可购买金币的次数
int POKEMON_NUM = 13; //异妖上阵栏位
int FREE_HERO_RANDOM = 14;//免费抽取妖灵师
int FREE_SECRET_RANDOM = 15; //解锁免费抽取秘盒
//功能项解锁
int UNLOCK_TWO_FIGHT = 501;//解锁2倍速战斗
int UNLOCK_MAP_SWEEP = 502;//解锁副本扫荡功能
int UNLOCK_ELEMENT_RANDOM = 503;//解锁元素征募功能
int UNLOCK_ADVENTURE_ONEKEY = 504;//解锁挂机一键收取
int UNLOCK_SKIP_FIGHT = 505;//解锁跳过战斗功能
}

View File

@ -0,0 +1,46 @@
package com.ljsd.jieling.globals;
public interface BIReason {
int ADVENTURE_BASE_REWARD = 1; //探险基础收益
int ADVENTURE_RANDOM_REWARDD =2;//探险随机收益
int DECOMPOS_ITEM_REWARD = 3 ;//分解道具奖励
int DECOMPOS_EQUIP_REWARD = 4 ;//分解道具奖励
int DECOMPOS_HERO_REWARD = 5;//分解妖灵师获取奖励
int COMPOS_HERO_REWARD = 6 ;//分解妖灵师获取奖励
int HERO_RANDOM = 7 ;//抽卡
int WORKSHOP_CREATEMATERIAL = 8; //
int WORKSHOP_CREATEQUIP = 9; // 装备打造
int WORKSHOP_MAKEFOOD = 10; // 装备打造
int TAKE_MISSION_REWARD = 11;// 领取任务奖励
int TAKE_ACTIVITY_REWARD = 12;// 领取活动奖励
int TAKE_SECRET_REWARD = 13; //秘盒奖励
int TAKE_SECRET_EXTRA_REWARD = 14;//秘盒额外奖励
int USER_BORN_REWARD = 15 ;// 角色出生奖励
int TAKE_MAIL_REWARD = 16 ;// 邮件奖励
int TAKE_VIP_LEVEL_REWARD = 17 ;// 邮件奖励
int TAKE_VIP_DAILY_REWARD = 18 ;// 邮件奖励
int STORE_BUY_ITEM = 19; //商店购买
int MAP_EVENET_REWARD = 20; //地图事件点奖励
int MAP_GENERAL_FIGHT_REWARD = 21; //地图战斗
int MAP_FAST_FIGHT_REWARD = 22; //地图快速战斗
int MAP_MISSION_REWARD = 23; //地图任务奖励
int MAP_SWEEP_REWARD = 24; //扫荡地图副本
int LEVELDIFFICULTY_FIGHT_REWARD = 25; //关卡奖励
int LEVELDIFFICULTY_SWEEP_REWARD = 26; //关卡扫荡奖励
int USER_LEVELUPSTAMINA_REWARD = 27; //玩家升级加经验
int GM_REWARD = 28; //gm加成
}

View File

@ -14,8 +14,9 @@ public interface GlobalItemType {
int EQUIP = 3; //装备
int POKENMON_COMONPENT = 4; //异妖组件
int RANDOM_ITME = 5; // 随机道具
int RUNNE = 6;
int RUNNE = 6; //符文
int BLUE_IMAGE=7; // 蓝图
int MINERAL=8; // 矿石
//物品使用类型
int NO_USE = 0 ; //不使用

View File

@ -4,6 +4,7 @@ import com.ljsd.GameApplication;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.globals.GlobalGm;
import com.ljsd.jieling.globals.GlobalItemType;
@ -67,7 +68,7 @@ public class GMRequestHandler extends BaseHandler{
CommonProto.GmResponse.Builder gmBuilder = CommonProto.GmResponse.newBuilder();
switch (gmCommandType){
case GlobalGm.ADD_ITEM:
gmBuilder.setDrop(ItemUtil.drop(cUser,new int[][]{{prarm1,prarm2}}));
gmBuilder.setDrop(ItemUtil.drop(cUser,new int[][]{{prarm1,prarm2}}, BIReason.GM_REWARD));
break;
case GlobalGm.ADD_CARD:
gmBuilder.setDrop(giveHero(cUser,prarm1,prarm2));
@ -80,7 +81,7 @@ public class GMRequestHandler extends BaseHandler{
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.SEND_RED_POINT_INDICATION_VALUE,redPointInfo,true);
break;
case GlobalGm.HERO_STAR:
CommonProto.Drop.Builder drop = ItemUtil.drop(cUser, new int[][]{{prarm1, 1}});
CommonProto.Drop.Builder drop = ItemUtil.drop(cUser, new int[][]{{prarm1, 1}},BIReason.GM_REWARD);
MongoUtil.getInstence().lastUpdate();
CommonProto.Hero heroProto = drop.getHero(0);
String heroId = heroProto.getId();
@ -149,7 +150,7 @@ public class GMRequestHandler extends BaseHandler{
}
gmDrop[i++] = new int[]{itemId,itemNum};
}
ItemUtil.drop(cUser,gmDrop);
ItemUtil.drop(cUser,gmDrop,BIReason.GM_REWARD);
break;
}
//1获取当前服务器时间 2 获取服务器开服时间 3 获取玩家创建角色时间 4修改服务器时间
@ -218,7 +219,7 @@ public class GMRequestHandler extends BaseHandler{
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
Map<Integer,Integer> cardMap = new ConcurrentHashMap<>();
cardMap.put(cardId,cardNum);
ItemUtil.addCard(cUser,cardMap,dropBuilder);
ItemUtil.addCard(cUser,cardMap,dropBuilder,BIReason.GM_REWARD);
return dropBuilder;
}
@ -254,4 +255,5 @@ public class GMRequestHandler extends BaseHandler{
}
}
}

View File

@ -58,7 +58,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
StoreLogic.resetStoreRefreshNum(userId);
//竞技场免费次数刷新
ArenaLogic.getInstance().flushFreeUseTimes(user);
playerInfoManager.setHadTakeDailyBoxVip(0);
playerInfoManager.vipFlush();
}
playerInfoManager.setLoginTime(TimeUtils.now());

View File

@ -2,8 +2,10 @@ package com.ljsd.jieling.handler.map;
import com.googlecode.protobuf.format.JsonFormat;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.behavior.BaseBehavior;
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
@ -273,6 +275,9 @@ public class MapLogic {
LOGGER.info("====initMap()====mapPointConfig == null======>{}", scMap1.getEvent());
continue;
}
if(!mapPointCanAAppear(mapPointConfig)){
continue;
}
if(mapPointConfig.getStyle() == EventType.businessman){
if(alreadHadYunShop){
continue;
@ -300,6 +305,25 @@ public class MapLogic {
initMapMission(mapManager);
}
private boolean mapPointCanAAppear(MapPointConfig mapPointConfig){
int[][] randomProbability = mapPointConfig.getRandomProbability();
if(randomProbability == null || randomProbability.length==0){
return true;
}
int totalWeight =0;
for(int[] weightItem : randomProbability){
totalWeight+=weightItem[1];
}
int random = MathUtils.randomInt(totalWeight);
for(int[] weightItem : randomProbability){
random-=weightItem[1];
if(random<=0){
return weightItem[0] == 1;
}
}
return false;
}
public boolean updateMapByOnlyConsumeActionPower(ISession session, int curXY, int triggerXY, List<Integer> cells, MessageTypeProto.MessageType messageType) throws Exception {
if (triggerXY == -1000) {
int uid = session.getUid();
@ -496,7 +520,7 @@ public class MapLogic {
updateMapMission(mapManager,EventType.updatePonintEvent, pointId,0);
CommonProto.Drop.Builder dropBuilder = null;
if (sOptionConfig.getReward().length > 0) {
dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1, 1);
dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1, 1, BIReason.MAP_EVENET_REWARD);
}
List<CommonProto.EventBehaviorValues> eventBehaviorValuesList = new ArrayList<>();
for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) {
@ -894,7 +918,7 @@ public class MapLogic {
BehaviorUtil.destoryApointXY(user, destoryXY);
SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(groupId);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1,BIReason.MAP_FAST_FIGHT_REWARD);
FightInfoProto.FastFightResponse.Builder fastFightResponse = FightInfoProto.FastFightResponse.newBuilder();
fastFightResponse.setEnventDrop(drop.build());
fastFightResponse.setResult(resultCode);
@ -1069,7 +1093,7 @@ public class MapLogic {
for (TeamPosHeroInfo teamPosHeroInfo : team){
mapManager.updateHeroOneAttribute(teamPosHeroInfo.getHeroId(),HeroAttributeEnum.CurHP.getPropertyId(),checkResult[teamPosHeroInfo.getPosition()]);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1,BIReason.MAP_GENERAL_FIGHT_REWARD);
FightInfoProto.FightEndResponse.Builder fightEndResponse = FightInfoProto.FightEndResponse.newBuilder();
fightEndResponse.setEnventDrop(drop.build());
fightEndResponse.setResult(resultCode);
@ -1289,7 +1313,7 @@ public class MapLogic {
if (mission.getMissionInfo() != null) {
checkMissionReturn.newEventId = mission.getMissionInfo();
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMissionEventsConfig.getReward(), 1, 1);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMissionEventsConfig.getReward(), 1, 1,BIReason.MAP_MISSION_REWARD);
checkMissionReturn.drop = drop;
int useTime = getUseTime(user);
mission.setTime(useTime);
@ -1472,6 +1496,11 @@ public class MapLogic {
}
int uid = session.getUid();
User user = UserManager.getUser(uid);
boolean allowed = user.getPlayerInfoManager().checkFunctionIsAllowed(VipPrivilegeType.UNLOCK_MAP_SWEEP);
if(!allowed){
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "not allowed");
return;
}
MapManager mapManager = user.getMapManager();
CrossInfo crossInfo = mapManager.getCrossInfoMap().get(mapId);
if (crossInfo == null) {
@ -1494,7 +1523,7 @@ public class MapLogic {
SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(mapId);
MapInfoProto.MapSweepResponse.Builder mapSweepResponse = MapInfoProto.MapSweepResponse.newBuilder();
for (int i = 0; i < count; i++) {
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sChallengeMapConfig.getSweepingAward(), 1, 0);
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sChallengeMapConfig.getSweepingAward(), 1, 0,BIReason.MAP_SWEEP_REWARD);
mapSweepResponse.addDrop(dropBuilder);
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapSweepResponse.build(), true);
@ -1715,7 +1744,7 @@ public class MapLogic {
levelDifficulty.setState(Global.FIGHT_CLEARANCE);
user.getUserMissionManager().onGameEvent(user,GameEvent.STORY_FIGHT,fightId,0);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user,reward, 1, 0);
CommonProto.Drop.Builder drop = ItemUtil.drop(user,reward, 1, 0,BIReason.LEVELDIFFICULTY_FIGHT_REWARD);
levelDifficulty.setChallengeTimes(levelDifficulty.getChallengeTimes() +1);
//开启关卡
openNextFightIds(levelDifficultyManager,playerInfoManager,fightId);
@ -1727,12 +1756,6 @@ public class MapLogic {
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
}
private CommonProto.FightTeamInfo getFightTeamInfo(Map<Object, Object> valueMap) throws JsonFormat.ParseException {
CommonProto.FightTeamInfo.Builder monsterBuilder = CommonProto.FightTeamInfo.newBuilder();
JsonFormat.merge((String)valueMap.get(RedisKey.FIGHT_MONSTERS_1), monsterBuilder);
return monsterBuilder.build();
}
/**
*
* @param levelDifficultyManager
@ -1802,7 +1825,7 @@ public class MapLogic {
}
if (itemNum > 0){
String reward = Global.STAMINA +"#" +itemNum;
ItemUtil.drop(user,StringUtil.parseFiledInt2(reward));
ItemUtil.drop(user,StringUtil.parseFiledInt2(reward),BIReason.USER_LEVELUPSTAMINA_REWARD);
}
}

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.handler.map;
import com.ljsd.jieling.config.SLevelDifficultyConfig;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.behavior.BaseBehavior;
import com.ljsd.jieling.logic.dao.*;
@ -82,7 +83,7 @@ public class SweepLogic {
ItemUtil.itemCost(user, cost);
List<CommonProto.Drop> dropList = new CopyOnWriteArrayList<>();
for (int i = 0 ; i < sweepTimes ;i++){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sLevelDifficultyConfig.getRandomReward(), 1, 0);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sLevelDifficultyConfig.getRandomReward(), 1, 0, BIReason.LEVELDIFFICULTY_SWEEP_REWARD);
dropList.add(drop.build());
}
MapLogic.getInstance().userLevelUp(user,sLevelDifficultyConfig.getExp() * sweepTimes);

View File

@ -1,6 +1,8 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
@ -29,9 +31,6 @@ public class ActivityLogic {
public void flushEveryDay(User user) {
updateActivityMissionProgress(user, ActivityType.SevenLogin,1);
//秘盒免费次数刷新
ActivityLogic.getInstance().flushSecretBoxFreeTimes(user);
}
public void flushForLogin(User user){
@ -168,7 +167,7 @@ public class ActivityLogic {
break;
}
int[][] reward = sActivityRewardConfig.getReward();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
activityProgressInfo.setState(ActivityType.HAD_TAKED);
activityMission.updateProgressInfo(missionId,activityProgressInfo);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
@ -296,15 +295,9 @@ public class ActivityLogic {
if(secretBoxManager.getCurSeason() != secretBoxSeasonTimes){
flushSecretBoxOfSeasonChange(secretBoxManager);
}
List<PlayerInfoProto.SecretBoxFreeUseInfo> secretBoxFreeUseInfoList = new ArrayList<>(2);
Map<Integer, Integer> freeUseInfos = secretBoxManager.getFreeUseInfos();
for(Map.Entry<Integer,Integer> item : freeUseInfos.entrySet()){
secretBoxFreeUseInfoList.add(PlayerInfoProto.SecretBoxFreeUseInfo.newBuilder().setId(item.getKey()).setTimes(item.getValue()).build());
}
PlayerInfoProto.GetSecretBoxInfoResponse build = PlayerInfoProto.GetSecretBoxInfoResponse.newBuilder()
.setSeason(secretBoxManager.getCurSeason())
.setCount(secretBoxManager.getCount())
.addAllSecretBoxFreeUseInfo(secretBoxFreeUseInfoList)
.build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_SECRETBOX_RESPONSE_VALUE,build,true);
}
@ -312,13 +305,6 @@ public class ActivityLogic {
public void flushSecretBoxOfSeasonChange(SecretBoxManager secretBoxManager){
secretBoxManager.setCount(0);
secretBoxManager.setCurSeason(secretBoxSeasonTimes);
List<Integer> idsBySeasonId = SDifferDemonsBoxSetting.getIdsBySeasonId(secretBoxSeasonTimes);
//todo vip系统修改
Map<Integer,Integer> freeUseMap = new HashMap<>(idsBySeasonId.size());
for(int id:idsBySeasonId){
freeUseMap.put(id,0);
}
secretBoxManager.setFreeUseInfos(freeUseMap);
}
public void randomSecretBox(ISession session,int id) throws Exception {
@ -341,18 +327,21 @@ public class ActivityLogic {
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE,"今日抽取已达上限");
return;
}
int freeTime = sDifferDemonsBoxSetting.getFreeTime();
Map<Integer, Integer> freeUseInfos = secretBoxManager.getFreeUseInfos();
if(freeTime>freeUseInfos.get(id)){
freeUseInfos.put(id,freeUseInfos.get(id) + 1);
secretBoxManager.setFreeUseInfos(freeUseInfos);
}else{
boolean allowedFree = false;
if(randCount == 1){
allowedFree=user.getPlayerInfoManager().check(VipPrivilegeType.FREE_SECRET_RANDOM,1);
}
if(!allowedFree){
int[][] mainCost = sDifferDemonsBoxSetting.getMainCost();
boolean enough = ItemUtil.itemCost(user, mainCost);
if(!enough){
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE,"道具不足");
return;
}
}else{
user.getPlayerInfoManager().updateVipPrivilage(VipPrivilegeType.FREE_SECRET_RANDOM,1);
}
int count = secretBoxManager.getCount();
@ -364,9 +353,9 @@ public class ActivityLogic {
}
playerInfoManager.updateVipPrivilage(limitPrivigele,randCount);
secretBoxManager.setCount(secretBoxManager.getCount()+randCount);
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, randDrop);
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, randDrop,BIReason.TAKE_SECRET_REWARD);
int[] extraItem = sDifferDemonsBoxSetting.getExtraItem();
CommonProto.Drop.Builder extraDrop = ItemUtil.drop(user, new int[][]{extraItem});
CommonProto.Drop.Builder extraDrop = ItemUtil.drop(user, new int[][]{extraItem},BIReason.TAKE_SECRET_EXTRA_REWARD);
PlayerInfoProto.SecretBoxRandomResponse build = PlayerInfoProto.SecretBoxRandomResponse.newBuilder().setDrop(drop).setExtrarReward(extraDrop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.SECRETBOX_RANDOM_RESPONSE_VALUE,build,true);
user.getUserMissionManager().onGameEvent(user,GameEvent.SECRETBOX,id,randCount);
@ -420,16 +409,4 @@ public class ActivityLogic {
}
secretBoxSeasonTimes=0;
}
private void flushSecretBoxFreeTimes(User user){
SecretBoxManager secretBoxManager = user.getSecretBoxManager();
if(secretBoxManager!=null){
Map<Integer, Integer> freeUseInfos = secretBoxManager.getFreeUseInfos();
if(freeUseInfos!=null && !freeUseInfos.isEmpty()){
for(Integer key : freeUseInfos.keySet()){
freeUseInfos.put(key,0);
}
}
}
}
}

View File

@ -5,6 +5,7 @@ package com.ljsd.jieling.logic.arena;
import com.ljsd.common.mogodb.LjsdMongoTemplate;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
@ -134,6 +135,11 @@ public class ArenaLogic {
}
int uid = session.getUid();
User user = UserManager.getUser(uid);
boolean allowed = user.getPlayerInfoManager().checkFunctionIsAllowed(VipPrivilegeType.UNLOCK_SKIP_FIGHT);
if(!allowed){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,"not allowed");
return;
}
String err = checkChallenge(user);
if(!"".equals(err)){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,err);

View File

@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.config.SPrivilegeTypeConfig;
import com.ljsd.jieling.config.SVipLevelConfig;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.MongoKey;
@ -250,6 +251,10 @@ public class PlayerManager extends MongoBase {
return true;
}
public boolean checkFunctionIsAllowed(int privilageId){
return vipInfo.containsKey(privilageId);
}
public void updateVipPrivilage(int privilageId,int updateNum){
if(!vipInfo.containsKey(privilageId)){
return;
@ -284,4 +289,16 @@ public class PlayerManager extends MongoBase {
updateString("hadTakeDailyBoxVip", hadTakeDailyBoxVip);
this.hadTakeDailyBoxVip = hadTakeDailyBoxVip;
}
public void vipFlush() {
for(Integer id : vipInfo.keySet()){
SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(id);
int refreshType = sPrivilegeTypeConfig.getRefreshType()[0];
if(refreshType == 1){
vipInfo.put(id,0);
}
}
updateString("vipInfo", vipInfo);
setHadTakeDailyBoxVip(0);
}
}

View File

@ -9,7 +9,6 @@ import java.util.Map;
public class SecretBoxManager extends MongoBase {
private int curSeason;
private int count;//总共抽取次数
private Map<Integer,Integer> freeUseInfos = new HashMap<>(2);
public void setCurSeason(int curSeason) {
updateString("curSeason",curSeason);
@ -21,11 +20,6 @@ public class SecretBoxManager extends MongoBase {
this.count = count;
}
public void setFreeUseInfos(Map<Integer, Integer> freeUseInfos) {
updateString("freeUseInfos",freeUseInfos);
this.freeUseInfos = freeUseInfos;
}
public int getCurSeason() {
return curSeason;
}
@ -33,8 +27,4 @@ public class SecretBoxManager extends MongoBase {
public int getCount() {
return count;
}
public Map<Integer, Integer> getFreeUseInfos() {
return freeUseInfos;
}
}

View File

@ -4,6 +4,7 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.config.SPlayerLevelConfig;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -82,7 +83,7 @@ public class UserManager {
playerManager.updateVipInfo(user,0);
SPlayerLevelConfig sPlayerLevelConfig = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(1);
playerManager.setMaxStamina(sPlayerLevelConfig.getMaxEnergy());
ItemUtil.drop(user,gameSetting.getBornItem());
ItemUtil.drop(user,gameSetting.getBornItem(), BIReason.USER_BORN_REWARD);
HeroManager heroManager = user.getHeroManager();
Map<String, Hero> heroMap = heroManager.getHeroMap();
TeamPosManager teamPosManager = user.getTeamPosManager();

View File

@ -4,8 +4,10 @@ package com.ljsd.jieling.logic.fight;
import com.google.common.collect.Sets;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
@ -343,6 +345,13 @@ public class CombatLogic {
User user = UserManager.getUser(uid);
Map<Integer, CommonProto.Drop> adventureFastReward =null;
if(type == 2){
if(position==-1){
boolean allowed = user.getPlayerInfoManager().checkFunctionIsAllowed(VipPrivilegeType.UNLOCK_ADVENTURE_ONEKEY);
if(!allowed){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,"not allowed");
return;
}
}
adventureFastReward = getAdventureReward(user, position);
}else{
//todo 消耗
@ -390,8 +399,8 @@ public class CombatLogic {
}
}
}
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
Map<Integer, CommonProto.Drop> result = new HashMap<>(2);
result.put(1,baseBuilder.build());
result.put(2,randomBuilder.build());
@ -428,8 +437,8 @@ public class CombatLogic {
}
}
}
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
Map<Integer, CommonProto.Drop> result = new HashMap<>(2);
result.put(1,baseBuilder.build());
result.put(2,randomBuilder.build());
@ -584,6 +593,13 @@ public class CombatLogic {
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,"over fight");
return;
}
if(fightTimes==1 && skipFight==0){
boolean allowed = user.getPlayerInfoManager().checkFunctionIsAllowed(VipPrivilegeType.UNLOCK_SKIP_FIGHT);
if(!allowed){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,"not allowed");
return;
}
}
AdventureBoss adventureBoss = RedisUtil.getInstence().getMapEntry(RedisKey.ADVENTRUEN_BOSS_INFO, "", bossId, AdventureBoss.class);
if(adventureBoss == null){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.ADVENTURE_BOSS_CHALLENGE_RESPONSE_VALUE,"boss had killed");

View File

@ -3,6 +3,8 @@ package com.ljsd.jieling.logic.hero;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
@ -156,11 +158,19 @@ public class HeroLogic {
}
//检验消耗
int [][] costItems = new int[][]{sLotterySetting.getCostItem()};
boolean enoughCost = ItemUtil.itemCost(user, costItems);
if(!enoughCost){
MessageUtil.sendErrorResponse(session, 0, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE,"道具不足");
return;
boolean allowFree = false;
if(perCount == 1){
allowFree = user.getPlayerInfoManager().check(VipPrivilegeType.FREE_HERO_RANDOM, 1);
}
if(!allowFree){
int [][] costItems = new int[][]{sLotterySetting.getCostItem()};
boolean enoughCost = ItemUtil.itemCost(user, costItems);
if(!enoughCost){
MessageUtil.sendErrorResponse(session, 0, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE,"道具不足");
return;
}
}else{
user.getPlayerInfoManager().updateVipPrivilage(VipPrivilegeType.FREE_HERO_RANDOM, 1);
}
//额外获取
int length = perCount;
@ -196,7 +206,7 @@ public class HeroLogic {
}
}
user.getUserMissionManager().onGameEvent(user,GameEvent.RANDOM_HERO,sLotterySetting.getLotteryType(),perCount);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropHeroAndItem);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropHeroAndItem,BIReason.HERO_RANDOM);
HeroInfoProto.HeroRandResponse heroRandResponse = HeroInfoProto.HeroRandResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE, heroRandResponse, true);
}
@ -324,6 +334,7 @@ public class HeroLogic {
MessageUtil.sendErrorResponse(iSession,0,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,err);
return;
}
user.getTeamPosManager().changeTeamInfo(teamId,heroIds,pokemonoIds);
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,null,true);
}
@ -359,7 +370,11 @@ public class HeroLogic {
return "no active";
}
}
int size = pokemonoIds.size();
boolean allowed = user.getPlayerInfoManager().check(VipPrivilegeType.POKEMON_NUM, size);
if(!allowed){
return "now allowd";
}
return "";
}
@ -1112,7 +1127,7 @@ public class HeroLogic {
}
Map<Integer,Integer> randomMap = new ConcurrentHashMap<>();
randomMap.put(itemId,composeNum);
CommonProto.Drop.Builder drop = ItemUtil.useRandomItem(user,randomMap);
CommonProto.Drop.Builder drop = ItemUtil.useRandomItem(user,randomMap, BIReason.COMPOS_HERO_REWARD);
HeroInfoProto.HeroComposeResponse heroComposeResponse = HeroInfoProto.HeroComposeResponse
.newBuilder()
.setDrop(drop)

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.item;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -65,7 +66,7 @@ public class ItemLogic {
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
return;
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, 0);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, 0,BIReason.DECOMPOS_ITEM_REWARD);
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
@ -146,7 +147,7 @@ public class ItemLogic {
reward.append("#").append(sItem.getResolveReward());
}
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user,StringUtil.parseFiledInt(reward.toString()),1,0);
CommonProto.Drop.Builder drop = ItemUtil.drop(user,StringUtil.parseFiledInt(reward.toString()),1,0,BIReason.DECOMPOS_EQUIP_REWARD);
sendUseAndPriceItemMessage(iSession, msgId, drop);
}
@ -212,7 +213,7 @@ public class ItemLogic {
}
ItemUtil.combineReward(StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder();
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, BIReason.DECOMPOS_HERO_REWARD);
sendUseAndPriceItemMessage(iSession, msgId, baseBuilder);
}

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.item;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.UserManager;
@ -102,7 +103,7 @@ public class WorkShopLogic {
int failExp = sMysteryFoodSetting.getFailExp();
totalFailExp+=failExp;
}
CommonProto.Drop.Builder dropThing = ItemUtil.drop(user, drop);
CommonProto.Drop.Builder dropThing = ItemUtil.drop(user, drop,BIReason.WORKSHOP_MAKEFOOD);
if(totalFailExp>0){
user.getWorkShopController().addCookExp(totalFailExp);
}
@ -238,7 +239,7 @@ public class WorkShopLogic {
}
Map<Integer,Integer> finalMaterial = new HashMap<>();
finalMaterial.put(materialId,nums*sWorkShopFoundationConfig.getNum());
ItemUtil.addItem(user,finalMaterial,null);
ItemUtil.addItem(user,finalMaterial,null, BIReason.WORKSHOP_CREATEMATERIAL);
//熟练度提升
int type = sWorkShopFoundationConfig.getType();
@ -298,16 +299,14 @@ public class WorkShopLogic {
int addExp = sWorkShopEquipmentConfig.getExp()*nums;
if(type == GlobalsDef.WORK_SHOP_TYPE){
user.getWorkShopController().addWorkShopExp(user,addExp);
while (nums-->0){
Equip equip = new Equip(Integer.toString(uid), equipTid, user.getWorkShopController().getWorkShopLevel(),runneIdsList);
user.getEquipManager().addEquip(user,equip);
dropBuilder.addEquipId(CBean2Proto.getEquipProto(equip));
}
Map<Integer,Integer> equips = new HashMap<>();
equips.put(equipTid,nums);
ItemUtil.addEquip(user,equips,dropBuilder,BIReason.WORKSHOP_CREATEQUIP);
}else if( type == GlobalsDef.COOK_SHOP_TYPE){
user.getWorkShopController().addCookExp(addExp);
Map<Integer,Integer> items = new HashMap<>();
items.put(equipTid,SMysteryFoodSetting.getsMysteryFoodSetting().getFoodNum());
ItemUtil.addItem(user,items,dropBuilder);
items.put(equipTid,SMysteryFoodSetting.getsMysteryFoodSetting().getFoodNum()*nums);
ItemUtil.addItem(user,items,dropBuilder,BIReason.WORKSHOP_CREATEQUIP);
}
PlayerInfoProto.WorkShopEquipCreateResponse build = PlayerInfoProto.WorkShopEquipCreateResponse.newBuilder().setType(type).setDrop(dropBuilder).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.WORKSHOP_EQUIP_CREATE_RESPONSE_VALUE,build,true);

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.mail;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.MailingSystem;
@ -187,7 +188,7 @@ public class MailLogic {
MessageUtil.sendErrorResponse(iSession,0,msgId,"");
return;
}
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, itemArr);
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, itemArr, BIReason.TAKE_MAIL_REWARD);
for (String mailId:delMailIds){
mailManager.removeMail(mailId);
}

View File

@ -5,6 +5,7 @@ import com.ljsd.jieling.config.SCHero;
import com.ljsd.jieling.config.SLevelDifficultyConfig;
import com.ljsd.jieling.config.STaskConfig;
import com.ljsd.jieling.config.SVipLevelConfig;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -70,7 +71,7 @@ public class MissionLoigc {
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.VIP_MISSION_REWARD, missionId);
List<MissionStateChangeInfo> missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.VIPMISSION);
if(!missionStateChangeInfos.isEmpty()){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups());
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), 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);
}else{

View File

@ -5,6 +5,7 @@ import com.ljsd.jieling.config.SVipLevelConfig;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.TeamPosManager;
import com.ljsd.jieling.logic.dao.UserManager;
@ -168,6 +169,7 @@ public class PlayerLogic {
int uid = session.getUid();
User user = UserManager.getUser(uid);
PlayerManager playerInfoManager = user.getPlayerInfoManager();
int reson=-1;
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(playerInfoManager.getVipLevel());
int[][] rewards=null;
if(type == 1){
@ -177,6 +179,7 @@ public class PlayerLogic {
}
playerInfoManager.setHadTakeLevelBoxVip(1);
rewards = sVipLevelConfig.getVipBoxReward();
reson = BIReason.TAKE_VIP_LEVEL_REWARD;
}else if(type == 2){
if(playerInfoManager.getHadTakeDailyBoxVip() == 1 || playerInfoManager.getHadTakeLevelBoxVip() == 0 ){
MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.VIP_TAKE_REWARD_RESPONSE_VALUE,"had taked the vip daily reward");
@ -184,8 +187,9 @@ public class PlayerLogic {
}
playerInfoManager.setHadTakeDailyBoxVip(1);
rewards = sVipLevelConfig.getVipBoxDailyReward();
reson = BIReason.TAKE_VIP_DAILY_REWARD;
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards,reson);
PlayerInfoProto.VipTakeBoxResponse build = PlayerInfoProto.VipTakeBoxResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.VIP_TAKE_REWARD_RESPONSE_VALUE,build,true);
}

View File

@ -3,6 +3,7 @@ package com.ljsd.jieling.logic.store;
import ch.qos.logback.core.util.TimeUtil;
import com.ljsd.jieling.config.SStoreConfig;
import com.ljsd.jieling.config.SStoreTypeConfig;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.StoreInfo;
import com.ljsd.jieling.logic.dao.StoreManager;
@ -225,7 +226,7 @@ public class StoreLogic {
int goodsId = sStoreConfig.getGoods()[0];
int goodsNum = sStoreConfig.getGoods()[1]*itemNum;
String reward = goodsId +"#"+goodsNum;
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward));
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.STORE_BUY_ITEM);
PlayerInfoProto.BuyStoreItemResponse builder = PlayerInfoProto.BuyStoreItemResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(iSession, 1,msgId, builder, true);
}

View File

@ -1,6 +1,9 @@
package com.ljsd.jieling.util;
import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.globals.GlobalItemType;
import com.ljsd.jieling.handler.map.MapManager;
@ -21,7 +24,7 @@ public class ItemUtil {
private static Map<Integer,String> dropRewardMap = new ConcurrentHashMap<>();
private static final Logger LOGGER = LoggerFactory.getLogger(ItemUtil.class);
//指定道具掉落(如:邮件,初始化物品)
public static CommonProto.Drop.Builder drop(User user, int[][] itemArr) throws Exception {
public static CommonProto.Drop.Builder drop(User user, int[][] itemArr,int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> cardMap = new HashMap<>();
@ -29,14 +32,14 @@ public class ItemUtil {
Map<Integer,Integer> randomMap = new HashMap<>();
selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap);
useRandomItem(user,randomMap);
addItem(user,itemMap,dropBuilder);
addCard(user,cardMap,dropBuilder);
addEquip(user,equipMap,dropBuilder);
useRandomItem(user,randomMap,reason);
addItem(user,itemMap,dropBuilder,reason);
addCard(user,cardMap,dropBuilder,reason);
addEquip(user,equipMap,dropBuilder,reason);
return dropBuilder;
}
public static CommonProto.Drop.Builder dropPer(User user, int[][] itemArr) throws Exception {
public static CommonProto.Drop.Builder dropPer(User user, int[][] itemArr,int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
for(int [] item : itemArr){
Map<Integer, Integer> itemMap = new HashMap<>();
@ -44,15 +47,15 @@ public class ItemUtil {
Map<Integer,Integer> equipMap = new HashMap<>();
Map<Integer,Integer> randomMap = new HashMap<>();
selectItemArr(new int[][]{item},cardMap,itemMap,equipMap,randomMap);
useRandomItem(user,randomMap);
addItem(user,itemMap,dropBuilder);
addCard(user,cardMap,dropBuilder);
addEquip(user,equipMap,dropBuilder);
useRandomItem(user,randomMap,reason);
addItem(user,itemMap,dropBuilder,reason);
addCard(user,cardMap,dropBuilder,reason);
addEquip(user,equipMap,dropBuilder,reason);
}
return dropBuilder;
}
//活动额外掉落
public static void activityDrop(User user,CommonProto.Drop.Builder dropBuilder ,int[] dropGroupIds, float dropRatio) throws Exception {
public static void activityDrop(User user,CommonProto.Drop.Builder dropBuilder ,int[] dropGroupIds, float dropRatio,int reason) throws Exception {
Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
@ -64,10 +67,10 @@ public class ItemUtil {
}
selectDrop(sRewardGroup, itemMap, cardMap, equipMap, randomMap, dropRatio);
}
useRandomItem(user, randomMap);
addItem(user, itemMap, dropBuilder);
addCard(user, cardMap, dropBuilder);
addEquip(user, equipMap, dropBuilder);
useRandomItem(user, randomMap,reason);
addItem(user, itemMap, dropBuilder,reason);
addCard(user, cardMap, dropBuilder,reason);
addEquip(user, equipMap, dropBuilder,reason);
}
public static void getactivityDropInfo(int[] dropGroupIds, float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap ,Map<Integer, Integer> randomMap) throws Exception {
@ -81,12 +84,12 @@ public class ItemUtil {
}
//掉落组概率
public static CommonProto.Drop.Builder drop(User user, Map<int [],Float> dropGroupAndRatioMap) throws Exception {
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);
activityDrop(user,dropBuilder,dropGroupIds,dropRatio,reason);
}
return dropBuilder;
}
@ -100,7 +103,7 @@ public class ItemUtil {
* @return
* @throws Exception
*/
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds,float dropRatio, int isMapping) throws Exception {
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds,float dropRatio, int isMapping,int reason) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> cardMap = new HashMap<>();
@ -113,14 +116,14 @@ public class ItemUtil {
}
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
}
useRandomItem(user,randomMap);
useRandomItem(user,randomMap,reason);
if (isMapping == 1) {
addItemToTemporaryBag(user, itemMap, equipMap, dropBuilder);
} else {
addItem(user,itemMap,dropBuilder);
addEquip(user,equipMap,dropBuilder);
addItem(user,itemMap,dropBuilder,reason);
addEquip(user,equipMap,dropBuilder,reason);
}
addCard(user,cardMap,dropBuilder);
addCard(user,cardMap,dropBuilder,reason);
return dropBuilder;
}
@ -159,11 +162,11 @@ public class ItemUtil {
selectItemArr(itemArr,cardMap,itemMap,equipMap,randomMap);
}
public static void drop(User user,CommonProto.Drop.Builder dropBuilder,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap) throws Exception {
useRandomItem(user, randomMap);
addItem(user, itemMap, dropBuilder);
addCard(user, cardMap, dropBuilder);
addEquip(user, equipMap, dropBuilder);
public static void drop(User user,CommonProto.Drop.Builder dropBuilder,Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap,int reason) throws Exception {
useRandomItem(user, randomMap, reason);
addItem(user, itemMap, dropBuilder,reason);
addCard(user, cardMap, dropBuilder,reason);
addEquip(user, equipMap, dropBuilder,reason);
}
private static String getReward(Map<Integer, Integer> itemMap,Map<Integer, Integer> cardMap,Map<Integer, Integer> equipMap, Map<Integer,Integer> randomMap) {
@ -343,7 +346,7 @@ public class ItemUtil {
* @param itemMap
* @throws Exception
*/
public static void addItem(User user, Map<Integer, Integer> itemMap,CommonProto.Drop.Builder dropBuilder) throws Exception {
public static void addItem(User user, Map<Integer, Integer> itemMap,CommonProto.Drop.Builder dropBuilder,int reason) throws Exception {
if (itemMap.isEmpty()) {
return;
}
@ -358,6 +361,7 @@ public class ItemUtil {
if(itemNum <= 0){
continue;
}
itemNum=privilegeAdd(user,reason,sItem.getItemType(),itemNum);
if (itemNum >= sItem.getItemNumlimit()){
itemNum = sItem.getItemNumlimit();
}
@ -561,7 +565,7 @@ public class ItemUtil {
* @param equipMap
* @param dropBuilder
*/
private static void addEquip(User user, Map<Integer, Integer> equipMap, CommonProto.Drop.Builder dropBuilder) throws Exception {
public static void addEquip(User user, Map<Integer, Integer> equipMap, CommonProto.Drop.Builder dropBuilder,int reason) throws Exception {
if (equipMap.isEmpty()) {
return;
}
@ -626,7 +630,7 @@ public class ItemUtil {
* @param dropBuilder
* @throws Exception
*/
public static void addCard(User user,Map<Integer,Integer> cardMap,CommonProto.Drop.Builder dropBuilder) throws Exception {
public static void addCard(User user,Map<Integer,Integer> cardMap,CommonProto.Drop.Builder dropBuilder,int reason) throws Exception {
if (cardMap.isEmpty()) {
return;
}
@ -770,7 +774,7 @@ public class ItemUtil {
* @return
* @throws Exception
*/
public static CommonProto.Drop.Builder useRandomItem(User user,Map<Integer,Integer> randomMap) throws Exception {
public static CommonProto.Drop.Builder useRandomItem(User user,Map<Integer,Integer> randomMap,int reason) throws Exception {
StringBuilder dropIds = new StringBuilder();
for (Map.Entry<Integer,Integer> entry : randomMap.entrySet()){
int itemId = entry.getKey();
@ -787,7 +791,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, 0);
drop = ItemUtil.drop(user, ints, 1, 0,reason);
}
return drop;
}
@ -886,4 +890,37 @@ public class ItemUtil {
}
return false;
}
//特权加成收益计算
public static int privilegeAdd(User user,int reason,int itemType,int sourceNum){
int vipLevel = user.getPlayerInfoManager().getVipLevel();
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel);
Map<Integer, Integer> privilegeMap = sVipLevelConfig.getPrivilegeMap();
if(reason == BIReason.ADVENTURE_BASE_REWARD){
sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum, VipPrivilegeType.ADVENTURE_BASE_REWARD);
}
if(reason == BIReason.ADVENTURE_BASE_REWARD || reason == BIReason.ADVENTURE_RANDOM_REWARDD ){
if(itemType == GlobalItemType.MINERAL){
sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum,VipPrivilegeType.ADVENTURE_MINERAL_REWARD);
}else if(itemType == GlobalItemType.RUNNE){
sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum,VipPrivilegeType.ADVENTURE_RUNNE_REWARD);
}
}
return sourceNum;
}
private static int parseTheValueByPrivilegeMap( Map<Integer, Integer> privilegeMap,int sourceNum,int privigeId){
Integer privigeValue = privilegeMap.get(1);
if(privigeValue!=null){
SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(1);
int dataType = sPrivilegeTypeConfig.getIfFloat();
if(dataType == GlobalsDef.PERCENT_TYPE){
sourceNum=(10000 + privigeValue) * sourceNum / 10000;
}else{
sourceNum+=privigeValue;
}
}
return sourceNum;
}
}