Esempio n. 1
0
        public static void HandleShoppingMall(Packet pkt, User pUser)
        {
            if (pkt.GetByte() != STORE_LETTER)
                return;
            byte opcode = pkt.GetByte();
               
            switch (opcode)
            {
                // Are there any letters to be read?
                // This is for the notification at the top of the screen.
                case LETTER_UNREAD:
                    ReqLetterUnread(pUser);
                    break;

                // Lists all the new mail.
                case LETTER_LIST:
                    ReqLetterList(true,pUser);
                    break;

                // Lists all the old mail.
                case LETTER_HISTORY:
                    ReqLetterList(false, pUser);
                    break;

                // Opens up the letter & marks it as read.
                case LETTER_READ:
                    ReqLetterRead(pkt, pUser);
                    break;

                // Used to send a letter & any coins/items (coins are disabled though)
                case LETTER_SEND:
                    ReqLetterSend(pkt, pUser);
                    break;

                // Used to take an item from a letter. 
                case LETTER_GET_ITEM:
                    ReqLetterGetItem(pkt, pUser);
                    break;

                // Deletes up to 5 old letters at a time.
                case LETTER_DELETE:
                    ReqLetterDelete(pkt, pUser);
                    break;
            }   
        }
Esempio n. 2
0
        private void Parsing(Packet pkt)
        {
            Debug.WriteLine("Clientten İstek geldi");
            byte command = pkt.GetByte();

            switch ((LogonOpcodes)command)
            {
            case LogonOpcodes.LS_VERSION_REQ:
                HandleVersion(pkt);
                break;

            case LogonOpcodes.LS_DOWNLOADINFO_REQ:
                HandlePatches(pkt);
                break;

            case LogonOpcodes.LS_CRYPTION:
                HandleSetEncryptionPublicKey(pkt);
                break;

            case LogonOpcodes.LS_LOGIN_REQ:
                HandleLogin(pkt);
                break;

            case LogonOpcodes.LS_MGAME_LOGIN:

                break;

            case LogonOpcodes.LS_SERVERLIST:
                HandeleServerList(pkt);
                break;

            case LogonOpcodes.LS_NEWS:
                HandleNews(pkt);
                break;

            case LogonOpcodes.LS_UNKF7:

                break;
            }
        }
Esempio n. 3
0
        public void GameStart(Packet pkt)
        {
            if (IsInGame())
                return;

            byte opcode = pkt.GetByte();
            Console.WriteLine("Game Start Opcode : " + opcode);
            if (opcode == 1)
            {
                SendMyInfo();

                g_pMain.UserInOutForMe(this);
                g_pMain.MerchantUserInOutForMe(this);
                g_pMain.NpcInOutForMe(this);

                SendNotice();
                TopSendNotice();
                SendTime();
                SendWeather();

                Packet result = new Packet(2);
                result.SetByte(WIZ_GAMESTART);
                Send(result);

                m_State = GameState.GAME_STATE_INGAME;
                UserInOut(InOutType.INOUT_RESPAWN, this);
                bGameStart = true;

                SetUserAbility();

                if (isDead())
                    SendDeathAnimation();

                // m_tGameStartTimeSavedMagic = UNIXTIME;

                m_LastX = GetX();
                m_LastZ = GetZ();
            }

            BlinkStart();

            m_tHPLastTimeNormal = UNIXTIME;
        }
