Exemplo n.º 1
0
        private byte[] PlayerAction(List <Player> players, LobbyActionEnum action)
        {
            var result = new PangyaBinaryWriter();

            result.Write(new byte[] { 0x46, 0x00 });
            result.Write((byte)action);        //ACTION PLAYER
            result.Write((byte)players.Count); //TOTAL PLAYERS IN ACTION

            foreach (var player in players)
            {
                //----  lobbyPlayer.GetLobbyInfo()
                result.Write(player.Member_Old.UID);                   //4
                result.Write(player.ConnectionId);                     //8
                result.Write((ushort)0);                               //GameID
                result.WriteStr(player.Member_Old.Nickname, 22);       //34
                result.Write((byte)player.User_Statistics.Game_Level); //35
                result.Write((uint)0);                                 //GM(39)  (4 = GM, 0 = NormalPlayer);
                result.Write((uint)0);                                 //43 //player.Decorations.TitleTypeID
                result.Write(0);                                       //47
                result.Write((ushort)player.Member_Old.Sex);           //[Sex] // Add $10 for wings  + $10 + $20(49)
                result.Write(player.Guild.GUILD_INDEX);
                result.WriteStr(player.Guild.GUILD_IMAGE, 9);
                result.WriteEmptyBytes(8);                             //70
                result.WriteStr(player.Member_Old.UsernameDomain, 18); //88
                result.WriteEmptyBytes(110);                           //198
                //---- END lobbyPlayer.GetLobbyInfo()
            }

            return(result.GetBytes());
        }
Exemplo n.º 2
0
        public byte[] GetWarehouseData()
        {
            var result = new PangyaBinaryWriter();

            result.Write(new byte[] { 0x73, 0x00 });
            result.Write((UInt16)Count);//desnecessario conta +1 por causa do ticker report
            result.Write((UInt16)Count);
            foreach (var warehouse in this)
            {
                var time_left = Time_Left(warehouse.RegDate, warehouse.DateEnd);//esta errado, as veze buga a lista

                result.Write(warehouse.IDX);
                result.Write(warehouse.TYPEID);
                result.Write(time_left);
                result.Write(warehouse.C0 ?? 0);
                result.Write(warehouse.C1 ?? 0);
                result.Write(warehouse.C2 ?? 0);
                result.Write(warehouse.C3 ?? 0);
                result.Write(warehouse.C4 ?? 0);
                result.Write((byte)0);
                result.Write(warehouse.Flag ?? 0);
                result.Write(UnixTimeConvert(warehouse.RegDate)); //UNIXTIME campo RegDate
                result.Write(0);                                  //UnKnown
                result.Write(UnixTimeConvert(warehouse.DateEnd)); //UNIXTIME campo EndDate
                result.WriteEmptyBytes(4);
                result.Write((byte)2);
                result.WriteStr(warehouse.UCC_NAME, 16);
                result.WriteEmptyBytes(25);
                result.WriteStr(warehouse.UCC_UNIQE, 9);
                result.Write(warehouse.UCC_STATUS ?? 0);
                result.Write((ushort?)warehouse.UCC_COPY_COUNT ?? 0);
                result.WriteStr(warehouse.UCC_DRAWER, 16);
                result.WriteEmptyBytes(60);
                result.Write(warehouse.C0_SLOT ?? 0);
                result.Write(warehouse.C1_SLOT ?? 0);
                result.Write(warehouse.C2_SLOT ?? 0);
                result.Write(warehouse.C3_SLOT ?? 0);
                result.Write(warehouse.C4_SLOT ?? 0);
                result.Write(warehouse.CLUB_POINT ?? 0);
                result.Write(warehouse.CLUB_SLOT_CANCEL ?? 0);
                result.Write(1);//(CLUB_COUNT) > coloque dentro da classe ;)
                result.Write((UInt32)0);
            }
            return(result.GetBytes());
        }
        public byte[] GetCharData()
        {
            //var character = this.FirstOrDefault();
            var character = _player.GetCurrentCharacter();

            if (character == null)
            {
                return(GetZero(513));
            }

            var result = new PangyaBinaryWriter();

            result.Write(character.TYPEID);
            result.Write(character.CID);
            result.Write((ushort)character.HAIR_COLOR);
            result.Write((ushort)character.GIFT_FLAG);
            for (int i = 0; i < 24; i++)
            {
                var valorPropriedade = character.CharacterEquip.GetType().GetProperty($"PART_TYPEID_{i + 1}").GetValue(character.CharacterEquip, null);
                result.Write(Convert.ToUInt32((valorPropriedade)));
            }
            for (int i = 0; i < 24; i++)
            {
                var valorPropriedade = character.CharacterEquip.GetType().GetProperty($"PART_IDX_{i + 1}").GetValue(character.CharacterEquip, null);
                result.Write(Convert.ToUInt32((valorPropriedade)));
            }
            result.WriteEmptyBytes(0xD8);
            result.Write(0);              //FLRingTypeID
            result.Write(0);              //FRRingTypeID
            result.WriteEmptyBytes(0x0C); //???
            result.Write(character.CUTIN);
            result.WriteEmptyBytes(0x0C); //????
            result.Write(character.POWER.Value);
            result.Write(character.CONTROL.Value);
            result.Write(character.IMPACT.Value);
            result.Write(character.SPIN.Value);
            result.Write(character.CURVE.Value);
            result.Write(0x00);                                                     //character.MasteryPoint
            result.WriteEmptyBytes(3);
            result.Write(character.CardEquipCollection.MapCard(character.CID), 40); //MAP CARD DATA
            result.Write((UInt32)0);
            result.Write((UInt32)0);

            return(result.GetBytes());
        }
Exemplo n.º 4
0
        public byte[] GetMascotData()
        {
            var result = new PangyaBinaryWriter();

            result.Write(new byte[] { 0xE1, 0x00 });
            result.Write((byte)Count); //Total Caddie

            foreach (var mascot in this)
            {
                result.Write(mascot.MID);
                result.Write(mascot.MASCOT_TYPEID);
                result.WriteEmptyBytes(5);
                result.WriteStr(mascot.MESSAGE, 16);
                result.WriteEmptyBytes(length: 14);
                result.Write(mascot.END_DATE_INT.Value);
                result.Write(mascot.DateEnd?.ToPangyaDateTime());
                result.WriteEmptyBytes(1);
            }

            return(result.GetBytes());
        }
        /// <summary>
        /// Obtém os dados de um character pelo Id
        /// </summary>
        public byte[] GetCharacterData(int characterId)
        {
            var character = this.First(c => c.CID == characterId);

            var result = new PangyaBinaryWriter();

            result.Write(character.TYPEID);
            result.Write(character.CID);
            result.Write(character.HAIR_COLOR);
            result.Write(character.GIFT_FLAG);
            for (int i = 0; i < 24; i++)
            {
                var valorPropriedade = character.CharacterEquip.GetType().GetProperty($"PART_TYPEID_{i + 1}").GetValue(character.CharacterEquip, null);
                result.Write(Convert.ToUInt32((valorPropriedade)));
            }
            for (int i = 0; i < 24; i++)
            {
                var valorPropriedade = character.CharacterEquip.GetType().GetProperty($"PART_IDX_{i + 1}").GetValue(character.CharacterEquip, null);
                result.Write(Convert.ToUInt32((valorPropriedade)));
            }
            result.WriteEmptyBytes(216);
            result.Write(0);            //character.AuxPart (UINT) 1879113856
            result.Write(0);            //character.AuxPart2 (UINT) 1881210881
            result.WriteEmptyBytes(12); //???
            result.Write(character.CUTIN);
            result.WriteEmptyBytes(12); //????
            result.Write(character.POWER.Value);
            result.Write(character.CONTROL.Value);
            result.Write(character.IMPACT.Value);
            result.Write(character.SPIN.Value);
            result.Write(character.CURVE.Value);
            result.Write((byte)100);                                                //character.MasteryPoint
            result.WriteEmptyBytes(3);
            result.Write(character.CardEquipCollection.MapCard(character.CID), 40); //MAP CARD DATA
            result.Write((UInt32)0);
            result.Write((UInt32)0);

            return(result.GetBytes());
        }
Exemplo n.º 6
0
        public void TickerMessage(string message)
        {
            var response = new PangyaBinaryWriter(new MemoryStream());

            response.Write(new byte[] { 0xC9, 0x00 });
            response.WritePStr("@Admin");
            response.WritePStr(message);
            response.WriteEmptyBytes(1);

            SendToAll(response.GetBytes());

            Console.WriteLine("Ticker enviado com sucesso");
        }
Exemplo n.º 7
0
        public byte[] GetMascotInfo()
        {
            var result = new PangyaBinaryWriter();

            result.Write(MID);
            result.Write(MASCOT_TYPEID);
            result.Write(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00 });
            result.WriteStr(MESSAGE, 16);
            result.WriteEmptyBytes(length: 14);
            result.Write((short)END_DATE_INT.Value);
            result.Write(DateEnd?.ToPangyaDateTime());
            result.Write((byte)0);

            return(result.GetBytes());
        }
