Commit 3fe60b4642618456e3e99b79fc01d91f209d8376

Authored by zhangqijia
1 parent 9bd50719

fix: 英雄升星

Showing 3 changed files with 10 additions and 156 deletions   Show diff stats
@@ -57,3 +57,12 @@ message HeroSkillUpLevelRsp { @@ -57,3 +57,12 @@ message HeroSkillUpLevelRsp {
57 int32 skill_level = 3; 57 int32 skill_level = 3;
58 int32 rein_point = 4; 58 int32 rein_point = 4;
59 } 59 }
  60 +
  61 +message HeroUpStarReq {
  62 + string heroId = 1;
  63 + string items = 2; // [itemId1=count1, itemId2=count2]
  64 +}
  65 +
  66 +message HeroUpStarRsp {
  67 + models.Hero hero = 1;
  68 +}
@@ -32,6 +32,7 @@ enum ProtoCode @@ -32,6 +32,7 @@ enum ProtoCode
32 HeroUpLevelRpc = 203; 32 HeroUpLevelRpc = 203;
33 HeroReinRpc = 204; 33 HeroReinRpc = 204;
34 HeroSkillUpLevelRpc = 205; 34 HeroSkillUpLevelRpc = 205;
  35 + HeroUpStarRpc = 206;
35 36
36 EmailListRpc = 301; 37 EmailListRpc = 301;
37 EmailDrawRpc = 302; 38 EmailDrawRpc = 302;
战斗力统计.md deleted
@@ -1,156 +0,0 @@ @@ -1,156 +0,0 @@
1 -## 战斗力统计  
2 -### 战斗力分为总战斗力为英雄队伍战斗力与个体英雄战斗力的累加  
3 - 个体英雄战斗力(2020/11/23截至)根据英雄各个途径累加的攻击力,暴击,爆伤以及陪标的权值修正所得出  
4 - 英雄队伍战斗力(2020/11/23截至)根据各种途径的全局加成的攻击,暴击,爆伤与队伍英雄个数所得出  
5 -  
6 -## Part1: 个体英雄计算  
7 -(个体总攻击)×(1+暴击/100.0f × (1+爆伤/100.0f))× 权值修正  
8 -以下是客户端C#代码块  
9 -```C#  
10 -public int GetPower()  
11 -{  
12 - float asjustCrit = Crit;  
13 - if(Crit>=100)  
14 - asjustCrit = 100;  
15 - else if (Crit<=0)  
16 - asjustCrit = 0;  
17 - // float AtkSpeed = GetComponent<NumericComponent>().GetAsFloat(NumericType.AtkSpeed);  
18 - return (int)(GetHeroAllAtk() * (1 + asjustCrit/100.0f * (1 + CritHurt/100.0f))*Config.CeRevise);  
19 -}  
20 -```  
21 -  
22 -### 数值来源  
23 -数值来源 = 英雄本体+装备本体  
24 -  
25 ->因为我们不需要知道具体装备与装备上宝石具体位置,所以理论上全部收集起来一起计算  
26 -  
27 -1. 英雄本体  
28 -- 英雄默认初始值  
29 -- 英雄等级成长值  
30 -- 英雄转生修正  
31 -- 英雄位阶修正  
32 -- 英雄位阶阶段奖励  
33 -- 拉取固定词条  
34 -  
35 -2. 装备本体  
36 -- 装备数值  
37 -- 装备基础值  
38 - - 装备等级成长值  
39 -3. 宝石属性值  
40 -- 拉取固定词条  
41 -  
42 -### 具体计算  
43 -1. 英雄本体 = 英雄默认初始值 + 英雄等级成长值 + 英雄转生修正 + 英雄位阶修正 + 英雄位阶阶段奖励 + 拉取固定词条  
44 -- 英雄默认初始值 = 读表hero  
45 -- 英雄等级成长值  
46 -- 英雄转生修正  
47 -- 英雄位阶修正  
48 --  
49 -> 具体类型参考hero表当中的lvUpType字段,其对应表HeroLvUpValue中的lvUpType,  
50 -> >>三档分别对应:一档 [1,15] ;二档 [16,30];三档 [31,50]  
51 ->  
52 ->- 将算好的英雄等级成长攻击值*位阶攻击修正系数  
53 -> 此位阶修正系数来源于表《Advance》 根据英雄的当前位阶找到攻击权值  
54 -> 例如:格迪目前已经被玩家强化到位阶是:资深位阶,**则要把之前算好的(英雄等级成长攻击值)×1.4**  
55 ->  
56 ->  
57 ->**1.3 英雄位阶阶段奖励**  
58 ->  
59 ->- 根据英雄的位阶的小阶段可以获取到属性加成词条,例如:格迪现在是资深位阶的第6个小阶段  
60 ->则读表《Advance》的Attr字段,字段值意义为:属性ID=数量,以空格为切割,该字段来源于(总字段词条表《AttributesEntry》)  
61 -> **所以,最终格迪在该阶段会获得【10(每个小属性所加的攻击)×6(小阶段)】:60点攻击**  
62 -> 同时,之前位阶小阶段奖励也都是会有的(与战斗力无关可忽略),相当于之前位阶的每个小阶段属性×10,如:见习位阶加防御,新晋位阶加生命  
63 ->  
64 -> *偷懒小技巧:因为目前战斗力公式需要攻击暴击爆伤,而位阶中只有资深位阶的小阶段才加攻击力*  
65 ->  
66 ->**2.1 装备数值**  
67 ->>基础数值读表EquipmentData,成长根据EquipmentData中在对应属性旁附带  
68 ->>  
69 ->>(如:Atk,成长属性为AtkLv1,AtkLv2,AtkLv3),  
70 ->>  
71 ->>三档分别为:一档[1,8],二档[9,12],三档[13,16]  
72 ->  
73 ->**2.2 宝石属性值**  
74 ->- 每个一件装备可能会镶嵌多个宝石,一个宝石可能有多个属性,具体一个宝石需要读宝石合成表《CrystalReinforcement》 的SpecialEffects字段,字段意义:  
75 ->属性ID=数量,以空格为切割,该字段来源于(总字段词条表《AttributesEntry》)  
76 -  
77 -  
78 -  
79 -## Part2: 英雄队伍计算  
80 -(总收益攻击)×(1+总收益暴击/100.0f × (1+总收益爆伤/100.0f))  
81 -  
82 -以下是客户端C#代码块  
83 -**还没写**  
84 -  
85 -### 数值来源  
86 -英雄队伍战斗力来源为编队阵型(信仰)+ 神秘力量 + 助战英雄buff  
87 -  
88 -ps:因为阵容所加成属性很多,但是我们只收集与攻击,暴击,爆伤有关的就行了  
89 ->1.编队阵型(信仰)  
90 ->>1.1拉取固定词条  
91 ->  
92 ->2.神秘力量  
93 ->> 2.1拉取固定词条  
94 ->  
95 -> 3.助战英雄加成  
96 -> >***在hero表中找到CoupleTiesID,并在CoupleTiesDatas表中的CoupleTiesID找到对应值即为对应的助战加成;***  
97 -> >>助战加成中CoupleTiesBuffDatas是以加成等级为Key的map,加成等级计算公式:(int)(助战英雄等级 / 10)  
98 -> >>  
99 -> >>助战加成中CoupleTiesBuffDatas通过key取到的value为CoupleTiesBuffData  
100 -> >>  
101 -> >>助战加成中CoupleTiesBuffData当中的AttributesEntryID对应AttributesEntry表中的ID  
102 -> >>  
103 -> >>助战加成中CoupleTiesBuffData当中的Coefficient是一个系数,即从AttributesEntry表中取到实际buff后,buff加成的所有数值都会乘以Coefficient对应的系数  
104 -  
105 - ### 具体计算  
106 ->**1.1 编队阵型(信仰)**  
107 ->- 编队阵型需要统计编队里所有的英雄,即出战英雄与助战英雄,英雄信仰类型在英雄表  
108 ->《hero》的Faith字段,而获取词条的条件要读编队加成表《TeamBonus》。为此我们需要获取《TeamBonus》的FaithType字段  
109 ->与FaithNum字段来查看是否满足要求,满足要求后则取GetAttributesEntry字段来加属性,原理同上文 加宝石的属性  
110 --  
111 -  
112 - //获得该编队具体的有哪几种编队加成(信仰)  
113 - public List<TeamBonus> RefreshFaith(List<int> hero)  
114 - {  
115 - List<TeamBonus> TeamFaith = new List<TeamBonus>();  
116 - Dictionary<int, int> threePower = new Dictionary<int, int>();  
117 -  
118 - for (int i = 0; i < ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList.Count; i++)  
119 - {  
120 - int num = ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i].FaithNum;  
121 -  
122 - for (int j = 0; j < hero.Count; j++)  
123 - {  
124 - //三相之力  
125 - if (ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i].FaithType == -1)  
126 - {  
127 - if (!threePower.ContainsKey(hero[j]))  
128 - {  
129 - threePower.Add(hero[j],0);  
130 - }  
131 -  
132 - if (threePower.Count == num)  
133 - {  
134 - TeamFaith.Add(ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i]);  
135 - break;  
136 - }  
137 - }  
138 -  
139 - if (hero[j] == ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i].FaithType)  
140 - num--;  
141 -  
142 - if (num <= 0)  
143 - {  
144 - TeamFaith.Add(ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i]);  
145 - break;  
146 - }  
147 -  
148 - }  
149 - }  
150 - return TeamFaith;  
151 - }  
152 ->**1.2 神秘力量**  
153 ->- 神秘力量BUFF分为buff和debuff,但是他们都能同时影响怪物和英雄,所有我们只需要遍历所有的BUFF,单个BUFF根据  
154 ->神秘力量表《MysticalPowerBUFF》的BaseAttrToPlayer字段(该字段值只表示对英雄的属修改),原理同上文 加宝石的属性  
155 ->  
156 ->**1.2 助战英雄加成**  
157 \ No newline at end of file 0 \ No newline at end of file