Esempio n. 1
0
        void InitializeCommandProcessors()
        {
            var joinProcessor = new JoinCommandProcessor();

            joinProcessor.Joined += (channel, username) =>
                                    Dispatcher.Invoke(() => JoinedRoom?.Invoke(channel, username));
            joinProcessor.Joined += (channel, username) => {
                // Bot successfully connected to the channel.
                string lowerName = Connection.Username.ToLowerInvariant();
                if (channel == Connection.Channel && username == lowerName)
                {
                    Dispatcher.Invoke(() => Connected?.Invoke());
                }
            };

            var messageProcessor = new MessageCommandProcessor();

            messageProcessor.MessageReceived += message =>
                                                Dispatcher.Invoke(() => MessageReceived?.Invoke(message));

            var userStateProcessor = new UserStateCommandProcessor();

            userStateProcessor.AcquireUserState += user =>
                                                   Dispatcher.Invoke(() => AcquireUserState?.Invoke(user));

            // Attach processors.
            commandProcessors = new Dictionary <string, ITwitchCommandProcessor>();
            commandProcessors.Add("JOIN", joinProcessor);
            commandProcessors.Add("PRIVMSG", messageProcessor);
            commandProcessors.Add("USERSTATE", userStateProcessor);
            commandProcessors.Add("PING", new PingCommandProcessor());
        }
Esempio n. 2
0
 public void OnJoinedRoom()
 {
     if (JoinedRoom != null)
     {
         JoinedRoom.Invoke(this);
     }
 }
Esempio n. 3
0
        protected override void LoadComplete()
        {
            base.LoadComplete();

            isConnected.BindTo(multiplayerClient.IsConnected);
            isConnected.BindValueChanged(_ => Scheduler.AddOnce(updatePolling));
            JoinedRoom.BindValueChanged(_ => Scheduler.AddOnce(updatePolling), true);
        }
Esempio n. 4
0
        private void HandleDataForLoggingIn(string packet)
        {
            if (packet.Length > 0)
            {
#if DEBUG
                Console.WriteLine("Got Data from Server:");
                Console.WriteLine(packet);
#endif
                if (packet[0] == '<' && !IsLoggedIn)
                {
                    if (packet.ToLowerInvariant().Contains("cross-domain"))
                    {
                        _countForServerDisconnections++;
                        if (_countForServerDisconnections == 1)
                        {
                            if (_socket != null)
                            {
                                _socket.BeginDisconnect(true, DisconnectCallback, _socket);
                            }
                        }
                        else if (_countForServerDisconnections >= 2)
                        {
                            var _loc3_ = "tsys";
                            var loc2   = $"<ver v=\'{Version}\' />";
                            Send(_loc3_, "verChk", 0, loc2);
                            _waitForReconnect?.Abort();
                        }
                    }
                    else if (packet.ToLowerInvariant().Contains("apiok"))
                    {
                        WasConnected = true;
                        Connected?.Invoke();
                        LogMessage?.Invoke("Sending authentication to the server....");
                        Login(Zone, Username, HashPassword);
                    }
                    else if (packet.Contains("rmList"))
                    {
                        AutoJoin();
                    }
                    else if (packet.Contains("joinOK"))
                    {
                        IsLoggedIn = true;
                        JoinedRoom?.Invoke();
                    }
                }
                else if (packet.Contains("xt") &&
                         packet.Contains("l") &&
                         packet.Contains("-1"))
                {
                    SuccessfullyAuthenticated?.Invoke();
                    GetRoomList();
                }
            }
        }
