星力九代 命中算法源代码 特殊用户处理 点控调整
Posted sevensky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了星力九代 命中算法源代码 特殊用户处理 点控调整相关的知识,希望对你有一定的参考价值。
难度命中算法制excel表格
package com.miracle9.game.algorithm; import com.miracle9.game.algorithm.FishServerSuanfa.FISH_TYPE; import java.util.Objects; import java.util.Random; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; public class DieFishSuanfa { public Logger log = Logger.getLogger(DieFishSuanfa.class); private static float afloat14 = 1.4F; private static int _int10 = 10; private static int _int4 = 4; private static int int10w = 1000000; private static float _float05f = 0.5F; private static double IIllIIlIIlIlIlIl; private static float[] levelPoint = new float[]{0.999F, 0.998F, 0.997F, 0.996F, 0.995F}; private STRUCT_GET_GF_RECORD struct_record = new STRUCT_GET_GF_RECORD(); private long _totalPlay; private long _totalWin; private boolean _fangWater; private double _amendedGameDf; double gameDf = 0.7 ; Random mRand = new Random(); public DieFishSuanfa() { this.Init(); } public void Init() { //DOMConfigurator.configureAndWatch("config/log4j.xml", 10000L); String logenable = LoadPropertiesUtil.getKey("../setting.properties", "logenable"); if (logenable.equals("INFO")) log.setLevel(Level.INFO); else if(logenable.equals("DEBUG")) log.setLevel(Level.DEBUG); else log.setLevel(Level.OFF); this.struct_record.totalRecord = 0L; for(int i = 0; i < _int4; ++i) { this.struct_record.record[i] = 0L; this.struct_record.tmpGf[i] = 1.0D; } this._fangWater = false; this._totalPlay = 0L; this._totalWin = 0L; } public double GetGameDf(int level) { if (level > 5 || level <= 0) { level = 3; } double[] var2 = new double[]{(double)0.99F, (double)0.95F, (double)0.9F, (double)0.8F, (double)0.75F}; return var2[level - 1]; //return (double)levelPoint[level - 1]; // Q10 备用 } public DieFishOutputInfo Fishing(DieFishInputInfo input) { DieFishOutputInfo output = new DieFishOutputInfo(); int nFishCounts = input.totalFish; //System.out.println( " nFishCounts: "+ nFishCounts ); int fishesCanGetIonic = 0; int ionicFlag = 0; int i; for(i = 0; i < nFishCounts; ++i) { output.dead[i].fishType = -1; output.dead[i].bet = 0; output.dead[i].fishid = input.fishes[i].fishid; output.dead[i].fx = input.fishes[i].fx; output.dead[i].fy = input.fishes[i].fy; } output.ionicCannonIndex = -1; gameDf = this.GetGameDf(input.gameDfLevel); //System.out.print("A3 "+input.hallType+" B3 "+input.gameDfLevel +" totalFish "+nFishCounts+" gameDf "+ gameDf); this._Preprocess(input); //处理额外奖励倍数 this._amendedGameDf = this._AmendGameDf(input); log.debug("当前 _AmendGameDf: "+ this._amendedGameDf ); // 0.9681936677049267 output.totalFish = input.totalFish; for(i = 0; i < nFishCounts; ++i) { output.dead[i].fishType = input.fishes[i].fishType; } label48: { if (input.locked) { this._CalculateLockedFish(input, output); if (output.dead[0].bet <= 0) { break label48; } } this._CalcultateUnlockedFishes(input, output); } //倍数大于9 有1/30机会获得能量炮 for(i = 0; i < nFishCounts; ++i) { if (output.dead[i].bet > 9) { ++fishesCanGetIonic; ionicFlag = output.dead[i].fishid; break; } } if (fishesCanGetIonic > 0) { if (Math.random() < (double)fishesCanGetIonic / 30.0D) { output.ionicCannonIndex = ionicFlag; } else { output.ionicCannonIndex = -1; } } output.totalFish = 0; for(i = 0; i < nFishCounts; ++i) { //System.out.println(i+" bet: "+ output.dead[i].bet ); //System.out.println(i+" output.totalFish: "+ output.totalFish ); if (output.dead[i].bet > 0) { output.dead[output.totalFish] = output.dead[i]; ++output.totalFish; } } //System.out.println(" output.totalFish: "+ output.totalFish ); return output; } //修正游戏难度 public double ModifyGameDf(long totalPlay, double gameDf, int coinValue, int hallType) { double dbGameDf; long profitStartCredit = 0L; double tmp = 0.0D; switch(hallType) { case 1: profitStartCredit = (long)(coinValue * 500000); break; case 2: profitStartCredit = (long)(coinValue * 1000000); break; case 3: profitStartCredit = (long)(coinValue * 2000000); break; } long profitConvergenceZone = (long)((double)(profitStartCredit * 5L) * (1.0D - gameDf) - (double)profitStartCredit * 0.001D); if (totalPlay < profitStartCredit) { dbGameDf = 0.999D; } else if (totalPlay < profitStartCredit << 1) { dbGameDf = 0.999D - (-0.0010000000000000009D + ((double)profitConvergenceZone * 0.25D + (double)profitStartCredit * 0.001D) / (double)(profitStartCredit << 1)) * (double)(totalPlay - profitStartCredit) / (double)profitStartCredit; } else if (totalPlay < profitStartCredit * 3L) { dbGameDf = (tmp = 1.0D - ((double)profitConvergenceZone * 0.25D + (double)profitStartCredit * 0.001D) / (double)(profitStartCredit << 1)) - (tmp - 1.0D + ((double)profitConvergenceZone * 0.5D + (double)profitStartCredit * 0.001D) / (double)(profitStartCredit * 3L)) * (double)(totalPlay - (profitStartCredit << 1)) / (double)profitStartCredit; } else if (totalPlay < profitStartCredit << 2) { dbGameDf = (tmp = 1.0D - ((double)profitConvergenceZone * 0.5D + (double)profitStartCredit * 0.001D) / (double)(profitStartCredit * 3L)) - (tmp - 1.0D + ((double)profitConvergenceZone * 0.75D + (double)profitStartCredit * 0.001D) / (double)(profitStartCredit << 2)) * (double)(totalPlay - profitStartCredit * 3L) / (double)profitStartCredit; } else if (totalPlay < profitStartCredit * 5L) { dbGameDf = (tmp = 1.0D - ((double)profitConvergenceZone * 0.75D + (double)profitStartCredit * 0.001D) / (double)(profitStartCredit << 2)) - (tmp - gameDf) * (double)(totalPlay - (profitStartCredit << 2)) / (double)profitStartCredit; } else { dbGameDf = gameDf; } System.out.print( "ModifyGameDf dbGameDf->"+dbGameDf ); return (double)((float)dbGameDf); } /** * 处理奖励倍数 * */ public void _Preprocess(DieFishInputInfo input) { int i,j; for(i = 0; i < input.totalFish; ++i) { if (FISH_TYPE.Fish_GreenDragon.ordinal() == input.fishes[i].fishType) { if (this.mRand.nextDouble() < 0.66D) { input.fishes[i].bet = this.mRand.nextInt(41) + 40; } else { input.fishes[i].bet = this.mRand.nextInt(61) + 40; } } else if (FISH_TYPE.Fish_SilverDragon.ordinal() == input.fishes[i].fishType) { if (this.mRand.nextDouble() < 0.8571D) { input.fishes[i].bet = this.mRand.nextInt(201) + 100; } else { input.fishes[i].bet = this.mRand.nextInt(101) + 100; } } //牛魔王 else if (FISH_TYPE.Fish_GoldenDragon.ordinal() == input.fishes[i].fishType) { // double gameDf = this.GetGameDf(input.gameDfLevel); int betflag=1 , RandInt301 = this.mRand.nextInt(75); double RandFloat = this.mRand.nextDouble(); double totalCoin = gameDf*input.totalPlay - input.totalWin; if (totalCoin > 30000L*input.coinValue){ //原版 1-0.8571D 可能600倍以上 if (this.mRand.nextDouble() < 0.8571D) j = this.mRand.nextInt(301) + 300; else j = this.mRand.nextInt(401) + 600; }else{ if (totalCoin > 10000L*input.coinValue) betflag = 4; else if (totalCoin > 6000L*input.coinValue) betflag = 3; else if (totalCoin > 3000L*input.coinValue) betflag = 2; else betflag = 1; if (RandFloat < 0.12D) j = betflag*this.mRand.nextInt(101) + 300; else if(RandFloat < 0.15D) j = betflag*RandInt301 +130 + 300; else if(RandFloat < 0.18D) j = betflag*RandInt301 +110 + 300; else if(RandFloat < 0.20D) j = betflag*RandInt301 +100 + 300; else if(RandFloat < 0.22D) j = betflag*RandInt301 +60 + 300; else if(RandFloat < 0.25D) j = betflag*RandInt301 +30 + 300; else j = betflag*this.mRand.nextInt(80) + 300; } input.fishes[i].bet = j; } } if (input.locked) { if (input.fishes[0].fishType == FISH_TYPE.Fish_Double_Kill.ordinal()) { for(i = 1; i < input.totalFish; ++i) { input.fishes[i].bet = -1; } } if (FISH_TYPE.Fish_Same_Shrimp.ordinal() <= input.fishes[0].fishType && input.fishes[0].fishType <= FISH_TYPE.Fish_Same_Turtle.ordinal()) { for(i = 1; i < input.totalFish; ++i) { if (input.fishes[i].fishType == input.fishes[0].fishType) { input.fishes[i].bet = -1; } } } else { for(i = 1; i < input.totalFish; ++i) { if (input.fishes[i].fishType == FISH_TYPE.Fish_LimitedBomb.ordinal() || input.fishes[i].fishType == FISH_TYPE.Fish_Double_Kill.ordinal() || FISH_TYPE.Fish_Same_Shrimp.ordinal() <= input.fishes[i].fishType && input.fishes[i].fishType <= FISH_TYPE.Fish_Same_Turtle.ordinal()) { input.fishes[i].bet = -1; } } } } else { for(i = 0; i < input.totalFish; ++i) { if (input.fishes[i].fishType == FISH_TYPE.Fish_LimitedBomb.ordinal() && input.totalFish > 1 && input.fishes[i].bet != -1) { if (this.mRand.nextBoolean()) { for(j = 0; j < input.totalFish; ++j) { if (i != j) { input.fishes[j].bet = -1; } } } else { input.fishes[i].bet = -1; } } else if (FISH_TYPE.Fish_Same_Shrimp.ordinal() <= input.fishes[i].fishType && input.fishes[i].fishType <= FISH_TYPE.Fish_Same_Turtle.ordinal() && input.fishes[i].bet != -1) { for(j = 0; j < input.totalFish; ++j) { if (i != j && input.fishes[j].fishType == input.fishes[i].fishType) { input.fishes[j].bet = -1; } } } else if (input.fishes[i].fishType == FISH_TYPE.Fish_Double_Kill.ordinal() && input.fishes[i].bet != -1) { for(j = 0; j < input.totalFish; ++j) { if (i != j && (input.fishes[j].fishType == input.fishes[i].doubleKillType[0] || input.fishes[j].fishType == input.fishes[i].doubleKillType[1])) { input.fishes[j].bet = -1; } } } } } } private static boolean IIIIlIlIIIIlIIlI(DieFishInputInfo input) { double credit = (double)input.fishes[0].bet * 0.19999999999999996D / 0.8D; double[] pkill = new double[_int10]; double[] rateAmongFish = new double[_int10]; double totalRate = 0.0D; boolean flag = false; if (input.fishes[0].fishType == FISH_TYPE.Fish_LimitedBomb.ordinal()) { flag = true; } if (input.fishes[0].fishType == FISH_TYPE.Fish_SilverDragon.ordinal()) { flag = true; } if (FISH_TYPE.Fish_BigEars_Group.ordinal() <= input.fishes[0].fishType && input.fishes[0].fishType <= FISH_TYPE.Fish_Turtle_Group.ordinal()) { flag = true; } if (input.fishes[0].fishType == FISH_TYPE.Fish_GoldenDragon.ordinal()) { flag = true; } int i; for(i = 1; i < _int10; ++i) { pkill[i] = 0.0D; rateAmongFish[i] = 0.0D; } for(i = 1; i < input.totalFish; ++i) { if (input.fishes[i].bet > 0) { totalRate += Math.pow((double)input.fishes[i].bet, 0.5D); } } if (totalRate < 0.1D) { flag = true; } else { for(i = 1; i < input.totalFish; ++i) { if (input.fishes[i].bet > 0) { rateAmongFish[i] = Math.pow((double)input.fishes[i].bet, 0.5D) / totalRate; } } } for(i = 1; i < input.totalFish; ++i) { if (input.fishes[i].bet > 0) { pkill[i] = credit * rateAmongFish[i] / (double)input.fishes[i].bet; } if (pkill[i] > 1.0D) { flag = true; } } return flag; } public void _CalculateLockedFish(DieFishInputInfo input, DieFishOutputInfo output) { double a = this._AmendGameDf(input) * 0.8D; double prob; if (IIIIlIlIIIIlIIlI(input)) { prob = a / 0.8D / (double)input.fishes[0].bet; } else { prob = a / (double)input.fishes[0].bet; } System.out.print(prob); if (this.mRand.nextDouble() < prob) { output.dead[0].bet = input.fishes[0].bet; } } public void _CalcultateUnlockedFishes(DieFishInputInfo input, DieFishOutputInfo output) { double var3 = 0.0D; double[] pkill = new double[_int10]; double[] rateAmongFish = new double[_int10]; double totalRate = 0.0D; double amendedGameDf = this._amendedGameDf; int lockFlag = 0; if (input.locked) { lockFlag = 1; if (IIIIlIlIIIIlIIlI(input)) { lockFlag = input.totalFish; } } int i; for(i = 0; i < _int10; ++i) { pkill[i] = 0.0D; rateAmongFish[i] = 0.0D; } //region 击中的权重分配 不影响命中 for(i = lockFlag; i < input.totalFish; ++i) { if (input.fishes[i].bet > 0) { totalRate += Math.pow( (double)input.fishes[i].bet, (double) _float05f) ;// 18 } } //如果击中多条 按权重分配每条鱼 for(i = lockFlag; i < input.totalFish; ++i) { if (input.fishes[i].bet > 0) { rateAmongFish[i] = Math.pow((double)input.fishes[i].bet, (double) _float05f) / totalRate; } } //endregion //按当前难度,确认命中 fix 如果special标记 提高4倍命中 for(i = lockFlag; i < input.totalFish; ++i) { if (lockFlag == 0) { if (input.fishes[i].bet > 0) { pkill[i] = amendedGameDf * rateAmongFish[i] / (double)input.fishes[i].bet; } else { pkill[i] = -1.0D; } } else if (input.fishes[i].bet > 0) { pkill[i] = (double)input.fishes[0].bet * 0.24999999999999994D * rateAmongFish[i] / (double)input.fishes[i].bet; } else { pkill[i] = -1.0D; } //System.out.print(" fsDead "+input.fishes[i].fsDead); if (input.fishes[i].fsDead){ pkill[i] = 2.0 * pkill[i]; if (input.fishes[i].bet>299 ) pkill[i] = 10.0 * pkill[i]; else if(input.fishes[i].bet>99 ) pkill[i] = 4.0 * pkill[i]; else if(input.fishes[i].bet>39) pkill[i] = 2.0 * pkill[i]; } var3 = this.mRand.nextDouble() ; //System.out.print("rand "+var3+ " < pkill["+i+"] " + pkill[i] + " rateAmongFish[i] " +rateAmongFish[i]); if ( var3 < pkill[i]) { output.dead[i].bet = input.fishes[i].bet; } else { output.dead[i].bet = 0; } } } public double _AmendGameDf(DieFishInputInfo input) { //region 异常炮值修正 if (input.coinValue <= 0 || input.coinValue > 10000) { input.coinValue = 500; } //场地类型 if (input.hallType <= 0 || input.hallType > 3) {input.hallType = 2;} //endregion // 逻辑部分开始 double l_feadback3 = 1.0D; double specialAmend = 1.0D; if (input.coinValue < 500) { specialAmend = Math.pow( (double)input.coinValue / 500.0D , 0.8D); //pow(底数,次方) } // [ 阶段盈利 = 动态(总押-总得) - 参照(总押-总得) ] double nowWin = (double)(input.totalPlay - input.totalWin - (this._totalPlay - this._totalWin)); //当 重启后 或者 动态总押-参照总押 > 20W if (input.totalPlay - this._totalPlay > 200000L * (long)input.coinValue || this._totalPlay == 0L) { // 阶段盈利 > [ 3W / specialAmend ] if (this._totalPlay != 0L && nowWin > (double)(30000 * input.coinValue) / specialAmend) { this._fangWater = true; } else { this._fangWater = false; l_feadback3 = 1.0D; } this._totalPlay = input.totalPlay; this._totalWin = input.totalWin; } // 如果阶段盈利 且 币值>200 且 阶段盈利 + 1.5w > 0 if (this._fangWater && input.coinValue > 200 && nowWin + 15000.0D * (double)input.coinValue > 0.0D) { // l_FeedBack3 = 1.0D + { 阶段盈利 + 1.5W } / 10W l_feadback3 = 1.0D + ( nowWin + 15000.0D * (double)input.coinValue) / (100000.0D * (double)input.coinValue); } log.debug(" input.totalPlay=" +input.totalPlay +" input.totalWin=" +input.totalWin +" this._totalPlay=" +this._totalPlay +" this._totalWin=" + this._totalWin +" input.totalPlay - this._totalPlay=" + (input.totalPlay - this._totalPlay) +" nowWin =" + nowWin +" input.slavePlay=" + input.slavePlay +" input.slaveWin=" + input.slaveWin + " water->"+this._fangWater + " l_FeedBack3->"+l_feadback3+ " totalUnproCredit->" + input.totalUnproCredit); gameDf = this.GetGameDf(input.gameDfLevel); // 读取台桌难度系数 input.totalWin += (long)(gameDf * (double)input.totalUnproCredit); //飞在外面的分 可忽略 //座位总押盈利大于200 && 总押>20 if (this.struct_record.record[input.whichSlave] <= 0L || input.slavePlay - this.struct_record.record[input.whichSlave] > (long)( input.coinValue * 200 ) && input.totalPlay - this.struct_record.totalRecord > (long)(input.coinValue * 20)) { this.struct_record.totalRecord = input.totalPlay; // 动态总押 this.struct_record.record[input.whichSlave] = input.slavePlay; // 座位总押 STRUCT_AMEND_INPUT_SIM simAmendInput = new STRUCT_AMEND_INPUT_SIM(); simAmendInput.coinValue = input.coinValue; simAmendInput.gameDf = gameDf; simAmendInput.hallType = input.hallType; simAmendInput.feadback3 = l_feadback3; simAmendInput.totalPlay = input.totalPlay; simAmendInput.totalWin = input.totalWin; simAmendInput.slavePlay = input.slavePlay; simAmendInput.slaveWin = input.slaveWin; this.struct_record.tmpGf[input.whichSlave] = this.AmendGameDf_sim(simAmendInput); } return this.struct_record.tmpGf[input.whichSlave]; } /* 修正游戏难度 */ public double AmendGameDf_sim(STRUCT_AMEND_INPUT_SIM input) { double specialAmend = 1.0D; if (input.coinValue < 500 && input.gameDf * (double)input.totalPlay - (double)input.totalWin > 0.0D) { specialAmend = Math.pow((double)input.coinValue / 500.0D, 1.0D); // Math.pow(A,B) A的B次方 } // 1.0 + 1.0 * pow( 3/2 ,1.4 )=1.76 * (1.0 / 1000) * (gameDf * totalPlay -totalWin ) / 10w // 1.0 + 1.0 * pow( 3/2 ,1.4 )=1.76 * (1.0 / 1000) * (gameDf * slavePlay -slaveWin ) / 50w double feadback1 = 1.0D + specialAmend * Math.pow( 3.0D / (double)input.hallType , (double) afloat14) * (1.0D / (double)input.coinValue) * (input.gameDf * (double)input.totalPlay - (double)input.totalWin) / (double) int10w; double feadback2 = 1.0D + specialAmend * Math.pow( 3.0D / (double)input.hallType , (double) afloat14) * (1.0D / (double)input.coinValue) * (input.gameDf * (double)input.slavePlay - (double)input.slaveWin) / (double)(int10w *5); log.debug("feadback1=" + feadback1+" feadback2=" + feadback2); //预估盈利>(2WB/samend)且 总押<200WB if (input.gameDf * (double)input.totalPlay - (double)input.totalWin > (double)(20000 * input.coinValue) / specialAmend && input.totalPlay < 2000000L * (long)input.coinValue) { feadback1 = 1.0D + (feadback1 - 1.0D) * 5.0D; } else if (input.gameDf * (double)input.totalPlay - (double)input.totalWin > (double)(30000 * input.coinValue) / specialAmend) { feadback1 = 1.0D + (feadback1 - 1.0D) * 5.0D; } double F8 = feadback1 * feadback2 * input.feadback3; log.debug( "F8=" + F8+" feadback3=" + input.feadback3 ); if (F8 < 0.9D) { F8 = 0.9D; } else if (F8 > 1.1D) { F8 = 1.1D; } return input.gameDf * F8; } }
UserService
package com.miracle9.game.service; import com.google.gson.Gson; import com.miracle9.game.IIIIlIlIIIIlIIlI.IIIIlIlllllIlllI; import com.miracle9.game.IIIIlIlIIIIlIIlI.IIlIlIIIIIlllIIl; import com.miracle9.game.IIIIlIlIIIIlIIlI.IIlIllIlllIIIlIl; import com.miracle9.game.IIIIlIlIIIIlIIlI.IIlllIIIlIllIIIl; import com.miracle9.game.IIIIlIlIIIIlIIlI.IIlllIlllllIIIIl; import com.miracle9.game.IIIIlIlIIIIlIIlI.IlIIIIIlIllIlIIl; import com.miracle9.game.IIIIlIlIIIIlIIlI.IlIIlIlIlllIllIl; import com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlIIIIlIIlI; //import com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI; import com.miracle9.game.IIIIlIlllllIlllI.IIIllIlIlIlIlIll; //import com.miracle9.game.IIIllIlIlIlIlIll.IIIIlIlllllIlllI; //import com.miracle9.game.IIIllIlIlIlIlIll.IIlIlIIIIIlllIIl; //import com.miracle9.game.IIIllIlIlIlIlIll.IlIIIIIlIllIlIIl; import com.miracle9.game.algorithm.DieFishInputInfo; import com.miracle9.game.algorithm.DieFishOutputInfo; import com.miracle9.game.algorithm.FishInfo; import com.miracle9.game.algorithm.FishServerSuanfa; import com.miracle9.game.bean.HitFish; /* import com.miracle9.game.bean.IIIIlIlllllIlllI; import com.miracle9.game.bean.IIIllIlIlIlIlIll; import com.miracle9.game.bean.IIlIlIIIIIlllIIl; import com.miracle9.game.bean.IIlIllIlllIIIlIl; */ import com.miracle9.game.bean.Seat; import com.miracle9.game.entity.BulletFishDesk; import com.miracle9.game.entity.GameDataLog; import com.miracle9.game.entity.LevelInfo; import com.miracle9.game.entity.Promoter; import com.miracle9.game.entity.SystemConfig; import com.miracle9.game.entity.User; import com.miracle9.game.entity.UserTenMinScore; import com.miracle9.game.entity.UserTop; import com.miracle9.game.entity.UserWarning; import com.miracle9.game.entity.Version; import com.miracle9.game.util.LocalMem; import com.miracle9.game.util.MyUtil; import com.miracle9.game.util.OverFishPropertyUtil; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; import java.util.Set; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.codec.digest.DigestUtils; import org.apache.log4j.Logger; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.iosession; import org.hibernate.Query; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service("userService") public class UserService { public static Map<String, Map<Long, Integer>> userDeskTimeMap = new HashMap(); public static ConcurrentHashMap<Integer, User> CacheUser = new ConcurrentHashMap(); public static ConcurrentHashMap<Integer, UserWarning> userWardingCache = new ConcurrentHashMap(); public static Set<Integer> IIlllIIIlIllIIIllsiillill = new HashSet(); public static String xxoo = "29a28sp2hYae1Zf2WKV1ZHMnQX"; public static final double jingjiScore = 0.00926D; public static final double lianxiScore = 0.00463D; public Logger log = Logger.getLogger(UserService.class); // public static Logger logger2 = Logger.getLogger(UserService.class); @Autowired private IIllIIlIIlIlIlIl manageService; @Autowired private IIlllIlllllIIIIl userDao; @Autowired private IlIIIIIlIllIlIIl userTopDao; @Autowired private IIlIllIlllIIIlIl levelInfoDao; @Autowired private com.miracle9.game.IIIIlIlIIIIlIIlI.IIllIIlIIlIlIlIl promoterDao; @Autowired private IIlIlIIIIIlllIIl gameDataLogDao; @Autowired private IIIIlIlllllIlllI bulletFishDeskDao; @Autowired private IIlllIIIlIllIIIl systemConfigDao; @Autowired private com.miracle9.game.service.IIlllIlllllIIIIl userTenMinScoreService; @Autowired private IlIIlIlIlllIllIl versionDao; @Autowired private IIllllIlIlIlIIll userWarningService; public UserService() { } public void publicKey(String modulus, String exponent, IoSession session) { session.setAttribute("attack", "false"); Map<String, Object> arg = new HashMap(); String key = MyUtil.IlIIlIlIlllIllIl(16); LocalMem.y.put(session, key); key = MyUtil.IIIIlIlIIIIlIIlI(key, modulus, exponent); arg.put("key", key); arg.put("time", System.currentTimeMillis()); HashMap<String, Object> map = new HashMap(); map.put("method", "sendServerTime"); map.put("args", new Object[]{arg}); try { Gson gson = new Gson(); String msgJson = gson.toJson(map); byte[] content = msgJson.getBytes(); IoBuffer bb = IoBuffer.allocate(content.length + 4); bb.putInt(content.length); bb.put(content); bb.flip(); session.write(bb); } catch (Exception var11) { this.log.error("", var11); } } @Transactional public Map<String, Object> checkLogin(String username, String password, int uuid, IoSession session) { return this.checkLogin(username, password, uuid, "", session); } @Transactional public Map<String, Object> checkLogin(String username, String password, int uuid, String versionCode, final IoSession session) { User user = (User)this.userDao.IIlIllIlllIIIlIl("from User where username=?", new Object[]{username}); this.log.info("UserLogin:" + username + "," + user.getGameGold() + "," + user.getGameScore() + "," + uuid); if (uuid == 1 && !versionCode.equals("")) { Version version = this.versionDao.IlIIIIllllIIllIl(4); if (version != null && !version.getVersionCode().equals(versionCode)) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "checkVersion", new Object[]{version.getDownloadWindows()})); return null; } } Map<String, Object> result = new HashMap(); result.put("isLogin", false); result.put("messageStatus", -1); result.put("user", (Object)null); if (user == null || !user.getPassword().equals(DigestUtils.md5Hex(password))) { result.put("messageStatus", 0); return result; } //if (user != null && user.getPassword().equals(DigestUtils.md5Hex(password))) { if (user.getGameScore() > 0) { this.log.info("GameScore:" + user.getGameScore()); return null; } if (user.getStatus() != 0) { result.put("messageStatus", 1); return result; } SystemConfig config = this.systemConfigDao.IIllIIlIIlIlIlIl(); if (config != null && config.getGameStatus() == 1 && user.getType() != 2) { result.put("messageStatus", 2); return result; } // else { if (LocalMem.B.containsKey(user.getId())) { IoSession is = (IoSession)LocalMem.B.remove(user.getId()); if (LocalMem.z.containsKey(is)) { LocalMem.z.remove(is); } is.removeAttribute("id"); is.removeAttribute("username"); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(is, "quitToLogin", new Object[]{4})); is.setAttribute("needRemove", "true"); } session.setAttribute("username", user.getName()); session.setAttribute("id", user.getId()); LocalMem.B.put(user.getId(), session); session.setAttribute("trueClient", "true"); result.put("isLogin", true); result.put("isShutup", config.getChat() == 0); result.put("user", user); result.put("special", LocalMem.special); IIIllIlIlIlIlIll.IIIIlIlIIIIlIIlI(new IIIIlIlIIIIlIIlI(session, "checkLogin", new Object[]{result})); if (uuid == 1) { com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("gameService/login", new Object[]{user.getId(), com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.llllllIlllIIlIll}); if (CacheUser.containsKey(user.getId())) { this.log.info("remove user from usercache when login userId:" + user.getId()); CacheUser.remove(user.getId()); } } else { com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("gameService/reLogin", new Object[]{user.getId(), com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.llllllIlllIIlIll}); } if (!CacheUser.containsKey(user.getId())) { CacheUser.put(user.getId(), user); } else { ((User)CacheUser.get(user.getId())).setNickname(user.getNickname()); ((User)CacheUser.get(user.getId())).setLevel(user.getLevel()); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameScore", new Object[]{getUserScore(user.getId())})); } com.miracle9.game.bean.IIIIlIlllllIlllI ds; if (uuid == 1) { if (LocalMem.C.containsKey(user.getId())) { LocalMem.C.remove(user.getId()); } if (LocalMem.D.containsKey(user.getId())) { this.clearingUserScore(user.getId()); ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.remove(user.getId()); this.refreshUser(ds.deskId); } } else if (uuid == 2) { Integer roomId = (Integer)LocalMem.C.remove(user.getId()); if (roomId != null) { if (LocalMem.D.containsKey(user.getId())) { this.clearingUserScore(user.getId()); //com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.remove(user.getId()); this.refreshUser(ds.deskId); } this.enterRoom(roomId - 1, session); } else { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "quitToLogin", new Object[]{6})); } } else if (uuid == 3) { ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(user.getId()); if (ds != null) { int roomId = (Integer)LocalMem.C.remove(user.getId()); this.enterRoom(roomId - 1, session); this.refreshUser(ds.deskId); } else { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "quitToLogin", new Object[]{6})); this.log.error(username + "重连失败quitToLogin 6"); } } this.userDao.IIIIlIlIIIIlIIlI("update User set lastGame = 3 where id = ?", new Object[]{user.getId()}).executeUpdate(); final int isShutup = user.getShutupStatus(); (new Thread() { @Override public void run() { try { Thread.sleep(5000L); } catch (InterruptedException var2) { var2.printStackTrace(); } IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "userShutup", new Object[]{(Boolean)(isShutup > 0 ? 1 : false)})); } }).start(); return null; //} } public void enterRoom(int roomType, IoSession session) { int userId = Integer.parseInt(session.getAttribute("id").toString()); if (!LocalMem.C.containsKey(userId)) { List<BulletFishDesk> desks = this.bulletFishDeskDao.IIIIlIlIIIIlIIlI(roomType + 1); /*Iterator var6 = desks.iterator(); while(var6.hasNext()) { BulletFishDesk d = (BulletFishDesk)var6.next();*/ for (final BulletFishDesk d : desks) { Seat[] seats = this.getDesksSeats(d.getId()); d.setSeats(seats); } LocalMem.C.put(userId, roomType + 1); Map<String, Object> result = new HashMap(); result.put("FishDesk", desks.toArray(new BulletFishDesk[0])); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "roomInfo", new Object[]{result})); } } public void leaveRoom(int roomId, IoSession session) { Integer userId = Integer.parseInt(session.getAttribute("id").toString()); LocalMem.C.remove(userId); } @Transactional public Map<String, Object> requestSeat(int deskId, int seatId, IoSession session) { Map<String, Object> result = new HashMap(); Integer userId = Integer.parseInt(session.getAttribute("id").toString()); com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("userService/userSelectSeat", new Object[]{userId, String.valueOf(System.currentTimeMillis())}); com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("gameService/requestDesk", new Object[]{userId, deskId}); if (LocalMem.D.containsKey(userId)) { return null; } //else { BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(deskId); if (desk == null) { result.put("bCanSeat", false); result.put("messageStatus", 0); return result; } //else { User user = (User)this.userDao.IIIIlIlIIIIlIIlI(userId); if (desk.getRoomId() == 2) { if (user.getGameGold() < desk.getMinGold()) { result.put("bCanSeat", false); result.put("messageStatus", 1); return result; } } else if (user.getExpeGold() < desk.getMinGold()) { result.put("bCanSeat", false); result.put("messageStatus", 1); return result; } if (this.limitEnterDesk(userId, deskId)) { String reason = "用户:" + userId + "," + OverFishPropertyUtil.limitSecond + "秒内上桌<" + desk.getName() + ">次数超过" + OverFishPropertyUtil.limitCount + "次,进行封号处理"; this.log.info(reason); this.lockUser(userId, reason); } int deskOnlineNum = 0; synchronized(desk) { //Iterator var11 = LocalMem.D.entrySet().iterator(); //while(var11.hasNext()) { // Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var11.next(); for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId == deskId && ((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).IIIllIlIlIlIlIll == seatId) { result.put("bCanSeat", false); result.put("messageStatus", 2); return result; } //if (((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId == deskId) {++deskOnlineNum;} if (entry.getValue().deskId != deskId) {continue;} ++deskOnlineNum; } LocalMem.D.put(userId, new com.miracle9.game.bean.IIIIlIlllllIlllI(deskId, seatId)); ++deskOnlineNum; Integer deskMaxOnlineNum = (Integer)LocalMem.H.get(deskId); if (deskMaxOnlineNum == null || deskMaxOnlineNum < deskOnlineNum) { LocalMem.H.put(deskId, deskOnlineNum); } } if (desk.getAutoKick() == 1) { LocalMem.z.put(session, System.currentTimeMillis()); } if (desk.getAutoKick() >= 1) { LocalMem.z.put(session, System.currentTimeMillis()); session.setAttribute("kicktime", String.valueOf(desk.getAutoKick())); } result.put("bCanSeat", true); Integer bgId = (Integer)LocalMem.I.get(deskId); if (bgId == null) { Random random = new Random(); bgId = random.nextInt(3); LocalMem.I.put(deskId, bgId); } result.put("bgId", bgId); result.put("seatId", seatId); result.put("messageStatus", -1); this.userDao.IIIIlIlIIIIlIIlI(userId, deskId); this.refreshUser(deskId); if (desk.getRoomId() == 2) { UserWarning userWarning = this.userWarningService.IlIIIIIlIllIlIIl(user.getId()); if (userWarning == null) { userWarning = new UserWarning(); userWarning.setUserId(user.getId()); } userWardingCache.put(user.getId(), userWarning); } com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("gameService/requestSeat", new Object[]{userId, com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.llllllIlllIIlIll}); return result; //} //} } @Transactional public void leaveSeat(int deskId, int seatId, IoSession session) { Integer userId = Integer.parseInt(session.getAttribute("id").toString()); this.clearingUserScore(userId); LocalMem.F.remove(userId); LocalMem.z.remove(session); Integer fishId = (Integer)LocalMem.M.get(userId); if (fishId != null) { this.unLockFish(session); } com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.remove(userId); if (ds != null) { this.refreshUser(deskId); } } public Seat[] getDesksSeats(Integer id) { BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(id.intValue()); List<Seat> seats = new ArrayList(); List<Integer> existSeat = new ArrayList(); //Iterator var6 = LocalMem.D.entrySet().iterator(); //while(var6.hasNext()) { // Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var6.next(); for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId == id) { User user = (User)CacheUser.get(entry.getKey()); Seat s = new Seat(); s.id = ((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).IIIllIlIlIlIlIll; s.isFree = false; s.user = user; Integer gunValue = (Integer)LocalMem.F.get(user.getId()); if (gunValue == null) { gunValue = desk.getMinGold(); } s.gunValue = gunValue; seats.add(s); existSeat.add(s.id); } } for(int i = 1; i <= 4; ++i) { if (!existSeat.contains(i)) { Seat s = new Seat(); s.isFree = true; s.id = i; seats.add(s); } } return (Seat[])seats.toArray(new Seat[0]); } @Transactional public void clearingUserScore(int id) { try { User user = (User)this.userDao.IIIIlIlIIIIlIIlI(id); com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(id); IoSession session = (IoSession)LocalMem.B.get(id); int deskId = 1; if (ds != null) { deskId = ds.deskId; } else { deskId = user.getLastDeskId(); } BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(deskId); int notCrashScore = 0; int score = 0; final int gameGold = user.getGameGold(); synchronized((User)CacheUser.get(id)) { List<com.miracle9.game.bean.IIlIlIIIIIlllIIl> fireds = (List)LocalMem.E.get(id); if (fireds != null) { //com.miracle9.game.bean.IIlIlIIIIIlllIIl f; //for(Iterator var13 = fireds.iterator(); var13.hasNext(); notCrashScore += f.value) { // f = (com.miracle9.game.bean.IIlIlIIIIIlllIIl)var13.next(); //} for (final com.miracle9.game.bean.IIlIlIIIIIlllIIl f : fireds) { notCrashScore += f.value; } LocalMem.E.remove(id); } if (notCrashScore != 0) { addUserScore(notCrashScore, id); } score = getUserScore(id); ((User)CacheUser.get(id)).setGameScore(0); } int exchange = desk.getExchange(); int addGold = 0; //UserWarning userWarning; if (score > 0) { addGold = score / exchange; if (score % exchange != 0) { int odd = score % exchange; Random random = new Random(); if (random.nextInt(exchange) < odd) { ++addGold; } } if (desk.getRoomId() == 2) { if (userWardingCache.containsKey(user.getId())) { UserWarning userWarning = (UserWarning)userWardingCache.remove(user.getId()); long allGold = (long)(user.getGameGold() + addGold); userWarning.setGameGold(allGold); com.miracle9.game.IIIllIlIlIlIlIll.IlIIIIIlIllIlIIl.lIIIIlllllIIlIll().IIIIlIlIIIIlIIlI(userWarning); } this.log.error("结算用户分值id:" + id + "分:" + score + "币:" + gameGold); this.userDao.IIIIlIlIIIIlIIlI("update User set gameScore=0,gameGold=gameGold+? where id=?", new Object[]{addGold, id}).executeUpdate(); if (session != null) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameScore", new Object[]{0})); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameGold", new Object[]{user.getGameGold() + addGold})); } user = (User)this.userDao.IIIIlIlIIIIlIIlI(id); this.log.info("结算用户分值id:" + id + "分:" + score + "币:" + gameGold + "桌:" + desk.getId() + "算后币:" + user.getGameGold()); } else { this.userDao.IIIIlIlIIIIlIIlI("update User set expeScore=0,expeGold=expeGold+? where id=?", new Object[]{addGold, id}).executeUpdate(); if (session != null) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameScore", new Object[]{0})); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "expeGold", new Object[]{user.getExpeGold() + addGold})); } this.log.info("结算用户体验分值"); } } else if (userWardingCache.containsKey(id)) { UserWarning userWarning = (UserWarning)userWardingCache.remove(id); com.miracle9.game.IIIllIlIlIlIlIll.IlIIIIIlIllIlIIl.lIIIIlllllIIlIll().IIIIlIlIIIIlIIlI(userWarning); } synchronized(LocalMem.V) { UserTenMinScore userTenMinScore = (UserTenMinScore)LocalMem.O.remove(id); if (userTenMinScore != null && desk.getRoomId() == 2) { this.userDao.getSession().refresh(user); userTenMinScore.setYaGold(userTenMinScore.getYaGold() + userTenMinScore.yaFen / desk.getExchange()); userTenMinScore.setDeGold(userTenMinScore.getDeGold() + userTenMinScore.deFen / desk.getExchange()); this.userTenMinScoreService.IIIIlIlIIIIlIIlI(user, userTenMinScore.getYaGold(), userTenMinScore.getDeGold(), user.getGameGold()); } } } catch (Exception e) { this.log.error("结算出错id:" + id, e); } } public static int getUserScore(int id) { User user = (User)CacheUser.get(id); return user == null ? 0 : user.getGameScore(); } public static boolean addUserScore(int score, int id) { User user = (User)CacheUser.get(id); synchronized(user) { int newScore = user.getGameScore() + score; if (newScore < 0) { return false; } user.setGameScore(newScore); return true; } } public void refreshUser(Integer deskId) { List<User> users = new ArrayList(); List<Seat> seats = new ArrayList<Seat>(); final BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI((int)deskId); List<Integer> existSeat = new ArrayList(); //Iterator var7 = LocalMem.D.entrySet().iterator(); //while(var7.hasNext()) { // Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var7.next(); for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId == deskId) { Seat s = new Seat(); s.user = (User)CacheUser.get(entry.getKey()); s.id = ((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).IIIllIlIlIlIlIll; s.isFree = false; Integer gunValue = (Integer)LocalMem.F.get(entry.getKey()); if (gunValue == null) { gunValue = desk.getMinGunValue(); } s.gunValue = gunValue; seats.add(s); existSeat.add(s.id); users.add(s.user); } } for(int i = 1; i <= 4; ++i) { if (!existSeat.contains(i)) { Seat seat = new Seat(); seat.isFree = true; seat.id = i; seats.add(seat); } } Iterator seat = LocalMem.C.entrySet().iterator(); while(((Iterator)seat).hasNext()) { Entry<Integer, Integer> entry = (Entry)((Iterator)seat).next(); if ((Integer)entry.getValue() == desk.getRoomId()) { IoSession session = (IoSession)LocalMem.B.get(entry.getKey()); Map<String, Object> map = new HashMap(); map.put("deskId", deskId); map.put("Seat", seats.toArray(new Seat[0])); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "updateDeskInfo", new Object[]{map})); } } com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("gameService/deskInfo", new Object[]{deskId, users, 3}); } @Transactional public void userCoinIn(int num, IoSession session) { int userId = Integer.parseInt(session.getAttribute("id").toString()); this.log.info("玩家上分,玩家userId为" + userId); BulletFishDesk desk = null; com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(userId); if (ds == null || num == 0) { return; } //if (ds != null && num != 0) { if (num < 0) { this.log.error("玩家上分小于0,分值为:" + num + " 玩家id为:" + userId); } //else { desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(ds.deskId); User user = (User)this.userDao.IIIIlIlIIIIlIIlI(userId); this.log.info("before userCoinIn num:" + num + ",userId:" + userId + ",deskId:" + ds.deskId + ",roomId:" + desk.getRoomId() + ",gameScore:" + user.getGameScore() + ",gameGold:" + user.getGameGold()); int addScore; int count; if (desk.getRoomId() == 2) { if (num * desk.getExchange() + getUserScore(userId) > 2000000) { //900000 return; } if (num > user.getGameGold()) { num = user.getGameGold(); } addScore = num * desk.getExchange(); count = this.userDao.IIIIlIlllllIlllI(userId, -num, addScore); this.log.info("addExpeGold userId:" + userId + ",expeGold:" + -num + "expeScore:" + addScore); if (count > 0) { addUserScore(addScore, userId); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameGold", new Object[]{user.getGameGold() - num})); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameScore", new Object[]{getUserScore(userId)})); } } else { if (num * desk.getExchange() + user.getExpeScore() > 2000000) { //900000 return; } if (num > user.getExpeGold()) { num = user.getExpeGold(); } addScore = num * desk.getExchange(); count = this.userDao.IIIIlIlIIIIlIIlI(userId, -num, addScore); this.log.info("addGameGold userId:" + userId + ",gameGold:" + -num + "gameScore:" + addScore); if (count > 0) { addUserScore(addScore, userId); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "expeGold", new Object[]{user.getExpeGold() - num})); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameScore", new Object[]{getUserScore(userId)})); } } //} //} } @Transactional public void userCoinOut(int score, IoSession session) { int userId = Integer.parseInt(session.getAttribute("id").toString()); this.log.info("玩家下分,userId为:" + userId); BulletFishDesk desk = null; com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(userId); if (ds == null || score == 0) { return; } //if (ds != null && score != 0) { if (score < 0) { this.log.error("玩家下分小于0,分值为:" + score + " 玩家id为:" + userId); } //else { desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(ds.deskId); int addGold = score / desk.getExchange(); this.log.info("before userCoinOut score:" + score + ",userId:" + userId + ",deskId:" + ds.deskId + ",roomId:" + desk.getRoomId() + ",userScore:" + getUserScore(userId)); //int count; User user; if (desk.getRoomId() == 2) { if (score > getUserScore(userId)) {return;} int count = this.userDao.IIIIlIlllllIlllI(userId, addGold, -score); this.log.info("addExpeGold userId:" + userId + ",expeGold:" + addGold + "expeScore:" + -score); if (count > 0) { addUserScore(-score, userId); User user = (User)this.userDao.IIIIlIlIIIIlIIlI(userId); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameGold", new Object[]{user.getGameGold()})); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameScore", new Object[]{getUserScore(userId)})); } } else { if (score > getUserScore(userId)) {return;} int count = this.userDao.IIIIlIlIIIIlIIlI(userId, addGold, -score); this.log.info("addGameGold userId:" + userId + ",gameGold:" + addGold + "gameScore:" + -score); if (count > 0) { addUserScore(-score, userId); User user = (User)this.userDao.IIIIlIlIIIIlIIlI(userId); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "expeGold", new Object[]{user.getExpeGold()})); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "gameScore", new Object[]{getUserScore(userId)})); } } // } //} } public void lockFish(int fishId, IoSession session) { try { Object obj = session.getAttribute("id"); if (obj == null) { return; } int userId = Integer.parseInt(obj.toString()); com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(userId); if (ds == null) { return; } com.miracle9.game.bean.IIIllIlIlIlIlIll deskStatus = (com.miracle9.game.bean.IIIllIlIlIlIlIll)LocalMem.J.get(ds.deskId); if (deskStatus.status == 2) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "lockFish", new Object[]{false, fishId, ds.IIIllIlIlIlIlIll})); return; } com.miracle9.game.bean.IIlIllIlllIIIlIl fish = new com.miracle9.game.bean.IIlIllIlllIIIlIl(); if (fishId < 1000) { int group = (Integer)com.miracle9.game.IIIllIlIlIlIlIll.IIlIlIIIIIlllIIl.o.get(ds.deskId); Integer fishType = (Integer)((ConcurrentHashMap)LocalMem.L.get(group)).get(fishId); if (fishType == null) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "lockFish", new Object[]{false, fishId, ds.IIIllIlIlIlIlIll})); return; } fish.id = fishId; fish.type = fishType; } else { ConcurrentHashMap<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> fishs = (ConcurrentHashMap)LocalMem.K.get(ds.deskId); fish = (com.miracle9.game.bean.IIlIllIlllIIIlIl)fishs.get(fishId); } if (fish == null) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "lockFish", new Object[]{false, fishId, ds.IIIllIlIlIlIlIll})); return; } if ((fish.type < 20 || fish.type >= 30) && fish.type != 39 && fish.type != 32 && (Integer)LocalMem.Q.get(fish.type) < 10) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "lockFish", new Object[]{false, fishId, ds.IIIllIlIlIlIlIll})); return; } if (LocalMem.M.get(userId) != null && (Integer)LocalMem.M.get(userId) == fishId) { return; } if (LocalMem.M.get(userId) != null && (Integer)LocalMem.M.get(userId) != fishId) { List<com.miracle9.game.bean.IIlIlIIIIIlllIIl> fireds = (List)LocalMem.E.get(userId); if (fireds != null) { //Iterator localIterator = fireds.iterator(); //while(localIterator.hasNext()) { // com.miracle9.game.bean.IIlIlIIIIIlllIIl f = (com.miracle9.game.bean.IIlIlIIIIIlllIIl)localIterator.next(); for (final com.miracle9.game.bean.IIlIlIIIIIlllIIl f : fireds) { if (f.IIllllIlIlIlIIll == fishId) { f.IIllllIlIlIlIIll = -1; } } } } //Iterator var17 = LocalMem.D.entrySet().iterator(); //while(var17.hasNext()) { // Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var17.next(); for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId == ds.deskId) { IoSession s = (IoSession)LocalMem.B.get(entry.getKey()); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(s, "lockFish", new Object[]{true, fishId, ds.IIIllIlIlIlIlIll})); } } LocalMem.M.put(userId, fishId); } catch (Exception e) { this.log.error("", e); } } public void unLockFish(IoSession session) { Object obj = session.getAttribute("id"); if (obj == null) {return;} //if (obj != null) { int userId = Integer.parseInt(obj.toString()); com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(userId); if (ds == null) {return;} //if (ds != null) { Integer fishId = (Integer)LocalMem.M.remove(userId); if (fishId == null) {return;} //if (fishId != null) { /*Iterator var7 = LocalMem.D.entrySet().iterator(); while(var7.hasNext()) { Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var7.next();*/ for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId == ds.deskId) { IoSession s = (IoSession)LocalMem.B.get(entry.getKey()); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(s, "unLockFish", new Object[]{fishId, ds.IIIllIlIlIlIlIll})); } } List<com.miracle9.game.bean.IIlIlIIIIIlllIIl> fireds = (List)LocalMem.E.get(userId); if (fireds != null) { for (final com.miracle9.game.bean.IIlIlIIIIIlllIIl f : fireds) { /*Iterator var11 = fireds.iterator(); while(var11.hasNext()) { com.miracle9.game.bean.IIlIlIIIIIlllIIl f = (com.miracle9.game.bean.IIlIlIIIIIlllIIl)var11.next();*/ if (f.IIllllIlIlIlIIll == fishId) { f.IIllllIlIlIlIIll = -1; } } } //} //} //} } public void fired(int gunid, double xy, int gunValue, boolean isEnergy, IoSession session) { try { Object obj = session.getAttribute("id"); if (obj == null || gunValue == 0 || gunValue > 10000) { return; } if (gunValue < 0) { gunValue = -gunValue; } int userId = (Integer)obj; User user = (User)CacheUser.get(userId); com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(userId); if (ds == null) { return; } int seatId = ds.IIIllIlIlIlIlIll; BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(ds.deskId); gunValue = Math.abs(gunValue); gunValue = -gunValue; if (gunValue > 10001) { this.log.info("用户<" + user.getUsername() + ">在桌子<" + desk.getName() + ">发炮炮值大于10000"); return; } if (gunValue < 0) { gunValue = -gunValue; } com.miracle9.game.bean.IIIllIlIlIlIlIll dStatus = (com.miracle9.game.bean.IIIllIlIlIlIlIll)LocalMem.J.get(desk.getId()); if (dStatus.status != 0) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "notFired", new Object[]{gunid, seatId, getUserScore(userId)})); return; } Integer syuid; if (!addUserScore(-gunValue, userId)) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "notFired", new Object[]{gunid, seatId, getUserScore(userId)})); syuid = (Integer)LocalMem.M.remove(userId); if (syuid != null) { this.unLockFish(session); } return; } LocalMem.F.put(userId, gunValue); if (desk.getAutoKick() == 1) { LocalMem.z.put(session, System.currentTimeMillis()); } if (desk.getAutoKick() >= 1) { LocalMem.z.put(session, System.currentTimeMillis()); session.setAttribute("kicktime", String.valueOf(desk.getAutoKick())); } syuid = userId; synchronized(syuid) { List<com.miracle9.game.bean.IIlIlIIIIIlllIIl> fireds = (List)LocalMem.E.get(syuid); if (fireds == null) { LocalMem.E.put(syuid, fireds = new ArrayList()); } if (LocalMem.M.containsKey(syuid)) { int fishid = (Integer)LocalMem.M.get(syuid); ((List)fireds).add(new com.miracle9.game.bean.IIlIlIIIIIlllIIl(gunid, seatId, xy, gunValue, isEnergy, System.currentTimeMillis(), fishid)); } else { ((List)fireds).add(new com.miracle9.game.bean.IIlIlIIIIIlllIIl(gunid, seatId, xy, gunValue, isEnergy, System.currentTimeMillis(), -1)); } } /*Iterator var21 = LocalMem.D.entrySet().iterator(); while(var21.hasNext()) { Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var21.next();*/ for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId == desk.getId()) { IoSession s = (IoSession)LocalMem.B.get(entry.getKey()); if ((Integer)entry.getKey() != userId) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(s, "fired", new Object[]{gunid, xy, seatId, gunValue, isEnergy, getUserScore(userId)})); } else { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(s, "gameScore", new Object[]{user.getGameScore()})); } } } } catch (Exception e) { this.log.error("", e); } } @Transactional public void gunHitFish(int gunId, HitFish[] hitFishs, IoSession session) { this.GunHitFish(session, gunId, hitFishs); } @Transactional public void gunHitFish(int gunId, HitFish[] hitFishs, HitFish[] hitFishs2, IoSession session) { this.GunHitFish(session, gunId, hitFishs, hitFishs2); } public void GunHitFish(IoSession session, int gunId, HitFish[]... hitFishs) { boolean locked = false; Object obj = session.getAttribute("id"); if (obj == null) { return; } int userId = (Integer)obj; com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(userId); if (ds == null) { return; } List<com.miracle9.game.bean.IIlIlIIIIIlllIIl> fireds = (List)LocalMem.E.get(userId); if (fireds == null) { return; } HitFish[] hitfishs = hitFishs[0]; com.miracle9.game.bean.IIlIlIIIIIlllIIl hitFired = null; User cacheuser = (User)CacheUser.get(userId); synchronized(cacheuser) { /*、、Iterator var14 = fireds.iterator(); 、、while(var14.hasNext()) { 、、 com.miracle9.game.bean.IIlIlIIIIIlllIIl f = (com.miracle9.game.bean.IIlIlIIIIIlllIIl)var14.next();*/ for (final com.miracle9.game.bean.IIlIlIIIIIlllIIl f : fireds) { if (f.id == gunId) { hitFired = f; fireds.remove(f); break; } } } if (hitFired == null) { return; } //region 1 //try { HitFish[] hitfishs2 = null; int limitFishCount = 0; if (hitFishs.length == 2) { hitfishs2 = hitFishs[1]; limitFishCount = hitfishs2.length; } int totalFishCount = hitfishs.length; BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(ds.deskId); FishServerSuanfa server = (FishServerSuanfa)LocalMem.P.get(ds.deskId); DieFishInputInfo in = new DieFishInputInfo(); in.totalPlay = desk.getSumYaFen(); in.totalWin = desk.getSumDeFen(); if (ds.IIIllIlIlIlIlIll == 1) { in.slavePlay = desk.getSumSeat1YaFen(); in.slaveWin = desk.getSumSeat1DeFen(); } else if (ds.IIIllIlIlIlIlIll == 2) { in.slavePlay = desk.getSumSeat2YaFen(); in.slaveWin = desk.getSumSeat2DeFen(); } else if (ds.IIIllIlIlIlIlIll == 3) { in.slavePlay = desk.getSumSeat3YaFen(); in.slaveWin = desk.getSumSeat3DeFen(); } else { in.slavePlay = desk.getSumSeat4YaFen(); in.slaveWin = desk.getSumSeat4DeFen(); } int totalUnproCredit = 0; boolean[] playerOnline = new boolean[4]; for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (entry.getValue().deskId == ds.deskId) { playerOnline[ds.IIIllIlIlIlIlIll - 1] = true; synchronized (UserService.CacheUser.get(entry.getKey())) { final List<com.miracle9.game.bean.IIlIlIIIIIlllIIl> seatFireds = LocalMem.E.get(entry.getKey()); if (seatFireds != null) { for (int i = 0; i < seatFireds.size(); ++i) { totalUnproCredit += seatFireds.get(i).value; } } } /*playerOnline[ds.IIIllIlIlIlIlIll - 1] = true; synchronized((User)CacheUser.get(entry.getKey())) { List<com.miracle9.game.bean.IIlIlIIIIIlllIIl> seatFireds = (List)LocalMem.E.get(entry.getKey()); if (seatFireds != null) { for(int i = 0; i < seatFireds.size(); ++i) { totalUnproCredit += ((com.miracle9.game.bean.IIlIlIIIIIlllIIl)seatFireds.get(i)).value; } } }*/ // monitorexit((User)UserService.CacheUser.get((Object)entry.getKey())) } } //region 2 totalUnproCredit in.totalUnproCredit = totalUnproCredit; in.whichSlave = ds.IIIllIlIlIlIlIll; int slaveUnproCredit = 0; int gunValue = hitFired.value; if (hitFired.IIlllIlllllIIIIl) { gunValue = hitFired.value * 2; } //com.miracle9.game.bean.IIlIlIIIIIlllIIl f; //for(Iterator var50 = fireds.iterator(); var50.hasNext(); slaveUnproCredit += f.value) { // f = (com.miracle9.game.bean.IIlIlIIIIIlllIIl)var50.next(); //} for (final com.miracle9.game.bean.IIlIlIIIIIlllIIl f2 : fireds) { slaveUnproCredit += f2.value; } in.slaveUnproCredit = slaveUnproCredit; in.powerOfShell = hitFired.value; in.coinValue = desk.getExchange(); in.hallType = desk.getSiteType(); in.gameDfLevel = desk.getGameDiff(); in.playerInfo = playerOnline; FishInfo[] fis = new FishInfo[totalFishCount]; //region synchronized(desk) synchronized(desk) { ConcurrentHashMap<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> deskFishs = (ConcurrentHashMap)LocalMem.K.get(ds.deskId); if (deskFishs == null) { LocalMem.K.put(desk.getId(), deskFishs = new ConcurrentHashMap()); } if (hitFired.IIllllIlIlIlIIll != -1) { HitFish hitfish = hitfishs[0]; if (hitfish.IIllllIlIlIlIIll == hitFired.IIllllIlIlIlIIll && (hitFired.IIllllIlIlIlIIll < 1000 || !((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hitFired.IIllllIlIlIlIIll)).IlIIlIlIlllIllIl)) { locked = true; } } in.locked = locked; int count = totalFishCount; //int i; /*com.miracle9.game.bean.IIlIllIlllIIIlIl fish2; Iterator localIterator4; Iterator var65; Iterator itf;*/ //region for(int i = 0; i < totalFishCount; ++i) for(int i = 0; i < totalFishCount; ++i) { HitFish hf = hitfishs[i]; if (hf != null && deskFishs.get(hf.IIllllIlIlIlIIll) != null && hf.IIllllIlIlIlIIll >= 1000 && ((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hf.IIllllIlIlIlIIll)).IlIIlIlIlllIllIl) { --count; } else { FishInfo info = new FishInfo(); info.fishType = hf.fishType; info.fishid = hf.IIllllIlIlIlIIll; info.fx = (float)hf.IlIlIIIIlllIlIll; info.fy = (float)hf.IlIlIlllIIlIllll; if (info.fishType == 32) { info.fishType = ((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid)).IlIIIIllllIIllIl[0]; } if (info.fishType == 19) { info.bet = 300; } else if (info.fishType == 18) { info.bet = 100; } else if (info.fishType == 17) { info.bet = 40; } //Entry df; else if (info.fishType == 39) { com.miracle9.game.bean.IIlIllIlllIIIlIl fish = (com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid); info.bet = (Integer)LocalMem.Q.get(fish.IlIIIIllllIIllIl[0] - 20) + (Integer)LocalMem.Q.get(fish.IlIIIIllllIIllIl[1] - 20); /*Iterator localIterator3 = deskFishs.entrySet().iterator(); //label629: while(true) { while(true) { if (!localIterator3.hasNext()) {break label629;} df = (Entry)localIterator3.next();*/ for (final Map.Entry<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> fb : deskFishs.entrySet()) { com.miracle9.game.bean.IIlIllIlllIIIlIl f3 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)fb.getValue(); if (f3.type == fish.IlIIIIllllIIllIl[0] - 20 && !f3.IlIIlIlIlllIllIl) { info.bet += (Integer)LocalMem.Q.get(f3.type); } else if (f3.type == fish.IlIIIIllllIIllIl[1] - 20 && !f3.IlIIlIlIlllIllIl) { info.bet += (Integer)LocalMem.Q.get(f3.type); } else if (f3.type == fish.IlIIIIllllIIllIl[0] && !f3.IlIIlIlIlllIllIl) { info.bet += (Integer)LocalMem.Q.get(f3.type - 20); } else if (f3.type == fish.IlIIIIllllIIllIl[1] && !f3.IlIIlIlIlllIllIl) { /*else { if (f3.type != fish.IlIIIIllllIIllIl[1] || f3.IlIIlIlIlllIllIl) { continue; }*/ info.bet += (Integer)LocalMem.Q.get(f3.type - 20); } } //} } else if (info.fishType >= 20 && info.fishType <= 29) { info.bet = (Integer)LocalMem.Q.get(info.fishType - 20); //var65 = deskFishs.entrySet().iterator(); //while(var65.hasNext()) { // df = (Entry)var65.next(); for (final Map.Entry<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> df : deskFishs.entrySet()) { com.miracle9.game.bean.IIlIllIlllIIIlIl fish2 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)df.getValue(); if (fish2.type == info.fishType - 20 && !fish2.IlIIlIlIlllIllIl) { info.bet += (Integer)LocalMem.Q.get(fish2.type); } } } else if (info.fishType == 30) { info.bet = (Integer)LocalMem.Q.get(30); for(int j = 1; j < limitFishCount; ++j) { HitFish hitfish = hitfishs2[j]; if (hitfish.fishType == 32) { hitfish.fishType = ((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hitfish.IIllllIlIlIlIIll)).IlIIIIllllIIllIl[0]; } if (hitfish.fishType == 19) { info.bet += 300; } else if (hitfish.fishType == 18) { info.bet += 100; } else if (hitfish.fishType == 17) { info.bet += 40; } else if (hitfish.fishType == 39) { com.miracle9.game.bean.IIlIllIlllIIIlIl fish2 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hitfish.IIllllIlIlIlIIll); info.bet += (Integer)LocalMem.Q.get(fish2.IlIIIIllllIIllIl[0] - 20) + (Integer)LocalMem.Q.get(fish2.IlIIIIllllIIllIl[1] - 20); for (final Map.Entry<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> fb2 : deskFishs.entrySet()) { final com.miracle9.game.bean.IIlIllIlllIIIlIl f5 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)fb2.getValue(); if (f5.type == fish2.IlIIIIllllIIllIl[0] - 20 && !f5.IlIIlIlIlllIllIl) { info.bet += LocalMem.Q.get(f5.type); } else if (f5.type == fish2.IlIIIIllllIIllIl[1] - 20 && !f5.IlIIlIlIlllIllIl) { info.bet += LocalMem.Q.get(f5.type); } else if (f5.type == fish2.IlIIIIllllIIllIl[0] && !f5.IlIIlIlIlllIllIl) { info.bet += LocalMem.Q.get(f5.type - 20); } else if (f5.type == fish2.IlIIIIllllIIllIl[1] && !f5.IlIIlIlIlllIllIl) { info.bet += LocalMem.Q.get(f5.type - 20); } /*else { if (f5.type != fish2.IlIIIIllllIIllIl[1] || f5.IlIIlIlIlllIllIl) {continue;} final FishInfo fishInfo13 = info; fishInfo13.bet += LocalMem.Q.get(f5.type - 20); }*/ } } else if (hitfish.fishType >= 20 && hitfish.fishType <= 29) { info.bet += (Integer)LocalMem.Q.get(hitfish.fishType - 20); //itf = deskFishs.entrySet().iterator(); //while(itf.hasNext()) { // Object df = itf.next(); for (final Object df2 : deskFishs.entrySet()) { com.miracle9.game.bean.IIlIllIlllIIIlIl f39 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)((Entry)df2).getValue(); if (f39.type == info.fishType - 20 && !f39.IlIIlIlIlllIllIl) { info.bet += (Integer)LocalMem.Q.get(f39.type); } } } else { info.bet += (Integer)LocalMem.Q.get(hitfish.fishType); } } } else { info.bet = (Integer)LocalMem.Q.get(info.fishType); } //log.debug( i +"|"+ totalFishCount +"|"+count );log.debug( i-(totalFishCount - count) ); fis[i - (totalFishCount - count) ] = info; // fis[i - (totalFishCount - count)] = info; } } //endregion //region 处理等级 if (cacheuser.getType() == 0) { double addLevelScore = 0.0D; if (desk.getRoomId() == 1) { if (cacheuser.getLevel() <= 3) { addLevelScore = 0.00463D; } } else { addLevelScore = 0.00926D; } if (addLevelScore != 0.0D) { cacheuser.setLevelScore(cacheuser.getLevelScore() + addLevelScore); LevelInfo level = this.levelInfoDao.IIlllIlllllIIIIl(cacheuser.getLevel()); if (level != null && cacheuser.getLevelScore() > level.getMaxScore() && level.getLevel() < 16) { cacheuser.setLevel(cacheuser.getLevel() + 1); com.miracle9.game.IIIllIlIlIlIlIll.IIIIlIlllllIlllI.IIlllIlllllIIIIl("update User set level=level+1 where id=?", new Object[]{userId}); } } } //endregion //region 处理 对应座位的 压分得分 //double yaGold; //double deGold; if (count == 0) { this.bulletFishDeskDao.IIIIlIlIIIIlIIlI((long)hitFired.value, 0L, ds.IIIllIlIlIlIlIll, ds.deskId); if (desk.getRoomId() == 2) { GameDataLog dataLog = this.gameDataLogDao.IIllIIlIIlIlIlIl(cacheuser.getPromoterId()); if (dataLog == null) { this.gameDataLogDao.IIlllIIIlIllIIIl(cacheuser.getPromoterId()); dataLog = this.gameDataLogDao.IIllIIlIIlIlIlIl(cacheuser.getPromoterId()); } double yaGold = MyUtil.IIIIlIlllllIlllI((double)hitFired.value, (double)desk.getExchange()); double deGold = MyUtil.IIIIlIlllllIlllI(0.0D, (double)desk.getExchange()); this.gameDataLogDao.IIIIlIlIIIIlIIlI(dataLog, yaGold, deGold); if (userWardingCache.containsKey(userId)) { UserWarning userWarning = (UserWarning)userWardingCache.get(userId); final double newYaGold = userWarning.getYaGold() + yaGold; userWarning.setYaGold(newYaGold); final double newDeGold = userWarning.getDeGold() + deGold; userWarning.setDeGold(newDeGold); /*yaGold = userWarning.getYaGold() + yaGold; userWarning.setYaGold(yaGold); deGold = userWarning.getDeGold() + deGold; userWarning.setDeGold(deGold);*/ } UserTenMinScore userTenMinScore = (UserTenMinScore)LocalMem.O.get(userId); if (userTenMinScore == null) { LocalMem.O.put(userId, userTenMinScore = new UserTenMinScore(userId, ds.deskId)); } userTenMinScore.yaFen += hitFired.value; } // monitorexit(desk) return; } //endregion fis = (FishInfo[])Arrays.copyOf(fis, count); in.totalFish = count; in.fishes = fis; in.ionicCannonState = hitFired.IIlllIlllllIIIIl; //是否能量炮 in.gameDfLevel = desk.getGameDiff(); boolean bCreateX2Gun = false; boolean bDeadBomb = false; DieFishOutputInfo out; //manageservice.class 加载了special if (IIlllIIIlIllIIIllsiillill.contains(userId)) { log.debug("special UId:" + userId); //in = this.specialKill(in); /*for(int i = 0; i < in.totalFish; ++i) { System.out.print(in.fishes[i].fsDead); }*/ } else { log.debug("normal UId:" + userId); } out = server.IsFishDied(desk.getId(), in); //region 鱼死了 totalfish > 0 打中 计算得分 int addScore = 0; double watervalue = 1 + cacheuser.getWaterValue(); if (out != null && out.totalFish > 0) { //region 瞎火 //User user = (User)this.userDao.IIlIllIlllIIIlIl("from User where username=?", new Object[]{cacheUser.getUsername()}); int nRandomNumber = ((int) (Math.random() * 99.0d)+1) % 100; this.log.debug( nRandomNumber + "你有多瞎:" + watervalue); //endregion if (nRandomNumber > watervalue * 100.0d) { this.log.debug( "瞎火" + nRandomNumber + "> "+ watervalue * 100.0d ); } else { bCreateX2Gun = out.ionicCannonIndex != -1; HitFish[] dieFishs = new HitFish[out.totalFish]; for(int i = 0; i < out.totalFish; ++i) { FishInfo info = out.dead[i]; for (final Object entry2 : LocalMem.M.entrySet()) { if (((Map.Entry)entry2).getValue() == info.fishid) { for (final com.miracle9.game.bean.IIlIlIIIIIlllIIl f6 : fireds) { f6.IIllllIlIlIlIIll = -1; } LocalMem.M.remove(((Map.Entry)entry2).getKey()); } } if (info.fishType == 31 && !((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid)).IlIIlIlIlllIllIl) { //定屏 com.miracle9.game.bean.IIIllIlIlIlIlIll deskStatus = (com.miracle9.game.bean.IIIllIlIlIlIlIll)LocalMem.J.get(ds.deskId); if (deskStatus.status == 0) { deskStatus.IIlIlIIIIIlllIIl += 10000L; LocalMem.G.put(ds.deskId, System.currentTimeMillis() + 10000L); //localIterator5 = deskFishs.entrySet().iterator(); //while(localIterator5.hasNext()) { // df = (Entry)localIterator5.next(); for (Map.Entry<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> df : deskFishs.entrySet()) { if (!df.getValue().IlIIlIlIlllIllIl) { //var10000 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)dfa1.getValue() ; //var10000.IlIIIIIlIllIlIIl += 10000L; //(com.miracle9.game.bean.IIlIllIlllIIIlIl)dfa1.getValue() += 10000L; final com.miracle9.game.bean.IIlIllIlllIIIlIl ilIllIlllIIIlIl = df.getValue(); ilIllIlllIIIlIl.IlIIIIIlIllIlIIl += 10000L; } } } } addScore += info.bet * hitFired.value; com.miracle9.game.bean.IIlIllIlllIIIlIl fish3; //region fishType 39 if (info.fishType == 39) { com.miracle9.game.bean.IIlIllIlllIIIlIl fish = deskFishs.get(Integer.valueOf(info.fishid)); for (Map.Entry<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> fb : deskFishs.entrySet()) { com.miracle9.game.bean.IIlIllIlllIIIlIl fbb = fb.getValue(); if (fbb.type == fish.IlIIIIllllIIllIl[0] - 20 && !fbb.IlIIlIlIlllIllIl) { fbb.IlIIlIlIlllIllIl = true; continue; } if (fbb.type == fish.IlIIIIllllIIllIl[1] - 20 && !fbb.IlIIlIlIlllIllIl) { fbb.IlIIlIlIlllIllIl = true; continue; } if (fbb.type == fish.IlIIIIllllIIllIl[0] && !fbb.IlIIlIlIlllIllIl) { fbb.IlIIlIlIlllIllIl = true; continue; } if (fbb.type == fish.IlIIIIllllIIllIl[1] && !fbb.IlIIlIlIlllIllIl) fbb.IlIIlIlIlllIllIl = true; } /* fish2 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid); localIterator5 = deskFishs.entrySet().iterator(); label446: while(true) { while(true) { if (!localIterator5.hasNext()) { break label446; } df = (Entry)localIterator5.next(); fish3 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)df.getValue(); if (fish3.type == fish2.IlIIIIllllIIllIl[0] - 20 && !fish3.IlIIlIlIlllIllIl) { fish3.IlIIlIlIlllIllIl = true; } else if (fish3.type == fish2.IlIIIIllllIIllIl[1] - 20 && !fish3.IlIIlIlIlllIllIl) { fish3.IlIIlIlIlllIllIl = true; } else if (fish3.type == fish2.IlIIIIllllIIllIl[0] && !fish3.IlIIlIlIlllIllIl) { fish3.IlIIlIlIlllIllIl = true; } else if (fish3.type == fish2.IlIIIIllllIIllIl[1] && !fish3.IlIIlIlIlllIllIl) { fish3.IlIIlIlIlllIllIl = true; } } }*/ } //endregion if (info.fishid >= 1000 && deskFishs.get(info.fishid) != null && !((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid)).IlIIlIlIlllIllIl && (info.fishType == 18 || info.fishType == 19 || info.fishType == 30 || info.fishType == 31)) { ((Map)com.miracle9.game.IIIllIlIlIlIlIll.IIlIlIIIIIlllIIl.m.get(ds.deskId)).put(info.fishType, (Integer)((Map)com.miracle9.game.IIIllIlIlIlIlIll.IIlIlIIIIIlllIIl.m.get(ds.deskId)).get(info.fishType) - 1); } if (info.fishType == 30) { bDeadBomb = true; this.sendNotice(30, hitFired.value * info.bet, desk, cacheuser); if (desk.getRoomId() == 2) { com.miracle9.game.IIIllIlIlIlIlIll.IIIIlIlllllIlllI.IIIIlIlIIIIlIIlI(info.bet, info.bet * hitFired.value / desk.getExchange(), 30, cacheuser); } //label547: for(int j = 1; j < limitFishCount; ++j) { HitFish hitfish = hitfishs2[j]; for (final Map.Entry<Integer, Integer> entry3 : LocalMem.M.entrySet()) { if (entry3.getValue() == info.fishid) { for (final com.miracle9.game.bean.IIlIlIIIIIlllIIl f7 : fireds) { f7.IIllllIlIlIlIIll = -1; } LocalMem.M.remove(entry3.getKey()); } } if (deskFishs.get(hitfish.IIllllIlIlIlIIll) != null && !((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hitfish.IIllllIlIlIlIIll)).IlIIlIlIlllIllIl && (hitfish.fishType == 18 || hitfish.fishType == 19 || hitfish.fishType == 30 || hitfish.fishType == 31)) { ((Map)com.miracle9.game.IIIllIlIlIlIlIll.IIlIlIIIIIlllIIl.m.get(ds.deskId)).put(hitfish.fishType, (Integer)((Map)com.miracle9.game.IIIllIlIlIlIlIll.IIlIlIIIIIlllIIl.m.get(ds.deskId)).get(hitfish.fishType) - 1); } if (hitfish.fishType == 39) { fish3 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid); if (fish3 != null) { for (final Object fb4 : deskFishs.entrySet()) { com.miracle9.game.bean.IIlIllIlllIIIlIl ff = (com.miracle9.game.bean.IIlIllIlllIIIlIl)((Entry)fb4).getValue(); if (ff.type == fish3.IlIIIIllllIIllIl[0] - 20 && !ff.IlIIlIlIlllIllIl) { ff.IlIIlIlIlllIllIl = true; } else if (ff.type == fish3.IlIIIIllllIIllIl[1] - 20 && !ff.IlIIlIlIlllIllIl) { ff.IlIIlIlIlllIllIl = true; } else if (ff.type == fish3.IlIIIIllllIIllIl[0] && !ff.IlIIlIlIlllIllIl) { ff.IlIIlIlIlllIllIl = true; } else if (ff.type == fish3.IlIIIIllllIIllIl[1] && !ff.IlIIlIlIlllIllIl) { ff.IlIIlIlIlllIllIl = true; } } } } else if (hitfish.fishType == 19 && !((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hitfish.IIllllIlIlIlIIll)).IlIIlIlIlllIllIl) { this.sendNotice(hitfish.fishType, hitFired.value * 300, desk, cacheuser); if (desk.getRoomId() == 2) { com.miracle9.game.IIIllIlIlIlIlIll.IIIIlIlllllIlllI.IIIIlIlIIIIlIIlI(hitfish.bet, hitfish.bet * hitFired.value / desk.getExchange(), 19, cacheuser); } } else if (hitfish.fishType == 31 && !((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hitfish.IIllllIlIlIlIIll)).IlIIlIlIlllIllIl) { com.miracle9.game.bean.IIIllIlIlIlIlIll deskStatus = (com.miracle9.game.bean.IIIllIlIlIlIlIll)LocalMem.J.get(ds.deskId); if (deskStatus.status == 0) { ((com.miracle9.game.bean.IIIllIlIlIlIlIll)LocalMem.J.get(desk.getId())).IIlIlIIIIIlllIIl = deskStatus.IIlIlIIIIIlllIIl + 10000L; LocalMem.G.put(ds.deskId, System.currentTimeMillis() + 10000L); for (Map.Entry<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> df : deskFishs.entrySet()) { if (!((com.miracle9.game.bean.IIlIllIlllIIIlIl)df.getValue()).IlIIlIlIlllIllIl) { //final com.miracle9.game.bean.IIlIllIlllIIIlIl ilIllIlllIIIlIl2 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)((Entry)df).getValue(); //ilIllIlllIIIlIl2.IlIIIIIlIllIlIIl += 10000L; ((com.miracle9.game.bean.IIlIllIlllIIIlIl)df.getValue()).IlIIIIIlIllIlIIl += 10000L; } } } } else if (hitfish.fishType >= 20 && hitfish.fishType <= 29) { for (final Map.Entry<Integer, com.miracle9.game.bean.IIlIllIlllIIIlIl> df4 : deskFishs.entrySet()) { com.miracle9.game.bean.IIlIllIlllIIIlIl ff = (com.miracle9.game.bean.IIlIllIlllIIIlIl)df4.getValue(); if (ff.type == info.fishType - 20 && !ff.IlIIlIlIlllIllIl) { ff.IlIIlIlIlllIllIl = true; } } } com.miracle9.game.bean.IIlIllIlllIIIlIl fish4 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(hitfish.IIllllIlIlIlIIll); if (fish4 != null) { fish4.IlIIlIlIlllIllIl = true; } } } //if (info.fishType != 30) { //牛魔 else if (info.fishType == 19 && !((com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid)).IlIIlIlIlllIllIl) { this.sendNotice(19, info.bet * hitFired.value, desk, cacheuser); if (desk.getRoomId() == 2) { com.miracle9.game.IIIllIlIlIlIlIll.IIIIlIlllllIlllI.IIIIlIlIIIIlIIlI(info.bet, info.bet * hitFired.value / desk.getExchange(), 19, cacheuser); } } //一串串 else if (info.fishType >= 20 && info.fishType <= 29) { /*localIterator5 = deskFishs.entrySet().iterator(); while(localIterator5.hasNext()) { Object df = localIterator5.next();*/ for (final Object df5 : deskFishs.entrySet()) { fish3 = (com.miracle9.game.bean.IIlIllIlllIIIlIl)((Entry)df5).getValue(); if (fish3.type == info.fishType - 20 && !fish3.IlIIlIlIlllIllIl) { fish3.IlIIlIlIlllIllIl = true; } } } //} HitFish hf = new HitFish(); hf.IIllllIlIlIlIIll = info.fishid; hf.fishType = info.fishType; hf.IlIlIIIIlllIlIll = (double)info.fx; hf.IlIlIlllIIlIllll = (double)info.fy; hf.bet = info.bet; if (hitFired.IIlllIlllllIIIIl) { hf.bet /= 2; } dieFishs[i] = hf; com.miracle9.game.bean.IIlIllIlllIIIlIl ff = (com.miracle9.game.bean.IIlIllIlllIIIlIl)deskFishs.get(info.fishid); if (ff != null && ff.type >= 10) { ff.IlIIlIlIlllIllIl = true; this.clearFishLock(ff.id); } } addUserScore(addScore, userId); if (bDeadBomb) { for (final Object entry : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)((Entry)entry).getValue()).deskId == ds.deskId) { IoSession s = (IoSession)LocalMem.B.get(((Entry)entry).getKey()); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(s, "gunHitFish", new Object[]{gunId, gunValue, ds.IIIllIlIlIlIlIll, bCreateX2Gun, bDeadBomb, addScore, getUserScore(userId), dieFishs, hitfishs2})); } } } else { for (final Object entry4 : LocalMem.D.entrySet()) { if (((com.miracle9.game.bean.IIIIlIlllllIlllI)((Entry)entry4).getValue()).deskId == ds.deskId) { IoSession s = (IoSession)LocalMem.B.get(((Entry)entry4).getKey()); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(s, "gunHitFish", new Object[]{gunId, gunValue, ds.IIIllIlIlIlIlIll, bCreateX2Gun, bDeadBomb, addScore, getUserScore(userId), dieFishs})); } } } } } //endregion 鱼死了 totalfish > 0 打中 计算得分 //region 处理 对应座位的 压分得分 this.bulletFishDeskDao.IIIIlIlIIIIlIIlI((long)hitFired.value, (long)addScore, ds.IIIllIlIlIlIlIll, ds.deskId); if (desk.getRoomId() == 2) { GameDataLog dataLog = this.gameDataLogDao.IIllIIlIIlIlIlIl(cacheuser.getPromoterId()); if (dataLog == null) { this.gameDataLogDao.IIlllIIIlIllIIIl(cacheuser.getPromoterId()); dataLog = this.gameDataLogDao.IIllIIlIIlIlIlIl(cacheuser.getPromoterId()); } double yaGold = MyUtil.IIIIlIlllllIlllI((double)hitFired.value, (double)desk.getExchange()); double deGold = MyUtil.IIIIlIlllllIlllI((double)addScore, (double)desk.getExchange()); this.gameDataLogDao.IIIIlIlIIIIlIIlI(dataLog, yaGold, deGold); UserWarning userWarning; double newYaGold; double newDeGold; if (userWardingCache.containsKey(userId)) { userWarning = (UserWarning)userWardingCache.get(userId); newYaGold = userWarning.getYaGold() + yaGold; userWarning.setYaGold(newYaGold); newDeGold = userWarning.getDeGold() + deGold; userWarning.setDeGold(newDeGold); userWardingCache.put(userId, userWarning); } else { userWarning = this.userWarningService.IlIIIIIlIllIlIIl(userId); if (userWarning == null) { userWarning = new UserWarning(); userWarning.setUserId(userId); newYaGold = userWarning.getYaGold() + yaGold; userWarning.setYaGold(newYaGold); newDeGold = userWarning.getDeGold() + deGold; userWarning.setDeGold(newDeGold); } userWardingCache.put(userId, userWarning); this.log.error("缓存没有该玩家预警,玩家Id为:" + userId); } UserTenMinScore userTenMinScore = (UserTenMinScore)LocalMem.O.get(userId); if (userTenMinScore == null) { LocalMem.O.put(userId, userTenMinScore = new UserTenMinScore(userId, ds.deskId)); } userTenMinScore.yaFen += hitFired.value; userTenMinScore.deFen += addScore; if (LocalMem.x.contains(userId)) { this.log.info("玩家" + cacheuser.getUsername() + ",碰撞获得分值=" + addScore + ",当前币值、分值=" + cacheuser.getGameGold() + "," + cacheuser.getGameScore()); } } //endregion //return; } //endregion synchronized(desk) //endregion //} /*catch (Exception e) { this.log.error("", e); }*/ //endregion } @Transactional public Map<String, Object> playerInfo(int id, IoSession session) { Map<String, Object> result = new HashMap(); com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(id); if (ds == null) { return null; } //else { User user = (User)this.userDao.IIIIlIlIIIIlIIlI(id); //fix 200513 更新水值 //User user = (User)this.userDao.IIlIllIlllIIIlIl("from User where username=?", new Object[]{username}); User cacheUser = (User)UserService.CacheUser.get(user.getId()); cacheUser.setWaterValue(user.getWaterValue() ); System.out.println("你个大水B:" + cacheUser.getWaterValue() ); OverFishPropertyUtil.reLoadConf(0); //fix 200513 result.put("user", user); result.put("seatId", ds.IIIllIlIlIlIlIll); int num = this.userTopDao.IIllIIlIIlIlIlIl("select count(*) from UserTop where type=3 and userId=?", new Object[]{id}); if (num <= 0) { result.put("honor", -1); } else { Query query = this.userTopDao.IIIIlIlIIIIlIIlI("select count(*) from UserTop where type=3 and gold>(select max(gold) from UserTop where type=3 and userId=?)", new Object[]{user.getId()}); Object temp = query.uniqueResult(); num = Integer.parseInt(temp.toString()) + 1; if (num > 10) { result.put("honor", -1); } else { result.put("honor", num); } } return result; //} } public void sendChat(int type, int receiverUserId, String message, IoSession session) { Integer senderId = Integer.parseInt(session.getAttribute("id").toString()); com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(senderId); Map<String, Object> senderMessage = new HashMap(); senderMessage.put("chatType", type); senderMessage.put("senderSeatId", ds.IIIllIlIlIlIlIll); senderMessage.put("chatMessage", message); if (type == 0) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "sendChat", new Object[]{senderMessage})); IoSession reSession = (IoSession)LocalMem.B.get(receiverUserId); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(reSession, "sendChat", new Object[]{senderMessage})); } else { /*Iterator var9 = LocalMem.D.entrySet().iterator(); while(var9.hasNext()) { Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var9.next(); */ for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { if (ds.deskId == ((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId) { IoSession s = (IoSession)LocalMem.B.get(entry.getKey()); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(s, "sendChat", new Object[]{senderMessage})); } } } } public void heart(IoSession session) { LocalMem.A.put(session, System.currentTimeMillis()); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "heart", new Object[0])); } @Transactional public boolean addExpeGoldAuto(IoSession session) { try { Integer userId = Integer.parseInt(session.getAttribute("id").toString()); this.userDao.IIIIlIlllllIlllI(userId, 10000); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "expeGold", new Object[]{10000})); return true; } catch (Exception ex) { return false; } } @Transactional public void quitGame(IoSession session) { try { if (session == null) { return; } Object oUserId = session.getAttribute("id"); if (oUserId == null) { return; } int userId = Integer.parseInt(oUserId.toString()); if (LocalMem.C.containsKey(userId)) { LocalMem.C.remove(userId); } if (LocalMem.D.containsKey(userId)) { com.miracle9.game.bean.IIIIlIlllllIlllI ds = (com.miracle9.game.bean.IIIIlIlllllIlllI)LocalMem.D.get(userId); this.leaveSeat(ds.deskId, ds.IIIllIlIlIlIlIll, session); } session.removeAttribute("id"); LocalMem.B.remove(userId); LocalMem.y.remove(userId); if (LocalMem.z.containsKey(userId)) { LocalMem.z.remove(userId); } LocalMem.A.remove(session); CacheUser.remove(userId); LocalMem.F.remove(userId); com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("gameService/logout", new Object[]{userId, com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.llllllIlllIIlIll}); } catch (NumberFormatException var5) { this.log.error("退出游戏出错"); } } private void sendNotice(int type, int score, BulletFishDesk desk, User user) { String content = null; if (desk.getRoomId() == 1) { if (type == 19) { content = "恭喜:练习厅" + desk.getName() + "桌" + user.getNickname() + "捕获超级BOSS,获得" + score + "分"; } else { content = "恭喜:练习厅" + desk.getName() + "桌" + user.getNickname() + "击中超级炸弹,获得" + score + "分"; } } else if (type == 19) { content = "恭喜:竞技厅" + desk.getName() + "桌" + user.getNickname() + "捕获超级BOSS,获得" + score + "分"; } else { content = "恭喜:竞技厅" + desk.getName() + "桌" + user.getNickname() + "击中超级炸弹,获得" + score + "分"; } for (final Map.Entry<Integer, IoSession> entry : LocalMem.B.entrySet()) { IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI((IoSession)entry.getValue(), "scrollMessage", new Object[]{content})); } } public void clearFishLock(Integer fishId) { if (fishId == null) { return; } for (final Map.Entry<Integer, Integer> entry : LocalMem.M.entrySet()) { if (entry.getValue() == fishId) { IoSession s = (IoSession)LocalMem.B.get(entry.getKey()); this.unLockFish(s); } } } @Transactional public User getUser(Integer userId) { return (User)this.userDao.IIIIlIlIIIIlIIlI(userId); } @Transactional public void asyncSave(String hql, Object... params) { this.userDao.IIIIlIlIIIIlIIlI(hql, params).executeUpdate(); } @Transactional public void asyncSaveGameData() { SystemConfig config = this.systemConfigDao.IIllIIlIIlIlIlIl(); //Iterator var3 = LocalMem.D.entrySet().iterator(); //while(var3.hasNext()) { // Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry = (Entry)var3.next(); for (Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId); if (desk != null) { String hql = null; if (desk.getRoomId() == 2) { hql = "update User set gameScore=?,levelScore=? where id=?"; } else { hql = "update User set expeScore=?,levelScore=? where id=?"; } User user = (User)CacheUser.get(entry.getKey()); this.asyncSave(hql, user.getGameScore(), user.getLevelScore(), user.getId()); user = this.getUser(user.getId()); if (desk.getRoomId() != 2) { continue; } //if (desk.getRoomId() == 2) { int sumGameGold = user.getGameGold() + getUserScore(user.getId()) / desk.getExchange(); UserWarning userWarning = (UserWarning)userWardingCache.get(entry.getKey()); if (userWarning == null) { userWarning = this.userWarningService.IlIIIIIlIllIlIIl((Integer)entry.getKey()); } userWarning.setGameGold((long)sumGameGold); userWardingCache.put((Integer)entry.getKey(), userWarning); int overrunMoney = 0; if (user.getPromoterId() == 0) { overrunMoney = config.getMoneyOverrun(); } else { Promoter promoter = (Promoter)this.promoterDao.IIIIlIlIIIIlIIlI(user.getPromoterId()); overrunMoney = promoter.getChildrenUserOver(); } if (overrunMoney == -1 || sumGameGold * config.getPayScale() < overrunMoney * 100) { continue; } //if (overrunMoney != -1 && sumGameGold * config.getPayScale() >= overrunMoney * 100) { this.userDao.IIIIlIlIIIIlIIlI((Integer)entry.getKey(), 1); this.userDao.getSession().flush(); int userId = user.getId(); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI((IoSession)LocalMem.B.get(user.getId()), "overflow", new Object[0])); this.log.error("=====" + userId + "爆机前" + "用户分数:" + user.getGameScore() + "币" + user.getGameGold()); this.clearingUserScore(user.getId()); User user2 = this.getUser(userId); this.log.error("=====" + userId + "爆机后" + "用户分数:" + user2.getGameScore() + "币" + user2.getGameGold()); LocalMem.D.remove(user.getId()); LocalMem.C.remove(user.getId()); this.refreshUser(desk.getId()); //} //} } } String date = MyUtil.IIIIlIlllllIlllI(new Date()); for (final Object entry : IIlIlIIIIIlllIIl.lIlIIllIlIllllII.entrySet()) { try { if (!date.equals(((GameDataLog)((Entry)entry).getValue()).getDatetime())) { IIlIlIIIIIlllIIl.lIlIIllIlIllllII.remove(((Entry)entry).getKey()); } if (((GameDataLog)((Entry)entry).getValue()).getPromoterId() != 0) { ((GameDataLog)((Entry)entry).getValue()).setPromoterGold(((Promoter)this.promoterDao.IIIIlIlIIIIlIIlI(((GameDataLog)((Entry)entry).getValue()).getPromoterId())).getGold()); } this.gameDataLogDao.update((GameDataLog)((Entry)entry).getValue()); this.gameDataLogDao.getSession().flush(); } catch (Exception var12) { IIlIlIIIIIlllIIl.lIlIIllIlIllllII.remove(((Entry)entry).getKey()); } } List<BulletFishDesk> desks = this.bulletFishDeskDao.IIIIlIlIIIIlIIlI(); String hql = "update BulletFishDesk set sumYaFen=?,sumDeFen=?,sumSeat1YaFen=?,sumSeat1DeFen=?,sumSeat2YaFen=?,sumSeat2DeFen=?,sumSeat3YaFen=?,sumSeat3DeFen=?,sumSeat4YaFen=?,sumSeat4DeFen=? where id=?"; for (final BulletFishDesk f : desks) { this.bulletFishDeskDao.IIIIlIlIIIIlIIlI(hql, new Object[]{f.getSumYaFen(), f.getSumDeFen(), f.getSumSeat1YaFen(), f.getSumSeat1DeFen(), f.getSumSeat2YaFen(), f.getSumSeat2DeFen(), f.getSumSeat3YaFen(), f.getSumSeat3DeFen(), f.getSumSeat4YaFen(), f.getSumSeat4DeFen(), f.getId()}).executeUpdate(); } if (!userWardingCache.isEmpty()) { for (final Map.Entry<Integer, UserWarning> entry : UserService.userWardingCache.entrySet()) { UserWarning userWarning = (UserWarning)entry.getValue(); com.miracle9.game.IIIllIlIlIlIlIll.IlIIIIIlIllIlIIl.lIIIIlllllIIlIll().IIIIlIlIIIIlIIlI(userWarning); } } } public void printUserGold() { for (final Map.Entry<Integer, com.miracle9.game.bean.IIIIlIlllllIlllI> entry : LocalMem.D.entrySet()) { BulletFishDesk desk = this.bulletFishDeskDao.IIIIlIlllllIlllI(((com.miracle9.game.bean.IIIIlIlllllIlllI)entry.getValue()).deskId); if (desk != null) { User user = (User)CacheUser.get(entry.getKey()); if (user == null || desk.getRoomId() != 2) { continue; } //if (user != null && desk.getRoomId() == 2) { int sumGameGold = user.getGameGold() + getUserScore(user.getId()) / desk.getExchange(); UserWarning userWarning = (UserWarning)userWardingCache.get(entry.getKey()); if (userWarning == null) { userWarning = this.userWarningService.IlIIIIIlIllIlIIl((Integer)entry.getKey()); } userWarning.setGameGold((long)sumGameGold); this.log.info("printUserWarning:" + userWarning); this.log.info("printUserGold gameGold:" + user.getGameGold() + ",gameScore:" + getUserScore(user.getId()) + ",totalGold:" + sumGameGold); User user2 = this.getUser((Integer)entry.getKey()); this.log.info("user in db gameGold:" + user2.getGameGold() + ",gameScore:" + user2.getGameScore()); //} } } } @Transactional public boolean addUserTop(int bet, int addGold, int fishType, User user) { try { String datetime = MyUtil.IIIIlIlllllIlllI(new Date()); int topCount = this.userTopDao.IIllIIlIIlIlIlIl("select count(*) from UserTop where type=3 and gold>? and datetime>=?", new Object[]{addGold, datetime}); if (topCount < 10) { UserTop ut = new UserTop(); ut.setGold(addGold); ut.setUserId(user.getId()); ut.setNickname(user.getNickname()); if (fishType == 19) { ut.setAwardName("超级Boss(" + bet + "倍)"); } else { ut.setAwardName("超级炸弹(" + bet + "倍)"); } ut.setDatetime(MyUtil.IIIIlIlIIIIlIIlI(new Date())); ut.setType(3); this.userTopDao.IIIIlIlIIIIlIIlI(ut); return true; } } catch (Exception e) { this.log.error("添加排行榜失败,error:", e); } return false; } private DieFishInputInfo specialKill(DieFishInputInfo input) { DieFishOutputInfo output = new DieFishOutputInfo(); //log.debug( "nFishCounts: "+ input.totalFish ); for(int i = 0; i < input.totalFish; ++i) { //BUG 传参进来 偶尔会多一个 2bet的fish信息 //this.log.debug( i+" bet:" + input.fishes[i].bet +" fishid:" + input.fishes[i].fishid ); if ( this.IIlllIIIlIllIIIllkiillill(input.fishes[i].bet) ) { input.fishes[i].fsDead=true; this.log.debug(i+"fsDead:" + input.fishes[i].fsDead ); } } return input; } private DieFishOutputInfo IIlIlIIIIIlllIIloiiillll(DieFishInputInfo input) { //if (input == null) {System.out.println("IsFishDied input is null!");return null;} //new DieFishInputInfo(); DieFishOutputInfo output = new DieFishOutputInfo(); System.out.println( "nFishCounts: "+ input.totalFish ); for(int i = 0; i < input.totalFish; ++i) { //BUG 传参进来 偶尔会多一个 2bet的fish信息 this.log.debug( i+" bet:" + input.fishes[i].bet ); this.log.debug( i+" bet:" + input.fishes[i].fishid ); if ( this.IIlllIIIlIllIIIllkiillill(input.fishes[i].bet) ) { output.dead[i].fishType = input.fishes[i].fishType; output.dead[i].bet = input.fishes[i].bet; output.dead[i].fishid = input.fishes[i].fishid; output.dead[i].fx = input.fishes[i].fx; output.dead[i].fy = input.fishes[i].fy; this.log.debug( i+" fx:" + input.fishes[i].fx + "fy:" + input.fishes[i].fy ); this.log.debug( i+" deadfx:" + output.dead[i].fx + "deadfy:" + output.dead[i].fy ); ++output.totalFish; } } output.ionicCannonIndex = -1; return output; } private boolean IIlllIIIlIllIIIllkiillill(int bet) { Random random = new Random(); int num = random.nextInt(100); //System.out.print("命中率 "+num +" VS "+ this.IIlllIIIlIllIIIllgiillill(bet)); return (float)num < this.IIlllIIIlIllIIIllgiillill(bet); } private float IIlllIIIlIllIIIllgiillill(int bet) { for (final Map.Entry<String, Float> entry : OverFishPropertyUtil.IIILiillfffkkkllllu.entrySet()) { final String range = entry.getKey(); final int start = Integer.parseInt(range.split("-")[0]); final int end = Integer.parseInt(range.split("-")[1]); if (bet >= start && bet <= end) { return entry.getValue() * 100.0f; } } return 0.0f; } public void lockUser(int userId, String reason) { try { this.log.info("准备封号, userId:" + userId); IoSession session = (IoSession)LocalMem.B.get(userId); this.log.info("session:" + session); this.quitGame(session); IIIllIlIlIlIlIll.a.IIIIlIlllllIlllI(new IIIIlIlIIIIlIIlI(session, "quitToLogin", new Object[]{4})); com.miracle9.game.IIIIlIlllllIlllI.IIIIlIlllllIlllI.IIlllIIIlIllIIIl("userService/lockUserBySystem", new Object[]{userId, 1, reason + ",游戏:<牛魔王>"}); } catch (Exception e) { this.log.info("封号异常,userId:" + userId + ", error:" + e); } } public boolean limitEnterDesk(int userId, int deskId) { Map<Long, Integer> timeCountMap = (Map)userDeskTimeMap.get(String.valueOf(userId) + ":" + deskId); if (timeCountMap == null) { //Map<Long, Integer> timeCountMap = new HashMap(); timeCountMap = new HashMap(); timeCountMap.put(System.currentTimeMillis(), 1); userDeskTimeMap.put(String.valueOf(userId) + ":" + deskId, timeCountMap); return false; } else { long currentTime = System.currentTimeMillis(); for (Map.Entry<Long, Integer> entry : timeCountMap.entrySet()) { Long lastTime = (Long)entry.getKey(); Integer count = (Integer)entry.getValue(); if (System.currentTimeMillis() - lastTime >= (long)(OverFishPropertyUtil.limitSecond * 1000)) { timeCountMap.clear(); timeCountMap.put(currentTime, 1); this.log.info("用户" + userId + "上桌" + deskId + ",已经过了1分钟,重新开始计数"); } else { int newCount = count + 1; timeCountMap.put(lastTime, newCount); this.log.info("用户" + userId + "上桌" + deskId + ",一分钟内上桌次数:" + newCount); if (newCount >= OverFishPropertyUtil.limitCount) { return true; } continue; } } return false; } } public Map checkVersion(String paramString, IoSession paramIoSession) { HashMap localHashMap = new HashMap(); localHashMap.put("code", 0); localHashMap.put("path", ""); localHashMap.put("message", "123456"); return localHashMap; } }
以上是关于星力九代 命中算法源代码 特殊用户处理 点控调整的主要内容,如果未能解决你的问题,请参考以下文章