public void SetKeyPlayerInfo(string userId, string userName, bool reqSyncData = true) { #if PHOTON_UNITY_NETWORKING if (reqSyncData == true) { if (PlayerList.ContainsKey(userId) == true) { // int actorId = PlayerList[userId].dynamicCodeInRoom; // var photonPlayer = PhotonNetwork.CurrentRoom.GetPlayer(actorId); // // if (photonPlayer == null || PhotonNetwork.SetMasterClient(photonPlayer) == false) // { // Debug.Log("Failed to change the key player."); // return; // } Hashtable ht = new Hashtable(); ht.Add(RoomOptionKey.KeyPlayerId, userId); ht.Add(RoomOptionKey.KeyPlayerName, userName); PhotonNetwork.CurrentRoom.SetCustomProperties(ht); } } #endif KeyPlayerId = userId; KeyPlayerNickname = userName; }
public static bool Run(SvPlayer player, string message) { if (MessagesAllowedPerSecond != -1 && MessagesAllowedPerSecond < 50) { if (PlayerList.TryGetValue(player.player.ID, out var currObj)) { if (currObj.MessagesSent >= MessagesAllowedPerSecond) { Debug.Log($"{PlaceholderParser.ParseTimeStamp()} [WARNING] {player.player.username} got kicked for spamming! {currObj.MessagesSent}/s (max: {MessagesAllowedPerSecond}) messages sent."); player.svManager.Kick(player.connection); return(true); } PlayerList[player.player.ID].MessagesSent++; if (!currObj.IsCurrentlyAwaiting) { PlayerList[player.player.ID].IsCurrentlyAwaiting = true; Task.Factory.StartNew(async() => { await Task.Delay(TimeBetweenDelay); if (PlayerList.ContainsKey(player.player.ID)) { PlayerList[player.player.ID].MessagesSent = 0; PlayerList[player.player.ID].IsCurrentlyAwaiting = false; } }); } } } return(false); }
public static void Destroy(SvPlayer player) { Debug.Log($"{PlaceholderParser.ParseTimeStamp()} [INFO] [LEAVE] {player.player.username}"); if (!PlayerList.ContainsKey(player.player.ID)) { return; } PlayerList.Remove(player.player.ID); }
public void AnalyzeLog() { //byte[] logData = Log.ReadLogChanges(); byte[] logData = (byte[])ExMethod("logReader", "ReadLogChanges", new object[] { }, new Type[] { }); String[] lines = new String[0]; String[] stringSeparators = new String[] { "\r\n" }; Regex pattern = null; Match match = null; String logText = ""; Boolean isCriticalHit = false; String eventSource = ""; String eventTarget = ""; DateTime actionTime = new DateTime(); String time = ""; String eventName = ""; long eventEffectDamage = 0; logText = ByteArrayToString(logData); logData = new byte[0]; lines = logText.Split(stringSeparators, StringSplitOptions.None); logText = ""; foreach (String temp in lines) { String line = temp.Replace("\r\n", ""); foreach (AnalysisTemplate template in AnalysisTemplates) { if (Regex.IsMatch(line, template.Strucktor)) { pattern = new Regex(template.Template); match = pattern.Match(line); foreach (KeyValuePair <String, String> variable in template.Variables) { switch (variable.Value) { case "eventSource": eventSource = template.GetEventSource(match); break; case "eventTarget": eventTarget = template.GetEventTarget(match); break; case "eventEffect": if (template.DamageEvent) { eventEffectDamage = template.GetEventEffect(match); } break; case "eventName": eventName = template.GetEventName(match); break; case "eventEffectExtra": break; case "eventTarget_eventEffect": eventTarget = template.GetEventTarget(match); if (template.DamageEvent) { eventEffectDamage = template.GetEventEffect(match); } break; case "eventName_eventEffect": eventName = template.GetEventName(match); if (template.DamageEvent) { eventEffectDamage = template.GetEventEffect(match); } break; case "eventSource_eventName": eventSource = template.GetEventSource(match); eventName = template.GetEventName(match); if (template.DamageEvent) { eventEffectDamage = template.GetEventEffect(match); } break; case "time": time = template.GetTime(match); break; default: break; } } isCriticalHit = template.CheckForCriticalHit(line); break; } } if (eventSource != "") { if (!PlayerList.ContainsKey(eventSource)) { PlayerList.Add(eventSource, new Player(eventSource, this.playerName)); } actionTime = DateTime.ParseExact(time, "yyyy.MM.dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); PlayerList[eventSource].AddSkill(new Skill(eventName, eventTarget, actionTime, eventEffectDamage, isCriticalHit)); if (eventName != "") { if (!SkillList.ContainsKey((eventName + "_" + eventTarget))) { SkillList.Add((eventName + "_" + eventTarget), ""); } SkillList[(eventName + "_" + eventTarget)] = eventSource; } } else if (SkillList.ContainsKey((eventName + "_" + eventTarget))) { if (PlayerList.ContainsKey(SkillList[(eventName + "_" + eventTarget)])) { PlayerList[SkillList[(eventName + "_" + eventTarget)]].AddSkillTick(eventName, eventTarget, eventEffectDamage, actionTime); } } eventSource = ""; eventTarget = ""; time = ""; eventName = ""; eventEffectDamage = 0; } }