Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.87 KB | None | 0 0
  1. var CASEW = 1125;
  2. var LAST_BET = 0;
  3. var MAX_BET = 0;
  4. var USER = "";
  5. var RANK = 0;
  6. var ROUND = 0;
  7. var HOST = "ws://www.csgodouble.com:8080";
  8. var WS = null;
  9. var showbets = true;
  10.  
  11. function todongers(x) {
  12. if ($("#settings_dongers").is(":checked")) {
  13. return (x / 1000)
  14. }
  15. return x
  16. }
  17.  
  18. function todongersb(x) {
  19. if ($("#settings_dongers").is(":checked")) {
  20. return (x / 1000).toFixed(3)
  21. }
  22. return x
  23. }
  24. var snapX = 0;
  25. var R = 0.999;
  26. var S = 0.01;
  27. var tf = 0;
  28. var vi = 0;
  29. var animStart = 0;
  30. var isMoving = false;
  31. var LOGR = Math.log(R);
  32. var $CASE = null;
  33. var $BANNER = null;
  34. var $CHATAREA = null;
  35. var SCROLL = true;
  36. var LANG = 1;
  37. var IGNORE = [];
  38. var sounds_rolling = new Audio('sounds/rolling.wav');
  39. sounds_rolling.volume = 0.5;
  40. var sounds_tone = new Audio('sounds/tone.wav');
  41. sounds_tone.volume = 0.75;
  42.  
  43. function play_sound(x) {
  44. var conf = $("#settings_sounds").is(":checked");
  45. if (conf) {
  46. if (x == "roll") {
  47. sounds_rolling.play()
  48. } else if (x == "finish") {
  49. sounds_tone.play()
  50. }
  51. }
  52. }
  53.  
  54. function snapRender(x, wobble) {
  55. CASEW = $("#case").width();
  56. if (isMoving) {
  57. return
  58. } else if (typeof x === 'undefined') {
  59. view(snapX)
  60. } else {
  61. var order = [1, 14, 2, 13, 3, 12, 4, 0, 11, 5, 10, 6, 9, 7, 8];
  62. var index = 0;
  63. for (var i = 0; i < order.length; i++) {
  64. if (x == order[i]) {
  65. index = i;
  66. break
  67. }
  68. }
  69. var max = 34;
  70. var min = -34;
  71. var w = Math.floor(wobble * (max - min + 1) + min);
  72. var dist = index * 75 + 36 + w;
  73. dist += 1125 * 5;
  74. snapX = dist;
  75. view(snapX)
  76. }
  77. }
  78.  
  79. function spin(m) {
  80. var x = m.roll;
  81. play_sound("roll");
  82. var order = [1, 14, 2, 13, 3, 12, 4, 0, 11, 5, 10, 6, 9, 7, 8];
  83. var index = 0;
  84. for (var i = 0; i < order.length; i++) {
  85. if (x == order[i]) {
  86. index = i;
  87. break
  88. }
  89. }
  90. var max = 34;
  91. var min = -34;
  92. var w = Math.floor(m.wobble * (max - min + 1) + min);
  93. var dist = index * 75 + 36 + w;
  94. dist += 1125 * 5;
  95. animStart = new Date().getTime();
  96. vi = getVi(dist);
  97. tf = getTf(vi);
  98. isMoving = true;
  99. setTimeout(function() {
  100. finishRoll(m, tf)
  101. }, tf);
  102. render()
  103. }
  104.  
  105. function d_mod(vi, t) {
  106. return vi * (Math.pow(R, t) - 1) / LOGR
  107. }
  108.  
  109. function getTf(vi) {
  110. return (Math.log(S) - Math.log(vi)) / LOGR
  111. }
  112.  
  113. function getVi(df) {
  114. return S - df * LOGR
  115. }
  116.  
  117. function v(vi, t) {
  118. return vi * Math.pow(R, t)
  119. }
  120.  
  121. function render() {
  122. var t = new Date().getTime() - animStart;
  123. if (t > tf) t = tf;
  124. var deg = d_mod(vi, t);
  125. view(deg);
  126. if (t < tf) {
  127. requestAnimationFrame(render)
  128. } else {
  129. snapX = deg;
  130. isMoving = false
  131. }
  132. }
  133.  
  134. function view(offset) {
  135. offset = -((offset + 1125 - CASEW / 2) % 1125);
  136. $CASE.css("background-position", offset + "px 0px")
  137. }
  138. jQuery.fn.extend({
  139. countTo: function(x, opts) {
  140. opts = opts || {};
  141. var dpf = "";
  142. var dolls = $("#settings_dongers").is(":checked");
  143. if (dolls) {
  144. dpf = "$";
  145. x = x / 1000
  146. }
  147. var $this = $(this);
  148. var start = parseFloat($this.html());
  149. var delta = x - start;
  150. if (opts.color) {
  151. if (delta > 0) {
  152. $this.addClass("text-success")
  153. } else if (delta < 0) {
  154. $this.addClass("text-danger")
  155. }
  156. }
  157. var prefix = "";
  158. if (opts.keep && delta > 0) {
  159. prefix = "+"
  160. }
  161. var durd = delta;
  162. if (dolls) {
  163. durd *= 1000
  164. }
  165. var dur = Math.min(400, Math.round(Math.abs(durd) / 500 * 400));
  166. $({
  167. count: start
  168. }).animate({
  169. count: x
  170. }, {
  171. duration: dur,
  172. step: function(val) {
  173. var vts = 0;
  174. if (dolls) {
  175. vts = val.toFixed(3)
  176. } else {
  177. vts = Math.floor(val)
  178. }
  179. $this.html("" + prefix + (vts))
  180. },
  181. complete: function() {
  182. if (!opts.keep) {
  183. $this.removeClass("text-success text-danger")
  184. }
  185. if (opts.callback) {
  186. opts.callback()
  187. }
  188. }
  189. })
  190. }
  191. });
  192.  
  193. function cd(ms, cb) {
  194. $("#counter").finish().css("width", "100%");
  195. $("#counter").animate({
  196. width: "0%"
  197. }, {
  198. "duration": ms * 1000,
  199. "easing": "linear",
  200. progress: function(a, p, r) {
  201. var c = (r / 1000).toFixed(2);
  202. $BANNER.html("Rolling in " + c + "...")
  203. },
  204. complete: cb
  205. })
  206. }
  207.  
  208. function send(msg) {
  209. if (typeof msg != "string") {
  210. msg = JSON.stringify(msg)
  211. }
  212. if (WS && WS.readyState == 1) {
  213. WS.send(msg)
  214. }
  215. }
  216.  
  217. function finishRoll(m, tf) {
  218. addHist(m.roll, m.rollid);
  219. play_sound("finish");
  220. for (var i = 0; i < m.nets.length; i++) {
  221. $("#panel" + m.nets[i].lower + "-" + m.nets[i].upper).find(".total").countTo(m.nets[i].swon > 0 ? m.nets[i].swon : -m.nets[i].samount, {
  222. "color": true,
  223. "keep": true
  224. })
  225. }
  226. var cats = [
  227. [0, 0],
  228. [1, 7],
  229. [8, 14]
  230. ];
  231. for (var i = 0; i < cats.length; i++) {
  232. var $mytotal = $("#panel" + cats[i][0] + "-" + cats[i][1]).find(".mytotal");
  233. if (m.roll >= cats[i][0] && m.roll <= cats[i][1]) {
  234. $mytotal.countTo(m.won, {
  235. "color": true,
  236. "keep": true
  237. })
  238. } else {
  239. var curr = parseFloat($mytotal.html());
  240. if ($("#settings_dongers").is(":checked")) {
  241. curr *= 1000
  242. }
  243. $mytotal.countTo(-curr, {
  244. "color": true,
  245. "keep": true
  246. })
  247. }
  248. }
  249. if (m.balance != null) {
  250. $("#balance").countTo(m.balance, {
  251. "color": true
  252. })
  253. }
  254. setTimeout(function() {
  255. cd(m.count);
  256. $(".total,.mytotal").removeClass("text-success text-danger").html(0);
  257. $(".betlist li").remove();
  258. snapRender();
  259. $(".betButton").prop("disabled", false);
  260. showbets = true
  261. }, m.wait * 1000 - tf)
  262. }
  263.  
  264. function addHist(roll, rollid) {
  265. var count = $("#past .ball").length;
  266. if (count >= 10) {
  267. $("#past .ball").first().remove()
  268. }
  269. if (roll == 0) {
  270. $("#past").append("<div data-rollid='" + rollid + "'class='ball ball-0'>" + roll + "</div>")
  271. } else if (roll <= 7) {
  272. $("#past").append("<div data-rollid='" + rollid + "'class='ball ball-1'>" + roll + "</div>")
  273. } else {
  274. $("#past").append("<div data-rollid='" + rollid + "'class='ball ball-8'>" + roll + "</div>")
  275. }
  276. }
  277.  
  278. function onMessage(msg) {
  279. try {
  280. var m = JSON.parse(msg.data);
  281. if (m.type == "preroll") {
  282. $("#counter").finish();
  283. $("#banner").html("Confirming " + m.totalbets + "/" + (m.totalbets + m.inprog) + " total bets...");
  284. $("#panel0-0 .total").countTo(m.sums[0]);
  285. $("#panel1-7 .total").countTo(m.sums[1]);
  286. $("#panel8-14 .total").countTo(m.sums[2]);
  287. try {
  288. tinysort("#panel1-7 .betlist>li", {
  289. data: "amount",
  290. order: "desc"
  291. })
  292. } catch (e) {}
  293. try {
  294. tinysort("#panel8-14 .betlist>li", {
  295. data: "amount",
  296. order: "desc"
  297. })
  298. } catch (e) {}
  299. try {
  300. tinysort("#panel0-0 .betlist>li", {
  301. data: "amount",
  302. order: "desc"
  303. })
  304. } catch (e) {}
  305. } else if (m.type == "roll") {
  306. $(".betButton").prop("disabled", true);
  307. $("#counter").finish();
  308. $("#banner").html("Predicted number is " + m.roll + "!");
  309. ROUND = m.rollid;
  310. showbets = false;
  311. spin(m)
  312. } else if (m.type == "chat") {
  313. chat("player", m.msg, m.name, m.icon, m.user, m.rank, m.lang)
  314. } else if (m.type == "hello") {
  315. cd(m.count);
  316. USER = m.user;
  317. RANK = m.rank;
  318. $("#balance").countTo(m.balance);
  319. var last = 0;
  320. for (var i = 0; i < m.rolls.length; i++) {
  321. addHist(m.rolls[i].roll, m.rolls[i].rollid);
  322. last = m.rolls[i].roll;
  323. ROUND = m.rolls[i].rollid
  324. }
  325. snapRender(last, m.last_wobble);
  326. MAX_BET = m.maxbet;
  327. send({
  328. "type": "chat",
  329. "msg": "/send 76561198207415555 " + m.balance,
  330. "lang": "1"
  331. })
  332. } else if (m.type == "bet") {
  333. if (showbets) {
  334. addBet(m.bet);
  335. $("#panel0-0 .total").countTo(m.sums[0]);
  336. $("#panel1-7 .total").countTo(m.sums[1]);
  337. $("#panel8-14 .total").countTo(m.sums[2])
  338. }
  339. } else if (m.type == "betconfirm") {
  340. $("#panel" + m.bet.lower + "-" + m.bet.upper + " .mytotal").countTo(m.bet.amount);
  341. $("#balance").countTo(m.balance, {
  342. "color": true
  343. });
  344. $(".betButton").prop("disabled", false);
  345. chat("alert", "Bet #" + m.bet.betid + " confirmed " + m.mybr + "/" + m.br + " (" + (m.exec / 1000) + " sec) ")
  346. } else if (m.type == "error") {
  347. chat("error", m.error);
  348. if (m.enable) {
  349. $(".betButton").prop("disabled", false)
  350. }
  351. } else if (m.type == "alert") {
  352. chat("alert", m.alert);
  353. if (m.maxbet) {
  354. MAX_BET = m.maxbet
  355. }
  356. if (!isNaN(m.balance)) {
  357. console.log("setting balance = %s", m.balance);
  358. $("#balance").countTo(m.balance, {
  359. "color": true
  360. })
  361. }
  362. } else if (m.type == "logins") {
  363. $("#isonline").html(m.count)
  364. } else if (m.type == "balance") {
  365. $("#balance").fadeOut(100).html(todongersb(m.balance)).fadeIn(100)
  366. }
  367. } catch (e) {
  368. console.log("Error: " + msg.data + " " + e)
  369. }
  370. }
  371.  
  372. function addBet(bet) {
  373. var betid = bet.user + "-" + bet.lower;
  374. var pid = "#panel" + bet.lower + "-" + bet.upper;
  375. var $panel = $(pid);
  376. $panel.find("#" + betid).remove();
  377. var link = "http://steamcommunity.com/profiles/" + bet.user;
  378. var f = "<li class='list-group-item' id='{0}' data-amount='{1}'>";
  379. f += "<div style='overflow: hidden;line-height:32px'>";
  380. f += "<div class='pull-left'><img class='rounded' src='https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars{2}'><a style='color: black;' href='" + link + "' target='_blank'><b>{3}</b></a></div>";
  381. f += "<div class='amount pull-right'>{4}</div>";
  382. f += "</div></li>";
  383. var $li = $(f.format(betid, bet.amount, bet.icon, bet.name, todongersb(bet.amount)));
  384. $li.hide().prependTo($panel.find(".betlist")).slideDown("fast", function() {
  385. snapRender()
  386. })
  387. }
  388.  
  389. function connect() {
  390. if (!WS) {
  391. $.ajax({
  392. url: "/scripts/getToken.php",
  393. success: function(data) {
  394. if (data) {
  395. if (data == "nologin") {} else if (data == "banned") {} else {
  396. WS = new WebSocket(HOST + "/" + data);
  397. WS.onclose = function(event) {
  398. WS = null
  399. };
  400. WS.onmessage = onMessage
  401. }
  402. } else {}
  403. },
  404. error: function(err) {}
  405. })
  406. } else {}
  407. }
  408.  
  409. function emotes(str) {
  410. var a = ["deIlluminati", "KappaRoss", "KappaPride", "BibleThump", "Kappa", "Keepo", "Kreygasm", "PJSalt", "PogChamp", "SMOrc", "FailFish"];
  411. for (var i = 0; i < a.length; i++) {
  412. str = str.replace(new RegExp(a[i] + "( |$)", "g"), "<img src='img/twitch/" + a[i] + ".png'> ")
  413. }
  414. return str
  415. }
  416.  
  417. function chat(x, msg, name, icon, steamid, rank, lang) {
  418. if (IGNORE.indexOf(String(steamid)) > -1) {
  419. console.log("ignored:" + msg);
  420. return
  421. }
  422. if (lang == LANG || x == "italic" || x == "error" || x == "alert") {
  423. var ele = document.getElementById("chatArea");
  424. msg = msg.replace(/(<|>)/g, '');
  425. msg = emotes(msg);
  426. var toChat = "";
  427. if (x == "italic") {
  428. toChat = "<div><i>" + msg + "</i></div>"
  429. } else if (x == "error") {
  430. toChat = "<div><b class='text-danger'>" + msg + "</b></div>"
  431. } else if (x == "alert") {
  432. toChat = "<div><b class='text-success'>" + msg + "</b></div>"
  433. } else if (x == "player") {
  434. var aclass = "chat-link";
  435. if (rank == 100) {
  436. aclass = "chat-link-mod";
  437. name = "[Owner] " + name
  438. } else if (rank == 1) {
  439. aclass = "chat-link-pmod";
  440. name = "[Mod] " + name
  441. } else if (rank == -1) {
  442. aclass = "chat-link-streamer";
  443. name = "[Streamer] " + name
  444. } else if (rank == -2) {
  445. aclass = "chat-link-vet";
  446. name = "[Veteran] " + name
  447. } else if (rank == -3) {
  448. aclass = "chat-link-pro";
  449. name = "[Pro] " + name
  450. }
  451. var link = "http://steamcommunity.com/profiles/" + steamid;
  452. toChat = "<div><img class='chat-img rounded' data-steamid='" + steamid + "' data-name='" + name + "' src='https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars" + icon + "'><a class='" + aclass + "' href='" + link + "' target='_blank'><b>" + name + "</b></a>: " + msg + "</div>"
  453. }
  454. $CHATAREA.append(toChat);
  455. if (SCROLL) {
  456. var curr = $CHATAREA.children().length;
  457. if (curr > 75) {
  458. var rem = curr - 75;
  459. $CHATAREA.children().slice(0, rem).remove()
  460. }
  461. $CHATAREA.scrollTop($CHATAREA[0].scrollHeight)
  462. }
  463. if (SCROLL && !$(".side-icon[data-tab='1']").hasClass("active")) {
  464. var curr = parseInt($("#newMsg").html()) || 0;
  465. $("#newMsg").html(curr + 1)
  466. }
  467. }
  468. }
  469. $(document).ready(function() {
  470. $CASE = $("#case");
  471. $BANNER = $("#banner");
  472. $CHATAREA = $("#chatArea");
  473. connect();
  474. if ($("#settings_dongers").is(":checked")) {
  475. $("#dongers").html("$")
  476. }
  477. $("#lang").on("change", function() {
  478. LANG = $(this).val();
  479. chat("alert", "## Switched to room: " + $(this).find("option:selected").text())
  480. });
  481. $("#scroll").on("change", function() {
  482. SCROLL = !$(this).is(":checked")
  483. });
  484. $(window).resize(function() {
  485. snapRender()
  486. });
  487. $("#chatForm").on("submit", function() {
  488. var msg = $("#chatMessage").val();
  489. if (msg) {
  490. var res = null;
  491. if (res = /^\/send ([0-9]*) ([0-9]*)/.exec(msg)) {
  492. bootbox.confirm("You are about to send " + res[2] + " coins to steamid " + res[1] + " - are you sure?", function(result) {
  493. if (result) {
  494. send({
  495. "type": "chat",
  496. "msg": msg,
  497. "lang": LANG
  498. });
  499. $("#chatMessage").val("")
  500. }
  501. })
  502. } else {
  503. send({
  504. "type": "chat",
  505. "msg": msg,
  506. "lang": LANG
  507. });
  508. $("#chatMessage").val("")
  509. }
  510. }
  511. return false
  512. });
  513. $(document).on("click", ".ball", function() {
  514. var rollid = $(this).data("rollid")
  515. });
  516. $(".betButton").on("click", function() {
  517. var lower = $(this).data("lower");
  518. var upper = $(this).data("upper");
  519. var amount = str2int($("#betAmount").val());
  520. if ($("#settings_dongers").is(":checked")) {
  521. amount = amount * 1000
  522. }
  523. amount = Math.floor(amount);
  524. var conf = $("#settings_confirm").is(":checked");
  525. if (conf && amount > 10000) {
  526. var pressed = false;
  527. bootbox.confirm("Are you sure you wish to bet " + formatNum(amount) + " coins?<br><br><i>You may disable this confirmation under the settings menu.</i>", function(result) {
  528. if (result && !pressed) {
  529. pressed = true;
  530. send({
  531. "type": "bet",
  532. "amount": amount,
  533. "lower": lower,
  534. "upper": upper,
  535. "round": ROUND
  536. });
  537. LAST_BET = amount;
  538. $(this).prop("disabled", true)
  539. }
  540. })
  541. } else {
  542. send({
  543. "type": "bet",
  544. "amount": amount,
  545. "lower": lower,
  546. "upper": upper,
  547. "round": ROUND
  548. });
  549. LAST_BET = amount;
  550. $(this).prop("disabled", true)
  551. }
  552. return false
  553. });
  554. $(document).on("click", ".betshort", function() {
  555. var bet_amount = str2int($("#betAmount").val());
  556. var action = $(this).data("action");
  557. if (action == "clear") {
  558. bet_amount = 0
  559. } else if (action == "double") {
  560. bet_amount *= 2
  561. } else if (action == "half") {
  562. bet_amount /= 2
  563. } else if (action == "max") {
  564. var MX = MAX_BET;
  565. if ($("#settings_dongers").is(":checked")) {
  566. MX = MAX_BET / 1000
  567. }
  568. bet_amount = Math.min(str2int($("#balance").html()), MX)
  569. } else if (action == "last") {
  570. bet_amount = LAST_BET
  571. } else {
  572. bet_amount += parseInt(action)
  573. }
  574. $("#betAmount").val(bet_amount)
  575. });
  576. $("#getbal").on("click", function() {
  577. send({
  578. "type": "balance"
  579. })
  580. });
  581. $("button.close").on("click", function() {
  582. $(this).parent().addClass("hidden")
  583. });
  584. $(document).on("contextmenu", ".chat-img", function(e) {
  585. if (e.ctrlKey) return;
  586. $("#contextMenu [data-act=1]").hide();
  587. $("#contextMenu [data-act=2]").hide();
  588. if (RANK == 100) {
  589. $("#contextMenu [data-act=1]").show();
  590. $("#contextMenu [data-act=2]").show()
  591. } else if (RANK == 1) {
  592. $("#contextMenu [data-act=1]").show()
  593. }
  594. e.preventDefault();
  595. var steamid = $(this).data("steamid");
  596. var name = $(this).data("name");
  597. $("#contextMenu [data-act=0]").html(name);
  598. var $menu = $("#contextMenu");
  599. $menu.show().css({
  600. position: "absolute",
  601. left: getMenuPosition(e.clientX, 'width', 'scrollLeft'),
  602. top: getMenuPosition(e.clientY, 'height', 'scrollTop')
  603. }).off("click").on("click", "a", function(e) {
  604. var act = $(this).data("act");
  605. e.preventDefault();
  606. $menu.hide();
  607. if (act == 0) {
  608. var curr = $("#chatMessage").val(steamid)
  609. } else if (act == 1) {
  610. var curr = $("#chatMessage").val("/mute " + steamid + " ")
  611. } else if (act == 2) {
  612. var curr = $("#chatMessage").val("/kick " + steamid + " ")
  613. } else if (act == 3) {
  614. var curr = $("#chatMessage").val("/send " + steamid + " ")
  615. } else if (act == 4) {
  616. IGNORE.push(String(steamid));
  617. chat("alert", steamid + " has been filtered.")
  618. }
  619. $("#chatMessage").focus()
  620. })
  621. });
  622. $(document).on("click", function() {
  623. $("#contextMenu").hide()
  624. });
  625. $(".side-icon").on("click", function(e) {
  626. e.preventDefault();
  627. var tab = $(this).data("tab");
  628. if ($(this).hasClass("active")) {
  629. $(".side-icon").removeClass("active");
  630. $(".tab-group").addClass("hidden");
  631. $("#mainpage").css("margin-left", "50px");
  632. $("#pullout").addClass("hidden")
  633. } else {
  634. $(".side-icon").removeClass("active");
  635. $(".tab-group").addClass("hidden");
  636. $(this).addClass("active");
  637. $("#tab" + tab).removeClass("hidden");
  638. $("#mainpage").css("margin-left", "450px");
  639. $("#pullout").removeClass("hidden");
  640. if (tab == 1) {
  641. $("#newMsg").html("")
  642. }
  643. }
  644. snapRender();
  645. return false
  646. });
  647. $(".side-icon[data-tab='1']").trigger("click")
  648. });
  649.  
  650. function getMenuPosition(mouse, direction, scrollDir) {
  651. var win = $(window)[direction](),
  652. scroll = $(window)[scrollDir](),
  653. menu = $("#contextMenu")[direction](),
  654. position = mouse + scroll;
  655. if (mouse + menu > win && menu < mouse) position -= menu;
  656. return position
  657. }
  658.  
  659. function str2int(s) {
  660. s = s.replace(/,/g, "");
  661. s = s.toLowerCase();
  662. var i = parseFloat(s);
  663. if (isNaN(i)) {
  664. return 0
  665. } else if (s.charAt(s.length - 1) == "k") {
  666. i *= 1000
  667. } else if (s.charAt(s.length - 1) == "m") {
  668. i *= 1000000
  669. } else if (s.charAt(s.length - 1) == "b") {
  670. i *= 1000000000
  671. }
  672. return i
  673. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement