Exemplo n.º 1
0
        public void GetNativeCallFromPlayer(Client player, string salt, ulong hash, NativeArgument returnType, Action <object> callback,
                                            params object[] arguments)
        {
            var obj = new NativeData();

            obj.Hash       = hash;
            obj.ReturnType = returnType;
            salt           = Environment.TickCount.ToString() +
                             salt +
                             player.NetConnection.RemoteUniqueIdentifier.ToString() +
                             DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds.ToString();
            obj.Id        = salt;
            obj.Arguments = ParseNativeArguments(arguments);

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeCall);
            msg.Write(bin.Length);
            msg.Write(bin);

            _callbacks.Add(salt, callback);
            player.NetConnection.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, GetChannelIdForConnection(player));
        }
Exemplo n.º 2
0
        public void RecallNativeCallOnDisconnectForAllPlayers(string identifier)
        {
            var obj = new NativeData();

            obj.Id = identifier;

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeOnDisconnectRecall);
            msg.Write(bin.Length);
            msg.Write(bin);

            Server.SendToAll(msg, NetDeliveryMethod.ReliableOrdered);
        }
Exemplo n.º 3
0
        public void RecallNativeCallOnDisconnectForPlayer(Client player, string identifier)
        {
            var obj = new NativeData();

            obj.Id = identifier;

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeOnDisconnectRecall);
            msg.Write(bin.Length);
            msg.Write(bin);

            player.NetConnection.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, GetChannelIdForConnection(player));
        }
Exemplo n.º 4
0
        public void SendNativeCallToPlayer(Client player, ulong hash, params object[] arguments)
        {
            var obj = new NativeData();

            obj.Hash      = hash;
            obj.Arguments = ParseNativeArguments(arguments);

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeCall);
            msg.Write(bin.Length);
            msg.Write(bin);

            player.NetConnection.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, GetChannelIdForConnection(player));
        }
Exemplo n.º 5
0
        public void SetNativeCallOnDisconnectForAllPlayers(string identifier, ulong hash, params object[] arguments)
        {
            var obj = new NativeData();

            obj.Hash      = hash;
            obj.Id        = identifier;
            obj.Arguments = ParseNativeArguments(arguments);

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeOnDisconnect);
            msg.Write(bin.Length);
            msg.Write(bin);

            Server.SendToAll(msg, NetDeliveryMethod.ReliableOrdered);
        }
Exemplo n.º 6
0
        public void SendNativeCallToAllPlayers(ulong hash, params object[] arguments)
        {
            var obj = new NativeData();

            obj.Hash       = hash;
            obj.Arguments  = ParseNativeArguments(arguments);
            obj.ReturnType = null;
            obj.Id         = null;

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeCall);
            msg.Write(bin.Length);
            msg.Write(bin);

            Server.SendToAll(msg, NetDeliveryMethod.ReliableOrdered);
        }
Exemplo n.º 7
0
        public void SetNativeCallOnTickForPlayer(Client player, string identifier, ulong hash, params object[] arguments)
        {
            var obj = new NativeData();

            obj.Hash = hash;

            obj.Arguments = ParseNativeArguments(arguments);

            var wrapper = new NativeTickCall();

            wrapper.Identifier = identifier;
            wrapper.Native     = obj;

            var bin = SerializeBinary(wrapper);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeTick);
            msg.Write(bin.Length);
            msg.Write(bin);

            player.NetConnection.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, GetChannelIdForConnection(player));
        }
Exemplo n.º 8
0
        public void GetNativeCallFromPlayer(NetConnection player, string identifier, ulong hash, NativeArgument returnType, Action <object> callback,
                                            params object[] arguments)
        {
            var obj = new NativeData();

            obj.Hash       = hash;
            obj.ReturnType = returnType;
            obj.Id         = identifier;

            var list = new List <NativeArgument>();

            foreach (var o in arguments)
            {
                if (o is int)
                {
                    list.Add(new IntArgument()
                    {
                        Data = ((int)o)
                    });
                }
                else if (o is uint)
                {
                    list.Add(new UIntArgument()
                    {
                        Data = ((uint)o)
                    });
                }
                else if (o is string)
                {
                    list.Add(new StringArgument()
                    {
                        Data = ((string)o)
                    });
                }
                else if (o is float)
                {
                    list.Add(new FloatArgument()
                    {
                        Data = ((float)o)
                    });
                }
                else if (o is bool)
                {
                    list.Add(new BooleanArgument()
                    {
                        Data = ((bool)o)
                    });
                }
                else if (o is Vector3)
                {
                    var tmp = (Vector3)o;
                    list.Add(new Vector3Argument()
                    {
                        X = tmp.X,
                        Y = tmp.Y,
                        Z = tmp.Z,
                    });
                }
                else if (o is LocalPlayerArgument)
                {
                    list.Add(new LocalPlayerArgument());
                }
                else if (o is OpponentPedHandleArgument)
                {
                    list.Add((OpponentPedHandleArgument)o);
                }
            }

            obj.Arguments = list.ToList();

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeCall);
            msg.Write(bin.Length);
            msg.Write(bin);

            _callbacks.Add(identifier, callback);
            player.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, GetChannelIdForConnection(player));
        }
Exemplo n.º 9
0
        public void SendNativeCallToAllPlayers(ulong hash, params object[] arguments)
        {
            var obj = new NativeData();

            obj.Hash = hash;

            var list = new List <NativeArgument>();

            foreach (var o in arguments)
            {
                if (o is int)
                {
                    list.Add(new IntArgument()
                    {
                        Data = ((int)o)
                    });
                }
                else if (o is uint)
                {
                    list.Add(new UIntArgument()
                    {
                        Data = ((uint)o)
                    });
                }
                else if (o is string)
                {
                    list.Add(new StringArgument()
                    {
                        Data = ((string)o)
                    });
                }
                else if (o is float)
                {
                    list.Add(new FloatArgument()
                    {
                        Data = ((float)o)
                    });
                }
                else if (o is bool)
                {
                    list.Add(new BooleanArgument()
                    {
                        Data = ((bool)o)
                    });
                }
                else if (o is LocalPlayerArgument)
                {
                    list.Add((LocalPlayerArgument)o);
                }
                else if (o is Vector3)
                {
                    var tmp = (Vector3)o;
                    list.Add(new Vector3Argument()
                    {
                        X = tmp.X,
                        Y = tmp.Y,
                        Z = tmp.Z,
                    });
                }
                else if (o is OpponentPedHandleArgument)
                {
                    list.Add((OpponentPedHandleArgument)o);
                }
            }

            obj.Arguments  = list.ToList();
            obj.ReturnType = null;
            obj.Id         = null;

            var bin = SerializeBinary(obj);

            var msg = Server.CreateMessage();

            msg.Write((int)PacketType.NativeCall);
            msg.Write(bin.Length);
            msg.Write(bin);

            Clients.ForEach(c => c.SendMessage(msg, NetDeliveryMethod.ReliableOrdered, GetChannelIdForConnection(c)));
        }