Czogista

Kolizje na agresywnych mobach

Jul 29th, 2020 (edited)
1,844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Kolizje na agresywnych mobach
  3. // @namespace    http://tampermonkey.net/
  4. // @description  dodaje kolizje wokół mobów z przewagą lvlową na wybranych mapach.
  5. // @author       Czogi
  6. // @match        http://*.margonem.pl/
  7. // ==/UserScript==
  8.  
  9. const config = {
  10.   radius: 4,
  11.   //Tu zmieniamy radius jaki mają mieć kolizje wokół moba
  12.   lvl: 1,
  13.   /*
  14.   Tu zmieniamy przewagę lvlową jaką ma mie mob aby wygenerowa kolizje.
  15.   Kolizję będzzie posiadać kazdy mob spelniający warunki,
  16.   niezaleznie czy jest agresywny czy też nie.
  17.   */
  18.   maps: [180, 1262]
  19.   //Tu dodajemy po przecinku id mapy na któej mają działać kolizje
  20. }
  21.  
  22. var originalMap = 0;
  23.  
  24. function pushIndex(index, array) {
  25.   index = eval(index);
  26.   const mapCols = originalMap.split("");
  27.   if (!index || mapCols[index] == "1") {
  28.     return false;
  29.   }
  30.   if (!array.includes(index)) {
  31.     array.push(index);
  32.     return true;
  33.   }
  34.   return false;
  35. }
  36.  
  37. function getCols(npc) {
  38.   const radius = config.radius,
  39.     cols = [],
  40.     symbols = ["++", "--", "+-", "-+"];
  41.   for (let i = 0; i <= radius; i++) {
  42.     for (const set of symbols) {
  43.       pushIndex(
  44.         `(${npc.x} ${set[0]} ${i}) +
  45.         (${npc.y} ${set[1]} ${radius}) * ${map.x}`,
  46.         cols
  47.       );
  48.       pushIndex(
  49.         `(${npc.x} ${set[0]} ${radius}) +
  50.         (${npc.y} ${set[1]} ${i}) * ${map.x}`,
  51.         cols
  52.       );
  53.     }
  54.   }
  55.   return cols;
  56. }
  57.  
  58. function setNpcCol(npc) {
  59.   const mapCols = map.col.split(""),
  60.     npcCols = getCols(npc);
  61.   for (const col of npcCols) {
  62.     mapCols[col] = 1;
  63.   }
  64.   map.col = mapCols.join("");
  65.   npc.cols = npcCols;
  66.   return true;
  67. }
  68.  
  69. function removeNpcCol(npc) {
  70.   if (!npc || !npc.cols) return;
  71.   const prohCols = [];
  72.   for (const fNpc of Object.values(g.npc)) {
  73.     if (npc.id == fNpc.id || fNpc.cols) continue;
  74.     prohCols.push(fNpc.cols);
  75.   }
  76.   const mapCols = map.col.split(""),
  77.     npcCols = npc.cols;
  78.   for (const col of npcCols) {
  79.     if (prohCols.includes(col)) {
  80.       continue;
  81.     }
  82.     mapCols[col] = 0;
  83.   }
  84.   map.col = mapCols.join("");
  85.   return true;
  86. }
  87.  
  88. const oldNewNpc = newNpc
  89. newNpc = function (npcs = {}) {
  90.   if (!config.maps.includes(map.id)) {
  91.     return oldNewNpc(npcs);
  92.   }
  93.   if (!originalMap) {
  94.     originalMap = map.col;
  95.   }
  96.   for (const index in npcs) {
  97.     const npc = npcs[index]
  98.     if (npc.del) {
  99.       removeNpcCol(g.npc[index]);
  100.     }
  101.     if (npc.lvl >= (hero.lvl - config.lvl)) {
  102.       setNpcCol(npc);
  103.     }
  104.   }
  105.   return oldNewNpc(npcs);
  106. }
  107.  
  108. //Kod pokazujący kolizje z dodatku "Ustawiacz kolizji" by Martin Master.
  109.  
  110. /*
  111.  
  112. //## POKAZYWANIE KOLIZJI
  113. var wid = map.x;
  114. var hei = map.y;
  115. var w = 0;
  116. var h = 0;
  117. for(i = 1;i <= (wid*hei);i++){
  118.  if(w > wid-1){
  119.   w = 0;
  120.   h++;
  121.  }
  122.  if((map.col).charAt(w+(h*wid)) == "1"){
  123.   $("#ground").append('<div class="blokady"></div>');
  124.   $(".blokady:last-child").css({top: h*32, left: w*32});
  125.  }
  126.  w++;
  127. }
  128. for(var i in g.npc){
  129.  $("#ground").append('<div class="box blokady"></div>');
  130.  $(".blokady:last-child").css({top: g.npc[i].y*32, left: g.npc[i].x*32});
  131. }
  132.  
  133.  
  134. var on = false;
  135.     $(document).keyup(function(event) {
  136.         if(event.which == 27){
  137.             if (on==false) {
  138.                 $(".blokady").css({position: 'absolute', backgroundColor: 'black', width: '32px', height: '32px', zIndex: 1, opacity: 0.4});
  139.                 on = true;
  140.             } else{
  141.             $(".blokady").css({opacity: 0.0});
  142.             on = false;
  143.             }
  144.         }
  145.     });
  146. //## KONIEC KODU POKAZYWANIA KOLIZJI
  147.  
  148. */
Add Comment
Please, Sign In to add comment