Exemple #1
0
        private static void LoadCharInfo(string charID, ref Packet result)
        {
            KODatabase db = new KODatabase();

            var user = db.USERDATA.Where(u => u.strUserID == charID).First();

            int    nHair = 0;
            short  sClass = 0;
            byte   bRace = 0, bLevel = 0, bFace = 0, bZone = 0;
            string strItem = String.Empty;

            byte[] ItemArray = new byte[INVENTORY_TOTAL * 8];// = ToBytes(strItem);

            if (user != null)
            {
                result.SetString(user.strUserID);
                result.SetByte(user.Race);
                result.SetShort(user.Class);
                result.SetByte(user.Level);
                result.SetByte(user.Face);
                result.SetDword(user.HairRGB);
                result.SetByte(user.Zone);

                Packet item = new Packet();
                item.append(user.strItem, user.strItem.Length);

                for (int i = 0; i < SLOT_MAX; i++)
                {
                    int   nItemID;
                    short sDurability, sCount;
                    nItemID     = item.GetDWORD();
                    sDurability = item.GetShort();
                    sCount      = item.GetShort();
                    if (i == HEAD || i == BREAST || i == SHOULDER || i == LEG || i == GLOVE || i == FOOT || i == RIGHTHAND || i == LEFTHAND)
                    {
                        result.SetDword(nItemID);
                        result.SetShort(sDurability);
                    }
                }
            }
            else
            {
                result.SetString(charID);
                result.SetByte(bRace);
                result.SetShort(sClass);
                result.SetByte(bLevel);
                result.SetByte(bFace);
                result.SetDword(nHair);
                result.SetByte(bZone);

                for (int i = 0; i < SLOT_MAX; i++)
                {
                    if (i == HEAD || i == BREAST || i == SHOULDER || i == LEG || i == GLOVE || i == FOOT || i == RIGHTHAND || i == LEFTHAND)
                    {
                        result.SetDword(0);
                        result.SetShort(0);
                    }
                }
            }
        }
Exemple #2
0
        private void HandlePatches(Packet pkt)
        {
            short cversion = pkt.GetShort();

            Packet result = new Packet((byte)LogonOpcodes.LS_DOWNLOADINFO_REQ);

            List <VERSION> versions = new List <VERSION>();

            foreach (VERSION vers in g_pMain.PatchList)
            {
                if (vers.sVersion > cversion)
                {
                    versions.Add(vers);
                }
            }

            result.SetString(g_pMain.FTP_URL).SetString(g_pMain.FTP_PATH).SetShort(short.Parse(versions.Count.ToString()));

            foreach (VERSION vrs in versions)
            {
                result.SetString(vrs.strFilename);
            }

            Send(result);
        }
Exemple #3
0
 public void ConstructClanNoticePacket(ref Packet result)
 {
     result = new Packet();
     result.SetByte(WIZ_NOTICE);
     result.DByte();
     result.SetByte(4);               // type
     result.SetByte(1);               // total blocks
     result.SetString("Clan Notice"); // header
     result.SetString(m_strClanNotice);
 }
Exemple #4
0
        private void HandleLogin(Packet pkt)
        {
            KODatabase db = new KODatabase();
            string     AccountID = pkt.GetString(), Passwd = pkt.GetString();
            short      resultCode = 1;

            if (AccountID == string.Empty || AccountID.Length >= Define.MAX_ID_SIZE ||
                Passwd == string.Empty || Passwd.Length >= Define.MAX_PW_SIZE)
            {
                resultCode = 2;
            }
            else
            {
                resultCode = db.TB_USER.Where(u => u.strAccountID == AccountID && u.strPasswd == Passwd).Count() > 0 ? (short)1 : (short)2;
            }

            Packet result = new Packet((byte)LogonOpcodes.LS_LOGIN_REQ);

            result.SetByte((byte)resultCode);
            if (resultCode == 1)
            {
                result.SetShort((short)db.ACCOUNT_PREMIUM(AccountID));
                result.SetString(AccountID);
            }

            Send(result);

            Debug.WriteLine("Kullanıcı girişi : {1} - {0}", resultCode, AccountID);
        }
Exemple #5
0
        private void HandleNews(Packet pkt)
        {
            Packet result = new Packet((byte)LogonOpcodes.LS_NEWS);

            result.SetString("Login Notice").SetString("<empty>");

            Send(result);
        }
