private void Actor_Spawn(object sender, SpawnEventArgs e)
 {
     Actor spawnedActor = (Actor)sender;
     ActionList actionList = new ActionList(spawnedActor);
     actionLists.Add(actionList);
     actors.Add(spawnedActor);
 }
 private void Prop_Spawn(object sender, SpawnEventArgs e)
 {
     Prop spawnedProp = (Prop)sender;
     Point spawnPoint = new Point(e.spawnTile.X * world.tileSize, e.spawnTile.Y * world.tileSize);
     spawnedProp.setPos(spawnPoint);
     props.Add(spawnedProp);
 }
        private void Mission_PlayerSpawned(object sender, SpawnEventArgs e)
        {
            if (!(sender is Player player))
            {
                return;
            }

            switch (player.PlayerClass)
            {
            case PlayerClassType.TruckDriver:
            case PlayerClassType.BusDriver:
            case PlayerClassType.Pilot:
                player.MissionTextDraw.Text = Messages.NoMissionText;
                break;

            case PlayerClassType.Police:
                player.MissionTextDraw.Text = Messages.NoMissionTextPolice;
                break;

            case PlayerClassType.Mafia:
                player.MissionTextDraw.Text = Messages.NoMissionTextMafia;
                break;

            case PlayerClassType.Assistance:
                player.MissionTextDraw.Text = Messages.NoMissionTextAssistance;
                break;
            }

            player.MissionTextDraw.Show();
        }
예제 #4
0
    protected override void OnEvent(object obj)
    {
        SpawnEventArgs args = obj as SpawnEventArgs;

        if (null == args)
        {
            Debug.LogWarning("OnEvent : 이 메시지가 호출되면 인자로 잘못된 값을 보낸것입니다.");
            return;
        }

        switch (args.eventType)
        {
        case eEvent.AllSpawned:
        {
            // 다음 그룹의 스폰이 끝났다면, 못돌아가도록 막기
            if (args.sender == nextGroup)
            {
                //Close();
                //Invoke("Close", 0.2f);
            }
        }
        break;

        case eEvent.AllDead:
        case eEvent.OpenDoor:
        {
            // 전 그룹의 객체가 다 죽었다면 벽을 없애준다.
            if (args.sender == prevGroup)
            {
                Open();
            }
        }
        break;
        }
    }
예제 #5
0
        public override void OnSpawned(SpawnEventArgs e)
        {
            VirtualWorld = 0;
            Interior     = 0;
            ToggleClock(false);

            if (PlayerClass != PlayerClassType.Police)
            {
                ResetWeapons();
            }

            if (Account.RulesRead == 0)
            {
                SendClientMessage(Color.Red, Messages.RulesNotYetAccepted);
            }

            if (!IsSpectating)
            {
                return;
            }

            Position = SpectatePosition;

            SpectatePosition = Vector3.Zero;
            IsSpectating     = false;

            base.OnSpawned(e);
        }
 private void SecondaryWeapon_OnSpawning(object sender, SpawnEventArgs e)
 {
     if (OnSpawning != null)
     {
         OnSpawning(this, e);
     }
 }
예제 #7
0
    /// <summary>
    /// Server-side only. For use when a player has only joined (as a JoinedViewer) and
    /// is not in control of any mobs. Spawns the joined viewer as the indicated occupation and transfers control to it.
    /// Note that this doesn't take into account game mode or antags, it just spawns whatever is requested.
    /// </summary>
    /// <param name="joinedViewer">viewer who should control the player</param>
    /// <param name="occupation">occupation to spawn as</param>
    /// <param name="characterSettings">settings to use for the character</param>
    /// <returns>the game object of the spawned player</returns>
    public static GameObject ServerSpawnPlayer(JoinedViewer joinedViewer, Occupation occupation, CharacterSettings characterSettings)
    {
        NetworkConnection conn = joinedViewer.connectionToClient;

        // TODO: add a nice cutscene/animation for the respawn transition
        var newPlayer = ServerSpawnInternal(conn, occupation, characterSettings, null);

        if (newPlayer)
        {
            if (occupation.JobType != JobType.SYNDICATE &&
                occupation.JobType != JobType.AI)
            {
                SecurityRecordsManager.Instance.AddRecord(newPlayer.GetComponent <PlayerScript>(), occupation.JobType);
            }
        }

        if (SpawnEvent != null)
        {
            SpawnEventArgs args = new SpawnEventArgs()
            {
                player = newPlayer
            };
            SpawnEvent.Invoke(null, args);
        }

        return(newPlayer);
    }