Esempio n. 5
0
        private static unsafe void HookCallbackFunctions()
        {
            IntPtr funcToHook = (IntPtr)typeof(VRCAvatarManager.MulticastDelegateNPublicSealedVoGaVRBoUnique).GetField("NativeMethodInfoPtr_Invoke_Public_Virtual_New_Void_GameObject_VRC_AvatarDescriptor_Boolean_0", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null);

            Hook(funcToHook, new System.Action <IntPtr, IntPtr, IntPtr, bool>(OnAvatarInstantiated).Method.MethodHandle.GetFunctionPointer());
            onAvatarInstantiatedDelegate = Marshal.GetDelegateForFunctionPointer <AvatarInstantiatedDelegate>(*(IntPtr *)funcToHook);
            IceLogger.Log(((onAvatarInstantiatedDelegate != null) ? "Hooked onAvatarInstantiatedDelegate!" : "onAvatarInstantiatedDelegate: critical error!!"));

            funcToHook = (IntPtr)typeof(NetworkManager).GetField("NativeMethodInfoPtr_Method_Public_Void_Player_0", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null);
            Hook(funcToHook, new System.Action <IntPtr, IntPtr>(OnPlayerLeft).Method.MethodHandle.GetFunctionPointer());
            onPlayerLeftDelegate = Marshal.GetDelegateForFunctionPointer <PlayerLeftDelegate>(*(IntPtr *)funcToHook);
            IceLogger.Log(((onPlayerLeftDelegate != null) ? "Hooked onPlayerLeftDelegate!" : "onPlayerLeftDelegate: critical error!!"));

            funcToHook = (IntPtr)typeof(NetworkManager).GetField("NativeMethodInfoPtr_OnJoinedRoom_Public_Virtual_Final_New_Void_3", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).GetValue(null);
            Hook(funcToHook, new System.Action <IntPtr>(OnJoinedRoom).Method.MethodHandle.GetFunctionPointer());
            onJoinedRoom = Marshal.GetDelegateForFunctionPointer <JoinedRoom>(*(IntPtr *)funcToHook);
            IceLogger.Log(((onJoinedRoom != null) ? "Hooked onJoinedRoom!" : "onJoinedRoom: critical error!!"));

            if (onPlayerLeftDelegate == null || onAvatarInstantiatedDelegate == null || onJoinedRoom == null)
            {
                enabled = false;
                IceLogger.Log("Multiplayer Dynamic Bones mod suffered a critical error!");
            }
        }
Esempio n. 6
0
        private void HandleDataForLoggingIn(string packet)
        {
            if (packet.Length > 0)
            {
#if DEBUG
                Console.WriteLine("Got Data from Server:");
                Console.WriteLine(packet);
#endif
                if (packet[0] == '<' && !IsLoggedIn)
                {
                    if (packet.ToLowerInvariant().Contains("cross-domain"))
                    {
                        _countForServerDisconnections++;
                        if (_countForServerDisconnections == 1)
                        {
                            if (_socket != null)
                            {
                                _socket.BeginDisconnect(true, DisconnectCallback, _socket);
                            }
                        }
                        else if (_countForServerDisconnections >= 2)
                        {
                            var _loc3_ = "tsys";
                            var loc2   = $"<ver v=\'{Version}\' />";
                            Send(_loc3_, "verChk", 0, loc2);
                        }
                    }
                    else if (packet.ToLowerInvariant().Contains("apiok"))
                    {
                        WasConnected = true;
                        Connected?.Invoke();
                        LogMessage?.Invoke("Sending authentication to the server....");
                        // Auto loggs in...
                        Login(Zone, Username, HashPassword);
                        _checkForLogin = ExecutionPlan.Delay(TimeoutDelay, delegate
                        {
                            if (!_isLoggedIn)
                            {
                                Close(new Exception("Authentication timedout. This happened because either your account is already logged in a browser or either your account got banned."));
                            }
                        });
                    }
                    else if (packet.Contains("rmList"))
                    {
                        AutoJoin();
                    }
                    else if (packet.Contains("joinOK"))
                    {
                        IsLoggedIn = true;
                        JoinedRoom?.Invoke();
                    }
                }
                else if (packet.Contains("xt") &&
                         packet.Contains("l") &&
                         packet.Contains("-1"))
                {
                    _isLoggedIn = true;
                    SuccessfullyAuthenticated?.Invoke();
                    GetRoomList();
                }
            }
        }
Esempio n. 7
0
 public void OnClientJoinedRoom(Room _room)
 {
     JoinedRoom?.Invoke(_room);
 }
Esempio n. 8
0
 public void OnJoinedRoom(object sender, PersonModel person, RoomModel room)
 {
     JoinedRoom?.Invoke(sender, new RoomAttendanceEventArgs(person, room));
 }
Esempio n. 9
0
 public void OnJoinedRoom(string roomName)
 {
     JoinedRoom?.Invoke(roomName);
 }