VerseTagMarkup not found in detail screen

	# Copyright Epic Games, Inc. All Rights Reserved.

	 

	using { /Fortnite.com/Devices }

	using { /Fortnite.com/Teams }

	using { /Verse.org/Simulation }

	using { /Verse.org/Simulation/Tags }

		# Copyright Epic Games, Inc. All Rights Reserved.

	 

	using { /Verse.org/Simulation/Tags }

	 

	DominationSpawnTags<public> := module:
	
		Tag_SpawnGroup<public>:=            class(tag){}
		Tag_SpawnGroup_Initial<public>:=    class(Tag_SpawnGroup){}
	
		Tag_SpawnGroup_GroupA<public>:=     class(Tag_SpawnGroup){}
	
		Tag_SpawnGroup_GroupB<public>:=     class(Tag_SpawnGroup){}
	
		Tag_SpawnGroup_GroupC<public>:=     class(Tag_SpawnGroup){}
	
		 
	
		Tag_TeamOwnership<public>:=         class(tag){}
	
		Tag_TeamOwnership_Team1<public>:=   class(Tag_TeamOwnership){}
	
		Tag_TeamOwnership_Team2<public>:=   class(Tag_TeamOwnership){}

	 

	## この仕掛けはプレイヤー スポナーを管理します

	## 一連の初期スポナーが有効になります

	## しばらくすると、初期のスポナーは無効になります

	## そこから、各キャプチャー ポイントに関連付けられているチーム スポーンが、重み付けスコアに基づいて有効/無効になります

	##     ポイントを所有すると、重み付けスコアに 1 が加算されます (チーム 2 の場合は -1)

	##     エリア内に味方がいる場合、重み付けスコアに 1 が加算されます (チーム 2 の場合は -1)

	##     重み付けスコアが 0 より大きい場合、チーム 1 はそのポイントの近くでスポーンすることができます。

	##     重み付けスコアが 0 未満の場合、チーム 2 はポイントの近くでスポーンすることができます

	 

	##################################################################

	## イベント ハンドラ クラス - キャプチャー ポイントごとに 1 つスポーンし、そのキャプチャー ポイントを使用してイベントをバインドします

	##################################################################

	capture_point_event_handler := class:

	 

	    CapturePointIndex:int

	    DominationSpawnManagerRef:domination_spawn_manager

	    TeamCollectionRef:fort_team_collection

	 

	    var CaptureWeightOfThisPoint:int = 0

	    var PlayerWeightOfThisPoint:float = 0.0

	    WeightForEachPlayer:float = 0.5

	 

	    # チーム 1 の場合は 1 を返します。チーム 2 の場合は -1 を返します。

	    GetTeamDirectionOfAgent<private>(MyAgent:agent)<transacts>:int=

	        if (FirstTeam := TeamCollectionRef.GetTeams()[0]):

	            if (TeamCollectionRef.IsOnTeam[MyAgent, FirstTeam]):

	                return 1

	        return -1

	    

	    # キャプチャー ポイントの状態を設定します

	    OnCaptured(MyAgent:agent):void=

	        set CaptureWeightOfThisPoint = GetTeamDirectionOfAgent(MyAgent)

	        DominationSpawnManagerRef.CalculateWeightForPoint(CapturePointIndex)

	 

	    # プレイヤーの出入りに応じて、ポイントのプレイヤーの重み付けを変えます

	    PlayerEnteredLargeZone(MyAgent:agent):void=

	        set PlayerWeightOfThisPoint = PlayerWeightOfThisPoint + (GetTeamDirectionOfAgent(MyAgent) * WeightForEachPlayer)

	        DominationSpawnManagerRef.CalculateWeightForPoint(CapturePointIndex)

	    PlayerLeftLargeZone(MyAgent:agent):void=

	        set PlayerWeightOfThisPoint = PlayerWeightOfThisPoint - (GetTeamDirectionOfAgent(MyAgent) * WeightForEachPlayer)

	        DominationSpawnManagerRef.CalculateWeightForPoint(CapturePointIndex)

	    

	 

	##################################################################

	## ドミネーション スポーン マネージャー クラス

	##################################################################

	domination_spawn_manager := class(creative_device):

	 

	    # プレイヤー スポナーの仕掛けグループ - Verse タグを検索して追加します

	    var SpawnPointGroupInitial:[]player_spawner_device = array{}

	    var SpawnPointGroupsCapPoint:[][]player_spawner_device = array{array{}, array{}, array{}}

	 

	    # キャプチャー ゾーン

	    @editable  

	    CapturePoints:[]capture_area_device = array{}

	    @editable  

	    LargeZones:[]player_counter_device = array{}

	 

	    # 初期スポナーは、この秒数が経過した後に無効になります

	    InitialGroupDisableTime:float = 5.0

	 

	    # キャプチャー ポイント イベント ハンドラ クラスの参照

	    var CapturePointListeners:[]capture_point_event_handler = array{} 

	 

	 

	    # OnBegin がゲーム開始時に実行されます

	    OnBegin<override>()<suspends>:void=

	        BeginPlayEventSubscriptions()

	        FindAndCacheSpawnDevices()

	        DisableInitialSpawnGroup()

	        

	 

	    # 属性トリガーからイベントをサブスクライブします

	    BeginPlayEventSubscriptions<private>():void=

	        for (I -> EachCapPoint:CapturePoints):

	            MyHandler := capture_point_event_handler:

	                CapturePointIndex := I

	                DominationSpawnManagerRef := Self

	                TeamCollectionRef := Self.GetPlayspace().GetTeamCollection()

	 

	            set CapturePointListeners = CapturePointListeners + array{MyHandler}

	            

	            EachCapPoint.ControlChangeEvent.Subscribe(MyHandler.OnCaptured)

	 

	            if (EachLargeZone := LargeZones[I]):

	                EachLargeZone.CountedEvent.Subscribe(MyHandler.PlayerEnteredLargeZone)

	                EachLargeZone.RemovedEvent.Subscribe(MyHandler.PlayerLeftLargeZone)

	 

	 

	    # さまざまなプレイヤー スポナーの仕掛けをすべて取得し、適切な配列に格納します

	    FindAndCacheSpawnDevices<private>():void=

	        InitialSpawnPoints:[]creative_object_interface = GetCreativeObjectsWithTag(DominationSpawnTags.Tag_SpawnGroup_Initial{})

	        for (FoundDevice : InitialSpawnPoints, DeviceAsSpawner:= player_spawner_device[FoundDevice]):

	            set SpawnPointGroupInitial = SpawnPointGroupInitial + array{DeviceAsSpawner}

	 

	        GroupTags:[]tag = array:

	            DominationSpawnTags.Tag_SpawnGroup_GroupA{}

	            DominationSpawnTags.Tag_SpawnGroup_GroupB{}

	            DominationSpawnTags.Tag_SpawnGroup_GroupC{}

	 

	        for (I -> GroupTag:GroupTags): 

	            FoundSpawnGroup:[]creative_object_interface := GetCreativeObjectsWithTag(GroupTag)

	            for (FoundDevice : FoundSpawnGroup, DeviceAsSpawner:= player_spawner_device[FoundDevice]):

	                if:

	                    set SpawnPointGroupsCapPoint[I] = SpawnPointGroupsCapPoint[I] + array{DeviceAsSpawner}

	            

	 

	    # 初期スポーン ポイントをオフにします

	    DisableInitialSpawnGroup<private>()<suspends>:void=

	        Sleep(InitialGroupDisableTime)

	        for (SpawnPoint : SpawnPointGroupInitial):

	            SpawnPoint.Disable()

	        

	 

	    # ポイントの CapPointCaptureWeight または CapPointPlayerWeight が変更されるたびに、これを実行して、関連付けられているスポーン グループからスポーンすることが許可される必要のある人物を確認します

	    CalculateWeightForPoint(PointIndex:int):void=

	        var WeightOfPoint:int = 0

	 

	        if:

	            CapPointData := CapturePointListeners[PointIndex]

	            CapPlayerWeightToInt := Floor[CapPointData.PlayerWeightOfThisPoint]

	        then:

	            set WeightOfPoint = CapPointData.CaptureWeightOfThisPoint + CapPlayerWeightToInt

	        

	        for (SpawnDevice:SpawnPointGroupsCapPoint[PointIndex]):

	            var DeviceIsTeam1:logic = false

	            DeviceTags := SpawnDevice.GetTags()

	            if (DeviceTags.Has[DominationSpawnTags.Tag_TeamOwnership_Team1{}]):

	                set DeviceIsTeam1 = true

	            

	            if (DeviceIsTeam1?):

	                if (WeightOfPoint > 0):

	                    SpawnDevice.Enable()

	                else:

	                    SpawnDevice.Disable()

	            else:

	                if (WeightOfPoint < 0):

	                    SpawnDevice.Enable()

	                else:

	                    SpawnDevice.Disable()

