//If target respawn
    //If zombie respawn on random position on map
    //If player respawn on player layer on map
    public void Respawn()
    {
        death = false;
        if (zombie)
        {
            coll.enabled = true;
            do
            {
                Vect = new Vector3(Random.Range(0, 100), transform.position.y, Random.Range(0, 100));
            }while (Vect.x < 20f || Vect.z < 20f);
            nav.Warp(Vect);
        }
        else
        {
            do
            {
                Vect = new Vector3(Random.Range(1, 10), transform.position.y, Random.Range(1, 10));
            }while (Vect.x > 10f || Vect.z > 10f);
            transform.position = Vect;
        }
        transform.rotation = Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up);
        Data_PlayerFile_Sr d = RoomsManager.GetPlayerData(index);

        d.SetHP(d.HPMax);
        NetworkWriter wr = new NetworkWriter();

        wr.StartMessage(Networking_msgType_Sr.Respawn);
        wr.Write(index);
        wr.Write(transform.position);
        wr.Write(transform.rotation);
        wr.FinishMessage();
        RoomsManager.SendReliableAtRoom(wr, index);
    }
    /// <summary>
    /// Damage zombie
    /// </summary>
    /// <param name="damage">damage</param>
    /// <param name="indexPlayer">player index</param>
    public void ZombieDamage(int damage, int indexPlayer)
    {
        //Take damage
        Data_PlayerFile_Sr zm = RoomsManager.GetPlayerData(index);

        zm.Damage(damage);
        //If zombie not have target follow the attacking
        if (target == null)
        {
            Player_MovePlayer player = RoomsManager.GetPlayerController(indexPlayer);
            if (player)
            {
                target = player;
                player.AddFollowZombie(index);
            }
        }
        //If zombie death
        if (zm.HP <= 0)
        {
            Death();
            string zmName = RoomsManager.GetPlayerData(index).nick;
            if (!string.IsNullOrEmpty(zmName))
            {
                SQL_SavePlayerData.Kill(indexPlayer, zmName);
            }
        }
    }
    public static List <Data_PlayerFile_Sr> CharDataGet(string AccId)
    {
        List <Data_PlayerFile_Sr> list = new List <Data_PlayerFile_Sr>();

        Linq.CommandText = "SELECT PlayerName, scene_ID, MaxHP, PlayerScores FROM charecter WHERE account_id = '" + AccId + "'";
        MySqlDataReader Reader = Linq.ExecuteReader();

        try {
            while (Reader.Read())
            {
                int i = 0;
                player              = ScriptableObject.CreateInstance <Data_PlayerFile_Sr> ();
                player.nick         = Reader.GetString(i++);
                player.sceneID      = int.Parse(Reader.GetString(i++));
                player.HPMax        = int.Parse(Reader.GetString(i++));
                player.PlayerScores = int.Parse(Reader.GetString(i++));

                list.Add(player);
            }
            Reader.Close();
        } catch (MySqlException ex) {
            Reader.Close();
            Debug.Log(ex.ErrorCode + ex.Message);
        }

        return(list);
    }
    void CalculateDropChance()
    {
        Data_PlayerFile_Sr zombie = RoomsManager.GetPlayerData(index);
        int dropID = 0;

        if (zombie.HPMax >= 100)
        {
            dropID = 2;
            if (zombie.HPMax >= 200)
            {
                dropID = Random.Range(2, 3);
            }
            if (zombie.HPMax >= 300)
            {
                dropID = Random.Range(3, 4);
            }

            float chance = zombie.HPMax * zombie.attackPower / (float)dropID / 1000;

            Random.seed = (int)Time.time;
            float var1 = Random.value;
            Random.seed = (int)Time.time * Random.Range(3, 7);
            float var2 = Random.value;

            if (Mathf.Abs(var1 - var2) < chance)
            {
                AccountData acc = Networking_OnConnect.GetAccountData(index);

                Player_Weapon_Sr weap = RoomsManager.InstantiateWeapon((weaponType_Sr)dropID, transform.position, acc.roomID);
                weap.DropWeapon(true);
            }
        }
    }
    //Save player kills and rang to DB
    public static void Kill(int sessionID, string zombie)
    {
        Data_PlayerFile_Sr player = RoomsManager.GetPlayerData(sessionID);

        if ("strongzombie" == zombie)
        {
            player.zombieStrong++;
        }
        else if ("mutantzombie" == zombie)
        {
            player.zombieMutant++;
        }
        else if ("zombie" == zombie || "sickzombie" == zombie || "policezombie" == zombie)
        {
            player.zombie++;
        }

        player.PlayerScores = player.zombie + (player.zombieMutant * 2) + (player.zombieStrong * 3);

        if (player.rang != 11)
        {
            int rang = CheckRang(player.PlayerScores);

            if (rang > player.rang)
            {
                player.rang = rang;
                NetworkWriter wr = new NetworkWriter();
                wr.StartMessage(Networking_msgType_Sr.Rang);
                wr.Write(sessionID);
                wr.Write(player.rang);
                wr.FinishMessage();
                RoomsManager.SendReliableAtRoom(wr, sessionID);

                string title = SetTitle(player.rang);
                if (!string.IsNullOrEmpty(title))
                {
                    player.title = title;
                    wr           = new NetworkWriter();
                    wr.StartMessage(Networking_msgType_Sr.Title);
                    wr.Write(sessionID);
                    wr.Write(title);
                    wr.FinishMessage();
                    RoomsManager.SendReliableAtRoom(wr, sessionID);
                }
            }
        }

        Linq.CommandText = string.Format("UPDATE charecter SET zombie = '{0}', zombie_mutant = '{1}', zombie_strong = '{2}', PlayerScores = '{3}', rang = '{4}', title = '{5}' WHERE PlayerName = '{6}'", player.zombie, player.zombieMutant, player.zombieStrong, player.PlayerScores, player.rang, player.title, player.nick);
        MySqlDataReader Reader = Linq.ExecuteReader();

        try {
            Reader.Read();
            Reader.Close();
        } catch (MySqlException ex) {
            Debug.Log(ex.ErrorCode + ex.Message);
        }
        Reader.Close();
    }
    public static void PlayerConnectToRoom(int roomID, Data_PlayerFile_Sr data, GameObject obj)
    {
        Room room = GetRoom(roomID);

        if (room)
        {
            room.WritePlayer(data.sessionID, data, obj);
        }
    }
    //If a player has selected a character check his data and send him to his character data
    static public void HandlerJoinToRoom(NetworkMessage netmsg)
    {
        Message_Sr.PlayerJoinToRoom_Sr join = netmsg.ReadMessage <Message_Sr.PlayerJoinToRoom_Sr>();
        if (Networking_OnConnect.AccountVerefication(join.sessionID, join.Login, join.Password))
        {
            Data_PlayerFile_Sr player = SQL_PlayerVerefy.CheckLP(join.Login, join.Password, join.playerNick);
            if (player)
            {
                AccountData acc = Networking_OnConnect.GetAccountData(join.sessionID);

                if (acc != null)
                {
                    if (acc.roomID == -1 && acc.indexInRoom == -1)
                    {
                        player.sessionID = join.sessionID;

                        Room room = GetRoom(join.roomID);
                        if (room)
                        {
                            bool connect = true;
                            if (room.password)
                            {
                                if (!room.CheckPassword(join.roomPassword))
                                {
                                    connect = false;
                                    Message_Sr.PlayerJoinToRoom_Sr error = new Message_Sr.PlayerJoinToRoom_Sr();
                                    error.errorMsg = "Password not correct";
                                    netmsg.conn.Send(Networking_msgType_Sr.JoinToRoom, error);
                                }
                            }
                            if (room.maxPlayerNumber == room.playerNumber)
                            {
                                connect = false;
                                Message_Sr.PlayerJoinToRoom_Sr error = new Message_Sr.PlayerJoinToRoom_Sr();
                                error.errorMsg = "Room have maximum players number";
                                netmsg.conn.Send(Networking_msgType_Sr.JoinToRoom, error);
                            }
                            if (connect)
                            {
                                SendRoomInstantiate(room.roomID, join.sessionID);
                                PlayerLoad(netmsg.conn, player, join.roomID);
                                Networking_PlayerListSend.OnPlayerList(netmsg.conn, join.roomID);
                                Networking_PlayerListSend.SendItems(netmsg.conn, join.sessionID);
                            }
                        }
                    }
                }
            }
            else
            {
                Disconnect(netmsg.conn.connectionId);
            }
        }
    }
