Advertisement
Timon-Gun

Скрипты пет сима

Apr 21st, 2023 (edited)
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.99 KB | None | 0 0
  1. скрипты для пет сима
  2.  
  3. 1 -- скрипт серверный делаем в serverscriptservice назовите его DataSave --
  4.  
  5. local players = game:GetService("Players")
  6. local dataStoreService = game:GetService("DataStoreService")
  7. local dataStore = dataStoreService:GetDataStore("MyDataKey3223")
  8. local httpService = game:GetService("HttpService")
  9.  
  10. local playerData = script.PlayerData
  11.  
  12. local function SaveData(player)
  13. local data = {}
  14. for _, folder in pairs(player:GetChildren()) do
  15. if playerData:FindFirstChild(folder.Name) then
  16. if playerData[folder.Name]:GetAttribute("SaveChildren") == true then
  17. data[folder.Name] = {}
  18. if playerData[folder.Name]:GetAttribute("SaveChildrenValues") == true then
  19. for _, child in pairs(folder:GetChildren()) do
  20. if not child:GetAttribute("DoNotSaveValue") then
  21. table.insert(data[folder.Name], {child.Name, child.Value, child.ClassName})
  22. end
  23. end
  24. else
  25. for _, child in pairs(folder:GetChildren()) do
  26. if not child:GetAttribute("DoNotSaveValue") then
  27. table.insert(data[folder.Name], {child.Name, child.ClassName})
  28. end
  29. end
  30. end
  31. end
  32. end
  33. end
  34. local success, errorMsg = pcall(function()
  35. dataStore:SetAsync(player.UserId.."Key", data)
  36. end)
  37.  
  38. if success then
  39. print("Saved Data")
  40. else
  41. warn(errorMsg)
  42. end
  43. end
  44.  
  45. local function LoadData(player)
  46. for _, v in pairs(playerData:GetChildren()) do
  47. v:Clone().Parent = player
  48. end
  49. local folder = Instance.new("Folder")
  50. folder.Name = player.Name
  51. folder.Parent = workspace.Folder.PlayerPets
  52.  
  53. local data
  54. local success, errorMsg = pcall(function()
  55. data = dataStore:GetAsync(player.UserId.."Key")
  56. end)
  57. if errorMsg then
  58. warn(errorMsg)
  59. player:Kick("Could not save data")
  60. end
  61. if data then
  62. for i, v in pairs(data) do
  63. if #v > 0 then
  64. for x, c in pairs(v) do
  65. local value
  66. if playerData:FindFirstChild(tostring(i)):FindFirstChild(c[1]) then
  67. value = player:FindFirstChild(tostring(i)):FindFirstChild(c[1])
  68.  
  69. else
  70. if c[3] == nil then
  71. value = Instance.new(tostring(c[2]))
  72. else
  73. value = Instance.new(tostring(c[3]))
  74. end
  75. end
  76. value.Name = c[1]
  77. value.Value = c[2]
  78. value.Parent = player[tostring(i)]
  79. end
  80. end
  81. end
  82. end
  83. end
  84.  
  85. local function PlayerRemoving(player)
  86. SaveData(player)
  87. end
  88.  
  89. players.PlayerAdded:Connect(LoadData)
  90. players.PlayerRemoving:Connect(PlayerRemoving)
  91. game:BindToClose(function()
  92. for _, player in pairs(players:GetPlayers()) do
  93. coroutine.wrap(SaveData)(player)
  94. end
  95. end)
  96.  
  97. 2 -- скрипт серверный делаем в serverscriptservice назовите его MainServer --
  98.  
  99. local Players = game:GetService("Players")
  100. local httpService = game:GetService("HttpService")
  101.  
  102. local mainFolder_Workspace = workspace.Folder
  103. local playerPets = mainFolder_Workspace.PlayerPets
  104. local drops = mainFolder_Workspace.Drops
  105.  
  106. local coinDrops = {}
  107.  
  108. Players.PlayerAdded:Connect(function(player)
  109. if not coinDrops[player] then
  110. coinDrops[player] = {}
  111. end
  112. player.CharacterAdded:Connect(function(characted)
  113.  
  114. task.wait(1)
  115. for _, door in pairs(workspace.Folder.Doors:GetChildren()) do
  116. if player.Areas:FindFirstChild(door.Name) then
  117. game.ReplicatedStorage.Remotes.RemoveDoor:FireClient(player, door)
  118. end
  119. end
  120. game.ReplicatedStorage.Remotes.LoadSavedPets:FireClient(player)
  121. if player.Values.EquippedPet.Value ~= "None" then
  122. game.ReplicatedStorage.Remotes.EquipSavedPet:FireClient(player, player.Values.EquippedPet.Value)
  123. end
  124. end)
  125.  
  126. end)
  127.  
  128. Players.PlayerRemoving:Connect(function(player)
  129. if playerPets:FindFirstChild(player.Name) then
  130. playerPets:FindFirstChild(player.Name):Destroy()
  131. end
  132. end)
  133.  
  134. game.ReplicatedStorage.Remotes.PurchaseDoor.OnServerInvoke = function(player, door)
  135. local serverDoor = workspace.Folder.Doors:FindFirstChild(door.Name)
  136.  
  137. if serverDoor then
  138. if player.leaderstats.Coins.Value >= serverDoor.Price.Value then
  139. if not player.Areas:FindFirstChild(serverDoor.Name) then
  140. player.leaderstats.Coins.Value -= serverDoor.Price.Value
  141. local doorVal = Instance.new("StringValue")
  142. doorVal.Name = serverDoor.Name
  143. doorVal.Parent = player.Areas
  144. return true
  145. end
  146. else
  147. return false
  148. end
  149. end
  150. end
  151.  
  152. game.ReplicatedStorage.Remotes.StopDamaging.OnServerEvent:Connect(function(player)
  153. player.Values.SentTo.Value = nil
  154. local currentPlayerPets = playerPets[player.Name]
  155. if #currentPlayerPets:GetChildren() > 0 then
  156. local pet = currentPlayerPets:FindFirstChildOfClass("Model")
  157. pet.Attack.Value = nil
  158. end
  159. end)
  160.  
  161. game.ReplicatedStorage.Remotes.EquipPet.OnServerEvent:Connect(function(player, petName)
  162. if player.Pets:FindFirstChild(petName) then
  163. local petModel = game.ReplicatedStorage.Pets:FindFirstChild(petName):Clone()
  164. petModel.Parent = workspace.Folder.PlayerPets:FindFirstChild(player.Name)
  165. player.Values.Damage.Value = petModel.Damage.Value
  166. player.Values.EquippedPet.Value = petName
  167. end
  168. end)
  169.  
  170. game.ReplicatedStorage.Remotes.UnequipPets.OnServerEvent:Connect(function(player)
  171. workspace.Folder.PlayerPets:FindFirstChild(player.Name):ClearAllChildren()
  172. player.Values.Damage.Value = 0
  173. end)
  174.  
  175. game.ReplicatedStorage.Remotes.AwardOnDestroy.OnServerInvoke = function(player, dropName, objectCF)
  176. local drop = nil
  177. local dropArea = nil
  178. for _, area in pairs(mainFolder_Workspace.Drops:GetChildren()) do
  179. for _, v in pairs(area:GetChildren()) do
  180. if v.Name == dropName then
  181. dropArea = area.Name
  182. drop = v
  183. break
  184. end
  185. end
  186. end
  187.  
  188. if dropArea then
  189. if player.Areas:FindFirstChild(dropArea) then
  190. local coinAward = drop.CoinAward.Value
  191. local guids = {}
  192.  
  193. for i = 1, 5 do
  194. local guid = httpService:GenerateGUID(false)
  195. table.insert(guids, guid)
  196. end
  197.  
  198. for i, v in pairs(guids) do
  199. coinDrops[player][v] = {}
  200. coinDrops[player][v]["Award"] = math.round(coinAward/5)
  201. end
  202.  
  203. game.ReplicatedStorage.Remotes.DropCoins:FireClient(player, objectCF, guids)
  204. return true
  205. end
  206. end
  207. end
  208.  
  209. game.ReplicatedStorage.Remotes.GiveCoins.OnServerEvent:Connect(function(player, guid)
  210. if coinDrops[player][guid] then
  211. player.leaderstats.Coins.Value += (coinDrops[player][guid]["Award"]) * player.Values["CoinMultiplier"].Value
  212. coinDrops[player][guid] = nil
  213. end
  214. end)
  215.  
  216. for _, drop in pairs(drops:GetDescendants()) do
  217. if drop:IsA("Model") then
  218. drop.Health.Value = drop.MaxHealth.Value
  219. drop.ClickDetector.MouseClick:Connect(function(player)
  220. local currentPlayerPets = playerPets[player.Name]
  221. if #currentPlayerPets:GetChildren() > 0 then
  222. if player.Areas:FindFirstChild(drop.Parent.Name) then
  223. local pet = currentPlayerPets:FindFirstChildOfClass("Model")
  224. if player.Values.SentTo.Value == nil then
  225. player.Values.SentTo.Value = drop
  226. game.ReplicatedStorage.Remotes.ToggleBillboard:FireClient(player, drop, true)
  227. pet.Attack.Value = player.Values.SentTo.Value
  228. elseif player.Values.SentTo.Value == drop then
  229. player.Values.SentTo.Value = nil
  230. game.ReplicatedStorage.Remotes.ToggleBillboard:FireClient(player, drop, false)
  231. pet.Attack.Value = player.Values.SentTo.Value
  232. elseif player.Values.SentTo.Value ~= nil and player.Values.SentTo.Value ~= drop then
  233. player.Values.SentTo.Value = drop
  234. game.ReplicatedStorage.Remotes.ToggleBillboard:FireClient(player, drop, true)
  235. pet.Attack.Value = player.Values.SentTo.Value
  236. end
  237. end
  238. end
  239. end)
  240. end
  241. end
  242.  
  243. for _, door in pairs(workspace.Folder.Doors:GetChildren()) do
  244. door.ProximityPart.ProximityPrompt.Triggered:Connect(function(player)
  245. if not player.Areas:FindFirstChild(door.Name) then
  246. game.ReplicatedStorage.Remotes.PromptPurchaseDoor:FireClient(player, door)
  247. end
  248. end)
  249. end
  250.  
  251. 3 -- скрипт серверный делаем в serverscriptservice назовите его EggsServer --
  252.  
  253. local replicatedStorage = game:GetService("ReplicatedStorage")
  254. local players = game:GetService("Players")
  255.  
  256. local remotes = replicatedStorage.Remotes
  257. local eggs = workspace.Folder.Eggs
  258.  
  259.  
  260. local playerHatchDebounce = {}
  261.  
  262. local function chooseRandomPet(petTable)
  263. local chosenPet = nil
  264. local randomNumber = math.random(1, 100)
  265. local weight = 0
  266.  
  267. for i, v in pairs(petTable) do
  268. weight += v.chance
  269.  
  270. if weight >= randomNumber then
  271. chosenPet = v
  272. break
  273. end
  274. end
  275.  
  276. return chosenPet
  277. end
  278.  
  279. for _, egg in pairs(eggs:GetChildren()) do
  280. egg.ProximityPrompt.Triggered:Connect(function(player)
  281. local eggData = require(egg.Data)
  282. local price = eggData.eggPrice
  283. local currency = eggData.eggCurrency
  284. if player.leaderstats.Coins.Value >= price then
  285. if not playerHatchDebounce[player] then
  286. playerHatchDebounce[player] = true
  287. local chosenPet = chooseRandomPet(eggData.eggPets)
  288. player.leaderstats.Coins.Value -= price
  289. remotes.HatchEgg:FireClient(player, egg.Name, chosenPet)
  290. local val = Instance.new("StringValue")
  291. val.Name = (chosenPet.petName)
  292. val.Parent = player.Pets
  293. task.wait(6)
  294. playerHatchDebounce[player] = false
  295. end
  296. end
  297. end)
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304. players.PlayerRemoving:Connect(function(player)
  305. if playerHatchDebounce[player] then
  306. playerHatchDebounce[player] = nil
  307. end
  308. end)
  309.  
  310. end
  311.  
  312. 4 -- скрипт серверный делаем в starterplayer starterplayerScripts назовите его EggsClient --
  313.  
  314. local runService = game:GetService("RunService")
  315. local replicatedStorage = game:GetService("ReplicatedStorage")
  316. local players = game:GetService("Players")
  317. local tweenService = game:GetService("TweenService")
  318.  
  319. local eggs = workspace:WaitForChild("Folder"):WaitForChild("Eggs")
  320. local remotes = replicatedStorage:WaitForChild("Remotes")
  321. local pets = replicatedStorage:WaitForChild("Pets")
  322.  
  323. local player = players.LocalPlayer
  324. local eggSystemSS = player:WaitForChild("PlayerGui"):WaitForChild("EggSystem")
  325. local eggViewport = eggSystemSS:WaitForChild("EggViewport")
  326.  
  327. local mainSS = player:WaitForChild("PlayerGui"):WaitForChild("MainSS")
  328. local inventory = mainSS:WaitForChild("PetInventory")
  329. local scrollingFrame = inventory:WaitForChild("ScrollingFrame")
  330. local template = scrollingFrame:WaitForChild("Template")
  331.  
  332. local module3D = require(replicatedStorage:WaitForChild("Module3D"))
  333.  
  334. local function onTemplateClick(clickedTemplate)
  335. if clickedTemplate.Equipped.Value == false then
  336. for _, v in pairs(scrollingFrame:GetChildren()) do
  337. if v:IsA("GuiButton") then
  338. v.Equipped.Value = false
  339. tweenService:Create(v, TweenInfo.new(0.4), {BackgroundColor3 = Color3.fromRGB(170, 255, 255)}):Play()
  340. end
  341. end
  342. clickedTemplate.Equipped.Value = true
  343. tweenService:Create(clickedTemplate, TweenInfo.new(0.4), {BackgroundColor3 = Color3.fromRGB(170, 255, 127)}):Play()
  344. remotes.UnequipPets:FireServer()
  345. remotes.EquipPet:FireServer(clickedTemplate.Name)
  346. else
  347. for _, v in pairs(scrollingFrame:GetChildren()) do
  348. if v:IsA("GuiButton") then
  349. v.Equipped.Value = false
  350. tweenService:Create(v, TweenInfo.new(0.4), {BackgroundColor3 = Color3.fromRGB(170, 255, 255)}):Play()
  351. end
  352. end
  353. remotes.UnequipPets:FireServer()
  354. end
  355. end
  356.  
  357. local function createTemplate(petName)
  358. local newTemplate = template:Clone()
  359. newTemplate.Name = petName
  360. newTemplate.Visible = true
  361. newTemplate.Parent = scrollingFrame
  362.  
  363. local petModel3D = module3D:Attach3D(newTemplate:WaitForChild("Viewport"), pets:FindFirstChild(petName):Clone())
  364. petModel3D:SetDepthMultiplier(2)
  365. petModel3D.Camera.FieldOfView = 5
  366. petModel3D.Visible = true
  367.  
  368.  
  369.  
  370. runService.RenderStepped:Connect(function()
  371. petModel3D:SetCFrame(CFrame.Angles(0, tick() % (math.pi * 2), 0) * CFrame.Angles(math.rad(-10), 0, 0))
  372. end)
  373.  
  374. newTemplate.MouseButton1Click:Connect(function()
  375. onTemplateClick(newTemplate)
  376. end)
  377. end
  378.  
  379. local function hatchEgg(eggName, chosenPet)
  380. for _, v in pairs(player.PlayerGui:GetChildren()) do
  381. if v:IsA("ScreenGui") and v ~= eggSystemSS then
  382. v.Enabled = false
  383. end
  384. end
  385. eggSystemSS.Enabled = true
  386. for _, v in pairs(eggViewport:GetChildren()) do
  387. if v:IsA("Camera") or v:IsA("BasePart") or v:IsA("Model") then
  388. v:Destroy()
  389. end
  390. end
  391. eggViewport.Size = UDim2.fromScale(0, 0)
  392. local eggMesh = eggs:FindFirstChild(eggName):Clone()
  393. eggMesh.Parent = eggViewport
  394. eggMesh.CFrame = CFrame.new(0, 0, 0)
  395. local camera = Instance.new("Camera")
  396. camera.Parent = eggViewport
  397. camera.CFrame = CFrame.new(0, 0, 4)
  398. eggViewport.CurrentCamera = camera
  399. tweenService:Create(eggViewport, TweenInfo.new(0.7), {Size = UDim2.new(0, 341, 0, 401)}):Play()
  400. task.wait(0.7)
  401. for i = 1, 4 do
  402. tweenService:Create(eggViewport, TweenInfo.new(0.3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Rotation = 20}):Play()
  403. task.wait(0.3)
  404. tweenService:Create(eggViewport, TweenInfo.new(0.3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Rotation = -20}):Play()
  405. task.wait(0.3)
  406. end
  407. tweenService:Create(eggViewport, TweenInfo.new(0.3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Rotation = 0}):Play()
  408. task.wait(0.3)
  409. tweenService:Create(eggViewport, TweenInfo.new(0.7), {Size = UDim2.fromScale(0, 0)}):Play()
  410. task.wait(0.3)
  411. for _, v in pairs(eggViewport:GetChildren()) do
  412. if v:IsA("Camera") or v:IsA("BasePart") or v:IsA("Model") then
  413. v:Destroy()
  414. end
  415. end
  416. local petModel = pets:FindFirstChild(chosenPet.petName):Clone()
  417. petModel:PivotTo(CFrame.new(0, 0, 0))
  418. petModel.Parent = eggViewport
  419. local cameraPet = Instance.new("Camera")
  420. cameraPet.Parent = eggViewport
  421. cameraPet.CFrame = CFrame.new(0, 0, -3.3) * CFrame.Angles(0, math.rad(180), 0)
  422. eggViewport.CurrentCamera = cameraPet
  423. tweenService:Create(eggViewport, TweenInfo.new(0.7), {Size = UDim2.new(0, 341, 0, 401)}):Play()
  424. eggViewport.NameLabel.Text = chosenPet.petName
  425. eggViewport.NameLabel.Visible = true
  426. eggViewport.RarityLabel.Text = chosenPet.Rarity
  427. eggViewport.RarityLabel.Visible = true
  428. task.wait(1.5)
  429. tweenService:Create(eggViewport, TweenInfo.new(0.3), {Size = UDim2.fromScale(0, 0)}):Play()
  430. task.wait(0.3)
  431. eggViewport.NameLabel.Visible = false
  432. eggViewport.RarityLabel.Visible = false
  433. createTemplate(chosenPet.petName)
  434. for _, v in pairs(player:WaitForChild("PlayerGui"):GetChildren()) do
  435. if v:IsA("ScreenGui") and v ~= eggSystemSS then
  436. v.Enabled = true
  437. end
  438. end
  439. end
  440.  
  441. remotes:WaitForChild("HatchEgg").OnClientEvent:Connect(hatchEgg)
  442.  
  443. remotes:WaitForChild("EquipSavedPet").OnClientEvent:Connect(function(petName)
  444. onTemplateClick(scrollingFrame:FindFirstChild(petName))
  445. end)
  446.  
  447. remotes:WaitForChild("LoadSavedPets").OnClientEvent:Connect(function()
  448. for _, v in pairs(player.Pets:GetChildren()) do
  449. coroutine.wrap(createTemplate)(v.Name)
  450. end
  451. end)
  452.  
  453. 5 -- скрипт серверный делаем в starterplayer starterplayerScripts назовите его MainClient --
  454.  
  455. local players = game:GetService("Players")
  456. local tweenService = game:GetService("TweenService")
  457. local player = players.LocalPlayer
  458. local replicatedStorage = game:GetService("ReplicatedStorage")
  459. local runService = game:GetService("RunService")
  460.  
  461. local player = game.Players.LocalPlayer
  462.  
  463. local remotes = replicatedStorage:WaitForChild("Remotes")
  464. local playerGui = player:WaitForChild("PlayerGui")
  465. local mainSS = playerGui:WaitForChild("MainSS")
  466. local doorsPurchaseUI = mainSS:WaitForChild("PurchaseArea")
  467. local despawnedDrops = replicatedStorage:WaitForChild("DespawnedDrops")
  468. local currencyDropper = require(script.Parent:WaitForChild("CurrencyDropper"))
  469.  
  470. local areaBuyBtnConnection
  471. local db = {}
  472. local distance = 12
  473.  
  474. local function destroyDrop(drop)
  475. local result = remotes.AwardOnDestroy:InvokeServer(drop.Name, drop.PrimaryPart.CFrame)
  476. task.wait(0.5)
  477. local oldParent = drop.Parent
  478. drop.Parent = despawnedDrops
  479. task.wait(1)
  480. drop.Health.Value = drop.MaxHealth.Value
  481. drop.HealthDisplay.Enabled = false
  482. drop.Parent = oldParent
  483. end
  484.  
  485. remotes.DropCoins.OnClientEvent:Connect(function(cf, guids)
  486. currencyDropper.DropCurrency(replicatedStorage.Assets.CurrencyDrops.CoinDrop, 5, cf + Vector3.new(0, 4, 0), guids)
  487. end)
  488.  
  489. remotes.PromptPurchaseDoor.OnClientEvent:Connect(function(door)
  490. doorsPurchaseUI.Visible = true
  491. doorsPurchaseUI.PurchaseText.Text = "Would you like to purchase this area for"..door.Price.Value.." Coins"
  492.  
  493. areaBuyBtnConnection = doorsPurchaseUI.Buy.MouseButton1Click:Connect(function()
  494. local result = remotes.PurchaseDoor:InvokeServer(door)
  495. if result == true then
  496. door:Destroy()
  497. end
  498. areaBuyBtnConnection:Disconnect()
  499. doorsPurchaseUI.Visible = false
  500. end)
  501. end)
  502.  
  503. doorsPurchaseUI.Close.MouseButton1Click:Connect(function()
  504. doorsPurchaseUI.Visible = false
  505. end)
  506.  
  507. remotes.ToggleBillboard.OnClientEvent:Connect(function(drop, bool)
  508. drop.HealthDisplay.Enabled = bool
  509. end)
  510.  
  511. remotes.RemoveDoor.OnClientEvent:Connect(function(door)
  512. door:Destroy()
  513. end)
  514.  
  515. task.spawn(function()
  516. while task.wait(1) do
  517. if player.Values.SentTo.Value ~= nil then
  518. local damage = player.Values.Damage.Value
  519. player.Values.SentTo.Value.Health.Value = math.max(player.Values.SentTo.Value.Health.Value - damage, 0)
  520. if player.Values.SentTo.Value.Health.Value == 0 then
  521. remotes.StopDamaging:FireServer()
  522. destroyDrop(player.Values.SentTo.Value)
  523. end
  524. end
  525. end
  526. end)
  527.  
  528. runService.Heartbeat:Connect(function()
  529. for _, drop in pairs(workspace:WaitForChild("Folder"):WaitForChild("Drops"):GetDescendants()) do
  530. if drop:IsA("Model") then
  531. local healthDisplay = drop:FindFirstChild("HealthDisplay")
  532. local bar = healthDisplay.Background.Bar
  533. local healthDisplayText = healthDisplay.Background.HealthDisplayLabel
  534.  
  535. healthDisplayText.Text = drop.Health.Value
  536. bar:TweenSize(UDim2.fromScale(drop.Health.Value/drop.MaxHealth.Value, 1), Enum.EasingDirection.Out, Enum.EasingStyle.Sine, 0.3)
  537.  
  538. end
  539. end
  540. end)
  541.  
  542. runService.RenderStepped:Connect(function()
  543. local character = player.Character or player.CharacterAdded:Wait()
  544.  
  545. if character then
  546. for _, v in pairs(workspace:WaitForChild("Folder"):WaitForChild("CurrencyDrops"):GetChildren()) do
  547. if (v.Position - character.PrimaryPart.Position).Magnitude <= distance and v:FindFirstChild("CanCollect") then
  548. v.Anchored = true
  549. tweenService:Create(v, TweenInfo.new(0.2), {CFrame = character.HumanoidRootPart.CFrame}):Play()
  550. if (v.Position - character.PrimaryPart.Position).Magnitude <= 3 then
  551. if not db[v] then
  552. db[v] = true
  553.  
  554. remotes.GiveCoins:FireServer(v.ID.Value)
  555. task.wait(5)
  556. db[v] = nil
  557. end
  558. v:Destroy()
  559. end
  560. end
  561. end
  562. end
  563. end)
  564.  
  565. 6 -- скрипт серверный делаем в starterplayer starterplayerScripts назовите его CurrencyDropper --
  566.  
  567. local module = {}
  568.  
  569. local radius = 5
  570.  
  571. function module.DropCurrency(object, amount, cf, guids)
  572. for i = 1, amount do
  573. task.spawn(function()
  574. local drop = object:Clone()
  575. drop.Parent = workspace.Folder.CurrencyDrops
  576.  
  577. local id = Instance.new("StringValue")
  578. id.Value = guids[i]
  579. id.Name = "ID"
  580. id.Parent = drop
  581.  
  582. local angle = i * (math.pi * 2 / amount)
  583. local x = math.cos(angle) * radius
  584. local z = math.sin(angle) * radius
  585.  
  586. local position = (cf * CFrame.new(x, 0, z)).Position
  587.  
  588. local direction = position - cf.Position
  589. local force = direction + Vector3.new(math.random(-2, 2), 5, math.random(-2, 2))
  590.  
  591. drop.Position = cf.Position
  592.  
  593. drop.AssemblyLinearVelocity = force * drop.AssemblyMass
  594.  
  595. task.wait(1)
  596.  
  597. local canCollect = Instance.new("StringValue")
  598. canCollect.Name = "CanCollect"
  599. canCollect.Parent = drop
  600. end)
  601. end
  602. end
  603.  
  604. return module
  605.  
  606. 7 -- делаем скрипт в Portal1 --
  607.  
  608. local ProximityPrompt = script.Parent
  609. ProximityPrompt.Triggered:Connect(function(player)
  610. player.Character.HumanoidRootPart.Position = workspace.Teleport.World2.Position
  611. end)
  612.  
  613. 8 -- делаем скипт в Portal --
  614.  
  615. local ProximityPrompt = script.Parent
  616. ProximityPrompt.Triggered:Connect(function(player)
  617. player.Character.HumanoidRootPart.Position = workspace.Teleport.World1.Position
  618. end)
  619.  
  620.  
  621.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement