Exemple #1
0
    void OnCreateCharacter(NetworkConnection conn, CreateCharacterMessage createCharacterMessage)
    {
        GameObject characterObject = playerSpawns != null && playerSpawns.Capacity >= 3
            ? Instantiate(playerPrefab, playerSpawns[players++ % 3].transform.position, playerSpawns[players++ % 3].transform.rotation)
            : Instantiate(playerPrefab);

        NetworkServer.AddPlayerForConnection(conn, characterObject);
    }
Exemple #2
0
    private void OnCreateCharacter(NetworkConnection conn, CreateCharacterMessage createCharacterMessage)
    {
        Player player = Instantiate(playerPrefab).GetComponent <Player>();

        player.Name = createCharacterMessage.Name;                      // assing player name

        CharacterData data = Database.LoadCharacter(player.Name);       // load data from database

        if (data != null)
        {
            Dictionary <Vector2Byte, ItemData> inventoryData = Database.StringToItemData(data.inventory);
            foreach (var key in inventoryData.Keys)                     // add items to inventory
            {
                player.inventoryData.Add(key, inventoryData[key]);
            }

            Dictionary <EquipmentSlot, ItemData> equipmentData = Database.StringToEquipmentData(data.equipment);
            foreach (var key in equipmentData.Keys)                     // add equipment ant its bonuses to player
            {
                EquipmentSlot ID       = key;
                ItemData      itemData = equipmentData[key];

                if (ID < 0 || (int)ID > 4)
                {
                    continue;
                }

                Item item = ObjectDatabase.GetItem(itemData.ID);
                if (item && item is Equipment)
                {
                    Equipment equipment = (Equipment)item;
                    player.equipmentData.Add(key, equipmentData[key]);

                    player.Armor        += equipment.ArmorBonus;
                    player.maxHealth    += equipment.HealthBonus;
                    player.Strength     += equipment.StrengthBonus;
                    player.Intelligence += equipment.IntelligenceBonus;
                    player.Stamina      += equipment.StaminaBonus;

                    if (item.GetType() == typeof(Weapon))
                    {
                        player.usedWeapon   = (Weapon)item;
                        player.usedWeaponID = item.ID;
                    }
                }
            }

            player.transform.position = data.position;                             // move player to his last position
            player.Health             = data.Health;                               // set player's health
            player.Experience         = data.experience;                           // set player's experience
            player.usedWeapon         = ObjectDatabase.GetWeapon(data.usedWeapon); // set player's weapon
        }

        ObjectDatabase.AddEntity(player);                                   // add player to entity database

        NetworkServer.AddPlayerForConnection(conn, player.gameObject);
    }   // Load character data from database
        public static void HandleCreateCharacterMessage(SimpleClient client, CreateCharacterMessage message)
        {
            ErrorEnum error = CharacterManager.Instance.CreateCharacter(client, message);

            SendCreateCharacterResultMessage(client, error);
            if (error == ErrorEnum.ERR_SUCCESS)
            {
                SendCharacterSlotMessage(client, client.Character, client.Account.Characters.Count(x => x.DeletedDate.HasValue));
            }
        }
        public override void OnClientConnect(NetworkConnection conn)
        {
            CreateCharacterMessage message = new CreateCharacterMessage
            {
                playerName = NetworkManagerButton.PlayerName,
                character  = -1,
                role       = -1
            };

            conn.Send(message);
        }
Exemple #5
0
        private void OnCreatePlayer(INetworkPlayer player, CreateCharacterMessage createCharacterMessage)
        {
            // create a gameobject using the name supplied by client
            GameObject playergo = Instantiate(playerPrefab).gameObject;

            playergo.GetComponent <Player>().playerName = createCharacterMessage.name;

            // set it as the player
            ServerObjectManager.AddCharacter(player, playergo);

            chatWindow.gameObject.SetActive(true);
        }
 public void OnCharacterCreation(object sender, CreateCharacterMessage message)
 {
     //if (player != null)
     //{
     //    ManagerPlayer.Instance.Player = player;
     //    ManagerState.Instance.ChangeState(EnumState.CHARACTER_SELECT);
     //}
     //else
     //{
     //    _btn_create.ButtonDisabled = false;
     //}
 }