Exemple #8
0
    public Data_PlayerFile_Sr GetPlayerData(int index)
    {
        Data_PlayerFile_Sr d = null;

        if (index >= 0 && playersData.Count > index)
        {
            if (playersData[index] != null)
            {
                d = playersData[index].playerData;
            }
        }
        return(d);
    }
    public static void HandlerReady(NetworkMessage netmsg)
    {
        Message_Sr.PlayerSetReady ready = netmsg.ReadMessage <Message_Sr.PlayerSetReady>();
        if (Networking_OnConnect.AccountVerefication(ready.id, ready.log, ready.pass))
        {
            Data_PlayerFile_Sr data = GetPlayerData(ready.id);

            if (data)
            {
                data.PlayerReady = true;
                data.SetHP(data.HPMax);
            }
        }
    }
Exemple #10
0
    //Check player data, if data confirm, send player data and return true
    static public Data_PlayerFile_Sr CheckLP(string login, string password, string nick)
    {
        Data_PlayerFile_Sr check = null;

        Linq.CommandText = "SELECT id, AccountName, PasswordAc FROM accountlist WHERE AccountName='" + login + "' AND PasswordAc='" + password + "'";
        MySqlDataReader Reader = Linq.ExecuteReader();

        try {
            Reader.Read();
            AcId = Reader.GetString(0);
            Reader.Close();

            Linq.CommandText = "SELECT PlayerName, scene_ID, MaxHP, PlayerScores, x, y, z, zombie, zombie_mutant, zombie_strong, title, rang FROM charecter WHERE account_id='" + AcId + "' AND PlayerName='" + nick + "'";
            MySqlDataReader Reader2 = Linq.ExecuteReader();
            try {
                Reader2.Read();
                int i = 0;
                playername          = Reader2.GetString(i++);
                sceneID             = int.Parse(Reader2.GetString(i++));
                player              = ScriptableObject.CreateInstance <Data_PlayerFile_Sr> ();
                player.login        = login;
                player.password     = password;
                player.nick         = playername;
                player.sceneID      = sceneID;
                player.HPMax        = int.Parse(Reader2.GetString(i++));
                player.PlayerScores = int.Parse(Reader2.GetString(i++));
                float x = float.Parse(Reader2.GetString(i++));
                float y = float.Parse(Reader2.GetString(i++));
                float z = float.Parse(Reader2.GetString(i++));
                player.zombie       = int.Parse(Reader2.GetString(i++));
                player.zombieMutant = int.Parse(Reader2.GetString(i++));
                player.zombieStrong = int.Parse(Reader2.GetString(i++));
                player.title        = Reader2.GetString(i++);
                player.rang         = int.Parse(Reader2.GetString(i++));
                player.position.Set(x, y, z);
                Reader2.Close();
                check = player;
            } catch (MySqlException ex) {
                Debug.Log(ex.ErrorCode + ex.Message);
            }
            Reader2.Close();
        } catch (MySqlException ex) {
            Debug.Log(ex.ErrorCode + ex.Message);
        }

        Reader.Close();
        return(check);
    }
 //Zombie attack done and can move
 void ZombieAttackDone()
 {
     if (target != null)
     {
         Player_MovePlayer targ = target.GetComponent <Player_MovePlayer>();
         if (targ != null)
         {
             Data_PlayerFile_Sr data = RoomsManager.GetPlayerData(targ.index);
             data.Damage(RoomsManager.GetPlayerData(index).attackPower);
             if (data.HP <= 0)
             {
                 targ.Death();
             }
         }
     }
     attack = false;
 }
    public static void HandlerCreateRoom(NetworkMessage netmsg)
    {
        Message_Sr.PlayerCreateRoom_Sr create = netmsg.ReadMessage <Message_Sr.PlayerCreateRoom_Sr>();
        if (Networking_OnConnect.AccountVerefication(create.sessionID, create.Login, create.Password))
        {
            Data_PlayerFile_Sr player = SQL_PlayerVerefy.CheckLP(create.Login, create.Password, create.playerNick);
            if (player)
            {
                AccountData acc = Networking_OnConnect.GetAccountData(create.sessionID);

                if (acc != null)
                {
                    if (acc.roomID == -1 && acc.indexInRoom == -1)
                    {
                        if (create.roomName.Length >= 5)
                        {
                            player.sessionID = create.sessionID;
                            int roomID = -1;

                            if (create.pass && !string.IsNullOrEmpty(create.roomPassword) && create.roomPassword.Length >= 4)
                            {
                                roomID = CreateRoom(create.roomName, create.mapID, create.roomPassword);
                            }
                            else if (!create.pass)
                            {
                                roomID = CreateRoom(create.roomName, create.mapID);
                            }

                            if (roomID != -1)
                            {
                                SendRoomInstantiate(roomID, create.sessionID);
                                PlayerLoad(netmsg.conn, player, roomID);
                                Networking_PlayerListSend.OnPlayerList(netmsg.conn, roomID);
                                Networking_PlayerListSend.SendItems(netmsg.conn, create.sessionID);
                            }
                        }
                    }
                }
            }
            else
            {
                Disconnect(netmsg.conn.connectionId);
            }
        }
    }
    public static Data_PlayerFile_Sr GetPlayerData(int sessionID)
    {
        Data_PlayerFile_Sr data = null;

        AccountData acc = Networking_OnConnect.GetAccountData(sessionID);

        if (acc != null)
        {
            if (acc.roomID != -1 && acc.indexInRoom != -1)
            {
                Room room = GetRoom(acc.roomID);
                if (room)
                {
                    data = room.GetPlayerData(acc.indexInRoom);
                }
            }
        }

        return(data);
    }
