Beispiel #1
0
        /// <summary>
        /// Sends a Message in game
        /// </summary>
        /// <param name="szSource">Receiver</param>
        /// <param name="szMsg">Message</param>
        /// <param name="nType">Message Type (whisper, global, advertisment, [...]</param>
        /// <returns></returns>
        public void CreateMessagePacket(string szSource, string szMsg, int nType)
        {
            PacketOut o = new PacketOut(20);

            o.FillString(szSource, 21);
            o.WriteByte(0);
            o.WriteByte((byte)szMsg.Length);
            o.WriteByte((byte)nType);
            o.WriteString(szMsg, szMsg.Length);
            o.FinalizeLengthAndChecksum();
            m_cGameConnection.SendTCP(o);
        }
Beispiel #2
0
        static public void Send(LobbyClient client)
        {
            PacketOut Out = new PacketOut((uint)Opcodes.ANS_LOGIN_SUCCESS);

            Out.WriteParsedString("Welcome to rebornAPB", 48);
            Out.WriteUInt32Reverse(1);
            Out.WriteInt64Reverse(TCPManager.GetTimeStamp());
            Out.WriteUInt32Reverse(client.Account.IsAdmin);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteInt32Reverse(0);
            Out.WriteString("");
            Out.WriteInt32(0);
            Out.WriteInt32(0);
            Out.WriteInt32Reverse(0);
            Out.WriteString("");
            Out.WriteInt32Reverse(0);
            client.Send(Out);
        }
Beispiel #3
0
        /// <summary>
        /// Not sure about the content - but it actually sends your GPU with its driver version.
        /// </summary>
        /// <returns></returns>
        private PacketOut CreateReportPacket()
        {
            PacketOut o = new PacketOut(8000);

            o.WriteShort(8704);
            o.WriteShort(18197);
            o.WriteByte(81);
            o.WriteByte(251);
            o.WriteString("Windows  (6.2.9200)|ATI Radeon HD 3600 SeriesDrv Version : 8.17.10.1129", 71);   // Only for testing. And yes, my GPU sucks. Problem?
            o.FinalizeLengthAndChecksum();
            return(o);
        }
Beispiel #4
0
        static public void CL_CHECK(BaseClient client, PacketIn packet)
        {
            Client cclient = client as Client;
            uint   Version = packet.GetUint32();

            Log.Debug("CL_CHECK", "Launcher Version : " + Version);

            PacketOut Out = new PacketOut((byte)Opcodes.LCR_CHECK);

            if (Version != Program.Version)
            {
                Out.WriteByte((byte)CheckResult.LAUNCHER_VERSION); // Version incorrect + message
                Out.WriteString(Program.Message);
                client.SendPacket(Out);

                cclient.Disconnect();
                return;
            }

            byte   File = packet.GetUint8();
            UInt64 Len  = 0;

            if (File >= 1)
            {
                Len = packet.GetUint64();
            }

            if ((long)Len != Program.Info.Length)
            {
                Out.WriteByte((byte)CheckResult.LAUNCHER_FILE);
                Out.WriteString(Program.StrInfo);
            }
            else
            {
                Out.WriteByte((byte)CheckResult.LAUNCHER_OK);
            }

            cclient.SendPacket(Out);
        }
Beispiel #5
0
        public void OnSetPatchNotes(string notes)
        {
            if (!VerifyGMLevel(EGmLevel.AllStaff))
            {
                return;
            }

            Program.Config.PatchNotes = notes;
            ConfigMgr.SaveConfig(Program.Config);

            PacketOut Out = new PacketOut((byte)Opcodes.LCR_PATCH_NOTES);

            Out.WriteString(notes);

            ((TCPServer)Server).DispatchPatcket(Out);
        }
Beispiel #6
0
        public static void CL_START(BaseClient client, PacketIn packet)
        {
            Client cclient = (Client)client;

            string username = packet.GetString();
            string password = packet.GetString();

            LoginResult result = LoginResult.LOGIN_BANNED;

            PacketOut Out = new PacketOut((byte)Opcodes.LCR_START);

            string ip = client.GetIp().Split(':')[0];

            // Check Ip Ban
            if (Program.AcctMgr.CheckIp(ip))
            {
                result = Program.AcctMgr.CheckAccount(username, password, ip);
                Log.Debug("CL_START", "Authentication Request : " + username + " " + result);

                Out.WriteByte((byte)result);

                if (result == LoginResult.LOGIN_SUCCESS)
                {
                    var token = Program.AcctMgr.GenerateToken(username);
                    Log.Debug("CL_START", "Sending token to client : " + username + " token : " + token);
                    Out.WriteString(token);
                }
            }
            else
            {
                Out.WriteByte((byte)result); // Banned
            }
            cclient.SendPacketNoBlock(Out);

#if !DEBUG
            if (result == LoginResult.LOGIN_SUCCESS && Program.Config.SeverOnConnect)
            {
                cclient.Disconnect("Transaction complete");
            }
#endif
        }
