Merge branch 'master_test_gn' into master_test_gn_lifeGrid
# Conflicts: # serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.javaback_recharge
commit
9b545e5eea
|
|
@ -2,7 +2,7 @@ package com.ljsd.jieling.core;
|
|||
|
||||
public interface GlobalsDef {
|
||||
String DEFAULT_NAME = "无名妖灵师";
|
||||
int VERSION_CODE=4;//后端兼容版本号
|
||||
int VERSION_CODE = 5;//后端兼容版本号
|
||||
int MAP_MISSION_RETURN = -9999;
|
||||
int MAP_MISSION_FAILURE = -10000;
|
||||
|
||||
|
|
@ -21,6 +21,10 @@ public interface GlobalsDef {
|
|||
int addReason = 0;
|
||||
int subReason = 1;
|
||||
|
||||
int LUOFUZHENG_MONEY = 1207; // 罗浮争锋道具
|
||||
|
||||
int FIVE_STAR_ITEM = 12059; // 5星万能将魂道具 ID:
|
||||
|
||||
int BATTLING = -1;
|
||||
|
||||
int BREAK_TYPE = 1; //1突破
|
||||
|
|
@ -73,6 +77,8 @@ public interface GlobalsDef {
|
|||
int EXPLORE_MAP_DIGGLE_TYPE =4;
|
||||
int EXPLORE_MAP_ACTION_POWER_RORMULA_TYPE =5;
|
||||
|
||||
int WUJINGMIBAO_STAR = 5; // 无尽秘宝 英雄需要的星级
|
||||
|
||||
int MUST_BE = -1;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -85,8 +85,8 @@ public class AreaManager {
|
|||
serverIds.add(masterServerId);
|
||||
serverIds.addAll(serverAreaInfo.getSlaveAreaIds());
|
||||
}
|
||||
serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
}
|
||||
serverArenaInfoManagerCache = serverArenaInfoManager;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("the exception {}", e);
|
||||
|
|
|
|||
|
|
@ -181,6 +181,8 @@ public enum ErrorCode implements IErrorCode {
|
|||
SHOP_XIA_JIA(150,"商品已下架"),
|
||||
SHOP_COLSE(151,"商店已关闭"),
|
||||
SHOP_NO_ITEM(152,"商品不存在"),
|
||||
HERO_RETURN_ONLY_LEVEL_ONE(153,"只有1级的神将才可回退,请先进行归元!"),
|
||||
HERO_RETURN_CAN_NOT(154,"此神将不可回退"),
|
||||
|
||||
GUILD_NOT_AUTHORITY(300,"账号因错误发言导致相关功能封禁中,操作失败"),
|
||||
|
||||
|
|
|
|||
|
|
@ -176,6 +176,8 @@ public interface BIReason {
|
|||
|
||||
int ENDLESS_TREASURE_REWARD = 100;//无尽秘宝获得
|
||||
int ENDLESS_RESET = 101;//无尽重置获得
|
||||
int HERO_RETURN = 102;// 神将回退
|
||||
int ITEM_RETURN = 103;// 罗浮晶石转化逐胜徽章
|
||||
|
||||
int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级
|
||||
int SECRETBOX_CONSUME = 1001;//秘盒抽卡
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ public interface GlobalItemType {
|
|||
int TRANSFORMATION_CARD = 29;//化身卡
|
||||
int TRUMP_CHIP=30;//法宝碎片(法宝聚灵使用)
|
||||
int LIFE_STONE=31;//命石
|
||||
int HOOK_PROP=32;//挂机奖励资源道具
|
||||
//物品使用类型
|
||||
int NO_USE = 0 ; //不使用
|
||||
int RANDOM_USE = 1; // 随机使用
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
|
|||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
|
||||
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.logic.question.QuestionLogic;
|
||||
|
|
@ -172,6 +173,69 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
if (playerInfoManager.getVersionCode() < 4) {
|
||||
user.getStoreManager().removeStoreInfo(17);
|
||||
}
|
||||
// 升星配方调整 涉及到线上补偿,上线时根据玩家队伍列表中用拥有的各升星过的神将数量进行补偿
|
||||
if (playerInfoManager.getVersionCode() < 5) {
|
||||
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
||||
Map<Integer, Integer> hasHeroMap = new TreeMap<>();
|
||||
for (Hero value : heroMap.values()) {
|
||||
if (value.getStar() == 6) {
|
||||
if (hasHeroMap.containsKey(6)) {
|
||||
hasHeroMap.put(6, hasHeroMap.get(6) + 1);
|
||||
} else {
|
||||
hasHeroMap.put(6, 1);
|
||||
}
|
||||
} else if (value.getStar() == 7) {
|
||||
if (hasHeroMap.containsKey(7)) {
|
||||
hasHeroMap.put(7, hasHeroMap.get(7) + 1);
|
||||
} else {
|
||||
hasHeroMap.put(7, 1);
|
||||
}
|
||||
} else if (value.getStar() == 8) {
|
||||
if (hasHeroMap.containsKey(8)) {
|
||||
hasHeroMap.put(8, hasHeroMap.get(8) + 1);
|
||||
} else {
|
||||
hasHeroMap.put(8, 1);
|
||||
}
|
||||
} else if (value.getStar() == 9) {
|
||||
if (hasHeroMap.containsKey(9)) {
|
||||
hasHeroMap.put(9, hasHeroMap.get(9) + 1);
|
||||
} else {
|
||||
hasHeroMap.put(9, 1);
|
||||
}
|
||||
} else if (value.getStar() == 10) {
|
||||
if (hasHeroMap.containsKey(10)) {
|
||||
hasHeroMap.put(10, hasHeroMap.get(10) + 1);
|
||||
} else {
|
||||
hasHeroMap.put(10, 1);
|
||||
}
|
||||
} else if (value.getStar() == 11) {
|
||||
if (hasHeroMap.containsKey(11)) {
|
||||
hasHeroMap.put(11, hasHeroMap.get(11) + 1);
|
||||
} else {
|
||||
hasHeroMap.put(11, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!hasHeroMap.isEmpty()) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
String txtStart = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_txt_start");
|
||||
stringBuilder.append(txtStart);
|
||||
int totalCount = 0;
|
||||
for (Map.Entry<Integer, Integer> entry : hasHeroMap.entrySet()) {
|
||||
int count = entry.getValue() * map.getOrDefault(entry.getKey(), 0);
|
||||
totalCount += count;
|
||||
String txt = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_" + entry.getKey(), new Object[]{entry.getValue(), count});
|
||||
stringBuilder.append(txt);
|
||||
}
|
||||
String txtEnd = SErrorCodeEerverConfig.getFormatMessage("starcomposechange_mail_txt_end", new Object[]{totalCount});
|
||||
stringBuilder.append(txtEnd);
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("starcomposechange_mail_title");
|
||||
MailLogic.getInstance().sendMail(user.getId(), title, stringBuilder.toString(), GlobalsDef.FIVE_STAR_ITEM + "#" + totalCount, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
playerInfoManager.setVersionCode(GlobalsDef.VERSION_CODE);
|
||||
}
|
||||
// 处理玩家旧头像框,兼容,一个玩家只执行一次
|
||||
|
|
@ -278,6 +342,16 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
}
|
||||
}
|
||||
|
||||
private static Map<Integer, Integer> map = new HashMap<>(6);
|
||||
{
|
||||
map.put(6, 4);
|
||||
map.put(7, 4);
|
||||
map.put(8, 8);
|
||||
map.put(9, 12);
|
||||
map.put(10, 28);
|
||||
map.put(11, 40);
|
||||
}
|
||||
|
||||
/**
|
||||
* 常驻活动重置
|
||||
* @param user
|
||||
|
|
|
|||
|
|
@ -21,11 +21,15 @@ public class HeroReturnHandler extends BaseHandler<HeroInfoProto.HeroReturnReque
|
|||
|
||||
@Override
|
||||
public void processWithProto(ISession iSession, HeroInfoProto.HeroReturnRequest proto) throws Exception {
|
||||
// 验证是否可以使用功能,神将归元
|
||||
boolean useFunction = HeroLogic.getInstance().isUseFunction(iSession.getUid(), HongMengFunctionEnum.HERO_BACK_TO_BEGIN.getPropertyId(), proto.getHeroId());
|
||||
if (!useFunction){
|
||||
throw new ErrorCodeException(ErrorCode.HONGMENG_ING);
|
||||
if (proto.getType() == 0) {
|
||||
// 验证是否可以使用功能,神将归元
|
||||
boolean useFunction = HeroLogic.getInstance().isUseFunction(iSession.getUid(), HongMengFunctionEnum.HERO_BACK_TO_BEGIN.getPropertyId(), proto.getHeroId());
|
||||
if (!useFunction){
|
||||
throw new ErrorCodeException(ErrorCode.HONGMENG_ING);
|
||||
}
|
||||
HeroLogic.getInstance().heroBack(iSession,proto.getHeroId());
|
||||
} else {
|
||||
HeroLogic.getInstance().heroReturn(iSession,proto.getHeroId());
|
||||
}
|
||||
HeroLogic.getInstance().heroBack(iSession,proto.getHeroId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,21 @@ package com.ljsd.jieling.handler;
|
|||
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.logic.dao.Item;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.hero.HongMengFunctionEnum;
|
||||
import com.ljsd.jieling.logic.item.ItemLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemMap;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.sun.javafx.collections.MappingChange;
|
||||
import config.SItem;
|
||||
import config.SMainLevelConfig;
|
||||
import config.SRewardGroup;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
|
|
@ -14,7 +25,9 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class UseAndPriceItemHandler extends BaseHandler<PlayerInfoProto.UseAndPriceItemRequest> {
|
||||
|
|
@ -55,8 +68,64 @@ public class UseAndPriceItemHandler extends BaseHandler<PlayerInfoProto.UseAndPr
|
|||
ItemLogic.getInstance().decomposeJewel(iSession,equipIdsList);
|
||||
}else if(type==6){
|
||||
ItemLogic.getInstance().useItem(iSession,itemList,useAndPriceItemRequest.getItemId());
|
||||
}else{
|
||||
}else if (type==7){//资源包 可以获取指定挂机奖励
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
int itemId=useAndPriceItemRequest.getItemsList().get(0).getItemId();
|
||||
SItem sItem=SItem.getsItemMap().get(itemId);
|
||||
if (user.getPlayerInfoManager().getLevel()<sItem.getUseLevel()){
|
||||
LOGGER.error("等级不足");
|
||||
throw new ErrorCodeException(ErrorCode.HANDLE_FAILED);
|
||||
}
|
||||
int useNum=(int)useAndPriceItemRequest.getItemsList().get(0).getItemNum();
|
||||
Map<Integer,Integer>costMap=new HashMap<>();
|
||||
costMap.put(itemId,useNum);
|
||||
int[][]rewardArr=sItem.getUseGain();
|
||||
|
||||
boolean isCost= ItemUtil.itemCost(user, costMap, BIReason.USER_ITEM, 0);
|
||||
if (!isCost){
|
||||
LOGGER.error("资源包道具消耗失败");
|
||||
throw new ErrorCodeException(ErrorCode.HANDLE_FAILED);
|
||||
}
|
||||
long[][]dropArr=useItemGetHookReward(user,rewardArr,useNum);
|
||||
ItemUtil.drop(user,dropArr,BIReason.USER_ITEM);
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropArr, BIReason.USER_ITEM);
|
||||
ItemLogic.sendUseAndPriceItemMessage(iSession, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE, drop);
|
||||
}
|
||||
else{
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用道具获取挂机奖励里面的指定时长奖励
|
||||
* @param user
|
||||
* @param itemDropTime
|
||||
* @return
|
||||
* @throws ErrorCodeException
|
||||
*/
|
||||
public long[][] useItemGetHookReward(User user, int[][] itemDropTime,long useNum)throws ErrorCodeException{
|
||||
long[][]dropArr=new long[itemDropTime.length][2];
|
||||
int index=0;
|
||||
for (int i = 0; i < itemDropTime.length; i++) {
|
||||
int itemId=itemDropTime[i][0];
|
||||
int dropRatio=itemDropTime[i][1];
|
||||
ItemMap itemObj=new ItemMap();
|
||||
int fightId = user.getMainLevelManager().getFightId();
|
||||
SMainLevelConfig targetMainLevelConfig = SMainLevelConfig.config.get(fightId);
|
||||
|
||||
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
|
||||
int[] randomReward = targetMainLevelConfig.getRandomReward();
|
||||
|
||||
ItemUtil.combineRewardByMainLine(user,false, true, randomRewardMin, dropRatio,itemObj,BIReason.ADVENTURE_BASE_REWARD);
|
||||
ItemUtil.combineRewardByMainLine(user,true, false,randomReward, dropRatio,itemObj,BIReason.ADVENTURE_RANDOM_REWARDD);
|
||||
if (itemObj.getItemMap().containsKey(itemId)){
|
||||
dropArr[index][0]=itemId;
|
||||
dropArr[index][1]=itemObj.getItemMap().get(itemId)*useNum;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
return dropArr;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ public class JourneyMap {
|
|||
.setFirst(v.isFirstPass()?1:0)
|
||||
.build();
|
||||
response.addInfos(info);
|
||||
response.setFinishNum(user.getMapManager().getJourneyFinishNum());
|
||||
});
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
|
||||
}
|
||||
|
|
@ -468,6 +469,8 @@ public class JourneyMap {
|
|||
// 逍遥游最终奖励埋点
|
||||
if (pathType == 7){
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_TRAVEL.getType(), pathType, mapId);
|
||||
int finishNum=user.getMapManager().getJourneyFinishNum()+1;
|
||||
user.getMapManager().setJourneyFinishNum(finishNum);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2133,6 +2133,7 @@ public class MapLogic {
|
|||
* 3:鸿蒙阵等级(6-15后)
|
||||
* 4:指定星级(运算星级)装备数量(初始可用)
|
||||
* 5:英雄总好感度等级(5-10后)
|
||||
* 6:逍遥游通关次数(5-10后)
|
||||
* 7:达到指定英雄等级及数量
|
||||
*
|
||||
* @param user
|
||||
|
|
@ -2170,9 +2171,18 @@ public class MapLogic {
|
|||
case 4: {
|
||||
int num = 0;
|
||||
Map<Integer, SEquipConfig> equipConfig = STableManager.getConfig(SEquipConfig.class);
|
||||
for (Map.Entry<Integer, Long> entry : user.getItemManager().getEquipBookMap().entrySet()) {
|
||||
if (equipConfig.get(entry.getKey()).getStar() >= ints[1]) {
|
||||
num++;
|
||||
for (Map.Entry<Integer, Item> equipEntry : user.getItemManager().getItemMap().entrySet()) {
|
||||
if (SItem.getsItemMap().get(equipEntry.getKey()).getItemType() == 3) {
|
||||
if (equipConfig.get(equipEntry.getKey()).getStar() >= ints[1]) {
|
||||
num+=equipEntry.getValue().getItemNum();
|
||||
}
|
||||
}
|
||||
}
|
||||
for (Map.Entry<String, Hero> stringHeroEntry : user.getHeroManager().getHeroMap().entrySet()) {
|
||||
for (Map.Entry<Integer, Integer> entry : stringHeroEntry.getValue().getEquipByPositionMap().entrySet()) {
|
||||
if (equipConfig.get(entry.getValue()).getStar() >= ints[1]) {
|
||||
num++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (num < ints[2]) {
|
||||
|
|
@ -2186,11 +2196,20 @@ public class MapLogic {
|
|||
}
|
||||
break;
|
||||
}
|
||||
case 6:{
|
||||
if (user.getMapManager().getJourneyFinishNum() < ints[1]) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7: {
|
||||
int num = 0;
|
||||
for (Map.Entry<String, Hero> stringHeroEntry : user.getHeroManager().getHeroMap().entrySet()) {
|
||||
if (stringHeroEntry.getValue().getOriginalLevel()>= ints[1]) {
|
||||
num++;
|
||||
if (num >= ints[2]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (num < ints[2]) {
|
||||
|
|
|
|||
|
|
@ -122,6 +122,8 @@ public class MapManager extends MongoBase {
|
|||
|
||||
private Map<Integer,PathInfo> journeyInfo = new HashMap<>();
|
||||
|
||||
private int journeyFinishNum;//逍遥游通关次数
|
||||
|
||||
private int currentJourneyId;
|
||||
|
||||
private EndlessTreasureReward endlessTreasureReward = new EndlessTreasureReward();
|
||||
|
|
@ -878,6 +880,15 @@ public class MapManager extends MongoBase {
|
|||
updateString("journeyInfo",journeyInfo);
|
||||
}
|
||||
|
||||
public int getJourneyFinishNum() {
|
||||
return journeyFinishNum;
|
||||
}
|
||||
|
||||
public void setJourneyFinishNum(int journeyFinishNum) {
|
||||
this.journeyFinishNum = journeyFinishNum;
|
||||
updateString("journeyFinishNum",journeyFinishNum);
|
||||
}
|
||||
|
||||
public int getCurrentJourneyId() {
|
||||
return currentJourneyId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
package com.ljsd.jieling.handler.store;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.logic.activity.event.NewWelfareEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.NewWelfareTypeEnum;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.store.StoreLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
|
|
@ -23,6 +27,9 @@ public class BuyStoreItemHandler extends BaseHandler {
|
|||
PlayerInfoProto.BuyStoreItemRequest buyStoreItemRequest
|
||||
= PlayerInfoProto.BuyStoreItemRequest.parseFrom(netData.parseClientProtoNetData());
|
||||
CommonProto.Drop drop = StoreLogic.buyStoreItem(iSession.getUid(), buyStoreItemRequest.getStoreId(), buyStoreItemRequest.getItemId(), buyStoreItemRequest.getItemNum());
|
||||
if (buyStoreItemRequest.getItemId()==1106){
|
||||
Poster.getPoster().dispatchEvent(new NewWelfareEvent(UserManager.getUser(iSession.getUid()), NewWelfareTypeEnum.BUY_1106.getType(),0));
|
||||
}
|
||||
int msgId = MessageTypeProto.MessageType.BUY_STORE_ITEM_RESPONSE_VALUE;
|
||||
PlayerInfoProto.BuyStoreItemResponse builder = PlayerInfoProto.BuyStoreItemResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(iSession, 1,msgId, builder, true);
|
||||
|
|
|
|||
|
|
@ -115,6 +115,8 @@ public enum ReportEventEnum {
|
|||
//七界试炼
|
||||
SEVENWORLDS_TRIAL(77 ,"sevenworlds_Trial",CommonEventHandler.getInstance(),new String[]{"sevenworlds_Trial_type","sevenworlds_Trial_id","combat_results","reward_nums_list"}),
|
||||
|
||||
HERO_RETURN(78,"hero_return", CommonEventHandler.getInstance(),new String[]{"hero_id","hero_level","hero_quality","reward_list","reward_nums_list"}),
|
||||
|
||||
VIP_LEVEL_UP(100,"", new VipLevelUpEventHandler(),new String[]{""});
|
||||
|
||||
private int type;
|
||||
|
|
|
|||
|
|
@ -114,6 +114,9 @@ public class GlobalDataManaager implements IManager {
|
|||
int id = sGlobalSystemConfig.getId();
|
||||
long systemOpenLong = sGlobalSystemConfig.getSystemOpenLong();
|
||||
long systemEndLong = sGlobalSystemConfig.getSystemEndLong();
|
||||
if (now < systemOpenLong || now > systemEndLong) {
|
||||
continue;
|
||||
}
|
||||
if(openTimeOfFuntionCache.containsKey(id)){
|
||||
//强制关闭
|
||||
if(now<systemOpenLong || (now>systemEndLong)){
|
||||
|
|
@ -154,8 +157,8 @@ public class GlobalDataManaager implements IManager {
|
|||
long mod = passTims % (diffTime + seasonInterval); // 每个周期的时间+间隔时间
|
||||
if(mod < diffTime ){//新的周期开启 一轮周期的时间
|
||||
//开服几天后开启
|
||||
int[]limitDay = sGlobalSystemConfig.getIfOpen();
|
||||
if(getServerOpenTimeCompareSpecialTimeResult()){
|
||||
int[]limitDay = sGlobalSystemConfig.getIfOpen();
|
||||
if(limitDay.length > 0){
|
||||
if( limitDay[0] == 2 ){
|
||||
long day = TimeUtils.getGapDaysByTwoTime(GameApplication.serverConfig.getOpenTime(),TimeUtils.getTimeStamp2(TimeUtils.now()))+1;
|
||||
|
|
@ -165,9 +168,18 @@ public class GlobalDataManaager implements IManager {
|
|||
}
|
||||
}
|
||||
}
|
||||
openList.add(id);
|
||||
|
||||
//计算开启时间、关闭时间
|
||||
long turns = passTims / ((diffTime + seasonInterval));
|
||||
if (limitDay.length > 0) {
|
||||
// 达到指定轮数,不再开启该功能
|
||||
if (limitDay[0] == 3) {
|
||||
if (turns > limitDay[1]) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
openList.add(id);
|
||||
long addTim = turns * (diffTime + seasonInterval);
|
||||
long timeOpenOfThis =seasonOpenLong+addTim;
|
||||
long timeCloseOfThis =seasonEndLong+addTim;
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@ import com.ljsd.jieling.util.MessageUtil;
|
|||
import config.SActivityRewardConfig;
|
||||
import config.SErrorCodeEerverConfig;
|
||||
import config.SGlobalActivity;
|
||||
import config.SSpiritAnimalSummon;
|
||||
import manager.STableManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import rpc.protocols.CommonProto;
|
||||
|
|
@ -395,18 +393,20 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
|
|||
* @param filterMissId miss过滤
|
||||
*/
|
||||
public void sendActivityProgress(ISession session, ActivityMission activityMission, Set<Integer> filterMissId) {
|
||||
if (session == null) {
|
||||
return;
|
||||
}
|
||||
PlayerInfoProto.ActivityUpateProgressIndication.Builder builder = PlayerInfoProto.ActivityUpateProgressIndication.newBuilder();
|
||||
if (session != null) {
|
||||
User user = UserManager.getUserInMem(session.getUid());
|
||||
if (user != null && activityMission != null){
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missInfo = getAllMissInfo(user, activityMission, filterMissId);
|
||||
CommonProto.ActivityInfo.Builder builder1 = CommonProto.ActivityInfo.newBuilder()
|
||||
.setValue(activityMission.getV())
|
||||
.addAllMission(missInfo)
|
||||
.setActivityId(id);
|
||||
builder.setActivityInfo(builder1);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true);
|
||||
}
|
||||
|
||||
User user = UserManager.getUserInMem(session.getUid());
|
||||
if (user != null && activityMission != null) {
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missInfo = getAllMissInfo(user, activityMission, filterMissId);
|
||||
CommonProto.ActivityInfo.Builder builder1 = CommonProto.ActivityInfo.newBuilder()
|
||||
.setValue(activityMission.getV())
|
||||
.addAllMission(missInfo)
|
||||
.setActivityId(id);
|
||||
builder.setActivityInfo(builder1);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,6 +100,10 @@ public class ActivityLogic implements IEventHandler{
|
|||
//更新累计充值天数
|
||||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.RECHARGE_SUM_DAY);
|
||||
|
||||
//更新新积天豪礼天数
|
||||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.NEW_RECHARGE_SUM_DAY_6);
|
||||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.NEW_RECHARGE_SUM_DAY_30);
|
||||
|
||||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCKY_GET);
|
||||
|
||||
ActivityLogic.getInstance().resumeActivity(user,ActivityType.JADE_DYNASTY_MISSION);
|
||||
|
|
@ -113,7 +117,8 @@ public class ActivityLogic implements IEventHandler{
|
|||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL);
|
||||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.LUCK_WHEEL_ADVANCE);
|
||||
ActivityLogic.getInstance().resumeActivity(user,ActivityType.TREASURE);
|
||||
|
||||
//每日特惠礼包开启的活動刷新
|
||||
ActivityLogic.getInstance().resumeActivity(user,ActivityType.DAILY_PREFERENTIAL_GIFT);
|
||||
Set<Integer> upFiveActivityTypes = new HashSet<>();
|
||||
upFiveActivityTypes.add(ActivityType.SevenLogin);
|
||||
upFiveActivityTypes.add(ActivityType.RECHARGE_SUM_DAY);
|
||||
|
|
@ -172,6 +177,9 @@ public class ActivityLogic implements IEventHandler{
|
|||
if (time == ActivityType.OPEN_TYPE_ROLE) {
|
||||
continue;
|
||||
}
|
||||
if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
continue;
|
||||
}
|
||||
if(time == ActivityType.OPEN_TYPE_MONTHS){
|
||||
//now = 当前是开服第几个月
|
||||
}
|
||||
|
|
@ -187,6 +195,7 @@ public class ActivityLogic implements IEventHandler{
|
|||
// 开服条件判断
|
||||
boolean open = SGlobalActivity.checkActivityIfOpen(sGlobalActivity.getId(),0,GameApplication.serverConfig.getCacheOpenTime());
|
||||
if (!open){
|
||||
openActivityIds.remove(sGlobalActivity.getId());
|
||||
continue;
|
||||
}
|
||||
if (endTime != 0 && now > endTime) {
|
||||
|
|
@ -294,6 +303,9 @@ public class ActivityLogic implements IEventHandler{
|
|||
* @param activityId
|
||||
*/
|
||||
public void initMissionInfo(ActivityMission activityMission,int activityId){
|
||||
if(activityId == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
return;
|
||||
}
|
||||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(activityId);
|
||||
if(sActivityRewardConfigs == null){return;}
|
||||
for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){
|
||||
|
|
@ -369,6 +381,10 @@ public class ActivityLogic implements IEventHandler{
|
|||
//初始化活动 绝对时间和相对开服时间
|
||||
for (Integer openActivityId : openActivityIds) {
|
||||
SGlobalActivity sGlobalActivity = sGlobalActivityMap.get(openActivityId);
|
||||
if (sGlobalActivity == null) {
|
||||
LOGGER.info("checkActivityOfUser uid={} remove activity={}", user.getId(), openActivityId);
|
||||
continue;
|
||||
}
|
||||
int[] ifOpen = sGlobalActivity.getIfOpen();
|
||||
//创角
|
||||
if(ifOpen!=null && ifOpen.length>0 && ifOpen[0]==1){
|
||||
|
|
@ -402,6 +418,15 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
}
|
||||
}
|
||||
// 登录检测已开启的活动,商店是否开启
|
||||
int[] shopId = sGlobalActivity.getShopId();
|
||||
if (shopId != null && shopId.length > 0 && shopId[0] != 0) {
|
||||
boolean b = user.getStoreManager().getStoreInfoMap().containsKey(shopId[0]);
|
||||
if (!b) {
|
||||
LOGGER.info("checkActivityOfUser uid={} activityId={} reopen shopId={}", user.getId(), openActivityId, shopId[0]);
|
||||
Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),openActivityId,1));
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
initAllActivityMission(activityManager.getActivityMissionMap(),openActivityId);
|
||||
|
|
@ -422,7 +447,20 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
|
||||
for (SGlobalActivity sGlobalActivity : sGlobalActivityMap.values()) {
|
||||
if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
continue;
|
||||
}
|
||||
int activityId = sGlobalActivity.getId();
|
||||
////天尊降世活动特殊处理
|
||||
if (activityMissionMap.containsKey(42)){
|
||||
if (activityId==4201){
|
||||
continue;
|
||||
}
|
||||
}else{
|
||||
if (activityId==42){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (openActivityIds.contains(activityId)) {
|
||||
int[] ifOpen = sGlobalActivity.getIfOpen();
|
||||
if (ifOpen == null || ifOpen.length <= 0){
|
||||
|
|
@ -549,6 +587,12 @@ public class ActivityLogic implements IEventHandler{
|
|||
for (Map.Entry<Integer, ActivityMission> activityState : activityMissionMap.entrySet()) {
|
||||
Integer activityId = activityState.getKey();
|
||||
ActivityMission activityMission = activityState.getValue();
|
||||
|
||||
boolean open = SGlobalActivity.checkActivityIfOpen(activityId,user.getPlayerInfoManager().getCreateTime(),GameApplication.serverConfig.getCacheOpenTime());
|
||||
if (!open){
|
||||
// 开服条件判断
|
||||
continue;
|
||||
}
|
||||
//todo 活动未初始化成功
|
||||
if (activityMission == null) {
|
||||
continue;
|
||||
|
|
@ -556,6 +600,7 @@ public class ActivityLogic implements IEventHandler{
|
|||
if(activityId == 7201){
|
||||
continue;
|
||||
}
|
||||
|
||||
int activityStatus = activityMission.getActivityState();
|
||||
if(activityStatus == -1){
|
||||
continue;
|
||||
|
|
@ -564,6 +609,13 @@ public class ActivityLogic implements IEventHandler{
|
|||
if(sGlobalActivity == null){
|
||||
continue;
|
||||
}
|
||||
///旧版积天豪礼数据兼容
|
||||
if (sGlobalActivity.getType()==ActivityType.RECHARGE_SUM_DAY){
|
||||
if (activityMissionMap.get(activityId).getV()<=0||activityMissionMap.get(activityId).getV()>=15) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(activityStatus == ActivityType.CLOSE_STATE){
|
||||
long prepareTime = ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),0, sGlobalActivity.getGapTime());
|
||||
activityInfoList.add(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).setEndTime((int)(prepareTime/1000)).build());
|
||||
|
|
@ -589,12 +641,18 @@ public class ActivityLogic implements IEventHandler{
|
|||
if (sGlobalActivity.getIsSaving()==0 && activityStatus != ActivityType.OPEN_STATE) {
|
||||
continue;
|
||||
}
|
||||
int startTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 1) / 1000);
|
||||
int endTime;
|
||||
if(sGlobalActivity.getGapTime()!=0){
|
||||
endTime = (int) (ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, sGlobalActivity.getGapTime()) / 1000);
|
||||
int startTime = 0;
|
||||
int endTime = 0;
|
||||
if(sGlobalActivity.getType() == ActivityType.DAILY_PREFERENTIAL_GIFT){
|
||||
startTime=(int)(activityState.getValue().getCreatTime()/1000);
|
||||
endTime = startTime+604800;
|
||||
}else{
|
||||
endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000);
|
||||
startTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 1) / 1000);
|
||||
if(sGlobalActivity.getGapTime()!=0){
|
||||
endTime = (int) (ToolsUtil.getEndTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, sGlobalActivity.getGapTime()) / 1000);
|
||||
}else{
|
||||
endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000);
|
||||
}
|
||||
}
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId());
|
||||
if(abstractActivity==null){
|
||||
|
|
@ -617,6 +675,11 @@ public class ActivityLogic implements IEventHandler{
|
|||
}
|
||||
|
||||
public void sendActivityInfo(User user,int activityId){
|
||||
// 开服条件判断
|
||||
boolean open = SGlobalActivity.checkActivityIfOpen(activityId,user.getPlayerInfoManager().getCreateTime(),GameApplication.serverConfig.getCacheOpenTime());
|
||||
if (!open){
|
||||
return;
|
||||
}
|
||||
ISession session = OnlineUserManager.getSessionByUid(user.getId());
|
||||
if(session!=null){
|
||||
PlayerInfoProto.ActivityUpateIndication.Builder builder = PlayerInfoProto.ActivityUpateIndication.newBuilder();
|
||||
|
|
@ -716,8 +779,10 @@ public class ActivityLogic implements IEventHandler{
|
|||
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
|
||||
for (Map.Entry<Integer, ActivityMission> item : activityMissionMap.entrySet()) {
|
||||
ActivityMission activityMission = item.getValue();
|
||||
if (withState && activityMission.getActivityState() != ActivityType.OPEN_STATE) {
|
||||
continue;
|
||||
if (activityType != ActivityType.NEW_WELFARE) { // 这个活动未开启也需要记录进度
|
||||
if (withState && activityMission.getActivityState() != ActivityType.OPEN_STATE) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Integer activityId = item.getKey();
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
|
||||
|
|
|
|||
|
|
@ -104,9 +104,13 @@ public interface ActivityType {
|
|||
int TRANSFORMATION_DRAW_CARD = 86;//方寸寻宝
|
||||
int CONTINUOUS_GIFT_NEW = 87;//新连续礼包
|
||||
int ARENA_RANK_EXPERIMENT = 88;//竞技试炼
|
||||
int DAILY_PREFERENTIAL_GIFT = 89;//每日特惠礼包开启的活动
|
||||
int NEW_RECHARGE_SUM_DAY_6 = 90;//新积天豪礼6元充值活动
|
||||
int NEW_RECHARGE_SUM_DAY_30 = 92;//新积天豪礼30元充值活动
|
||||
int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽宝阁活动
|
||||
int SPECIAL_MONSTER_GIFT_ACTIVITY = 101;//灵兽礼包
|
||||
|
||||
int NEW_PLAYER_SHOP = 91; // 新人商城
|
||||
|
||||
|
||||
int NEW_GENERAL_ATTACK = 200;//新将来袭
|
||||
|
|
|
|||
|
|
@ -94,7 +94,11 @@ public enum ActivityTypeEnum {
|
|||
TRANSFORMATION_DRAW_CARD(ActivityType.TRANSFORMATION_DRAW_CARD,DefaultEmptyActivity::new),//方寸寻宝
|
||||
CONTINUOUS_GIFT_NEW(ActivityType.CONTINUOUS_GIFT_NEW,ContinuousGiftActivity::new),//新连续礼包
|
||||
ARENA_RANK_EXPERIMENT(ActivityType.ARENA_RANK_EXPERIMENT,ArenaRankActivity::new),//竞技试炼
|
||||
NEW_RECHARGE_SUM_DAY_6(ActivityType.NEW_RECHARGE_SUM_DAY_6,NewRechargeSumDayActivity::new),//新积天豪礼
|
||||
NEW_RECHARGE_SUM_DAY_30(ActivityType.NEW_RECHARGE_SUM_DAY_30,NewRechargeSumDayActivity::new),//新积天豪礼
|
||||
DAILY_PREFERENTIAL_GIFT(ActivityType.DAILY_PREFERENTIAL_GIFT,DailyPreferentialGiftActivity::new),
|
||||
SUMMON_TREASURE(ActivityType.SUMMON_TREASURE,SummonTreasureActivity::new),//招募秘宝
|
||||
NEW_PLAYER_SHOP(ActivityType.NEW_PLAYER_SHOP, NewPlayerShopActivity::new)
|
||||
;
|
||||
|
||||
private int type;
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ public class ChoiceDrawCardActivity extends AbstractActivity {
|
|||
mission.getActivityMissionMap().put(id, activityProgressInfo);
|
||||
}
|
||||
mission.setOpenType(1);
|
||||
mission.setV(0);
|
||||
// mission.setV(0);
|
||||
mission.setActivityState(ActivityType.OPEN_STATE);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,188 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.jbean.ActivityManager;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.mail.MailLogic;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.SActivityRewardConfig;
|
||||
import config.SErrorCodeEerverConfig;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.StringUtil;
|
||||
import util.TimeUtils;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 每日特惠礼包开启的活动
|
||||
*/
|
||||
|
||||
public class DailyPreferentialGiftActivity extends AbstractActivity{
|
||||
|
||||
public DailyPreferentialGiftActivity(int id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initActivity(User user) throws Exception{
|
||||
ActivityMission mission = new ActivityMission();
|
||||
// 初始化阶段奖励
|
||||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
ActivityLogic.getInstance().initOtherMission(mission, sActivityRewardConfigs.stream().mapToInt(n->n.getId()).boxed().collect(Collectors.toList()));
|
||||
mission.setV(0);
|
||||
mission.setCreatTime(TimeUtils.getAppointTime(0));
|
||||
user.getActivityManager().getActivityMissionMap().put(id, mission);
|
||||
ActivityLogic.getInstance().sendActivityInfo(user, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(IEvent event) throws Exception{
|
||||
|
||||
|
||||
|
||||
}
|
||||
/**
|
||||
*购买后7天内 每天可以领取奖励 领取状态每日重置
|
||||
*/
|
||||
@Override
|
||||
public void onResume(User user) throws Exception {
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if(mission == null){
|
||||
return;
|
||||
}
|
||||
//开启礼包的第几天
|
||||
int day = (int)TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(mission.getCreatTime()),TimeUtils.getTimeStamp2(TimeUtils.now()))+1;
|
||||
List<SActivityRewardConfig> rewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
if(rewardConfig == null){
|
||||
return;
|
||||
}
|
||||
Map<Integer,Integer> rewardMap = new HashMap();
|
||||
for(SActivityRewardConfig config:rewardConfig){
|
||||
for(int[]reward:config.getReward()){
|
||||
if(rewardMap.containsKey(reward[0])){
|
||||
rewardMap.put(reward[0],rewardMap.get(reward[0])+reward[1]);
|
||||
}else{
|
||||
rewardMap.put(reward[0],reward[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("sevendaycard_mail_title");
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("sevendaycard_mail_txt");
|
||||
if(day >7){
|
||||
//第八天登錄 發送所有獎勵
|
||||
//下线当天的活动处理
|
||||
sendSpecailMail(user,title,content,mission);
|
||||
for(int i = mission.getV()+1;i <= 7;i++){
|
||||
MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardMap.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()})
|
||||
.toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
//刪除數據
|
||||
user.getActivityManager().getActivityMissionMap().remove(id);
|
||||
ISession session = OnlineUserManager.sessionMap.get(user.getId());
|
||||
if(session!=null){
|
||||
PlayerInfoProto.SpecailActivityUpateIndication.Builder indication = PlayerInfoProto.SpecailActivityUpateIndication.newBuilder();
|
||||
indication.addCloseActivityId(ActivityType.DAILY_PREFERENTIAL_GIFT);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.SPECIAL_ACTIVITY_UPDATE_INDICATION_VALUE, indication.build(), true);
|
||||
}
|
||||
return;
|
||||
}else{
|
||||
//下线当天的活动处理
|
||||
sendSpecailMail(user,title,content,mission);
|
||||
for(int i = mission.getV()+1;i<day ;i++){
|
||||
MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardMap.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()})
|
||||
.toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
if(sActivityRewardConfigs == null){return;}
|
||||
for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){
|
||||
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
|
||||
activityProgressInfo.setState(0);
|
||||
mission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
|
||||
}
|
||||
ActivityLogic.getInstance().initMissionInfo(mission,id);
|
||||
if(day > mission.getV()){
|
||||
mission.setV(day-1);
|
||||
}
|
||||
sendActivityProgress(user, mission, null);
|
||||
}
|
||||
}
|
||||
|
||||
//当天为领取特殊处理
|
||||
public static void sendSpecailMail( User user,String title,String content, ActivityMission mission ){
|
||||
Map<Integer, ActivityProgressInfo> progressMap = mission.getActivityMissionMap();
|
||||
Map<Integer,Integer> rewardMap1 = new HashMap();
|
||||
int num=0;
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> progress:progressMap.entrySet()){
|
||||
if(progress.getValue().getState() == ActivityType.WILL_TAKE){
|
||||
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(progress.getKey());
|
||||
if(sActivityRewardConfig == null){
|
||||
continue;
|
||||
}
|
||||
num++;
|
||||
for(int[]reward:sActivityRewardConfig.getReward()){
|
||||
if(rewardMap1.containsKey(reward[0])){
|
||||
rewardMap1.put(reward[0],rewardMap1.get(reward[0])+reward[1]);
|
||||
}else{
|
||||
rewardMap1.put(reward[0],reward[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(rewardMap1.size()>0){
|
||||
if(progressMap.size()==num){
|
||||
mission.setV(mission.getV()+1);
|
||||
}
|
||||
MailLogic.getInstance().sendMail(user.getId(), title, content, StringUtil.parseArrayToString(rewardMap1.entrySet().stream().map(n->new int[]{n.getKey(),n.getValue()})
|
||||
.toArray(int[][]::new)), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean takeReward(ISession session, int missionId) throws Exception{
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||
if (sActivityRewardConfig == null || sActivityRewardConfig.getActivityId() != id) {
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL);
|
||||
}
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id);
|
||||
if (activityMission == null){
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId);
|
||||
if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) {
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
|
||||
}
|
||||
int day = (int)TimeUtils.getGapDaysByTwoTime(TimeUtils.getTimeStamp2(activityMission.getCreatTime()),TimeUtils.getTimeStamp2(TimeUtils.now()));
|
||||
if(day<7){
|
||||
int[][] reward = sActivityRewardConfig.getReward();
|
||||
activityMission.setV(day+1);
|
||||
checkAndSetProgress(activityMission, activityProgressInfo, missionId);
|
||||
sendActivityProgress(session, activityMission, null);
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
|
||||
reportTakeActivityReward(user,reward,missionId);
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -31,15 +31,16 @@ class DailyRechargeActivity extends AbstractActivity {
|
|||
// ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
// takeAllReward(sessionByUid);
|
||||
// }
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
takeAllReward(sessionByUid);
|
||||
super.onResume(user);
|
||||
|
||||
// ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
// takeAllReward(sessionByUid);
|
||||
// super.onResume(user);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
void updateProgress(ActivityMission activityMission, int count) {
|
||||
activityMission.setV(count + activityMission.getV());
|
||||
// activityMission.setV(count + activityMission.getV());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.logic.activity.event.GoldRefreshEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
|
||||
class NewPlayerShopActivity extends AbstractActivity {
|
||||
|
||||
public NewPlayerShopActivity(int id) {
|
||||
super(id);
|
||||
// Poster.getPoster().listenEvent(this, UserOnlineEvent.class);
|
||||
Poster.getPoster().listenEvent(this, GoldRefreshEvent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
|
||||
// notifyClient(user, ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(IEvent event) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.ActivityStaticConfig;
|
||||
import com.ljsd.jieling.jbean.ActivityManager;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.activity.event.BuyGoodsDirectEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.NewWelfareEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.store.GiftGoodsType;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import config.SActivityRewardConfig;
|
||||
import config.SRechargeCommodityNewConfig;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
class NewRechargeSumDayActivity extends AbstractActivity {
|
||||
|
||||
public NewRechargeSumDayActivity(int id) {
|
||||
super(id);
|
||||
Poster.getPoster().listenEvent(this, BuyGoodsDirectEvent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(IEvent event) throws Exception {
|
||||
super.onEvent(event);
|
||||
if (!(event instanceof BuyGoodsDirectEvent)) {
|
||||
return;
|
||||
}
|
||||
BuyGoodsDirectEvent buyGoodsDirectEvent = (BuyGoodsDirectEvent) event;
|
||||
int goodsId=buyGoodsDirectEvent.getGoodsId();
|
||||
SRechargeCommodityNewConfig rechargeConfig=SRechargeCommodityNewConfig.getConfigById(goodsId);
|
||||
if (rechargeConfig==null||rechargeConfig.getType()!= GiftGoodsType.RechargeSumDay){
|
||||
return;
|
||||
}
|
||||
User user = UserManager.getUser(buyGoodsDirectEvent.getUid());
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
boolean isSend=false;
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> item : activityMission.getActivityMissionMap().entrySet()) {
|
||||
ActivityProgressInfo activityProgressInfo = item.getValue();
|
||||
int missionId=item.getKey();
|
||||
SActivityRewardConfig missionConfig=SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||
if (missionConfig.getValues()[0][0]==goodsId&&missionConfig.getSort()-1==activityMission.getV()&&activityProgressInfo.getState()==ActivityType.WILL_TAKE){
|
||||
activityProgressInfo.setState(1);
|
||||
isSend=true;
|
||||
}
|
||||
activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo);
|
||||
}
|
||||
if (isSend){
|
||||
//更新进度
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
sendActivityProgress(sessionByUid, activityMission, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume(User user)throws Exception {
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id);
|
||||
int buyNum=0;
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> progressInfoEntry : activityMission.getActivityMissionMap().entrySet()) {
|
||||
if (progressInfoEntry.getValue().getState()==ActivityType.HAD_TAKED){
|
||||
buyNum++;
|
||||
}
|
||||
}
|
||||
if (buyNum > activityMission.getV()) {
|
||||
activityMission.setV(activityMission.getV() + 1);
|
||||
}
|
||||
if (activityMission.getV() >= SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).size()) {
|
||||
ActivityLogic.getInstance().initMissionInfo(activityMission,id);
|
||||
}
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
sendActivityProgress(sessionByUid, activityMission, null);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -14,6 +14,7 @@ import com.ljsd.jieling.logic.dao.UserManager;
|
|||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
|
|
@ -22,6 +23,7 @@ import config.SGlobalActivity;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class NewWelfareActivity extends AbstractActivity {
|
||||
|
||||
|
|
@ -30,98 +32,209 @@ public class NewWelfareActivity extends AbstractActivity {
|
|||
Poster.getPoster().listenEvent(this, NewWelfareEvent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initActivity(User user) throws Exception {
|
||||
super.initActivity(user);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新进度
|
||||
*
|
||||
* @param filterMissId miss过滤
|
||||
*/
|
||||
@Override
|
||||
public void sendActivityProgress(ISession session, ActivityMission activityMission, Set<Integer> filterMissId) {
|
||||
if (session == null) {
|
||||
return;
|
||||
}
|
||||
PlayerInfoProto.ActivityUpateProgressIndication.Builder builder = PlayerInfoProto.ActivityUpateProgressIndication.newBuilder();
|
||||
|
||||
User user = UserManager.getUserInMem(session.getUid());
|
||||
if (user != null && activityMission != null) {
|
||||
if (activityMission.getActivityState() != ActivityType.OPEN_STATE) {
|
||||
return;
|
||||
}
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missInfo = getAllMissInfo(user, activityMission, filterMissId);
|
||||
CommonProto.ActivityInfo.Builder builder1 = CommonProto.ActivityInfo.newBuilder()
|
||||
.setValue(activityMission.getV())
|
||||
.addAllMission(missInfo)
|
||||
.setActivityId(id);
|
||||
builder.setActivityInfo(builder1);
|
||||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ACTIVITY_UPDATE_PROGRESS_INDICATION_VALUE, builder.build(), true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEvent(IEvent event) throws Exception {
|
||||
if(! (event instanceof NewWelfareEvent) ){
|
||||
return;
|
||||
}
|
||||
if (!(event instanceof NewWelfareEvent)) {
|
||||
return;
|
||||
}
|
||||
if (this.id == 42) {
|
||||
oldActivityEvent(event);
|
||||
} else {
|
||||
NewWelfareEvent newWelfareEvent = (NewWelfareEvent) event;
|
||||
if (newWelfareEvent.getType() == NewWelfareTypeEnum.BUY_1106.getType()) {
|
||||
User user = newWelfareEvent.getUser();
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> item : activityMission.getActivityMissionMap().entrySet()) {
|
||||
ActivityProgressInfo activityProgressInfo = item.getValue();
|
||||
int missionId=item.getKey();
|
||||
if (missionId==4209){
|
||||
activityProgressInfo.setState(1);
|
||||
}
|
||||
activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo);
|
||||
}
|
||||
//更新进度
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
sendActivityProgress(sessionByUid, activityMission, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||
if (this.id == 42) {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||
oldActivityTakeReward(session,missionId,user,activityMission,activityProgressInfoMap);
|
||||
} else {
|
||||
super.takeReward(session,missionId);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getAllMissRewards(User user, ISession session, List<int[][]> itemAttrs) throws Exception {
|
||||
if (this.id == 42) {
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) {
|
||||
return;
|
||||
}
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||
for (ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()) {
|
||||
if (activityProgressInfo.getState() != 1) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()) {
|
||||
activityProgressInfo.setState(2);
|
||||
}
|
||||
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> item : activityProgressInfoMap.entrySet()) {
|
||||
item.getValue().setState(2);
|
||||
activityMission.getActivityMissionMap().put(item.getKey(), item.getValue());
|
||||
}
|
||||
|
||||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
itemAttrs.add(sActivityRewardConfigs.get(0).getReward());
|
||||
}else{
|
||||
super.getAllMissRewards(user,session,itemAttrs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
void updateProgress(ActivityMission activityMission, int count) {
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> item : activityProgressInfoMap.entrySet()) {
|
||||
ActivityProgressInfo activityProgressInfo = item.getValue();
|
||||
int missionId=item.getKey();
|
||||
SActivityRewardConfig rewardConfig=SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||
activityProgressInfo.setProgrss(count);
|
||||
if (activityProgressInfo.getProgrss()>=rewardConfig.getValues()[0][0]&&rewardConfig.getReward().length<=0&&missionId!=4209){
|
||||
activityProgressInfo.setState(ActivityType.HAD_TAKED);
|
||||
}
|
||||
activityMission.getActivityMissionMap().put(item.getKey(), activityProgressInfo);
|
||||
}
|
||||
}
|
||||
|
||||
private void oldActivityEvent(IEvent event) {
|
||||
NewWelfareEvent newWelfareEvent = (NewWelfareEvent) event;
|
||||
User user =newWelfareEvent.getUser();
|
||||
User user = newWelfareEvent.getUser();
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if( null == activityMission){
|
||||
if (null == activityMission) {
|
||||
return;
|
||||
}
|
||||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||
boolean isUpdate = false;
|
||||
for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){
|
||||
for (SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs) {
|
||||
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.get(sActivityRewardConfig.getId());
|
||||
if(sActivityRewardConfig.getSort()==1){//拿sort区分新老至尊降世活动任务
|
||||
if(activityProgressInfo.getState() == 1){
|
||||
if (sActivityRewardConfig.getSort() == 1) {//拿sort区分新老至尊降世活动任务
|
||||
if (activityProgressInfo.getState() == 1) {
|
||||
continue;
|
||||
}
|
||||
if(sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType() ){
|
||||
if (sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType()) {
|
||||
int parm = newWelfareEvent.getParm();
|
||||
if( newWelfareEvent.getType() == NewWelfareTypeEnum.LOGIN_TIMES.getType()){
|
||||
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss()+1);
|
||||
parm=activityProgressInfo.getProgrss();
|
||||
if (newWelfareEvent.getType() == NewWelfareTypeEnum.LOGIN_TIMES.getType()) {
|
||||
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1);
|
||||
parm = activityProgressInfo.getProgrss();
|
||||
}
|
||||
if(parm ==sActivityRewardConfig.getValues()[1][0]){
|
||||
if(newWelfareEvent.getType() == NewWelfareTypeEnum.RECHARGE_BUY.getType()){
|
||||
if (parm == sActivityRewardConfig.getValues()[1][0]) {
|
||||
if (newWelfareEvent.getType() == NewWelfareTypeEnum.RECHARGE_BUY.getType()) {
|
||||
//可领取奖励
|
||||
activityProgressInfo.setState(3);
|
||||
}else{
|
||||
} else {
|
||||
activityProgressInfo.setState(1);
|
||||
}
|
||||
activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
|
||||
isUpdate = true;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
//新增任务
|
||||
if(activityProgressInfo.getState()!= 0){
|
||||
if (activityProgressInfo.getState() != 0) {
|
||||
continue;
|
||||
}
|
||||
if(sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType() ){
|
||||
if (sActivityRewardConfig.getValues()[0][0] == newWelfareEvent.getType()) {
|
||||
int parm = newWelfareEvent.getParm();
|
||||
if (newWelfareEvent.getType() == NewWelfareTypeEnum.ALL_MISSION_FIN.getType()||newWelfareEvent.getType() == NewWelfareTypeEnum.EXPLORE.getType()){
|
||||
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss()+1);
|
||||
parm=activityProgressInfo.getProgrss();
|
||||
if (newWelfareEvent.getType() == NewWelfareTypeEnum.ALL_MISSION_FIN.getType() || newWelfareEvent.getType() == NewWelfareTypeEnum.EXPLORE.getType()) {
|
||||
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1);
|
||||
parm = activityProgressInfo.getProgrss();
|
||||
}
|
||||
if(parm ==sActivityRewardConfig.getValues()[1][0]){
|
||||
if (parm == sActivityRewardConfig.getValues()[1][0]) {
|
||||
activityProgressInfo.setState(3);
|
||||
activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo);
|
||||
isUpdate = true;
|
||||
if (sActivityRewardConfig.getSort()==2){
|
||||
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user,NewWelfareTypeEnum.ALL_MISSION_FIN.getType(),1));
|
||||
if (sActivityRewardConfig.getSort() == 2) {
|
||||
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.ALL_MISSION_FIN.getType(), 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isUpdate){
|
||||
if (isUpdate) {
|
||||
//更新进度
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
|
||||
sendActivityProgress(sessionByUid, activityMission, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||
private void oldActivityTakeReward(ISession session, int missionId, User user, ActivityMission activityMission, Map<Integer, ActivityProgressInfo> activityProgressInfoMap) throws Exception {
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = null;
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||
//0是领取最后奖励
|
||||
if(missionId==0){
|
||||
if (missionId == 0) {
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> inter : activityProgressInfoMap.entrySet()) {
|
||||
ActivityProgressInfo activityProgressInfo=inter.getValue();
|
||||
int activityMissionId=inter.getKey();
|
||||
SActivityRewardConfig missonConfig= SActivityRewardConfig.getsActivityRewardConfigByMissionId(activityMissionId);
|
||||
if(activityProgressInfo.getState() != 1&&missonConfig.getSort()==1){
|
||||
ActivityProgressInfo activityProgressInfo = inter.getValue();
|
||||
int activityMissionId = inter.getKey();
|
||||
SActivityRewardConfig missonConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(activityMissionId);
|
||||
if (activityProgressInfo.getState() != 1 && missonConfig.getSort() == 1) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
}
|
||||
for(Map.Entry<Integer,ActivityProgressInfo> item: activityProgressInfoMap.entrySet()){
|
||||
SActivityRewardConfig missonConfig= SActivityRewardConfig.getsActivityRewardConfigByMissionId(item.getKey());
|
||||
if (missonConfig.getSort()==1){
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> item : activityProgressInfoMap.entrySet()) {
|
||||
SActivityRewardConfig missonConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(item.getKey());
|
||||
if (missonConfig.getSort() == 1) {
|
||||
item.getValue().setState(2);
|
||||
activityMission.getActivityMissionMap().put(item.getKey(),item.getValue());
|
||||
activityMission.getActivityMissionMap().put(item.getKey(), item.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -129,52 +242,24 @@ public class NewWelfareActivity extends AbstractActivity {
|
|||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfigs.get(0).getReward(), BIReason.TAKE_ACTIVITY_REWARD);
|
||||
build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
reportTakeActivityReward(user,sActivityRewardConfigs.get(0).getReward(),missionId);
|
||||
reportTakeActivityReward(user, sActivityRewardConfigs.get(0).getReward(), missionId);
|
||||
|
||||
}else{
|
||||
} else {
|
||||
//领取第三个奖励用
|
||||
if(!activityProgressInfoMap.containsKey(missionId)||activityProgressInfoMap.get(missionId).getState()!=3){
|
||||
if (!activityProgressInfoMap.containsKey(missionId) || activityProgressInfoMap.get(missionId).getState() != 3) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
//领过了
|
||||
activityProgressInfoMap.get(missionId).setState(1);
|
||||
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||
if(sActivityRewardConfig==null){
|
||||
if (sActivityRewardConfig == null) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
sendActivityProgress(session, activityMission, null);
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sActivityRewardConfig.getReward(), BIReason.TAKE_ACTIVITY_REWARD);
|
||||
build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
reportTakeActivityReward(user,sActivityRewardConfig.getReward(),missionId);
|
||||
reportTakeActivityReward(user, sActivityRewardConfig.getReward(), missionId);
|
||||
}
|
||||
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getAllMissRewards(User user, ISession session, List<int[][]> itemAttrs){
|
||||
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
|
||||
if (sGlobalActivity == null || !user.getActivityManager().getActivityMissionMap().containsKey(id)) {
|
||||
return;
|
||||
}
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||
for(ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()){
|
||||
if(activityProgressInfo.getState() != 1){
|
||||
return;
|
||||
}
|
||||
}
|
||||
for(ActivityProgressInfo activityProgressInfo : activityProgressInfoMap.values()){
|
||||
activityProgressInfo.setState(2);
|
||||
}
|
||||
|
||||
for(Map.Entry<Integer,ActivityProgressInfo> item: activityProgressInfoMap.entrySet()){
|
||||
item.getValue().setState(2);
|
||||
activityMission.getActivityMissionMap().put(item.getKey(),item.getValue());
|
||||
}
|
||||
|
||||
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
|
||||
itemAttrs.add(sActivityRewardConfigs.get(0).getReward());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import com.ljsd.jieling.network.session.ISession;
|
|||
import config.SActivityRewardConfig;
|
||||
import manager.STableManager;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
class RechargeSumDayActivity extends AbstractActivity {
|
||||
|
||||
public RechargeSumDayActivity(int id) {
|
||||
|
|
@ -26,24 +28,33 @@ class RechargeSumDayActivity extends AbstractActivity {
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (user.getPlayerInfoManager().getRechargedaily() > 0 ) {//充值0.99不触发修改
|
||||
// 该活动已被替换,未参与的玩家不再累计
|
||||
if (activityMission.getV() <= 0 || activityMission.getV() >= 15) {
|
||||
return;
|
||||
}
|
||||
if (user.getPlayerInfoManager().getRechargedaily() >= 6 ) {//充值小于六块不触发修改
|
||||
// SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]
|
||||
activityMission.setV(activityMission.getV() + 1);
|
||||
}
|
||||
if (activityMission.getV() >= SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).size()) {
|
||||
ActivityLogic.getInstance().initMissionInfo(activityMission,id);
|
||||
}
|
||||
// if (activityMission.getV() >= SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).size()) {
|
||||
// ActivityLogic.getInstance().initMissionInfo(activityMission,id);
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
void updateProgress(ActivityMission activityMission, int count) {
|
||||
|
||||
int missionId =STableManager.getFigureConfig(ActivityStaticConfig.class).getRechargeDaySum().get(activityMission.getV() + 1);
|
||||
ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId);
|
||||
Map<Integer, ActivityProgressInfo> activityMissionMap = activityMission.getActivityMissionMap();
|
||||
ActivityProgressInfo activityProgressInfo = activityMissionMap.get(missionId);
|
||||
if (activityProgressInfo == null || activityProgressInfo.getProgrss() == 1) {
|
||||
return;
|
||||
}
|
||||
if (count>0 ) {//只要是充值就算
|
||||
// 该活动已被替换,未参与的玩家不再累计
|
||||
if (activityMission.getV() <= 0 || activityMission.getV() >= 15) {
|
||||
return;
|
||||
}
|
||||
if (count>=6000 ) {//大于6块钱才算
|
||||
//>= SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId).getValues()[0][0]
|
||||
activityProgressInfo.setProgrss(1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,21 @@
|
|||
package com.ljsd.jieling.logic.activity;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import config.SActivityRewardConfig;
|
||||
import rpc.protocols.CommonProto;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
class RechargeTotalActivity extends AbstractActivity {
|
||||
|
||||
public RechargeTotalActivity(int id) {
|
||||
|
|
@ -27,4 +35,33 @@ class RechargeTotalActivity extends AbstractActivity {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CommonProto.ActivityInfo.MissionInfo> getAllMissInfo(User user, ActivityMission activityMission, Set<Integer> filter) {
|
||||
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
|
||||
List<CommonProto.ActivityInfo.MissionInfo> missionInfos = new ArrayList<>(activityProgressInfoMap.size());
|
||||
long openTime = TimeUtils.stringToTimeLong2(GameApplication.serverConfig.getOpenTime());
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> missionProgress : activityProgressInfoMap.entrySet()) {
|
||||
if (filter != null && !filter.contains(missionProgress.getKey())) {
|
||||
continue;
|
||||
}
|
||||
Integer missionId = missionProgress.getKey();
|
||||
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
|
||||
if (sActivityRewardConfig == null) {
|
||||
continue;
|
||||
}
|
||||
if(id == ActivityType.RechargeTotal){
|
||||
// 2021-12-22 09:00:00 之后开的服,首充不显示累充满100元任务
|
||||
if (openTime > 1640134800000L) {
|
||||
int value = sActivityRewardConfig.getValues()[0][0];
|
||||
if (value == 100) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
ActivityProgressInfo activityProgressInfo = missionProgress.getValue();
|
||||
missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build());
|
||||
}
|
||||
return missionInfos;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,6 +152,10 @@ public class SuperFundActivity extends AbstractActivity {
|
|||
private void updateState(User user) throws Exception {
|
||||
// 活动信息
|
||||
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
if(mission == null){
|
||||
LOGGER.info("updateState 玩家id ={},activityId={}",user.getId(),id);
|
||||
return;
|
||||
}
|
||||
if (mission.getV() != 2){
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@ public enum NewWelfareTypeEnum {
|
|||
RECHARGE_BUY(3),
|
||||
EXPLORE(4),//极速探索n次
|
||||
UPSTAR(5),//指定英雄升级至x星
|
||||
ALL_MISSION_FIN(6)//sort为2所有任务完成
|
||||
ALL_MISSION_FIN(6),//sort为2所有任务完成
|
||||
BUY_1106(7),//购买1106礼包
|
||||
;
|
||||
|
||||
private int type;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.ljsd.jieling.logic.activity.eventhandler;
|
||||
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.logic.activity.IEventHandler;
|
||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
|
|
@ -19,7 +20,7 @@ public class SummonTreasureHandler implements IEventHandler {
|
|||
}
|
||||
SummonTreasureEvent event1 = (SummonTreasureEvent) event;
|
||||
User user = UserManager.getUser(event1.getUid());
|
||||
if (event1.getStar() == 5){
|
||||
if (event1.getStar() == GlobalsDef.WUJINGMIBAO_STAR){
|
||||
user.getPlayerInfoManager().setGetFiveStarHeroNum(user.getPlayerInfoManager().getGetFiveStarHeroNum()+event1.getNum());
|
||||
Poster.getPoster().dispatchEvent(new SummonTreasureActivityEvent(user.getId()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ public class UserManager {
|
|||
playerManager.setIp(ip);
|
||||
playerManager.setChannel_id(channle_id);
|
||||
playerManager.setBundle_id(bundle_id);
|
||||
playerManager.setVersionCode(GlobalsDef.VERSION_CODE);
|
||||
int headFrameId = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getDefaultPicture();
|
||||
playerManager.setHeadFrame(headFrameId);
|
||||
playerManager.putHeadFrameValidTime(headFrameId,0L);
|
||||
|
|
|
|||
|
|
@ -255,7 +255,6 @@ public class HeroLogic {
|
|||
|
||||
|
||||
public void random(ISession session, int type) throws Exception {
|
||||
long time = System.currentTimeMillis();
|
||||
int uid = session.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
SLotterySetting sLotterySetting = STableManager.getConfig(SLotterySetting.class).get(type);
|
||||
|
|
@ -1548,8 +1547,11 @@ public class HeroLogic {
|
|||
throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT);
|
||||
}
|
||||
}
|
||||
|
||||
if (needTotalHeroNums != (removeHeroIds.size() + removeItemMap.size())) {
|
||||
int itemNum = 0;
|
||||
for (Integer value : removeItemMap.values()) {
|
||||
itemNum += value;
|
||||
}
|
||||
if (needTotalHeroNums != (removeHeroIds.size() + itemNum)) {
|
||||
LOGGER.error("hero num not enough");
|
||||
throw new ErrorCodeException(ErrorCode.HERO_UN_MATCH);
|
||||
}
|
||||
|
|
@ -1644,6 +1646,9 @@ public class HeroLogic {
|
|||
}
|
||||
hero.upStar(1);
|
||||
user.getHeroManager().addHeroHandBook(hero.getTemplateId(),hero.getStar());
|
||||
if (hero.getStar() == GlobalsDef.WUJINGMIBAO_STAR){
|
||||
Poster.getPoster().dispatchEvent(new SummonTreasureEvent(user.getId(),hero.getStar(),1));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -3027,7 +3032,7 @@ public class HeroLogic {
|
|||
}
|
||||
|
||||
Map<Integer, Long> heroSkillAdMap = new HashMap<>();
|
||||
heroSkillList.forEach(skill -> {
|
||||
for (Integer skill : heroSkillList) {
|
||||
SPassiveSkillLogicConfig config = SPassiveSkillLogicConfig.getConfig(skill);
|
||||
if (null != config.getValue() && config.getValue().length > 2 && config.getValue()[2] != 4) {
|
||||
PassiveskillCalEnum passiveskillCalEnum = PassiveskillCalEnum.calEnumMap.get(config.getType());
|
||||
|
|
@ -3035,7 +3040,7 @@ public class HeroLogic {
|
|||
passiveskillCalEnum.getPassiveSkillProcessor().process(config, hero, heroSkillAdMap);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (!heroSkillAdMap.isEmpty()) {
|
||||
combinedAttribute(heroSkillAdMap, heroAllAttribute);
|
||||
|
|
@ -4022,6 +4027,107 @@ public class HeroLogic {
|
|||
MessageUtil.sendMessage(session, 1, responseMsgId, build, true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 神将回退
|
||||
* 仅限6-9星神将
|
||||
* @param session
|
||||
* @param heroId
|
||||
* @throws Exception
|
||||
*/
|
||||
public void heroReturn(ISession session, String heroId) throws Exception {
|
||||
int uid = session.getUid();
|
||||
int responseMsgId = MessageTypeProto.MessageType.HERO_RETURN_RESPONSE_VALUE;
|
||||
User user = UserManager.getUser(uid);
|
||||
Hero hero = user.getHeroManager().getHero(heroId);
|
||||
if (hero == null || hero.getOriginalLevel() != 1) {
|
||||
throw new ErrorCodeException(ErrorCode.HERO_RETURN_ONLY_LEVEL_ONE);
|
||||
}
|
||||
String recallCostDiamond = SSpecialConfig.getStringValue(SSpecialConfig.RecallCostDiamond);
|
||||
Map<Integer, Integer> cost = new HashMap<>(1);
|
||||
if (recallCostDiamond != null && !recallCostDiamond.isEmpty()) {
|
||||
String[] split = recallCostDiamond.split("#");
|
||||
cost.put(Integer.parseInt(split[0]), Integer.parseInt(split[1]));
|
||||
boolean b = ItemUtil.checkCost(user, cost);
|
||||
if (!b) {
|
||||
throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT);
|
||||
}
|
||||
}
|
||||
SCHero scHero = SCHero.sCHero.get(hero.getTemplateId());
|
||||
int[][] returnBook = scHero.getReturnBook();
|
||||
if (returnBook == null || returnBook.length == 0) {
|
||||
throw new ErrorCodeException(ErrorCode.HERO_RETURN_CAN_NOT);
|
||||
}
|
||||
List<int[]> returnPercent = new ArrayList<>(5);
|
||||
for (int i = 0; i < returnBook.length; i++) {
|
||||
if (returnBook[i][0] == hero.getStar()) {
|
||||
returnPercent.add(returnBook[i]);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (returnPercent.isEmpty()) {
|
||||
throw new ErrorCodeException(ErrorCode.HERO_RETURN_CAN_NOT);
|
||||
}
|
||||
Map<Integer, Integer> dropMap = new HashMap<>();
|
||||
// 法宝归元
|
||||
if (hero.getEspecialEquipLevel() > 0) {
|
||||
Map<Integer, Integer> dropTempMap = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero);
|
||||
if (dropTempMap != null) {
|
||||
dropTempMap.forEach((k, v) -> dropMap.put(k, dropMap.getOrDefault(k, 0) + v));
|
||||
hero.updateEspecial(1);
|
||||
}
|
||||
}
|
||||
// 卸下魂印
|
||||
Map<Integer, Integer> soulEquipByPositionMap = hero.getSoulEquipByPositionMap();
|
||||
for (Integer value : soulEquipByPositionMap.values()) {
|
||||
dropMap.put(value, 1);
|
||||
}
|
||||
|
||||
for (int[] ints : returnPercent) {
|
||||
for (int i = 1; i < ints.length; i++) {
|
||||
SHeroRankupGroup sHeroRankupGroup=STableManager.getConfig(SHeroRankupGroup.class).get(ints[i]);
|
||||
if (sHeroRankupGroup == null) {
|
||||
continue;
|
||||
}
|
||||
i++;
|
||||
int isSame = sHeroRankupGroup.getIssame();
|
||||
// int starLimit = sHeroRankupGroup.getStarLimit();
|
||||
// int isSameClan = sHeroRankupGroup.getIsSameClan();
|
||||
int isId = sHeroRankupGroup.getIsId();
|
||||
if (isSame == 1) {
|
||||
dropMap.put(hero.getTemplateId(), ints[i]);
|
||||
}
|
||||
if (isId != 0) {
|
||||
dropMap.put(isId, ints[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
ItemUtil.itemCost(user, cost, BIReason.HERO_RETURN, hero.getTemplateId());
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(dropMap), BIReason.HERO_RETURN);
|
||||
if (!soulEquipByPositionMap.isEmpty()) {
|
||||
List<CommonProto.Item> itemlistList = drop.getItemlistList();
|
||||
Set<Integer> needRemove = new HashSet<>(soulEquipByPositionMap.size());
|
||||
for (int i = 0; i < itemlistList.size(); i++) {
|
||||
CommonProto.Item item = itemlistList.get(i);
|
||||
if (soulEquipByPositionMap.values().contains(item.getItemId())) {
|
||||
needRemove.add(i);
|
||||
}
|
||||
}
|
||||
for (Integer index : needRemove) {
|
||||
drop.removeItemlist(index);
|
||||
}
|
||||
}
|
||||
hero.setLevel(1);
|
||||
hero.setBreakId(0);
|
||||
hero.setStar(5);
|
||||
//鸿蒙阵
|
||||
addOrUpdateHongmeng(session);
|
||||
HeroInfoProto.HeroReturnResponse build = HeroInfoProto.HeroReturnResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session, 1, responseMsgId, build, true);
|
||||
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(uid));
|
||||
}
|
||||
|
||||
/**
|
||||
* 法宝归元
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.ljsd.jieling.logic.ridingSward;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
|
|
@ -231,8 +232,16 @@ public class RidingSwardLogic{
|
|||
if (startTime == 0 || endTime == 0) {
|
||||
// 初始化活动数据
|
||||
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(proto.getActivityId());
|
||||
startTime = (int) (TimeUtils.stringToTimeLong(activity.getStartTime(), "yyyyMMdd HHmmss")/1000);
|
||||
endTime = (int) (TimeUtils.stringToTimeLong(activity.getEndtime(), "yyyyMMdd HHmmss")/1000);
|
||||
if(activity.getTime()==ActivityType.OPEN_TYPE_SERVER){
|
||||
String openTime = GameApplication.serverConfig.getOpenTime();
|
||||
long timeStamp2 = TimeUtils.stringToTimeLong2(openTime);
|
||||
startTime = (int)(timeStamp2/1000)+Integer.parseInt(activity.getStartTime());
|
||||
endTime = (int)(timeStamp2/1000)+Integer.parseInt(activity.getEndtime());
|
||||
}
|
||||
if(activity.getTime()==ActivityType.OPEN_TYPE_TIME){
|
||||
startTime = (int) (TimeUtils.stringToTimeLong(activity.getStartTime(), "yyyyMMdd HHmmss")/1000);
|
||||
endTime = (int) (TimeUtils.stringToTimeLong(activity.getEndtime(), "yyyyMMdd HHmmss")/1000);
|
||||
}
|
||||
// 定时器启动
|
||||
getInstance().createExecuteScript();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,10 @@ import com.ljsd.jieling.logic.activity.ActivityType;
|
|||
import com.ljsd.jieling.logic.activity.ActivityTypeEnum;
|
||||
import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic;
|
||||
import com.ljsd.jieling.logic.activity.event.*;
|
||||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.PlayerManager;
|
||||
import com.ljsd.jieling.logic.dao.RechargeInfo;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.VipInfo;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
|
||||
import com.ljsd.jieling.logic.fight.CombatLogic;
|
||||
|
|
@ -224,6 +227,7 @@ public class BuyGoodsNewLogic {
|
|||
//处理特权
|
||||
activePrivilege(user,config);
|
||||
resultRes.setResultCode(1);
|
||||
|
||||
//发送邮件
|
||||
int[] mail = config.getMail();
|
||||
if(config.getPrice()!=0&&mail!=null&&mail.length>1){
|
||||
|
|
@ -329,6 +333,7 @@ public class BuyGoodsNewLogic {
|
|||
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.JADE_DYNASTY_RECHARGE_SUM,(int)(price*1000));
|
||||
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.RECHARGE_SUM_DAY, (int)(user.getPlayerInfoManager().getRechargedaily()*1000) );
|
||||
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FIND_FAIRY_FESTIVAL, (int)(price*1000));
|
||||
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.NEW_WELFARE, (int)(info.getRr()));
|
||||
|
||||
AyyncWorker ayyncWorker = new AyyncWorker(user, true, new AynMissionWorker(GameEvent.RECHARGE_TOTAL,(int)(price*1000))) ;
|
||||
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
|
||||
|
|
@ -377,9 +382,8 @@ public class BuyGoodsNewLogic {
|
|||
if(dropArray!=null && dropArray.length>=1){
|
||||
drop = ItemUtil.drop(user,dropArray, BIReason.DIRECT_BUY);
|
||||
}
|
||||
|
||||
if(type==GiftGoodsType.RED_PACKET){
|
||||
//红包事件
|
||||
//红包事件 和积天豪礼事件
|
||||
if(type==GiftGoodsType.RED_PACKET||type==GiftGoodsType.RechargeSumDay){
|
||||
Poster.getPoster().dispatchEvent(new BuyGoodsDirectEvent(user.getId(),config.getId()));
|
||||
}
|
||||
if(type==GiftGoodsType.SKY_TREASURE){
|
||||
|
|
@ -405,6 +409,11 @@ public class BuyGoodsNewLogic {
|
|||
WeekCardLogic.getInstance().buyWeekCard(user,config.getId());
|
||||
WeekCardLogic.getInstance().sendWeekCardInitInfo(session);
|
||||
}
|
||||
//礼包开启活动
|
||||
if(type ==GiftGoodsType.DailyPreferentialGift){
|
||||
AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(ActivityType.DAILY_PREFERENTIAL_GIFT);
|
||||
abstractActivity.initActivity(user);
|
||||
}
|
||||
if(drop!=null&&session!=null){
|
||||
PlayerInfoProto.DirectBuyIndication build = PlayerInfoProto.DirectBuyIndication.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.DIRECT_BUY_GOODS_INDICATION_VALUE,build,true);
|
||||
|
|
@ -848,9 +857,14 @@ public class BuyGoodsNewLogic {
|
|||
|
||||
public static CommonProto.GiftGoodsInfo buildGoodsInfo(AbstractWelfareBag bag){
|
||||
SRechargeCommodityNewConfig configById = SRechargeCommodityNewConfig.getConfigById(bag.getModId());
|
||||
// 配置表里已删除的礼包 删除
|
||||
if (configById == null) {
|
||||
return null;
|
||||
}
|
||||
// 礼包类型已更改的删除
|
||||
if (bag.getType() != configById.getOtype()) {
|
||||
return null;
|
||||
}
|
||||
CommonProto.GiftGoodsInfo.Builder builder = CommonProto.GiftGoodsInfo.newBuilder();
|
||||
builder.setGoodsId(bag.getModId());
|
||||
builder.setBuyTimes(bag.getBuyTimes());
|
||||
|
|
|
|||
|
|
@ -14,5 +14,8 @@ public interface GiftGoodsType {
|
|||
int SUN_LONG = 11; //豪华基金
|
||||
int SKY_TREASURE = 12; //天宫秘宝
|
||||
int ENDLESS_TREASURE = 14;//无尽秘宝
|
||||
int DailyPreferentialGift = 17 ;//每日特惠礼包
|
||||
int RechargeSumDay = 18 ;//超值返利礼包(在积天豪礼活动里购买)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,12 @@ public class PerpetualWelfareBag extends AbstractWelfareBag {
|
|||
setStartTime(TimeUtils.getCurWeekdayStartTime(1,0));
|
||||
setRefreshTime(TimeUtils.getCurWeekdayStartTime(1,0) + TimeUtils.WEEK);
|
||||
}else if(config.getTime() == 8){//自然月
|
||||
setStartTime(TimeUtils.getCurMonthStartTime(1));
|
||||
//TODO 不支持礼包每天刷新 用类型8有瑕疵 之后容错
|
||||
if(config.getId() == 1005 || config.getId() == 1006|| config.getId() == 1007){
|
||||
TimeUtils.getAppointTime(0);
|
||||
}else{
|
||||
setStartTime(TimeUtils.getCurMonthStartTime(1));
|
||||
}
|
||||
setRefreshTime(TimeUtils.getMonthStartTime(1,1));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public class FightDataUtil {
|
|||
|
||||
LuaValue LuaTable = new LuaTable();
|
||||
LuaTable.set("uid",data);
|
||||
// LuaTable.set("enemyData", getEnemyData(monsterTeamList));
|
||||
// LuaTable.set("enemyData", getEnemyData(monsterTeamList));
|
||||
//
|
||||
// if (data.equals("") || data==null){
|
||||
// return new LuaTable();
|
||||
|
|
@ -99,6 +99,7 @@ public class FightDataUtil {
|
|||
SCHero hero = SCHero.getsCHero().get(sMonster.getMonsterId());
|
||||
if(hero!=null){
|
||||
unitData.set("job",hero.getJob());
|
||||
unitData.set("star",hero.getStar());
|
||||
}
|
||||
if (unitSkill.length==1){
|
||||
unitData.set("skill", getSkill(unitSkill[0],sMonster.getSkinId()));
|
||||
|
|
@ -389,6 +390,7 @@ public class FightDataUtil {
|
|||
unitData.set("property", getProperty(property));
|
||||
unitData.set("skinId",data.getSkinId());
|
||||
unitData.set("job",hero.getJob());
|
||||
unitData.set("star",data.getStar());
|
||||
return unitData;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -395,7 +395,7 @@ public class ItemUtil {
|
|||
getMap((int)items[0],items[1],itemObj,1);
|
||||
}
|
||||
}
|
||||
private static void selectDrop(User user, SRewardGroup sRewardGroup,ItemMap itemObj, float dropRatio)throws ErrorCodeException {
|
||||
public static void selectDrop(User user, SRewardGroup sRewardGroup,ItemMap itemObj, float dropRatio)throws ErrorCodeException {
|
||||
String dropInfo = dropRewardMap.get(sRewardGroup.getId());
|
||||
String rewardStr = dropInfo.split("\\|")[0];
|
||||
String weight = dropInfo.split("\\|")[1];
|
||||
|
|
@ -544,7 +544,8 @@ public class ItemUtil {
|
|||
private static void getMap(int itemId ,long itemNum,ItemMap itemObj,float dropRatio) throws ErrorCodeException{
|
||||
SItem sItem = SItem.getsItemMap().get(itemId);
|
||||
if(sItem==null){
|
||||
throw new ErrorCodeException("SItem配置不存在 id:"+itemId);
|
||||
LOGGER.info("getMap SItem配置不存在 id:{}", itemId);
|
||||
return;
|
||||
}
|
||||
int itemType =getItemType(sItem);
|
||||
long amount = MathUtils.numRount((itemNum * MathUtils.floatToDouble(dropRatio)));
|
||||
|
|
@ -592,6 +593,7 @@ public class ItemUtil {
|
|||
case GlobalItemType.TRUMP_CHIP:
|
||||
case GlobalItemType.LIFE_STONE:
|
||||
case GlobalItemType.TRANSFORMATION_CARD:
|
||||
case GlobalItemType.HOOK_PROP:
|
||||
itemType = GlobalItemType.ITEM;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -1161,6 +1163,19 @@ public class ItemUtil {
|
|||
ItemManager itemManager = user.getItemManager();
|
||||
Map<Integer, Item> itemMap = itemManager.getItemMap();
|
||||
boolean needUpdateHero = true;
|
||||
Item item1 = itemMap.get(GlobalsDef.LUOFUZHENG_MONEY);
|
||||
if (item1 != null && item1.getItemNum() > 0) {
|
||||
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("msarenashopchange_mile_title");
|
||||
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("msarenashopchange_mile_txt", new Object[]{item1.getItemNum(), item1.getItemNum()}, new int[]{0,0}, "#");
|
||||
MailLogic.getInstance().sendMail(user.getId(), title, content, "24#" + item1.getItemNum(), TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME);
|
||||
|
||||
Map<Integer, Integer> map = new HashMap<>(1);
|
||||
map.put(item1.getItemId(), (int) item1.getItemNum());
|
||||
useItem(user, map, BIReason.ITEM_RETURN, 0);
|
||||
itemMap.remove(GlobalsDef.LUOFUZHENG_MONEY);
|
||||
|
||||
}
|
||||
if (itemMap.size() !=0 ){
|
||||
for (Map.Entry<Integer, Item> entry :itemMap.entrySet()){
|
||||
|
||||
|
|
@ -1354,6 +1369,10 @@ public class ItemUtil {
|
|||
SItem sItem = SItem.getsItemMap().get(entry.getKey());
|
||||
extraDropAop(user,dropBuilder,sItem);
|
||||
}
|
||||
// 回退所得神将不更新任务或活动
|
||||
if (reason == BIReason.HERO_RETURN) {
|
||||
continue;
|
||||
}
|
||||
fiveStarEvent(user,entry.getKey());
|
||||
if(reason != BIReason.HERO_RANDOM){
|
||||
fiveStarPushByCombine(user,entry.getKey(),count);
|
||||
|
|
@ -1389,11 +1408,18 @@ public class ItemUtil {
|
|||
PlayerManager playerInfoManager = user.getPlayerInfoManager();
|
||||
int[] heroStar = SItem.getsItemMap().get(cardId).getHeroStar();
|
||||
Hero hero = new Hero(user.getId(),heroStar[0],heroStar[1]);
|
||||
Poster.getPoster().dispatchEvent(new SummonTreasureEvent(user.getId(),hero.getStar(),1));
|
||||
if (reason != BIReason.HERO_RETURN) {
|
||||
if (hero.getStar() == GlobalsDef.WUJINGMIBAO_STAR){
|
||||
Poster.getPoster().dispatchEvent(new SummonTreasureEvent(user.getId(),hero.getStar(),1));
|
||||
}
|
||||
}
|
||||
heroManager.addHero(hero);
|
||||
// 鸿蒙阵推送
|
||||
HeroLogic.getInstance().addOrUpdateHongmeng(OnlineUserManager.getSessionByUid(user.getId()));
|
||||
heroList.add(CBean2Proto.getHero(hero));
|
||||
if (reason == BIReason.HERO_RETURN) {
|
||||
return;
|
||||
}
|
||||
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||
if (scHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_content_parm)) { //策划资质改成星级
|
||||
String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("lamp_lottery_content", new Object[]{playerInfoManager.getNameColor(), playerInfoManager.getNickName(), scHero.getStar(), scHero.getReadingName()},new int[]{0,0,0,1});
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ public class SCHero implements BaseConfig{
|
|||
|
||||
private Map<Integer, List<Integer>> skillListByStar;
|
||||
|
||||
private int[][] returnBook;
|
||||
|
||||
// 觉醒增加的技能属性
|
||||
private Map<Integer,TreeMap<Integer,List<Integer>>> awakSkillMap;
|
||||
|
||||
|
|
@ -378,4 +380,8 @@ public class SCHero implements BaseConfig{
|
|||
public int getIsSoulOpen() {
|
||||
return isSoulOpen;
|
||||
}
|
||||
|
||||
public int[][] getReturnBook() {
|
||||
return returnBook;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,4 +101,15 @@ public class SErrorCodeEerverConfig implements BaseConfig {
|
|||
return value.getvalue()+str.toString();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static String getFormatMessage(String key, Object[] obj) {
|
||||
SErrorCodeEerverConfig value = errorCodeMap.get(key);
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
String string = MessageFormat.format(value.getvalue(), obj);
|
||||
return string;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -31,7 +31,8 @@ public class SItem implements BaseConfig {
|
|||
private int[][] extraReward;
|
||||
|
||||
private int recycle;
|
||||
|
||||
private int[][] useGain;
|
||||
private int useLevel;
|
||||
private String name;
|
||||
|
||||
@Override
|
||||
|
|
@ -123,4 +124,12 @@ public class SItem implements BaseConfig {
|
|||
public int getRecycle() {
|
||||
return recycle;
|
||||
}
|
||||
|
||||
public int[][] getUseGain() {
|
||||
return useGain;
|
||||
}
|
||||
|
||||
public int getUseLevel() {
|
||||
return useLevel;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,6 +86,8 @@ public class SSpecialConfig implements BaseConfig {
|
|||
|
||||
public static final String REPLACE_ITEM_ID = "replace_item_id";//置换玉道具ID
|
||||
public static final String REPLACE_COST = "replace_cost";//置换玉消耗
|
||||
public static final String RecallCostDiamond = "RecallCostDiamond";// 回退消耗妖晶数量
|
||||
|
||||
|
||||
public static final String XUANYUAN_OPEN_TIME = "xuanyuan_open_time";//轩辕开始时间(星期)
|
||||
public static final String EXCHANGE_FORCE_TYPE = "exchange_focus_type";//货币转换类型
|
||||
|
|
|
|||
Loading…
Reference in New Issue