예제 #8
0
    /// <summary>
    /// Server-side only. For use when a player has only joined (as a JoinedViewer) and
    /// is not in control of any mobs. Spawns the joined viewer as the indicated occupation and transfers control to it.
    /// Note that this doesn't take into account game mode or antags, it just spawns whatever is requested.
    /// </summary>
    /// <param name="request">holds the request data</param>
    /// <param name="joinedViewer">viewer who should control the player</param>
    /// <param name="occupation">occupation to spawn as</param>
    /// <param name="characterSettings">settings to use for the character</param>
    /// <returns>the game object of the spawned player</returns>
    public static GameObject ServerSpawnPlayer(PlayerSpawnRequest request, JoinedViewer joinedViewer, Occupation occupation, CharacterSettings characterSettings, bool showBanner = true)
    {
        if (ValidateCharacter(request) == false)
        {
            return(null);
        }

        NetworkConnection conn = joinedViewer.connectionToClient;

        // TODO: add a nice cutscene/animation for the respawn transition
        var newPlayer = ServerSpawnInternal(conn, occupation, characterSettings, null, showBanner: showBanner);

        if (newPlayer != null && occupation.IsCrewmember)
        {
            CrewManifestManager.Instance.AddMember(newPlayer.GetComponent <PlayerScript>(), occupation.JobType);
        }

        if (SpawnEvent != null)
        {
            SpawnEventArgs args = new SpawnEventArgs()
            {
                player = newPlayer
            };
            SpawnEvent.Invoke(null, args);
        }

        return(newPlayer);
    }
예제 #9
0
        protected override void OnPlayerSpawned(BasePlayer player, SpawnEventArgs e)
        {
            base.OnPlayerSpawned(player, e);

            player.SetPositionFindZ(new Vector3(1626.472045f, -1682.130859f, 13.375000f));

            Console.WriteLine($"{player.Name} has spawned.");
        }
예제 #10
0
        internal bool OnPlayerSpawn(int playerid)
        {
            var args = new SpawnEventArgs();

            OnPlayerSpawned(BasePlayer.FindOrCreate(playerid), args);

            return(!args.ReturnToClassSelection);
        }
        private void Actor_Spawn(object sender, SpawnEventArgs e)
        {
            Actor      spawnedActor = (Actor)sender;
            ActionList actionList   = new ActionList(spawnedActor);

            actionLists.Add(actionList);
            actors.Add(spawnedActor);
        }
예제 #12
0
 private void PlayerOnSpawned(object?sender, SpawnEventArgs e)
 {
     if (_player.LoggedIn == false)
     {
         _player.SendClientMessage(Color.Red, "Zostałeś wyrzucony z serwera za nielegalny spawn.");
         _player.Kick();
     }
 }
예제 #13
0
 protected override void OnPlayerSpawned(BasePlayer player, SpawnEventArgs e)
 {
     player.Position = new Vector3(40, 0, 5);
     player.GiveWeapon(Weapon.AK47, 50);
     player.Health = 76;
     player.Armour = 156;
     base.OnPlayerSpawned(player, e);
 }
 private void Actor_Spawn(object sender, SpawnEventArgs e)
 {
     Actor spawnedActor = (Actor)sender;
     Point spawnPoint = new Point(e.spawnTile.X * world.tileSize, e.spawnTile.Y * world.tileSize);
     spawnedActor.setPos(spawnPoint);
     actors.Add(spawnedActor);
     
 }
        private void Actor_Spawn(object sender, SpawnEventArgs e)
        {
            Actor spawnedActor = (Actor)sender;
            Point spawnPoint   = new Point(e.spawnTile.X * world.tileSize, e.spawnTile.Y * world.tileSize);

            spawnedActor.setPos(spawnPoint);
            actors.Add(spawnedActor);
        }
        private void Prop_Spawn(object sender, SpawnEventArgs e)
        {
            Prop  spawnedProp = (Prop)sender;
            Point spawnPoint  = new Point(e.spawnTile.X * world.tileSize, e.spawnTile.Y * world.tileSize);

            spawnedProp.setPos(spawnPoint);
            props.Add(spawnedProp);
        }
 private void Actor_Spawn(Object sender, SpawnEventArgs e)
 {
     Actor spawnedActor = (Actor)sender;
     ActionList actionList = new ActionList(spawnedActor);
     actionLists[spawnedActor] = actionList;
     actors.Add(spawnedActor);
     Idle idle = new Idle(actionLists[spawnedActor], spawnedActor);
     actionLists[spawnedActor].pushFront(idle);
     spawnedActor.id = actors.IndexOf(spawnedActor);
 }