Exemple #6
0
        internal void GetServerList(ref Packet result)
        {
            KODatabase db = new KODatabase();
            short      CurrentUserCount = (short)db.CURRENTUSER.Count();

            result.SetByte((byte)ServerList.Count);

            foreach (SERVER_INFO server in ServerList)
            {
                result.SetString(server.strServerIP);
                result.SetString(server.strLanIP);
                result.SetString(server.strServerName);

                if (CurrentUserCount <= server.sPlayerCap)
                {
                    result.SetShort(CurrentUserCount);
                }
                else
                {
                    result.SetShort(-1);
                }

                result.SetShort(server.sServerID);
                result.SetShort(server.sGroupID);

                result.SetShort(server.sPlayerCap);
                result.SetShort(server.sFreePlayerCap);

                result.SetByte(0);

                result.SetString(server.strKarusKingName);
                result.SetString(server.strKarusNotice);
                result.SetString(server.strElMoradKingName);
                result.SetString(server.strElMoradNotice);
            }
        }
Exemple #7
0
        internal void GetUserInfo(ref Packet result)
        {            
            Knights pKnights = null;

            result.SByte();
            result.SetString(GetName());
            result.SetShort(GetNation());
            result.SetShort(m_bKnights);
            result.SetByte(GetFame());

            pKnights = g_pMain.GetClanPtr(m_bKnights);

            if (pKnights == null)
            {
                result.SetDword(0);
                result.SetShort(0);
                result.SetByte(0);
                result.SetShort(-1);
                result.SetDword(0);
                result.SetByte(0);
            }
            else
            {
                result.SetShort(pKnights.GetAllianceID());

                result.SetString(pKnights.m_strName);

                result.SetByte(pKnights.m_byGrade);
                result.SetByte(pKnights.m_byRanking);

                result.SetShort(pKnights.m_sMarkVersion);
                result.SetShort(pKnights.m_sCape);

                result.SetByte(pKnights.m_bCapeR);
                result.SetByte(pKnights.m_bCapeG);
                result.SetByte(pKnights.m_bCapeB);
                result.SetByte(0);
                result.SetByte(1);
            }

            InvisibilityType bInvisibilityType = (InvisibilityType)m_bInvisibilityType;
            if (bInvisibilityType != InvisibilityType.INVIS_NONE)
                bInvisibilityType = InvisibilityType.INVIS_DISPEL_ON_MOVE;

            result.SetByte(GetLevel()); result.SetByte(m_bRace); result.SetShort(m_sClass);
            result.SetShort(GetSPosX()); result.SetShort(GetSPosZ()); result.SetShort(GetSPosY());
            result.SetByte(m_bFace); result.SetDword(m_nHair);
            result.SetByte(m_bResHpType); result.SetDword(m_bAbnormalType);
            result.SetByte(m_bNeedParty);
            result.SetByte(m_bAuthority);
            result.SetByte(m_bPartyLeader);
            result.SetByte((byte)bInvisibilityType);
            result.SetByte(m_teamColour);
            result.SetByte(m_bIsHidingHelmet);
            result.SetByte((byte)bInvisibilityType);
            result.SetShort(m_sDirection);
            result.SetByte(m_bIsChicken);
            result.SetByte(m_bRank);
            result.SetShort(0);
            result.SetByte(m_bKnightsRank);
            result.SetByte(m_bPersonalRank);

            byte[] equippedItems =
            {
                BREAST, LEG, HEAD, GLOVE, FOOT, SHOULDER, RIGHTHAND, LEFTHAND,
                CWING, CHELMET, CRIGHT, CLEFT, CTOP, CFAIRY
            };

            foreach (byte i in equippedItems)
            {

                _ITEM_DATA pItem = GetItem(i);

                if (pItem == null)
                    continue;

                result.SetDword(pItem.nNum);
                result.SetShort(pItem.sDuration);
                result.SetByte(pItem.bFlag);
            }

            result.SetByte(GetZoneID());
            result.SetShort(-1);
            result.SetDword(0); result.SetShort(0); result.SetByte(0); result.SetByte(isGenieActive());

            if (__VERSION > 2000)
            {
                result.SetByte(isRebirth());
                result.SetShort(GetAchieveTitle());
                result.SetShort(0);
                result.SetByte(0);
                result.SetByte(1);
            }
        }