Exemple #14
0
    public void WritePlayer(int sessionID, Data_PlayerFile_Sr player, GameObject obj)
    {
        AccountData acc = Networking_OnConnect.GetAccountData(sessionID);

        if (acc != null)
        {
            PlayerData data = new PlayerData();
            data.playerData       = player;
            data.playerObj        = obj;
            data.playerMoveScript = obj.GetComponent <Player_MovePlayer>();
            data.sessionID        = sessionID;

            int indexInRoom = -1;
            if (playerListNULLVALLUE.Count > 0)
            {
                indexInRoom = playerListNULLVALLUE[0];
                playerListNULLVALLUE.RemoveAt(0);

                player.sessionID            = sessionID;
                data.playerMoveScript.index = sessionID;
                playersData[indexInRoom]    = data;

                acc.indexInRoom = indexInRoom;
                acc.roomID      = roomID;
            }
            else
            {
                indexInRoom = playersData.Count;

                player.sessionID            = sessionID;
                data.playerMoveScript.index = sessionID;
                playersData.Add(data);

                acc.indexInRoom = indexInRoom;
                acc.roomID      = roomID;
            }

            playerNumber++;
        }
    }
    //Add new player on map
    static void PlayerLoad(NetworkConnection con, Data_PlayerFile_Sr data, int roomID)
    {
        Room room = GetRoom(roomID);

        if (room)
        {
            GameObject go = (GameObject)Instantiate((GameObject)Resources.Load("Player"), room.spawnPosition, Quaternion.identity);
            go.name = data.nick;
            Player_MovePlayer move = go.GetComponent <Player_MovePlayer>();
            move.playerCon = con;
            PlayerConnectToRoom(roomID, data, go);

            Message_Sr.NewPlayerOnScene_Sr newPL = new Message_Sr.NewPlayerOnScene_Sr();
            newPL.player = GetPlayerData(data.sessionID);
            SendReliableToRoom(Networking_msgType_Sr.NewPlayerConnnectOnScene, newPL, roomID);

            Player_Weapon_Sr weap = InstantiateWeapon(weaponType_Sr.GaussGun, roomID);
            if (weap)
            {
                weap.TakeWeapon(move.weapon, data.sessionID);
            }
        }
    }