Beispiel #7
0
        static public void CL_INFO(BaseClient client, PacketIn packet)
        {
            Client cclient = client as Client;

            if (cclient.LastInfoRequest == 0 || cclient.LastInfoRequest <= TCPServer.GetTimeStampMS() + 10000)
            {
                cclient.LastInfoRequest = TCPServer.GetTimeStampMS();

                List <Realm> Rms = Program.AcctMgr.GetRealms();

                PacketOut Out = new PacketOut((byte)Opcodes.LCR_INFO);
                Out.WriteByte((byte)Rms.Count);
                foreach (Realm Rm in Rms)
                {
                    Out.WriteByte(Convert.ToByte(Rm.Info != null));
                    Out.WriteString(Rm.Name);
                    Out.WriteUInt32(Rm.OnlinePlayers);
                    Out.WriteUInt32(Rm.OrderCount);
                    Out.WriteUInt32(Rm.DestructionCount);
                }

                cclient.SendPacket(Out);
            }
        }
Beispiel #8
0
        //获取远程摊位
        //id 为从指定序号摊位 -1为自动顺序
        public void GetRemotePtich(PlayerObject play, int id = -1)
        {
            int ptich_id = -1;

            if (id != -1 && id >= 0 && id < mListPtichInfo.Count)
            {
                if (mListPtichInfo[id].play == null)
                {
                    play.MsgBox("该摊位未开放");
                    return;
                }
                ptich_id = id;
            }
            else
            {
                ptich_id = GetRemotePtichId(play.GetCurrentRemotePtichId());
            }

            if (ptich_id == -1)
            {
                return;                 //无摊位 返回
            }
            play.SetCurrentRemotePtichId(ptich_id);

            //远程摊位信息
            String    sName   = mListPtichInfo[ptich_id].play.GetName();
            int       nLen    = 13 + Coding.GetDefauleCoding().GetBytes(sName).Length;
            PacketOut outpack = new PacketOut();

            outpack.WriteInt16((short)nLen);
            outpack.WriteInt16(1015);

            // {19,0,247,3,14,0,0,0,125,0,1,6,203,167,208,161,187,239,0}
            outpack.WriteInt32(ptich_id + 1);
            outpack.WriteInt16(125);
            outpack.WriteByte(1);
            outpack.WriteString(sName);
            outpack.WriteByte(0);
            play.SendData(outpack.Flush(), true);
            for (int i = 0; i < mListPtichInfo[ptich_id].mSellItemList.Count
                 ; i++)
            {
                RoleItemInfo     item_info = null;
                RoleData_Eudemon eudemon   = null;
                if (mListPtichInfo[ptich_id].mSellItemList[i].item_id >= IDManager.eudemon_start_id)
                {
                    eudemon = mListPtichInfo[ptich_id].play.GetEudemonSystem().FindEudemon(
                        mListPtichInfo[ptich_id].mSellItemList[i].item_id);
                    if (eudemon == null)
                    {
                        continue;
                    }
                    item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(eudemon.itemid);
                }
                else
                {
                    item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(
                        mListPtichInfo[ptich_id].mSellItemList[i].item_id);
                }

                if (item_info != null)
                {
                    NetMsg.MsgPtichItemInfo msg = new NetMsg.MsgPtichItemInfo(item_info,
                                                                              (uint)(ptich_id + 1), mListPtichInfo[ptich_id].mSellItemList[i].price, mListPtichInfo[ptich_id].mSellItemList[i].sell_type, true);
                    play.SendData(msg.GetBuffer(), true);
                    //发送幻兽信息
                    if (item_info.typeid >= IDManager.eudemon_start_id)
                    {
                        mListPtichInfo[ptich_id].play.GetEudemonSystem().SendLookPtichEudemonInfo(play, eudemon);
                    }
                }
            }
        }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteUInt32(id);
     outpack.WriteString(name);
     outpack.WriteULong(guanjue);
     return outpack.GetBuffer();
 }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteUInt32(id);
     outpack.WriteUInt32(itemid);
     outpack.WriteString(name);
     outpack.WriteFloat(phyatk_grow_rate);
     outpack.WriteFloat(phyatk_grow_rate_max);
     outpack.WriteFloat(magicatk_grow_rate);
     outpack.WriteFloat(magicatk_grow_rate_max);
     outpack.WriteFloat(life_grow_rate);
     outpack.WriteFloat(defense_grow_rate);
     outpack.WriteFloat(magicdef_grow_rate);
     outpack.WriteInt32(init_life);
     outpack.WriteInt32(init_atk_min);
     outpack.WriteInt32(init_atk_max);
     outpack.WriteInt32(init_magicatk_min);
     outpack.WriteInt32(init_magicatk_max);
     outpack.WriteInt32(init_defense);
     outpack.WriteInt32(init_magicdef);
     outpack.WriteInt32(luck);
     outpack.WriteInt32(intimacy);
     outpack.WriteInt16(level);
     outpack.WriteInt32(card);
     outpack.WriteInt32(exp);
     outpack.WriteInt32(quality);
     outpack.WriteInt32(recall_count);
     outpack.WriteInt32(wuxing);
     outpack.WriteInt32(mListMagicInfo.Count);
     for (int i = 0; i < mListMagicInfo.Count; i++)
     {
         outpack.WriteInt32(mListMagicInfo[i].id);
         //这里的owernid 宿主在上面一个包含类里面,所以不用写
         outpack.WriteUInt32(mListMagicInfo[i].magicid);
         outpack.WriteUInt32(mListMagicInfo[i].exp);
     }
         return outpack.GetBuffer();
 }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteBuff(InternalPacket.HEAD);
     outpack.WriteUInt16(mParam);
     outpack.WriteUInt32(gameid);
     outpack.WriteString(name);
     outpack.WriteBuff(InternalPacket.TAIL);
     return outpack.GetBuffer();
 }
 public byte[] GetBuff()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteBuff(InternalPacket.HEAD);
     outpack.WriteUInt16(mParam);
     outpack.WriteByte(mType);
     outpack.WriteString(text);
     outpack.WriteBuff(InternalPacket.TAIL);
     return outpack.GetBuffer();
 }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteBuff(InternalPacket.HEAD);
     outpack.WriteUInt16(mparam);
     outpack.WriteString(account);
     outpack.WriteBuff(InternalPacket.TAIL);
     return outpack.GetBuffer();
 }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteInt32(id);
     outpack.WriteByte(friendtype);
     outpack.WriteUInt32(friendid);
     outpack.WriteString(friendname);
     return outpack.GetBuffer();
 }
