Merge branch 'master_test_gn' into master_test_gn_mcz

back_recharge
mengchengzhen 2021-03-29 18:09:37 +08:00
commit 2d9ad53842
26 changed files with 520 additions and 166 deletions

View File

@ -7,6 +7,7 @@ import com.ljsd.common.mogodb.MongoUpdateImp;
import com.ljsd.jieling.db.mongo.core.ServerAreaInfoManager; import com.ljsd.jieling.db.mongo.core.ServerAreaInfoManager;
import com.ljsd.jieling.logic.dao.ServerConfig; import com.ljsd.jieling.logic.dao.ServerConfig;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl; import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.mongodb.*; import com.mongodb.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -1332,7 +1332,7 @@ public class MapLogic {
.newBuilder() .newBuilder()
.setResult(resultCode) .setResult(resultCode)
.setEnventDrop(dropBuilder) .setEnventDrop(dropBuilder)
.addAllRemainHpList(remainHp) // .addAllRemainHpList(remainHp)
.setEssenceValue(mapManager.getTrialInfo().getEnergy()) .setEssenceValue(mapManager.getTrialInfo().getEnergy())
.setLastXY(mapManager.getLastXY()) .setLastXY(mapManager.getLastXY())
.build(); .build();
@ -1384,7 +1384,7 @@ public class MapLogic {
} }
fastFightResponse.setEnventDrop(drop.build()); fastFightResponse.setEnventDrop(drop.build());
fastFightResponse.setResult(resultCode); fastFightResponse.setResult(resultCode);
fastFightResponse.addAllRemainHpList(remainHp); // fastFightResponse.addAllRemainHpList(remainHp);
fastFightResponse.setEssenceValue(mapManager.getTrialInfo().getEnergy()); fastFightResponse.setEssenceValue(mapManager.getTrialInfo().getEnergy());
fastFightResponse.build(); fastFightResponse.build();

View File

@ -247,7 +247,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
/** /**
* *
*/ */
private void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, int missionId) { public void checkAndSetProgress(ActivityMission activityMission, ActivityProgressInfo activityProgressInfo, int missionId) {
activityProgressInfo.setState(ActivityType.HAD_TAKED); activityProgressInfo.setState(ActivityType.HAD_TAKED);
activityMission.getActivityMissionMap().put(missionId, activityProgressInfo); activityMission.getActivityMissionMap().put(missionId, activityProgressInfo);
} }

View File

@ -78,7 +78,8 @@ public interface ActivityType {
int ITEMS_STORE= 6000;//百宝商会 int ITEMS_STORE= 6000;//百宝商会
int TRIAL_EXPERT = 70;//幻境达人 int TRIAL_EXPERT = 70;//幻境达人
int SHEJI_ACTIVITY = 60;//社稷大典 int SHEJI_ACTIVITY = 60;//社稷大典
int GOOD_LUCK= 61;//扭转乾坤 int GOOD_LUCK= 61;//扭转乾坤
int COW_FLY_SKY = 62;//牛气冲天
int SUB_ACTIVITY = 8000;//易经宝库 int SUB_ACTIVITY = 8000;//易经宝库
int SKIN_RECHARGE_ACTIVITY = 71; int SKIN_RECHARGE_ACTIVITY = 71;

View File

@ -66,6 +66,7 @@ public enum ActivityTypeEnum {
DEMON_TREASURE(ActivityType.DEMON_TREASURE,LimitRandomSpecialMonsterActivity::new), DEMON_TREASURE(ActivityType.DEMON_TREASURE,LimitRandomSpecialMonsterActivity::new),
NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new), NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new),
GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new), GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new),
COW_FLY_SKY(ActivityType.COW_FLY_SKY,CowFlySkyActivity::new),
; ;
private int type; private int type;
@ -95,16 +96,16 @@ public enum ActivityTypeEnum {
return abstractActivity; return abstractActivity;
} }
//相同类型不同活动id需要处理处理多次事件 /**
* id
* @param id
* @return
*/
public static AbstractActivity getActicityType(int id) { public static AbstractActivity getActicityType(int id) {
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
// for (ActivityTypeEnum activityType:ActivityTypeEnum.values()) { if (activityEnumMap.containsKey(sGlobalActivity.getType())){
// if(activityType.getType()==sGlobalActivity.getType()){
// return activityType.toActivity(id);
// }
// }
if (activityEnumMap.containsKey(sGlobalActivity.getType()))
return activityEnumMap.get(sGlobalActivity.getType()).toActivity(id); return activityEnumMap.get(sGlobalActivity.getType()).toActivity(id);
}
return null; return null;
} }

View File

@ -0,0 +1,103 @@
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.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
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.mission.GameEvent;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SActivityRewardConfig;
import config.SArroGantFly;
import config.SGlobalActivity;
import manager.STableManager;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class CowFlySkyActivity extends AbstractActivity {
CowFlySkyActivity(int id) {
super(id);
}
@Override
public void initActivity(User user) throws Exception {
ActivityMission mission = new ActivityMission();
List<SActivityRewardConfig> rewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
ArrayList<Integer> integers = new ArrayList<>(rewardConfigs.size());
rewardConfigs.forEach(v->integers.add(v.getId()));
ActivityLogic.getInstance().initOtherMission(mission, integers);
user.getActivityManager().getActivityMissionMap().put(id, mission);
user.getUserMissionManager().onGameEvent(user, GameEvent.COW_FLY_SKY_REFRESH, id);
LOGGER.info("牛气冲天活动刷新...");
}
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
User user = UserManager.getUser(session.getUid());
//checkAndUpdate cfg
SActivityRewardConfig config = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId);
if (config == null || config.getActivityId() != id) {
throw new ErrorCodeException(ErrorCode.CFG_NULL,"功能不存在:"+missionId);
}
// 验证数据库中 任务信息是否正确
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if (mission == null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE,"数据错误");
}
if (mission.getActivityState() != ActivityType.OPEN_STATE || mission.getOpenType() == 0) {
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN,"活动未开启");
}
ActivityProgressInfo progressInfo = mission.getActivityMissionMap().get(missionId);
if (progressInfo == null || progressInfo.getState() == ActivityType.HAD_TAKED) {
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
}
// 是否满足领取条件值
if (!checkValue(user,config.getValues())) {
LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", session.getUid(), config.getId(), progressInfo.getProgrss(), config.getValues());
throw new ErrorCodeException(ErrorCode.newDefineCode("未达到领取条件"));
}
// 更改任务状态
checkAndSetProgress(mission,progressInfo,missionId);
//up miss
int[][] reward = config.getReward();
// reward
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, mission, null);
// 打点上报
reportTakeActivityReward(user,reward,missionId);
return true;
}
private boolean checkValue(User user,int[][] value){
Item item = user.getItemManager().getItem(value[0][0]);
return item.getItemNum() >= value[1][0];
}
@Override
public void onActivityEndOnMySelf(User user) throws Exception {
// 牛气冲天 活动结束会清空道具
int removeItemId = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0).getValues()[0][0];
Item item = user.getItemManager().getItem(removeItemId);
if (item != null) {
int[][] cost = new int[1][];
cost[0] = new int[]{item.getItemId(), (int) item.getItemNum()};
ItemUtil.itemCost(user, cost, BIReason.EXCHANGE_ACTIVITY_CLOSE, id);
}
}
}

View File

