MyMunzeeClans

my Munzee clan script

  1. // ==UserScript==
  2. // @name MyMunzeeClans
  3. // @namespace MyMunzeeClans
  4. // @include https://www.munzee.com/clans/*
  5. // @version 1.0.1
  6. // @grant none
  7. // @description my Munzee clan script
  8. // ==/UserScript==
  9.  
  10. jQuery(document).ready(function ($) {
  11. var colors = [ 'rgba(225, 225, 225, 0.9);',
  12. 'rgba(197, 100, 100, 0.8);',
  13. 'rgba(141, 197, 62, 0.9);',
  14. 'rgba(197, 140, 60, 0.9);',
  15. 'rgba(157, 157, 157, 0.9);',
  16. 'rgba(197, 197, 60, 0.9);',
  17. 'rgba(197, 197, 60, 0.9);' ];
  18. var targetsDict = {
  19. 'lvl_1_target': 'Click pencil to change target.',
  20. 'lvl_1_reward': 'Click pencil to change reward.',
  21. 'lvl_1_mdep': 0, 'lvl_1_mcap': 0, 'lvl_1_mcon': 0, 'lvl_1_mtot': 0,
  22. 'lvl_1_cdep': 0, 'lvl_1_ccap': 0, 'lvl_1_ccon': 0, 'lvl_1_ctot': 0,
  23. 'lvl_2_target': 'Click pencil to change target.',
  24. 'lvl_2_reward': 'Click pencil to change reward.',
  25. 'lvl_2_mdep': 0, 'lvl_2_mcap': 0, 'lvl_2_mcon': 0, 'lvl_2_mtot': 0,
  26. 'lvl_2_cdep': 0, 'lvl_2_ccap': 0, 'lvl_2_ccon': 0, 'lvl_2_ctot': 0,
  27. 'lvl_3_target': 'Click pencil to change target.',
  28. 'lvl_3_reward': 'Click pencil to change reward.',
  29. 'lvl_3_mdep': 0, 'lvl_3_mcap': 0, 'lvl_3_mcon': 0, 'lvl_3_mtot': 0,
  30. 'lvl_3_cdep': 0, 'lvl_3_ccap': 0, 'lvl_3_ccon': 0, 'lvl_3_ctot': 0,
  31. 'lvl_4_target': 'Click pencil to change target.',
  32. 'lvl_4_reward': 'Click pencil to change reward.',
  33. 'lvl_4_mdep': 0, 'lvl_4_mcap': 0, 'lvl_4_mcon': 0, 'lvl_4_mtot': 0,
  34. 'lvl_4_cdep': 0, 'lvl_4_ccap': 0, 'lvl_4_ccon': 0, 'lvl_4_ctot': 0,
  35. 'lvl_5_target': 'Click pencil to change target.',
  36. 'lvl_5_reward': 'Click pencil to change reward.',
  37. 'lvl_5_mdep': 0, 'lvl_5_mcap': 0, 'lvl_5_mcon': 0, 'lvl_5_mtot': 0,
  38. 'lvl_5_cdep': 0, 'lvl_5_ccap': 0, 'lvl_5_ccon': 0, 'lvl_5_ctot': 0,
  39. }
  40. // Cookies
  41. function createCookie(name, value, days) {
  42. if (days) {
  43. var date = new Date();
  44. date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  45. var expires = "; expires=" + date.toGMTString();
  46. }
  47. else var expires = "";
  48.  
  49. document.cookie = name + "=" + value + expires + "; path=/clans/";
  50. }
  51.  
  52. function readCookie(name) {
  53. var nameEQ = name + "=";
  54. var ca = document.cookie.split(';');
  55. for (var i = 0; i < ca.length; i++) {
  56. var c = ca[i];
  57. while (c.charAt(0) == ' ') c = c.substring(1, c.length);
  58. if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  59. }
  60. return null;
  61. }
  62.  
  63. function readTargetsTable() {
  64. var value;
  65. $.each(targetsDict, function (key, data) {
  66. value = readCookie(key);
  67. if (value != null) {
  68. targetsDict[key] = value;
  69. }
  70. });
  71. }
  72. function createTargetItem(name, size, maxlength) {
  73. return '<span class="canbechanged" id="' + name + 'D"></span><input class="inchange" type="text" size="' + size + '" maxlength="' + maxlength + '" id="' + name + 'I" style="display: none;">'
  74. }
  75. function createTargetsTable() {
  76. var spanStyle = 'cursor:pointer;';
  77. var targets;
  78. var i = 1;
  79. targets = '<table class="table"><thead>' +
  80. '<tr><th>Clan levels</th>' +
  81. '<th></th>' +
  82. '<th class="hidden-xs"><span class="inchange" style="display: none;">deploy<br>points</span></th>' +
  83. '<th class="hidden-xs"><span class="inchange" style="display: none;">capture<br>points</span></th>' +
  84. '<th class="hidden-xs"><span class="inchange" style="display: none;">capture on<br>points</span></th>' +
  85. '<th><span class="inchange" style="display: none;">total<br>points</span></th></tr>' +
  86. '</thead><tbody>';
  87. while (i <= 5) {
  88. targets += '<tr><td><div style="margin-left: 4px;"><div style="height: 32px; width: 32px; margin-bottom: 0px; border-radius: 16px;" class="progress progress-striped"><div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%; background-color: ' + colors[i] + ';"></div></div></div></td>' +
  89. '<td class="clan-member" colspan="6"><b>Level ' + i + '</b>' +
  90. '<div style="font-size: 10pt;">Targets:&nbsp;&nbsp;&nbsp;' + createTargetItem('lvl_' + i + '_target', 120, 256) + '</div>' +
  91. '<div style="font-size: 10pt;">Rewards:&nbsp;' + createTargetItem('lvl_' + i + '_reward', 120, 256) + '</div>' +
  92. '</td></tr>';
  93. targets += '<tr class="inchange" style="display: none;"><td></td>' +
  94. '<td class="clan-member"><i class="fa fa-user fa-fw"></i> Each member:</td>' +
  95. '<td class="hidden-xs">' + createTargetItem('lvl_' + i + '_mdep', 6, 6) + '</td>' +
  96. '<td class="hidden-xs">' + createTargetItem('lvl_' + i + '_mcap', 6, 6) + '</td>' +
  97. '<td class="hidden-xs">' + createTargetItem('lvl_' + i + '_mcon', 6, 6) + '</span></td>' +
  98. '<td class="visible-sm visible-md visible-lg">' + createTargetItem('lvl_' + i + '_mtot', 6, 6) + '</td>' +
  99. '<td class="visible-xs"></td>' +
  100. '</tr>';
  101. targets += '<tr class="inchange" style="display: none;"><td></td>' +
  102. '<td class="clan-member"><i class="fa fa-users fa-fw"></i> Clan total:</td>' +
  103. '<td class="hidden-xs">' + createTargetItem('lvl_' + i + '_cdep', 6, 6) + '</td>' +
  104. '<td class="hidden-xs">' + createTargetItem('lvl_' + i + '_ccap', 6, 6) + '</td>' +
  105. '<td class="hidden-xs">' + createTargetItem('lvl_' + i + '_ccon', 6, 6) + '</span></td>' +
  106. '<td class="visible-sm visible-md visible-lg">' + createTargetItem('lvl_' + i + '_ctot', 6, 6) + '</td>' +
  107. '<td class="visible-xs"></td>' +
  108. '</tr>';
  109. i++;
  110. }
  111. targets += '</tbody>' +
  112. '<tr class="total-points"><td colspan="2"></td><td class="hidden-xs"></td> <td class="hidden-xs"></td> <td class="hidden-xs"></td><td style="text-align: right;">' +
  113. '<i id="setinchange" class="fa fa-pencil fa-2x canbechanged" style="cursor: pointer;"></i>' +
  114. '<i id="saveinchange" class="fa fa-save fa-2x inchange" style="cursor: pointer; display: none;"></i>' +
  115. '</td></tr></table>';
  116. $('#munzee-holder').append(targets);
  117. }
  118. function populateTargetsTable() {
  119. $.each(targetsDict, function (key, data) {
  120. $(('#' + key + 'D')).text(data);
  121. $(('#' + key + 'I')).val(data);
  122. });
  123. }
  124. function writeTargetsTable() {
  125. $.each(targetsDict, function (key, data) {
  126. createCookie(key, data, 31)
  127. });
  128. }
  129. function setScore(obj, score, trans, lvl1, lvl2, lvl3, lvl4, lvl5) {
  130. var color;
  131. var percent = 0;
  132. var level = 0;
  133. var togo = 0;
  134. if (score < lvl1) {
  135. color = colors[1];
  136. level = 0;
  137. togo = lvl1 - score;
  138. percent = Math.floor(100 * (score / lvl1));
  139. }
  140. else if (score < lvl2) {
  141. color = colors[2];
  142. level = 1;
  143. togo = lvl2 - score;
  144. percent = Math.floor(100 * (score / lvl2));
  145. }
  146. else if (score < lvl3) {
  147. color = colors[3];
  148. level = 2;
  149. togo = lvl3 - score;
  150. percent = Math.floor(100 * (score / lvl3));
  151. }
  152. else if (score < lvl4) {
  153. color = colors[4];
  154. level = 3;
  155. togo = lvl4 - score;
  156. percent = Math.floor(100 * (score / lvl4));
  157. }
  158. else if (score < lvl5) {
  159. color = colors[5];
  160. level = 4;
  161. togo = lvl5 - score;
  162. percent = Math.floor(100 * (score / lvl5));
  163. }
  164. else if (lvl5 != 0) {
  165. color = colors[5];
  166. level = 5;
  167. togo = 0;
  168. percent = 100;
  169. }
  170. else {
  171. color = colors[0];
  172. level = '-';
  173. togo = '';
  174. percent = 100;
  175. }
  176. var bgcolor = '';
  177. if (!trans)
  178. bgcolor = ' color: #000; background-color: #fff;';
  179. var levelBuffer = '<div style="margin-top: 1px; padding: 2px;' + bgcolor + '">' +
  180. '<div style="height: 8px; margin-bottom: 0px; border-radius: 2px;" class="progress progress-striped">' +
  181. '<div class="progress-bar" role="progressbar" aria-valuenow="' + percent + '" aria-valuemin="0" aria-valuemax="100" style="width: ' + percent + '%; background-color: ' + color + '"></div></div>' +
  182. '<div style="font-size: 10px; float: left;">' + level + '</div>' +
  183. '<div style="font-size: 10px; float: right;">' + togo + '</div>' +
  184. '<div style="clear:both;height: 1px; overflow: hidden"></div>';
  185. $(obj).append(levelBuffer);
  186. }
  187. if ($('h3#weapons').length) {
  188. readTargetsTable();
  189. $('td.clan-member').each(function(i, obj) {
  190. obj = $(obj).next();
  191. setScore($(obj), $(obj).text().replace(/,/g, ''), true,
  192. Number(targetsDict['lvl_1_mdep']),
  193. Number(targetsDict['lvl_2_mdep']),
  194. Number(targetsDict['lvl_3_mdep']),
  195. Number(targetsDict['lvl_4_mdep']),
  196. Number(targetsDict['lvl_5_mdep']));
  197. obj = $(obj).next();
  198. setScore($(obj), $(obj).text().replace(/,/g, ''), true,
  199. Number(targetsDict['lvl_1_mcap']),
  200. Number(targetsDict['lvl_2_mcap']),
  201. Number(targetsDict['lvl_3_mcap']),
  202. Number(targetsDict['lvl_4_mcap']),
  203. Number(targetsDict['lvl_5_mcap']));
  204. obj = $(obj).next();
  205. setScore($(obj), $(obj).text().replace(/,/g, ''), true,
  206. Number(targetsDict['lvl_1_mcon']),
  207. Number(targetsDict['lvl_2_mcon']),
  208. Number(targetsDict['lvl_3_mcon']),
  209. Number(targetsDict['lvl_4_mcon']),
  210. Number(targetsDict['lvl_5_mcon']));
  211. obj = $(obj).next();
  212. setScore($(obj), $(obj).text().replace(/,/g, ''), true,
  213. Number(targetsDict['lvl_1_mtot']),
  214. Number(targetsDict['lvl_2_mtot']),
  215. Number(targetsDict['lvl_3_mtot']),
  216. Number(targetsDict['lvl_4_mtot']),
  217. Number(targetsDict['lvl_5_mtot']));
  218. });
  219.  
  220. var obj = $('tr.total-points td:first').next();
  221. setScore($(obj), $(obj).text().replace(/,/g, ''), false,
  222. Number(targetsDict['lvl_1_cdep']),
  223. Number(targetsDict['lvl_2_cdep']),
  224. Number(targetsDict['lvl_3_cdep']),
  225. Number(targetsDict['lvl_4_cdep']),
  226. Number(targetsDict['lvl_5_cdep']));
  227. obj = $(obj).next();
  228. setScore($(obj), $(obj).text().replace(/,/g, ''), false,
  229. Number(targetsDict['lvl_1_ccap']),
  230. Number(targetsDict['lvl_2_ccap']),
  231. Number(targetsDict['lvl_3_ccap']),
  232. Number(targetsDict['lvl_4_ccap']),
  233. Number(targetsDict['lvl_5_ccap']));
  234. obj = $(obj).next();
  235. setScore($(obj), $(obj).text().replace(/,/g, ''), false,
  236. Number(targetsDict['lvl_1_ccon']),
  237. Number(targetsDict['lvl_2_ccon']),
  238. Number(targetsDict['lvl_3_ccon']),
  239. Number(targetsDict['lvl_4_ccon']),
  240. Number(targetsDict['lvl_5_ccon']));
  241. obj = $(obj).next();
  242. setScore($(obj), $(obj).text().replace(/,/g, ''), false,
  243. Number(targetsDict['lvl_1_ctot']),
  244. Number(targetsDict['lvl_2_ctot']),
  245. Number(targetsDict['lvl_3_ctot']),
  246. Number(targetsDict['lvl_4_ctot']),
  247. Number(targetsDict['lvl_5_ctot']));
  248. createTargetsTable();
  249. populateTargetsTable();
  250. writeTargetsTable();
  251. }
  252. // show input
  253. $(document).on('click', '#setinchange', function () {
  254. $('.canbechanged').hide();
  255. $('.inchange').show();
  256. });
  257. // save input
  258. $(document).on('click', '#saveinchange', function () {
  259. $.each(targetsDict, function (key, data) {
  260. targetsDict[key] = $(('#' + key + 'I')).val();
  261. });
  262. writeTargetsTable();
  263. document.location.reload(true);
  264. });
  265. });
  266.