예제 #18
0
        private void Class_PlayerSpawned(object sender, SpawnEventArgs e)
        {
            if (!(sender is Player player))
            {
                return;
            }

            switch (player.PlayerClass)
            {
            case PlayerClassType.TruckDriver:
                player.Color = PlayerClassColor.TruckerColor;
                break;

            case PlayerClassType.BusDriver:
                player.Color = PlayerClassColor.BusDriverColor;
                break;

            case PlayerClassType.Pilot:
                player.Color = PlayerClassColor.PilotColor;
                break;

            case PlayerClassType.Police:
                player.Color = PlayerClassColor.PoliceColor;

                player.CheckTimer?.Dispose();
                player.CheckTimer       = new Timer(TimeSpan.FromSeconds(1), true);
                player.CheckTimer.Tick += (senderObject, ev) => PoliceController.PoliceCheckTimer_Tick(senderObject, ev, player);

                if (Configuration.Instance.CanPoliceHaveWeapons)
                {
                    foreach (var weapon in Configuration.PoliceWeapons)
                    {
                        player.GiveWeapon(weapon, Configuration.Instance.PoliceWeaponsAmmo);
                    }
                }
                break;

            case PlayerClassType.Mafia:
                player.Color = PlayerClassColor.MafiaColor;

                player.CheckTimer?.Dispose();
                player.CheckTimer       = new Timer(TimeSpan.FromSeconds(1), true);
                player.CheckTimer.Tick += (senderObject, ev) => MafiaController.MafiaCheckTimer_Tick(senderObject, ev, player);
                break;

            case PlayerClassType.Assistance:
                player.Color = PlayerClassColor.AssistanceColor;

                player.CheckTimer?.Dispose();
                player.CheckTimer       = new Timer(TimeSpan.FromSeconds(1), true);
                player.CheckTimer.Tick += (senderObject, ev) => AssistanceController.AssistanceCheckTimer_Tick(senderObject, ev, player);
                break;
            }
        }
예제 #19
0
        protected override void OnPlayerSpawned(BasePlayer player, SpawnEventArgs e)
        {
            base.OnPlayerSpawned(player, e);

            PlayerData data = PlayerManager.Instance.GetPlayerData(player.Name);

            if (!data.Authorized)
            {
                player.Kick();
            }
        }
예제 #20
0
        private void Actor_Spawn(Object sender, SpawnEventArgs e)
        {
            Actor      spawnedActor = (Actor)sender;
            ActionList actionList   = new ActionList(spawnedActor);

            actionLists[spawnedActor] = actionList;
            actors.Add(spawnedActor);
            Idle idle = new Idle(actionLists[spawnedActor], spawnedActor);

            actionLists[spawnedActor].pushFront(idle);
            spawnedActor.id = actors.IndexOf(spawnedActor);
        }
예제 #21
0
    protected override void OnPlayerSpawned(BasePlayer sender, SpawnEventArgs e)
    {
        base.OnPlayerSpawned(sender, e);
        var player = sender as Player;

        if (player.PlayerTeam == null || CurrentMap.IsLoading)
        {
            player.SetForceClass();
            return;
        }
        player.Health = 100;
        if (player.Armour == 0)
        {
            player.TArmour.Hide();
        }
        else
        {
            player.TArmour.Show();
        }
        foreach (Gun gun in player.ListGuns)
        {
            player.GiveWeapon(gun.Weapon);
        }
        player.Team  = (int)player.PlayerTeam.Id;
        player.Skin  = player.PlayerTeam.Skin;
        player.Color = player.Team == (int)TeamID.Alpha ? 0xFF000000 : 0x0000FF00;
        CurrentMap.SetPlayerPosition(player);
        player.IsDead = false;
        if (player.Data.SkinId != -1)
        {
            player.Skin = player.Data.SkinId;
        }
        if (player.IsInvisible)
        {
            player.EnableInvisibility();
        }
        if (player.IsEnableInvisible())
        {
            player.InvisibleTime = 0;
        }
        if (player.IsFreeze)
        {
            player.ToggleControllable(false);
        }
    }
