예제 #1
0
    private void TickDeathProcess()
    {
        currentRespawnTimer = currentRespawnTimer - Time.fixedDeltaTime;

        player.TeleportTo(lastPosition, player.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).rotation);

        if (currentRespawnTimer < 0F)
        {
            if (respawnPos != null)
            {
                player.TeleportTo(respawnPos.position, respawnPos.rotation);
                Debug.Log($"CombatSystem: Teleported {player.displayName} to respawn position of {respawnPos.position}.");
            }

            currentRespawnTimer = respawnTimer;

            Debug.Log($"CombatSystem: {player.displayName} is now able to move.");

            float maxHp = float.Parse(player.GetPlayerTag("combat_max_hp"));
            player.SetPlayerTag("combat_hp", $"{maxHp}");

            inDeathProcess = false;
        }

        player.SetPlayerTag("combat_respawn_timer", $"{currentRespawnTimer}");
    }
예제 #2
0
    public void Operation()
    {
        VRCPlayerApi player = Networking.LocalPlayer;

        float currValue = float.Parse(player.GetPlayerTag(tagName));

        if (operation == Operation_NONE)
        {
            return;
        }
        else if (operation == Operation_SET)
        {
            player.SetPlayerTag(tagName, $"{value}");
        }
        else if (operation == Operation_ADD)
        {
            player.SetPlayerTag(tagName, $"{currValue + value}");
        }
        else if (operation == Operation_SUBTRACT)
        {
            player.SetPlayerTag(tagName, $"{currValue - value}");
        }
        else if (operation == Operation_MULTIPLY)
        {
            player.SetPlayerTag(tagName, $"{currValue * value}");
        }
        else if (operation == Operation_DIVIDE)
        {
            player.SetPlayerTag(tagName, $"{currValue / value}");
        }
        else
        {
            Debug.LogWarning($"DebugFloatTagSetter: Invalid operation {operation} on {gameObject.name}.");
        }
    }
    private void FixedUpdate()
    {
        VRCPlayerApi p = Networking.LocalPlayer;

        PlayerInfoText.text =
            $"DisplayName: {p.displayName}\n" +
            $"PlayerId: {p.playerId}\n" +
            $"Position: {p.GetPosition()}\n" +
            $"CurHitpoint: {p.GetPlayerTag("combat_hp")}\n" +
            $"MaxHitpoint: {p.GetPlayerTag("combat_max_hp")}\n" +
            $"isGrounded: {p.IsPlayerGrounded()}\n" +
            $"isLocal: {p.isLocal}\n" +
            $"isMaster: {p.isMaster}\n" +
            $"PlayerTestTagValue: {p.GetPlayerTag("test")}\n" +
            $"RespawnTimer: {p.GetPlayerTag("combat_respawn_timer")}\n" +
            $"Id1: {(VRCPlayerApi.GetPlayerById(1) == null ? null : VRCPlayerApi.GetPlayerById(1).displayName)}";
    }
예제 #4
0
        private bool TestPlayerTags(VRCPlayerApi player)
        {
            Debug.Log("TestPlayerTags");

            string playerTag1 = "tag1";
            string tagValue1  = "value1";
            string tagValue2  = "value2";

            string cur = player.GetPlayerTag(playerTag1);

            if (!string.IsNullOrEmpty(cur))
            {
                Debug.LogError("Empty tag isn't empty!");
                return(false);
            }

            player.SetPlayerTag(playerTag1, tagValue1);
            cur = player.GetPlayerTag(playerTag1);
            if (!cur.Equals(tagValue1))
            {
                Debug.LogError("Set tag does not equal expected value1!");
                return(false);
            }

            player.SetPlayerTag(playerTag1, tagValue2);
            cur = player.GetPlayerTag(playerTag1);
            if (!cur.Equals(tagValue2))
            {
                Debug.LogError("Set tag does not equal expected value2!");
                return(false);
            }

            // TODO
            //localPlayer_.GetPlayersWithTag(playerTag);

            player.ClearPlayerTags();
            cur = player.GetPlayerTag(playerTag1);
            if (!string.IsNullOrEmpty(cur))
            {
                Debug.LogError("Tags were cleared but player still has tag!");
                return(false);
            }

            return(true);
        }
예제 #5
0
    private void DoMode()
    {
        var t = p.GetPlayerTag(volumeTagName);

        if (t == "swim")
        {
            DoFly();
            return;
        }
        if (t == "fly")
        {
            drag = flyDrag;
            DoFly();
            return;
        }
    }
예제 #6
0
        public override void OnPlayerTriggerEnter(VRCPlayerApi player)
        {
            if (player.GetPlayerTag("in room") == "true")
            {
                return;                                           //done because using chairs you can trigger this multiple times without triggering the exit event
            }
            player.SetPlayerTag("in room", "true");

            players[count++] = player;
            if (!_isValidating)
            {
                SendCustomEventDelayedSeconds(nameof(Validate), 60);
                _isValidating = true;
            }
            UpdateList();
        }