Esempio n. 4
0
 public void Parsing(Packet pkt)
 {
     byte command = pkt.GetByte();
     Console.WriteLine("Client Received : 0x" + command.ToString("X2"));
     if (!bSelectChar)
     {
         switch (command)
         {
             case WIZ_VERSION_CHECK:
                 VersionCheck(this);
                 break;
             case WIZ_LOGIN:
                 AccountLogin(this, pkt);
                 break;
             case WIZ_ALLCHAR_INFO_REQ:
                 LoadCharInfoReq(this, pkt);
                 break;
             case WIZ_SEL_NATION:
                 SelectNation(this, pkt);
                 break;
             case WIZ_SEL_CHAR:
                 SelCharToAgent(this, pkt);
                 break;
             case WIZ_NEW_CHAR:
                 CreateNewChar(this, pkt);
                 break;
             case WIZ_LOGINCHECKFORV2:
                 {
                     Packet result = new Packet(WIZ_LOGINCHECKFORV2);
                     result.SetByte(1);
                     Send(result);
                 }
                 break;
         }
     }
     else
     {
         switch (command)
         {
             case WIZ_MOVE: break;
             case WIZ_USER_INOUT: break;
             case WIZ_ATTACK: break;
             case WIZ_ROTATE: break;
             case WIZ_NPC_INOUT: break;
             case WIZ_NPC_MOVE: break;
             case WIZ_ALLCHAR_INFO_REQ: break;
             case WIZ_GAMESTART:
                 GameStart(pkt);
                 break;
             case WIZ_MYINFO: break;
             case WIZ_LOGOUT: break;
             case WIZ_CHAT: break;
             case WIZ_DEAD: break;
             case WIZ_REGENE: break;
             case WIZ_TIME: break;
             case WIZ_WEATHER: break;
             case WIZ_REGIONCHANGE: break;
             case WIZ_REQ_USERIN: break;
             case WIZ_HP_CHANGE: break;
             case WIZ_MSP_CHANGE: break;
             case WIZ_ITEM_LOG: break;
             case WIZ_EXP_CHANGE: break;
             case WIZ_LEVEL_CHANGE: break;
             case WIZ_NPC_REGION: break;
             case WIZ_REQ_NPCIN: break;
             case WIZ_WARP: break;
             case WIZ_ITEM_MOVE: break;
             case WIZ_NPC_EVENT: break;
             case WIZ_ITEM_TRADE: break;
             case WIZ_TARGET_HP: break;
             case WIZ_ITEM_DROP: break;
             case WIZ_BUNDLE_OPEN_REQ: break;
             case WIZ_TRADE_NPC: break;
             case WIZ_ITEM_GET: break;
             case WIZ_ZONE_CHANGE: break;
             case WIZ_POINT_CHANGE: break;
             case WIZ_STATE_CHANGE: break;
             case WIZ_LOYALTY_CHANGE: break;
             case WIZ_CRYPTION: break;
             case WIZ_USERLOOK_CHANGE: break;
             case WIZ_NOTICE: break;
             case WIZ_PARTY: break;
             case WIZ_EXCHANGE: break;
             case WIZ_MAGIC_PROCESS: break;
             case WIZ_SKILLPT_CHANGE: break;
             case WIZ_OBJECT_EVENT: break;
             case WIZ_CLASS_CHANGE: break;
             case WIZ_CHAT_TARGET: break;
             case WIZ_CONCURRENTUSER: break;
             case WIZ_DATASAVE: break;
             case WIZ_DURATION: break;
             case WIZ_TIMENOTIFY: break;
             case WIZ_REPAIR_NPC: break;
             case WIZ_ITEM_REPAIR: break;
             case WIZ_KNIGHTS_PROCESS: break;
             case WIZ_ITEM_COUNT_CHANGE: break;
             case WIZ_KNIGHTS_LIST: break;
             case WIZ_ITEM_REMOVE: break;
             case WIZ_OPERATOR: break;
             case WIZ_SPEEDHACK_CHECK: break;
             case WIZ_COMPRESS_PACKET: break;
             case WIZ_SERVER_CHECK: break;
             case WIZ_CONTINOUS_PACKET: break;
             case WIZ_WAREHOUSE: break;
             case WIZ_SERVER_CHANGE: break;
             case WIZ_REPORT_BUG: break;
             case WIZ_HOME: break;
             case WIZ_FRIEND_PROCESS: break;
             case WIZ_GOLD_CHANGE: break;
             case WIZ_WARP_LIST: break;
             case WIZ_VIRTUAL_SERVER: break;
             case WIZ_ZONE_CONCURRENT: break;
             case WIZ_CORPSE: break;
             case WIZ_PARTY_BBS: break;
             case WIZ_MARKET_BBS: break;
             case WIZ_KICKOUT: break;
             case WIZ_CLIENT_EVENT: break;
             case WIZ_MAP_EVENT: break;
             case WIZ_WEIGHT_CHANGE: break;
             case WIZ_SELECT_MSG: break;
             case WIZ_NPC_SAY: break;
             case WIZ_BATTLE_EVENT: break;
             case WIZ_AUTHORITY_CHANGE: break;
             case WIZ_EDIT_BOX: break;
             case WIZ_SANTA: break;
             case WIZ_ITEM_UPGRADE: break;
             case WIZ_PACKET1: break;
             case WIZ_PACKET2: break;
             case WIZ_ZONEABILITY: break;
             case WIZ_EVENT: break;
             case WIZ_STEALTH: break;
             case WIZ_ROOM_PACKETPROCESS: break;
             case WIZ_ROOM: break;
             case WIZ_PACKET3: break;
             case WIZ_QUEST: break;
             case WIZ_PACKET4: break;
             case WIZ_KISS: break;
             case WIZ_RECOMMEND_USER: break;
             case WIZ_MERCHANT: break;
             case WIZ_MERCHANT_INOUT: break;
             case WIZ_SHOPPING_MALL:
                 HandleShoppingMall(pkt, this);
                 break;
             case WIZ_SERVER_INDEX:
                 ServerIndex(pkt);
                 break;
             case WIZ_EFFECT: break;
             case WIZ_SIEGE: break;
             case WIZ_NAME_CHANGE: break;
             case WIZ_WEBPAGE: break;
             case WIZ_CAPE: break;
             case WIZ_PREMIUM: break;
             case WIZ_HACKTOOL: break;
             case WIZ_RENTAL:
                 Packet result = new Packet(20);
                 result.SetByte(WIZ_RENTAL);
                 result.SetByte(1);
                 Send(result);
                 break;
             case WIZ_PACKET5: break;
             case WIZ_CHALLENGE: break;
             case WIZ_PET: break;
             case WIZ_CHINA: break;
             case WIZ_KING: break;
             case WIZ_SKILLDATA: break;
             case WIZ_PROGRAMCHECK: break;
             case WIZ_BIFROST: break;
             case WIZ_REPORT: break;
             case WIZ_LOGOSSHOUT: break;
             case WIZ_PACKET6: break;
             case WIZ_PACKET7: break;
             case WIZ_RANK: break;
             case WIZ_STORY: break;
             case WIZ_PACKET8: break;
             case WIZ_PACKET9: break;
             case WIZ_PACKET10: break;
             case WIZ_PACKET11: break;
             case WIZ_MINING: break;
             case WIZ_HELMET: break;
             case WIZ_PVP: break;
             case WIZ_CHANGE_HAIR: break;
             case WIZ_PACKET12: break;
             case WIZ_PACKET13: break;
             case WIZ_PACKET14: break;
             case WIZ_PACKET15: break;
             case WIZ_PACKET16: break;
             case WIZ_PACKET17: break;
             case WIZ_DEATH_LIST: break;
             case WIZ_CLANPOINTS_BATTLE: break;
             case WIZ_TEST_PACKET: break;
             case WIZ_GENIE: break;
             case WIZ_USER_INFORMATIN: break;
             case WIZ_ACHIEVE: break;
             case WIZ_EXP_SEAL: break;
             case WIZ_SP_CHANGE: break;
         }
     }
 }
Esempio n. 5
0
        private void Parsing(Packet pkt)
        {
            Debug.WriteLine("Clientten İstek geldi");
            byte command = pkt.GetByte();

            switch ((LogonOpcodes)command)
            {
                case LogonOpcodes.LS_VERSION_REQ:
                    HandleVersion(pkt);
                    break;
                case LogonOpcodes.LS_DOWNLOADINFO_REQ:
                    HandlePatches(pkt);
                    break;
                case LogonOpcodes.LS_CRYPTION:
                    HandleSetEncryptionPublicKey(pkt);
                    break;
                case LogonOpcodes.LS_LOGIN_REQ:
                    HandleLogin(pkt);
                    break;
                case LogonOpcodes.LS_MGAME_LOGIN:

                    break;
                case LogonOpcodes.LS_SERVERLIST:
                    HandeleServerList(pkt);
                    break;
                case LogonOpcodes.LS_NEWS:
                    HandleNews(pkt);
                    break;
                case LogonOpcodes.LS_UNKF7:

                    break;
            }
        }
Esempio n. 6
0
        internal static void CreateNewChar(User user, Packet pkt)
        {
            Packet result = new Packet(WIZ_NEW_CHAR);
            byte nHair;
            short sClass;
            byte bCharIndex, bRace, bFace, str, sta, dex, intel, cha, errorCode = 0;
            string strUserID;

            bCharIndex = pkt.GetByte();
            strUserID = pkt.GetString();
            bRace = pkt.GetByte();
            sClass = pkt.GetShort();
            bFace = pkt.GetByte();
            nHair = pkt.GetByte();
            str = pkt.GetByte();
            sta = pkt.GetByte();
            dex = pkt.GetByte();
            intel = pkt.GetByte();
            cha = pkt.GetByte();

            COEFFICIENT p_TableCoefficient = user.g_pMain.GetCoefficientData(sClass);
            
            if (bCharIndex > 2)
                errorCode = NEWCHAR_NO_MORE;
            else if (p_TableCoefficient == null
                || (str + sta + dex + intel + cha) > 300)
                errorCode = NEWCHAR_INVALID_DETAILS;
            else if (str < 50 || sta < 50 || dex < 50 || intel < 50 || cha < 50)
                errorCode = NEWCHAR_STAT_TOO_LOW;
            
            if (errorCode != 0)
            {
                result.SetByte(errorCode);
                user.Send(result);
                return;
            }

            int nRet = new KODatabase().CREATE_NEW_CHAR(user.GetAccountID(), bCharIndex, strUserID, bRace, sClass, nHair, bFace, str, sta, dex, intel, cha);
            result.SetByte((byte)nRet);

            user.Send(result);
        }