Exemple #7
0
    public override void OnClientConnect(NetworkConnection conn)
    {
        base.OnClientConnect(conn);

        // load player nickname from PlayerPrefs and send connect request to server
        CreateCharacterMessage characterMessage = new CreateCharacterMessage
        {
            ID   = 0,
            Name = PlayerPrefs.GetString("nickname")
        };

        conn.Send(characterMessage);
    }
        public static void HandleCreateCharacterMessage(SimpleClient client, CreateCharacterMessage message)
        {
            ErrorEnum error = CharacterManager.Instance.CreateCharacter(client, message, client.Account.Characters.Count());

            SendCreateCharacterResultMessage(client, error);
            if (error == ErrorEnum.ERR_SUCCESS)
            {
                CharacterHandler.SendCharactersListMessage(client, DateTime.UtcNow.GetUnixTimeStamp(), 0, 0, 0,
                                                           (byte)client.Account.Characters.Count, 0, 0, client.Account.Characters.Where(x => !x.DeletedDate.HasValue).ToArray(),
                                                           client.Account.Characters.Count(x => x.DeletedDate.HasValue), 1, 1, 0);

                foreach (var character in client.Account.Characters.Where(x => !x.DeletedDate.HasValue))
                {
                    CharacterHandler.SendCharacterSlotMessage(client, character, client.Account.Characters.Count(x => x.DeletedDate.HasValue));
                }
            }
        }
        private void OnCreateCharacter(NetworkConnection conn, CreateCharacterMessage message)
        {
            if (currentPlayers == maxPlayers)
            {
                conn.Disconnect();
                return;
            }

            int character = message.character;

            if (character < 0)
            {
                character = AvailableCharacter;
            }
            int roleInt = message.role;

            if (roleInt < 0)
            {
                roleInt = Random.Range(0, availableRoles.Count);
            }
            Role role = roles[availableRoles[roleInt]];

            availableRoles.RemoveAt(roleInt);

            GameObject       player           = Instantiate(spawnPrefabs[character]);
            PlayerController playerController = player.GetComponent <PlayerController>();

            playerController.Role         = role;
            playerController.PlayerNumber = availableSpots[0];
            playerController.PlayerName   = message.playerName;
            availableSpots.RemoveAt(0);
            NetworkServer.AddPlayerForConnection(conn, playerController.gameObject);
            players.Add(conn, playerController);

            playerController.TargetSetLocalPlayer(conn, maxPlayers);

            if (++currentPlayers == maxPlayers)
            {
                GameController gc = FindObjectOfType <GameController>();
                gc.SetMatch(players.Values.ToArray());
            }
        }
Exemple #10
0
        public ErrorEnum CreateCharacter(SimpleClient client, CreateCharacterMessage message)
        {
            if (!m_nameCheckerRegex.IsMatch(message.name))
            {
                return(ErrorEnum.ERR_NOCREATE);
            }
            if (IsCharacterNameExist(message.name))
            {
                return(ErrorEnum.ERR_PLAYER_EXIST);
            }
            BreedRecord breed = BreedManager.Instance.GetBreedByJobId(message.job);

            if (breed == null)
            {
                return(ErrorEnum.ERR_NOCREATE);
            }
            CharacterRecord record = new CharacterRecord()
            {
                AccountId     = client.Account.Id,
                Name          = message.name,
                HD_MD5        = message.hd_md5,
                SceneId       = breed.StartMap,
                Sex           = message.sex == 1,
                X             = breed.StartX,
                Y             = breed.StartY,
                Z             = breed.StartZ,
                Level         = 1,
                Experience    = 60,
                Job           = breed.Job,
                Money         = (uint)breed.StartMoney,
                HP            = breed.StartHP,
                DamageTaken   = 0,
                Strenght      = breed.StartStrenght,
                Stamina       = breed.StartStamina,
                Dexterity     = breed.StartDexterity,
                Intelligence  = breed.StartIntelligence,
                SPI           = breed.StartSPI,
                HairMesh      = message.hair_mesh,
                HairColor     = (uint)message.hair_color,
                HeadMesh      = message.head_mesh,
                City_Code     = message.city_code,
                Constellation = message.constellation,
                Country       = message.country,
                SN_Card       = message.sn_card,
                Card_Type     = message.card_type,
                HD_SN         = message.hd_sn,
                Bin_Account   = message.bin_account,
                BlockTime     = DateTime.MinValue,
                DeletedDate   = null
            };
            var closets = message.closets.Select(x => new ClosetItemRecord()
            {
                ClosetItemId = x.id,
                Equipped     = true,
                OwnerId      = record.Id
            });

            try
            {
                Database.Insert(record);
                foreach (var closet in closets)
                {
                    Database.Insert(closet);
                }
            }
            catch
            {
                return(ErrorEnum.ERR_NOCREATE);
            }

            client.Character        = new Character(record);
            client.Character.Client = client;

            client.Account.LoadRecord();

            return(ErrorEnum.ERR_SUCCESS);
        }
Exemple #11
0
 public virtual void OnCreateCharacter(object sender, CreateCharacterMessage message)
 {
 }