private void OnEntityEnter(TriggerSafeZone triggerSafeZone, BasePlayer player)
        {
            if (player.IsNpc ||
                triggerSafeZone.GetComponentInParent <SafeCart>() == null ||
                !player.IsHostile())
            {
                return;
            }

            var hostileTimeRemaining = player.State.unHostileTimestamp - Network.TimeEx.currentTimestamp;

            if (hostileTimeRemaining < 0)
            {
                return;
            }

            float lastWarningTime;

            if (_playersLastWarnedTime.TryGetValue(player.userID, out lastWarningTime) &&
                lastWarningTime + SafeZoneWarningCooldown > Time.realtimeSinceStartup)
            {
                return;
            }

            ChatMessage(player, "Warning.Hostile", TimeSpan.FromSeconds(Math.Ceiling(hostileTimeRemaining)).ToString("g"));
            _playersLastWarnedTime[player.userID] = Time.realtimeSinceStartup;
        }
예제 #2
0
    public bool InSafeZone()
    {
        float num = 0f;

        if (triggers != null)
        {
            for (int i = 0; i < triggers.Count; i++)
            {
                TriggerSafeZone triggerSafeZone = triggers[i] as TriggerSafeZone;
                if (!(triggerSafeZone == null))
                {
                    float safeLevel = triggerSafeZone.GetSafeLevel(base.transform.position);
                    if (safeLevel > num)
                    {
                        num = safeLevel;
                    }
                }
            }
        }
        return(num > 0f);
    }