Beispiel #15
0
        public byte[] BuildRealms(uint sequence)
        {
            try
            {
                PacketOut Out = new PacketOut((byte)0);
                Out.Position = 0;

                Out.WriteUInt32(sequence);
                Out.WriteUInt16(0);
                lock (_Realms)
                {
                    Log.Info("BuildRealm", "Envoi de " + _Realms.Count + " royaumes");
                    Out.WriteUInt32((uint)_Realms.Count);

                    foreach (Realm Rm in _Realms.Values)
                    {
                        Out.WriteByte(Rm.RealmId);
                        Out.WriteByte((byte)(Rm.RpcId != 0 ? 1 : 0));
                        Out.WriteUInt32(1);
                        Out.WriteByte(Rm.RealmId);
                        Out.WriteByte(Rm.RealmId);
                        Out.WriteString("[" + Rm.Language + "] " + Rm.Name);
                        Out.WriteUInt32(19);
                        Out.WriteString("setting.allow_trials");
                        Out.WriteString(Rm.AllowTrials);
                        Out.WriteString("setting.charxferavailable");
                        Out.WriteString(Rm.CharfxerAvailable);
                        Out.WriteString("setting.language");
                        Out.WriteString(Rm.Language);
                        Out.WriteString("setting.legacy");
                        Out.WriteString(Rm.Legacy);
                        Out.WriteString("setting.manualbonus.realm.destruction");
                        Out.WriteString(Rm.BonusDestruction);
                        Out.WriteString("setting.manualbonus.realm.order");
                        Out.WriteString(Rm.BonusOrder);
                        Out.WriteString("setting.name");
                        Out.WriteString(Rm.Name);
                        Out.WriteString("setting.net.address");
                        Out.WriteString(Rm.Adresse);
                        Out.WriteString("setting.net.port");
                        Out.WriteString(Rm.Port.ToString());
                        Out.WriteString("setting.redirect");
                        Out.WriteString(Rm.Redirect);
                        Out.WriteString("setting.region");
                        Out.WriteString(Rm.Region);
                        Out.WriteString("setting.retired");
                        Out.WriteString(Rm.Retired);
                        Out.WriteString("status.queue.Destruction.waiting");
                        Out.WriteString(Rm.WaitingDestruction);
                        Out.WriteString("status.queue.Order.waiting");
                        Out.WriteString(Rm.WaitingOrder);
                        Out.WriteString("status.realm.destruction.density");
                        Out.WriteString(Rm.DensityDestruction);
                        Out.WriteString("status.realm.order.density");
                        Out.WriteString(Rm.DensityOrder);
                        Out.WriteString("status.servertype.openrvr");
                        Out.WriteString(Rm.OpenRvr);
                        Out.WriteString("status.servertype.rp");
                        Out.WriteString(Rm.Rp);
                        Out.WriteString("status.status");
                        Out.WriteString(Rm.Status);
                    }
                }
                Out.WriteUInt32(0);

                return(Out.ToArray());
            }
            catch (Exception e)
            {
                return(new byte[0]);
            }
        }
        public byte[] GetBuffer()
        {
            PacketOut outpack = new PacketOut();
            //  outpack.WriteBuff(InternalPacket.HEAD);
            //  outpack.WriteUInt16(mParam);
            outpack.WriteUInt32(id);
            outpack.WriteInt32(playerid);
            outpack.WriteUInt32(itemid);
            outpack.WriteUInt16(postion);
            outpack.WriteByte(stronglv);

            outpack.WriteUInt32(gem1);
            outpack.WriteUInt32(gem2);
            outpack.WriteString(forgename);
            outpack.WriteUInt16(amount);
            outpack.WriteInt32(war_ghost_exp);
            outpack.WriteByte(di_attack);
            outpack.WriteByte(shui_attack);
            outpack.WriteByte(huo_attack);
            outpack.WriteByte(feng_attack);
            outpack.WriteInt32(property);
            outpack.WriteUInt32(gem3);
            outpack.WriteInt32(god_strong);
            outpack.WriteInt32(god_exp);

            //  outpack.WriteBuff(InternalPacket.TAIL);

            return outpack.GetBuffer();
        }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteBuff(InternalPacket.HEAD);
     outpack.WriteUInt16(mParam);
     outpack.WriteUInt32(gameid);
     outpack.WriteInt32(accountid);
     outpack.WriteString(name);
     outpack.WriteUInt32(lookface);
     outpack.WriteByte(profession);
     outpack.WriteBuff(InternalPacket.TAIL);
     return outpack.GetBuffer();
 }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteBuff(InternalPacket.HEAD);
     outpack.WriteUInt16(mParam);
     outpack.WriteInt32(accountid);
     outpack.WriteBool(IsExit);
     outpack.WriteString(name);
     outpack.WriteUInt32(lookface);
     outpack.WriteUInt32(hair);
     outpack.WriteByte(level);
     outpack.WriteInt32(exp);
     outpack.WriteUInt32(life);
     outpack.WriteUInt32(mana);
     outpack.WriteByte(profession);
     outpack.WriteInt16(pk);
     outpack.WriteLong(gold);
     outpack.WriteLong(gamegold);
     outpack.WriteLong(stronggold);
     outpack.WriteUInt32(mapid);
     outpack.WriteInt16(x);
     outpack.WriteInt16(y);
     outpack.WriteString(hotkey);
     outpack.WriteULong(guanjue);
     outpack.WriteByte(godlevel);
     outpack.WriteByte(maxeudemon);
     outpack.WriteBuff(InternalPacket.TAIL);
     return outpack.GetBuffer();
 }