URL:Deserted:Domination テンプレート | Unreal Editor for Fortnite ドキュメンテーション | Epic Developer Community

I’m using this as a reference.

Adding and customizing the Core Devices
Player Spawn Pad Devices
↑now

What is missing from this code?
I don’t see any errors, but I do see a warning message.

I’ve just started, so I’d be very happy to learn how to study too.

/WorldSetting.verse(251,83, 251,86) : Script warning 2011: This expression in the right operand of 'set ... = ...' can fail, but the meaning of failure here will change in a future version of Verse. To preserve the current meaning of this code in future versions of Verse, you should move the expression that can fail outside the 'set'.
For example, if you have the expression:
    set Variable = ExpressionThatMightFail[],
you can change it to the following two expressions to preserve the meaning:
    Value := ExpressionThatMightFail[]

Hi @studyingUEFN.

This is a block with the error, you have a few. Can you find the rest? :wink:

for (I → GroupTag:GroupTags):

          FoundSpawnGroup:[]creative_object_interface := GetCreativeObjectsWithTag(GroupTag)

          for (FoundDevice : FoundSpawnGroup, DeviceAsSpawner:= player_spawner_device[FoundDevice]):

              if:

                  set SpawnPointGroupsCapPoint[I] = SpawnPointGroupsCapPoint[I] + array{DeviceAsSpawner}

This is the fix:

for (I → GroupTag:GroupTags):

          FoundSpawnGroup:[]creative_object_interface := GetCreativeObjectsWithTag(GroupTag)

          for (FoundDevice : FoundSpawnGroup, DeviceAsSpawner:= player_spawner_device[FoundDevice]):

              if:

                  set SpawnPointGroupsCapPoint[I] += array{DeviceAsSpawner} 

Explained:
We were setting

set SpawnPointGroupsCapPoint[I] = SpawnPointGroupsCapPoint[I]

equal to itself THEN adding the array.

+array{DeviceAsSpawner}

We don’t need to do this anymore, we can simply set our variables to be “+=” to our new array instead of repeating expressions.

set SpawnPointGroupsCapPoint[I] += array{DeviceAsSpawner}

Hope this helps! :purple_heart:

-Also Side note, If you’re not seeing VerseTagMarkup in the detail screen, make sure you are clicking the “add” button and then just search “tag”. Add and input your tag.

1 Like