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); }
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; } }
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); }
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); }