Beispiel #19
0
        public void Login(string username, byte[] hash, string installID)
        {
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < hash.Length; i++)
            {
                sb.Append(hash[i].ToString("x2"));
            }

            var password = sb.ToString();

            string      ip     = GetIp().Split(':')[0];
            LoginResult result = LoginResult.LOGIN_BANNED;
            PacketOut   Out    = new PacketOut((byte)Opcodes.LCR_LOGIN);

            if (Program.AcctMgr.CheckIp(ip))
            {
                int accountId;

                result = Program.AcctMgr.CheckAccount(username, password, ip, out accountId);

                var account = Program.AcctMgr.GetAccount(accountId);
                if (account == null)
                {
                    result = LoginResult.LOGIN_INVALID_USERNAME_PASSWORD;
                }
                else
                {
                    if (account.CoreLevel == 0)
                    {
                        if (account.GmLevel == 0)
                        {
                            result = LoginResult.LOGIN_PATCHER_NOT_ALLOWED;
                        }
                    }
                }
                Out.WriteByte((byte)result);
                Out.WriteUInt32((uint)Program.Config.ServerState);


                if (result == LoginResult.LOGIN_SUCCESS)
                {
                    string token = Program.AcctMgr.GenerateToken(username);
                    Out.WriteString(token);

                    OnLogin(account, token, installID);
                    Out.WriteUInt32((uint)account.GmLevel);
                }
                else
                {
                    Out.WriteString("");
                    Out.WriteUInt32((uint)0);
                }
            }
            else
            {
                Out.WriteByte((byte)result); // Banned
                Out.WriteString("");
                Out.WriteUInt32((uint)0);
                Socket.Close();
            }

            SendTCPRaw(Out);
        }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteUInt32(id);
     outpack.WriteString(name);
     outpack.WriteByte(title);
     outpack.WriteInt32(leader_id);
     outpack.WriteString(leader_name);
     outpack.WriteLong(money);
     outpack.WriteString(notice);
     outpack.WriteInt32(list_member.Count);
     for (int i = 0; i < list_member.Count; i++)
     {
         outpack.WriteBuff(list_member[i].GetBuffer());
     }
      return outpack.GetBuffer();
 }
