Advertisement
Guest User

OU Logo

a guest
Apr 2nd, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.38 KB | None | 0 0
  1. //Version 1.0 (I guess)
  2.  
  3. OFFSET_X = 0;
  4. OFFSET_Y = 922;
  5.  
  6. waitDuration = 5;
  7. modHash = null;
  8.  
  9. //white: 0, lightGrey: 1, grey: 2, black: 3,
  10. //pink: 4, red: 5, orange: 6, brown: 7,
  11. //yellow: 8, lightGreen: 9, green: 10, cyan: 11,
  12. //teal: 12, blue: 13, fuchsia: 14, purple: 15
  13. f = -1;
  14.  
  15. // A modification of https://pastebin.com/diTKQgX2 originally intended for this Star Citizen logo: https://i.imgur.com/L1fAeTY.png
  16. // Repurposed by /u/Kicooi for OU logo
  17. image = [[0,0,0,0,3,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0,0],
  18.         [0,0,0,3,5,5,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0],
  19.         [0,0,3,5,5,5,5,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0],
  20.         [0,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0,0,0,0],
  21.         [3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0],
  22.         [3,5,5,5,5,5,3,3,3,3,3,3,3,5,5,5,5,5,0,0,0,0,0,0,0,0],
  23.         [3,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0],
  24.         [3,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0],
  25.         [3,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0],
  26.         [3,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,5,0,0,0,0,0,0,0,0],
  27.         [3,5,5,5,5,5,0,3,3,3,3,3,0,5,5,5,5,5,0,2,3,3,3,3,2,0],
  28.         [3,5,5,5,5,5,3,5,5,5,5,5,3,5,5,5,5,5,0,3,5,5,5,5,3,0],
  29.         [3,5,5,5,5,5,3,5,5,5,5,5,3,5,5,5,5,5,0,3,5,5,5,5,3,0],
  30.         [3,5,5,5,5,5,3,5,5,5,5,5,3,5,5,5,5,5,0,3,5,5,5,5,3,0],
  31.         [3,5,5,5,5,5,3,5,5,5,5,5,3,5,5,5,5,5,0,3,5,5,5,5,3,0],
  32.         [3,5,5,5,5,5,3,5,5,5,5,5,3,5,5,5,5,5,0,3,5,5,5,5,3,0],
  33.         [3,5,5,5,5,5,3,5,5,5,5,5,3,5,5,5,5,5,0,3,5,5,5,5,3,0],
  34.         [3,5,5,5,5,5,3,5,5,5,5,5,3,5,5,5,5,5,0,3,5,5,5,5,3,0],
  35.         [3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,3,5,5,5,5,3,0],
  36.         [3,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,0,3,5,5,5,5,3,0],
  37.         [0,3,2,5,5,5,5,5,5,5,5,5,5,5,5,5,2,0,0,3,5,5,5,5,3,0],
  38.         [0,0,3,2,5,5,5,5,5,5,5,5,5,5,5,2,0,0,0,3,5,5,5,5,3,0],
  39.         [0,0,0,3,2,5,5,5,5,5,5,5,5,5,2,0,0,0,0,3,5,5,5,5,3,0],
  40.         [0,0,0,0,3,2,2,5,5,5,5,5,2,2,0,0,0,0,0,3,5,5,5,5,3,0],
  41.         [0,0,0,0,0,0,3,5,5,5,5,5,3,0,0,0,0,0,0,3,5,5,5,5,3,0],
  42.         [0,0,0,0,0,0,3,5,5,5,5,5,3,0,0,0,0,0,0,3,5,5,5,5,3,0],
  43.         [0,0,0,0,0,0,3,5,5,5,5,5,2,3,3,3,3,3,2,5,5,5,5,5,3,0],
  44.         [0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,0],
  45.         [0,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,0,0],
  46.         [0,0,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,5,5,5,5,3,0,0,0],
  47.         [0,0,0,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,5,5,3,0,0,0,0],
  48. [0,0,0,0,0,0,0,0,0,0,3,5,5,5,5,5,5,5,5,5,3,0,0,0,0,0]
  49. [0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0]];
  50.  
  51.  
  52. function start(x, y) {
  53.     OFFSET_X = !x ? OFFSET_X : x;
  54.     OFFSET_Y = !y ? OFFSET_Y : y;
  55.     modHash = getModHash();
  56.     main(0, 0);
  57. }
  58.  
  59. function main(x, y) {
  60.     var timer = drawIfNecessary(x, y);
  61.     log('waiting ' + timer + ' milliseconds');
  62.     x = (x + 1) % image[y].length;
  63.     if (x === 0) {
  64.         y = (y + 1) % image.length;
  65.     }
  66.     setTimeout(main, timer, x, y);
  67. }
  68.  
  69. function drawIfNecessary(x, y) {
  70.     if (image[y][x] < 0) return 0;
  71.     canvasX = x + OFFSET_X;
  72.     canvasY = y + OFFSET_Y;
  73.     var pixelColour = pixelRequest(canvasX, canvasY);
  74.     log('found pixel colour ' + pixelColour + ' at ' + canvasX + ',' +canvasY);
  75.     var desiredColour = image[y][x];
  76.     if (pixelColour == -1)
  77.     {
  78.         desiredColour = pixelColour
  79.     }
  80.     return (pixelColour == desiredColour) ? 5 : draw(canvasX, canvasY, desiredColour);
  81. }
  82.  
  83.  
  84. function sendSynchronousRequest(method, url, headers, params) {
  85.     var xhr = new XMLHttpRequest();
  86.     xhr.open(method, url, false);
  87.     for (var h in headers) {
  88.         xhr.setRequestHeader(h, headers[h]);
  89.     }
  90.     var firstParam = true;
  91.     var paramString = '';
  92.     for (var p in params) {
  93.         if (firstParam) {
  94.             firstParam = false;
  95.         } else {
  96.             paramString += '&';
  97.         }
  98.         paramString += p + '=' + params[p];
  99.     }
  100.     xhr.send(paramString);
  101.     return xhr;
  102. }
  103.  
  104.  
  105. function getModHash() {
  106.     var xhr = sendSynchronousRequest('GET', 'api/me.json', {}, {});
  107.    
  108.     if (xhr.readyState !== 4) throw 'oh shit';
  109.     if (xhr.status !== 200) {
  110.         alert("Couldn't obtain modhash. Are you logged into Reddit?");
  111.         throw 'bollocks';
  112.     }
  113.     var response = JSON.parse(xhr.responseText);
  114.     return response.data.modhash;
  115. }
  116.  
  117.  
  118. function pixelRequest(x, y) {
  119.     var url = '/api/place/pixel.json?x=' + x + '&y=' + y;
  120.    
  121.     var xhr = sendSynchronousRequest('GET', url, {
  122.         'x-requested-with': 'XMLHttpRequest',
  123.         'x-modhash': modHash
  124.     }, {});
  125.    
  126.     if (xhr.readyState !== 4) throw 'oh shit';
  127.     if (xhr.status !== 200) {
  128.         log(xhr);
  129.         //throw 'bollocks';
  130.         return -1;
  131.     }
  132.     else
  133.     {
  134.     var response = JSON.parse(xhr.responseText);
  135.     return response.color;
  136.     }
  137.    
  138. }
  139.  
  140.  
  141. function draw(x, y, colour) {
  142.     log('attempting to draw a pixel at (' + x + ',' + y + ')');
  143.     var xhr = sendSynchronousRequest('POST', '/api/place/draw.json', {
  144.         'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
  145.         'x-requested-with': 'XMLHttpRequest',
  146.         'x-modhash': modHash
  147.     }, {
  148.         x: x,
  149.         y: y,
  150.         color: colour
  151.     });
  152.    
  153.     if (xhr.readyState !== 4) throw 'oh shit';
  154.     if (xhr.status !== 200 && xhr.status !== 429) {
  155.         log(xhr);
  156.         throw 'bollocks';
  157.     }
  158.     var response = JSON.parse(xhr.responseText);
  159.     return response.wait_seconds * 1000;
  160. }
  161.  
  162.  
  163. function log(message) {
  164.     var d = new Date();
  165.     var YYYY = d.getFullYear();
  166.     var MM = ('0' + (d.getMonth() + 1)).slice(-2);
  167.     var DD = ('0' + d.getDate()).slice(-2);
  168.     var hh = ('0' + d.getHours()).slice(-2);
  169.     var mm = ('0' + d.getMinutes()).slice(-2);
  170.     var ss = ('0' + d.getSeconds()).slice(-2);
  171.     var dateString = '[' + YYYY + '/' + MM + '/' + DD + ' ' + hh + ':' + mm + ':' + ss + ']';
  172.     console.log(dateString, message);
  173. }
  174.  
  175.  
  176. function setOffsets(x, y) {
  177.     OFFSET_X = x;
  178.     OFFSET_Y = y;
  179.     log('Moving image origin to (' + x + ',' + y + ')');
  180. }
  181.  
  182.  
  183. start();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement