public static void Finish(GameClient Client) { NpcDialog *Packet = PacketHelper.NpcPacket(); Packet->OptionType = NpcOptionType.Finish; Client.Send(Packet, Packet->Size); Memory.Free(Packet); }
public static void Text(GameClient Client, string Text) { NpcDialog *Packet = PacketHelper.NpcPacket(Text); Packet->OptionType = NpcOptionType.Dialogue; Client.Send(Packet, Packet->Size); Memory.Free(Packet); }
public static void Option(GameClient Client, byte OptionID, string Text) { NpcDialog *Packet = PacketHelper.NpcPacket(Text); Packet->OptionType = NpcOptionType.Option; Packet->OptionID = OptionID; Client.Send(Packet, Packet->Size); Memory.Free(Packet); }
public static void Avatar(GameClient Client, ushort ID) { NpcDialog *Packet = PacketHelper.NpcPacket(); Packet->OptionType = NpcOptionType.Avatar; Packet->Extra = ID; Client.Send(Packet, Packet->Size); Memory.Free(Packet); }
public static NpcDialog *NpcPacket(string Input = "") { int Size = 16 + Input.Length; NpcDialog *Packet = (NpcDialog *)Memory.Alloc(Size); Packet->Size = (ushort)Size; Packet->Type = 0x7F0; Packet->Timer = (uint)Environment.TickCount; Packet->OptionID = 0xFF; Packet->DontDisplay = true; if (!string.IsNullOrEmpty(Input)) { byte[] Payload = StringPayload(Input); fixed(byte *pPayload = Payload) { Memory.Copy(pPayload, Packet->Input, Payload.Length); } } return(Packet); }
public override void Execute(GameClient Client, byte *pPacket) { PacketHeader *Header = (PacketHeader *)pPacket; if (Header->Type == 0x7EF) { NpcInitialize *Packet = (NpcInitialize *)pPacket; NpcScriptEngine.Initialize(Client, Packet->UID); } else { NpcDialog *Packet = (NpcDialog *)pPacket; if (Packet->OptionID != 255) { string Input = new string(Packet->Input, 1, Packet->Input[0]); NpcScriptEngine.Process(Client, Packet->OptionID, Input); } else { Client.ActiveNPC = 0; } } }