公会战跨服

back_recharge
lvxinran 2019-09-24 12:45:56 +08:00
parent 2d869c875d
commit 0d24ba3784
7 changed files with 191 additions and 59 deletions

View File

@ -126,6 +126,8 @@ public class RedisKey {
public static final String FAMILY_JOIN = "FAMILY_JOIN";
public static final String FAMILY_INFO = "FAMILY_INFO";
public static final String FAMILY_FIGHT = "FAMILY_FIGHT" ;
public static final String FAMILY_ATTACK_BLOOD = "FAMILY_ATTACK_BLOOD";
public static final String FAMILY_FIGHT_RANK = "FAMILY_FIGHT_RANK";
@ -193,6 +195,7 @@ public class RedisKey {
familyKey.add(FAMILY_FIGHT_ATTACK_COUNT);
familyKey.add(FAMILY_FIGHT_TOTAL_STAR);
familyKey.add(FAMILY_FIGHT_TOTAL_EXP);
familyKey.add(FAMILY_INFO);
}
public static String getKey(String type, String key, boolean withoutServerId) {
if(RedisKey.TOKEN.equals(type)||RedisKey.USER_SERVER_INFO.equals(type)||familyKey.contains(type)){

View File

@ -6,6 +6,7 @@ public class PlayerInfoCache {
private String head;
private int headFrame;
private int level;
private int guildPosition;
public String getName() {
@ -47,4 +48,12 @@ public class PlayerInfoCache {
public void setLevel(int level) {
this.level = level;
}
public int getGuildPosition() {
return guildPosition;
}
public void setGuildPosition(int guildPosition) {
this.guildPosition = guildPosition;
}
}

View File

@ -0,0 +1,51 @@
package com.ljsd.jieling.logic.dao.root;
public class GuildCache {
private int serverId;
private int icon;
private int level;
private String name;
public int getServerId() {
return serverId;
}
public void setServerId(int serverId) {
this.serverId = serverId;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public GuildCache(int serverId, int icon, int level, String name) {
this.serverId = serverId;
this.icon = icon;
this.level = level;
this.name = name;
}
}

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.family;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.SArenaSetting;
import com.ljsd.jieling.config.SGuildLevelConfig;
import com.ljsd.jieling.config.SGuildScoreConfig;
@ -10,6 +11,7 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.handler.map.behavior.BehaviorUtil;
import com.ljsd.jieling.logic.blood.BloodLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GuildCache;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.CheckFight;
@ -168,8 +170,10 @@ public class GuildFightLogic {
private static Family.FamilyFightInfo familyFightDetailInfo(int guildId) throws Exception {
RedisUtil redisUtil = RedisUtil.getInstence();
Map<String, int[]> buffCache = redisUtil.getMapValues(RedisKey.FAMILY_FIGHT_BUFF, String.valueOf(guildId), String.class, int[].class);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
// GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
// Map<Integer, Integer> defendInfo = guildInfo.getDefendInfo();
GuildCache mapEntry = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildId), GuildCache.class);
// RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_FIGHT,String.valueOf(guildId),Integer.class,FamilyFightInfo.class)
Map<Integer, FamilyFightInfo> fightValues = RedisUtil.getInstence().getMapValues(RedisKey.FAMILY_FIGHT, String.valueOf(guildId), Integer.class, FamilyFightInfo.class);
Family.FamilyFightInfo.Builder fightInfo = Family.FamilyFightInfo.newBuilder();
fightInfo.setGid(guildId);
@ -182,23 +186,23 @@ public class GuildFightLogic {
}
fightInfo.addBuildBuff(buffInfo);
}
for (Map.Entry<Integer, Integer> entry : defendInfo.entrySet()) {
for (Map.Entry<Integer, FamilyFightInfo> entry : fightValues.entrySet()) {
int force = HeroLogic.getInstance().calTeamTotalForce(UserManager.getUser(entry.getKey()), 501, false);
if(force==0){
force = HeroLogic.getInstance().calTeamTotalForce(UserManager.getUser(entry.getKey()), 1, false);
}
Family.FamilyFightPlayerInfo.Builder playerInfo = Family.FamilyFightPlayerInfo.newBuilder();
playerInfo.setBuildId(entry.getValue());
playerInfo.setBuildId(entry.getValue().getBuildId());
playerInfo.setStarCount(fightValues.get(entry.getKey()).getStarCount());
PlayerManager playerManager = UserManager.getUser(entry.getKey()).getPlayerInfoManager();
PlayerInfoCache player = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(entry.getKey()), PlayerInfoCache.class);
Family.FamilyUserInfo.Builder userInfo = Family.FamilyUserInfo.newBuilder()
.setRoleUid(entry.getKey())
.setUserName(playerManager.getNickName())
.setUserLevel(playerManager.getLevel())
.setPosition(GuildLogic.getMemberType(entry.getKey(),GuilidManager.guildInfoMap.get(guildId).getMembers()))
.setUserName(player.getName())
.setUserLevel(player.getLevel())
.setPosition(player.getGuildPosition())
.setSoulForce(force)
.setHead(playerManager.getHead())
.setFrame(playerManager.getHeadFrame())
.setHead(player.getHead())
.setFrame(player.getHeadFrame())
.setContribute(0);
playerInfo.setUserInfo(userInfo.build());
fightInfo.addUser(playerInfo);
@ -238,6 +242,9 @@ public class GuildFightLogic {
String key = RedisKey.getKey(RedisKey.FAMILY_FIGHT_RANK, "", false);
SGuildSetting guildSetting = sGuildSetting;
for (Integer gid : guildIds) {
if(redisUtil.getZSetScore(RedisUtil.getInstence().getKey("guild-release", ""),"",String.valueOf(gid))!=null){
continue;
}
Map<Integer, SGuildLevelConfig> configMap = SGuildLevelConfig.sGuildLevelConfigMap;
//匹配处理
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(gid);
@ -306,11 +313,12 @@ public class GuildFightLogic {
if (enemyFamily == -1) {
continue;
}
GuildInfo enemyInfo = GuilidManager.guildInfoMap.get(enemyFamily);
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder().setId(enemyInfo.getId())
GuildCache enemyInfo = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(enemyFamily), GuildCache.class);
// GuildInfo enemyInfo = GuilidManager.guildInfoMap.get(enemyFamily);
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder().setId(enemyFamily)
.setLevel(enemyInfo.getLevel())
.setName(enemyInfo.getName())
.setPictureId(1)
.setPictureId(enemyInfo.getIcon())
.setTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(enemyFamily),Integer.class))
.setMyTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(guildInfo.getId()),Integer.class))
.build();
@ -490,7 +498,8 @@ public class GuildFightLogic {
*/
public static void getFamilyFightRoundInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
RedisUtil redisUtil = RedisUtil.getInstence();
int enemyFamily = getEnemyFamily(UserManager.getUser(session.getUid()).getPlayerInfoManager().getGuildId());
int guildId = UserManager.getUser(session.getUid()).getPlayerInfoManager().getGuildId();
int enemyFamily = getEnemyFamily(guildId);
Integer attackCount = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_ATTACK_COUNT,"",String.valueOf(session.getUid()),Integer.class);
if(attackCount==null){
attackCount = 0;
@ -503,16 +512,19 @@ public class GuildFightLogic {
.setAttackCount(attackCount)
.setJoinType(1);
if (enemyFamily != -1) {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(enemyFamily);
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder()
.setId(guildInfo.getId())
.setLevel(guildInfo.getLevel())
.setName(guildInfo.getName())
.setPictureId(1)
.setTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(enemyFamily),Integer.class))
.setMyTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(guildInfo.getId()),Integer.class))
.build();
response.setEnemy(familyInfo);
GuildCache enemyInfo = RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(enemyFamily), GuildCache.class);
// GuildInfo guildInfo = GuilidManager.guildInfoMap.get(enemyFamily);
if(enemyInfo!=null){
Family.EnemyFamily familyInfo = Family.EnemyFamily.newBuilder()
.setId(enemyFamily)
.setLevel(enemyInfo.getLevel())
.setName(enemyInfo.getName())
.setPictureId(enemyInfo.getIcon())
.setTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(enemyFamily),Integer.class))
.setMyTotalStar(redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_TOTAL_STAR,"",String.valueOf(guildId),Integer.class))
.build();
response.setEnemy(familyInfo);
}
}else{
if(status!=0&&status!=1){
if(!startMatching){
@ -643,11 +655,11 @@ public class GuildFightLogic {
continue;
}
LOGGER.info("{}公会结算",str);
Map<Integer, Integer> enemyDefendInfo = GuilidManager.guildInfoMap.get(enemyFamily).getDefendInfo();
for(Map.Entry<Integer, Integer> defend:enemyDefendInfo.entrySet()){
FamilyFightInfo mapEntry = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(enemyFamily), String.valueOf(defend.getKey()), FamilyFightInfo.class);
if(mapEntry!=null){
buildStar[defend.getValue()-1] = buildStar[defend.getValue()-1]+mapEntry.getStarCount();
// Map<Integer, Integer> enemyDefendInfo = GuilidManager.guildInfoMap.get(enemyFamily).getDefendInfo();
Map<Integer, FamilyFightInfo> fightInfo = redisUtil.getMapValues(RedisKey.FAMILY_FIGHT, "", Integer.class, FamilyFightInfo.class);
for(Map.Entry<Integer, FamilyFightInfo> defend:fightInfo.entrySet()){
if(defend!=null){
buildStar[defend.getValue().getBuildId()-1] = buildStar[defend.getValue().getBuildId()-1]+defend.getValue().getStarCount();
}
}
for(int i = 0 ; i < buildStar.length;i++){
@ -674,6 +686,9 @@ public class GuildFightLogic {
int getStar = getTotalStar(Integer.parseInt(str));
int loseStar = getTotalStar(enemyFamily);
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(str));
if(guildInfo==null){
continue;
}
LOGGER.info("公会{}获得星数:{},失去星数{}",str,getStar,loseStar);
//战绩结算
int getExp = 0;
@ -721,12 +736,21 @@ public class GuildFightLogic {
if(guildInfo.getExp()+getExp>=levelConfigMap.get(guildInfo.getLevel()).getExp()){
guildInfo.updateExp(guildInfo.getExp()+getExp-levelConfigMap.get(guildInfo.getLevel()).getExp());
guildInfo.updateLevel(guildInfo.getLevel()+1);
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO,"", String.valueOf(guildInfo.getId()),new GuildCache(GameApplication.serverId,guildInfo.getIcon(),guildInfo.getLevel(),guildInfo.getName()));
}else{
guildInfo.updateExp(guildInfo.getExp()+getExp);
}
//个人奖励
// Set<ZSetOperations.TypedTuple<String>> zsetreverseRangeWithScores = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.FAMILY_FIGHT_STAR_RANK, String.valueOf(guildId), 0, 20);
// Iterator<ZSetOperations.TypedTuple<String>> it = zsetreverseRangeWithScores.iterator();
// int rank = 1;
// Family.PersonalFightResultResponse.Builder response = Family.PersonalFightResultResponse.newBuilder();
// while (it.hasNext()){
// rank++;
// }
}
MongoUtil.getLjsdMongoTemplate().lastUpdate();
}
}
/**
*
@ -746,15 +770,16 @@ public class GuildFightLogic {
while (it.hasNext()){
ZSetOperations.TypedTuple<String> personal = it.next();
int uid = Integer.parseInt(personal.getValue());
PlayerManager playerInfoManager = UserManager.getUser(uid).getPlayerInfoManager();
PlayerInfoCache playerInfo = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(uid), PlayerInfoCache.class);
// PlayerManager playerInfoManager = UserManager.getUser(uid).getPlayerInfoManager();
Family.PersonalFightResult.Builder fightResult = Family.PersonalFightResult.newBuilder()
.setRank(rank)
.setAttackCount(RedisUtil.getInstence().getMapEntry(RedisKey.FAMILY_FIGHT_ATTACK_COUNT,"",String.valueOf(uid),Integer.class))
.setUid(uid)
.setHead(1)
.setHeadFrame(playerInfoManager.getHeadFrame())
.setPosition(GuildLogic.getMemberType(Integer.parseInt(personal.getValue()),GuilidManager.guildInfoMap.get(playerInfoManager.getGuildId()).getMembers()))
.setName(playerInfoManager.getNickName())
.setHeadFrame(playerInfo.getHeadFrame())
.setPosition(playerInfo.getGuildPosition())
.setName(playerInfo.getName())
.setStarCount(personal.getScore().intValue());
response.addResult(fightResult.build());
rank++;

View File

@ -1,7 +1,9 @@
package com.ljsd.jieling.logic.family;
import com.google.protobuf.GeneratedMessage;
import com.ljsd.GameApplication;
import com.ljsd.jieling.config.SErrorCodeEerverConfig;
import com.ljsd.jieling.config.SGuildLevelConfig;
import com.ljsd.jieling.config.SGuildSetting;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.dataReport.reportBeans_37.ChatContentType;
@ -13,10 +15,7 @@ import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GuildApply;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.GuildLog;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.root.*;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
@ -92,6 +91,10 @@ public class GuildLogic {
GuilidManager.addGuildInfo(guildInfo);
user.getPlayerInfoManager().setGuildId(guildInfo.getId());
addGuildLog(guildInfo.getId(),GuildDef.Log.CREATE,user.getPlayerInfoManager().getNickName());
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO,"",String.valueOf(guildInfo.getId()),new GuildCache(GameApplication.serverId,guildInfo.getIcon(),guildInfo.getLevel(),guildInfo.getName()));
PlayerInfoCache cache = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(uid), PlayerInfoCache.class);
cache.setGuildPosition(GlobalsDef.CHAIRMAN);
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(uid),cache);
Family.FamilyCreateResponse build = Family.FamilyCreateResponse.newBuilder()
.setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo))
.setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user,GlobalsDef.CHAIRMAN))
@ -193,7 +196,7 @@ public class GuildLogic {
Map<Integer, GuildApply> applyGuildPersonInfos = GuilidManager.getApplyGuildInfos(session.getUid(), 1);
SGuildSetting guildSetting = SGuildSetting.sGuildSetting;
if(applyGuildPersonInfos.size()>=guildSetting.getApplyLimit()){
MessageUtil.sendErrorResponse(session,0,msgId,"已达申请上线,无法继续申请");
MessageUtil.sendErrorResponse(session,0,msgId,"您当前申请上线,无法继续申请");
return;
}
for(Integer applyGuildId : applyGuilds){
@ -232,6 +235,9 @@ public class GuildLogic {
return;
}
//todo 判读人数是否已达上限
if(guildInfo.getTotalMembers()>=SGuildLevelConfig.sGuildLevelConfigMap.get(guildInfo.getLevel()).getNum()){
MessageUtil.sendErrorResponse(session,0,msgId,"该工会人数已达上限");
}
boolean isSuccess = RedisUtil.getInstence().tryGetDistributedLock(RedisKey.OPERATE_FAMILY, Integer.toString(guildId), Integer.toString(uid), 500);
if(!isSuccess){
MessageUtil.sendErrorResponse(session,0, msgId,"请稍后重试");
@ -246,6 +252,9 @@ public class GuildLogic {
}
RedisUtil.getInstence().expire(RedisKey.getKey(RedisKey.FAMILY_JOIN,String.valueOf(uid),false),TimeUtils.DAY);
addGuildLog(guildInfo.getId(),GuildDef.Log.JOIN,user.getPlayerInfoManager().getNickName());
PlayerInfoCache cache = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(uid), PlayerInfoCache.class);
cache.setGuildPosition(GlobalsDef.MEMBER);
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(uid),cache);
Family.FamilyJoinIndicaion build = Family.FamilyJoinIndicaion.newBuilder().setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo)).setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, GlobalsDef.MEMBER)).build();
Family.FamilyJoinResponse response = Family.FamilyJoinResponse.newBuilder().setFamilyJoinIndicaion(build).build();
MessageUtil.sendMessage(session,1,msgId,response,true);
@ -362,6 +371,7 @@ public class GuildLogic {
int msgId = MessageTypeProto.MessageType.FAMILY_OPERATION_APPLY_LIST_RESPONSE_VALUE;
if(getMemberType(uid,guildInfo.getMembers())>=GlobalsDef.MEMBER) {
MessageUtil.sendErrorResponse(session,0,msgId,"你无权操作申请");
return;
}
if(guildId == 0){
MessageUtil.sendErrorResponse(session,0,msgId,"未加入公会");
@ -372,6 +382,10 @@ public class GuildLogic {
MessageUtil.sendErrorResponse(session,0, msgId,"请稍后重试");
return;
}
if(GuildFightLogic.getStatus()!=0&&(type==1||type==3)){
MessageUtil.sendErrorResponse(session,0, msgId,"公会战期间不允许加入成员");
return;
}
try {
Map<Integer, GuildApply> applyGuild = GuilidManager.getApplyGuildInfos(guildId, 0);
switch (type){
@ -381,6 +395,10 @@ public class GuildLogic {
for(Set<Integer> memberOfType : members.values()){
count+=memberOfType.size();
}
if(guildInfo.getTotalMembers()+applyGuild.size()>SGuildLevelConfig.sGuildLevelConfigMap.get(guildInfo.getLevel()).getNum()){
MessageUtil.sendErrorResponse(session,0,msgId,"全部同意后公会人数将大于最大人数,请单个同意");
return;
}
for(Integer addUid : applyGuild.keySet()){
if(30-count<=0){
break;
@ -402,6 +420,10 @@ public class GuildLogic {
}
break;
case 3: //同意一个
if(guildInfo.getTotalMembers()>=SGuildLevelConfig.sGuildLevelConfigMap.get(guildInfo.getLevel()).getNum()){
MessageUtil.sendErrorResponse(session,0,msgId,"公会人数已满,无法加入");
return;
}
applyToJoin(guildInfo,applyId,true);
Map<Integer, GuildApply> applyPersonal = GuilidManager.getApplyGuildInfos(applyId, 1);
for(Map.Entry<Integer, GuildApply> personalEntry:applyPersonal.entrySet()) {
@ -482,6 +504,10 @@ public class GuildLogic {
MessageUtil.sendErrorResponse(session,0,msgId,"该人已被踢出");
return;
}
if(GuildFightLogic.getStatus()!=0){
MessageUtil.sendErrorResponse(session,0, msgId,"公会战期间不允许踢出成员");
return;
}
//如果有防守信息则删除
if(guildInfo.getDefendInfo().containsKey((targetUid))){
guildInfo.removeDefendInfo(targetUid);
@ -520,8 +546,20 @@ public class GuildLogic {
MessageUtil.sendErrorResponse(session,0,msgId,"无权操作");
return;
}
if(GuildFightLogic.getStatus()!=0){
MessageUtil.sendErrorResponse(session,0, msgId,"公会战期间不允许任命");
return;
}
if(guildInfo.getMembers().get(2)!=null&&guildInfo.getMembers().get(2).size()>=SGuildLevelConfig.sGuildLevelConfigMap.get(guildInfo.getLevel()).getOfficalNum()){
MessageUtil.sendErrorResponse(session,0,msgId,"官员人数已上限");
return;
}
guildInfo.removeMember(targetType,targetUid);
guildInfo.addMembers(position,targetUid);
PlayerInfoCache cache = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(uid), PlayerInfoCache.class);
cache.setGuildPosition(position);
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(uid),cache);
sendPositionChange(targetUid,position);
User targetUser = UserManager.getUser(targetUid);
if(position == GlobalsDef.CHAIRMAN){
@ -716,6 +754,9 @@ public class GuildLogic {
if(guildInfo.getDefendInfo().containsKey((uid))){
guildInfo.removeDefendInfo(uid);
}
PlayerInfoCache cache = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(uid), PlayerInfoCache.class);
cache.setGuildPosition(0);
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(uid),cache);
guildInfo.removeMember(uidType,uid);
user.getPlayerInfoManager().setGuildId(0);
user.getGuildMyInfo().clearOfLevelGuild();
@ -857,14 +898,16 @@ public class GuildLogic {
public static void changeFamilyIcon(ISession session, int iconId, MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
PlayerManager playerInfoManager = user.getPlayerInfoManager();
GuilidManager.guildInfoMap.get(playerInfoManager.getGuildId()).updateIcon(iconId);
int[] cost = SGuildSetting.sGuildSetting.getTotemCost();
int[][] cost1 = new int[1][];
cost1[0] = cost;
boolean b = ItemUtil.itemCost(user, cost1, BIReason.FAMILY_SET_ICON, 1);
if (!b){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"消耗物品不足");
return;
}
GuilidManager.guildInfoMap.get(playerInfoManager.getGuildId()).updateIcon(iconId);
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO,"", String.valueOf(playerInfoManager.getGuildId()),new GuildCache(GameApplication.serverId,iconId,GuilidManager.guildInfoMap.get(playerInfoManager.getGuildId()).getLevel(),GuilidManager.guildInfoMap.get(playerInfoManager.getGuildId()).getName()));
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
}
}

View File

@ -129,25 +129,25 @@ public class CombatLogic {
int contiue = sFoodsConfig.getContiue();
if(contiue==0){
contiue=-1;
// int teamId = mapManager.getTeamId();
// List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(teamId);
// Map<Integer,Integer> foodAddMap = new HashMap<>();
// getFoodAttributeAdd(GlobalsDef.FOOD_ADDITION_BATTLE_TYPE, GlobalsDef.FOOD_EAT_AFFECT_PERSON, foodAddMap, sFoodsConfig);
// for (TeamPosHeroInfo heroInfo : teamPosHeroInfoList) {
// Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
// if (hero == null) {
// continue;
// }
// Map<Integer, Integer> heroAllAttribute = user.getMapManager().getHeroAllAttributeByHeroId(hero.getId());
// if(heroAllAttribute == null || heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId()) <= 0){
// continue;
// }
//
// HeroLogic.getInstance().combinedAttribute(foodAddMap,heroAllAttribute);
// HeroLogic.getInstance().calInteractAdd(heroAllAttribute);
// heroAllAttributeMap.put(hero.getId(), heroAllAttribute);
// }
// mapManager.setHeroAllAttributeMap(heroAllAttributeMap);
int teamId = mapManager.getTeamId();
List<TeamPosHeroInfo> teamPosHeroInfoList = user.getTeamPosManager().getTeamPosForHero().get(teamId);
Map<Integer,Integer> foodAddMap = new HashMap<>();
getFoodAttributeAdd(GlobalsDef.FOOD_ADDITION_BATTLE_TYPE, GlobalsDef.FOOD_EAT_AFFECT_PERSON, foodAddMap, sFoodsConfig);
for (TeamPosHeroInfo heroInfo : teamPosHeroInfoList) {
Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId());
if (hero == null) {
continue;
}
Map<Integer, Integer> heroAllAttribute = user.getMapManager().getHeroAllAttributeByHeroId(hero.getId());
if(heroAllAttribute == null || heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId()) <= 0){
continue;
}
HeroLogic.getInstance().combinedAttribute(foodAddMap,heroAllAttribute);
HeroLogic.getInstance().calInteractAdd(heroAllAttribute);
heroAllAttributeMap.put(hero.getId(), heroAllAttribute);
}
mapManager.setHeroAllAttributeMap(heroAllAttributeMap);
}
mapManager.eatFood(foodIdOrEventId,contiue);
}

View File

@ -523,6 +523,7 @@ public class PlayerLogic {
cache.setName(playerInfoManager.getNickName());
cache.setLevel(playerInfoManager.getLevel());
cache.setServerId(GameApplication.serverId);
cache.setGuildPosition(0);
RedisUtil.getInstence().putMapEntry(RedisKey.PLAYER_INFO_CACHE,"",String.valueOf(user.getId()),cache);
}
}