//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);
    }
示例#2
0
    public bool DisconnectPlayer(int index)
    {
        bool yes = false;

        if (index >= 0 && playersData.Count > index)
        {
            AccountData acc = Networking_OnConnect.GetAccountData(playersData[index].sessionID);
            if (acc != null)
            {
                yes = true;
                //Remove rooms data at account data
                acc.indexInRoom = -1;
                acc.roomID      = -1;

                Message_Sr.DisconnectPlayer disc = new Message_Sr.DisconnectPlayer();
                disc.ID = playersData[index].sessionID;
                RoomsManager.SendReliableToRoom(Networking_msgType_Sr.DisconnectPlayer, disc, roomID);
                //Remove player weapon
                Player_MovePlayer controll = playersData[index].playerMoveScript;
                if (controll.weaponOnMe)
                {
                    RoomsManager.SendIntToAllRoom(Networking_msgType_Sr.RemoveItemOnScene, controll.weaponOnMe.index, roomID);
                    RemoveItem(controll.weaponOnMe.index);
                }
                //Remove player data
                Destroy(playersData[index].playerObj);
                playersData[index] = null;
                playerListNULLVALLUE.Add(index);
                playerNumber--;
            }
        }
        return(yes);
    }
    /// <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);
            }
        }
    }
    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);
            }
        }
    }
示例#5
0
        public IHttpActionResult DeleteRoom([FromUri] int id)
        {
            RoomsManager rm = new RoomsManager();

            rm.DeleteRoom(id);
            return(Ok());
        }
示例#6
0
        public static void Load(ReceivePacket p)
        {
            uint UniqueRoomId = p.readUD();
            int  gen2         = p.readD();
            int  slot         = (int)p.readC();
            int  num          = (int)p.readC();
            Room room         = RoomsManager.getRoom(UniqueRoomId, gen2);

            if (room == null)
            {
                return;
            }
            if (num == 0)
            {
                RoomsManager.RemoveRoom(UniqueRoomId);
            }
            else
            {
                Player player = room.getPlayer(slot, false);
                if (player != null)
                {
                    player.ResetAllInfos();
                }
            }
        }
示例#7
0
        public void Init(string version)
        {
            instance          = this;
            serializer        = new BinaryFormatterSerializer();
            objectPool        = new ObjectPool();
            provider          = new PhotonNetworkProvider();
            messenger         = new HoloNetMessenger();
            players           = new PlayersManager();
            objectsManager    = new NetObjectsManager();
            stateSynchronizer = new StateSynchronizer();
            tickSynchronizer  = new TickSynchronizer();
            rooms             = new RoomsManager();

            provider.Init(version);
            objectsManager.Init();
            stateSynchronizer.Init();
            tickSynchronizer.Init();

            messenger.Pause();
            tickSynchronizer.Pause();

            serializer.RegisterSerializationRule <Vector3>(new Vector3SerializationRule());
            serializer.RegisterSerializationRule <Quaternion>(new QuaternionSerializationRule());
            serializer.RegisterSerializationRule <HoloNetPlayer>(new HoloNetPlayerSerializationRule());
        }
示例#8
0
    public void destroy()
    {
        Vector2 pos = new Vector2(transform.position.x, transform.position.y);

        RoomsManager.removeRoom(nPos);
        Destroy(gameObject);
    }
示例#9
0
        private static void LoadPacket(byte[] buffer)
        {
            ReceivePacket p = new ReceivePacket(buffer);

            switch (p.readH())
            {
            case 1:
                RespawnSync.Load(p);
                break;

            case 2:
                RemovePlayerSync.Load(p);
                break;

            case 3:
                uint UniqueRoomId = p.readUD();
                int  gen2         = p.readD();
                int  num          = (int)p.readC();
                Room room         = RoomsManager.getRoom(UniqueRoomId, gen2);
                if (room != null)
                {
                    room._serverRound = num;
                }
                break;
            }
        }
示例#10
0
 public void Init(Camera camera, FirstPersonController controller)
 {
     this.camera       = camera;
     this.cameraFading = FadingManager.GetInstance();
     this.controller   = controller;
     roomsManager      = RoomsManager.GetManager();
 }
