Having trouble with handling more than one product purchase?
I am having trouble creating a script that reward points after buying the developer product. The points are for a system I am using in-game that involves getting points via leaderstats. Whenever I try to add more than one ProccessReceipt, only the last one I added works.
Heres the code I am trying:
001 | local MarketplaceService = game:GetService( "MarketplaceService" ) |
002 | local DataStoreService = game:GetService( "DataStoreService" ) |
004 | local currencyName = "A.P" |
006 | local PreviousPurchases = DataStoreService:GetDataStore( "PreviousPurchases" ) |
008 | local bit_ap = 443047981 |
009 | local some_ap = 443047297 |
010 | local pocket_ap = 443047667 |
011 | local hand_ap = 443046726 |
012 | local lot_ap = 443048522 |
013 | local heart_ap = 443049632 |
014 | local insane_ap = 443051526 |
016 | MarketplaceService.ProcessReceipt = function (receipt) |
019 | local ID = receipt.PlayerId.. "-" ..receipt.PurchaseId |
024 | success = PreviousPurchases:GetAsync(ID) |
027 | if PreviousPurchases:GetAsync(ID) then |
029 | return Enum.ProductPurchaseDecision.PurchaseGranted |
032 | local player = game.Players:GetPlayerByUserId(receipt.PlayerId) |
036 | return Enum.ProductPurchaseDecision.NotProcessedYet |
039 | if receipt.ProductId = = bit_ap then |
041 | player.leaderstats [ currencyName ] .Value = player.leaderstats [ currencyName ] .Value + 150 |
045 | PreviousPurchases:SetAsync(ID, true ) |
047 | return Enum.ProductPurchaseDecision.PurchaseGranted |
050 | MarketplaceService.ProcessReceipt = function (receipt) |
054 | local ID = receipt.PlayerId.. "-" ..receipt.PurchaseId |
059 | success = PreviousPurchases:GetAsync(ID) |
062 | if PreviousPurchases:GetAsync(ID) then |
064 | return Enum.ProductPurchaseDecision.PurchaseGranted |
067 | local player = game.Players:GetPlayerByUserId(receipt.PlayerId) |
071 | return Enum.ProductPurchaseDecision.NotProcessedYet |
074 | if receipt.ProductId = = some_ap then |
076 | player.leaderstats [ currencyName ] .Value = player.leaderstats [ currencyName ] .Value + 500 |
080 | PreviousPurchases:SetAsync(ID, true ) |
082 | return Enum.ProductPurchaseDecision.PurchaseGranted |
087 | MarketplaceService.ProcessReceipt = function (receipt) |
090 | local ID = receipt.PlayerId.. "-" ..receipt.PurchaseId |
095 | success = PreviousPurchases:GetAsync(ID) |
098 | if PreviousPurchases:GetAsync(ID) then |
100 | return Enum.ProductPurchaseDecision.PurchaseGranted |
103 | local player = game.Players:GetPlayerByUserId(receipt.PlayerId) |
107 | return Enum.ProductPurchaseDecision.NotProcessedYet |
110 | if receipt.ProductId = = pocket_ap then |
112 | player.leaderstats [ currencyName ] .Value = player.leaderstats [ currencyName ] .Value + 750 |
116 | PreviousPurchases:SetAsync(ID, true ) |
118 | return Enum.ProductPurchaseDecision.PurchaseGranted |
123 | MarketplaceService.ProcessReceipt = function (receipt) |
126 | local ID = receipt.PlayerId.. "-" ..receipt.PurchaseId |
131 | success = PreviousPurchases:GetAsync(ID) |
134 | if PreviousPurchases:GetAsync(ID) then |
136 | return Enum.ProductPurchaseDecision.PurchaseGranted |
139 | local player = game.Players:GetPlayerByUserId(receipt.PlayerId) |
143 | return Enum.ProductPurchaseDecision.NotProcessedYet |
146 | if receipt.ProductId = = hand_ap then |
148 | player.leaderstats [ currencyName ] .Value = player.leaderstats [ currencyName ] .Value + 1000 |
152 | PreviousPurchases:SetAsync(ID, true ) |
154 | return Enum.ProductPurchaseDecision.PurchaseGranted |
159 | MarketplaceService.ProcessReceipt = function (receipt) |
162 | local ID = receipt.PlayerId.. "-" ..receipt.PurchaseId |
167 | success = PreviousPurchases:GetAsync(ID) |
170 | if PreviousPurchases:GetAsync(ID) then |
172 | return Enum.ProductPurchaseDecision.PurchaseGranted |
175 | local player = game.Players:GetPlayerByUserId(receipt.PlayerId) |
179 | return Enum.ProductPurchaseDecision.NotProcessedYet |
182 | if receipt.ProductId = = lot_ap then |
184 | player.leaderstats [ currencyName ] .Value = player.leaderstats [ currencyName ] .Value + 2000 |
188 | PreviousPurchases:SetAsync(ID, true ) |
190 | return Enum.ProductPurchaseDecision.PurchaseGranted |
195 | MarketplaceService.ProcessReceipt = function (receipt) |
198 | local ID = receipt.PlayerId.. "-" ..receipt.PurchaseId |
203 | success = PreviousPurchases:GetAsync(ID) |
206 | if PreviousPurchases:GetAsync(ID) then |
208 | return Enum.ProductPurchaseDecision.PurchaseGranted |
211 | local player = game.Players:GetPlayerByUserId(receipt.PlayerId) |
215 | return Enum.ProductPurchaseDecision.NotProcessedYet |
218 | if receipt.ProductId = = heart_ap then |
220 | player.leaderstats [ currencyName ] .Value = player.leaderstats [ currencyName ] .Value + 7500 |
224 | PreviousPurchases:SetAsync(ID, true ) |
226 | return Enum.ProductPurchaseDecision.PurchaseGranted |
231 | MarketplaceService.ProcessReceipt = function (receipt) |
234 | local ID = receipt.PlayerId.. "-" ..receipt.PurchaseId |
239 | success = PreviousPurchases:GetAsync(ID) |
242 | if PreviousPurchases:GetAsync(ID) then |
244 | return Enum.ProductPurchaseDecision.PurchaseGranted |
247 | local player = game.Players:GetPlayerByUserId(receipt.PlayerId) |
251 | return Enum.ProductPurchaseDecision.NotProcessedYet |
254 | if receipt.ProductId = = insane_ap then |
256 | player.leaderstats [ currencyName ] .Value = player.leaderstats [ currencyName ] .Value + 10000 |
260 | PreviousPurchases:SetAsync(ID, true ) |
262 | return Enum.ProductPurchaseDecision.PurchaseGranted |
And I know its not the gui's either.
Please help, thanks!