smoothretro1982

Infinity bot (update 4)

Mar 6th, 2026 (edited)
72
0
Never
4
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.45 KB | None | 0 0
  1. (function() {
  2.  
  3. //---------------- VARIABLES ----------------
  4. let a = []
  5. let b = 0
  6. let c = ""
  7. let d = 0
  8. let h = 0
  9. let num = 0
  10. let t = new Date()
  11. let time = t.getTime()
  12. let save = 0
  13. let u = 0
  14. let ud = 0
  15.  
  16. let step = 1
  17. let paused = false
  18. let direction = 1
  19.  
  20. let lastX = null
  21. let lastY = null
  22. let lastLen = 0
  23.  
  24. let showMillis = true
  25. let showCanvas = false
  26. let tickerEnabled = true
  27. let countMode = "time"
  28.  
  29. //---------------- CANVAS ----------------
  30. let canvas = document.createElement("canvas")
  31. let ctx = canvas.getContext("2d")
  32. canvas.style.position = "fixed"
  33. canvas.style.left = "0"
  34. canvas.style.top = "0"
  35. canvas.style.pointerEvents = "none"
  36. canvas.style.zIndex = "9998"
  37. document.body.appendChild(canvas)
  38.  
  39. function resizeCanvas() {
  40. canvas.width = window.innerWidth
  41. canvas.height = window.innerHeight
  42. }
  43. window.addEventListener("resize", resizeCanvas)
  44. resizeCanvas()
  45.  
  46. //---------------- HUD ----------------
  47. let hud = document.createElement("div")
  48. hud.style.position = "fixed"
  49. hud.style.top = "20px"
  50. hud.style.left = "20px"
  51. hud.style.background = "rgba(0,0,0,0.8)"
  52. hud.style.color = "#0f0"
  53. hud.style.fontFamily = "monospace"
  54. hud.style.zIndex = "9999"
  55. hud.style.border = "1px solid #0f0"
  56. hud.style.minWidth = "200px"
  57.  
  58. // TITLE BAR
  59. let titleBar = document.createElement("div")
  60. titleBar.textContent = "Ticker HUD"
  61. titleBar.style.background = "#111"
  62. titleBar.style.padding = "4px"
  63. titleBar.style.cursor = "move"
  64. titleBar.style.borderBottom = "1px solid #0f0"
  65. titleBar.style.fontWeight = "bold"
  66.  
  67. // HUD CONTENT
  68. let hudContent = document.createElement("div")
  69. hudContent.style.padding = "6px"
  70.  
  71. let hudText = document.createElement("div")
  72. hudText.textContent = "Ticker Ready"
  73.  
  74. // ON/OFF BUTTON
  75. let toggleRunBtn = document.createElement("button")
  76. toggleRunBtn.textContent = "Turn OFF"
  77. toggleRunBtn.onclick = () => {
  78. tickerEnabled = !tickerEnabled
  79. toggleRunBtn.textContent = tickerEnabled ? "Turn OFF" : "Turn ON"
  80. }
  81.  
  82. // CANVAS BUTTON
  83. let toggleCanvasBtn = document.createElement("button")
  84. toggleCanvasBtn.textContent = "Toggle Canvas"
  85. toggleCanvasBtn.onclick = () => showCanvas = !showCanvas
  86.  
  87. // MILLIS BUTTON
  88. let toggleMillisBtn = document.createElement("button")
  89. toggleMillisBtn.textContent = "Toggle ms"
  90. toggleMillisBtn.onclick = () => showMillis = !showMillis
  91.  
  92. // COUNT MODE DROPDOWN
  93. let modeSelect = document.createElement("select")
  94. let modes = [
  95. ["time", "Time"],
  96. ["integer", "Seconds"],
  97. ["alpha", "Alphabet"],
  98. ["omega", "Omega"],
  99. ["hex", "Hexadecimal"],
  100. ["binary", "Binary"],
  101. ["roman", "Roman Numerals"],
  102. ["romanAlpha", "Roman+Alpha"],
  103. ["lettersNum", "Letters+Number"],
  104. ["base36", "Base36"],
  105. ["countup", "Count Up"],
  106. ["countdown", "Count Down"],
  107. ["octal", "Octal"],
  108. ["base7", "Base7"],
  109. ["base5", "Base5"],
  110. ["romanLower", "Roman Lower"],
  111. ["romanExtended", "Roman Extended"],
  112. ["fibonacci", "Fibonacci"],
  113. ["prime", "Prime"],
  114. ["square", "Square"],
  115. ["cube", "Cube"],
  116. ["factorial", "Factorial"],
  117. ["scientific", "Scientific"],
  118. ["emoji", "Emoji"],
  119. ["morse", "Morse"]
  120. ]
  121. modes.forEach(m => {
  122. let o = document.createElement("option")
  123. o.value = m[0]
  124. o.textContent = m[1]
  125. modeSelect.appendChild(o)
  126. })
  127. modeSelect.onchange = () => {
  128. countMode = modeSelect.value
  129. }
  130.  
  131. hudContent.appendChild(hudText)
  132. hudContent.appendChild(toggleRunBtn)
  133. hudContent.appendChild(toggleCanvasBtn)
  134. hudContent.appendChild(toggleMillisBtn)
  135. hudContent.appendChild(modeSelect)
  136.  
  137. // CLOSE BUTTON
  138. let closeBtn = document.createElement("button")
  139. closeBtn.textContent = "Close"
  140. closeBtn.onclick = () => {
  141. hud.remove()
  142. canvas.remove()
  143. }
  144. hudContent.appendChild(closeBtn)
  145.  
  146. hud.appendChild(titleBar)
  147. hud.appendChild(hudContent)
  148. document.body.appendChild(hud)
  149.  
  150. //---------------- DRAG SYSTEM ----------------
  151. let dragging = false
  152. let offsetX = 0
  153. let offsetY = 0
  154.  
  155. titleBar.addEventListener("mousedown", (e) => {
  156. dragging = true
  157. offsetX = e.clientX - hud.offsetLeft
  158. offsetY = e.clientY - hud.offsetTop
  159. })
  160.  
  161. document.addEventListener("mouseup", () => {
  162. dragging = false
  163. })
  164. document.addEventListener("mousemove", (e) => {
  165. if (!dragging) return
  166. hud.style.left = (e.clientX - offsetX) + "px"
  167. hud.style.top = (e.clientY - offsetY) + "px"
  168. })
  169.  
  170. //---------------- OMEGA ----------------
  171. function omega(n) {
  172. num = 1
  173. a = []
  174. h = 64
  175. while (n > h) {
  176. h = h + h
  177. }
  178. while (h != 32) {
  179. ud = (n * num) % h
  180. u = 1
  181. while (ud >= h / 2) {
  182. u *= 2;
  183. ud = (ud * 2) % h
  184. }
  185. num *= u
  186. a.push(u)
  187. h /= 2
  188. }
  189. return a
  190. }
  191.  
  192. function infinity(n) {
  193. return omega(n)
  194. }
  195.  
  196. //---------------- ALPHABET COUNTERS ----------------
  197. function alphaCounter(n) {
  198. let s = ""
  199. n++
  200. while (n > 0) {
  201. n--
  202. s = String.fromCharCode(97 + (n % 26)) + s
  203. n = Math.floor(n / 26)
  204. }
  205. return s
  206. }
  207.  
  208. function toRoman(num) {
  209. if (num <= 0) return ""
  210. const romans = [
  211. ["M", 1000],
  212. ["CM", 900],
  213. ["D", 500],
  214. ["CD", 400],
  215. ["C", 100],
  216. ["XC", 90],
  217. ["L", 50],
  218. ["XL", 40],
  219. ["X", 10],
  220. ["IX", 9],
  221. ["V", 5],
  222. ["IV", 4],
  223. ["I", 1]
  224. ]
  225. let res = ""
  226. for (let [r, val] of romans) {
  227. while (num >= val) {
  228. res += r;
  229. num -= val
  230. }
  231. }
  232. return res
  233. }
  234.  
  235. function lettersNumCounter(n) {
  236. return alphaCounter(n) + n
  237. }
  238.  
  239. // Base conversions
  240. function toBase(n, base) {
  241. return n.toString(base)
  242. }
  243.  
  244. // Fibonacci
  245. function fibonacci(n) {
  246. let a = 0,
  247. b = 1
  248. if (n === 0) return 0
  249. for (let i = 1; i < n; i++) {
  250. let t = a + b;
  251. a = b;
  252. b = t
  253. }
  254. return b
  255. }
  256.  
  257. // Prime
  258. function nthPrime(n) {
  259. let primes = [],
  260. i = 2
  261. while (primes.length <= n) {
  262. let isPrime = true
  263. for (let p of primes) {
  264. if (i % p === 0) {
  265. isPrime = false;
  266. break
  267. }
  268. }
  269. if (isPrime) primes.push(i)
  270. i++
  271. }
  272. return primes[n]
  273. }
  274.  
  275. // Square, Cube
  276. function square(n) {
  277. return n * n
  278. }
  279.  
  280. function cube(n) {
  281. return n * n * n
  282. }
  283.  
  284. // Factorial
  285. function factorial(n) {
  286. return n <= 1 ? 1 : n * factorial(n - 1)
  287. }
  288.  
  289. // Scientific
  290. function sci(n) {
  291. return n.toExponential(3)
  292. }
  293.  
  294. // Emoji mapping
  295. const emojiMap = ["😀", "😁", "😂", "😃", "😄", "😅", "😆", "😉", "😊", "😋"]
  296.  
  297. function emojiCounter(n) {
  298. return emojiMap[n % emojiMap.length]
  299. }
  300.  
  301. // Morse numbers
  302. const morseMap = ["-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."]
  303.  
  304. function morseCounter(n) {
  305. return n.toString().split("").map(d => morseMap[parseInt(d)]).join(" ")
  306. }
  307.  
  308. //---------------- UPDATE LOOP ----------------
  309. function update() {
  310. if (tickerEnabled && d % 7 == 0) {
  311. t = new Date()
  312. if (!paused) {
  313. b = ((t.getTime() - time) / 1000) * step * direction + save
  314. }
  315. let n = Math.floor(b)
  316. let bStr = showMillis ? b.toFixed(3) : n
  317.  
  318. // COUNT MODE SELECTION
  319. let out = ""
  320. switch (countMode) {
  321. case "time":
  322. out = bStr;
  323. break
  324. case "integer":
  325. out = n;
  326. break
  327. case "alpha":
  328. out = alphaCounter(n);
  329. break
  330. case "omega":
  331. out = infinity(n).join();
  332. break
  333. case "hex":
  334. out = n.toString(16);
  335. break
  336. case "binary":
  337. out = n.toString(2);
  338. break
  339. case "roman":
  340. out = toRoman(n);
  341. break
  342. case "romanAlpha":
  343. out = toRoman(n) + " (" + alphaCounter(n) + ")";
  344. break
  345. case "lettersNum":
  346. out = lettersNumCounter(n);
  347. break
  348. case "base36":
  349. out = n.toString(36);
  350. break
  351. case "countup":
  352. out = n;
  353. break
  354. case "countdown":
  355. out = 9999 - n;
  356. break
  357. case "octal":
  358. out = toBase(n, 8);
  359. break
  360. case "base7":
  361. out = toBase(n, 7);
  362. break
  363. case "base5":
  364. out = toBase(n, 5);
  365. break
  366. case "romanLower":
  367. out = toRoman(n).toLowerCase();
  368. break
  369. case "romanExtended":
  370. out = (n > 3999 ? toRoman(3999) + "+" : toRoman(n));
  371. break
  372. case "fibonacci":
  373. out = fibonacci(n);
  374. break
  375. case "prime":
  376. out = nthPrime(n);
  377. break
  378. case "square":
  379. out = square(n);
  380. break
  381. case "cube":
  382. out = cube(n);
  383. break
  384. case "factorial":
  385. out = factorial(n);
  386. break
  387. case "scientific":
  388. out = sci(b);
  389. break
  390. case "emoji":
  391. out = emojiCounter(n);
  392. break
  393. case "morse":
  394. out = morseCounter(n);
  395. break
  396. default:
  397. out = bStr;
  398. break
  399. }
  400. c = out
  401.  
  402. // CANVAS MODE
  403. if (showCanvas) {
  404. let x = cursor.x
  405. let y = cursor.y
  406.  
  407. if (lastX !== null) {
  408. cursor.x = lastX
  409. cursor.y = lastY
  410. for (let i = 0; i < lastLen; i++) {
  411. writeChar(" ", 1)
  412. }
  413. }
  414.  
  415. cursor.x = x
  416. cursor.y = y
  417. for (let i = 0; i < c.length; i++) {
  418. writeChar(c[i], 1)
  419. }
  420.  
  421. ctx.clearRect(0, 0, canvas.width, canvas.height)
  422. ctx.font = "16px monospace"
  423. ctx.fillStyle = "#00ff00"
  424.  
  425. // Move 1 character to the right
  426. let px = (x + 1) * 10
  427. let py = y * 18
  428. ctx.fillText(c, px, py)
  429.  
  430. lastX = x
  431. lastY = y
  432. lastLen = c.length
  433.  
  434. cursor.x = x
  435. cursor.y = y
  436. }
  437. // HUD MODE
  438. else {
  439. ctx.clearRect(0, 0, canvas.width, canvas.height)
  440. hudText.textContent = c
  441. }
  442. }
  443. d++;
  444. requestAnimationFrame(update)
  445. }
  446. requestAnimationFrame(update)
  447.  
  448. //---------------- CHAT COMMANDS ----------------
  449. w.on("msg", (data) => {
  450. if (data.nick != "CalculatorBot") return
  451. if (data.msg.startsWith("save ")) save = Number(data.msg.substring(5)) - b
  452. if (data.msg === "toggleMillis") showMillis = !showMillis
  453. if (data.msg === "pauseTimer") paused = true
  454. if (data.msg === "resumeTimer") paused = false;
  455. time = new Date().getTime()
  456. if (data.msg === "resetTimer") b = 0;
  457. save = 0;
  458. time = new Date().getTime()
  459. if (data.msg === "countdown") direction = -1
  460. if (data.msg === "countup") direction = 1
  461. if (data.msg === "reverseTimer") direction *= -1
  462. if (data.msg.startsWith("setTime ")) {
  463. let val = Number(data.msg.split(" ")[1]);
  464. if (!isNaN(val)) {
  465. b = val;
  466. save = val;
  467. time = new Date().getTime()
  468. }
  469. }
  470. if (data.msg.startsWith("setStep ")) {
  471. let val = Number(data.msg.split(" ")[1]);
  472. if (!isNaN(val)) {
  473. step = val
  474. }
  475. }
  476. })
  477. })();
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
Add Comment
Please, Sign In to add comment