Exemple #8
0
        public void SendMyInfo()
        {

            SetUserAbility(false);

            Packet result = new Packet(WIZ_MYINFO);

            result.SByte();
            result.SetShort(sSid);
            result.SetString(GetName());

            result.SetShort(Convert.ToInt16(m_curx * 10)); result.SetShort(Convert.ToInt16(m_curz * 10)); result.SetShort(Convert.ToInt16(m_cury * 10));

            result.SetByte(m_bNation);
            result.SetByte(m_bRace); result.SetShort(m_sClass); result.SetByte(m_bFace);

            result.SetDword(m_nHair);

            result.SetByte(m_bRank); result.SetByte(m_bTitle);

            result.SetShort(0);

            result.SetByte(GetLevel());
            result.SetShort(m_sPoints);

            result.SetInt64(1/*SetMaxExp()*/); result.SetInt64(m_iExp);

            result.SetDword(m_iLoyalty); result.SetDword(m_iLoyaltyMonthly);

            result.SetShort(GetClanID()); result.SetByte(GetFame());

            Knights pKnights = g_pMain.GetClanPtr(GetClanID());

            if (pKnights == null)
            {
                result.SetInt64(0);
                result.SetShort(-1);
                result.SetDword(0);
            }
            else
            {
                pKnights.OnLogin(this);
                Knights pAllyClan = null;
                if (pKnights.GetAllianceID() > 0)
                    pAllyClan = g_pMain.GetClanPtr(pKnights.GetAllianceID());

                result.SetShort(pKnights.GetAllianceID());
                result.SetByte(pKnights.m_byFlag);
                result.SetString(pKnights.m_strName);
                result.SetByte(pKnights.m_byGrade);
                result.SetByte(pKnights.m_byRanking);

                result.SetShort(pKnights.m_sMarkVersion);
                if (pAllyClan == null)
                    result.SetShort(pKnights.m_sCape);
                else
                    result.SetShort(pAllyClan.m_sCape);

                result.SetByte(pKnights.m_bCapeR);
                result.SetByte(pKnights.m_bCapeG);
                result.SetByte(pKnights.m_bCapeB);
                result.SetByte(0);
            }

            result.SetByte(2);
            result.SetByte(3);
            result.SetByte(4);
            result.SetByte(5);

            result.SetShort(m_iMaxHp); result.SetShort(m_sHp);
            result.SetShort(m_iMaxMp); result.SetShort(m_sMp);

            result.SetDword(m_sMaxWeight); result.SetDword(m_sItemWeight);

            result.SetByte(m_bStats[(int)StatType.STAT_STR]); result.SetByte((byte)GetStatItemBonus(StatType.STAT_STR));
            result.SetByte(m_bStats[(int)StatType.STAT_STA]); result.SetByte((byte)GetStatItemBonus(StatType.STAT_STA));
            result.SetByte(m_bStats[(int)StatType.STAT_DEX]); result.SetByte((byte)GetStatItemBonus(StatType.STAT_DEX));
            result.SetByte(m_bStats[(int)StatType.STAT_INT]); result.SetByte((byte)GetStatItemBonus(StatType.STAT_INT));
            result.SetByte(m_bStats[(int)StatType.STAT_CHA]); result.SetByte((byte)GetStatItemBonus(StatType.STAT_CHA));

            result.SetShort(m_sTotalHit); result.SetShort(m_sTotalAc);

            result.SetByte((byte)m_sFireR);
            result.SetByte((byte)m_sColdR);
            result.SetByte((byte)m_sLightningR);
            result.SetByte((byte)m_sMagicR);
            result.SetByte((byte)m_sDiseaseR);
            result.SetByte((byte)m_sPoisonR);

            result.SetDword(m_iGold);
            result.SetByte(m_bAuthority);
            result.SetByte(m_bKnightsRank); result.SetByte(m_bPersonalRank);

            result.append(m_bstrSkill, 9);

            for (int i = 0; i < INVENTORY_TOTAL; i++)
            {
                _ITEM_DATA pItem = GetItem(i);
                if (pItem == null)
                {
                    pItem = new _ITEM_DATA();
                }

                if (pItem.sRemainingRentalTime < UNIXTIME)
                    pItem.sRemainingRentalTime = 0;

                if (pItem.nExpirationTime < UNIXTIME)
                    pItem.nExpirationTime = 0;

                result.SetDword(pItem.nNum);
                result.SetShort(pItem.sDuration); result.SetShort(pItem.sCount);
                result.SetByte(pItem.bFlag);	// item type flag (e.g. rented)
                result.SetShort(pItem.sRemainingRentalTime);	// remaining time
                result.SetDword(0); // unknown
                result.SetDword(pItem.nExpirationTime); // expiration date in unix time
            }

            result.SetByte(m_bAccountStatus);
            result.SetByte(m_bPremiumType);
            result.SetShort(m_sPremiumTime);
            result.SetByte(m_bIsChicken); // Yumurta
            result.SetDword(m_iMannerPoint);
            result.SetShort(0);
            result.SetDword(0); // Military Camp
            result.SetShort(m_sGenieTime);// Genie
           

            Send(result);

            if (!g_pMain.AddUserInGame(GetID(), this))
                OnDisconnect();
            else
                bGameStart = true;

            Console.WriteLine("Send My info Gönderildi.");          
        }
