From 51fab14cee367849d673ccf9a0809c68cac843fc Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期四, 30 八月 2018 23:49:07 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/Skill/SkillModel.cs | 34 ++++++++++++++++++++++++++--------
1 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/System/Skill/SkillModel.cs b/System/Skill/SkillModel.cs
index 755ab6c..daca465 100644
--- a/System/Skill/SkillModel.cs
+++ b/System/Skill/SkillModel.cs
@@ -47,6 +47,8 @@
public Dictionary<int, Dictionary<int, List<SkillConfig>>> skillActDict { get; private set; }
public List<int> betterPassSkills { get; private set; }
public bool jumpToPass { get; set; }
+ public int minTaskHole { get; private set; }
+ public int maxTaskHole { get; private set; }
void ParseConfig()
{
for (int i = 1; i <= 3; i++)
@@ -71,6 +73,14 @@
PassSkillLimit limit = JsonMapper.ToObject<PassSkillLimit>(jsonData[key].ToJson());
limit.hole = int.Parse(key);
passSkillLimits.Add(limit);
+ if (minTaskHole == 0 && limit.OpenSkillSlots > 0)
+ {
+ minTaskHole = limit.OpenSkillSlots;
+ }
+ if (limit.OpenSkillSlots > maxTaskHole)
+ {
+ maxTaskHole = limit.OpenSkillSlots;
+ }
}
passEquipCnt = int.Parse(funcCfg.Numerical2);
taskHoleDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical4);
@@ -290,7 +300,7 @@
public event Action taskUnlockUpdate;
- public int taskHoleCondition { get; private set; }
+ public uint taskHoleCondition { get; private set; }
public const string TASKHOLEKEY = "OpenSkillSlots";
@@ -305,9 +315,10 @@
if (task._DicTaskInformation.ContainsKey(1)
&& task._DicTaskInformation[1].ContainsKey(TASKHOLEKEY))
{
- var value = 0;
- int.TryParse(task._DicTaskInformation[1][TASKHOLEKEY], out value);
- return value >= condition;
+ uint value = 0;
+ uint.TryParse(task._DicTaskInformation[1][TASKHOLEKEY], out value);
+ return MathUtility.GetBitValue(value, (ushort)condition);
+ //return value >= condition;
}
return false;
}
@@ -319,11 +330,18 @@
var dict = _Dic[1];
if (dict.ContainsKey(TASKHOLEKEY))
{
- var result = 0;
- int.TryParse(dict[TASKHOLEKEY], out result);
- if (result != taskHoleCondition && playerLoginOk)
+ uint result = 0;
+ uint.TryParse(dict[TASKHOLEKEY], out result);
+ if (playerLoginOk)
{
- UnlockPassHole = result;
+ for (int k = minTaskHole; k <= maxTaskHole; k++)
+ {
+ if (!MathUtility.GetBitValue(taskHoleCondition, (ushort)k)
+ && MathUtility.GetBitValue(result, (ushort)k))
+ {
+ UnlockPassHole = k;
+ }
+ }
if (taskUnlockUpdate != null)
{
taskUnlockUpdate();
--
Gitblit v1.8.0