Ejemplo n.º 1
0
        private async Task TestEventTrigger(Client client)
        {
            var table = new LuaValue(new Dictionary <LuaValue, LuaValue>()
            {
                ["x"] = 5.5f,
                ["y"] = "string",
                ["z"] = new LuaValue(new Dictionary <LuaValue, LuaValue>()
                {
                }),
                ["w"] = false
            });

            table.TableValue?.Add("self", table);

            var packet = new LuaEventPacket("Slipe.Test.ClientEvent", root.Id, new LuaValue[]
            {
                "String value",
                true,
                123,
                table
            });

            await Task.Delay(5000);

            client.SendPacket(packet);
        }
Ejemplo n.º 2
0
        protected override void HandlePacket(PacketQueueEntry queueEntry)
        {
            switch (queueEntry.PacketId)
            {
            case PacketId.PACKET_ID_LUA_EVENT:
                LuaEventPacket eventPacket = new LuaEventPacket();
                eventPacket.Read(queueEntry.Data);

                var element = this.elementRepository.Get(eventPacket.ElementId);
                if (element == null)
                {
                    this.logger.LogWarning($"'{eventPacket.Name}' event triggered on non-existant element {eventPacket.ElementId}");
                    break;
                }

                this.server.HandleLuaEvent(new Events.LuaEvent()
                {
                    Player     = queueEntry.Client.Player,
                    Name       = eventPacket.Name,
                    Source     = element,
                    Parameters = eventPacket.LuaValues.ToArray()
                });

                break;
            }
        }
Ejemplo n.º 3
0
    public void TriggerLatentEvent(Player player, string eventName, Resource sourceResource, Element?source = null, int rate = 50000, params LuaValue[] parameters)
    {
        var packet = new LuaEventPacket(eventName, (source ?? this.root).Id, parameters);

        this.latentPacketService.EnqueueLatentPacket(new Player[] { player }, packet, sourceResource.NetId, rate);
    }
Ejemplo n.º 4
0
    public void TriggerLatentEventForMany(IEnumerable <Player> players, string eventName, Resource sourceResource, Element?source = null, int rate = 50000, params LuaValue[] parameters)
    {
        var packet = new LuaEventPacket(eventName, (source ?? this.root).Id, parameters);

        this.latentPacketService.EnqueueLatentPacket(players, packet, sourceResource.NetId, rate);
    }