Exemple #9
0
        internal void GetServerList(ref Packet result)
        {
            KODatabase db = new KODatabase();
            short CurrentUserCount = (short)db.CURRENTUSER.Count();
            result.SetByte((byte)ServerList.Count);

            foreach(SERVER_INFO server in ServerList)
            {
                result.SetString(server.strServerIP);
                result.SetString(server.strLanIP);
                result.SetString(server.strServerName);

                if (CurrentUserCount <= server.sPlayerCap)
                    result.SetShort(CurrentUserCount);
                else
                    result.SetShort(-1);

                result.SetShort(server.sServerID);
                result.SetShort(server.sGroupID);

                result.SetShort(server.sPlayerCap);
                result.SetShort(server.sFreePlayerCap);

                result.SetByte(0);

                result.SetString(server.strKarusKingName);
                result.SetString(server.strKarusNotice);
                result.SetString(server.strElMoradKingName);
                result.SetString(server.strElMoradNotice);
            }
        }
Exemple #10
0
        private void HandleLogin(Packet pkt)
        {
            KODatabase db = new KODatabase();
            string AccountID = pkt.GetString(), Passwd = pkt.GetString();
            short resultCode = 1;

            if (AccountID == string.Empty || AccountID.Length >= Define.MAX_ID_SIZE ||
                Passwd == string.Empty || Passwd.Length >= Define.MAX_PW_SIZE)
                resultCode = 2;
            else
                resultCode = db.TB_USER.Where(u=> u.strAccountID == AccountID && u.strPasswd == Passwd).Count() > 0 ? (short)1 : (short)2 ;

            Packet result = new Packet((byte)LogonOpcodes.LS_LOGIN_REQ);
            result.SetByte((byte)resultCode);
            if (resultCode == 1)
            {
                result.SetShort((short)db.ACCOUNT_PREMIUM(AccountID));
                result.SetString(AccountID);
            }

            Send(result);

            Debug.WriteLine("Kullanıcı girişi : {1} - {0}", resultCode, AccountID);
        }
Exemple #11
0
        private void HandlePatches(Packet pkt)
        {
            short cversion = pkt.GetShort();

            Packet result = new Packet((byte)LogonOpcodes.LS_DOWNLOADINFO_REQ);

            List<VERSION> versions = new List<VERSION>();

            foreach (VERSION vers in g_pMain.PatchList)
            {
                if (vers.sVersion > cversion)
                    versions.Add(vers);
            }

            result.SetString(g_pMain.FTP_URL).SetString(g_pMain.FTP_PATH).SetShort(short.Parse(versions.Count.ToString()));

            foreach (VERSION vrs in versions)
            {
                result.SetString(vrs.strFilename);
            }

            Send(result);
        }
Exemple #12
0
        private void HandleNews(Packet pkt)
        {
            Packet result = new Packet((byte)LogonOpcodes.LS_NEWS);
            result.SetString("Login Notice").SetString("<empty>");

            Send(result);
        }
Exemple #13
0
 public void ConstructClanNoticePacket(ref Packet result)
 {
     result = new Packet();
     result.SetByte(WIZ_NOTICE);
     result.DByte();
     result.SetByte(4);		// type
     result.SetByte(1);			// total blocks
     result.SetString("Clan Notice");	// header
     result.SetString(m_strClanNotice);
 }
Exemple #14
0
        private static void LoadCharInfo(string charID, ref Packet result)
        {
            KODatabase db = new KODatabase();

            var user = db.USERDATA.Where(u => u.strUserID == charID).First();

            int nHair = 0;
            short sClass = 0;
            byte bRace = 0, bLevel = 0, bFace = 0, bZone = 0;
            string strItem = String.Empty;
            byte[] ItemArray = new byte[INVENTORY_TOTAL * 8];// = ToBytes(strItem);

            if (user != null)
            {
                result.SetString(user.strUserID);
                result.SetByte(user.Race);
                result.SetShort(user.Class);
                result.SetByte(user.Level);
                result.SetByte(user.Face);
                result.SetDword(user.HairRGB);
                result.SetByte(user.Zone);

                Packet item = new Packet();
                item.append(user.strItem, user.strItem.Length);

                for (int i = 0; i < SLOT_MAX; i++)
                {
                    int nItemID;
                    short sDurability, sCount;
                    nItemID = item.GetDWORD();
                    sDurability = item.GetShort();
                    sCount = item.GetShort();
                    if (i == HEAD || i == BREAST || i == SHOULDER || i == LEG || i == GLOVE || i == FOOT || i == RIGHTHAND || i == LEFTHAND)
                    {
                        result.SetDword(nItemID);
                        result.SetShort(sDurability);
                    }
                }
            }
            else
            {
                result.SetString(charID);
                result.SetByte(bRace);
                result.SetShort(sClass);
                result.SetByte(bLevel);
                result.SetByte(bFace);
                result.SetDword(nHair);
                result.SetByte(bZone);

                for (int i = 0; i < SLOT_MAX; i++)
                {
                    if (i == HEAD || i == BREAST || i == SHOULDER || i == LEG || i == GLOVE || i == FOOT || i == RIGHTHAND || i == LEFTHAND)
                    {
                        result.SetDword(0);
                        result.SetShort(0);
                    }
                }
            }
            
        }