Beispiel #21
0
        public byte[] BuildRealms(uint sequence)
        {
            try
            {
                PacketOut Out = new PacketOut((byte)0);
                Out.Position = 0;

                Out.WriteUInt32(sequence);
                Out.WriteUInt16(0);
                lock (_Realms)
                {
                    Log.Info("BuildRealm", "Envoi de " + _Realms.Count + " royaumes");
                    Out.WriteUInt32((uint)_Realms.Count);

                    foreach (Realm Rm in _Realms.Values)
                    {
                        Out.WriteByte(Rm.RealmId);
                        Out.WriteByte((byte)(Rm.RpcId != 0 ? 1 : 0));
                        Out.WriteUInt32(1);
                        Out.WriteByte(Rm.RealmId);
                        Out.WriteByte(Rm.RealmId);
                        Out.WriteString("[" + Rm.Language + "] " + Rm.Name);
                        Out.WriteUInt32(19);
                        Out.WriteString("setting.allow_trials");
                        Out.WriteString(Rm.AllowTrials);
                        Out.WriteString("setting.charxferavailable");
                        Out.WriteString(Rm.CharfxerAvailable);
                        Out.WriteString("setting.language");
                        Out.WriteString(Rm.Language);
                        Out.WriteString("setting.legacy");
                        Out.WriteString(Rm.Legacy);
                        Out.WriteString("setting.manualbonus.realm.destruction");
                        Out.WriteString(Rm.BonusDestruction);
                        Out.WriteString("setting.manualbonus.realm.order");
                        Out.WriteString(Rm.BonusOrder);
                        Out.WriteString("setting.name");
                        Out.WriteString(Rm.Name);
                        Out.WriteString("setting.net.address");
                        Out.WriteString(Rm.Adresse);
                        Out.WriteString("setting.net.port");
                        Out.WriteString(Rm.Port.ToString());
                        Out.WriteString("setting.redirect");
                        Out.WriteString(Rm.Redirect);
                        Out.WriteString("setting.region");
                        Out.WriteString(Rm.Region);
                        Out.WriteString("setting.retired");
                        Out.WriteString(Rm.Retired);
                        Out.WriteString("status.queue.Destruction.waiting");
                        Out.WriteString(Rm.WaitingDestruction);
                        Out.WriteString("status.queue.Order.waiting");
                        Out.WriteString(Rm.WaitingOrder);
                        Out.WriteString("status.realm.destruction.density");
                        Out.WriteString(Rm.DensityDestruction);
                        Out.WriteString("status.realm.order.density");
                        Out.WriteString(Rm.DensityOrder);
                        Out.WriteString("status.servertype.openrvr");
                        Out.WriteString(Rm.OpenRvr);
                        Out.WriteString("status.servertype.rp");
                        Out.WriteString(Rm.Rp);
                        Out.WriteString("status.status");
                        Out.WriteString(Rm.Status);
                    }
                }
                Out.WriteUInt32(0);

                return Out.ToArray();
            }
            catch (Exception e)
            {
                return new byte[0];
            }
        }
 public byte[] GetBuffer()
 {
     PacketOut outpack = new PacketOut();
     outpack.WriteString(members_name);
     outpack.WriteLong(money);
     outpack.WriteInt16(rank);
     outpack.WriteBool(boChange);
     return outpack.GetBuffer();
 }