Esempio n. 7
0
        internal static void SelCharToAgent(User user, Packet pkt)
        {
            Packet result = new Packet(WIZ_SEL_CHAR);

            byte bInit, bResult = 0;
            string strCharID = string.Empty, strAccountID = string.Empty;

            strAccountID = pkt.GetString();
            user.strCharID = strCharID = pkt.GetString();
            bInit = pkt.GetByte();


            if (user.GetAccountID() == String.Empty || user.GetName() == String.Empty ||
                !DBAgent.LoadUserData(user.GetAccountID(), strCharID, ref user) ||
                !DBAgent.LoadWarehouseData(user.GetAccountID(), user) ||
                !DBAgent.LoadPremiumServiceUser(user.GetAccountID(), user) ||
                !DBAgent.LoadSavedMagic(user))
            {
                Debug.WriteLine("Kullanıcı girişi sırasında hata oluştu");
                bResult = 0;
                goto fail_return;
            }

            bResult = 1;

            fail_return:
            user.SelectCharacter(bResult, bInit);            
        }
Esempio n. 8
0
        internal static void SelectNation(User user, Packet pkt)
        {
            Packet result = new Packet(WIZ_SEL_NATION);

            byte nation = pkt.GetByte();

            DBAgent.SelectNation(ref result,nation,user.strAccountID);

            user.Send(result);
        }
Esempio n. 9
0
        private static void ReqLetterSend(Packet pkt, User pUser)
        {
            Packet result = new Packet(WIZ_SHOPPING_MALL, STORE_LETTER);
            User ptUser = null;
            String strRecipient = String.Empty, strSubject = String.Empty, strMessage = String.Empty;
            _ITEM_DATA pItem = null;

            Int32 nItemID = 0, nCoins = 0, nCoinRequirement = 1000;
            Byte bType, bSrcPos;
            SByte bResult = 1;
            Int64 Serial = 0;
            
           //if(pUser.isTrading() || pUser.isMerchanting())
           //{
           //    bResult = -1;
           //    goto send_packet;
           //}

            pkt.SByte();
            strRecipient = pkt.GetString(); strSubject = pkt.GetString(); bType = pkt.GetByte();

            // invalid recipient name lenght
            if (strRecipient == String.Empty || strRecipient.Length > MAX_ID_SIZE
                // Invalid subject lenght
                || strSubject == String.Empty || strSubject.Length > 31
                // Invalid type (as far we're concerned) 
                || bType == 0 || bType > 2)
                bResult = -1;
            else if (STRCMP(strRecipient, pUser.strCharID))
                bResult = -6;

            if (bResult != 1)
                goto send_packet;

            if(bType == 2)
            {
                if (nItemID != 0)
                    nCoinRequirement = 10000;
                else
                    nCoinRequirement = 5000;

                // Item alma fonksiyonu eklenecek
            }
            send_packet:

            result.SetByte(LETTER_SEND).SetByte(bResult);
            pUser.Send(result);
        }