示例#11
0
文件: Room.cs 项目: ProjectsPZ/PB0.1
 public void ResetRoomInfo(int gen2)
 {
     for (int id = 0; id < 200; ++id)
     {
         this._objects[id] = new ObjectInfo(id);
     }
     this._mapId          = RoomsManager.getGenV(gen2, 1);
     this.stageType       = RoomsManager.getGenV(gen2, 2);
     this._sourceToMap    = -1;
     this.Map             = (MapModel)null;
     this.LastRound       = 0;
     this._dropCounter    = 0;
     this._isBotMode      = false;
     this._hasC4          = false;
     this._serverRound    = 0;
     this._objsSyncRound  = 0;
     this.LastObjsSync    = new DateTime();
     this.LastPlayersSync = new DateTime();
     this.BombPosition    = new Half3();
     if (!Config.isTestMode)
     {
         return;
     }
     Logger.warning("A room has been reseted by server.", false);
 }
    //If target death
    //if zombie respawn automaticly
    //If player block move and fire, wait click respawn
    void Death()
    {
        death = true;
        NetworkWriter wr = new NetworkWriter();

        wr.StartMessage(Networking_msgType_Sr.Death);
        wr.Write(index);
        wr.FinishMessage();
        RoomsManager.SendReliableAtRoom(wr, index);
        if (zombie)
        {
            coll.enabled = false;
            CancelInvoke();
            Invoke("Respawn", 20f);
            target.ZombieStopFollow(index);
            target          = null;
            nav.destination = transform.position;
            CalculateDropChance();
        }
        else
        {
            w    = false;
            s    = false;
            a    = false;
            d    = false;
            move = Vector3.zero;

            while (ZombieFollowMe.Count != 0)
            {
                RoomsManager.GetPlayerController(ZombieFollowMe[0]).FollowTargetDead();
                ZombieFollowMe.RemoveAt(0);
            }
        }
    }
 private void Start()
 {
     roomsManager = RoomsManager.GetManager();
     dispatcher   = Dispatcher.GetInstance();
     address      = dispatcher.GetFreeAddress();
     dispatcher.Subscribe(EBEventType.RoomSpawningTrigger, address, gameObject);
     dispatcher.Subscribe(EBEventType.ItemCollected, address, gameObject);
 }
 public BaseViewModel()
 {
     _classesManager  = new ClassesManager();
     _clientsManager  = new ClientsManager();
     _roomsManager    = new RoomsManager();
     _workersManager  = new WorkersManager();
     _workPlanManager = new WorkPlanManager();
 }
 public RoomsViewModel()
 {
     _roomsManager   = GetRoomsManager();
     AddRoomCommand  = new BaseCommand(AddRoom);
     EditRoomCommand = new BaseCommand(EditRoom);
     SaveCommand     = new BaseCommand(SaveChanges);
     CancelCommand   = new BaseCommand(Cancel);
 }
    //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();
    }
示例#17
0
 public virtual void StartReload()
 {
     reload = true;
     Message_Sr.Reload_Sr rel = new Message_Sr.Reload_Sr();
     rel.index      = shooterIndex;
     rel.reloadTime = reloadTime;
     RoomsManager.SendUnreliableToRoom(Networking_msgType_Sr.Reload, rel, roomID);
     Invoke("ReloadDone", reloadTime);
 }
示例#18
0
    public void loadTorches()
    {
        List <Vector3> torches = RoomsManager.getTorches(roomName);

        foreach (Vector3 torchPos in torches)
        {
            GameObject torch = Instantiate(torchPrefab);
            torch.transform.position = transform.position + torchPos;
        }
    }
示例#19
0
        public IHttpActionResult PostRoom([FromBody] RoomDto rc)
        {
            RoomsManager rm = new RoomsManager();

            IMapper iMapper     = AutomapperInitialize();
            var     source      = rc;
            var     destination = iMapper.Map <RoomDto, Room>(source);

            rm.CreateRoom(destination);
            return(Ok());
        }
    //Zombie start attack and block move
    public void ZombieAttack()
    {
        attack = true;
        NetworkWriter wr = new NetworkWriter();

        wr.StartMessage(Networking_msgType_Sr.ZombieAttack);
        wr.Write(index);
        wr.FinishMessage();
        RoomsManager.SendReliableAtRoom(wr, index);
        Invoke("ZombieAttackDone", 1.8f);
    }
