using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public class ZZZPlayer : MonoBehaviour { public static ZZZPlayer CSZS; public JSONReader jSONReader; public Dictionary CSB1 = new Dictionary(); //Key是判断是不是一组,string是ID tanchuang1用的 public bool isYou=true; public void Start() { // SetPlayerID("11007"); FindPlayerTaskID(10810, "tanchuang1"); ////遍历字典 //foreach (KeyValuePair> kvp in PlayerID) //{ // Debug.Log($"职业: {kvp.Key}"); // // 遍历值(List) // foreach (string task in kvp.Value) // { // Debug.Log($"任务: {task}"); // } //} } public Dictionary> PlayerID = new Dictionary>() { { "8000", new List() }, { "8001", new List() }, { "8002", new List() }, { "8003", new List() }, { "8004", new List() }, { "8005", new List() }, { "8006", new List() }, { "8007", new List() }, { "8008", new List() }, { "8009", new List() }, { "8010", new List() }, { "8011", new List() } }; private void Awake() { CSZS = this; } /// /// 接收玩家接受的任务 /// public void SetPlayerID(string TaskID) { var a=ParseString(jSONReader.GetOcpID(int.Parse(TaskID))); for (int i=0;i /// 返回一个职业接取的任务 /// public List GetPlayerID(string ID) { if (PlayerID.TryGetValue(ID, out List value)) { return value; // 返回对应的 List } else { Debug.Log("颠仔找不到"); return new List(); // 返回空列表 } } /// /// 判断那些角色可以接取任务 /// /// 输入的字符串 /// 解析后的 List,如果输入为空则返回空列表 public static List ParseString(string input) { // 如果输入为空或 null,返回空列表 if (string.IsNullOrEmpty(input)) { return new List(); } // 按 "|" 分割字符串,并返回结果列表 return new List(input.Split('|')); } /// /// 判断玩家是否接取这个任务或者(返回是bool) /// /// 要检查的数字 /// 弹窗名 /// 是否存在 public void FindPlayerTaskID(int number,string Type) { foreach (var item in jSONReader.ZZSelectsDictionary) { Select data = item.Value; if (data.AppliedUI == "tanchuang1") { var a = GetNumberBeforeComma(data.Group); Debug.Log("bbbb"); //先用Grop分组 if (!CSB1.ContainsKey(a)) { CSB1.Add(a, data.ID);// 更新值 } } } TwoFind(number); } public void TwoFind(int number) { //再一次来判断 if (isYou) { Debug.Log("进来了脸脸了了了了了了脸脸了脸脸了了了脸脸了了"); Debug.Log(CSB1.Count); foreach (KeyValuePair kvp in CSB1) { Debug.Log("进不来了"); int key = kvp.Key; string value = kvp.Value; // 将字符串拆分为 List List values = new List(value.Split(',')); // 对值列表进行对比 for (int i = 0; i < values.Count; i++) { Debug.Log("进不来了11111"); for (int j = i + 1; j < values.Count; j++) { Debug.Log("进不来了22222"); isYou = IsNumberInData(values[j], number); if (isYou) { break; } } if (isYou) { break; } } } } } public bool IsNumberInData(string data, int number) { // 按 # 分割 OR 条件组 string[] orGroups = data.Split('#'); // 遍历每个 OR 条件组 foreach (string orGroup in orGroups) { // 按 | 分割 AND 条件 string[] andConditions = orGroup.Split('|'); // 遍历每个 AND 条件,检查是否包含数字 foreach (string condition in andConditions) { // 按 , 分割单个条件 string[] numbers = condition.Split(','); // 确保条件中有数字 if (numbers.Length == 2 && int.TryParse(numbers[1], out int parsedNumber)) { if (parsedNumber == number) { return true; // 如果匹配,则立即返回 true } } } } return false; // 如果所有条件都不匹配,返回 false } /// /// 解析并提取逗号(,)前的数字(判断分组) /// /// 输入字符串 /// 返回一个包含数字的列表 /// /// 获取逗号(,或,)前的数字 /// /// 输入的字符串(例如 "123,15") /// 逗号前的数字,如果解析失败返回 -1 public int GetNumberBeforeComma(string data) { Debug.Log("aaaa"); if (string.IsNullOrEmpty(data)) { Debug.LogWarning("输入为空或 null!"); return -1; } // 按逗号分割(支持中文 "," 和英文 ",") string[] parts = data.Split(new char[] { ',', ',' }); // 检查分割结果并尝试解析 if (parts.Length > 0 && int.TryParse(parts[0], out int number)) { return number; // 返回解析成功的数字 } Debug.LogWarning($"无法解析逗号前的数字:{data}"); return -1; // 解析失败返回 -1 } }