Your Cart

0 Assets

Your cart is empty

Verse13 Sept 2026Free

Basic Persistence Setup

#persistence

Shared by Cred1t

Verse · 79 lines
1using { /Verse.org/Simulation }
2using { /Verse.org/SceneGraph }
3using { /Fortnite.com/Devices }
4
5var PlayerInventoryData : weak_map(player, player_persistable_inventory) = map{}
6
7player_persistable_inventory := class<final><persistable>:
8 Version : int = 0
9 Currency : int = 0
10
11(Player : player).AddCurrency(Amount : int)<transacts>:void=
12 PD := Player.GetPersistentInventory()
13 NewPD := player_persistable_inventory:
14 Currency := PD.Currency + Amount
15 MakeSaveDataTableForInventory<constructor>(PD)
16 Player.SetInventory(NewPD)
17
18
19(Player : player).SubtractCurrency(Amount : int)<transacts>:void=
20 PD := Player.GetPersistentInventory()
21 NewPD := player_persistable_inventory:
22 Currency := if(PD.Currency - Amount < 0){0}else{PD.Currency - Amount}
23 MakeSaveDataTableForInventory<constructor>(PD)
24 Player.SetInventory(NewPD)
25
26
27(Player:player).SetInventory(NewSaveData : player_persistable_inventory)<transacts>:void=
28 if(not Player.IsActive[]):
29 return
30
31 if(set PlayerInventoryData[Player] = NewSaveData):
32
33(Player:player).GetPersistentInventory()<transacts>:player_persistable_inventory=
34 if(not Player.IsActive[]):
35 return player_persistable_inventory{}
36
37 if(PID := PlayerInventoryData[Player]):
38 return PID
39 else:
40 NewInventoryData := player_persistable_inventory{}
41 if(set PlayerInventoryData[Player] = NewInventoryData):
42
43 return player_persistable_inventory{}
44
45MakeSaveDataTableForInventory<constructor>(OldTable:player_persistable_inventory)<transacts>:=player_persistable_inventory:
46 Version := OldTable.Version
47 Currency := OldTable.Currency
48
49MoneyTriggerClass := class:
50 @editable Amount : int = 0
51 @editable Trigger : trigger_device = trigger_device{}
52
53playaer_inventory_component := class<final_super>(component):
54
55 @editable AddCurrencyTriggerClass : MoneyTriggerClass = MoneyTriggerClass{}
56 @editable SubtractCurrencyTriggerClass : MoneyTriggerClass = MoneyTriggerClass{}
57 @editable ResetDataTrigger : trigger_device = trigger_device{}
58
59 OnSimulate<override>():void=
60 spawn:
61 ListenForTriggers()
62
63 ListenForTriggers()<suspends>:void=
64 sync:
65 loop:
66 mAgent := AddCurrencyTriggerClass.Trigger.TriggeredEvent.Await()
67 if(Player := player[mAgent?]):
68 Player.AddCurrency(AddCurrencyTriggerClass.Amount)
69 Sleep(0.0)
70 loop:
71 mAgent := SubtractCurrencyTriggerClass.Trigger.TriggeredEvent.Await()
72 if(Player := player[mAgent?]):
73 Player.SubtractCurrency(AddCurrencyTriggerClass.Amount)
74 Sleep(0.0)
75 loop:
76 mAgent := ResetDataTrigger.TriggeredEvent.Await()
77 if(Player := player[mAgent?]):
78 Player.SetInventory(player_persistable_inventory{})
79 Sleep(0.0)

Community

★★★★★— · 0 ratings
🪙 How tips and review rewards workExpand

Tips. You can send 1 to 500 credits from your wallet to the creator as a thank-you. Tips appear in the comments with your name and cannot be undone, unless the snippet is later removed for breaking the rules, in which case they are returned to you.

Reviews. A written 20+ character review with 4 or 5 stars earns the creator 5 credits, paid 7 days later if the review still stands. You earn nothing for reviewing, so say what you really think. Reviews count only from established members: a linked Discord account, a purchase in the store, or an account at least 14 days old with 3+ reviews on snippets by 2+ different creators.

Comments

Sign in to join the conversation.

Sign in

Loading…

More Verse Snippets