Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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;
            }
        }