点石成金基础收益随着玩家等级提升,玩家等级提升时 发放道具进背包

back_recharge
jiahuiwen 2021-10-08 11:11:24 +08:00
parent 7303e9d92d
commit bb6ef14fcf
5 changed files with 61 additions and 6 deletions

View File

@ -359,5 +359,6 @@ public interface BIReason {
int SEVEN_WORLD_TREASURE = 1214;//七界秘宝
int LEVEL_UP_REWARD = 1220;// 玩家升级赠与的道具
}

View File

@ -492,7 +492,17 @@ public class StoreLogic implements IEventHandler {
for(int i=0;i<length;i++){
dropItems[i] = new int[2];
dropItems[i][0]= goods[i][0];
dropItems[i][1]= (int)(goods[i][1]*itemNum *(add/10000F) );
int levelAdd = 0;
if(storeId==Global.GODSTORID){
if (sStoreConfig.getSort() == 1) {
levelAdd = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getGoldExtraNum1();
} else if (sStoreConfig.getSort() == 2) {
levelAdd = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getGoldExtraNum2();
} else {
levelAdd = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getGoldExtraNum3();
}
}
dropItems[i][1]= (int)(goods[i][1]*itemNum *(add/10000F) + levelAdd);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItems, BIReason.STORE_BUY_ITEM);
if(!storeGiftType.contains(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() )){

View File

@ -8,6 +8,7 @@ public class DataReportTask extends Thread {
public DataReportTask(){
setName("DataReportTask");
setPriority(2);//优先级设置低点
}
@Override
public void run() {
@ -15,9 +16,15 @@ public class DataReportTask extends Thread {
// return;
// }
try {
int i = 0;
while(true){
ReportUserEvent event = ReportUtil.queue.take();
ReportUtil.doReport(event);
i++;
if (i >= 1000) {
i = 0;
Thread.sleep(100);
}
}
} catch (InterruptedException e) {
e.printStackTrace();

View File

@ -861,7 +861,7 @@ public class ItemUtil {
if (sPlayerLevelConfig == null) {
throw new ErrorCodeException("服务器表配置错误");
}
List<int[][]> levelUpRewards = new ArrayList<>();
int levelUpExp = sPlayerLevelConfig.getExp();
// 循环,直到经验不足继续升级或者等级最高
while (exp >= levelUpExp && playerInfoManager.getLevel() < maxLevel.getPlayerLv()) {
@ -892,8 +892,16 @@ public class ItemUtil {
levelUpExp = sPlayerLevelConfig.getExp();
// 玩家升级报送
Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.ROLE_LEVEUP_EVENT);
// 升级赠送道具
int[][] levelUpReward = sPlayerLevelConfig.getLevelUpReward();
if (levelUpReward != null && levelUpReward.length > 0) {
levelUpRewards.add(levelUpReward);
}
}
CommonProto.Drop.Builder drop = null;
if (!levelUpRewards.isEmpty()) {
drop = ItemUtil.drop(user, levelUpRewards, BIReason.LEVEL_UP_REWARD);
}
// 更新经验
playerInfoManager.setExp((int) exp);
@ -905,9 +913,14 @@ public class ItemUtil {
// 在线玩家消息推送
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
if(sessionByUid!=null){
PlayerInfoProto.UpdateUserExpIndicaiton build = PlayerInfoProto.UpdateUserExpIndicaiton.newBuilder().setExp((int)playerInfoManager.getExp()).setLevel(playerInfoManager.getLevel()).build();
MessageUtil.sendIndicationMessage(sessionByUid,1, MessageTypeProto.MessageType.UPDATE_USER_EXP_INDICATION_VALUE,build,true);
if (sessionByUid != null) {
PlayerInfoProto.UpdateUserExpIndicaiton.Builder build = PlayerInfoProto.UpdateUserExpIndicaiton.newBuilder();
build.setExp((int) playerInfoManager.getExp());
build.setLevel(playerInfoManager.getLevel());
if (drop != null) {
build.setDrop(drop);
}
MessageUtil.sendIndicationMessage(sessionByUid, 1, MessageTypeProto.MessageType.UPDATE_USER_EXP_INDICATION_VALUE, build.build(), true);
}
}

View File

@ -21,6 +21,14 @@ public class SPlayerLevelConfig implements BaseConfig {
private int mazeTreasureMax;
private int goldExtraNum1;
private int goldExtraNum2;
private int goldExtraNum3;
private int[][] levelUpReward;
@Override
public void init() throws Exception {
@ -52,6 +60,22 @@ public class SPlayerLevelConfig implements BaseConfig {
return mazeTreasureMax;
}
public int getGoldExtraNum1() {
return goldExtraNum1;
}
public int getGoldExtraNum2() {
return goldExtraNum2;
}
public int getGoldExtraNum3() {
return goldExtraNum3;
}
public int[][] getLevelUpReward() {
return levelUpReward;
}
public static Map<Integer, SPlayerLevelConfig> getsPlayerLevelConfigMap() {
return sPlayerLevelConfigMap;
}