@ -47,13 +47,6 @@ public class DefaultEmptyActivity extends AbstractActivity{
sevenHappyMissionType.getFinishMissionIds().remove(sTreasureTaskConfig.getId()); sevenHappyMissionType.getFinishMissionIds().remove(sTreasureTaskConfig.getId());
sevenHappyMissionType.getRewardedMissionIds().set(sTreasureTaskConfig.getId()); sevenHappyMissionType.getRewardedMissionIds().set(sTreasureTaskConfig.getId());
user.getUserMissionManager().setSevenHappyMissionType(sevenHappyMissionType); user.getUserMissionManager().setSevenHappyMissionType(sevenHappyMissionType);
/* SSevenDaysScore sSevenDaysScore = SSevenDaysScore.SSevenDaysScoreByActivityIdAndScoreMap.get(id).get(senvenScores);
if(null!=sSevenDaysScore){
String mailReward = ItemUtil.getMailReward(sSevenDaysScore.getReward());
String title= SErrorCodeEerverConfig.getI18NMessage("opencarnival_activity_"+id+"_title");
String content = SErrorCodeEerverConfig.getI18NMessage("opencarnival_activity_"+id+"_txt",new String[]{Integer.toString(senvenScores)});
MailLogic.getInstance().sendMail(user.getId(),title,content,mailReward,(int)(System.currentTimeMillis()/1000), Global.MAIL_EFFECTIVE_TIME);
}*/
} }
}else if(sGlobalActivity.getType() == ActivityType.EXCHANGEANDDROP || sGlobalActivity.getType() == ActivityType.NEW_GENERAL_ATTACK){ }else if(sGlobalActivity.getType() == ActivityType.EXCHANGEANDDROP || sGlobalActivity.getType() == ActivityType.NEW_GENERAL_ATTACK){
// 限时兑换和新将来袭活动结束会清空道具 // 限时兑换和新将来袭活动结束会清空道具

View File

@ -27,7 +27,9 @@ public class RemoveEventHeroHandler implements IEventHandler{
} }
Hero hero = userInMem.getHeroManager().getHeroMap().get(heroId); Hero hero = userInMem.getHeroManager().getHeroMap().get(heroId);
Map<String, PropertyItem> equipMap = userInMem.getEquipManager().getEquipMap(); Map<String, PropertyItem> equipMap = userInMem.getEquipManager().getEquipMap();
hero.getEquipByPositionMap().values().forEach(equip->equipMap.get(equip).setHeroId("")); hero.getEquipByPositionMap().values().forEach(equip-> {
equipMap.get(String.valueOf(equip)).setHeroId("");
});
Map<String, Integer> endlessHeroInfo = userInMem.getMapManager().getEndlessMapInfo().getEndlessHeroInfo(); Map<String, Integer> endlessHeroInfo = userInMem.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
if(endlessHeroInfo!=null && endlessHeroInfo.containsKey(heroId)){ if(endlessHeroInfo!=null && endlessHeroInfo.containsKey(heroId)){
endlessHeroInfo.remove(heroId); endlessHeroInfo.remove(heroId);

View File

@ -33,6 +33,7 @@ public class GuilidManager {
} }
public static void removeGuildInfo(GuildInfo guildInfo) throws Exception { public static void removeGuildInfo(GuildInfo guildInfo) throws Exception {
System.out.println("此处删除了工会信息"+guildInfo.getId());
int guildId = guildInfo.getId(); int guildId = guildInfo.getId();
guildInfoMap.remove(guildId); guildInfoMap.remove(guildId);
guildNameInfoMap.remove(guildInfo.getName()); guildNameInfoMap.remove(guildInfo.getName());

View File

@ -54,7 +54,10 @@ public class UserMissionManager extends MongoBase {
private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType(); private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType();
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType(); private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();
private AchieveMissionIdsType achievementMissionTypMap = new AchieveMissionIdsType(); private AchieveMissionIdsType achievementMissionTypMap = new AchieveMissionIdsType();
private JadeDynastyMissionType jadeDynastyMissionType = new JadeDynastyMissionType();//破阵诛仙任务 //破阵诛仙任务
private JadeDynastyMissionType jadeDynastyMissionType = new JadeDynastyMissionType();
// 牛气冲天活动任务
private CowFlySkyMissionType cowFlySkyMissionType = new CowFlySkyMissionType();
//数据累加项 //数据累加项
private CumulationData cumulationData = new CumulationData(); private CumulationData cumulationData = new CumulationData();
@ -69,87 +72,97 @@ public class UserMissionManager extends MongoBase {
private CumulationData jadeDynastyCumulationData = new CumulationData();//破阵诛仙日数据 private CumulationData jadeDynastyCumulationData = new CumulationData();//破阵诛仙日数据
private CumulationData jadeDynastyWeekCumulationData = new CumulationData();//破阵诛仙周数据 private CumulationData jadeDynastyWeekCumulationData = new CumulationData();//破阵诛仙周数据
//触发任务上身 /**
public void openMission(User user,GameEvent event,Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm) throws Exception { *
ISession session= OnlineUserManager.getSessionByUid(user.getId()); * @param user
switch (event){ * @param event
case VIP_LEVLUP:{ * @param missionTypeEnumListMap
int vipLevle= (int)parm[0]; * @param parm
* @throws Exception
*/
public void openMission(User user, GameEvent event, Map<GameMisionType, List<MissionStateChangeInfo>> missionTypeEnumListMap, Object... parm) throws Exception {
ISession session = OnlineUserManager.getSessionByUid(user.getId());
switch (event) {
case VIP_LEVLUP: {
int vipLevle = (int) parm[0];
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevle); SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(vipLevle);
int[] openRules = sVipLevelConfig.getOpenRules(); int[] openRules = sVipLevelConfig.getOpenRules();
for(int missionId:openRules){ for (int missionId : openRules) {
vipMissionIdsType.openMission(user,missionId,missionTypeEnumListMap.get(GameMisionType.VIPMISSION)); vipMissionIdsType.openMission(user, missionId, missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
} }
updateString("vipMissionIdsType",vipMissionIdsType); updateString("vipMissionIdsType", vipMissionIdsType);
break; break;
} }
case DAILY_REFRESH: case DAILY_REFRESH:
Set<Integer> missionIds = SDailyTasksConfig.config.keySet(); Set<Integer> missionIds = SDailyTasksConfig.config.keySet();
int type = (int)parm[0]; int type = (int) parm[0];
if(type == 0){ if (type == 0) {
dailyMissionIdsType.getDoingMissionIds().clear(); dailyMissionIdsType.getDoingMissionIds().clear();
dailyMissionIdsType.getFinishMissionIds().clear(); dailyMissionIdsType.getFinishMissionIds().clear();
dailyMissionIdsType.getRewardedMissionIds().clear(); dailyMissionIdsType.getRewardedMissionIds().clear();
dailyCumulationData = new CumulationData(); dailyCumulationData = new CumulationData();
dailyMissionIdsType.getDoingMissionIds().addAll(missionIds); dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
updateString("dailyCumulationData",dailyCumulationData); updateString("dailyCumulationData", dailyCumulationData);
} }
updateString("dailyMissionIdsType",dailyMissionIdsType); updateString("dailyMissionIdsType", dailyMissionIdsType);
break; break;
case TREASH_REFRESH: case TREASH_REFRESH:
int activityId = (int) parm[0];//当前轮次青龙秘宝的活动ID //当前轮次青龙秘宝的活动ID
int[] refreshIds = resetTreasureTaskInfo(1,activityId,missionTypeEnumListMap,treasureCumulationData); int activityId = (int) parm[0];
int[] refreshIds = resetTreasureTaskInfo(1, activityId, missionTypeEnumListMap, treasureCumulationData);
treasureCumulationData = new CumulationData(); treasureCumulationData = new CumulationData();
int dayRefreshTime=(int) (TimeUtils.getLastOrUnderHour(TimeUtils.now(), 0, 0,false)/1000); int dayRefreshTime = (int) (TimeUtils.getLastOrUnderHour(TimeUtils.now(), 0, 0, false) / 1000);
CommonProto.RefreshTask.Builder task = treasureIndicationBuild(1, refreshIds).setRefreshTime(dayRefreshTime); CommonProto.RefreshTask.Builder task = treasureIndicationBuild(1, refreshIds).setRefreshTime(dayRefreshTime);
PlayerInfoProto.TreasureRefreshIndication indication1 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task.build()).build(); PlayerInfoProto.TreasureRefreshIndication indication1 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task.build()).build();
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication1,true); MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication1, true);
break; break;
case TREASH_WEEK_REFRESH: case TREASH_WEEK_REFRESH:
int aId = (int) parm[0];//当前轮次青龙秘宝的活动ID //当前轮次青龙秘宝的活动ID
int[] weekRefreshIds = resetTreasureTaskInfo(2,aId,missionTypeEnumListMap,treasureWeekCumulationData); int aId = (int) parm[0];
if(weekRefreshIds != null){ int[] weekRefreshIds = resetTreasureTaskInfo(2, aId, missionTypeEnumListMap, treasureWeekCumulationData);
if (weekRefreshIds != null) {
treasureWeekCumulationData = new CumulationData(); treasureWeekCumulationData = new CumulationData();
int weekRefreshTime = (int)(TimeUtils.getNextWeekendStartTime(1,0)/1000); int weekRefreshTime = (int) (TimeUtils.getNextWeekendStartTime(1, 0) / 1000);
user.getPlayerInfoManager().clearVipCount(VipPrivilegeType.DRAGON_TREASURE_SUPPLY); user.getPlayerInfoManager().clearVipCount(VipPrivilegeType.DRAGON_TREASURE_SUPPLY);
CommonProto.RefreshTask.Builder task2= treasureIndicationBuild(2, weekRefreshIds).setRefreshTime(weekRefreshTime); CommonProto.RefreshTask.Builder task2 = treasureIndicationBuild(2, weekRefreshIds).setRefreshTime(weekRefreshTime);
PlayerInfoProto.TreasureRefreshIndication indication2 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task2.build()).build(); PlayerInfoProto.TreasureRefreshIndication indication2 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task2.build()).build();
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication2,true); MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication2, true);
} }
break; break;
case TREASH_MONTH_REFRESH: case TREASH_MONTH_REFRESH:
int aid = (int) parm[0];//当前轮次青龙秘宝的活动ID //当前轮次青龙秘宝的活动ID
int aid = (int) parm[0];
user.getPlayerInfoManager().setTreasureLevel(0); user.getPlayerInfoManager().setTreasureLevel(0);
Item item = user.getItemManager().getItem(Global.TREASURE_SCORE); Item item = user.getItemManager().getItem(Global.TREASURE_SCORE);
if(item!=null){ if (item != null) {
if(item.getItemNum()!=0){ if (item.getItemNum() != 0) {
Map<Integer,Integer> treasureScore = new HashMap<>(); Map<Integer, Integer> treasureScore = new HashMap<>();
treasureScore.put(Global.TREASURE_SCORE, (int)item.getItemNum()); treasureScore.put(Global.TREASURE_SCORE, (int) item.getItemNum());
try { try {
ItemUtil.itemCost(user,treasureScore, BIReason.TREASURE_RESET_CONSUME,1); ItemUtil.itemCost(user, treasureScore, BIReason.TREASURE_RESET_CONSUME, 1);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
treasureMonthCumulationData = new CumulationData(); treasureMonthCumulationData = new CumulationData();
int[] monthRefreshIds1 = resetTreasureTaskInfo(3,aid,missionTypeEnumListMap,treasureMonthCumulationData); int[] monthRefreshIds1 = resetTreasureTaskInfo(3, aid, missionTypeEnumListMap, treasureMonthCumulationData);
// CommonProto.RefreshTask.Builder task3 = treasureIndicationBuild(1, dailyRefreshIds1);
// CommonProto.RefreshTask.Builder task4 = treasureIndicationBuild(2, weekRefreshIds1);
CommonProto.RefreshTask.Builder task5 = treasureIndicationBuild(3, monthRefreshIds1); CommonProto.RefreshTask.Builder task5 = treasureIndicationBuild(3, monthRefreshIds1);
PlayerInfoProto.TreasureRefreshIndication indication3 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task5.build()).build(); PlayerInfoProto.TreasureRefreshIndication indication3 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task5.build()).build();
MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication3,true); MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE, indication3, true);
break; break;
case JADE_DYNASTY_REFRESH: case JADE_DYNASTY_REFRESH:
int jadeAId = (int) parm[0];//当前轮次破阵诛仙的活动ID //当前轮次破阵诛仙的活动ID
int[] mIds = resetJadeDynastyTaskInfo(1,jadeAId,missionTypeEnumListMap,jadeDynastyCumulationData); int jadeAId = (int) parm[0];
jadeDynastyCumulationData = new CumulationData(); resetJadeDynastyTaskInfo(1, jadeAId, missionTypeEnumListMap, jadeDynastyCumulationData);
break; break;
case JADE_DYNASTY_WEEK_REFRESH: case JADE_DYNASTY_WEEK_REFRESH:
int jadeAid = (int) parm[0];//当前轮次破阵诛仙的活动ID //当前轮次破阵诛仙的活动ID
int[] weekMIds = resetJadeDynastyTaskInfo(2,jadeAid,missionTypeEnumListMap,jadeDynastyWeekCumulationData); int jadeAid = (int) parm[0];
if(weekMIds != null){ int[] weekMIds = resetJadeDynastyTaskInfo(2, jadeAid, missionTypeEnumListMap, jadeDynastyWeekCumulationData);
if (weekMIds != null) {
jadeDynastyWeekCumulationData = new CumulationData(); jadeDynastyWeekCumulationData = new CumulationData();
} }
break; break;
@ -160,98 +173,107 @@ public class UserMissionManager extends MongoBase {
sevenHappyMissionType.getFinishMissionIds().clear(); sevenHappyMissionType.getFinishMissionIds().clear();
sevenHappyMissionType.getRewardedMissionIds().clear(); sevenHappyMissionType.getRewardedMissionIds().clear();
List<MissionStateChangeInfo> servenMissionmStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION); List<MissionStateChangeInfo> servenMissionmStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION);
for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){ for (STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs) {
sevenHappyMissionType.getDoingMissionIds().add(sTreasureTaskConfig.getId()); sevenHappyMissionType.getDoingMissionIds().add(sTreasureTaskConfig.getId());
} }
sevenHappyCumulationData= new CumulationData(); sevenHappyCumulationData = new CumulationData();
sevenHappyMissionType.checkAndUpdateMision(user,sTreasureTaskConfigs,servenMissionmStateChangeInfos,sevenHappyCumulationData); sevenHappyMissionType.checkAndUpdateMision(user, sTreasureTaskConfigs, servenMissionmStateChangeInfos, sevenHappyCumulationData);
updateString("sevenHappyMissionType", sevenHappyMissionType); updateString("sevenHappyMissionType", sevenHappyMissionType);
updateString("sevenHappyCumulationData", sevenHappyCumulationData); updateString("sevenHappyCumulationData", sevenHappyCumulationData);
break; break;
case BEGINNER: case BEGINNER:
for(Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()){ for (Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()) {
beginerTaskIdsType.addDoingMission(id); beginerTaskIdsType.addDoingMission(id);
} }
beginCumulationData= new CumulationData(); beginCumulationData = new CumulationData();
updateString("beginerTaskIdsType", beginerTaskIdsType); updateString("beginerTaskIdsType", beginerTaskIdsType);
updateString("beginCumulationData", beginCumulationData); updateString("beginCumulationData", beginCumulationData);
break; break;
case BLOODY_REFRESH: case BLOODY_REFRESH:
Set<Integer> bloodyMissionIds =STableManager.getConfig(SBloodyBattleTask.class).keySet(); Set<Integer> bloodyMissionIds = STableManager.getConfig(SBloodyBattleTask.class).keySet();
bloodyMissionIdsType.getDoingMissionIds().clear(); bloodyMissionIdsType.getDoingMissionIds().clear();
bloodyMissionIdsType.getFinishMissionIds().clear(); bloodyMissionIdsType.getFinishMissionIds().clear();
bloodyMissionIdsType.getRewardedMissionIds().clear(); bloodyMissionIdsType.getRewardedMissionIds().clear();
bloodyMissionIdsType.getDoingMissionIds().addAll(bloodyMissionIds); bloodyMissionIdsType.getDoingMissionIds().addAll(bloodyMissionIds);
updateString("bloodyMissionIdsType",bloodyMissionIdsType); updateString("bloodyMissionIdsType", bloodyMissionIdsType);
break; break;
case ACHIEVE_REFRESH: case ACHIEVE_REFRESH:
Set<Integer> ds =STableManager.getConfig(SAchievementConfig.class).keySet(); Set<Integer> ds = STableManager.getConfig(SAchievementConfig.class).keySet();
achievementMissionTypMap.getDoingMissionIds().clear(); achievementMissionTypMap.getDoingMissionIds().clear();
achievementMissionTypMap.getFinishMissionIds().clear(); achievementMissionTypMap.getFinishMissionIds().clear();
achievementMissionTypMap.getRewardedMissionIds().clear(); achievementMissionTypMap.getRewardedMissionIds().clear();
achievementMissionTypMap.getDoingMissionIds().addAll(ds); achievementMissionTypMap.getDoingMissionIds().addAll(ds);
achievementMap =new CumulationData(); achievementMap = new CumulationData();
updateString("achievementMissionTypMap",achievementMissionTypMap); updateString("achievementMissionTypMap", achievementMissionTypMap);
updateString("achievementMap",achievementMap); updateString("achievementMap", achievementMap);
break; break;
case MISSING_ROOM_REFRESH://天宫寻宝
Map<Integer,Integer> mustAppear = new HashMap<>(); case COW_FLY_SKY_REFRESH:
// 牛气冲天
Set<Integer> arro = STableManager.getConfig(SArroGantFly.class).keySet();
cowFlySkyMissionType.getDoingMissionIds().clear();
cowFlySkyMissionType.getFinishMissionIds().clear();
cowFlySkyMissionType.getRewardedMissionIds().clear();
cowFlySkyMissionType.getDoingMissionIds().addAll(arro);
updateString("cowFlySkyMissionType", cowFlySkyMissionType);
break;
case MISSING_ROOM_REFRESH:
//天宫寻宝
Map<Integer, Integer> mustAppear = new HashMap<>();
List<Integer> mustMissions = new ArrayList<>(); List<Integer> mustMissions = new ArrayList<>();
List<Integer> lockMissions = new ArrayList<>(); List<Integer> lockMissions = new ArrayList<>();
if((int)parm[0]==1){ if ((int) parm[0] == 1) {
//删除已经领取奖励的 //删除已经领取奖励的
missingRoomMissionType.getFinishMissionIds().removeIf(value->missingRoomMissionType.getAllMissingTime().get(value)==-1); missingRoomMissionType.getFinishMissionIds().removeIf(value -> missingRoomMissionType.getAllMissingTime().get(value) == -1);
missingRoomMissionType.getAllMissingTime().values().removeIf(value->value==-1); missingRoomMissionType.getAllMissingTime().values().removeIf(value -> value == -1);
// 任务全部锁定 // 任务全部锁定
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds(); Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
if (lockMissionIds.size() >= 6){ if (lockMissionIds.size() >= 6) {
throw new ErrorCodeException(ErrorCode.LOCK_FILL); throw new ErrorCodeException(ErrorCode.LOCK_FILL);
} }
// 读表 // 读表
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting; SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting;
boolean result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1); boolean result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getTakeOrder()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
if(!result){ if (!result) {
result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1); result = ItemUtil.itemCost(user, new int[][]{sMazeTreasureSetting.getRefreshItem()}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
if(!result){ if (!result) {
int coinRefreshCount = user.getPlayerInfoManager().getVipPrivilageValue(sMazeTreasureSetting.getRefreshVIP()); int coinRefreshCount = user.getPlayerInfoManager().getVipPrivilageValue(sMazeTreasureSetting.getRefreshVIP());
int[][] cost = sMazeTreasureSetting.getCost(); int[][] cost = sMazeTreasureSetting.getCost();
int count = (int)MathUtils.calABX(coinRefreshCount, cost[1]); int count = (int) MathUtils.calABX(coinRefreshCount, cost[1]);
result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1); result = ItemUtil.itemCost(user, new int[][]{new int[]{cost[0][0], count}}, BIReason.MISSING_ROOM_REFRESH_CONSUME, 1);
if(!result){ if (!result) {
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
} }
user.getPlayerInfoManager().updateVipPrivilage(sMazeTreasureSetting.getRefreshVIP(),1); user.getPlayerInfoManager().updateVipPrivilage(sMazeTreasureSetting.getRefreshVIP(), 1);
} }
//高级特权 //高级特权
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getHighDailyPrivilege(),mustAppear); missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getHighDailyPrivilege(), mustAppear);
//豪华特权 //豪华特权
missingRoomMissionType.privilegeRefresh(user,sMazeTreasureSetting.getLuxuryDailyPrivilege(),mustAppear); missingRoomMissionType.privilegeRefresh(user, sMazeTreasureSetting.getLuxuryDailyPrivilege(), mustAppear);
//非免费抽取次数必出 //非免费抽取次数必出
missingRoomMissionType.notFreeRefreshMust(user,sMazeTreasureSetting.getRefreshHighTypeNum(),mustAppear); missingRoomMissionType.notFreeRefreshMust(user, sMazeTreasureSetting.getRefreshHighTypeNum(), mustAppear);
// 刷新次数+1 // 刷新次数+1
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount()+1); missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount() + 1);
} }
Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds(); Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds();
doingMissionIds.forEach((doing)->{ doingMissionIds.forEach((doing) -> {
if (lockMissionIds.contains(doing)){ if (lockMissionIds.contains(doing)) {
lockMissions.add(doing); lockMissions.add(doing);
} }
}); });
missingRoomMissionType.getDoingMissionIds().clear(); missingRoomMissionType.getDoingMissionIds().clear();
}else{ } else {
for(int firstTask:SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()){ for (int firstTask : SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()) {
mustMissions.add(firstTask); mustMissions.add(firstTask);
} }
} }
// 更新最大长度限制6条 // 更新最大长度限制6条
if (lockMissions.size() + mustAppear.size() > 6){ if (lockMissions.size() + mustAppear.size() > 6) {
// 锁定的不能动,获取特权任务数量 // 锁定的不能动,获取特权任务数量
int num = 6 - lockMissions.size(); int num = 6 - lockMissions.size();
// 特权的key // 特权的key
@ -261,20 +283,20 @@ public class UserMissionManager extends MongoBase {
// 赋值 // 赋值
sortSet.addAll(keys); sortSet.addAll(keys);
// 遍历,如果数量满足,停止,不满足则删除等级小的任务 // 遍历,如果数量满足,停止,不满足则删除等级小的任务
for (Integer ints:sortSet){ for (Integer ints : sortSet) {
if (mustAppear.size() == num){ if (mustAppear.size() == num) {
break; break;
} }
mustAppear.remove(ints); mustAppear.remove(ints);
} }
} }
if(!mustAppear.isEmpty()){ if (!mustAppear.isEmpty()) {
for(Map.Entry<Integer,Integer> entry:mustAppear.entrySet()){ for (Map.Entry<Integer, Integer> entry : mustAppear.entrySet()) {
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey()); List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
List<int[]> mustList = new ArrayList<>(); List<int[]> mustList = new ArrayList<>();
for(SMazeTreasure maze :sMazeTreasures){ for (SMazeTreasure maze : sMazeTreasures) {
if(mustMissions.contains(maze.getId())){ if (mustMissions.contains(maze.getId())) {
continue; continue;
} }
int[] refreshWeight = new int[2]; int[] refreshWeight = new int[2];
@ -283,52 +305,45 @@ public class UserMissionManager extends MongoBase {
mustList.add(refreshWeight); mustList.add(refreshWeight);
} }
int[][] mustArray = mustList.toArray(new int[mustList.size()][]); int[][] mustArray = mustList.toArray(new int[mustList.size()][]);
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue()); int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
Arrays.stream(missions).forEach(mission->mustMissions.add(mission)); Arrays.stream(missions).forEach(mission -> mustMissions.add(mission));
} }
} }
int[][] qualityRate = SMazeTreasureSetting.sMazeTreasureSetting.getQualityRate(); int[][] qualityRate = SMazeTreasureSetting.sMazeTreasureSetting.getQualityRate();
// List<int[]> missingRoomMission = new ArrayList<>();
// for(Map.Entry<Integer,SMazeTreasure> entry:SMazeTreasure.sMazeTreasureMap.entrySet()){
// int[] refreshWeight = new int[2];
// refreshWeight[0] = entry.getKey();
// refreshWeight[1] = entry.getValue().getTaskRefreshProbability();
// missingRoomMission.add(refreshWeight);
// }
//根据品质来随机 //根据品质来随机
int[] qualityArray = MathUtils.randomForWeight(qualityRate, 6 - (mustMissions.size() + lockMissions.size())); int[] qualityArray = MathUtils.randomForWeight(qualityRate, 6 - (mustMissions.size() + lockMissions.size()));
Map<Integer,Integer> qualityNum = new HashMap<>(); Map<Integer, Integer> qualityNum = new HashMap<>();
for(int quality:qualityArray){ for (int quality : qualityArray) {
qualityNum.put(quality,qualityNum.getOrDefault(quality,0)+1); qualityNum.put(quality, qualityNum.getOrDefault(quality, 0) + 1);
} }
for(Map.Entry<Integer,Integer> entry:qualityNum.entrySet()){ for (Map.Entry<Integer, Integer> entry : qualityNum.entrySet()) {
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey()); List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
int[][] treasures = new int[sMazeTreasures.size()][]; int[][] treasures = new int[sMazeTreasures.size()][];
for(int i = 0 ; i<sMazeTreasures.size();i++){ for (int i = 0; i < sMazeTreasures.size(); i++) {
treasures[i] = new int[2]; treasures[i] = new int[2];
treasures[i][0] = sMazeTreasures.get(i).getId(); treasures[i][0] = sMazeTreasures.get(i).getId();
treasures[i][1] = 1; treasures[i][1] = 1;
} }
int[] ids = MathUtils.randomFromWeightWithTaking(treasures, entry.getValue()); int[] ids = MathUtils.randomFromWeightWithTaking(treasures, entry.getValue());
// int missionId = sMazeTreasures.get(MathUtils.randomInt(sMazeTreasures.size())).getId(); for (int id : ids) {
for(int id:ids){ missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + id);
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+id);
} }
} }
// 必须任务 // 必须任务
for(int mission:mustMissions){ for (int mission : mustMissions) {
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission); missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + mission);
} }
// 上锁任务 // 上锁任务
for(int mission:lockMissions){ for (int mission : lockMissions) {
missingRoomMissionType.addDoingMission(mission); missingRoomMissionType.addDoingMission(mission);
} }
updateString("missingRoomMissionType",missingRoomMissionType); updateString("missingRoomMissionType", missingRoomMissionType);
break; break;
default:{ default: {
break; break;
} }
} }
} }
@ -391,8 +406,10 @@ public class UserMissionManager extends MongoBase {
missingRoomMissionType.rewardMission((int)parm[0],missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION)); missingRoomMissionType.rewardMission((int)parm[0],missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION));
updateString("missingRoomMissionType",missingRoomMissionType); updateString("missingRoomMissionType",missingRoomMissionType);
} }
case COW_FLY_SKY_REWEARD:{
cowFlySkyMissionType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION));
updateString("cowFlySkyMissionType",cowFlySkyMissionType);
}
break; break;
default: default:
break; break;
@ -517,11 +534,16 @@ public class UserMissionManager extends MongoBase {
} }
// 公用任务类型,累计次数形式
CumulationData.Result result = cumulationData.updateData(missionType, parm); CumulationData.Result result = cumulationData.updateData(missionType, parm);
if(result!=null){ if(result!=null){
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
updateString("cumulationData",cumulationData); updateString("cumulationData",cumulationData);
// vip任务
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
updateString("vipMissionIdsType",vipMissionIdsType); updateString("vipMissionIdsType",vipMissionIdsType);
// 牛气冲天任务
cowFlySkyMissionType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION),cumulationData);
updateString("cowFlySkyMissionType",cowFlySkyMissionType);
} }
} }
@ -742,4 +764,12 @@ public class UserMissionManager extends MongoBase {
public CumulationData getJadeDynastyWeekCumulationData() { public CumulationData getJadeDynastyWeekCumulationData() {
return jadeDynastyWeekCumulationData; return jadeDynastyWeekCumulationData;
} }
public CowFlySkyMissionType getCowFlySkyMissionType() {
return cowFlySkyMissionType;
}
public void setCowFlySkyMissionType(CowFlySkyMissionType cowFlySkyMissionType) {
this.cowFlySkyMissionType = cowFlySkyMissionType;
}
} }

View File

@ -529,8 +529,8 @@ public class ExpeditionLogic {
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1); SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
int openRule = sExpeditionSetting.getOpenRules()[0]; int openRule = sExpeditionSetting.getOpenRules()[0];
if(openRule == type && sExpeditionSetting.getOpenRules()[1] == parm){ if(openRule == type && sExpeditionSetting.getOpenRules()[1] == parm){
//设置第一次七天后开启 //国服设置第十四天后开启
user.getExpeditionManager().getWorldTreasureReward().setFirstStartTime((int)((TimeUtils.now()+7*TimeUtils.ONE_DAY)/1000)); user.getExpeditionManager().getWorldTreasureReward().setFirstStartTime((int)((TimeUtils.now()+14*TimeUtils.ONE_DAY)/1000));
// user.getExpeditionManager().resetTreasureReward(1); // user.getExpeditionManager().resetTreasureReward(1);
// sendAllTreasureInfo(user); // sendAllTreasureInfo(user);
} }
@ -595,8 +595,10 @@ public class ExpeditionLogic {
if (scHero == null) { if (scHero == null) {
throw new ErrorCodeException(ErrorCode.CFG_NULL,"英雄表id不存在:"+heroTid); throw new ErrorCodeException(ErrorCode.CFG_NULL,"英雄表id不存在:"+heroTid);
} }
// 等级上限验证 // 最高等级
level = level>scHero.getMaxLevel()?scHero.getMaxLevel():level; level = level>scHero.getMaxLevel()?scHero.getMaxLevel():level;
// 最低20级
level = level<20?20:level;
//创建新的英雄 //创建新的英雄
Hero newHero = new Hero(hero,user.getId(),heroTid,level); Hero newHero = new Hero(hero,user.getId(),heroTid,level);
// 魂宝灵宝,魂印需要走表 // 魂宝灵宝,魂印需要走表
@ -843,6 +845,9 @@ public class ExpeditionLogic {
* *
*/ */
private static void disposeWithHeroHoly(User user,Hero hero,StringBuilder skillSb){ private static void disposeWithHeroHoly(User user,Hero hero,StringBuilder skillSb){
if(!user.getExpeditionManager().getHeroItems().containsKey(hero.getTemplateId())){
return;
}
int holyId = user.getExpeditionManager().getHeroItems().get(hero.getTemplateId()); int holyId = user.getExpeditionManager().getHeroItems().get(hero.getTemplateId());
SExpeditionHolyConfig con = STableManager.getConfig(SExpeditionHolyConfig.class).get(holyId); SExpeditionHolyConfig con = STableManager.getConfig(SExpeditionHolyConfig.class).get(holyId);
if( con != null ){ if( con != null ){

View File

@ -25,6 +25,8 @@ import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.logic.store.StoreLogic;
import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
import rpc.protocols.Family; import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto; import rpc.protocols.MessageTypeProto;
@ -46,6 +48,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/ */
public class GuildChallengeLogic { public class GuildChallengeLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(GuildChallengeLogic.class);
public static GuildChallengeLogic getInstance() { public static GuildChallengeLogic getInstance() {
return Instance.instance; return Instance.instance;
} }
@ -323,8 +326,27 @@ public class GuildChallengeLogic {
Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder() Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder()
.setBlood(remainHp) .setBlood(remainHp)
.setCurBoss(guildInfo.getCurrBossId()); .setCurBoss(guildInfo.getCurrBossId());
// GuildLogic.sendIndicationToMemberWithoutUser(guildInfo, MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION,indication.build(),uid);
GuildLogic.sendIndicationToMemberWithoutUser(guildInfo, MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION,indication.build(),uid); Map<Integer, Set<Integer>> members = guildInfo.getMembers();
for(Set<Integer> items : members.values()){
for(Integer sendUid : items){
//把自己跳过,自己的特殊处理
if(sendUid==uid){
continue;
}
ISession isession = OnlineUserManager.getSessionByUid(sendUid);
Family.GuildChallengeIndication.Builder otherIndication = Family.GuildChallengeIndication.newBuilder()
.setBlood(remainHp)
.setCurBoss(guildInfo.getCurrBossId());
if(kill==1&&!UserManager.getUser(sendUid).getGuildMyInfo().getRefreshedBoss().contains(bossId)&&guildInfo.getBossHpRemain()!=-1){
otherIndication.setIsRefresh(1);//需要前端刷新次数
}
if(isession!=null){
LOGGER.info("向{}发送indication",sendUid);
MessageUtil.sendIndicationMessage(isession,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,otherIndication.build(),true);
}
}
}
indication.setIsKill(kill); indication.setIsKill(kill);
//伤害排行 //伤害排行
@ -350,6 +372,9 @@ public class GuildChallengeLogic {
PlayerLogic.getInstance().checkAndUpdate(user,config.getPrivilege()[0],1); PlayerLogic.getInstance().checkAndUpdate(user,config.getPrivilege()[0],1);
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
if(kill==1&&!UserManager.getUser(uid).getGuildMyInfo().getRefreshedBoss().contains(bossId)&&guildInfo.getBossHpRemain()!=-1){
indication.setIsRefresh(1);//需要前端刷新次数
}
MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,indication.build(),true); MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,indication.build(),true);
} }

View File

@ -1243,6 +1243,9 @@ public class HeroLogic{
List<SCHeroRankUpConfig> collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList()); List<SCHeroRankUpConfig> collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for(SCHeroRankUpConfig scHeroRankUpConfig : collect){ for(SCHeroRankUpConfig scHeroRankUpConfig : collect){
if (heroLevel >= scHeroRankUpConfig.getOpenLevel()){ if (heroLevel >= scHeroRankUpConfig.getOpenLevel()){
if (scHeroRankUpConfig.getOpenStar() > 10){
continue;
}
return scHeroRankUpConfig.getId(); return scHeroRankUpConfig.getId();
} }
} }
@ -1294,7 +1297,8 @@ public class HeroLogic{
List<SCHeroRankUpConfig> collect = rankUpStar.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList()); List<SCHeroRankUpConfig> collect = rankUpStar.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for(SCHeroRankUpConfig val : collect){ for(SCHeroRankUpConfig val : collect){
if (heroLevel >= val.getOpenLevel()){ if (heroLevel >= val.getOpenLevel()){
return val.getOpenStar(); // 机器人生成星级,最高10星
return val.getOpenStar()>10?10:val.getOpenStar();
} }
} }
} }
@ -1307,7 +1311,7 @@ public class HeroLogic{
List<SCHeroRankUpConfig> collect = rankUpBreak.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList()); List<SCHeroRankUpConfig> collect = rankUpBreak.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for(SCHeroRankUpConfig val : collect){ for(SCHeroRankUpConfig val : collect){
if (heroLevel >= val.getOpenLevel()){ if (heroLevel >= val.getOpenLevel()){
return val.getOpenStar(); return val.getOpenStar()>10?10:val.getOpenStar();
} }
} }
} }
@ -4371,7 +4375,7 @@ public class HeroLogic{
if (count == 0){ if (count == 0){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE); throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
} }
return count/num; return count/averageNum;
} }
/** /**

View File

@ -108,4 +108,7 @@ public enum GameEvent {
HONGMENG_RESONANCE_LATTICE,//鸿蒙阵共鸣格子 HONGMENG_RESONANCE_LATTICE,//鸿蒙阵共鸣格子
HONGMENG_TABLET_LEVEL,//鸿蒙碑等级 HONGMENG_TABLET_LEVEL,//鸿蒙碑等级
COW_FLY_SKY_REFRESH,//牛气冲天刷新
COW_FLY_SKY_REWEARD,//牛气冲天奖励
} }

View File

@ -11,6 +11,7 @@ public enum GameMisionType {
MISSINGROOMMISSION(8), MISSINGROOMMISSION(8),
ACHIEVEMISSION(9), ACHIEVEMISSION(9),
JADE_DYNASTY_MISSION(10),//破阵诛仙任务 JADE_DYNASTY_MISSION(10),//破阵诛仙任务
COWFLYSKYMISSION(11),//牛气冲天
; ;
private int type; private int type;

View File

@ -55,6 +55,7 @@ public class MissionLoigc {
getMissingRoomMission(user,missionList); getMissingRoomMission(user,missionList);
getAchieveMission(user,missionList); getAchieveMission(user,missionList);
getJadeDynastyMission(user, missionList); getJadeDynastyMission(user, missionList);
getCowFlySkyMission(user,missionList);
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build(); PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.GET_MISSION_RESPONSE_VALUE,build,true);
} }
@ -334,6 +335,40 @@ public class MissionLoigc {
} }
} }
/**
*
* @param user
* @param missionList
*/
public static void getCowFlySkyMission(User user ,List<CommonProto.UserMissionInfo> missionList){
CowFlySkyMissionType missionType = user.getUserMissionManager().getCowFlySkyMissionType();
// 进行中
Set<Integer> doingMissionIds = missionType.getDoingMissionIds();
// 可领取
Set<Integer> finishMissionIds = missionType.getFinishMissionIds();
// 已领取
BitSet rewardedMissionIds = missionType.getRewardedMissionIds();
Collection<SArroGantFly> values = STableManager.getConfig(SArroGantFly.class).values();
values.forEach(v->{
int id = v.getId();
CommonProto.UserMissionInfo.Builder info = CommonProto.UserMissionInfo.newBuilder();
info.setMissionId(id);
info.setType(GameMisionType.COWFLYSKYMISSION.getType());
if (doingMissionIds.contains(id)){
info.setState(MissionState.DOING.getState());
}
if (finishMissionIds.contains(id)){
info.setState(MissionState.FINISH.getState());
}
if (rewardedMissionIds.get(id)){
info.setState(MissionState.REWARD.getState());
}
missionList.add(info.build());
});
}
/** /**
* *
* @param user * @param user
@ -399,12 +434,22 @@ public class MissionLoigc {
} }
public static void takeMissionReward(ISession session,int type,int missionId) throws Exception {
/**
*
* @param session
* @param type
* @param missionId
* @throws Exception
*/
public static void takeMissionReward(ISession session,int type,int missionId) throws Exception {
int uid = session.getUid(); int uid = session.getUid();
User user = UserManager.getUser(uid); User user = UserManager.getUser(uid);
UserMissionManager userMissionManager = user.getUserMissionManager(); UserMissionManager userMissionManager = user.getUserMissionManager();
List<MissionStateChangeInfo> missionStateChangeInfos = null; List<MissionStateChangeInfo> missionStateChangeInfos = null;
if(type == GameMisionType.BLOODYMISSION.getType()){ //vip 任务
//BLOODY 任务
if(type == GameMisionType.BLOODYMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.BLOODY_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.BLOODY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BLOODYMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BLOODYMISSION);
if(missionStateChangeInfos.isEmpty()){ if(missionStateChangeInfos.isEmpty()){
@ -414,16 +459,16 @@ public class MissionLoigc {
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{rewardGroup}, 1.0f, 0, BIReason.TAKE_MISSION_REWARD); CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{rewardGroup}, 1.0f, 0, BIReason.TAKE_MISSION_REWARD);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build(); PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
// KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);
// Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,"");
ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),missionId,GameMisionType.BLOODYMISSION.toString()); ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),missionId,GameMisionType.BLOODYMISSION.toString());
return; return;
} }
if(type == GameMisionType.VIPMISSION.getType()){ //vip 任务 //vip 任务
if(type == GameMisionType.VIPMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.VIP_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.VIP_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.VIPMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.VIPMISSION);
} }
if(type == GameMisionType.DAILYMISSION.getType()){ //日常 任务 //日常 任务
if(type == GameMisionType.DAILYMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.DAILY_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.DAILY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION);
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId); SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId);
@ -431,12 +476,13 @@ public class MissionLoigc {
user.getUserMissionManager().onGameEvent(user,GameEvent.TAKE_DAILY_BOX_REWARD); user.getUserMissionManager().onGameEvent(user,GameEvent.TAKE_DAILY_BOX_REWARD);
} }
} }
//新手 任务
if(type == GameMisionType.BEGINNERMISSION.getType()){ //新手 任务 if(type == GameMisionType.BEGINNERMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.BEGINNER_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.BEGINNER_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BEGINNERMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BEGINNERMISSION);
} }
if(type == GameMisionType.COPYMISSION.getType()){ //副本 任务 //副本 任务
if(type == GameMisionType.COPYMISSION.getType()){
Set<Integer> takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards(); Set<Integer> takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards();
if(takeCopyMisionRewards.contains(missionId)){ if(takeCopyMisionRewards.contains(missionId)){
throw new ErrorCodeException(ErrorCode.newDefineCode("had taked reward")); throw new ErrorCodeException(ErrorCode.newDefineCode("had taked reward"));
@ -460,8 +506,8 @@ public class MissionLoigc {
return; return;
} }
// 藏宝任务
if(type == GameMisionType.TREASUREMISSION.getType()){ if(type == GameMisionType.TREASUREMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.TREASURE_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.TREASURE_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.TREASUREMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.TREASUREMISSION);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
@ -476,8 +522,9 @@ public class MissionLoigc {
} }
} }
// 破阵诛仙任务
if(type == GameMisionType.JADE_DYNASTY_MISSION.getType()){ if(type == GameMisionType.JADE_DYNASTY_MISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.JADE_DYNASTY_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.JADE_DYNASTY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.JADE_DYNASTY_MISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.JADE_DYNASTY_MISSION);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId); KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);
@ -489,15 +536,25 @@ public class MissionLoigc {
} }
} }
// 牛气冲天 活动任务
if (type == GameMisionType.COWFLYSKYMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.COW_FLY_SKY_REWEARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.COWFLYSKYMISSION);
}
// 七日 任务
if(type == GameMisionType.SEVENMISSION.getType()){ if(type == GameMisionType.SEVENMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.SEVENHAPPY_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.SEVENHAPPY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.SEVENMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.SEVENMISSION);
} }
// 天宫寻宝 任务
if(type==GameMisionType.MISSINGROOMMISSION.getType()){ if(type==GameMisionType.MISSINGROOMMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.MISSING_ROOM_MISSION_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.MISSING_ROOM_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.MISSINGROOMMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.MISSINGROOMMISSION);
} }
// 成就 任务
if(type==GameMisionType.ACHIEVEMISSION.getType()){ if(type==GameMisionType.ACHIEVEMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.ACHIEVE_REWARD, missionId); Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.ACHIEVE_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.ACHIEVEMISSION); missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.ACHIEVEMISSION);
@ -505,14 +562,10 @@ public class MissionLoigc {
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD); CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD);
// user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,missionId,user);
ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type); ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build(); PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
// KtEventUtils.onKtEvent(user, ParamEventBean.UserTaskEvent,type,missionId);
// Repot37EventUtil.onKtEvent(user, Repot37EventUtil.Report37EventType.TASK_FINISH_EVEMT,missionId,"");
}else{ }else{
//MessageUtil.sendErrorResponse(session,0, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,"mission can not get reward");
throw new ErrorCodeException(ErrorCode.newDefineCode("mission can not get reward")); throw new ErrorCodeException(ErrorCode.newDefineCode("mission can not get reward"));
} }
} }

View File

@ -134,7 +134,7 @@ public enum MissionType {
return missionType; return missionType;
} }
private MissionType(int missionType) { MissionType(int missionType) {
this.missionType = missionType; this.missionType = missionType;
} }

View File

@ -142,6 +142,7 @@ public class DataManagerDistributor {
judges.put(MissionType.CHAMPIONSHIP_RANK, new ChampionshipRankManager()); judges.put(MissionType.CHAMPIONSHIP_RANK, new ChampionshipRankManager());
judges.put(MissionType.PLAY_MINI_GAME_TIMES, new PlayMiniGameTimesManager()); judges.put(MissionType.PLAY_MINI_GAME_TIMES, new PlayMiniGameTimesManager());
// 鸿蒙阵
judges.put(MissionType.HONGMENG_RESONANCE_LATTICE, new HongMengResonanceDataManager()); judges.put(MissionType.HONGMENG_RESONANCE_LATTICE, new HongMengResonanceDataManager());
judges.put(MissionType.HONGMENG_TABLET_LEVEL, new HongMengLevelDataManager()); judges.put(MissionType.HONGMENG_TABLET_LEVEL, new HongMengLevelDataManager());
} }

View File

@ -12,7 +12,6 @@ public class GetHeroManager implements BaseDataManager {
int heroStar = (int)parm[1]; int heroStar = (int)parm[1];
CumulationData.Result result = null; CumulationData.Result result = null;
if(missionType == MissionType.COLLECT_QUALITY_HERO){ if(missionType == MissionType.COLLECT_QUALITY_HERO){
SCHero scHero = SCHero.getsCHero().get(heroTid);
data.updateHeroQualityCount(heroStar); data.updateHeroQualityCount(heroStar);
result = new CumulationData.Result(missionType); result = new CumulationData.Result(missionType);
}else if(missionType == MissionType.COLLECT_DIFFERENT_HEROS){ }else if(missionType == MissionType.COLLECT_DIFFERENT_HEROS){

View File

@ -0,0 +1,16 @@
package com.ljsd.jieling.logic.mission.event;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.GameMisionType;
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
import java.util.List;
import java.util.Map;
public class CowFlySkyEventProcess implements BaseGameEventProcessor {
@Override
public void onGameEvent(User user, Map<GameMisionType, List<MissionStateChangeInfo>> misionTypeListMap, GameEvent event, Object... parm) throws Exception {
user.getUserMissionManager().openMission(user,event,misionTypeListMap,parm);
}
}

View File

@ -29,7 +29,7 @@ public class MissionEventDistributor {
public static void init(){ public static void init(){
// 刷新任务
eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new CumulationDataEventProcessor()); eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new CumulationDataEventProcessor());
eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess()); eventProcessor.put(GameEvent.DAILY_REFRESH,new DailyRefreshEventProcess());
eventProcessor.put(GameEvent.BLOODY_REFRESH,new DailyRefreshEventProcess()); eventProcessor.put(GameEvent.BLOODY_REFRESH,new DailyRefreshEventProcess());
@ -41,7 +41,7 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor()); eventProcessor.put(GameEvent.BEGINNER,new BeginneRefreshEventProcessor());
eventProcessor.put(GameEvent.JADE_DYNASTY_REFRESH,new JadeDynastyRefreshEventProcess()); eventProcessor.put(GameEvent.JADE_DYNASTY_REFRESH,new JadeDynastyRefreshEventProcess());
eventProcessor.put(GameEvent.JADE_DYNASTY_WEEK_REFRESH,new JadeDynastyRefreshEventProcess()); eventProcessor.put(GameEvent.JADE_DYNASTY_WEEK_REFRESH,new JadeDynastyRefreshEventProcess());
eventProcessor.put(GameEvent.COW_FLY_SKY_REFRESH,new CowFlySkyEventProcess());
List<MissionType> typeList = new ArrayList<>(); List<MissionType> typeList = new ArrayList<>();
typeList.add(MissionType.REFRESH_MISSING_ROOM); typeList.add(MissionType.REFRESH_MISSING_ROOM);
@ -182,7 +182,7 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.ADVENTURE_TAKEREWARD,typeList); eventEnumListMap.put(GameEvent.ADVENTURE_TAKEREWARD,typeList);
eventProcessor.put(GameEvent.ADVENTURE_TAKEREWARD,new CumulationDataEventProcessor()); eventProcessor.put(GameEvent.ADVENTURE_TAKEREWARD,new CumulationDataEventProcessor());
// 领取奖励
eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor()); eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.DAILY_MISSION_REWARD,new RewardEventProcessor()); eventProcessor.put(GameEvent.DAILY_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.TREASURE_MISSION_REWARD,new RewardEventProcessor()); eventProcessor.put(GameEvent.TREASURE_MISSION_REWARD,new RewardEventProcessor());
@ -192,7 +192,7 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.MISSING_ROOM_MISSION_REWARD,new RewardEventProcessor()); eventProcessor.put(GameEvent.MISSING_ROOM_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.ACHIEVE_REWARD,new RewardEventProcessor()); eventProcessor.put(GameEvent.ACHIEVE_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.JADE_DYNASTY_MISSION_REWARD,new RewardEventProcessor()); eventProcessor.put(GameEvent.JADE_DYNASTY_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.COW_FLY_SKY_REWEARD,new RewardEventProcessor());
typeList = new ArrayList<>(); typeList = new ArrayList<>();
typeList.add(MissionType.RING_FIREA_DVANCED); typeList.add(MissionType.RING_FIREA_DVANCED);
@ -417,6 +417,7 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.PLAY_MINI_GAME, typeList); eventEnumListMap.put(GameEvent.PLAY_MINI_GAME, typeList);
eventProcessor.put(GameEvent.PLAY_MINI_GAME, new CumulationDataEventProcessor()); eventProcessor.put(GameEvent.PLAY_MINI_GAME, new CumulationDataEventProcessor());
// 鸿蒙碑
typeList = new ArrayList<>(); typeList = new ArrayList<>();
typeList.add(MissionType.HONGMENG_RESONANCE_LATTICE); typeList.add(MissionType.HONGMENG_RESONANCE_LATTICE);
eventEnumListMap.put(GameEvent.HONGMENG_RESONANCE_LATTICE, typeList); eventEnumListMap.put(GameEvent.HONGMENG_RESONANCE_LATTICE, typeList);
@ -455,7 +456,7 @@ public class MissionEventDistributor {
missionTypeEnumListMap.put(GameMisionType.MISSINGROOMMISSION, new ArrayList<>()); missionTypeEnumListMap.put(GameMisionType.MISSINGROOMMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.ACHIEVEMISSION, new ArrayList<>()); missionTypeEnumListMap.put(GameMisionType.ACHIEVEMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.JADE_DYNASTY_MISSION, new ArrayList<>()); missionTypeEnumListMap.put(GameMisionType.JADE_DYNASTY_MISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.COWFLYSKYMISSION, new ArrayList<>());
} else { } else {
missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear(); missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear();
@ -468,7 +469,7 @@ public class MissionEventDistributor {
missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION).clear(); missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION).clear(); missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.JADE_DYNASTY_MISSION).clear(); missionTypeEnumListMap.get(GameMisionType.JADE_DYNASTY_MISSION).clear();
missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION).clear();
} }
threadMissionChangeList.set(missionTypeEnumListMap); threadMissionChangeList.set(missionTypeEnumListMap);
@ -504,7 +505,10 @@ public class MissionEventDistributor {
if(gameMisionType==GameMisionType.MISSINGROOMMISSION){ if(gameMisionType==GameMisionType.MISSINGROOMMISSION){
continue; continue;
} }
if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION || gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION|| gameMisionType == GameMisionType.ACHIEVEMISSION || gameMisionType == GameMisionType.JADE_DYNASTY_MISSION){ if(gameMisionType == GameMisionType.COPYMISSION || gameMisionType == GameMisionType.TREASUREMISSION
|| gameMisionType == GameMisionType.SEVENMISSION || gameMisionType == GameMisionType.BLOODYMISSION
|| gameMisionType == GameMisionType.ACHIEVEMISSION || gameMisionType == GameMisionType.JADE_DYNASTY_MISSION
|| gameMisionType == GameMisionType.COWFLYSKYMISSION ){
progress = missionStateChangeInfo.getProgress(); progress = missionStateChangeInfo.getProgress();
} }
if(missionState == MissionState.DOING){ if(missionState == MissionState.DOING){

View File

@ -0,0 +1,61 @@
package com.ljsd.jieling.logic.mission.main;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionLoigc;
import com.ljsd.jieling.logic.mission.MissionState;
import config.SArroGantFly;
import manager.STableManager;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public class CowFlySkyMissionType extends AbstractMissionType {
@Override
public void openMission(User user, int missionId, List<MissionStateChangeInfo> missionTypeEnumList) {
}
@Override
public int[][] reward(int missionId) {
SArroGantFly arroGantFly = STableManager.getConfig(SArroGantFly.class).get(missionId);
return arroGantFly.getReward();
}
@Override
public void calCumulationDataResult(User user, CumulationData.Result result, List<MissionStateChangeInfo> missionStateChangeInfos, CumulationData cumulationData) throws Exception {
// 进行中得任务
Set<Integer> doingMissionIds = getDoingMissionIds();
Collection<SArroGantFly> values = STableManager.getConfig(SArroGantFly.class).values();
for (SArroGantFly fly : values) {
// 任务子id
int id = fly.getId();
// 不在执行中
if(!doingMissionIds.contains(id)){
continue;
}
// 获取任务进度
int num = MissionLoigc.getDoingProgress(user, cumulationData, fly.getValues(), fly.getValuesII()[0]);
// 是否完成
boolean isFinish = num >= fly.getValuesII()[1][0];
if (!isFinish) {
// 未完成
MissionStateChangeInfo doingInfo = new MissionStateChangeInfo(id, MissionState.DOING, num);
missionStateChangeInfos.add(doingInfo);
continue;
}
// 清除旧信息(进行中)
missionStateChangeInfos.removeIf(v->v.getMissionId()==id);
// 添加新信息(可领取)
MissionStateChangeInfo finishInfo = new MissionStateChangeInfo(id,MissionState.FINISH, fly.getReward());
missionStateChangeInfos.add(finishInfo);
// 任务列表更新
doingMissionIds.remove(id);
getFinishMissionIds().add(id);
}
}
}

View File

@ -186,11 +186,9 @@ public class MissingRoomMissionType extends AbstractMissionType{
* @param mustAppear * @param mustAppear
*/ */
public void notFreeRefreshMust(User user, int[][] refreshHighTypeNum,Map<Integer,Integer> mustAppear){ public void notFreeRefreshMust(User user, int[][] refreshHighTypeNum,Map<Integer,Integer> mustAppear){
int refreshTotalCount = user.getUserMissionManager().getMissingRoomMissionType().getRefreshTotalCount(); int count = user.getUserMissionManager().getMissingRoomMissionType().getRefreshTotalCount();
for(int[] refresh:refreshHighTypeNum){ for(int[] refresh:refreshHighTypeNum){
if(refreshTotalCount==0||refreshTotalCount%refresh[0]!=0){ if(count!=0 && count%refresh[0]==0){
continue;
}else{
mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1)); mustAppear.put(refresh[1],mustAppear.get(refresh[1])==null?1:(mustAppear.get(refresh[1])+1));
} }
} }

View File

@ -278,7 +278,9 @@ public class BuyGoodsLogic {
// if(rechargeInfo.getIsFirst()==0 && firstInvest == 1){ // if(rechargeInfo.getIsFirst()==0 && firstInvest == 1){
// ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FirstRecharge,sRechargeCommodityConfig.getPrice()); // ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FirstRecharge,sRechargeCommodityConfig.getPrice());
// SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(4).get(0); // SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(4).get(0);
if(sRechargeCommodityConfig.getPrice()!=0&&price!=0){
rechargeInfo.setFirst(1); rechargeInfo.setFirst(1);
}
// String title = SErrorCodeEerverConfig.getI18NMessage("recharge_first_title"); // String title = SErrorCodeEerverConfig.getI18NMessage("recharge_first_title");
// String content = SErrorCodeEerverConfig.getI18NMessage("recharge_first_txt"); // String content = SErrorCodeEerverConfig.getI18NMessage("recharge_first_txt");
// MailLogic.getInstance().sendMail(user.getId(),title,content,ItemUtil.getMailReward(sActivityRewardConfig.getReward()),nowTime, Global.MAIL_EFFECTIVE_TIME); // MailLogic.getInstance().sendMail(user.getId(),title,content,ItemUtil.getMailReward(sActivityRewardConfig.getReward()),nowTime, Global.MAIL_EFFECTIVE_TIME);
@ -439,15 +441,16 @@ public class BuyGoodsLogic {
// Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),goodsId)); // Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),goodsId));
MongoUtil.getLjsdMongoTemplate().lastUpdate(); MongoUtil.getLjsdMongoTemplate().lastUpdate();
sendGiftGooodsIndication(uid); sendGiftGooodsIndication(uid);
onChargeSuccess(uid,price,0,orderId,cfgType);//充值成功上报 onChargeSuccess(user,price,0,orderId,cfgType);//充值成功上报
Map<Integer, Integer> mapReward = ItemUtil.arrayToMap(baseReward); Map<Integer, Integer> mapReward = ItemUtil.arrayToMap(baseReward);
if(price>0){ if(price>0){
MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.RECHARGE_SUCCESS_INDICATION_VALUE, PlayerInfoProto.RechargeSuccessIndication.newBuilder().setOrderId(orderId).build(),true);
ReportUtil.onReportEvent(user, ReportEventEnum.ORDER_COMPLETE.getType(),orderId,price,user.getPlayerInfoManager().getBundle_id(),user.getPlayerInfoManager().getChannel_id(),String.valueOf(GameApplication.serverId),String.valueOf(goodsId),sRechargeCommodityConfig.getName(),new ArrayList<>(mapReward.keySet()),new ArrayList<>(mapReward.values()),new Date(),user.getPlayerInfoManager().getLastDeviceId()==null?"DEFAULT_DEVICE":user.getPlayerInfoManager().getLastDeviceId()); ReportUtil.onReportEvent(user, ReportEventEnum.ORDER_COMPLETE.getType(),orderId,price,user.getPlayerInfoManager().getBundle_id(),user.getPlayerInfoManager().getChannel_id(),String.valueOf(GameApplication.serverId),String.valueOf(goodsId),sRechargeCommodityConfig.getName(),new ArrayList<>(mapReward.keySet()),new ArrayList<>(mapReward.values()),new Date(),user.getPlayerInfoManager().getLastDeviceId()==null?"DEFAULT_DEVICE":user.getPlayerInfoManager().getLastDeviceId());
} }
return resultRes; return resultRes;
} }
private static void onChargeSuccess(int uid,double amount,int virtualAmount,String orderId,int cfgType){ private static void onChargeSuccess(User user,double amount,int virtualAmount,String orderId,int cfgType){
String currency_type = "CNY"; String currency_type = "CNY";
switch (cfgType){ switch (cfgType){
case 1: case 1:
@ -464,11 +467,11 @@ public class BuyGoodsLogic {
rechargeEvent.setIp(""); rechargeEvent.setIp("");
rechargeEvent.setName("charge"); rechargeEvent.setName("charge");
rechargeEvent.setIndex(GameApplication.serverProperties.getAppId()==null?"APPID":GameApplication.serverProperties.getAppId()); rechargeEvent.setIndex(GameApplication.serverProperties.getAppId()==null?"APPID":GameApplication.serverProperties.getAppId());
rechargeEvent.setIdentify(String.valueOf(uid)); rechargeEvent.setIdentify(String.valueOf(user.getPlayerInfoManager().getOpenId()));
rechargeEvent.setProperties(new RechargeEventProp(orderId,amount*100,virtualAmount,currency_type,"","")); rechargeEvent.setProperties(new RechargeEventProp(orderId,amount*100,virtualAmount,currency_type,"",""));
String s = DataMessageUtils.sendRechargePost(rechargeEvent); String s = DataMessageUtils.sendRechargePost(rechargeEvent);
if(s!=null&&s.equals("1")){ if(s!=null&&s.equals("1")){
LOGGER.info("{}充值上报成功,价格为{}",uid,amount); LOGGER.info("{}充值上报成功,价格为{}",user.getPlayerInfoManager().getOpenId(),amount);
} }
} }

View File

@ -419,7 +419,7 @@ public class SessionManager implements INetSession<ISession>, INetReceived<ISess
private void processUserOfflineData(User user,ISession session){ private void processUserOfflineData(User user,ISession session){
try { try {
GuildLogic.updateMyPos(user); // GuildLogic.updateMyPos(user);
if(session.getFiveReady()==1){ if(session.getFiveReady()==1){
PlayerManager playerInfoManager = user.getPlayerInfoManager(); PlayerManager playerInfoManager = user.getPlayerInfoManager();
playerInfoManager.setOffLineTime(TimeUtils.now()); playerInfoManager.setOffLineTime(TimeUtils.now());

View File

@ -0,0 +1,49 @@
package config;
import manager.STableManager;
import manager.Table;
import java.util.Map;
@Table(name ="ArroGantFly")
public class SArroGantFly implements BaseConfig {
private int id;
private int activityId;
private int values;
private int[][] valuesII;
private int[][] reward;
@Override
public void init() throws Exception {
}
public int getId() {
return id;
}
public int getActivityId() {
return activityId;
}
public int getValues() {
return values;
}
public int[][] getValuesII() {
return valuesII;
}
public int[][] getReward() {
return reward;
}
}