예제 #22
0
 private void Actor_Spawn(object sender, SpawnEventArgs e)
 {
     Actor spawnedActor = (Actor)sender;
     if (e.spawnType == 1)
     {
         protagonist = spawnedActor;
     }
     else if (e.spawnType == 2)
     {
         ActionList behaviorList = new ActionList(spawnedActor);
         Neutral neutral = new Neutral(behaviorList, spawnedActor);
         behaviorList.pushFront(neutral);
         Alert alert = new Alert(behaviorList, spawnedActor, protagonist);
         behaviorList.pushFront(alert);
         behaviorLists[spawnedActor] = behaviorList;
     }
     //actors.Add(spawnedActor);
 }
예제 #23
0
        public override void OnSpawned(SpawnEventArgs e)
        {
            base.OnSpawned(e);

            this.Skin         = (int)this.ActiveCharacter.Skin;
            this.Interior     = this.ActiveCharacter.SpawnLocation.Interior;
            this.VirtualWorld = this.ActiveCharacter.SpawnLocation.VirtualWorld;

            if (this.ActiveCharacter.ItemInHand != null && this.ActiveCharacter.ItemInHand is Gun)
            {
                this.GiveWeapon(((Gun)this.ActiveCharacter.ItemInHand).idWeapon, this.ActiveCharacter.ItemInHand.Quantity);
            }

            nameLabel = new DynamicTextLabel(this.Name + " (( " + this.Id + " ))" + "\r\n" + Constants.Chat.ME + Utils.PlayerUtils.PlayerHelper.HealthToDescription(this), Color.White,
                                             new Vector3(0, 0, 0.3), Constants.PLAYER_LABEL_DIST, attachedPlayer: this, testLOS: true);
            nameLabel.Interior = this.Interior;
            nameLabel.World    = this.VirtualWorld;
            nameLabel.HideForPlayer(this);
        }
예제 #24
0
        private void Actor_Spawn(object sender, SpawnEventArgs e)
        {
            Actor spawnedActor = (Actor)sender;

            if (spawnedActor.className == "player")
            {
                protagonist = spawnedActor;
            }
            else
            {
                ActionList behaviorList = new ActionList(spawnedActor);
                Neutral    neutral      = new Neutral(behaviorList, spawnedActor);
                behaviorList.pushFront(neutral);
                Alert alert = new Alert(behaviorList, spawnedActor, protagonist);
                behaviorList.pushFront(alert);
                behaviorLists[spawnedActor] = behaviorList;
            }
            //actors.Add(spawnedActor);
        }
예제 #25
0
        private void Actor_Spawn(object sender, SpawnEventArgs e)
        {
            Actor spawnedActor = (Actor)sender;

            if (e.spawnType == 1)
            {
                protagonist = spawnedActor;
            }
            else if (e.spawnType == 2)
            {
                ActionList behaviorList = new ActionList(spawnedActor);
                Idle       idle         = new Idle(behaviorList, spawnedActor);
                behaviorList.pushFront(idle);
                Alert alert = new Alert(behaviorList, spawnedActor, protagonist);
                behaviorList.pushFront(alert);
                behaviorLists[spawnedActor] = behaviorList;
            }
            //actors.Add(spawnedActor);
        }