Exemple #16
0
    public void SpawnMob()
    {
        spawnPosition = new Vector3(5, transform.position.y, 5);

        GameObject obj  = (GameObject)Resources.Load("Zombie");
        Vector3    vect = Vector3.zero;

        float Hight = Random.Range(0.1f, 0.15f);
        float Midle = Random.Range(0.15f, 0.25f);
        float Low   = 1 - (Hight + Midle);

        //check zombie number, if more than maximum players in room
        if (zombieNumber >= maxPlayerNumber)
        {
            zombieNumber = maxPlayerNumber - 2;
        }

        if (zombieNumber >= 3)
        {
            int zombieLow   = Mathf.FloorToInt((float)zombieNumber * Low);
            int zombieMidle = Mathf.FloorToInt((float)zombieNumber * Midle);
            int zombieHight = Mathf.FloorToInt((float)zombieNumber * Hight);

            int sessionID = -1;
            for (int i = 0; i < zombieLow; i++)
            {
                do
                {
                    vect = new Vector3(Random.Range(0, 100), transform.position.y, Random.Range(0, 100));
                }while (vect.x < 20f || vect.z < 20f);
                GameObject         Zombie = (GameObject)Instantiate(obj, vect, Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up));
                Data_PlayerFile_Sr data   = ScriptableObject.CreateInstance <Data_PlayerFile_Sr>();
                data.HPMax = Random.Range(60, 110);
                data.SetHP(data.HPMax);
                switch (Random.Range(1, 3))
                {
                case 1:
                    data.nick = "zombie";
                    break;

                case 2:
                    data.nick = "sickzombie";
                    break;

                case 3:
                    data.nick = "policezombie";
                    break;
                }
                data.PlayerReady = true;
                data.attackPower = Random.Range(10, 17);
                Zombie.GetComponent <Player_MovePlayer>().zombie = true;

                sessionID = Networking_OnConnect.BotAdd(roomID, playersData.Count);
                WritePlayer(sessionID, data, Zombie);
            }

            for (int i = 0; i < zombieMidle; i++)
            {
                do
                {
                    vect = new Vector3(Random.Range(0, 100), transform.position.y, Random.Range(0, 100));
                }while (vect.x < 20f || vect.z < 20f);
                GameObject         Zombie = (GameObject)Instantiate(obj, vect, Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up));
                Data_PlayerFile_Sr data   = ScriptableObject.CreateInstance <Data_PlayerFile_Sr>();
                data.HPMax = Random.Range(180, 250);
                data.SetHP(data.HPMax);
                data.nick        = "mutantzombie";
                data.PlayerReady = true;
                data.attackPower = Random.Range(20, 30);
                Zombie.GetComponent <Player_MovePlayer>().zombie = true;

                sessionID = Networking_OnConnect.BotAdd(roomID, playersData.Count);
                WritePlayer(sessionID, data, Zombie);
            }

            for (int i = 0; i < zombieHight; i++)
            {
                do
                {
                    vect = new Vector3(Random.Range(0, 100), transform.position.y, Random.Range(0, 100));
                }while (vect.x < 20f || vect.z < 20f);
                GameObject         Zombie = (GameObject)Instantiate(obj, vect, Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up));
                Data_PlayerFile_Sr data   = ScriptableObject.CreateInstance <Data_PlayerFile_Sr>();
                data.HPMax = Random.Range(300, 400);
                data.SetHP(data.HPMax);
                data.nick        = "strongzombie";
                data.PlayerReady = true;
                data.attackPower = Random.Range(36, 48);
                Zombie.GetComponent <Player_MovePlayer>().zombie = true;

                sessionID = Networking_OnConnect.BotAdd(roomID, playersData.Count);
                WritePlayer(sessionID, data, Zombie);
            }
        }
    }
    public static void OnPlayerList(NetworkConnection con, int roomID)
    {
        Room room = GetRoom(roomID);

        if (room)
        {
            playersSend  = packetPlayer;
            playersSends = 0;
            if (room.playersData.Count == 1)
            {
                NetworkWriter writer = new NetworkWriter();
                writer.StartMessage(Networking_msgType_Sr.PlayerList);
                writer.Write(playersSends);
                writer.FinishMessage();
                con.SendWriter(writer, 0);
            }

            while (!allPlayers)
            {
                if (playersSends != room.playerListCount)
                {
                    lastPlayer = room.playerListCount - playersSends;

                    NetworkWriter writer = new NetworkWriter();
                    writer.StartMessage(Networking_msgType_Sr.PlayerList);

                    if (lastPlayer < playersSend)
                    {
                        allPlayers  = true;
                        playersSend = lastPlayer;
                        writer.Write(playersSend);
                    }
                    else
                    {
                        writer.Write(playersSend);
                    }
                    for (int k = 0; k < playersSend; k++)
                    {
                        Data_PlayerFile_Sr data = room.GetPlayerData(playersSends);
                        if (data)
                        {
                            writer.Write(true);
                            writer.Write(data.sceneID);
                            writer.Write(data.sessionID);
                            writer.Write(data.rang);
                            writer.Write(data.nick);
                            writer.Write(data.title);
                            writer.Write(room.playersData[playersSends].playerObj.transform.position);
                            writer.Write(room.playersData[playersSends].playerObj.transform.rotation);
                            writer.Write(room.playersData[playersSends].playerMoveScript.death);
                        }
                        else
                        {
                            writer.Write(false);
                        }
                        playersSends++;
                    }
                    writer.FinishMessage();
                    con.SendWriter(writer, 0);
                }
                else
                {
                    allPlayers = true;
                }
            }
            allPlayers = false;
        }
    }