Esempio n. 1
0
        public SCharList CharList;          // 12 a 855	= 844

        // Construtores
        public static P_110 New(Client client)
        {
            P_110 tmp = new P_110 {
                Header   = SHeader.New(0x110, Marshal.SizeOf <P_110> ( ), 30001),
                CharList = SCharList.New(client)
            };

            return(tmp);
        }
Esempio n. 2
0
        // Controlador
        public static void Controller(Client client, P_20F rcv)
        {
            if (!Regex.IsMatch(rcv.Name, @"^[A-Za-z0-9-]{4,12}$"))
            {
                client.Send(P_101.New("Somente letras e números no nome. 4 a 12 caracteres."));
            }
            else if (rcv.Slot < 0 || rcv.Slot > 3)
            {
                client.Close( );
            }
            else if (rcv.ClassInfo < 0 || rcv.ClassInfo > 3)
            {
                client.Close( );
            }
            else
            {
                // Retorna character da conta
                ref Character character = ref client.Account.Characters [rcv.Slot];

                // Verifica se não está vaziu
                if (character != null)
                {
                    client.Close( );
                }
                else
                {
                    // Inicializa novo character
                    character = new Character( );

                    // Referencia o MOB do character
                    ref SMob mob = ref character.Mob;

                    // Inicializa a classe selecionada no MOB
                    switch (rcv.ClassInfo)
                    {
                    case 1: mob = SMob.FM(rcv.Name); break;

                    case 2: mob = SMob.BM(rcv.Name); break;

                    case 3: mob = SMob.HT(rcv.Name); break;

                    default: mob = SMob.TK(rcv.Name); break;
                    }

                    // Atualiza os status do MOB
                    Functions.GetCurrentScore(character, true);

                    // Envia os pacotes de criação de personagem
                    client.Send(P_110.New(client));
                    client.Send(P_101.New($"Personagem [{rcv.Name}] criado! Bom jogo!"));
                }
Esempio n. 3
0
        // Controlador
        public static void Controller(Client client, P_20F rcv)
        {
            if (!Regex.IsMatch(rcv.Name, @"^[A-Za-z0-9-]{4,12}$"))
            {
                client.Send(P_101.New("Somente letras e números no nome. 4 a 12 caracteres."));
            }
            else if (rcv.Slot < 0 || rcv.Slot > 3)
            {
                client.Close( );
            }
            else if (rcv.ClassInfo < 0 || rcv.ClassInfo > 3)
            {
                client.Close( );
            }
            else
            {
                // Retorna character da conta
                ref Character character = ref client.Account.Characters[rcv.Slot];

                // Verifica se não está vaziu
                if (character != null)
                {
                    client.Close( );
                }
                else
                {
                    character               = new Character(SMob.New());
                    character.Mob.Name      = rcv.Name;
                    character.Mob.ClassInfo = (ClassInfo)rcv.ClassInfo;
                    character               = UserMobDAO.CreateOrUpdateChar(character);

                    if (character != null)
                    {
                        //Atualiza o xml da account para salvar o novo char criado
                        UserAccountDAO.CreateOrUpdateAccount(client.Account);

                        // Envia os pacotes de criação de personagem
                        client.Send(P_110.New(client));
                        client.Send(P_101.New($"Personagem [{character.Mob.Name}] criado! Bom jogo!"));
                    }
                    else
                    {
                        client.Send(P_101.New($"Erro ao criar o personagem, contate o suporte!"));
                    }
                }
            }