排行榜,特权修改
parent
481cda0103
commit
2c6eccad1a
|
@ -6,7 +6,7 @@ public interface VipPrivilegeType {
|
|||
int ADVENTURE_RUNNE_REWARD = 3;//探险符文奖励收益
|
||||
int ADVENTURE_EXP_REWARD = 27;//探险符文奖励收益
|
||||
|
||||
int FAST_MAP_LIMIT = 4;//快速探险的次数上限
|
||||
int FAST_MAP_LIMIT = 4;//极速探索每日免费次数
|
||||
int BUY_STAIM_LIMIT = 5;//购买体力次数上限
|
||||
|
||||
int SECRET_RANDOM_LIMIT = 6;//秘盒抽取次数上限
|
||||
|
@ -21,12 +21,11 @@ public interface VipPrivilegeType {
|
|||
|
||||
int BUY_GOLD_DAY_LIMIT = 12; //每日可购买金币的次数
|
||||
|
||||
int POKEMON_NUM = 13; //异妖上阵栏位
|
||||
int FREE_HERO_RANDOM = 14;//免费抽取妖灵师
|
||||
int FREE_SECRET_RANDOM = 15; //解锁免费抽取秘盒
|
||||
int TOWER_RESRT_NUM= 17; //每日试炼重置次数
|
||||
int TIME_RANDOM_FREE = 32;//东海寻仙每日赠送招募次数
|
||||
|
||||
int FAST_BUY_COUNT = 33;//极速探索购买次数
|
||||
|
||||
//功能项解锁
|
||||
int UNLOCK_TWO_FIGHT = 501;//解锁2倍速战斗
|
||||
|
|
|
@ -20,6 +20,6 @@ public class RankHandler extends BaseHandler<PlayerInfoProto.RankRequest> {
|
|||
@Override
|
||||
public void processWithProto(ISession iSession, PlayerInfoProto.RankRequest proto) throws Exception {
|
||||
// MapLogic.getInstance().getTowerRank(iSession,proto.getType(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE);
|
||||
RankLogic.getInstance().getRank(iSession,proto.getType(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE);
|
||||
RankLogic.getInstance().getRank(iSession,proto.getType(),proto.getActiviteId(),MessageTypeProto.MessageType.GET_ONE_RANK_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1083,7 +1083,7 @@ public class MapLogic {
|
|||
mapManager.setHighestTower(mapManager.getTower());
|
||||
AbstractRank towerRank = RankContext.getRankEnum(RankEnum.TOWER_RANK.getType());
|
||||
// TowerRankUtil.getRankNumber(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))
|
||||
if(towerRank.getScore(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))>towerRank.getScoreById(user.getId())){
|
||||
if(towerRank.getScore(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000))>towerRank.getScoreById(user.getId(),0)){
|
||||
towerRank.addRank(user.getId(),0,mapManager.getTower(),(int)mapManager.getCurrTowerTime()/1000);
|
||||
// RedisUtil.getInstence().zsetAddOne(RedisKey.getKey(RedisKey.TOWER_RANK,"",false),String.valueOf(user.getId()),TowerRankUtil.getRankNumber(mapManager.getTower(),(int)(mapManager.getCurrTowerTime()/1000)));
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public class FourtyTwoBehavior extends BaseBehavior {
|
|||
AbstractRank towerRank = RankContext.getRankEnum(RankEnum.TOWER_RANK.getType());
|
||||
// Double zSetScore = RedisUtil.getInstence().getZSetScore(RedisKey.TOWER_RANK, "", String.valueOf(user.getId()));
|
||||
// TowerRankUtil.getRankNumber(mapManager.getTower(),(int)time/1000)
|
||||
if(towerRank.getScore(mapManager.getTower(),(int)time/1000)>towerRank.getScoreById(user.getId())){
|
||||
if(towerRank.getScore(mapManager.getTower(),(int)time/1000)>towerRank.getScoreById(user.getId(),0)){
|
||||
// String key = RedisKey.getKey(RedisKey.TOWER_RANK,"",false);
|
||||
// RedisUtil.getInstence().zsetAddOne(key,String.valueOf(user.getId()),TowerRankUtil.getRankNumber(mapManager.getTower(),(int)time/1000));
|
||||
towerRank.addRank(user.getId(),0,mapManager.getTower(),(int)time/1000);
|
||||
|
|
|
@ -53,7 +53,7 @@ public class LimitRandomCardActivity extends AbstractActivity {
|
|||
return;
|
||||
}
|
||||
AbstractRank randomRank= RankContext.getRankEnum(RankEnum.RANDOM_CARD_RANK.getType());
|
||||
int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid())).intValue();
|
||||
int scoreById = Double.valueOf(randomRank.getScoreById(((RandomCardEvent) event).getUid(),id)).intValue();
|
||||
if(scoreById==-1){
|
||||
scoreById=0;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import com.ljsd.jieling.logic.hero.HeroAttributeEnum;
|
|||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
import com.ljsd.jieling.logic.store.StoreLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
|
@ -208,7 +209,9 @@ public class CombatLogic {
|
|||
}else{
|
||||
String err ="";
|
||||
if(position == 0){
|
||||
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1);
|
||||
if(!PlayerLogic.getInstance().check(user,VipPrivilegeType.FAST_MAP_LIMIT,1)) {
|
||||
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10008,1);
|
||||
}
|
||||
}else{
|
||||
err = StoreLogic.checkBuyGoodsAndUpdate(user,7,10015,1);
|
||||
}
|
||||
|
|
|
@ -715,23 +715,43 @@ public class PlayerLogic {
|
|||
user.getPlayerInfoManager().setRideLevel(rideLevel+1);
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
||||
}
|
||||
public boolean check(User user,int privilageId,int updateNum){
|
||||
public boolean check(User user,int privilageTypeId,int updateNum){
|
||||
Map<Integer, VipInfo> vipInfo = user.getPlayerInfoManager().getVipInfo();
|
||||
if(privilageId == 0){
|
||||
if(privilageTypeId == 0){
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!vipInfo.containsKey(privilageId)){
|
||||
List<SPrivilegeTypeConfig> sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilageTypeId);
|
||||
List<Integer> typePrivileges = new ArrayList<>();
|
||||
for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){
|
||||
if(!vipInfo.containsKey(config.getId())){
|
||||
continue;
|
||||
}
|
||||
typePrivileges.add(config.getId());
|
||||
}
|
||||
if(typePrivileges.isEmpty()){
|
||||
return false;
|
||||
}
|
||||
VipInfo info = vipInfo.get(privilageId);
|
||||
if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){
|
||||
return false;
|
||||
for(Integer privilageId:typePrivileges){
|
||||
VipInfo info = vipInfo.get(privilageId);
|
||||
if(info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime()){
|
||||
continue;
|
||||
}
|
||||
int mCount = getMaxCountByPrivilege(user,privilageId);
|
||||
if(mCount==-1){
|
||||
return true;
|
||||
}
|
||||
if((info.getCount()+updateNum>mCount)|| (info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime())){
|
||||
continue;
|
||||
}
|
||||
user.getPlayerInfoManager().updateVipPrivilage(privilageId, updateNum);
|
||||
return true;
|
||||
}
|
||||
|
||||
SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilageId);
|
||||
return false;
|
||||
}
|
||||
public int getMaxCountByPrivilege(User user,int privilegeId){
|
||||
SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilegeId);
|
||||
Map<Integer, Map<Integer, Integer>> conditionMap = SPrivilegeTypeConfig.conditionMap.get(sPrivilegeTypeConfig.getUnlockType());
|
||||
int maxCount = 0;
|
||||
int mCount = 0;
|
||||
int cond = 0;
|
||||
switch (sPrivilegeTypeConfig.getUnlockType()){
|
||||
case GlobalsDef.LEVEL_UNLOCK_PRIVILEGE:
|
||||
|
@ -744,19 +764,30 @@ public class PlayerLogic {
|
|||
cond = user.getPlayerInfoManager().getVipLevel();
|
||||
break;
|
||||
}
|
||||
TreeMap<Integer, Integer> condition = (TreeMap)conditionMap.get(privilegeId);
|
||||
if(sPrivilegeTypeConfig.getUnlockType()!=GlobalsDef.RECHARGE_UNLOCK_PRIVILEGE){
|
||||
TreeMap<Integer, Integer> condition = (TreeMap)conditionMap.get(privilageId);
|
||||
maxCount = condition.floorEntry(cond).getValue();
|
||||
mCount = condition.floorEntry(cond).getValue();
|
||||
}else{
|
||||
mCount = condition.get(0);
|
||||
}
|
||||
if(maxCount==-1){
|
||||
return true;
|
||||
return mCount;
|
||||
}
|
||||
public int getMaxCountByPrivilegeType(User user ,int privilegeType){
|
||||
List<SPrivilegeTypeConfig> sPrivilegeTypeConfigs = SPrivilegeTypeConfig.privilegeByType.get(privilegeType);
|
||||
List<Integer> typePrivileges = new ArrayList<>();
|
||||
for(SPrivilegeTypeConfig config:sPrivilegeTypeConfigs){
|
||||
if(!user.getPlayerInfoManager().getVipInfo().containsKey(config.getId())){
|
||||
continue;
|
||||
}
|
||||
typePrivileges.add(config.getId());
|
||||
}
|
||||
if((info.getCount()+updateNum>maxCount)|| (info.getEffectTime()!=0&&TimeUtils.now()/1000>info.getEffectTime())){
|
||||
return false;
|
||||
if(typePrivileges.isEmpty()){
|
||||
return 0;
|
||||
}
|
||||
user.getPlayerInfoManager().updateVipPrivilage(privilageId, updateNum);
|
||||
return true;
|
||||
|
||||
|
||||
int maxCount = 0;
|
||||
for(Integer privilageId:typePrivileges){
|
||||
maxCount+=getMaxCountByPrivilege(user,privilageId);
|
||||
}
|
||||
return maxCount;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,9 +31,9 @@ public class RankLogic {
|
|||
public static class Instance {
|
||||
public final static RankLogic instance = new RankLogic();
|
||||
}
|
||||
public void getRank(ISession session, int type, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
public void getRank(ISession session, int type, int activityId,MessageTypeProto.MessageType messageType) throws Exception {
|
||||
int page = 1;
|
||||
PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),0,1, -1);
|
||||
PlayerInfoProto.RankResponse rankResponse= RankContext.getRankEnum(type).getRank(session.getUid(),activityId,1, -1);
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),rankResponse,true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public abstract class AbstractRank implements IRank {
|
|||
}
|
||||
PlayerInfoProto.RankResponse.Builder allUserResponse = getAllUserResponse(zsetreverseRangeWithScores,start);
|
||||
//当前用户信息
|
||||
getMyInfo(user,allUserResponse);
|
||||
getMyInfo(user,activityId,allUserResponse);
|
||||
return allUserResponse.build();
|
||||
}
|
||||
|
||||
|
@ -107,9 +107,9 @@ public abstract class AbstractRank implements IRank {
|
|||
builder.addRanks(everyRank);
|
||||
}
|
||||
|
||||
protected void getMyInfo(User user,PlayerInfoProto.RankResponse.Builder allUserResponse){
|
||||
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,"",Integer.toString(user.getId())).intValue();
|
||||
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, "", Integer.toString(user.getId()));
|
||||
protected void getMyInfo(User user,int activityId,PlayerInfoProto.RankResponse.Builder allUserResponse){
|
||||
int myRank= RedisUtil.getInstence().getZSetreverseRank(redisKey,String.valueOf(activityId),Integer.toString(user.getId())).intValue();
|
||||
Double zSetScore = RedisUtil.getInstence().getZSetScore(redisKey, String.valueOf(activityId), Integer.toString(user.getId()));
|
||||
CommonProto.RankInfo towerRankInfo = CommonProto.RankInfo.newBuilder()
|
||||
.setRank(myRank)
|
||||
.setParam1(getParam1(zSetScore))
|
||||
|
@ -162,7 +162,7 @@ public abstract class AbstractRank implements IRank {
|
|||
public int getParam3(double data) {
|
||||
return getDataByScore(data).length>2?getDataByScore(data)[2]:0;
|
||||
}
|
||||
public double getScoreById(int uid){
|
||||
return RedisUtil.getInstence().getZSetScore(redisKey, "", String.valueOf(uid));
|
||||
public double getScoreById(int uid,int activityId){
|
||||
return RedisUtil.getInstence().getZSetScore(redisKey, String.valueOf(activityId), String.valueOf(uid));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -485,13 +485,13 @@ public class StoreLogic {
|
|||
if (!result){
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
if(relatedtoVIP == 1 && limit!=0){
|
||||
int updateValue = itemNum;
|
||||
if(limit == 6){
|
||||
updateValue= sStoreConfig.getGoods()[0][1]*itemNum;
|
||||
}
|
||||
playerInfoManager.updateVipPrivilage(limit,updateValue);
|
||||
}
|
||||
// if(relatedtoVIP == 1 && limit!=0){
|
||||
// int updateValue = itemNum;
|
||||
// if(limit == 6){
|
||||
// updateValue= sStoreConfig.getGoods()[0][1]*itemNum;
|
||||
// }
|
||||
// playerInfoManager.updateVipPrivilage(limit,updateValue);
|
||||
// }
|
||||
itemNumMap.put(itemId,buyTimes +itemNum);
|
||||
storeInfo.setItemNumMap(itemNumMap);
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserStoreEvent,storeId,itemId,cost[0][0],itemNum,cost[0][1]);
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.ljsd.jieling.logic.dao.*;
|
|||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.player.PlayerLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
|
@ -267,13 +268,13 @@ public class ItemUtil {
|
|||
|
||||
}
|
||||
|
||||
public static void extraAddItem(User user, Map<Integer, Integer> itemMap,int resson){
|
||||
public static void extraAddItem(User user, Map<Integer, Integer> itemMap,int reason){
|
||||
ItemManager itemManager = user.getItemManager();
|
||||
for(Map.Entry<Integer,Integer> item : itemMap.entrySet()){
|
||||
Integer itemId = item.getKey();
|
||||
Integer value = item.getValue();
|
||||
SItem sItem = SItem.getsItemMap().get(itemId);
|
||||
int itemNums = privilegeAdd(user, resson, sItem.getId(), value);
|
||||
int itemNums = privilegeAdd(user, reason, sItem.getId(), value);
|
||||
Item hadItem = itemManager.getItem(itemId);
|
||||
int hadNums = 0;
|
||||
if(hadItem !=null){
|
||||
|
@ -1480,29 +1481,30 @@ public class ItemUtil {
|
|||
|
||||
//特权加成收益计算
|
||||
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();
|
||||
// int vipLevel = user.getPlayerInfoManager().getVipLevel();
|
||||
// SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevel);
|
||||
// Map<Integer, Integer> privilegeMap = sVipLevelConfig.getPrivilegeMap();
|
||||
if(reason == BIReason.ADVENTURE_BASE_REWARD){
|
||||
if(itemType == Global.EXP){
|
||||
sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum,VipPrivilegeType.ADVENTURE_EXP_REWARD);
|
||||
sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_EXP_REWARD);
|
||||
return sourceNum;
|
||||
}
|
||||
sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum, VipPrivilegeType.ADVENTURE_BASE_REWARD);
|
||||
sourceNum = parseTheValueByPrivilegeMap(user,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);
|
||||
sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_MINERAL_REWARD);
|
||||
}else if(itemType == GlobalItemType.RUNNE){
|
||||
sourceNum = parseTheValueByPrivilegeMap(privilegeMap,sourceNum,VipPrivilegeType.ADVENTURE_RUNNE_REWARD);
|
||||
sourceNum = parseTheValueByPrivilegeMap(user,sourceNum,VipPrivilegeType.ADVENTURE_RUNNE_REWARD);
|
||||
}
|
||||
}
|
||||
return sourceNum;
|
||||
}
|
||||
|
||||
private static int parseTheValueByPrivilegeMap( Map<Integer, Integer> privilegeMap,int sourceNum,int privigeId){
|
||||
Integer privigeValue = privilegeMap.get(privigeId);
|
||||
if(privigeValue!=null){
|
||||
private static int parseTheValueByPrivilegeMap(User user,int sourceNum,int privigeId){
|
||||
int privigeValue = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user,privigeId);
|
||||
// Integer privigeValue = privilegeMap.get(privigeId);
|
||||
if(privigeValue!=0){
|
||||
SPrivilegeTypeConfig sPrivilegeTypeConfig = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privigeId);
|
||||
int dataType = sPrivilegeTypeConfig.getIfFloat();
|
||||
if(dataType == GlobalsDef.PERCENT_TYPE){
|
||||
|
|
|
@ -3,10 +3,7 @@ package config;
|
|||
import manager.STableManager;
|
||||
import manager.Table;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.*;
|
||||
|
||||
@Table(name ="PrivilegeTypeConfig")
|
||||
public class SPrivilegeTypeConfig implements BaseConfig {
|
||||
|
@ -32,12 +29,16 @@ public class SPrivilegeTypeConfig implements BaseConfig {
|
|||
private static Map<Integer,SPrivilegeTypeConfig> sPrivilegeTypeConfigMap;
|
||||
|
||||
public static Map<Integer,Map<Integer,Map<Integer,Integer>>> conditionMap;
|
||||
|
||||
public static Map<Integer, List<SPrivilegeTypeConfig>> privilegeByType;
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
sPrivilegeTypeConfigMap = STableManager.getConfig(SPrivilegeTypeConfig.class);
|
||||
conditionMap = new HashMap<>();
|
||||
privilegeByType = new HashMap<>();
|
||||
for (Map.Entry<Integer,SPrivilegeTypeConfig> entry:sPrivilegeTypeConfigMap.entrySet()){
|
||||
privilegeByType.computeIfAbsent(entry.getValue().getPrivilegeType(),n->new ArrayList<>()).add(entry.getValue());
|
||||
conditionMap.computeIfAbsent(entry.getValue().getUnlockType(),n->new HashMap<>()).computeIfAbsent(entry.getKey(),n->new TreeMap<>());
|
||||
if(entry.getValue().getCondition()!=null){
|
||||
for(int[] cond:entry.getValue().getCondition()){
|
||||
|
|
Loading…
Reference in New Issue