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.logic.dao.ServerConfig;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.mongodb.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -1332,7 +1332,7 @@ public class MapLogic {
.newBuilder()
.setResult(resultCode)
.setEnventDrop(dropBuilder)
.addAllRemainHpList(remainHp)
// .addAllRemainHpList(remainHp)
.setEssenceValue(mapManager.getTrialInfo().getEnergy())
.setLastXY(mapManager.getLastXY())
.build();
@ -1384,7 +1384,7 @@ public class MapLogic {
}
fastFightResponse.setEnventDrop(drop.build());
fastFightResponse.setResult(resultCode);
fastFightResponse.addAllRemainHpList(remainHp);
// fastFightResponse.addAllRemainHpList(remainHp);
fastFightResponse.setEssenceValue(mapManager.getTrialInfo().getEnergy());
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);
activityMission.getActivityMissionMap().put(missionId, activityProgressInfo);
}

View File

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

View File

@ -66,6 +66,7 @@ public enum ActivityTypeEnum {
DEMON_TREASURE(ActivityType.DEMON_TREASURE,LimitRandomSpecialMonsterActivity::new),
NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new),
GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new),
COW_FLY_SKY(ActivityType.COW_FLY_SKY,CowFlySkyActivity::new),
;
private int type;
@ -95,16 +96,16 @@ public enum ActivityTypeEnum {
return abstractActivity;
}
//相同类型不同活动id需要处理处理多次事件
/**
* id
* @param id
* @return
*/
public static AbstractActivity getActicityType(int id) {
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
// for (ActivityTypeEnum activityType:ActivityTypeEnum.values()) {
// if(activityType.getType()==sGlobalActivity.getType()){
// return activityType.toActivity(id);
// }
// }
if (activityEnumMap.containsKey(sGlobalActivity.getType()))
if (activityEnumMap.containsKey(sGlobalActivity.getType())){
return activityEnumMap.get(sGlobalActivity.getType()).toActivity(id);
}
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.getRewardedMissionIds().set(sTreasureTaskConfig.getId());
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){
// 限时兑换和新将来袭活动结束会清空道具

View File

@ -27,7 +27,9 @@ public class RemoveEventHeroHandler implements IEventHandler{
}
Hero hero = userInMem.getHeroManager().getHeroMap().get(heroId);
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();
if(endlessHeroInfo!=null && endlessHeroInfo.containsKey(heroId)){
endlessHeroInfo.remove(heroId);

View File

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

View File

@ -54,7 +54,10 @@ public class UserMissionManager extends MongoBase {
private BloodyMissionIdsType bloodyMissionIdsType =new BloodyMissionIdsType();
private MissingRoomMissionType missingRoomMissionType = new MissingRoomMissionType();
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();
@ -69,87 +72,97 @@ public class UserMissionManager extends MongoBase {
private CumulationData jadeDynastyCumulationData = 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());
switch (event){
case VIP_LEVLUP:{
int vipLevle= (int)parm[0];
/**
*
* @param user
* @param event
* @param missionTypeEnumListMap
* @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);
int[] openRules = sVipLevelConfig.getOpenRules();
for(int missionId:openRules){
vipMissionIdsType.openMission(user,missionId,missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
for (int missionId : openRules) {
vipMissionIdsType.openMission(user, missionId, missionTypeEnumListMap.get(GameMisionType.VIPMISSION));
}
updateString("vipMissionIdsType",vipMissionIdsType);
updateString("vipMissionIdsType", vipMissionIdsType);
break;
}
case DAILY_REFRESH:
Set<Integer> missionIds = SDailyTasksConfig.config.keySet();
int type = (int)parm[0];
if(type == 0){
int type = (int) parm[0];
if (type == 0) {
dailyMissionIdsType.getDoingMissionIds().clear();
dailyMissionIdsType.getFinishMissionIds().clear();
dailyMissionIdsType.getRewardedMissionIds().clear();
dailyCumulationData = new CumulationData();
dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
updateString("dailyCumulationData",dailyCumulationData);
updateString("dailyCumulationData", dailyCumulationData);
}
updateString("dailyMissionIdsType",dailyMissionIdsType);
updateString("dailyMissionIdsType", dailyMissionIdsType);
break;
case TREASH_REFRESH:
int activityId = (int) parm[0];//当前轮次青龙秘宝的活动ID
int[] refreshIds = resetTreasureTaskInfo(1,activityId,missionTypeEnumListMap,treasureCumulationData);
//当前轮次青龙秘宝的活动ID
int activityId = (int) parm[0];
int[] refreshIds = resetTreasureTaskInfo(1, activityId, missionTypeEnumListMap, treasureCumulationData);
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);
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;
case TREASH_WEEK_REFRESH:
int aId = (int) parm[0];//当前轮次青龙秘宝的活动ID
int[] weekRefreshIds = resetTreasureTaskInfo(2,aId,missionTypeEnumListMap,treasureWeekCumulationData);
if(weekRefreshIds != null){
//当前轮次青龙秘宝的活动ID
int aId = (int) parm[0];
int[] weekRefreshIds = resetTreasureTaskInfo(2, aId, missionTypeEnumListMap, treasureWeekCumulationData);
if (weekRefreshIds != null) {
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);
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();
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;
case TREASH_MONTH_REFRESH:
int aid = (int) parm[0];//当前轮次青龙秘宝的活动ID
//当前轮次青龙秘宝的活动ID
int aid = (int) parm[0];
user.getPlayerInfoManager().setTreasureLevel(0);
Item item = user.getItemManager().getItem(Global.TREASURE_SCORE);
if(item!=null){
if(item.getItemNum()!=0){
Map<Integer,Integer> treasureScore = new HashMap<>();
treasureScore.put(Global.TREASURE_SCORE, (int)item.getItemNum());
if (item != null) {
if (item.getItemNum() != 0) {
Map<Integer, Integer> treasureScore = new HashMap<>();
treasureScore.put(Global.TREASURE_SCORE, (int) item.getItemNum());
try {
ItemUtil.itemCost(user,treasureScore, BIReason.TREASURE_RESET_CONSUME,1);
ItemUtil.itemCost(user, treasureScore, BIReason.TREASURE_RESET_CONSUME, 1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
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);
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;
case JADE_DYNASTY_REFRESH:
int jadeAId = (int) parm[0];//当前轮次破阵诛仙的活动ID
int[] mIds = resetJadeDynastyTaskInfo(1,jadeAId,missionTypeEnumListMap,jadeDynastyCumulationData);
jadeDynastyCumulationData = new CumulationData();
//当前轮次破阵诛仙的活动ID
int jadeAId = (int) parm[0];
resetJadeDynastyTaskInfo(1, jadeAId, missionTypeEnumListMap, jadeDynastyCumulationData);
break;
case JADE_DYNASTY_WEEK_REFRESH:
int jadeAid = (int) parm[0];//当前轮次破阵诛仙的活动ID
int[] weekMIds = resetJadeDynastyTaskInfo(2,jadeAid,missionTypeEnumListMap,jadeDynastyWeekCumulationData);
if(weekMIds != null){
//当前轮次破阵诛仙的活动ID
int jadeAid = (int) parm[0];
int[] weekMIds = resetJadeDynastyTaskInfo(2, jadeAid, missionTypeEnumListMap, jadeDynastyWeekCumulationData);
if (weekMIds != null) {
jadeDynastyWeekCumulationData = new CumulationData();
}
break;
@ -160,98 +173,107 @@ public class UserMissionManager extends MongoBase {
sevenHappyMissionType.getFinishMissionIds().clear();
sevenHappyMissionType.getRewardedMissionIds().clear();
List<MissionStateChangeInfo> servenMissionmStateChangeInfos = missionTypeEnumListMap.get(GameMisionType.SEVENMISSION);
for(STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs){
for (STreasureTaskConfig sTreasureTaskConfig : sTreasureTaskConfigs) {
sevenHappyMissionType.getDoingMissionIds().add(sTreasureTaskConfig.getId());
}
sevenHappyCumulationData= new CumulationData();
sevenHappyMissionType.checkAndUpdateMision(user,sTreasureTaskConfigs,servenMissionmStateChangeInfos,sevenHappyCumulationData);
sevenHappyCumulationData = new CumulationData();
sevenHappyMissionType.checkAndUpdateMision(user, sTreasureTaskConfigs, servenMissionmStateChangeInfos, sevenHappyCumulationData);
updateString("sevenHappyMissionType", sevenHappyMissionType);
updateString("sevenHappyCumulationData", sevenHappyCumulationData);
break;
case BEGINNER:
for(Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()){
for (Integer id : SBeginnerTask.sBeginnerTaskCongigMap.keySet()) {
beginerTaskIdsType.addDoingMission(id);
}
beginCumulationData= new CumulationData();
beginCumulationData = new CumulationData();
updateString("beginerTaskIdsType", beginerTaskIdsType);
updateString("beginCumulationData", beginCumulationData);
break;
case BLOODY_REFRESH:
Set<Integer> bloodyMissionIds =STableManager.getConfig(SBloodyBattleTask.class).keySet();
Set<Integer> bloodyMissionIds = STableManager.getConfig(SBloodyBattleTask.class).keySet();
bloodyMissionIdsType.getDoingMissionIds().clear();
bloodyMissionIdsType.getFinishMissionIds().clear();
bloodyMissionIdsType.getRewardedMissionIds().clear();
bloodyMissionIdsType.getDoingMissionIds().addAll(bloodyMissionIds);
updateString("bloodyMissionIdsType",bloodyMissionIdsType);
updateString("bloodyMissionIdsType", bloodyMissionIdsType);
break;
case ACHIEVE_REFRESH:
Set<Integer> ds =STableManager.getConfig(SAchievementConfig.class).keySet();
Set<Integer> ds = STableManager.getConfig(SAchievementConfig.class).keySet();
achievementMissionTypMap.getDoingMissionIds().clear();
achievementMissionTypMap.getFinishMissionIds().clear();
achievementMissionTypMap.getRewardedMissionIds().clear();
achievementMissionTypMap.getDoingMissionIds().addAll(ds);
achievementMap =new CumulationData();
updateString("achievementMissionTypMap",achievementMissionTypMap);
updateString("achievementMap",achievementMap);
achievementMap = new CumulationData();
updateString("achievementMissionTypMap", achievementMissionTypMap);
updateString("achievementMap", achievementMap);
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> lockMissions = new ArrayList<>();
if((int)parm[0]==1){
if ((int) parm[0] == 1) {
//删除已经领取奖励的
missingRoomMissionType.getFinishMissionIds().removeIf(value->missingRoomMissionType.getAllMissingTime().get(value)==-1);
missingRoomMissionType.getAllMissingTime().values().removeIf(value->value==-1);
missingRoomMissionType.getFinishMissionIds().removeIf(value -> missingRoomMissionType.getAllMissingTime().get(value) == -1);
missingRoomMissionType.getAllMissingTime().values().removeIf(value -> value == -1);
// 任务全部锁定
Set<Integer> lockMissionIds = missingRoomMissionType.getLockMissionIds();
if (lockMissionIds.size() >= 6){
if (lockMissionIds.size() >= 6) {
throw new ErrorCodeException(ErrorCode.LOCK_FILL);
}
// 读表
SMazeTreasureSetting sMazeTreasureSetting = SMazeTreasureSetting.sMazeTreasureSetting;
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);
if(!result){
if (!result) {
int coinRefreshCount = user.getPlayerInfoManager().getVipPrivilageValue(sMazeTreasureSetting.getRefreshVIP());
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);
if(!result){
if (!result) {
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
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount()+1);
missingRoomMissionType.setRefreshTotalCount(missingRoomMissionType.getRefreshTotalCount() + 1);
}
Set<Integer> doingMissionIds = missingRoomMissionType.getDoingMissionIds();
doingMissionIds.forEach((doing)->{
if (lockMissionIds.contains(doing)){
doingMissionIds.forEach((doing) -> {
if (lockMissionIds.contains(doing)) {
lockMissions.add(doing);
}
});
missingRoomMissionType.getDoingMissionIds().clear();
}else{
for(int firstTask:SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()){
} else {
for (int firstTask : SMazeTreasureSetting.sMazeTreasureSetting.getFirstRefresh()) {
mustMissions.add(firstTask);
}
}
// 更新最大长度限制6条
if (lockMissions.size() + mustAppear.size() > 6){
if (lockMissions.size() + mustAppear.size() > 6) {
// 锁定的不能动,获取特权任务数量
int num = 6 - lockMissions.size();
// 特权的key
@ -261,20 +283,20 @@ public class UserMissionManager extends MongoBase {
// 赋值
sortSet.addAll(keys);
// 遍历,如果数量满足,停止,不满足则删除等级小的任务
for (Integer ints:sortSet){
if (mustAppear.size() == num){
for (Integer ints : sortSet) {
if (mustAppear.size() == num) {
break;
}
mustAppear.remove(ints);
}
}
if(!mustAppear.isEmpty()){
for(Map.Entry<Integer,Integer> entry:mustAppear.entrySet()){
if (!mustAppear.isEmpty()) {
for (Map.Entry<Integer, Integer> entry : mustAppear.entrySet()) {
List<SMazeTreasure> sMazeTreasures = SMazeTreasure.mazeMapByTaskType.get(entry.getKey());
List<int[]> mustList = new ArrayList<>();
for(SMazeTreasure maze :sMazeTreasures){
if(mustMissions.contains(maze.getId())){
for (SMazeTreasure maze : sMazeTreasures) {
if (mustMissions.contains(maze.getId())) {
continue;
}
int[] refreshWeight = new int[2];
@ -283,52 +305,45 @@ public class UserMissionManager extends MongoBase {
mustList.add(refreshWeight);
}
int[][] mustArray = mustList.toArray(new int[mustList.size()][]);
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
Arrays.stream(missions).forEach(mission->mustMissions.add(mission));
int[] missions = MathUtils.randomFromWeightWithTaking(mustArray, entry.getValue());
Arrays.stream(missions).forEach(mission -> mustMissions.add(mission));
}
}
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()));
Map<Integer,Integer> qualityNum = new HashMap<>();
for(int quality:qualityArray){
qualityNum.put(quality,qualityNum.getOrDefault(quality,0)+1);
Map<Integer, Integer> qualityNum = new HashMap<>();
for (int quality : qualityArray) {
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());
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][0] = sMazeTreasures.get(i).getId();
treasures[i][1] = 1;
}
int[] ids = MathUtils.randomFromWeightWithTaking(treasures, entry.getValue());
// int missionId = sMazeTreasures.get(MathUtils.randomInt(sMazeTreasures.size())).getId();
for(int id:ids){
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+id);
for (int id : ids) {
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + id);
}
}
// 必须任务
for(int mission:mustMissions){
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex()*10000+mission);
for (int mission : mustMissions) {
missingRoomMissionType.addDoingMission(missingRoomMissionType.getMissionIndex() * 10000 + mission);
}
// 上锁任务
for(int mission:lockMissions){
for (int mission : lockMissions) {
missingRoomMissionType.addDoingMission(mission);
}
updateString("missingRoomMissionType",missingRoomMissionType);
updateString("missingRoomMissionType", missingRoomMissionType);
break;
default:{
break;
}
default: {
break;
}
}
}
@ -391,8 +406,10 @@ public class UserMissionManager extends MongoBase {
missingRoomMissionType.rewardMission((int)parm[0],missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION));
updateString("missingRoomMissionType",missingRoomMissionType);
}
case COW_FLY_SKY_REWEARD:{
cowFlySkyMissionType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION));
updateString("cowFlySkyMissionType",cowFlySkyMissionType);
}
break;
default:
break;
@ -517,11 +534,16 @@ public class UserMissionManager extends MongoBase {
}
// 公用任务类型,累计次数形式
CumulationData.Result result = cumulationData.updateData(missionType, parm);
if(result!=null){
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
updateString("cumulationData",cumulationData);
// vip任务
vipMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.VIPMISSION),cumulationData);
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() {
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);
int openRule = sExpeditionSetting.getOpenRules()[0];
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);
// sendAllTreasureInfo(user);
}
@ -595,8 +595,10 @@ public class ExpeditionLogic {
if (scHero == null) {
throw new ErrorCodeException(ErrorCode.CFG_NULL,"英雄表id不存在:"+heroTid);
}
// 等级上限验证
// 最高等级
level = level>scHero.getMaxLevel()?scHero.getMaxLevel():level;
// 最低20级
level = level<20?20: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){
if(!user.getExpeditionManager().getHeroItems().containsKey(hero.getTemplateId())){
return;
}
int holyId = user.getExpeditionManager().getHeroItems().get(hero.getTemplateId());
SExpeditionHolyConfig con = STableManager.getConfig(SExpeditionHolyConfig.class).get(holyId);
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.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto;
import rpc.protocols.Family;
import rpc.protocols.MessageTypeProto;
@ -46,6 +48,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class GuildChallengeLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(GuildChallengeLogic.class);
public static GuildChallengeLogic getInstance() {
return Instance.instance;
}
@ -323,8 +326,27 @@ public class GuildChallengeLogic {
Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder()
.setBlood(remainHp)
.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);
//伤害排行
@ -350,6 +372,9 @@ public class GuildChallengeLogic {
PlayerLogic.getInstance().checkAndUpdate(user,config.getPrivilege()[0],1);
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);
}

View File

@ -1243,6 +1243,9 @@ public class HeroLogic{
List<SCHeroRankUpConfig> collect = rankUpConfigs.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for(SCHeroRankUpConfig scHeroRankUpConfig : collect){
if (heroLevel >= scHeroRankUpConfig.getOpenLevel()){
if (scHeroRankUpConfig.getOpenStar() > 10){
continue;
}
return scHeroRankUpConfig.getId();
}
}
@ -1294,7 +1297,8 @@ public class HeroLogic{
List<SCHeroRankUpConfig> collect = rankUpStar.stream().sorted(Comparator.comparing(SCHeroRankUpConfig::getOpenLevel).reversed()).collect(Collectors.toList());
for(SCHeroRankUpConfig val : collect){
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());
for(SCHeroRankUpConfig val : collect){
if (heroLevel >= val.getOpenLevel()){
return val.getOpenStar();
return val.getOpenStar()>10?10:val.getOpenStar();
}
}
}
@ -4371,7 +4375,7 @@ public class HeroLogic{
if (count == 0){
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_TABLET_LEVEL,//鸿蒙碑等级
COW_FLY_SKY_REFRESH,//牛气冲天刷新
COW_FLY_SKY_REWEARD,//牛气冲天奖励
}

View File

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

View File

@ -55,6 +55,7 @@ public class MissionLoigc {
getMissingRoomMission(user,missionList);
getAchieveMission(user,missionList);
getJadeDynastyMission(user, missionList);
getCowFlySkyMission(user,missionList);
PlayerInfoProto.GetMissionResponse build = PlayerInfoProto.GetMissionResponse.newBuilder().addAllUserMissionInfo(missionList).build();
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
@ -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();
User user = UserManager.getUser(uid);
UserMissionManager userMissionManager = user.getUserMissionManager();
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);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BLOODYMISSION);
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);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
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());
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);
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);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION);
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId);
@ -431,12 +476,13 @@ public class MissionLoigc {
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);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.BEGINNERMISSION);
}
if(type == GameMisionType.COPYMISSION.getType()){ //副本 任务
//副本 任务
if(type == GameMisionType.COPYMISSION.getType()){
Set<Integer> takeCopyMisionRewards = user.getMapManager().getTakeCopyMisionRewards();
if(takeCopyMisionRewards.contains(missionId)){
throw new ErrorCodeException(ErrorCode.newDefineCode("had taked reward"));
@ -460,8 +506,8 @@ public class MissionLoigc {
return;
}
// 藏宝任务
if(type == GameMisionType.TREASUREMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.TREASURE_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.TREASUREMISSION);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
@ -476,8 +522,9 @@ public class MissionLoigc {
}
}
// 破阵诛仙任务
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);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
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()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.SEVENHAPPY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.SEVENMISSION);
}
// 天宫寻宝 任务
if(type==GameMisionType.MISSINGROOMMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.MISSING_ROOM_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.MISSINGROOMMISSION);
}
// 成就 任务
if(type==GameMisionType.ACHIEVEMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap = userMissionManager.onGameEvent(user, GameEvent.ACHIEVE_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.ACHIEVEMISSION);
@ -505,14 +562,10 @@ public class MissionLoigc {
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
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);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
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{
//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"));
}
}

View File

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

View File

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

View File

@ -12,7 +12,6 @@ public class GetHeroManager implements BaseDataManager {
int heroStar = (int)parm[1];
CumulationData.Result result = null;
if(missionType == MissionType.COLLECT_QUALITY_HERO){
SCHero scHero = SCHero.getsCHero().get(heroTid);
data.updateHeroQualityCount(heroStar);
result = new CumulationData.Result(missionType);
}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(){
// 刷新任务
eventProcessor.put(GameEvent.MISSING_ROOM_REFRESH,new CumulationDataEventProcessor());
eventProcessor.put(GameEvent.DAILY_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.JADE_DYNASTY_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<>();
typeList.add(MissionType.REFRESH_MISSING_ROOM);
@ -182,7 +182,7 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.ADVENTURE_TAKEREWARD,typeList);
eventProcessor.put(GameEvent.ADVENTURE_TAKEREWARD,new CumulationDataEventProcessor());
// 领取奖励
eventProcessor.put(GameEvent.VIP_MISSION_REWARD,new RewardEventProcessor());
eventProcessor.put(GameEvent.DAILY_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.ACHIEVE_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.add(MissionType.RING_FIREA_DVANCED);
@ -417,6 +417,7 @@ public class MissionEventDistributor {
eventEnumListMap.put(GameEvent.PLAY_MINI_GAME, typeList);
eventProcessor.put(GameEvent.PLAY_MINI_GAME, new CumulationDataEventProcessor());
// 鸿蒙碑
typeList = new ArrayList<>();
typeList.add(MissionType.HONGMENG_RESONANCE_LATTICE);
eventEnumListMap.put(GameEvent.HONGMENG_RESONANCE_LATTICE, typeList);
@ -455,7 +456,7 @@ public class MissionEventDistributor {
missionTypeEnumListMap.put(GameMisionType.MISSINGROOMMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.ACHIEVEMISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.JADE_DYNASTY_MISSION, new ArrayList<>());
missionTypeEnumListMap.put(GameMisionType.COWFLYSKYMISSION, new ArrayList<>());
} else {
missionTypeEnumListMap.get(GameMisionType.VIPMISSION).clear();
@ -468,7 +469,7 @@ public class MissionEventDistributor {
missionTypeEnumListMap.get(GameMisionType.MISSINGROOMMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.ACHIEVEMISSION).clear();
missionTypeEnumListMap.get(GameMisionType.JADE_DYNASTY_MISSION).clear();
missionTypeEnumListMap.get(GameMisionType.COWFLYSKYMISSION).clear();
}
threadMissionChangeList.set(missionTypeEnumListMap);
@ -504,7 +505,10 @@ public class MissionEventDistributor {
if(gameMisionType==GameMisionType.MISSINGROOMMISSION){
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();
}
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
*/
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){
if(refreshTotalCount==0||refreshTotalCount%refresh[0]!=0){
continue;
}else{
if(count!=0 && count%refresh[0]==0){
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){
// ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.FirstRecharge,sRechargeCommodityConfig.getPrice());
// SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(4).get(0);
if(sRechargeCommodityConfig.getPrice()!=0&&price!=0){
rechargeInfo.setFirst(1);
}
// String title = SErrorCodeEerverConfig.getI18NMessage("recharge_first_title");
// String content = SErrorCodeEerverConfig.getI18NMessage("recharge_first_txt");
// 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));
MongoUtil.getLjsdMongoTemplate().lastUpdate();
sendGiftGooodsIndication(uid);
onChargeSuccess(uid,price,0,orderId,cfgType);//充值成功上报
onChargeSuccess(user,price,0,orderId,cfgType);//充值成功上报
Map<Integer, Integer> mapReward = ItemUtil.arrayToMap(baseReward);
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());
}
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";
switch (cfgType){
case 1:
@ -464,11 +467,11 @@ public class BuyGoodsLogic {
rechargeEvent.setIp("");
rechargeEvent.setName("charge");
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,"",""));
String s = DataMessageUtils.sendRechargePost(rechargeEvent);
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){
try {
GuildLogic.updateMyPos(user);
// GuildLogic.updateMyPos(user);
if(session.getFiveReady()==1){
PlayerManager playerInfoManager = user.getPlayerInfoManager();
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;
}
}