public void Heal(int hp, int mp) { var hp2Heal = Hp + hp; var mp2Heal = Mp + mp; if (hp2Heal >= MaxHp) { hp2Heal = MaxHp; } if (mp2Heal >= MaxMp) { mp2Heal = MaxMp; } if (!IsHpLock) { Hp = hp2Heal; } if (mp2Heal >= 0) { Mp = mp2Heal; } Map.BroadcastMessage(PacketCreator.HealMonster(ObjectId, hp)); }
protected override void OnClientAccepted(Socket client) { MapleClient mc = new MapleClient(client, this, m_processor); mc.SendRaw(PacketCreator.Handshake()); MainForm.Instance.Log("[Login] Accepted client {0}", mc.Label); }
public async void handlePacket(PacketReader reader, Client client) { string username = reader.ReadCommonString(); string pass = reader.ReadCommonString(); var User = await Database.DatabaseManager.Instance.GetUser(username, pass); if (User != null) { // UPON Sucess - 1 if (client.CheckForLogin(User.name)) { client.Announce(PacketCreator.LoginRespose(1)); //Announce to the client to login client.Announce(PacketCreator.SendAllAvilableUsers(client.NickName)); foreach (var c in ClientFactory.Instance.GetAllClients().Where(x => x != client)) { c.Announce(PacketCreator.SendUserUpdate(client.NickName, 1)); } } else { client.Announce(PacketCreator.LoginRespose(2)); } } else { // UPON Fail - 0 client.Announce(PacketCreator.LoginRespose(0)); } }
public static OutPacket GetCharInfo(MapleCharacter chr) { using (var packet = new OutPacket(SendOpcodes.WarpToMap)) { packet.WriteInt(chr.Client.ChannelId); packet.WriteByte(0x00); packet.WriteByte(0x01); packet.WriteByte(0x01); packet.WriteShort(0); packet.WriteInt((int)(Randomizer.NextDouble() * 10)); packet.WriteLong(DateUtiliy.GetFileTimestamp(DateTime.Now.GetTimeMilliseconds())); packet.WriteLong(-1); packet.WriteByte(0x00); LoginPacket.AddCharStats(packet, chr); packet.WriteByte((byte)chr.Buddies.Capacity); PacketCreator.AddInventoryInfo(packet, chr); PacketCreator.AddSkillRecord(packet, chr); PacketCreator.AddQuestRecord(packet, chr); PacketCreator.AddRingInfo(packet, chr); PacketCreator.AddTeleportRockRecord(packet, chr); packet.WriteShort(0); packet.WriteLong(0); packet.WriteByte(0x00); packet.WriteInt(0); packet.WriteLong(DateUtiliy.GetFileTimestamp(DateTime.Now.GetTimeMilliseconds())); return(packet); } }
public void ApplyMonsterBuff(MonsterStatus status, int x, int skillId, int duration, MobSkill skill) { var timerManager = TimerManager.Instance; var applyPacket = PacketCreator.ApplyMonsterStatus(ObjectId, new Dictionary <MonsterStatus, int> { { status, x } }, skillId, true, 0, skill); Map.BroadcastMessage(applyPacket, Position); if (GetController() != null && !GetController().VisibleMapObjects.Contains(this)) { GetController().Client.Send(applyPacket); } timerManager.RunOnceTask(() => { if (IsAlive) { var packet = PacketCreator.CancelMonsterStatus(ObjectId, new Dictionary <MonsterStatus, int> { { status, x } }); Map.BroadcastMessage(packet, Position); if (GetController() != null && !GetController().VisibleMapObjects.Contains(this)) { GetController().Client.Send(packet); } MonsterBuffs.Remove(status); } }, duration); MonsterBuffs.Add(status); }
private void LoginClick() { if (Password != null && UserName != null) { Client.Instance.SendPacket(PacketCreator.Login(UserName, Password)); } }
internal void SendMaximumStreamReachedError() { var packet = PacketCreator.CreateConnectionClosePacket(ErrorCode.STREAM_LIMIT_ERROR, "Maximum number of streams reached."); Send(packet); }
/// <summary> /// Used to send protocol packets to the peer. /// </summary> /// <param name="packet"></param> /// <returns></returns> internal bool Send(Packet packet) { // Encode the packet var data = packet.Encode(); // Increment the connection transfer rate IncrementRate(data.Length); // If the maximum transfer rate is reached, send FLOW_CONTROL_ERROR if (MaximumReached()) { packet = PacketCreator.CreateConnectionClosePacket(ErrorCode.FLOW_CONTROL_ERROR, "Maximum data transfer reached."); TerminateConnection(); } // Ignore empty packets if (data.Length <= 0) { return(true); } var result = _pwt.SendPacket(packet); return(result); }
private void RegisterClick() { if (Password != null && UserName != null) { Client.Instance.SendPacket(PacketCreator.Register(UserName, UserName, Password)); } }
/// <summary> /// Used to send protocol packets to the peer. /// </summary> /// <param name="packet"></param> /// <returns></returns> internal bool Send(Packet packet) { // Encode the packet byte[] data = packet.Encode(); // Increment the connection transfer rate IncrementRate(data.Length); // If the maximum transfer rate is reached, send FLOW_CONTROL_ERROR if (MaximumReached()) { packet = PacketCreator.CreateConnectionClosePacket(Infrastructure.ErrorCode.FLOW_CONTROL_ERROR, 0x00, ErrorConstants.MaxDataTransfer); TerminateConnection(); } // Ignore empty packets if (data == null || data.Length <= 0) { return(true); } bool result = _pwt.SendPacket(packet); return(result); }
public void ReCharge(MapleClient c, byte slot) { var ii = MapleItemInformationProvider.Instance; IMapleItem item; if (!c.Player.Inventorys[MapleInventoryType.Use.Value].Inventory.TryGetValue(slot, out item) || (!ii.IsThrowingStar(item.ItemId) && !ii.IsBullet(item.ItemId))) { if (item != null && (!ii.IsThrowingStar(item.ItemId) || !ii.IsBullet(item.ItemId))) { Console.WriteLine($"{c.Player.Name} is trying to recharge {item.ItemId}"); } return; } var slotMax = ii.GetSlotMax(c, item.ItemId); if (item.Quantity < 0) { Console.WriteLine($"{c.Player.Name} is trying to recharge {item.ItemId} with quantity {item.Quantity}"); } if (item.Quantity < slotMax) { var price = (int)Math.Round(ii.GetPrice(item.ItemId) * (slotMax - item.Quantity)); if (c.Player.Meso.Value >= price) { item.Quantity = slotMax; c.Send(PacketCreator.UpdateInventorySlot(MapleInventoryType.Use, (Item)item)); c.Player.GainMeso(-price, false, true, false); c.Send(PacketCreator.ConfirmShopTransaction(0x8)); } } }
public void Complete(MapleCharacter c, int npc, int selection, bool force) { try { var arg1 = m_autoPreComplete || CheckNpcOnMap(c, npc); var canbeComplete = CanComplete(c, npc); if (force || (arg1 && canbeComplete)) { foreach (var action in CompleteActs) { if (!action.Check(c)) { } } foreach (var action in CompleteActs) { action.Run(c, selection); } var oldStatus = c.GetQuest(this); var newStatus = new MapleQuestStatus(this, MapleQuestStatusType.Completed, npc); newStatus.Forfeited = oldStatus.Forfeited; c.UpdateQuest(newStatus); } else { c.DropMessage(PacketCreator.ServerMessageType.Popup, "你遇到任务错误.请稍后片刻。或请联系系统管理员"); } } catch { c.Client.Send(PacketCreator.ServerNotice(PacketCreator.ServerMessageType.Popup, "系统发生错误.请联系系统管理员解决")); } }
public void Start(MapleCharacter c, int npc, bool force) { try { var arg1 = force && CheckNpcOnMap(c, npc); var arg2 = m_autoStart || CheckNpcOnMap(c, npc); var arg3 = CanStart(c, npc); if (arg1 || (arg2 && arg3)) { foreach (var action in StartActs) { action.Run(c, null); } var oldStatus = c.GetQuest(this); var newStatus = new MapleQuestStatus(this, MapleQuestStatusType.Started, npc); newStatus.CompletionTime = oldStatus.CompletionTime; newStatus.Forfeited = oldStatus.Forfeited; c.UpdateQuest(newStatus); } } catch { c.Client.Send(PacketCreator.ServerNotice(PacketCreator.ServerMessageType.Popup, "发生错误,请截图后联系管理员.")); } }
static void Main(string[] args) { byte[] bytes = new VariableInteger(12345); VariableInteger integer = bytes; UInt64 uinteger = integer; int size = VariableInteger.Size(bytes[0]); InitialPacket packet = new InitialPacket() { Version = 16, SourceConnectionId = 124, DestinationConnectionId = 0, PacketNumber = 777521, TokenLength = 0 }; packet = new PacketCreator().CreateInitialPacket(124, 0); ConnectionCloseFrame frame = new ConnectionCloseFrame(ErrorCode.SERVER_BUSY, "The server is too busy to process your request."); MaxStreamIdFrame msidframe = new MaxStreamIdFrame(144123, StreamType.ClientUnidirectional); //packet.AttachFrame(frame); packet.AttachFrame(msidframe); byte[] data = packet.Encode(); string b64 = ToBase64(data); byte[] shpdata1 = new byte[] { 1, 1, 2, 3, 5, 8 }; byte[] shpdata2 = new byte[] { 13, 21, 34, 55, 89, 144 }; ShortHeaderPacket shp = new ShortHeaderPacket(); shp.DestinationConnectionId = 124; shp.PacketNumber = 2; shp.AttachFrame(new StreamFrame() { StreamId = 1, Length = new VariableInteger((UInt64)shpdata2.Length), StreamData = shpdata2, Offset = 6, EndOfStream = true }); shp.AttachFrame(new StreamFrame() { StreamId = 1, Length = new VariableInteger((UInt64)shpdata1.Length), StreamData = shpdata1, Offset = 0 }); string shpb64 = ToBase64(shp.Encode()); packet.Decode(data); byte[] ccfData = frame.Encode(); frame.Decode(new ByteArray(ccfData)); byte[] streamIdData = new StreamId(123, StreamType.ClientUnidirectional); StreamId streamId = streamIdData; QuicListener listener = new QuicListener(11000); listener.OnClientConnected += Listener_OnClientConnected; listener.Start(); }
public void SendMessage(Client Exclude, string msg) { msg = Exclude.NickName + " : " + msg; foreach (var paric in Participents.Where(x => x != Exclude)) { paric.Announce(PacketCreator.SendMessageToChatRoom(msg)); } }
public void DisplyAllParticipends(Client Exclude) { foreach (var paric in Participents.Where(x => x != Exclude)) { // 1 is to add a member, 2 is to remove a member Exclude.Announce(PacketCreator.SendChatRoomMember(1, paric.NickName)); } }
public override void Start() { var mml = "MML@l32o2e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&et132r1r1r1r4v15b8b8>d8c+c16.c<b8.&br1.>d8c+c16.c<b8.&br1l8.bbb8>c+c+c+8d+64e32.l16rdr<brb8r8brbrbr>c+64d32.rc-rc+64d32.r<brbrbr8.br>c+64d32.r<brbr>c+64d32.rc-rc+64d32.r<brbr>c+64d32.rc-rc+64d32.r<brbrbr8.br>c+64d32.r<b8.rbr>c+64d32.r<brbrbr>c+64d32.rc-rc+64d32.rc-rc+64d32.r<brbrbr>c+64l32.dr8.c+64dr8.c+64dl16rc-rc+64d32.r<brl8.bbb8>c+c+c+8d+64e32.l16rdr<b4r8brbrbr>c+64d32.r<brbrbrbrbrbrbr>d+64e32.rdr<b4r8brbrbr>c+64d32.rc-rc+64d32.r<brbrbrbrbr>d+64e32.rdr<b4r8brbrbrbrbrbr>c+64d32.r<brbrbrbr>d+64e32.rdr<b8&b32r.>drc-rdrd+rl8<b.b.b>c+4<bb>c+64d.&d32.rc-4f+f+f+f+4re4reed+4rl32c-f+b8.<brbrl16brbrb4l8rb32>f+32b.r<bb>c+64d.&d32.rc-4f+f+f+f+4re4reef+4rl32f+>c+f+8&f+r<f+rf+rl16f+rf+rf+4l8rf+32>c+32f+.r<f+f+f+f+f+f+f+f+f+f+l4f+f+f+f+l32f+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+fed+dc+c<ba+ag+gf+8r2.b8b8>d8c+c16.c<b8.&bb8.r1r4r16>d8c+c16.c<b8.&bl16br4rbr8.br8.br4rb8b8>d8c+32c.l32c<b8.&bb4r1r4>d8c+c16.c<b8.&bl16br4rbr8.br8.brl8b.b.b>dl32c+c16.cc-8.rc+d1&d8.&dl16<brbrl32>c+d8&dr16c+d8&dl16r<br4rbr8.br8.br4rbrb8>d8l32c+cr16c<b8.&b>c+d1&d8.&dl16<brbrl32>c+d8.&dc+d8.&dl16<br4rbr8.br8.brl8.>eee8f+f+f+8r4b1;"; WorldManager.Instance.Broadcast( PacketCreator.PlayEffect(NPC, InstrumentType.MaleVoice1, PlayingQuality.VeryGood, MabiZip.Compress(mml)), SendTargets.Range, NPC); }
public override void Start() { var mml = "MML@a1t132v15l8o1brbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbr>ererf+rf+r<brbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbr>ererf+rf+r<brbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbr>ererf+rf+rgrgrgrgrarararar<brbrbrbrbrbrbrbr>grgrgrgrararararf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+r1.r4.<brbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbr>ererf+rf+r<brbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbro4b.b.b>c+.c+.c+r4o2b1;"; WorldManager.Instance.Broadcast( PacketCreator.PlayEffect(NPC, InstrumentType.Ukulele, PlayingQuality.VeryGood, MabiZip.Compress(mml)), SendTargets.Range, NPC); }
public async void handlePacket(PacketReader reader, Client client) { string name = reader.ReadCommonString(); string pass = reader.ReadCommonString(); bool succ = await Database.DatabaseManager.Instance.RegisterUser(name, pass); client.Announce(PacketCreator.SendRegisterResponse(succ)); }
public QuicListener(int port) { _started = false; _port = port; _unpacker = new Unpacker(); _packetCreator = new PacketCreator(); }
public override void Start() { var mml = "MML@a1t132v14l8<c-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d>e.e.ef+.f+.f+<<c-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d>e.e.ef+.f+.f+<<c-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>dl8.>eee8f+f+f+8v12<ggc-g4rc+<aaa>a8a8bbbbr4bbl8b>aabbl8.<ggddd4eee8l16ra8re8a8f+8r<f+8r>c+8rf+8r<f+8r8>c+8rc+8r<f+8rf+8rl8>c+f+n42f+f+f+n42f+f+f+c+f+f+c+f+c+f+<f+l32f+rf+r>f+rf+rc+rc+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+rf+fed+dc+c<ba+ag+gl8f+r1.v14c-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d>e.e.ef+.f+.f+<<c-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>d<c-.b16rbba+adc-.b16rb4bb>dr1r4b1;"; WorldManager.Instance.Broadcast( PacketCreator.PlayEffect(NPC, InstrumentType.Mandolin, PlayingQuality.VeryGood, MabiZip.Compress(mml)), SendTargets.Range, NPC); }
public void StartNewChat() { if (SelectedUser != null) { Client.Instance.SendPacket(PacketCreator.RequestChat(SelectedUser.Name)); System.Windows.Forms.MessageBox.Show("Chat request was sended"); } }
public DataPacket(int num, TeraPacketWithData packet) { this.packet = packet; this.num = num; this.type = packet.type; this.size = packet.size; this.time = packet.time; this.opCode = PacketCreator.getOpCode(packet.opCode); }
public static void saveStructure(object opCode, PacketStructure packetStructure) { string version = PacketCreator.getCurrentVersion().ToString(); string fileName = opCode.ToString() + ".json"; string file = Path.Combine(version, fileName); packetStructures[(ushort)opCode] = packetStructure; assets.serialize(file, packetStructure); }
public static bool SendAuth(AuthPacket packet) { if (_server.AuthServer != null) { _server.AuthServer.Send(packet); return(true); } else { switch (packet.ID) { case AuthPacketEnum.SERVER_RELEASE_CHAT: { bool Type = packet.Message.IsGM; string GetNickName = packet.Message.GetNickName; string GetMessage = packet.Message.GetMessage; if (Type) { PacketCreator.ChatText(GetNickName, GetMessage, Type); } } break; case AuthPacketEnum.SERVER_RELEASE_TICKET: { string GetNickName = packet.Message.GetNickName; string GetMessage = packet.Message.GetMessage; using (var result = new PangyaBinaryWriter()) { result.Write(new byte[] { 0xC9, 0x00 }); result.WritePStr(GetNickName); result.WritePStr(GetMessage); _server.SendToAll(result.GetBytes()); } } break; case AuthPacketEnum.SERVER_RELEASE_BOXRANDOM: { string GetMessage = packet.Message.GetMessage; _server.Notice(GetMessage); } break; case AuthPacketEnum.SERVER_RELEASE_NOTICE: { string GetNickname = packet.Message.GetNickname; string Messages = packet.Message.mensagem; PacketCreator.ShowGMNotice(Messages, GetNickname); } break; } return(false); } }
private void RecivePacketFromClient(IAsyncResult ar) { lock (locker) { Socket session = (Socket)ar.AsyncState; Client client = ClientFactory.Instance.GetClientBySession(session); if (client == null) { return; } int recived = 0; try { recived = session.EndReceive(ar); } catch (Exception e) { // Client has disconnected if (client == null) { Console.WriteLine($"Error occur {e.Message}"); } else { ClientFactory.Instance.RemoveClient(client); session.Shutdown(SocketShutdown.Both); Console.WriteLine(session.RemoteEndPoint + " Has been disconnected"); client.Logout(); if (!string.IsNullOrEmpty(client.NickName)) { foreach (var c in ClientFactory.Instance.GetAllClients().Where(x => x != client)) { c.Announce(PacketCreator.SendUserUpdate(client.NickName, 2)); } } session = null; } return; } byte[] packet = GetBytes(recived); PacketReader reader = new PacketReader(packet); short header = reader.ReadShort(); PacketHandler handler = PacketProccessor.GetHandler(header); Console.WriteLine("Packet ID is : " + header); if (handler != null) { handler.handlePacket(reader, client); } else { Console.WriteLine($"Error, No Such Header was found, Header : {header}"); } BeginRecive(session); } }
public void IncreaseTirednessJob() { Tiredness++; m_mOwner.Map.BroadcastMessage(PacketCreator.UpdateMount(m_mOwner.Id, this, false)); if (Tiredness > 100) { m_mOwner.DispelSkill(m_mOwner.JobType * 20000000 + 1004); } }
void HandleServerData(Packet packet) { #region Handle Lobby Selected ServerInfo = (ServerProcess)packet.Read(new ServerProcess()); SendResponse(PacketCreator.ShowConnectionServer(GetUID, USER_STATUS.IS_ONLINE, ServerInfo)); SendResponse(PacketCreator.ShowListFriends(Server.Players.Model)); #endregion }
private static Task <User> SendDisconnecToAllClients(Client client) { if (!string.IsNullOrEmpty(client.NickName)) { foreach (var c in ClientFactory.Instance.GetAllClients().Where(x => x != client)) { c.Announce(PacketCreator.SendUserUpdate(client.NickName, 2)); } } return(null); }
public void RemoveAll(int id, MapleClient cl) { var possessed = cl.Player.Inventorys[MapleItemInformationProvider.Instance.GetInventoryType(id).Value].CountById(id); if (possessed > 0) { MapleInventoryManipulator.RemoveById(cl, MapleItemInformationProvider.Instance.GetInventoryType(id), id, possessed, true, false); cl.Send(PacketCreator.GetShowItemGain(id, (short)-possessed, true)); } }