示例#21
0
 public void Connect(RoomsManager <RoomEventType, IRoom, object> manager)
 {
     manager.RoomsChanger.OnAfterRoomOpened += (room) =>
     {
         manager.Hooks.Invoke(room, RoomEventType.OnOpen);
     };
     manager.RoomsChanger.OnBeforeRoomClosed += (room) =>
     {
         manager.Hooks.Invoke(room, RoomEventType.OnClosed);
     };
 }
示例#22
0
        private static void QueuePlayer(NetworkMessage data)
        {
            data.DecodeData();
            RoomsManager.EnqueuePlayer(new PlayerInfoModel
            {
                PlayerID = data.senderID,
                Name     = data.data.ToString(),
            });

            Interface.Log(string.Format("Player {0}:{1} queued!", data.data, data.senderID));
        }
    /// <summary>
    /// Player drop weapon if he have him
    /// </summary>
    public void DropWeapon()
    {
        if (weaponOnMe)
        {
            weaponOnMe.DropWeapon(true);

            Message_Sr.DropWeapon_Sr dropped = new Message_Sr.DropWeapon_Sr();
            dropped.index = index;
            RoomsManager.SendReliableAtRoom(Networking_msgType_Sr.DropWeapon, dropped, index);
        }
    }
 //Sync move target
 void SyncMove()
 {
     Message_Sr.PlayerGoTo_Sr run = new Message_Sr.PlayerGoTo_Sr();
     run.index   = index;
     run.sendVec = transform.position;
     run.rotate  = transform.rotation;
     RoomsManager.SendReliableAtRoom(Networking_msgType_Sr.PlayerMove, run, index);
     if (syncMove)
     {
         Invoke("SyncMove", syncTime);
     }
 }
示例#25
0
    void SyncPosition()
    {
        NetworkWriter wr = new NetworkWriter();

        wr.StartMessage(Networking_msgType_Sr.ItemPositionUpdate);
        wr.Write(index);
        wr.Write(transform.position);
        wr.Write(transform.rotation);
        wr.FinishMessage();
        RoomsManager.SendUnreliableToRoom(wr, roomID);
        Invoke("SyncPosition", syncTime);
    }
 void Start()
 {
     roomsManager = RoomsManager.GetManager();
     roomsManager.RegisterRoomEntry(this);
     itemsManager = ItemsManager.GetInstance();
     door         = GetComponentInChildren <Door>();
     dispatcher   = Dispatcher.GetInstance();
     address      = dispatcher.GetFreeAddress();
     dispatcher.Subscribe(EBEventType.RoomSpawningTrigger, address, gameObject);
     dispatcher.Subscribe(EBEventType.DoorClosingTrigger, address, gameObject);
     dispatcher.Subscribe(EBEventType.HallMovingTriggerEntered, address, gameObject);
 }
 public static void SendTopList(NetworkMessage netMsg)
 {
     Message_Sr.PlayerAction act = netMsg.ReadMessage <Message_Sr.PlayerAction>();
     if (Networking_OnConnect.AccountVerefication(act.index, act.log, act.pass))
     {
         NetworkConnection con = RoomsManager.GetPlayerConnection(act.index);
         if (con != null)
         {
             con.SendWriter(top, 1);
         }
     }
 }
示例#28
0
    // Start is called before the first frame update
    void Start()
    {
        roomsManager = GameObject.FindGameObjectWithTag("RoomsManager").GetComponent <RoomsManager>();

        itemLocalPositions      = new Dictionary <int, Vector3>();
        itemGridPositions       = new Dictionary <Vector2, int>();
        itemObjects             = new Dictionary <int, GameObject>();
        selectedGridPosition    = Vector2.zero;
        targetPosition          = inactivePosition;
        itemLocalPositionAnchor = new Vector3(-1, 3, -2); //position of the first item

        //Debug.Log(Object.ReferenceEquals(items[0] , items[1]));
    }
示例#29
0
    // Start is called before the first frame update
    void Start()
    {
        roomsManager = GameObject.FindGameObjectWithTag("RoomsManager").GetComponent <RoomsManager>();

        if (roomsManager.returnMode)
        {
            Instantiate(plant1, transform);
        }
        else
        {
            Instantiate(plant2, transform);
        }
    }
 void OnDisconnect(NetworkMessage netmsg)
 {
     try
     {
         RoomsManager.Disconnect(netmsg.conn.connectionId);
         netmsg.conn.Disconnect();
         Debug.Log("Disconnection successful " + netmsg.conn);
     }
     catch
     {
         Debug.Log("Disconnection fail " + netmsg.conn);
     }
 }