BvS IGM

Larger text area with character counter for sending in game messages.

  1. // ==UserScript==
  2. // @name BvS IGM
  3. // @namespace BvS
  4. // @version 1.3
  5. // @history 1.3 New domain - animecubedgaming.com - Channel28
  6. // @history 1.2 Now https compatible (Updated by Channel28)
  7. // @history 1.1 Added grant permissions (Updated by Channel28)
  8. // @history 1.0 Initial Release
  9. // @description Larger text area with character counter for sending in game messages.
  10. // @include http*://*animecubed.com/billy/bvs/*
  11. // @include http*://*animecubedgaming.com/billy/bvs/*
  12. // @grant GM_log
  13. // ==/UserScript==
  14.  
  15. function escapeLength(m)
  16. {
  17. // Fixme
  18. return m.length;
  19. }
  20.  
  21. var player = document.getElementsByName("player")[0].value;
  22. var pwd = document.getElementsByName("pwd")[0].value;
  23.  
  24. if (!player || !pwd) {
  25. GM_log("Couldn't find player name and password");
  26. return;
  27. }
  28.  
  29. if (/billy.bvs.pages.main/.test(location.href)) {
  30. var oldForm = document.getElementsByName("msend")[0];
  31. if (!oldForm)
  32. return;
  33.  
  34. var newForm = document.createElement("form");
  35. newForm.innerHTML = '<input type="hidden" value="' + player + '" name="player"/>' +
  36. '<input type="hidden" value="' + pwd + '" name="pwd"/>' +
  37. 'Name: <input type="text" size="18" value="" name="msend1"/><br/>' +
  38. 'Message: <textarea name="msend2" style="height: auto;"></textarea><br/>' +
  39. '<div style="text-align: right; padding-right: 8px;"><span id="msgcounter">0</span>' +
  40. '&nbsp;/&nbsp;350 characters</div>' +
  41. '<input type="checkbox" value="1" name="msendcheck"/>&nbsp;This message is not inflam&shy;matory, ' +
  42. 'mature, spam, or an advertisement.<br/>' +
  43. '<a style="color: rgb(161, 0, 0); font-weight: bold;" onfocus="this.blur();" ' +
  44. 'href="javascript:document.msend.submit();">Send Message</a>';
  45. newForm.setAttribute("method", "post");
  46. newForm.setAttribute("name", "msend");
  47. newForm.setAttribute("action", "main.html");
  48. newForm.setAttribute("style", "font-size: 12px;");
  49.  
  50. oldForm.parentNode.replaceChild(newForm, oldForm);
  51.  
  52. document.getElementsByName("msend2")[0].addEventListener(
  53. 'keyup',
  54. function(event) {
  55. var ta = document.getElementsByName("msend2")[0];
  56. document.getElementById("msgcounter").firstChild.nodeValue = escapeLength(ta.value);
  57. return;
  58. },
  59. false);
  60. } else if (/billy.bvs.village/.test(location.href)) {
  61. var oldForm = document.getElementsByName("leavem")[0];
  62. if (!oldForm)
  63. return;
  64. var newForm = document.createElement("form");
  65. newForm.innerHTML = '<input type="hidden" value="' + player + '" name="player"/>' +
  66. '<input type="hidden" value="' + pwd + '" name="pwd"/>' +
  67. 'Leave a message! (No html, 200 characters max)' +
  68. '<span style="float: right"><span id="msgcounter">0</span>&nbsp;/&nbsp;200 characters</span>' +
  69. '<textarea value="" style="width: 100%;" name="messageleft"></textarea>' +
  70. '<p style="margin: 0; text-align: right;">' +
  71. '<a href="javascript:document.leavem.submit();" onfocus="this.blur();" style="color: black; ' +
  72. 'font-weight: bold;">Leave Message</a></p>';
  73. newForm.setAttribute("method", "post");
  74. newForm.setAttribute("name", "leavem");
  75. newForm.setAttribute("action", "village.html");
  76. newForm.setAttribute("style", "padding: 4px; margin: 4px 0 0 0; font-size: 12px; " +
  77. "border: 1px dotted rgb(161, 124, 4); background-color: rgb(234, 216, 195); text-align: left;");
  78.  
  79. // Leader broadcast option
  80. if (document.getElementsByName("sendtoall")[0]) {
  81. var p = document.createElement("p");
  82. p.innerHTML = '<input type="checkbox" name="sendtoall" value="go" />' +
  83. 'Broadcast to all Villagers (Leader only)';
  84. p.setAttribute("style", "margin: 0; float: left");
  85. var node = newForm.getElementsByTagName("p")[0];
  86. node.parentNode.insertBefore(p, node);
  87. }
  88.  
  89. oldForm.parentNode.replaceChild(newForm, oldForm);
  90.  
  91. document.getElementsByName("messageleft")[0].addEventListener(
  92. 'keyup',
  93. function(event) {
  94. var ta = document.getElementsByName("messageleft")[0];
  95. document.getElementById("msgcounter").firstChild.nodeValue = escapeLength(ta.value);
  96. return;
  97. },
  98. false);
  99.  
  100. }