-
Notifications
You must be signed in to change notification settings - Fork 0
/
pooptyc.lua
293 lines (237 loc) · 9.41 KB
/
pooptyc.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
local localtycoon = nil
local previousPosition
local player = game.Players.LocalPlayer
local username = player.Name
function tp(part)
player.Character:WaitForChild('HumanoidRootPart').CFrame = part.CFrame
end
local Rayfield = loadstring(game:HttpGet('https://raw.githubusercontent.com/shlexware/Rayfield/main/source'))()
for i, tycoon in ipairs(workspace.Tycoons:getChildren()) do
if tycoon:IsA("Folder") and tycoon.TycoonOwner.Value == username then
localtycoon = tycoon
break
end
end
if localtycoon == nil then
for i, tycoon in ipairs(workspace.Tycoons:getChildren()) do
if tycoon:IsA("Folder") and tycoon.TycoonOwner.Value == 'None' then
tp(tycoon.Claim.Claim)
localtycoon = tycoon
break
end
end
end
local startMoney = player.Data.Cash.Value
local startDeals = player.leaderstats.Deals.Value
function sell()
if not requireKick() then
-- Store the current position
previousPosition = player.Character.HumanoidRootPart
local storage = localtycoon.StaticItems.Storage1
local prevAmt = storage.Amt.Value
repeat
tp(storage)
fireproximityprompt(storage.ProximityPrompt)
task.wait()
until storage.Amt.Value > prevAmt or requireKick()
-- Teleport back to the previous position
tp(previousPosition)
end
end
function collect()
if not requireKick() then
previousPosition = player.Character.HumanoidRootPart
local activator = localtycoon.Belts.Belt1.Activator
local previnv = player.Data.Poop.Value
repeat
tp(activator)
fireproximityprompt(localtycoon.Belts.Belt1.Collector.Prox.ProximityPrompt)
task.wait()
until player.Data.Poop.Value > previnv or requireKick()
tp(previousPosition)
end
end
function kickAll()
previousPosition = player.Character.HumanoidRootPart
for i, pooper in ipairs(localtycoon.Items:getChildren()) do
if pooper:FindFirstChild('PoopReference') then
repeat
if pooper.NPC.HumanoidRootPart.ProximityPrompt.Enabled then
tp(pooper.NPC.HumanoidRootPart)
fireproximityprompt(pooper.NPC.HumanoidRootPart.ProximityPrompt)
task.wait()
end
until not pooper.NPC.HumanoidRootPart.ProximityPrompt.Enabled
end
end
end
function requireKick()
for i, pooper in ipairs(localtycoon.Items:getChildren()) do
if pooper:FindFirstChild('PoopReference') then
if pooper.NPC.HumanoidRootPart.ProximityPrompt.Enabled then
return true
end
end
end
return false
end
function unlockAllposs()
for i, purchase in ipairs(localtycoon.Purchases:getChildren()) do
local currentCash = player.Data.Cash.Value
if purchase:IsA('Part') then
if currentCash > purchase.Cost.Value and purchase.BillboardGui.Enabled then
repeat
if autobuy then
tp(purchase)
task.wait(1)
end
until not purchase.BillboardGui.Enabled
end
end
end
end
local Window = Rayfield:CreateWindow({
Name = "Pooper v1",
LoadingTitle = "pooping for you...",
LoadingSubtitle = "by GS",
ConfigurationSaving = {
Enabled = true,
FolderName = "FallAngelHub",
FileName = "SELL POOP TYCOON"
}
})
local Tab = Window:CreateTab("Main") -- Title, Image
local farmsection = Tab:CreateSection("Farm")
local autocollectandsellT = Tab:CreateToggle({
Name = "Auto collect & sell",
CurrentValue = false,
Flag = "AutoC&S", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
getgenv().autocollectandsell = Value
end
})
local autokickallT = Tab:CreateToggle({
Name = "Auto kick all",
CurrentValue = false,
Flag = "Autokick", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
getgenv().autokickall = Value
end
})
local autobuyT = Tab:CreateToggle({
Name = "Auto buy all",
CurrentValue = false,
Flag = "Autobuy", -- A flag is the identifier for the configuration file, make sure every element has a different flag if you're using configuration saving to ensure no overlaps
Callback = function(Value)
getgenv().autobuy = Value
end
})
spawn(function()
while task.wait() do
if autobuy then
unlockAllposs()
end
end
end)
spawn(function()
while task.wait() do
if autokickall then
kickAll()
end
end
end)
spawn(function()
while task.wait() do
if autocollectandsell then
local storage = localtycoon.StaticItems.Storage1
if storage.Amt.Value == 0 then
collect()
sell()
end
end
end
end)
local othersection = Tab:CreateSection("Other")
local Button = Tab:CreateButton({
Name = "Unlock sprint",
Callback = function()
player.Data.Sprint.Value = 1
end
})
local Button = Tab:CreateButton({
Name = "TP to hood",
Callback = function()
tp(localtycoon.Claim.Claim)
end
})
local Button = Tab:CreateButton({
Name = "Destroy UI",
Callback = function()
Rayfield:Destroy()
end
})
local statsTab = Window:CreateTab("Stats")
local autocollectandsellDurationL = statsTab:CreateLabel("Auto farm running for ")
local tycooninL = statsTab:CreateLabel("Tycoon: " .. localtycoon.name)
local storageL = statsTab:CreateLabel("Storage: " .. localtycoon.StaticItems.Storage1.Amt.Value .. '/' ..
localtycoon.StaticItems.Storage1.Max.Value)
local collecterL = statsTab:CreateLabel("Collecter: " .. localtycoon.Belts.Belt1.Activator.Amt.Value)
local moneyEarnedL = statsTab:CreateLabel("Money earned: " .. (player.Data.Cash.Value - startMoney))
local dealsMadeL = statsTab:CreateLabel("Deals made: " .. (player.leaderstats.Deals.Value - startDeals))
local othersection = statsTab:CreateSection("Speed")
local cashPerSecondL = statsTab:CreateLabel("0 cash/s")
local dealsPerSecondL = statsTab:CreateLabel("0 deals/s")
local collectedPerSecondL = statsTab:CreateLabel("0 poopCollected/s")
local autocollectandsellStartTime = tick()
local autocollectandsellActive = false
local pausedDuration = 0
local function formatDuration(duration)
local hours = math.floor(duration / 3600)
local minutes = math.floor((duration % 3600) / 60)
local seconds = math.floor(duration % 60)
return hours .. "hr " .. minutes .. "min " .. seconds .. "sec"
end
local function calculatePerSecond(value, duration)
return math.floor(value / duration)
end
spawn(function()
while true do
task.wait()
storageL:Set("Storage: " .. localtycoon.StaticItems.Storage1.Amt.Value .. '/' ..
localtycoon.StaticItems.Storage1.Max.Value)
collecterL:Set("Collecter: " .. localtycoon.Belts.Belt1.Activator.Amt.Value)
moneyEarnedL:Set("Money earned: " .. (player.Data.Cash.Value - startMoney))
dealsMadeL:Set("Deals made: " .. (player.leaderstats.Deals.Value - startDeals))
local isAutocollectandsellActive = autocollectandsell
if autocollectandsellActive then
local duration = tick() - autocollectandsellStartTime
autocollectandsellDurationL:Set("Auto farm running for " .. formatDuration(duration + pausedDuration))
local cashPerSecond = calculatePerSecond(player.Data.Cash.Value - (startMoney + pausedDuration), duration)
cashPerSecondL:Set(cashPerSecond .. " cash/s")
local dealsPerSecond = calculatePerSecond(player.leaderstats.Deals.Value - (startDeals + pausedDuration),
duration)
dealsPerSecondL:Set(dealsPerSecond .. " deals/s")
local collectedPerSecond = calculatePerSecond(localtycoon.Belts.Belt1.Activator.Amt.Value, duration)
collectedPerSecondL:Set(collectedPerSecond .. " poopCollected/s")
end
if isAutocollectandsellActive and not autocollectandsellActive then
autocollectandsellStartTime = tick()
elseif not isAutocollectandsellActive and autocollectandsellActive then
local pauseStartTime = tick()
pausedDuration = pausedDuration + (pauseStartTime - autocollectandsellStartTime)
end
autocollectandsellActive = isAutocollectandsellActive
end
end)
-- Extras
-- getgenv().SecureMode = true -- Only Set To True If Games Are Detecting/Crashing The UI
-- Rayfield:Destroy() -- Destroys UI
-- Rayfield:LoadConfiguration() -- Enables Configuration Saving
-- Section:Set("Section Example") -- Use To Update Section Text
-- Button:Set("Button Example") -- Use To Update Button Text
-- Toggle:Set(false) -- Use To Update Toggle
-- Slider:Set(10) -- Use To Update Slider Value
-- Label:Set("Label Example") -- Use To Update Label Text
-- Paragraph:Set({Title = "Paragraph Example", Content = "Paragraph Example"}) -- Use To Update Paragraph Text
-- Keybind:Set("RightCtrl") -- Keybind (string) -- Use To Update Keybind
-- Dropdown:Set("Option 2") -- The new option value -- Use To Update/Set New Dropdowns