public GachaResult JZ_GachaMaterial() { //概率1命中通用进化材料 装备经验 金币 Random rd = new Random(GetRandomSeed()); double pro_0 = Probablity_JZ装备经验 + Probablity_JZ通用进化材料 + Probablity_JZGold; double pro_1 = rd.Next(0, Convert.ToInt32(pro_0 * 100)) / (double)100; GachaResult gr = new GachaResult(); if (pro_1 < Probablity_JZ通用进化材料) { gr.name = "镜面"; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.value = 1200; return(gr); } else if (pro_1 < Probablity_JZ装备经验 + Probablity_JZ通用进化材料) { double db = rd.NextDouble(); gr.name = (db <= 0.5) ? "紫色经验材料" : "蓝色经验材料"; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.value = (db <= 0.5) ? 1100 : 1000; return(gr); } else { rd = new Random(GetRandomSeed()); double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZGold) * 1000)) / (double)1000; if (pro_2 < Probablity_Material吼咪宝藏) { gr.name = "吼咪宝藏"; gr.value = 700; gr.count = 1; gr.type = TypeS.Material.ToString(); return(gr); } else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏) { gr.name = "吼美宝藏"; gr.value = 600; gr.count = 1; gr.type = TypeS.Material.ToString(); return(gr); } else { gr.name = "吼姆宝藏"; gr.value = 500; gr.count = 1; gr.type = TypeS.Material.ToString(); return(gr); } } }
public static void PrintGachaResult(GachaResult result, ViewModel viewModel) { string history = ""; foreach (var item in result.list) { if ("item".Equals(item.type)) { history += String.Format("{0} x {1}", item.name, item.value) + Environment.NewLine; } else if ("card".Equals(item.type)) { string rare = ""; switch (item.rare) { case 4: rare = "[欧皇]"; break; case 3: rare = "[脸帝]"; break; case 2: rare = "[狗粮]"; break; case 1: rare = "[渣渣]"; break; default: rare = "[????]"; break; } history += String.Format("{0}{1} x {2}", rare, item.name, item.value) + Environment.NewLine; } } viewModel.History = history; }
private int CalcNumRarityData(RARITY_TYPE targetRarityType, bool isCheckOnlyLast = false, bool isCheck10 = false) { int num = 0; if (!MonoBehaviourSingleton <GachaManager> .IsValid()) { Log.Error("Invalid GachaManager!!"); return(num); } GachaResult gachaResult = MonoBehaviourSingleton <GachaManager> .I.gachaResult; if (gachaResult == null) { Log.Error("gachaResult is null!!"); return(num); } int num2 = gachaResult.reward.Count; List <GachaResult.GachaReward> list = gachaResult.reward; if (isCheckOnlyLast) { SkillItemTable.SkillItemData skillItemData = Singleton <SkillItemTable> .I.GetSkillItemData((uint)list[num2 - 1].itemId); return((skillItemData.rarity == targetRarityType) ? 1 : 0); } if (isCheck10 && isReam) { num2--; } for (int i = 0; i < num2; i++) { SkillItemTable.SkillItemData skillItemData2 = Singleton <SkillItemTable> .I.GetSkillItemData((uint)list[i].itemId); if (skillItemData2 != null && skillItemData2.rarity == targetRarityType) { num++; } } return(num); }
public GachaResult JZ_GachaMaterial() { Random rd = new Random(GetRandomSeed()); double pro_0 = Probablity_JZ装备经验 + Probablity_JZ通用进化材料 + Probablity_JZGold; double pro_1 = rd.Next(0, Convert.ToInt32(pro_0 * 100)) / (double)100; GachaResult gr = new GachaResult(); if (pro_1 < Probablity_JZ通用进化材料) { gr.name = "相转移镜面"; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.value = 1200; gr.quality = 2; gr.evaluation = 4; return(gr); } else if (pro_1 < Probablity_JZ装备经验 + Probablity_JZ通用进化材料) { double db = rd.NextDouble(); gr.name = (db <= 0.5) ? "双子灵魂结晶" : "灵魂结晶"; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.value = (db <= 0.5) ? 1100 : 1000; gr.quality = (db <= 0.5) ? 2 : 1; gr.evaluation = (db <= 0.5) ? 4 : 3; return(gr); } else { double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZGold) * 1000)) / (double)1000; if (pro_2 < Probablity_Material吼咪宝藏) { gr.name = "吼咪宝藏"; gr.value = 700; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏) { gr.name = "吼美宝藏"; gr.value = 600; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else { gr.name = "吼里宝藏"; gr.value = 500; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 1; gr.evaluation = 3; return(gr); } } }
public GachaResult JZ_GachaMain() { Random rd = new Random(GetRandomSeed()); double pro_1 = rd.Next(0, 10000000) / (double)100000; Count_JZ++; GachaResult gr = new GachaResult(); if (Count_JZ < 10) { if (pro_1 < Probablity_Weapon4Total) { GetTargetItem = true; Count_JZ = 0; double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 100000)) / (double)100000; if (pro_2 < Probablity_JZUpWeapon4) { gr.name = Text_UpWeapon;; gr.value = 28000; gr.count = 1; gr.level = 10; gr.type = TypeS.Weapon.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else { double pro_3 = rd.Next(0, 6); gr.value = 27000; gr.count = 1; gr.level = 1; gr.type = TypeS.Weapon.ToString(); gr.quality = 2; gr.evaluation = 4; switch (pro_3) { case 0: gr.name = Text_Weapon1; break; case 1: gr.name = Text_Weapon2; break; case 2: gr.name = Text_Weapon3; break; case 3: gr.name = Text_Weapon4; break; case 4: gr.name = Text_Weapon5; break; case 5: gr.name = Text_Weapon6; break; } return(gr); } } else if (pro_1 < Probablity_Stigmata4Total + Probablity_Weapon4Total) { GetTargetItem = true; Count_JZ = 0; rd = new Random(GetRandomSeed()); double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZUpStigmata4 + Probablity_JZStigmata4) * 100000)) / (double)100000; if (pro_2 < Probablity_JZUpStigmata4) { switch (rd.Next(0, 3)) { case 0: gr.name = Text_UpStigmata + "上"; break; case 1: gr.name = Text_UpStigmata + "中"; break; case 2: gr.name = Text_UpStigmata + "下"; break; } gr.value = 2800; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.level = 10; gr.quality = 2; gr.evaluation = 4; return(gr); } else { string temp = ""; switch (rd.Next(0, 4)) { case 0: temp = Text_Stigmata1; break; case 1: temp = Text_Stigmata2; break; case 2: temp = Text_Stigmata3; break; case 3: temp = Text_Stigmata4; break; } switch (rd.Next(0, 3)) { case 0: gr.name = temp + "上"; break; case 1: gr.name = temp + "中"; break; case 2: gr.name = temp + "下"; break; } gr.value = 2700; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.level = 1; gr.quality = 2; gr.evaluation = 4; return(gr); } } else if (pro_1 < Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total) { int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Weapon3", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt")); gr.name = INIhelper.IniRead("详情", $"Weapon3_Item{rd.Next(0, count)}", "3星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); gr.count = 1; gr.type = TypeS.Weapon.ToString(); gr.value = 26000; gr.level = 1; gr.quality = 1; gr.evaluation = 3; return(gr); } else if (pro_1 < Probablity_Stigmata3Total + Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total) { int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Stigmata3", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt")); gr.name = INIhelper.IniRead("详情", $"Stigmata3_Item{rd.Next(0, count)}", "3星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); switch (rd.Next(0, 3)) { case 0: gr.name += "上"; break; case 1: gr.name += "中"; break; case 2: gr.name += "下"; break; } gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.value = 2600; gr.level = 1; gr.quality = 1; gr.evaluation = 3; return(gr); } else { double pro_0 = rd.Next(0, 10000) / (double)100; if (pro_0 <= 50) { int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Weapon2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt")); gr.name = INIhelper.IniRead("详情", $"Weapon2_Item{rd.Next(0, count)}", "2星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); gr.value = 25000; gr.count = 1; gr.type = TypeS.Weapon.ToString(); gr.level = 1; gr.quality = 1; gr.evaluation = 2; return(gr); } else { int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Stigmata2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt")); gr.name = INIhelper.IniRead("详情", $"Stigmata2_Item{rd.Next(0, count)}", "2星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); switch (rd.Next(0, 3)) { case 0: gr.name += "上"; break; case 1: gr.name += "中"; break; case 2: gr.name += "下"; break; } gr.value = 2500; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.level = 1; gr.quality = 1; gr.evaluation = 2; return(gr); } } } else { Count_JZ = 0; GetTargetItem = false; double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total + Probablity_Stigmata4Total) * 1000000)) / (double)1000000; if (pro_0 < Probablity_Weapon4Total) { double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 1000000)) / (double)1000000; if (pro_2 < Probablity_JZUpWeapon4) { gr.name = Text_UpWeapon;; gr.value = 28000; gr.count = 1; gr.type = TypeS.Weapon.ToString(); gr.level = 10; gr.quality = 2; gr.evaluation = 4; return(gr); } else { double pro_3 = rd.Next(0, 6); gr.value = 27000; gr.count = 1; gr.type = TypeS.Weapon.ToString(); gr.level = 1; gr.quality = 2; gr.evaluation = 4; switch (pro_3) { case 0: gr.name = Text_Weapon1; break; case 1: gr.name = Text_Weapon2; break; case 2: gr.name = Text_Weapon3; break; case 3: gr.name = Text_Weapon4; break; case 4: gr.name = Text_Weapon5; break; case 5: gr.name = Text_Weapon6; break; } return(gr); } } else { if (rd.Next(0, Convert.ToInt32((Probablity_Stigmata4Total) * 1000000)) / (double)1000000 < Probablity_JZUpWeapon4) { switch (rd.Next(0, 3)) { case 0: gr.name = Text_UpStigmata + "上"; break; case 1: gr.name = Text_UpStigmata + "中"; break; case 2: gr.name = Text_UpStigmata + "下"; break; } gr.value = 20000; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.level = 10; gr.quality = 2; gr.evaluation = 4; return(gr); } else { string temp = ""; switch (rd.Next(0, 4)) { case 0: temp = Text_Stigmata1; break; case 1: temp = Text_Stigmata2; break; case 2: temp = Text_Stigmata3; break; case 3: temp = Text_Stigmata4; break; } switch (rd.Next(0, 3)) { case 0: gr.name = temp + "上"; break; case 1: gr.name = temp + "中"; break; case 2: gr.name = temp + "下"; break; } gr.value = 19000; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.level = 1; gr.quality = 2; gr.evaluation = 4; return(gr); } } } }
public GachaResult KC_GachaSub() { GachaResult gr = new GachaResult(); Random rd = new Random(GetRandomSeed()); double pro_2 = rd.Next(0, 100000) / (double)1000; if (pro_2 < Probablity_Material技能材料) { gr.name = "高级技能材料"; gr.value = 1000; gr.count = rd.Next(2, 4); gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else if (pro_2 < Probablity_Material反应炉 + Probablity_Material技能材料) { gr.name = "超小型反应炉"; gr.value = 800; gr.count = rd.Next(2, 4); gr.type = TypeS.Material.ToString(); gr.quality = 1; gr.evaluation = 3; return(gr); } else if (pro_2 < Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料) { double pro_4 = rd.NextDouble(); if (pro_4 <= 0.33) { gr.name = "特级学习材料"; gr.value = 900; gr.count = rd.Next(3, 6); gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else { gr.name = "高级学习材料"; gr.value = 800; gr.count = rd.Next(3, 6); gr.type = TypeS.Material.ToString(); gr.quality = 1; gr.evaluation = 3; return(gr); } } else if (pro_2 < Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料) { gr.name = "吼咪宝藏"; gr.value = 700; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料) { gr.name = "吼美宝藏"; gr.value = 600; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else if (pro_2 < Probablity_Material吼姆宝藏 + Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料) { gr.name = "吼里宝藏"; gr.value = 500; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 1; gr.evaluation = 3; return(gr); } else { double pro_0 = rd.Next(0, 10000) / (double)100; if (pro_0 <= 50) { int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Weapon2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt")); gr.name = INIhelper.IniRead("详情", $"Weapon2_Item{rd.Next(0, count)}", "2星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); gr.value = 2500; gr.count = 1; gr.type = TypeS.Weapon.ToString(); gr.level = 1; gr.quality = 1; gr.evaluation = 2; return(gr); } else { int count = Convert.ToInt32(INIhelper.IniRead("详情", "Count_Stigmata2", "0", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt")); gr.name = INIhelper.IniRead("详情", $"Stigmata2_Item{rd.Next(0, count)}", "2星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); switch (rd.Next(0, 3)) { case 0: gr.name += "上"; break; case 1: gr.name += "中"; break; case 2: gr.name += "下"; break; } gr.value = 2400; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.level = 1; gr.quality = 1; gr.evaluation = 2; return(gr); } } }
public GachaResult KC_Gacha() { Random rd = new Random(GetRandomSeed()); double pro_1 = rd.Next(0, 1000000) / (double)10000; Count++; GachaResult gr = new GachaResult(); // if (Count < 10) { if (pro_1 < Probablity_KC角色卡) { GetTargetItem = true; Count = 0; double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_KC角色卡) * 1000)) / (double)1000; if (pro_0 < Probablity_UpS) { gr.name = Text_UpS; gr.value = 28000; gr.count = 1; gr.type = TypeS.Chararcter.ToString(); gr.class_ = "S"; gr.quality = 2; return(gr); } else if (pro_0 < Probablity_UpA + Probablity_UpS) { gr.name = Text_UpA;; gr.value = 2800; gr.count = 1; gr.type = TypeS.Chararcter.ToString(); gr.class_ = "A"; gr.quality = 2; return(gr); } else { gr.value = 2800; gr.count = 1; gr.type = TypeS.Chararcter.ToString(); gr.class_ = "A"; gr.quality = 2; int temp = rd.Next(3); if (temp == 0) { gr.name = Text_A1;; return(gr); } if (temp == 1) { gr.name = Text_A2; return(gr); } gr.name = Text_A3;; return(gr); } } else if (pro_1 < Probablity_KC角色卡 + Probablity_KC角色碎片) { if (rd.Next(0, Convert.ToInt32((Probablity_KC角色碎片) * 1000)) / (double)1000 < Probablity_Sdebris) { gr.name = Text_UpS + "碎片"; gr.value = 2700; gr.count = rd.Next(7, 10); gr.type = TypeS.debri.ToString(); gr.quality = 2; return(gr); } else { gr.value = 2600; gr.count = rd.Next(4, 9); gr.type = TypeS.debri.ToString(); int temp = rd.Next(4); if (temp == 0) { gr.name = Text_UpA + "碎片"; return(gr); } if (temp == 1) { gr.name = Text_A1 + "碎片"; return(gr); } if (temp == 2) { gr.name = Text_A2 + "碎片"; return(gr); } gr.name = Text_A3 + "碎片"; gr.quality = 2; return(gr); } } else { double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_KC材料) * 1000)) / (double)1000; if (pro_2 < Probablity_Material技能材料) { gr.name = "高级技能材料"; gr.value = 1000; gr.count = rd.Next(4, 7); gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else if (pro_2 < Probablity_Material反应炉 + Probablity_Material技能材料) { gr.name = "超小型反应炉"; gr.value = 800; gr.count = rd.Next(4, 7); gr.type = TypeS.Material.ToString(); gr.quality = 1; gr.evaluation = 3; return(gr); } else if (pro_2 < Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料) { double pro_4 = rd.NextDouble(); if (pro_4 <= 0.33) { gr.name = "特级学习材料"; gr.value = 900; gr.count = rd.Next(5, 9); gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else { gr.name = "高级学习材料"; gr.value = 800; gr.count = rd.Next(5, 9); gr.type = TypeS.Material.ToString(); gr.quality = 1; gr.evaluation = 3; return(gr); } } else if (pro_2 < Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料) { gr.name = "吼咪宝藏"; gr.value = 700; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else if (pro_2 < Probablity_Material吼美宝藏 + Probablity_Material吼咪宝藏 + Probablity_Material紫色角色经验 + Probablity_Material反应炉 + Probablity_Material技能材料) { gr.name = "吼美宝藏"; gr.value = 600; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 2; gr.evaluation = 4; return(gr); } else { gr.name = "吼里宝藏"; gr.value = 500; gr.count = 1; gr.type = TypeS.Material.ToString(); gr.quality = 1; gr.evaluation = 3; return(gr); } } } else { Count = 0; GetTargetItem = false; double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_KC角色卡) * 1000)) / (double)1000; if (pro_0 < Probablity_UpS) { gr.name = Text_UpS;; gr.value = 28000; gr.count = 1; gr.class_ = "S"; gr.quality = 2; gr.type = TypeS.Chararcter.ToString(); return(gr); } else if (pro_0 < Probablity_UpA + Probablity_UpS) { gr.name = Text_UpA;; gr.value = 2800; gr.count = 1; gr.class_ = "A"; gr.quality = 2; gr.type = TypeS.Chararcter.ToString(); return(gr); } else { gr.value = 2800; gr.count = 1; gr.class_ = "A"; gr.quality = 2; gr.type = TypeS.Chararcter.ToString(); int temp = rd.Next(3); if (temp == 0) { gr.name = Text_A1;; return(gr); } if (temp == 1) { gr.name = Text_A2; return(gr); } gr.name = Text_A3;; return(gr); } } }
public static void UpdateGachaResult(GachaResult result, MainWindowViewModel viewModel) { viewModel.CardQuantity = result.card.value; viewModel.CardMax = result.card.max; }
public GachaResult JZ_GachaMain() { Random rd = new Random(GetRandomSeed()); //初始概率1 初始值0-100.00000 double pro_1 = rd.Next(0, 10000000) / (double)100000; Count_JZ++; GachaResult gr = new GachaResult(); //保底标志为false且保底次数小于10 if (Count_JZ < 10) { //概率1命中四星武器 if (pro_1 < Probablity_Weapon4Total) { //保底标志为真 保底次数归零 GetTargetItem = true; Count_JZ = 0; rd = new Random(GetRandomSeed()); //初始概率2 初始值0-四星武器概率(4.95800) double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 100000)) / (double)100000; //概率2命中up武器(2.479) if (pro_2 < Probablity_JZUpWeapon4) { gr.name = Text_UpWeapon;; gr.value = 28000; gr.count = 1; gr.type = TypeS.Weapon.ToString(); return(gr); } //概率2命中up外武器4.958-2.479=2.479 2.479/6=0.413 else { //概率3初始化 double pro_3 = rd.Next(0, 6); gr.value = 27000; gr.count = 1; gr.type = TypeS.Weapon.ToString(); switch (pro_3) { case 0: gr.name = Text_Weapon1; break; case 1: gr.name = Text_Weapon2; break; case 2: gr.name = Text_Weapon3; break; case 3: gr.name = Text_Weapon4; break; case 4: gr.name = Text_Weapon5; break; case 5: gr.name = Text_Weapon6; break; } return(gr); } } //概率1命中四星圣痕 7.437+4.958=12.395 4.958-12.395 else if (pro_1 < Probablity_Stigmata4Total + Probablity_Weapon4Total) { //保底标志为真 保底次数归零 GetTargetItem = true; Count_JZ = 0; rd = new Random(GetRandomSeed()); //概率2初始化 0-(1.24000+0.31000=1.55000) double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_JZUpStigmata4 + Probablity_JZStigmata4) * 100000)) / (double)100000; //概率2命中Up圣痕单件(1.240) 1.240*3=3.72 7.437-3.72=3.717 3.717/12=0.30975 //与乘以三应该相同 if (pro_2 < Probablity_JZUpStigmata4) { switch (rd.Next(0, 3)) { case 0: gr.name = Text_UpStigmata + " 上"; break; case 1: gr.name = Text_UpStigmata + " 中"; break; case 2: gr.name = Text_UpStigmata + " 下"; break; } gr.value = 2800; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); return(gr); } //概率2命中普通圣痕单件(0.310) else { string temp = ""; switch (rd.Next(0, 4)) { case 0: temp = Text_Stigmata1; break; case 1: temp = Text_Stigmata2; break; case 2: temp = Text_Stigmata3; break; case 3: temp = Text_Stigmata4; break; } switch (rd.Next(0, 3)) { case 0: gr.name = temp + " 上"; break; case 1: gr.name = temp + " 中"; break; case 2: gr.name = temp + " 下"; break; } gr.value = 2700; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); return(gr); } } //概率1命中三星武器 4.958+7.437+11.231=23.626 12.395-23.626 else if (pro_1 < Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total) { gr.name = INIhelper.IniRead("详情", $"Weapon3_Item{rd.Next(0, 18)}", "3星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); gr.count = 1; gr.type = TypeS.Weapon.ToString(); gr.value = 26000; return(gr); } //概率1命中三星圣痕 4.958+7.437+11.231+33.694=57.32 23.626-57.32 else if (pro_1 < Probablity_Stigmata3Total + Probablity_Weapon3Total + Probablity_Weapon4Total + Probablity_Stigmata4Total) { gr.name = INIhelper.IniRead("详情", $"Stigmata3_Item{rd.Next(0, 12)}", "3星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); switch (rd.Next(0, 3)) { case 0: gr.name += "上"; break; case 1: gr.name += "中"; break; case 2: gr.name += "下"; break; } gr.count = 1; gr.type = TypeS.Stigmata.ToString(); gr.value = 2600; return(gr); } //逻辑1命中二星装备与二星圣痕 4.958+7.437+11.231+33.694+17.072+17.072+8.536=100 //感觉逻辑上没什么问题…… else { rd = new Random(GetRandomSeed()); double pro_0 = rd.Next(0, 10000) / (double)100; if (pro_0 <= 50) { gr.name = INIhelper.IniRead("详情", $"Weapon2_Item{rd.Next(0, 20)}", "2星武器", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); gr.value = 25000; gr.count = 1; gr.type = TypeS.Weapon.ToString(); return(gr); } else { gr.name = INIhelper.IniRead("详情", $"Stigmata2_Item{rd.Next(0, 5)}", "2星圣痕", $@"{cq.CQApi.AppDirectory}\概率\精准概率.txt"); switch (rd.Next(0, 3)) { case 0: gr.name += "上"; break; case 1: gr.name += "中"; break; case 2: gr.name += "下"; break; } gr.value = 2500; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); return(gr); } } } // else { //保底 Count_JZ = 0; GetTargetItem = false; rd = new Random(GetRandomSeed()); //概率0初始化 0-(4星武器+4星圣痕) double pro_0 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total + Probablity_Stigmata4Total) * 1000000)) / (double)1000000; //概率0命中四星武器 if (pro_0 < Probablity_Weapon4Total) { double pro_2 = rd.Next(0, Convert.ToInt32((Probablity_Weapon4Total) * 1000000)) / (double)1000000; if (pro_2 < Probablity_JZUpWeapon4) { gr.name = Text_UpWeapon;; gr.value = 28000; gr.count = 1; gr.type = TypeS.Weapon.ToString(); return(gr); } else { double pro_3 = rd.Next(0, 6); gr.value = 27000; gr.count = 1; gr.type = TypeS.Chararcter.ToString(); switch (pro_3) { case 0: gr.name = Text_Weapon1; break; case 1: gr.name = Text_Weapon2; break; case 2: gr.name = Text_Weapon3; break; case 3: gr.name = Text_Weapon4; break; case 4: gr.name = Text_Weapon5; break; case 5: gr.name = Text_Weapon6; break; } return(gr); } } else { rd = new Random(GetRandomSeed()); if (rd.Next(0, Convert.ToInt32((Probablity_Stigmata4Total) * 1000000)) / (double)1000000 < Probablity_JZUpWeapon4 * 3) { switch (rd.Next(0, 3)) { case 0: gr.name = Text_UpStigmata + " 上"; break; case 1: gr.name = Text_UpStigmata + " 中"; break; case 2: gr.name = Text_UpStigmata + " 下"; break; } gr.value = 20000; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); return(gr); } else { string temp = ""; switch (rd.Next(0, 4)) { case 0: temp = Text_Stigmata1; break; case 1: temp = Text_Stigmata2; break; case 2: temp = Text_Stigmata3; break; case 3: temp = Text_Stigmata4; break; } switch (rd.Next(0, 3)) { case 0: gr.name = temp + " 上"; break; case 1: gr.name = temp + " 中"; break; case 2: gr.name = temp + " 下"; break; } gr.value = 19000; gr.count = 1; gr.type = TypeS.Stigmata.ToString(); return(gr); } } } }
public void Update() { if (Input.GetMouseButton(0)) { nowPos = (Input.touchCount == 0) ? (Vector2)Input.mousePosition : Input.GetTouch(0).position; if (Input.GetMouseButtonDown(0)) { touchPos = nowPos; } } if (Input.GetMouseButtonUp(0)) //터치 끝 { if (end == true) { } else if (requestGacha == -1) { Vector2 diff = touchPos - nowPos; if ((mTouchSlice[randomCnt] == 0 && diff.x > 100) || (mTouchSlice[randomCnt] == 1 && diff.y > 100) || (mTouchSlice[randomCnt] == 2 && diff.x < -100) || (mTouchSlice[randomCnt] == 3 && diff.y < -100) ) { mAnimator.SetBool("isPlay", true); gachaButtion.gameObject.SetActive(false); requestGacha = remainGacha; var scriptRequest = new ExecuteCloudScriptRequest() { FunctionName = "Gacha", FunctionParameter = new { page = StaticManager.instance.GachaPage, num = requestGacha }, }; PlayFabClientAPI.ExecuteCloudScript(scriptRequest, (result) => { Debug.Log(PlayFab.Json.PlayFabSimpleJson.SerializeObject(result)); JsonObject jsonResult = (JsonObject)result.FunctionResult; Debug.Log(jsonResult.ToString()); GachaResult result_ = JsonUtility.FromJson <GachaResult>(jsonResult.ToString()); foreach (string key in result_.ItemId) { pickList.Add(key); } //KeyValuePair<string, JsonObject> entry = new KeyValuePair<string, JsonObject>((string)ItemId, CustomObj); //pickList.Add(entry); StaticManager.instance.mCharacterLocalDataChanged = true; requestGacha = 0; }, (error) => { requestGacha = 0; end = true; Debug.Log(error.GenerateErrorReport()); }); UiManager.instance.Crystal -= requestGacha * 100; } } else if (requestGacha == 0 && resultWindow == true) { remainGacha--; if (remainGacha == 0) { for (int i = 0; i < pickList.Count; i++) { AddIcon(i, pickList[i]); end = true; } gachaWindow.gameObject.SetActive(true); } else { StaticManager.instance.SettingIconImg(pickList[pickList.Count - remainGacha], tempGachaPick); tempGachaPick.gameObject.SetActive(true); tempGachaPick.GetComponent <ScaleChangeEffect>().StartAnimation(); var paticle = Resources.Load <GameObject>("Prefabs/Effect/GachaPaticle"); var patiObj = Instantiate(paticle, new Vector2(), Quaternion.identity) as GameObject; } } } if (start == false && mAnimator.GetCurrentAnimatorStateInfo(0).IsName("gacha") && mAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime > 1 && !mAnimator.IsInTransition(0) && mAnimator.GetCurrentAnimatorStateInfo(0).length > mAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime) { mAnimator.speed = 0.0f; start = true; } if (start == true && resultWindow == false && requestGacha == 0) { resultWindow = true; StaticManager.instance.SettingIconImg(pickList[0], tempGachaPick); tempGachaPick.gameObject.SetActive(true); tempGachaPick.GetComponent <ScaleChangeEffect>().StartAnimation(); var paticle = Resources.Load <GameObject>("Prefabs/GachaPaticle"); var patiObj = Instantiate(paticle, new Vector2(), Quaternion.identity) as GameObject; } }