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
|
import settings from "../../settings";
import constants from "../../util/constants";
import axios from "../../../axios"
import { getObjectValue } from "../../util/helperFunctions"
const cwGui = new Gui()
let txt = "Please set your api key with /cw setkey (key)!"
let cwValues = [],
calcCwPerHr = false,
upTimeTrack = false,
uptime = 0,
coleweight = 0,
baseColeweight = 0,
stepsSinceLast = 0,
coleweightHr = 0,
cwValuesSum = 0,
cwInfo
export function openCwGui()
{
cwGui.open()
}
export function reloadColeweight()
{
upTimeTrack = false
stepsSinceLast = 0
cwValues = []
uptime = 0
ChatLib.chat(`${constants.PREFIX}&bReloaded!`)
}
register("dragged", (dx, dy, x, y) => {
if (!cwGui.isOpen()) return
constants.data.x = x
constants.data.y = y
constants.data.save()
})
register("renderOverlay", () => {
if (cwGui.isOpen())
{
if (constants.data.api_key != undefined)
txt = "Click anywhere to move!"
Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2)
Renderer.drawStringWithShadow(txt, Renderer.screen.getWidth()/2 - Renderer.getStringWidth(txt)/2, Renderer.screen.getHeight()/2)
Renderer.drawStringWithShadow(`&aCW: &b0\n&aCW/hr: &b0\n&aUptime: &b0m\n&aColeweight Gained: &b0`, constants.data.x, constants.data.y)
}
if(!settings.cwToggle || constants.data.api_key == undefined) return
let coleweightMessage = "",
uptimeHr = Math.floor(uptime/60/60)
coleweight > 1000 ?coleweightMessage = `&b${coleweight.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`: coleweightMessage = `&b${coleweight.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`
if(cwValues[0] != undefined && upTimeTrack && calcCwPerHr)
{
cwValuesSum = 0
for(let i = 0; i < cwValues.length; i++)
cwValuesSum += cwValues[i]
let eq = Math.ceil((cwValuesSum*(3600/uptime)) * 100) / 100
eq != Infinity ? coleweightHr = eq : coleweightHr = "Calculating..."
calcCwPerHr = false
}
if (cwGui.isOpen() || !upTimeTrack) return
if(uptimeHr >= 1)
Renderer.drawStringWithShadow(`&aCW: &b${coleweightMessage}\n&aCW/hr: &b${coleweightHr}\n&aUptime: &b${uptimeHr}h ${Math.floor(uptime/60) - uptimeHr*60}m\n&aColeweight Gained: &b${Math.ceil(cwValuesSum*100) / 100}`, constants.data.x, constants.data.y)
else
Renderer.drawStringWithShadow(`&aCW: &b${coleweightMessage}\n&aCW/hr: &b${coleweightHr}\n&aUptime: &b${Math.floor(uptime/60)}m ${Math.floor(uptime%60)}s\n&aColeweight Gained: &b${Math.ceil(cwValuesSum*100) / 100}`, constants.data.x, constants.data.y)
})
register("step", () => {
// updates coleweight for gui
let date_ob = new Date(),
seconds = date_ob.getSeconds(),
cwinfo = constants.CWINFO
if(upTimeTrack == true)
uptime += 1
if((seconds == 0 || seconds == 15 || seconds == 30 || seconds == 45) && settings.cwToggle && cwinfo.length > 1)
{
try
{
let tempUuid = Player.getUUID(),
profileData = "",
tempColeweight = 0,
uuid = ""
for(let i = 0; i < tempUuid.length; i++)
{
if(tempUuid[i] != "-")
uuid += tempUuid[i]
}
axios.get(`https://api.hypixel.net/skyblock/profiles?key=${constants.data.api_key}&uuid=${uuid}`)
.then(res => {
for(let i=0; i < res.data.profiles.length; i+=1)
{
if(res.data.profiles[i].selected == true)
profileData = res.data.profiles[i]
}
for(let i = 0; i < cwinfo.length; i++)
{
let source = getObjectValue(profileData.members[uuid], cwinfo[i].path),
source2 = getObjectValue(profileData.members[uuid], cwinfo[i].path2),
eq
if(source == undefined) continue
eq = Math.ceil(source/cwinfo[i].cost*100) / 100
if(source2 != undefined)
eq = Math.ceil((source+source2)/cwinfo[i].cost*100) / 100
if(eq != undefined)
tempColeweight += eq
}
if(baseColeweight == 0) // case: first run
{
baseColeweight = tempColeweight
}
else if((tempColeweight - baseColeweight) > 0) // case: new coleweight
{
cwValues.push(tempColeweight - baseColeweight)
calcCwPerHr = true
upTimeTrack = true
stepsSinceLast = 0
baseColeweight = tempColeweight
}
else if(stepsSinceLast > 20) // case: over 5m have passed with no cw updates
{
uptime = 0
upTimeTrack = false
stepsSinceLast = 0
cwValues = []
}
else // case: none of the above
{
stepsSinceLast += 1
}
coleweight = Math.ceil(tempColeweight*100)/100
})
}
catch(e) { if(settings.debug) console.log(e) }
}
}).setFps(1)
|