예제 #26
0
 private void stepProc__spawnEvent(object s, SpawnEventArgs e)
 {
     try
     {
         // add goal/task/intervention payload to processlist
         if (e.Tags != null)
         {
             if (e.Tags.Count > 0)
             {
                 e.Tags.ForEach(t =>
                 {
                     if (t != null)
                     {
                         if (t.GetType() == typeof(List <object>))
                         {
                             ((List <object>)t).ForEach(r =>
                             {
                                 if (r != null)
                                 {
                                     AddUniquePlanElementToProcessedList(r);
                                 }
                             });
                         }
                         else
                         {
                             AddUniquePlanElementToProcessedList(t);
                         }
                     }
                 });
             }
         }
         RelatedChanges.Add(e.Name);
     }
     catch (Exception ex)
     {
         throw new Exception(
                   "AD:InterviewManager:stepProc__spawnEvent():: count: " + e.Tags.Count + " " + ex.Message,
                   ex.InnerException);
     }
 }
    protected override void OnEvent(object obj)
    {
        SpawnEventArgs args = obj as SpawnEventArgs;

        if (null == args)
        {
            return;
        }

        switch (args.eventType)
        {
        case eEvent.Dead:
        {
            // 소환된 모든 NPC들이 죽었는지 검사!
            if (G_GameInfo.CharacterMgr.unitGroupDic.ContainsKey(groupNo))
            {
                List <Unit> enemyList = G_GameInfo.CharacterMgr.unitGroupDic[groupNo];

                bool isAllDead = enemyList.TrueForAll((unit) => unit.CharInfo.IsDead);
                if (isAllDead)
                {
                    OnEvent(new SpawnEventArgs()
                        {
                            sender = this, eventType = eEvent.AllDead
                        });
                }
            }
        }
        break;

        case eEvent.AllDead:
            // 다음 웨이브 시작되도록 하기
            if (null != G_GameInfo.GameInfo)
            {
                G_GameInfo.GameInfo.SendMessage("NextWave", SendMessageOptions.RequireReceiver);
            }
            break;
        }
    }
예제 #28
0
        private static bool OnPlayerSpawn(byte player, int spawnX, int spawnY)
        {
            if (PlayerSpawn == null)
                return false;

            var args = new SpawnEventArgs
            {
                Player = player,
                SpawnX = spawnX,
                SpawnY = spawnY,
            };
            PlayerSpawn.Invoke(null, args);
            return args.Handled;
        }
    private void SpawnObject(Vector3 spawnPosition, Vector3 forward, float angle)
    {
        SpawnEventArgs spawnArgs = new SpawnEventArgs(spawnPosition, forward, angle);

        if (OnSpawning != null)
        {
            OnSpawning(this, spawnArgs);
        }

        GameObject gobj       = Instantiate(Projectile, spawnArgs.SpawnPosition + spawnArgs.Forward, Quaternion.Euler(0.0f, (spawnArgs.Angle + sprayAngle), 0));
        Projectile projectile = gobj.GetComponent <Projectile>();

        if (transform.parent != null)
        {
            projectile.Attacker = transform.parent.gameObject;
        }

        if (OnPrimaryAttack != null)
        {
            OnPrimaryAttack(this, new WeaponEventArgs(gobj, projectile, AnimationDuration, delayedSpawn));
        }

        if (audioSource != null && FireSound != null)
        {
            if (!audioSource.isPlaying || OverwriteSound)
            {
                audioSource.clip = FireSound;
                audioSource.Play();
            }
        }

        elapsedAttackDelay   = 0f;
        elapsedSpawnDelay    = 0f;
        delayedSpawn         = false;
        delayedSpawnAngle    = 0f;
        delayedSpawnForward  = Vector3.zero;
        delayedSpawnPosition = Vector3.zero;

        if (UseAmmo)
        {
            currentClipAmmo--;
            if (currentClipAmmo <= 0 && AutoReload)
            {
                Reload();
            }
        }
        else if (ProduceHeat)
        {
            elapsedHeatReductionDelay = 0f;
            heat    += heatPerShot;
            overheat = heat >= maxHeat;

            if (overheat)
            {
                if (audioSource != null && ReloadSound != null)
                {
                    if (!audioSource.isPlaying)
                    {
                        audioSource.clip = ReloadSound;
                        audioSource.Play();
                    }
                }
            }
        }
    }
예제 #30
0
파일: Server.cs 프로젝트: algor1/wingsrv
 private void ShipSpawn(object sender, SpawnEventArgs e)
 {
     Console.WriteLine(" Ship id: {0}  spawn ", e.ship_id);
 }
 private void PrimaryWeapon_OnSpawning(object sender, SpawnEventArgs e)
 {
     e.Angle         = angle;
     e.SpawnPosition = leftSpawn.transform.position;
     e.Forward       = transform.forward;
 }
예제 #32
0
 protected override void OnPlayerSpawned(BasePlayer player, SpawnEventArgs e)
 {
     player.GiveWeapon(Weapon.Tec9, 5000);
 }
예제 #33
0
 protected override void OnPlayerSpawned(BasePlayer player, SpawnEventArgs e)
 {
     base.OnPlayerSpawned(player, e);
     player.Interior = 0;
     player.ToggleClock(false);
 }