public Packet GetDialogPacket(string text, NPCsConstants.NpcMessageType messageType, params byte[] footer) { Packet oPacket = new Packet(ServerOperationCode.ScriptMessage); oPacket .WriteByte(4) // NOTE: Unknown. .WriteInt(MapleID) .WriteByte((byte)messageType) .WriteByte() // NOTE: Speaker. .WriteString(text) .WriteBytes(footer); return(oPacket); }
public void Handle(Character talker, Packet iPacket) { if (talker.LastNpc == null) { return; } NPCsConstants.NpcMessageType lastMessageType = (NPCsConstants.NpcMessageType)iPacket.ReadByte(); byte action = iPacket.ReadByte(); // TODO: Validate last message type. int selection = -1; byte endTalkByte; switch (lastMessageType) { case NPCsConstants.NpcMessageType.RequestText: case NPCsConstants.NpcMessageType.RequestNumber: case NPCsConstants.NpcMessageType.RequestStyle: case NPCsConstants.NpcMessageType.Choice: endTalkByte = 0; break; default: endTalkByte = byte.MaxValue; break; } if (action != endTalkByte) { if (iPacket.Remaining >= 4) { selection = iPacket.ReadInt(); } else if (iPacket.Remaining > 0) { selection = iPacket.ReadByte(); } if (lastMessageType == NPCsConstants.NpcMessageType.RequestStyle) { //selection = StyleSelectionHelpers[talker][selection]; } if (selection != -1) { Scripts[talker].SetResult(selection); } else { Scripts[talker].SetResult(action); } } else { talker.LastNpc = null; } }