Advertisement
LGPvS

owop text bot

Sep 9th, 2018
638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. //Ctrl + Shift + C to open Console
  2. //--------------------------------
  3. //Then >>> Copy & Paste the code shown below to run the script
  4. //*JavaScript code used
  5. //--------------------------------
  6. OWOP.tool.addToolObject(new OWOP.tool.class("Text", OWOP.cursors.write, OWOP.fx.player.NONE, OWOP.RANK.NONE, function(tool) {
  7. var xPos = null;
  8. var yPos = null;
  9. var fonts = {};
  10. var font = null;
  11.  
  12. var fontInput = new OWOP.windowSys.class.input("Choose Font", 955, "number", function(value) {
  13. var id = parseInt(value);
  14. if (id in fonts) {
  15. font = id;
  16. return;
  17. }
  18.  
  19. var xhttp = new XMLHttpRequest();
  20. xhttp.addEventListener("load", function() {
  21. var source = xhttp.responseXML.body.children[2].innerHTML;
  22. var data = JSON.parse(source.match(/loadData\('(.+)'\)/)[1]);
  23. var meta = source.match(/drawSample\('',([0-9]+),(-?[0-9]+)\)/);
  24. data.letterspace = parseInt(meta[1]);
  25. data.monospacewidth = parseInt(meta[2]);
  26.  
  27. fonts[id] = data;
  28. font = id;
  29. });
  30. xhttp.open("GET", "https://cors-anywhere.herokuapp.com/http://www.pentacom.jp/pentacom/bitfontmaker2/gallery/?id=" + id);
  31. xhttp.responseType = "document";
  32. xhttp.send();
  33. });
  34.  
  35. var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
  36. chars += "¡¢£€¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
  37. chars += "ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž";
  38.  
  39. tool.setFxRenderer(function (fx, ctx, time) {
  40. var x = fx.extra.player.x;
  41. var y = fx.extra.player.y;
  42. if (xPos !== null && yPos !== null) {
  43. x = xPos * 16;
  44. y = yPos * 16;
  45. }
  46. var fxx = (Math.floor(x / 16) - OWOP.camera.x) * OWOP.camera.zoom;
  47. var fxy = (Math.floor(y / 16) - OWOP.camera.y) * OWOP.camera.zoom;
  48. ctx.globalAlpha = 0.8;
  49. ctx.strokeStyle = fx.extra.player.htmlRgb;
  50. ctx.strokeRect(fxx, fxy, OWOP.camera.zoom, OWOP.camera.zoom * 12);
  51. return 0;
  52. });
  53.  
  54. tool.setEvent("select", function() {
  55. OWOP.windowSys.addWindow(fontInput);
  56. });
  57. tool.setEvent("deselect", function() {
  58. font = null;
  59. });
  60.  
  61. tool.setEvent("mousedown mousemove", function (mouse, event) {
  62. if (mouse.buttons === 1) {
  63. xPos = mouse.tileX;
  64. yPos = mouse.tileY;
  65. }
  66. });
  67. tool.setEvent("keydown", function() {return true;});
  68. tool.setEvent("keyup", function() {return true;});
  69.  
  70. window.addEventListener("keypress", function(event) {
  71. if (font === null || xPos === null || yPos === null || ["INPUT", "TEXTAREA"].includes(document.activeElement.tagName)) {
  72. return;
  73. }
  74.  
  75. var f = fonts[font];
  76. var letterSpacing = (f.letterspace / 64 | 0) - 1;
  77. var isMono = f.monospacewidth !== -1;
  78.  
  79. if (event.which == 32) {
  80. xPos += isMono ? f.monospacewidth : 4 + letterSpacing;
  81. return;
  82. }
  83.  
  84. var char = f[event.which];
  85. if (!char) {
  86. return;
  87. }
  88.  
  89. var width = 0;
  90. for (var y=0; y<16; y++) {
  91. for (var x=0; x<16; x++) {
  92. if (char[y] & (1 << x) && x > width) width = x;
  93. }
  94. }
  95.  
  96. var color = OWOP.player.palette[OWOP.player.paletteIndex];
  97. for (var y=0; y<16; y++) {
  98. for (var x=0; x<16; x++) {
  99. if (!(char[y] & (1 << x))) {
  100. continue;
  101. }
  102. OWOP.world.setPixel(xPos + x - 2, yPos + y, color);
  103. }
  104. }
  105.  
  106. xPos += isMono ? f.monospacewidth : width + letterSpacing;
  107. });
  108. }));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement