Esempio n. 1
0
 private static void Process()
 {
     if (VerifyJob(Job) && VerifyModel(Model) && VerifyName(CharName) && NameAvailable)
     {
         var character = CreateCharacter();
         character.GameSocket     = Player.GameSocket;
         character.GameSocket.Ref = character;
         character.AccountId      = Player.AccountId;
         character.Password       = Player.Password;
         Player           = character;
         Player.LoginType = LoginType.Login;
         SelectorSystem.AddCharacterTo(Player.AccountId, Player);
         Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, Constants.AnswerOk, MsgTextType.Dialog), 29 + Constants.System.Length + Constants.Allusers.Length + Constants.AnswerOk.Length);
     }
     else
     {
         Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, "Taken or invalid name. (A-Y | 0-9)", MsgTextType.Dialog), 29 + Constants.System.Length + Constants.Allusers.Length + "Taken or invalid name. (A-Y | 0-9)".Length);
     }
 }
Esempio n. 2
0
File: MsgLogin.cs Progetto: Pircs/Yi
        private static void Process()
        {
            Player.GameSocket.Crypto.SetKeys(UniqueId, UniqueId);
            var characters = SelectorSystem.GetPlayersFor(Player.AccountId).ToList();

            if (characters.Any(c => c.LoginType == LoginType.Create))
            {
                if (!Player.GameSocket.Socket.Connected)
                {
                    return;
                }
                Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, "NEW_ROLE", MsgTextType.LoginInformation), 29 + Constants.System.Length + Constants.Allusers.Length + "NEW_ROLE".Length);
            }
            else
            {
                var availableChars = characters.Where(c => c.Online == false).ToList();

                if (availableChars.Count == 0)
                {
                    characters[0].Disconnect();
                    characters[0].GameSocket     = Player.GameSocket;
                    characters[0].GameSocket.Ref = characters[0];
                    Player = characters[0];
                }
                else
                {
                    availableChars[0].GameSocket     = Player.GameSocket;
                    availableChars[0].GameSocket.Ref = availableChars[0];
                    Player = availableChars[0];
                }

                Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, Constants.AnswerOk, MsgTextType.LoginInformation), 29 + Constants.System.Length + Constants.Allusers.Length + Constants.AnswerOk.Length);
                var p = LegacyPackets.CharacterInformation(Player);
                Player.ForceSend(p, BitConverter.ToUInt16(p, 0));
            }
        }
Esempio n. 3
0
        public static void Handle(Player player, byte[] buffer)
        {
            try
            {
                fixed(byte *p = buffer)
                {
                    var packet = *(MsgSyndicate *)p;

                    BufferPool.RecycleBuffer(buffer);

                    switch (packet.Type)
                    {
                    case GuildRequest.ApplyJoin:
                        if (GameWorld.Find(packet.Param, out Player found))
                        {
                            if (found.Guild != null)
                            {
                                player.JoinGuildRequest = found.UniqueId;
                                packet.Param            = player.UniqueId;
                                found.Send(packet);
                            }
                        }
                        break;

                    case GuildRequest.InviteJoin:
                        if (GameWorld.Find(packet.Param, out Player found2))
                        {
                            if (found2.JoinGuildRequest == player.UniqueId)
                            {
                                player.Guild.Add(found2);
                            }
                        }
                        break;

                    case GuildRequest.LeaveSyn:
                        player.Guild.Leave(player);
                        break;

                    case GuildRequest.KickOutMember:
                        if (GameWorld.Find(packet.Param, out Player found3))
                        {
                            found3.Guild.Leave(found3);
                        }
                        break;

                    case GuildRequest.QuerySynName:
                        if (Collections.Guilds.TryGetValue(packet.Param, out var guild))
                        {
                            player.Send(MsgName.Create(packet.Param, guild.Name, (byte)MsgNameType.Syndicate));
                        }
                        break;

                    //case GuildRequest.SetAlly:
                    //    break;
                    //case GuildRequest.ClearAlly:
                    //    break;
                    //case GuildRequest.SetEnemy:
                    //    break;
                    //case GuildRequest.ClearAntagonize:
                    //    break;
                    case GuildRequest.DonateMoney:
                        if (player.Money >= packet.Param)
                        {
                            player.GuildDonation += packet.Param;
                            player.Guild.Funds   += packet.Param;
                            player.Money         -= packet.Param;
                            player.Send(packet);
                        }
                        break;

                    case GuildRequest.QuerySynAttr:
                        if (player.UniqueId == packet.Param)
                        {
                            if (player.Guild == null)
                            {
                                return;
                            }
                            player.Send(MsgName.Create(player.Guild.UniqueId, player.Guild.Name, (byte)MsgNameType.Syndicate));
                            player.Send(MsgSyndicateSpawn.Create(player));
                            player.Send(MsgText.Create(Constants.System, Constants.Allusers, player.Guild.Bulletin, MsgTextType.GuildBulletin));
                        }
                        break;

                    //case GuildRequest.SetSyn:
                    //    break;
                    //case GuildRequest.UniteSubSyn:
                    //    break;
                    //case GuildRequest.UniteSyn:
                    //    break;
                    //case GuildRequest.SetWhiteSyn:
                    //    break;
                    //case GuildRequest.SetBlackSyn:
                    //    break;
                    //case GuildRequest.DestroySyn:
                    //    break;
                    //case GuildRequest.SetMantle:
                    //    break;
                    default:
                        Output.WriteLine(((byte[])packet).HexDump());
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Output.WriteLine(e);
            }
        }