难度命中算法制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( "\n 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("\nfsDead "+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
+"\n input.totalWin=" +input.totalWin
+"\n this._totalPlay=" +this._totalPlay
+"\n this._totalWin=" + this._totalWin
+"\n input.totalPlay - this._totalPlay=" + (input.totalPlay - this._totalPlay)
+"\n nowWin =" + nowWin
+"\n input.slavePlay=" + input.slavePlay
+"\n 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;
}
}
原文:https://www.cnblogs.com/sevensky/p/13205140.html