Exemplo n.º 8
0
        public void HandleBuildHole()
        {
            var game = Player.Game;

            var response = new PangyaBinaryWriter();

            response.Write(new byte[] { 0x52, 0x00 });
            response.Write((byte)game.Course);    //mapa
            response.Write((byte)game.Mode);      //type game?
            response.Write((byte)game.HoleOrder); //mode game
            response.Write(game.Holes);           //hole total
            response.Write(game.Trophy);          //id do trofeu
            response.Write(game.TimeSec);         //vs?//Game.GameInfo.TurnTime
            response.Write(game.TimeMin);
            response.Write(GetHoleBuild(game));
            response.WriteEmptyBytes(22);

            Player.SendResponse(response.GetBytes());
        }
Exemplo n.º 9
0
        public byte[] GetGameInformation()
        {
            var result = new PangyaBinaryWriter();

            result.WriteStr(RoomTitle, 64);                    //ok
            result.Write((byte)(Password.Length > 0 ? 0 : 1)); //senha
            result.Write((byte)(GameStarted ? 0 : 1));
            result.Write((byte)0);                             //Orange
            result.Write(MaxPlayers);                          //maxplayer in room ok, 30 players
            result.Write((byte)Players.Count);                 //conta quantidade de players na sala //Players.GetAll().Count
            //result.Write(RoomKey, 17);//ultimo byte é zero

            result.Write(RoomKey);
            result.Write((byte)0x00);
            result.Write((byte)(Mode == GameTypeEnum.VERSUS_STROKE ? 30 : 0)); //Time30S
            result.Write(Holes);
            result.Write((byte)Mode);
            result.Write(GameId);
            result.Write((byte)HoleOrder);
            result.Write((byte)Course);
            result.Write(TimeSec);
            result.Write(TimeMin);
            result.Write(Trophy);                  // trophy typeid
            result.Write(FIDle);                   //Idle
            result.Write((byte)(GMEvent ? 1 : 0)); //GM Event 0(OFF), ON(1)
            result.WriteEmptyBytes(66);            //bytes referente a guild
            result.Write(0);                       // rate pang
            result.Write(0);                       // rate chuva ?
            result.Write(Owner_ID);                //meu uid
            result.Write((byte)SpecialFlag);
            result.Write(Artifact);                //artefato
            result.Write(NaturalMode);             //natural mode
            result.Write(GPTypeID);                //Grand Prix 1
            result.Write(GPTypeIDA);               //Grand Prix 2
            result.Write(GPTime);                  //Grand Time
            result.Write((uint)(GP ? 1 : 0));      // grand prix active

            return(result.GetBytes());
        }
Exemplo n.º 10
0
        private byte[] GuildInfo()
        {
            var response = new PangyaBinaryWriter();

            response.Write(new byte[] { 0xBF, 0x01 });
            response.Write((uint)1);

            response.Write(Player.Guild.GUILD_INDEX);                                                                     //GUILD ID?
            response.WriteStr(Player.Guild.GUILD_NAME, 17);                                                               //GUILD NAME(TH > 21, US 17)
            response.Write((UInt32)0);                                                                                    // guild level point ok
            response.Write((UInt32)0);                                                                                    //guild pangs OK
            response.Write((UInt32)Player.Guild.GUILD_TOTAL_MEMBER);                                                      //guild total member ok
            response.WriteStr(Player.Guild.GUILD_IMAGE, 9);                                                               //GuilD_IMAGE
            response.WriteEmptyBytes(3);
            response.WriteStr(Player.Guild.GUILD_NOTICE, 0x65);                                                           //GUILD_Notice
            response.WriteStr(Player.Guild.GUILD_INTRODUCING, 101);                                                       //GUILD_INTRODUCING
            response.Write((UInt32)Player.Guild.GUILD_POSITION);                                                          // Guild Position
            response.Write((UInt32)Player.Guild.GUILD_LEADER_UID);                                                        //// Guild Leader UID?
            response.WriteStr(Player.Guild.GUILD_LEADER_NICKNAME, 22);                                                    //guild leader nickname OK
            response.Write(PangyaAPI.Tools.Utils.ToPangyaDateTime(Player.Guild.GUILD_CREATE_DATE?.Date ?? DateTime.Now)); //PlayerData.GuildData.GUILD_CREATE_DATE
            return(response.GetBytes());
        }