Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 84.50 KB | None | 0 0
  1. // Stałe
  2.  
  3. const Version = "v1.0.0";
  4.  
  5. // Player vs Player
  6. const Main = 1;
  7. const Healer = 2;
  8. const Attacker = 3;
  9. const Blocker = 4;
  10.  
  11. /* --- Akcje --- */
  12. const IloscAkcji = 9;
  13. const NudyNaPudy = 0;
  14. const Working = 0;
  15. const Wyprawa = 1;
  16. const Lochy = 2;
  17. const Arena = 3;
  18. const CT = 4;
  19. const DodanieHP = 5;
  20. const Roztapiarka = 6;
  21. const Trening = 7;
  22. const Misja = 8;
  23. const Pakowanie = 9;
  24. const SessionWorking = 10;
  25. const AutoLogin = 11;
  26. const AutoRefresh = 12;
  27.  
  28. /* --- Bindy itp --- */
  29. const Bindy = ["#cooldown_bar_text_expedition", "#cooldown_bar_text_dungeon", "#cooldown_bar_text_arena", "#cooldown_bar_text_ct" ];
  30. const Links = ["#cooldown_bar_expedition", "#cooldown_bar_dungeon", "#cooldown_bar_arena", "#cooldown_bar_ct" ];
  31. const KoniecCzekania = [ "Na wyprawę", "Do lochów", "Do areny", "Do Circus Turma"];
  32. const Akcje = [ "Opierdalam się", "Na wyprawę", "Do lochów", "Do areny", "Do Circus Turma", "Wpierdzielam jedzenie", "Bawie sie w topienie", "Idę trenować", "Biorę misję", "Pakuję golda", "", "Próbuję się zalogować", "Odświeżam co 30 sec"];
  33.  
  34. /* --- Nic ciekawego --- */
  35. const IsCreatorMod = 0;
  36. const Debug = 1;
  37.  
  38. /* Linki: mod submod aType */
  39. const link_trening = ["training", "", "", ""];
  40. const link_podglad = ["overview", "", "", "1"];
  41. const link_wyprawa = ["location", "", "", ""];
  42. const link_lochy = ["dungeon", "", "", ""];
  43. const link_roztapiarka = ["forge", "smeltery", "", ""];
  44. const link_arena = ["arena", "", "", ""];
  45. const link_arenaProvincum = ["arena", "serverArena", "2", ""];
  46. const link_ct = ["arena", "grouparena", "", ""];
  47. const link_ctProvincum = ["arena", "serverArena", "3", ""];
  48. const link_raportyArena = ["reports", "showArena", "", ""];
  49. const link_raportyCT = ["reports", "showCircusTurma", "", ""];
  50. const link_ranking = ["highscore", "", "", ""];
  51. const link_listaCzlonkowGildii = ["guild", "memberList", "", ""];
  52. const link_misja = ["quests", "", "", ""];
  53. const link_aukcja = ["auction", "", "", ""];
  54. const link_paczki = ["packages", "", "", ""];
  55. const link_rynekGildii = ["guildMarket", "", "", ""];
  56. const link_handlarze = ["inventory", "", "", ""];
  57. const link_action = [ [link_arena, link_ct], [link_arenaProvincum, link_ctProvincum]];
  58.  
  59. /* --- Typy przedmiotów --- */
  60. const Helm = 1;
  61. const Bron = 2;
  62. const Tarcza = 4;
  63. const Napiersnik = 8;
  64. const Pierscien = 48;
  65. const Jedzenie = 64;
  66. const Rekawice = 256;
  67. const Buty = 512;
  68. const Amulet = 1024;
  69. const Eq = [Rekawice, Buty, Helm, Tarcza, Napiersnik, Bron, Pierscien, Amulet];
  70. const BoxEq = 1855;
  71.  
  72. /* --- Położenia --- */
  73. const Inventarz = "#inv";
  74. const Paczki = "#packages_wrapper";
  75. const Sklep = "#shop";
  76. const guildAuction = "#market_item_table";
  77.  
  78. /* --- Stałe exponenty statystyk --- */
  79. const StatsExp = [2.6, 2.5, 2.3, 2.3, 2.5, 2.4];
  80.  
  81. /* --- Dane misji --- */
  82. const MissionID_end = ["#qcategory_finished", "#qcategory_restart"];
  83. const MissionID_start = ["#qcategory_arena", "#qcategory_grouparena", "#qcategory_combat", "#qcategory_expedition", "#qcategory_dungeon", "#qcategory_items"];
  84.  
  85. /* --- Przyciski --- */
  86. const PaczkiButton = `<div style="text-align: center;"><button type="button" class="awesome-button" onclick="PutAllItemsToBox('`+Paczki+`', '`+Inventarz+`')">Przenieś przedmioty: Paczki → Inwentarz</button></div>`;
  87. const HandlarzeButton = `<div style="text-align: center;"><button type="button" class="awesome-button" onclick="PutAllItemsToBox('`+Inventarz+`', '`+Sklep+`')">Przenieś przedmioty: Inwentarz → Sklep</button></div>`;
  88. const AukcjaButton = `<td style="text-align:left"><div class="tooltip"><button type=button class="awesome-button" onclick="KupJedzenie()">Kup widoczne jedzenie</button><span id="B_tooltiptext" class="tooltiptext">bosze</span></div></td>`;
  89. const ClickAllArena = `<button style="float: left;padding: 2% 3% 2% 3%;margin: 10px 0 10px 0;" onclick="jQ('button[data-type=3]').click()">Click all Arena</button>`;
  90. const ClickAllCT = `<button style="float: right;padding: 2% 3% 2% 3%;margin: 10px 0 10px 0;" onclick="jQ('button[data-type=4]').click()">Click all CT</button>`;
  91.  
  92. /* --- Paczki --- */
  93. const SoulBoudData = { '100000': 30781,'200000': 30782,'300000': 30783,'400000': 30784,'500000': 30785,'600000': 30786,'700000': 30965,'800000': 30787,'900000': 30966,'1000000': 30788,'2000000': 30789,'3000000': 30790,'5000000': 30791};
  94.  
  95. const sniezki =
  96. {
  97. name: 'Śnieżka',
  98. class: 'item-i-21-5',
  99. prize: [100000, 200000, 300000, 1000000]
  100. }
  101.  
  102. const dynie =
  103. {
  104. name: 'Dynia',
  105. class: 'item-i-21-7',
  106. prize: [100000, 200000, 300000, 400000, 500000, 600000, 700000, 800000, 900000, 1000000, 2000000, 3000000, 5000000]
  107. }
  108.  
  109. const dataPacks = [sniezki, dynie];
  110.  
  111. /* --- Menu --- */
  112.  
  113. const Menu =
  114. [
  115. `<table width="100%">
  116. <tr><td>Wybierz moba</td><td><select id="B_MobZWyprawy"><option value="1">Pierwszy</option><option value="2">Drugi</option><option value="3">Trzeci</option><option value="4">Czwarty</option></select></td></tr>
  117. </table>`,
  118. `<b>Ilość mobów: <span id="B_MZLView"></span></b><input class="xSlider" type="range" id="B_MobZLochow" min="1" max="15" step="1">
  119. Wybierz ilość potówrów, które ma bić przed wyjściem z lochów - np. jeśli nie dajesz rady ubić bossa to zmniejszasz, by przed nim wychodził z lochów.
  120. <hr>
  121. Wybierz typ lochów <select style="width: 60%;" id="B_TypLochow"><option value="1">Normalne</option><option value="2">Zaawansowane</option></select>`,
  122. `<table width="100%">
  123. <tr><td>Typ areny</td><td><select id="B_TypArena"><option value="1">Zwykła</option><option value="2">Provincum</option></select></td></tr>
  124. <tr><td>Kogo ma bić</td><td><select id="B_KogoBicArena"><option value="1">Pierwszego</option><option value="2">Losowego</option><option value="3">Ostatniego</option></select></td></tr>
  125. <tr><td>Automatyczny symulator</td><td><label class="switch"><input id="B_SymulatorArena" type="checkbox"><span class="sliderFromSwitch round"></span></label></td></tr>
  126. </table>`,
  127. `<table width="100%">
  128. <tr><td>Typ CT</td><td><select id="B_TypCT"><option value="1">Zwykła</option><option value="2">Provincum</option></select></td></tr>
  129. <tr><td>Kogo ma bić</td><td><select id="B_KogoBicCT"><option value="1">Pierwszego</option><option value="2">Losowego</option><option value="3">Ostatniego</option></select></td></tr>
  130. <tr><td>Automatyczny symulator</td><td><label class="switch"><input id="B_SymulatorCT" type="checkbox"><span class="sliderFromSwitch round"></span></label></td></tr>
  131. </table>`,
  132. `<b>Próg HP: <span id="B_PHPView"></span></b>
  133. <input class="xSlider" type="range" id="B_ProcentHP" min="10" max="90" step="10">
  134. Wybierz od jakiego procentu HP ma zacząć jeść<hr>
  135. Strony z jedzeniem
  136. <table width="100%">
  137. <tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
  138. <tr>
  139. <td><input id="B_SZJ-1" type="checkbox"></td>
  140. <td><input id="B_SZJ-2" type="checkbox"></td>
  141. <td><input id="B_SZJ-3" type="checkbox"></td>
  142. <td><input id="B_SZJ-4" type="checkbox"></td>
  143. <td><input id="B_SZJ-5" type="checkbox"></td>
  144. </tr>
  145. </table>
  146. <hr>
  147. Wyciągać z paczek (do zrobienia)<label class="switch"><input id="B_JWZP" type="checkbox"><span class="sliderFromSwitch round"></span></label>
  148. `,
  149. `Strony z itemkami do roztopu
  150. <table width="100%">
  151. <tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
  152. <tr>
  153. <td><input id="B_SZI-1" type="checkbox"></td>
  154. <td><input id="B_SZI-2" type="checkbox"></td>
  155. <td><input id="B_SZI-3" type="checkbox"></td>
  156. <td><input id="B_SZI-4" type="checkbox"></td>
  157. <td><input id="B_SZI-5" type="checkbox"></td>
  158. </tr>
  159. </table>
  160. <br>Wymagany gold do topienia: <input class="BINum" id="B_TPG" type="number">`,
  161. `Co trenować
  162. <table width="100%">
  163. <th style="width: 50%"></th><th style="width: 50%"></th>
  164. <tr><td>Siła</td><td><input id="B_SDT-1" type="checkbox"></td></td></tr>
  165. <tr><td>Władanie</td><td><input id="B_SDT-2" type="checkbox"></td></td></tr>
  166. <tr><td>Zręczność</td><td><input id="B_SDT-3" type="checkbox"></td></td></tr>
  167. <tr><td>Budowa</td><td><input id="B_SDT-4" type="checkbox"></td></td></tr>
  168. <tr><td>Charyzma</td><td><input id="B_SDT-5" type="checkbox"></td></td></tr>
  169. <tr><td>Inteligencja</td><td><input id="B_SDT-6" type="checkbox"></td></td></tr>
  170. </table>
  171. <hr>
  172. Sposób wybierania statystyki <select style="display: inline-block;width: auto;" id="B_TRS"><option value="1">Najtańsza</option><option value="2">Losowa</option></select></span>
  173. <hr>
  174. <b>Pole treningowe: <span id="B_PPTView"></span></b><input class="xSlider" type="range" id="B_PPT" min="0" max="20" step="1">`,
  175. `Które misje wybierać (to są zakładki)
  176. <table width="100%">
  177. <th style="width: 50%"></th><th style="width: 50%"></th>
  178. <tr><td>Arena</td><td><input id="B_MDW-1" type="checkbox"></td></td></tr>
  179. <tr><td>CT</td><td><input id="B_MDW-2" type="checkbox"></td></td></tr>
  180. <tr><td>Walka</td><td><input id="B_MDW-3" type="checkbox"></td></td></tr>
  181. <tr><td>Wyprawa</td><td><input id="B_MDW-4" type="checkbox"></td></td></tr>
  182. <tr><td>Lochy</td><td><input id="B_MDW-5" type="checkbox"></td></td></tr>
  183. <tr><td>Przedmioty</td><td><input id="B_MDW-6" type="checkbox"></td></td></tr>
  184. </table>`,
  185. `<table width="100%">
  186. <tr><td>Na osobnej karcie</td><td><label class="switch"><input id="B_POK" type="checkbox"><span class="sliderFromSwitch round"></span></label></td></tr>
  187. <tr><td>Strona z eq na paczki</td><td><select id="B_SZEQNP"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select></td></tr>
  188. </table>`,
  189. `<table width="100%">
  190. <caption>Do symulatora</caption>
  191. <tr><td>Podaj swoje id</td><td><input class="BINum" id="B_IndexGracza" type="number"></td></tr>
  192. <tr><td>Numer prowincji</td><td><input class="BINum" id="B_IndexSerwera" type="number"></td></tr>
  193. </table>
  194. <hr>
  195. <table width="100%">
  196. <caption>Inne</caption>
  197. <tr><td>Automatyczne logowanie - musisz mieć zapisane hasło</td><td><label class="switch"><input id="B_AutoLogowanie" type="checkbox"><span class="sliderFromSwitch round"></span></label></td></tr>
  198. <tr><td>Odświeżanie co 30 sec podczas konserwacji</td><td><label class="switch"><input id="B_AutoRefresh" type="checkbox"><span class="sliderFromSwitch round"></span></label></td></tr>
  199. </table>`
  200.  
  201. ];
  202.  
  203. const UstawieniaID =
  204. [
  205. "#B_MobZWyprawy",
  206. "#B_MobZLochow",
  207. "#B_TypLochow",
  208. "#B_TypArena",
  209. "#B_KogoBicArena",
  210. "#B_SymulatorArena",
  211. "#B_TypCT",
  212. "#B_KogoBicCT",
  213. "#B_SymulatorCT",
  214. "#B_ProcentHP",
  215. "#B_SZJ-1",
  216. "#B_SZJ-2",
  217. "#B_SZJ-3",
  218. "#B_SZJ-4",
  219. "#B_SZJ-5",
  220. "#B_SZJ-6",
  221. "#B_JWZP",
  222. "#B_SZI-1",
  223. "#B_SZI-2",
  224. "#B_SZI-3",
  225. "#B_SZI-4",
  226. "#B_SZI-5",
  227. "#B_SZI-6",
  228. "#B_TPG",
  229. "#B_SDT-1",
  230. "#B_SDT-2",
  231. "#B_SDT-3",
  232. "#B_SDT-4",
  233. "#B_SDT-5",
  234. "#B_SDT-6",
  235. "#B_TRS",
  236. "#B_PPT",
  237. "#B_MDW-1",
  238. "#B_MDW-2",
  239. "#B_MDW-3",
  240. "#B_MDW-4",
  241. "#B_MDW-5",
  242. "#B_MDW-6",
  243. "#B_POK",
  244. "#B_SZEQNP",
  245. "#B_IndexGracza",
  246. "#B_IndexSerwera",
  247. "#B_AutoLogowanie",
  248. "#B_AutoRefresh"
  249. ];
  250.  
  251. const UstawieniaName =
  252. [
  253. "MobZWyprawy",
  254. "MobZLochow",
  255. "TypLochow",
  256. "TypArena",
  257. "KogoBicArena",
  258. "SymulatorArena",
  259. "TypCT",
  260. "KogoBicCT",
  261. "SymulatorCT",
  262. "ProcentHP",
  263. "SZJ-1",
  264. "SZJ-2",
  265. "SZJ-3",
  266. "SZJ-4",
  267. "SZJ-5",
  268. "SZJ-6",
  269. "JWZP",
  270. "SZI-1",
  271. "SZI-2",
  272. "SZI-3",
  273. "SZI-4",
  274. "SZI-5",
  275. "SZI-6",
  276. "TPG",
  277. "SDT-1",
  278. "SDT-2",
  279. "SDT-3",
  280. "SDT-4",
  281. "SDT-5",
  282. "SDT-6",
  283. "TRS",
  284. "PPT",
  285. "MDW-1",
  286. "MDW-2",
  287. "MDW-3",
  288. "MDW-4",
  289. "MDW-5",
  290. "MDW-6",
  291. "POK",
  292. "SZEQNP",
  293. "IndexGracza",
  294. "IndexSerwera",
  295. "AutoLogowanie",
  296. "AutoRefresh",
  297. "Paki-Status",
  298. "Paki-Cena",
  299. "Paki-ItemId"
  300.  
  301. ];
  302.  
  303.  
  304. /* --- Zmienne --- */
  305. var Akcja = NudyNaPudy;
  306. var CzasDoAkcji = ["", "", "", ""];
  307. var CzasDoTopienia = [0, 0, 0, 0, 0, 0];
  308. var Funkcja = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
  309. var AllowActions = false;
  310.  
  311. /* --- Menu --- */
  312. var ustawienia = [];
  313.  
  314. // Player vs Player
  315. var Symulator = {
  316. Ja:0,
  317. EnemyID: [],
  318. EnemyCount: 0,
  319. EnemyLoaded: 0,
  320. WeakestEnemy: {WinRatio: 0, Position: 0},
  321. Przyciski: []
  322. };
  323.  
  324. /* --- jQuery --- */
  325. var jQ;
  326.  
  327. /* --- Menu --- */
  328. var MenuUstawien = NudyNaPudy;
  329. var MainMenu = [];
  330.  
  331. /* --- Paczkowanie --- */
  332. var PakiStatus = 0;
  333. var PakiItemID = 0;
  334. var PakiCena = 0;
  335.  
  336. /* --- Moje staty --- */
  337. var staty = [];
  338.  
  339. /* --- Deklaracja klas --- */
  340.  
  341.  
  342. /* --- Player --- */
  343. class Player {
  344. constructor(playerID, serverID, TypeOfCalculate)
  345. {
  346. this.character = [];
  347. this.playerID = playerID;
  348. this.serverID = serverID;
  349. this.type = TypeOfCalculate;
  350. this.zagrozenie = 0;
  351. }
  352.  
  353. GetLink(character)
  354. {
  355. var Url = `https://s`+this.serverID+`-pl.gladiatus.gameforge.com/game/index.php?`;
  356. Url += `mod=player&doll=`+character+`&p=`+this.playerID;
  357. return Url;
  358. }
  359.  
  360. CalculateStats()
  361. {
  362. if(!this.zagrozenie)
  363. {
  364. for(var i = 0; i < this.character.length; i++)
  365. {
  366. this.zagrozenie += this.character[i].zagrozenie;
  367. if(this.character[i].type == Blocker) this.zagrozenie += 500;
  368. }
  369. }
  370. }
  371. };
  372.  
  373.  
  374. /* --- Character --- */
  375. class Char
  376. {
  377. constructor()
  378. {
  379. this.isMain = false;
  380. this.ZadawaneObrazenia = [0, 0];
  381. this.BlokowaneObrazenia = [0, 0];
  382. }
  383.  
  384. CalculateStats(Enemy)
  385. {
  386. this.Trafienie = this.wladanie / ( this.wladanie + Enemy.zrecznosc );
  387. this.PodwojneTrafienie = this.wladanie * this.charyzma / ( Enemy.inteligencja * Enemy.zrecznosc * 10);
  388. this.ZadawaneObrazenia = [this.obrazeniaMin, this.obrazeniaMax];
  389. this.BlokowaneObrazenia[0] = Math.ceil( (this.pancerz / 74) - ( ( this.pancerz / 74)/660 ) + 1 );
  390. this.BlokowaneObrazenia[1] = Math.floor( (this.pancerz/66) + (this.pancerz/660) );
  391. }
  392.  
  393. DmgDone(Enemy, charHitChance, rounds)
  394. {
  395. var Trafienia = charHitChance*(this.Trafienie*rounds*(1 - Enemy.ZablokowanieTrafienia)*(1+this.PodwojneTrafienie));
  396. var TrafieniaKrytyczne = Trafienia*this.KrytyczneTrafienie*(1 - Enemy.UnikniecieKrytyczne);
  397.  
  398. var PMinMax = this.ZadawaneObrazenia[0] - Enemy.BlokowaneObrazenia[1];
  399. var PMaxMin = this.ZadawaneObrazenia[1] - Enemy.BlokowaneObrazenia[0];
  400.  
  401. var avgNormalDmg = Math.max((PMinMax+PMaxMin)/2, 0);
  402. var avgPureDmg = (this.ZadawaneObrazenia[0] + this.ZadawaneObrazenia[1])/2;
  403.  
  404. var Dmg = Trafienia*avgNormalDmg + TrafieniaKrytyczne*avgPureDmg;
  405.  
  406. return Dmg;
  407. }
  408.  
  409. GetThreat()
  410. {
  411. return (this.type == Blocker ? this.zagrozenie+500 : this.zagrozenie)
  412. }
  413. };
  414.  
  415.  
  416. DebugLog("Start");
  417.  
  418. // True page
  419. if(typeof jQuery != "undefined")
  420. {
  421. jQ = jQuery.noConflict();
  422.  
  423. LoadData();
  424. ShowBot();
  425. AddButtons();
  426. GetPlayerData();
  427.  
  428. if(!IsCreatorMod) jQ(document).ready(OnReady);
  429. }
  430.  
  431. function Login()
  432. {
  433. if ($("login_server").value) $("loginform").action = "//"+$("login_server").value;
  434.  
  435. $("loginform").submit();
  436. }
  437.  
  438. function isOn()
  439. {
  440. return Funkcja[Working] && Funkcja[Working];
  441. }
  442.  
  443. // Taki tam typowy Main
  444. function OnReady()
  445. {
  446. setInterval(GuiUpdate, 1000);
  447. GuiUpdate();
  448. if(!isLogged())
  449. {
  450. if(isOn())
  451. {
  452. if(isLogouted())
  453. {
  454. if(ustawienia['AutoLogowanie'])
  455. {
  456. setAction(AutoLogin);
  457. setTimeout(Login, 5000);
  458. }
  459. }
  460. else if(ustawienia['AutoRefresh'])
  461. {
  462. setAction(AutoRefresh);
  463. setTimeout(ReloadPage, 30000);
  464. }
  465. }
  466. AllowSetActions();
  467. return;
  468. }
  469.  
  470. if(ustawienia['TylkoPakowanie']) setTimeout(ReloadPage, 30000);
  471.  
  472. setInterval(CheckStatus, 1000);
  473. setTimeout(AllowSetActions, 1500);
  474.  
  475. DoActions();
  476. }
  477.  
  478. function ShowBot()
  479. {
  480. var GuiStyle = GetCss();
  481. var Gui = `<div class="B_Gui" style="top: 50px;" >
  482. <table class="B_table" style="width: 100%;">
  483. <caption>Menu bocika</caption>
  484. <tr><th>Akcja</th><th>Ustawienia</th><th>Stan</th></tr>`;
  485. var wyprawa = { name: "Wyprawa", haveSlider: true, haveSettings: true, stateNum: 1, index: Wyprawa, settings: Menu[0] };
  486. var lochy = { name: "Lochy", haveSlider: true, haveSettings: true, stateNum: 1, index: Lochy, settings: Menu[1] };
  487. var arena = { name: "Arena", haveSlider: true, haveSettings: true, stateNum: 1, index: Arena, settings: Menu[2] };
  488. var circus = { name: "CT", haveSlider: true, haveSettings: true, stateNum: 1, index: CT, settings: Menu[3] };
  489. var jedzenie = { name: "Jedzenie", haveSlider: true, haveSettings: true, stateNum: 0, index: DodanieHP, settings: Menu[4] };
  490. var topienie = { name: "Topienie", haveSlider: true, haveSettings: true, stateNum: 2, index: Roztapiarka, settings: Menu[5] };
  491. var trening = { name: "Trening", haveSlider: true, haveSettings: true, stateNum: 0, index: Trening, settings: Menu[6] };
  492. var misje = { name: "Misje", haveSlider: true, haveSettings: true, stateNum: 1, index: Misja, settings: Menu[7] };
  493. var pakowanie = {name: "Pakowanie", haveSlider: true, haveSettings: true, stateNum: 0, index: Pakowanie, settings: Menu[8] };
  494. var stanSesji = {name: "Stan sesji", haveSlider: true, haveSettings: true, stateNum: 0, index: SessionWorking, settings: Menu[9] };
  495. var stanOgolny ={name: "Stan ogólny",haveSlider: true, haveSettings: false, stateNum: 0, index: Working };
  496.  
  497.  
  498. if(ustawienia['TylkoPakowanie']) MainMenu = [pakowanie, stanSesji, stanOgolny];
  499. else MainMenu = [wyprawa, lochy, arena, circus, jedzenie, topienie, trening, misje, pakowanie, stanSesji, stanOgolny];
  500.  
  501. var state = 0;
  502. for(var i=0; i < MainMenu.length; i++)
  503. {
  504. Gui += `<tr>`;
  505. `<td></td><td></span></td></tr>`;
  506. Gui += `<td>`+MainMenu[i].name+`</td>`;
  507. Gui += `<td>`
  508. if(MainMenu[i].haveSlider)
  509. {
  510. var checked = (Funkcja[MainMenu[i].index] == 1 ? `checked`: ``);
  511. Gui += `<label class="switch">
  512. <input id="B_F`+MainMenu[i].index+`" type="checkbox" `+checked+`>
  513. <span class="sliderFromSwitch round"></span>
  514. </label>`;
  515. }
  516. if(MainMenu[i].haveSettings)
  517. {
  518. Gui += `<div class="SettingsMenu">
  519. <input type="image" class="settings" onclick="OpenSettings(`+(i+1)+`)" src="https://image.freepik.com/free-icon/settings-gear-for-interface-button_318-32785.jpg">
  520. <div id="B_SMT`+(i+1)+`" class="SettingsMenuText"></div>
  521. </div>`;
  522. }
  523. Gui += `</td>`;
  524.  
  525. Gui += `<td>`;
  526. for(var j=0; j < MainMenu[i].stateNum; j++)
  527. {
  528. Gui += `<span id="B_State-`+state+`"></span>`;
  529. if(MainMenu[i].stateNum != (j+1)) Gui += "<br>";
  530. state++;
  531. }
  532. Gui += `</td></tr>`;
  533. }
  534. Gui += `</table><h2>Akcja: <span id="B_Action"></span></h4>`;
  535. Gui += `<span class="BVersion">`+Version+`</span>`
  536. Gui += `</div>`;
  537.  
  538. jQ("head").append(GuiStyle);
  539. jQ("body").prepend(Gui);
  540.  
  541. for(var i=0; i<MainMenu.length; i++)
  542. {
  543. if(!MainMenu[i].haveSlider) continue;
  544.  
  545. jQ("#B_F"+MainMenu[i].index).change(FunctionChange);
  546. }
  547. }
  548.  
  549. function FunctionChange()
  550. {
  551. var index = jQ(this).attr('id').substring(3, 5);
  552. var val = Number(jQ(this).is(":checked"));
  553. console.log("Akcja: "+index+"\nWartość: "+val);
  554.  
  555. Funkcja[index] = val;
  556. if(index == SessionWorking) sessionStorage.setItem("B_Func"+index, Funkcja[index]);
  557. else if(index == Pakowanie && ustawienia['POK'])
  558. {
  559. if(ustawienia['TylkoPakowanie']) sessionStorage.setItem("B_Func"+index, Funkcja[index]);
  560. if(val == 1 && !ustawienia['TylkoPakowanie'])
  561. {
  562. var url = new URL(window.location.href);
  563. var sh = url.searchParams.get("sh");
  564. //var newUri = "index.php?mod=" + link_rynekGildii[0] + "&s=p" + "&sh="+sh + "&pakuj=1";
  565. var newUri = "index.php?mod=" + link_podglad[0] + "&sh="+sh + "&pakuj=1";
  566. Funkcja[index] = 0;
  567. window.open(newUri);
  568. jQ('#B_F'+Pakowanie).prop('checked', false);
  569. }
  570. }
  571. else
  572. {
  573. if(ustawienia['TylkoPakowanie'])
  574. {
  575. if(index != Pakowanie) localStorage.setItem("B_Func"+index, Funkcja[index]);
  576. }
  577. else localStorage.setItem("B_Func"+index, Funkcja[index]);
  578. }
  579.  
  580. if(index > Working && index < SessionWorking && Akcja == index && !Funkcja[index]) setAction(NudyNaPudy);
  581.  
  582. if(index == Working && !Funkcja[Working]) setAction(NudyNaPudy);
  583. else if(index == SessionWorking && !Funkcja[SessionWorking]) Akcja = NudyNaPudy;
  584. }
  585.  
  586. function OpenSettings(which)
  587. {
  588. if(MenuUstawien != NudyNaPudy)
  589. {
  590. jQ("#B_SMT"+MenuUstawien).css("opacity", "0");
  591. jQ("#B_SMT"+MenuUstawien).css("display", "none");
  592. }
  593. if(MenuUstawien == which)
  594. {
  595. MenuUstawien = NudyNaPudy;
  596. return;
  597. }
  598.  
  599. jQ("#B_SMT"+which).css("display", "inline-block");
  600. jQ("#B_SMT"+which).html(MainMenu[which-1].settings);
  601.  
  602. jQ("#B_SMT"+which).css("opacity", "1");
  603. MenuUstawien = which;
  604.  
  605. for(var i=0; i < UstawieniaID.length; i++)
  606. {
  607. var ele = jQ(UstawieniaID[i]);
  608. if(ele.length != 1) continue;
  609.  
  610. ele.change(SettingsChange);
  611.  
  612. if(ele.attr( "type") == "checkbox")
  613. {
  614. ele.prop("checked", ustawienia[UstawieniaID[i].substring(3, UstawieniaID[i].length)]);
  615. }
  616. else ele.val(ustawienia[UstawieniaID[i].substring(3, UstawieniaID[i].length)]);
  617. }
  618.  
  619. var input = jQ("#B_MobZLochow");
  620. if(input.length == 1)
  621. {
  622. var output = jQ("#B_MZLView");
  623. output.text(input.val() == 15 ? "Wszystkie" : input.val());
  624.  
  625. input.change( function(){var input = jQ("#B_MobZLochow"); var str = input.val() == 15 ? "Wszystkie" : input.val(); output.text(str);} );
  626. }
  627.  
  628. input = jQ("#B_ProcentHP");
  629. if(input.length == 1)
  630. {
  631. var output = jQ("#B_PHPView");
  632. output.text(input.val()+"%");
  633.  
  634. input.change( function(){ output.text(jQ("#B_ProcentHP").val()+"%");} );
  635. }
  636.  
  637. input = jQ("#B_PPT");
  638. if(input.length == 1)
  639. {
  640. var output = jQ("#B_PPTView");
  641. output.text(input.val()+" lvl");
  642.  
  643. input.change( function(){ output.text(jQ("#B_PPT").val()+" lvl");} );
  644. }
  645. }
  646.  
  647. function SettingsChange()
  648. {
  649. var ele = jQ(this);
  650. var name = ele.attr("id");
  651. var wartosc = Number(ele.attr( "type") == "checkbox" ? ele.is(":checked"): ele.val());
  652. ustawienia[name.substring(2, name.length)] = wartosc;
  653. localStorage.setItem(name, wartosc);
  654. if(name == "B_POK" && wartosc == 1 && Funkcja[Pakowanie] == 1)
  655. {
  656. Funkcja[Pakowanie] == 0;
  657. localStorage.setItem("B_Func"+Pakowanie, 0);
  658. jQ('#B_F'+Pakowanie).prop('checked', false);
  659. }
  660. }
  661.  
  662. function CheckStatus()
  663. {
  664. for(var i=0; i < 4; i++) CzasDoAkcji[i] = jQ(Bindy[i]).text();
  665.  
  666. if(!AllowActions || !Funkcja[Working] || !Funkcja[SessionWorking]) return;
  667.  
  668. if(Funkcja[Pakowanie])
  669. {
  670. if(PakiStatus == 0 && GetGold() > 100000)
  671. {
  672. setAction(Pakowanie);
  673. if(!ImThere(link_rynekGildii)) GoTo(link_rynekGildii);
  674.  
  675. return;
  676. }
  677. else if(PakiStatus == 1)
  678. {
  679. setAction(Pakowanie);
  680. if(!ImThere(link_paczki)) GoTo(link_paczki);
  681.  
  682. return;
  683. }
  684. else if(PakiStatus == 2)
  685. {
  686. setAction(Pakowanie);
  687. if(!ImThere(link_rynekGildii)) GoTo(link_rynekGildii);
  688.  
  689. return;
  690. }
  691. }
  692.  
  693. if(!ustawienia['TylkoPakowanie'])
  694. {
  695. if((GetGold() >= MinKosztStatow() || staty.length == 0) && Funkcja[Trening])
  696. {
  697. setAction(Trening);
  698.  
  699. if(!ImThere(link_trening)) GoTo(link_trening);
  700. }
  701. else if(GetHP() <= ustawienia['ProcentHP'] && Funkcja[DodanieHP])
  702. {
  703. setAction(DodanieHP);
  704.  
  705. if(!ImThere(link_podglad)) GoTo(link_podglad);
  706. }
  707. else if(CheckForgeTime() && Funkcja[Roztapiarka] && GetGold() > ustawienia['TPG'])
  708. {
  709. setAction(Roztapiarka);
  710.  
  711. if(!ImThere(link_roztapiarka)) GoTo(link_roztapiarka);
  712. }
  713. else
  714. {
  715. for(var i=0; i < 4; i++)
  716. {
  717. if(CzasDoAkcji[i] == KoniecCzekania[i] && Funkcja[i+1])
  718. {
  719. setAction(i+1);
  720.  
  721. if(i+1 == Arena)
  722. {
  723. if(!ImThere(link_action[ustawienia['TypArena']-1][0])) GoTo(link_action[ustawienia['TypArena']-1][0]);
  724. }
  725. else if(i+1 == CT)
  726. {
  727. if(!ImThere(link_action[ustawienia['TypCT']-1][1])) GoTo(link_action[ustawienia['TypArena']-1][1]);
  728. }
  729. else
  730. {
  731. if(WhereAmI() != (i+1)) Location(jQ( Links[i] ).children("a").attr("href"));
  732. }
  733.  
  734. return;
  735. }
  736. }
  737. if( (jQ("#QuestTime").text() == "(Nowe)" || jQ(`font[color="green"]`).length > 0) && Funkcja[Misja])
  738. {
  739. setAction(Misja);
  740.  
  741. if(!ImThere(link_misja)) GoTo(link_misja);
  742. else TryMisja();
  743. }
  744. }
  745. }
  746. }
  747.  
  748. function LoadData()
  749. {
  750. /* --- Link Data --- */
  751. var url = new URL(window.location.href);
  752. var pakuj = Number(url.searchParams.get("pakuj"));
  753. if(pakuj == 1)
  754. {
  755. sessionStorage.setItem("B_Func"+Pakowanie, "1");
  756. sessionStorage.setItem("B_TylkoPakowanie", "1");
  757. }
  758.  
  759. /* --- Ładuj staty --- */
  760. LookForStats();
  761.  
  762. if(localStorage.hasOwnProperty("B_Ustawienia"))
  763. {
  764. /* --- Locale data --- */
  765. Akcja = toInt(localStorage.getItem("B_Action"));
  766.  
  767. for(var i=0; i < Funkcja.length; i++) Funkcja[i] = toInt(localStorage.getItem("B_Func"+i));
  768. for(var i=0; i < CzasDoTopienia.length; i++) CzasDoTopienia[i] = toInt(localStorage.getItem("B_Roztapiarka"+i));
  769. for(var i=0; i < UstawieniaName.length; i++) ustawienia[UstawieniaName[i]] = toInt(localStorage.getItem("B_"+UstawieniaName[i]));
  770.  
  771. // Paczki
  772. PakiStatus = toInt(localStorage.getItem("B_Paczka_Akcja"));
  773. PakiItemID = toInt(localStorage.getItem("B_Paczka_ID"));
  774. PakiCena = toInt(localStorage.getItem("B_Paczka_Cena"));
  775.  
  776. // Staty
  777. for(var i=0; i < 6; i++)
  778. {
  779. if(localStorage.hasOwnProperty("B_Staty-"+i)) staty[i] = localStorage.getItem("B_Staty-"+i)
  780. }
  781.  
  782. /* --- Session data --- */
  783. if(sessionStorage.hasOwnProperty("B_Func"+SessionWorking))
  784. {
  785. Funkcja[SessionWorking] = toInt(sessionStorage.getItem("B_Func"+SessionWorking));
  786. }
  787. else Funkcja[SessionWorking] = 1;
  788. if(sessionStorage.hasOwnProperty("B_Func"+Pakowanie))
  789. {
  790. Funkcja[Pakowanie] = toInt(sessionStorage.getItem("B_Func"+Pakowanie));
  791. }
  792. ustawienia['TylkoPakowanie'] = toInt(sessionStorage.getItem("B_TylkoPakowanie"));
  793.  
  794. if(ustawienia['TylkoPakowanie']) Akcja = toInt(sessionStorage.getItem("B_Action"));
  795. }
  796. else setDefaultData();
  797. }
  798.  
  799. function setDefaultData()
  800. {
  801. localStorage.setItem("B_Ustawienia", "1");
  802. localStorage.setItem("B_Action", "0");
  803. localStorage.setItem("B_MobZLochow", "15");
  804. localStorage.setItem("B_Func0", "1");
  805. localStorage.setItem("B_TypLochow", "1");
  806. localStorage.setItem("B_TypArena", "1");
  807. localStorage.setItem("B_KogoBicArena", "1");
  808. localStorage.setItem("B_TypCT", "1");
  809. localStorage.setItem("B_KogoBicCT", "1");
  810. localStorage.setItem("B_SymulatorArena", "0");
  811. localStorage.setItem("B_SymulatorCT", "0");
  812. localStorage.setItem("B_ProcentHP", "3");
  813. localStorage.setItem("B_SZEQNP", "1");
  814. localStorage.setItem("B_TPG", "20000");
  815. sessionStorage.setItem("B_Func"+SessionWorking, "1");
  816.  
  817.  
  818. for(var i=0; i < CzasDoTopienia.length; i++) localStorage.setItem("B_Roztapiarka"+i, "0");
  819. for(var i=1; i < Funkcja.length; i++) localStorage.setItem("B_Func"+i, "0");
  820.  
  821. LoadData();
  822. }
  823.  
  824. function GuiUpdate()
  825. {
  826. /* 0~3 */
  827. for(var i=0; i < 4; i++)
  828. {
  829. jQ("#B_State-"+i).text((CzasDoAkcji[i] == KoniecCzekania[i] ? "On" : CzasDoAkcji[i]));
  830. }
  831.  
  832. /* 4~5 */
  833. for(var i=0; i < 6; i++)
  834. {
  835. if(CzasDoTopienia[i] - GetTime() <= 0) jQ("#B_State-"+(i+4)).text("On");
  836. else jQ("#B_State-"+(i+4)).text(TimeToString(CzasDoTopienia[i]));
  837. }
  838.  
  839. // Akcja
  840. jQ("#B_Action").text(Akcje[Akcja]);
  841. }
  842.  
  843. /* --- Site --- */
  844.  
  845. function ImThere(tab)
  846. {
  847. var url = new URL(window.location.href);
  848. var mod = url.searchParams.get("mod"); if(mod == null) mod = "";
  849. var submod = url.searchParams.get("submod"); if(submod == null) submod = "";
  850. var aType = url.searchParams.get("aType"); if(aType == null) aType = "";
  851. var doll = url.searchParams.get("doll"); if(doll == null) doll = "";
  852.  
  853. if( mod == tab[0] && submod == tab[1] && aType == tab[2] && doll == tab[3]) return true;
  854. else if(mod == tab[0] && tab[0] == "quests") return true;
  855. else if(mod == tab[0] && tab[0] == "auction") return true;
  856.  
  857. return false;
  858. }
  859.  
  860. function WhereAmI()
  861. {
  862. var url = new URL(window.location.href);
  863. var mod = url.searchParams.get("mod"); if(mod == null) mod = "";
  864. var submod = url.searchParams.get("submod"); if(submod == null) submod = "";
  865. var aType = url.searchParams.get("aType"); if(aType == null) aType = "";
  866. var doll = url.searchParams.get("doll"); if(doll == null) doll = "";
  867.  
  868. if( mod == link_trening[0] && submod == link_trening[1] && aType == link_trening[2]) return Trening;
  869. else if( mod == link_podglad[0] && submod == link_podglad[1] && aType == link_podglad[2] && doll == "1") return DodanieHP;
  870. else if( mod == link_wyprawa[0]) return Wyprawa;
  871. else if( mod == link_lochy[0]) return Lochy;
  872. else if( mod == link_roztapiarka[0] && submod == link_roztapiarka[1] && aType == link_roztapiarka[2]) return Roztapiarka;
  873. else if( mod == link_arena[0] && submod == link_arena[1] && aType == link_arena[2]) return Arena;
  874. else if( mod == link_arenaProvincum[0] && submod == link_arenaProvincum[1] && aType == link_arenaProvincum[2]) return Arena;
  875. else if( mod == link_ct[0] && submod == link_ct[1] && aType == link_ct[2]) return CT;
  876. else if( mod == link_ctProvincum[0] && submod == link_ctProvincum[1] && aType == link_ctProvincum[2]) return CT;
  877.  
  878. return NudyNaPudy;
  879. }
  880.  
  881. function GoTo(where)
  882. {
  883. var url = new URL(window.location.href);
  884. var sh = url.searchParams.get("sh");
  885. var newUri = "index.php?" + "mod=" + where[0];
  886. if(where[1].length > 0) newUri += "&submod=" + where[1];
  887. if(where[2].length > 0) newUri += "&aType=" + where[2];
  888. if(where[3].length > 0) newUri += "&doll=" + where[3];
  889. if(where == link_rynekGildii) newUri += "&s=p";
  890.  
  891. newUri += "&sh="+sh;
  892. Location(newUri);
  893. }
  894.  
  895. function FindItemsByClass(from, klasa)
  896. {
  897. return jQ(from).find(`div[class*="`+klasa+`"]`);
  898. }
  899.  
  900. function TurnOffChat()
  901. {
  902. socket.disconnect();
  903. document.querySelector("#chatBox").style.zIndex = "-100";
  904. }
  905.  
  906. function TurnOnChat()
  907. {
  908. socket.connect();
  909. document.querySelector("#chatBox").style.zIndex = "100";
  910. }
  911.  
  912. function isLogged()
  913. {
  914. var logoutButton = jQ(`a[href*="mod=start&submod=logout"]`);
  915. if(logoutButton.length > 0) return 1;
  916.  
  917. return 0;
  918. }
  919.  
  920. function isLogouted()
  921. {
  922. var loginButton = jQ(`input[onclick*="submitLoginForm()"]`);
  923. if(loginButton.length > 0) return 1;
  924.  
  925. return 0;
  926. }
  927.  
  928. /* --- Ogólne --- */
  929.  
  930. function DoActions()
  931. {
  932. DebugLog("DoActions pre");
  933. DebugLog("Akcja: "+Akcja);
  934. switch(Akcja)
  935. {
  936. case Pakowanie:
  937. {
  938. if(PakiStatus == 0 && ImThere(link_rynekGildii)) TryPakujGolda();
  939. else if(PakiStatus == 1 && ImThere(link_paczki)) setTimeout(TryWezPaczke, 1500);
  940. else if(PakiStatus == 2 && ImThere(link_rynekGildii)) TrySprzedajPake();
  941.  
  942. setTimeout(ReloadPage, 30*1000);
  943. break;
  944. }
  945. case Trening:
  946. {
  947. if(ImThere(link_trening)) setTimeout(TryTrening, 1500);
  948.  
  949. break;
  950. }
  951. case DodanieHP:
  952. {
  953. if(ImThere(link_podglad))
  954. {
  955. if(GetHP() <= ustawienia['ProcentHP']) setTimeout(AddHP, 1500);
  956. else setAction(NudyNaPudy);
  957. }
  958.  
  959. break;
  960. }
  961. case Wyprawa:
  962. {
  963. if(ImThere(link_wyprawa)) TryWyprawa();
  964.  
  965. break;
  966. }
  967. case Lochy:
  968. {
  969. if(ImThere(link_lochy)) TryLochy();
  970.  
  971. break;
  972. }
  973. case Arena:
  974. {
  975. if(WhereAmI() == Arena) TryFight(Arena);
  976.  
  977. break;
  978. }
  979. case CT:
  980. {
  981. if(WhereAmI() == CT) TryFight(CT);
  982.  
  983. break;
  984. }
  985. case Roztapiarka:
  986. {
  987. if(GetGold() < ustawienia['TPG']) setAction(NudyNaPudy);
  988. else if(ImThere(link_roztapiarka)) setTimeout(TryRoztapiarka, 1500);
  989.  
  990. break;
  991. }
  992. case Misja:
  993. {
  994. if(ImThere(link_misja)) setTimeout(TryMisja, 1500);
  995.  
  996. break;
  997. }
  998. }
  999. DebugLog("DoActions post");
  1000. }
  1001.  
  1002. function setAction(x)
  1003. {
  1004. if(Akcja != x)
  1005. {
  1006. Akcja = x;
  1007. if(ustawienia['TylkoPakowanie']) sessionStorage.setItem("B_Action", x);
  1008. else localStorage.setItem("B_Action", x);
  1009. }
  1010. }
  1011.  
  1012. function AllowSetActions()
  1013. {
  1014. AllowActions = true;
  1015. }
  1016.  
  1017. /* --- Wyprawa --- */
  1018. function TryWyprawa()
  1019. {
  1020. DebugLog("TryWyprawa pre");
  1021. setAction(NudyNaPudy);
  1022. var ruby = jQ("img[src*='res3.gif']");
  1023. var timer = jQ("img[src*='token_small/7.png']");
  1024. if(ruby.length <= 0 && timer.length <= 0)
  1025. {
  1026. DebugLog("TryWyprawa click");
  1027. WaiterStamp();
  1028. jQ("button[onclick^='attack']").eq(ustawienia['MobZWyprawy']-1).click();
  1029. }
  1030. else setTimeout(ReloadPage, 3000);
  1031.  
  1032. DebugLog("TryWyprawa post");
  1033. }
  1034.  
  1035. /* --- Lochy --- */
  1036. function TryLochy()
  1037. {
  1038. setAction(NudyNaPudy);
  1039. var ruby = jQ("img[src*='res3.gif']");
  1040. var timer = jQ("img[src*='token_small/7.png']");
  1041. if(ruby.length <= 0 && timer.length <= 0)
  1042. {
  1043. var ListaMobow = jQ("img[onclick^='startFight']");
  1044. if(ListaMobow.length > 0)
  1045. {
  1046. var Max = [0, 0], Min = [100, 0];
  1047. for(var i=0; i < ListaMobow.length; i++)
  1048. {
  1049. var attr = ListaMobow.eq(i).attr( "onclick" );
  1050. var str = (attr.slice(attr.indexOf("(")+1, attr.indexOf(")"))).replace(new RegExp('\'', 'g'), '');
  1051. var przecinek = str.indexOf(",");
  1052. var firstArg = str.substring(0, przecinek);
  1053. var secondArg = str.substring(przecinek+2, str.length);
  1054.  
  1055.  
  1056. if(firstArg >= Max[0])
  1057. {
  1058. Max[0] = firstArg;
  1059. Max[1] = secondArg;
  1060. }
  1061. if(firstArg <= Min[0])
  1062. {
  1063. Min[0] = firstArg;
  1064. Min[1] = secondArg;
  1065. }
  1066. }
  1067. WaiterStamp();
  1068. if(Max[0] <= ustawienia['MobZLochow']) startFight(Max[0], Max[1]);
  1069. else if(Min[0] <= ustawienia['MobZLochow']) startFight(Min[0], Min[1]);
  1070. else
  1071. {
  1072. WaiterStamp();
  1073. jQ("input[value='Anuluj lochy']").click();
  1074. setAction(Lochy);
  1075. }
  1076. }
  1077. else
  1078. {
  1079. var PoziomLochow = (ustawienia['TypLochow'] == 1 ? "normalne" : "zaawansowane");
  1080. var WejscieDoLochu = jQ(`input[value^='`+PoziomLochow+`']`);
  1081. if(WejscieDoLochu.length > 0)
  1082. {
  1083. WejscieDoLochu = WejscieDoLochu.first();
  1084. setAction(Lochy);
  1085. WaiterStamp();
  1086. WejscieDoLochu.click();
  1087. }
  1088. }
  1089. }
  1090. else setTimeout(ReloadPage, 3000);
  1091. }
  1092.  
  1093. /* --- Arena & CT --- */
  1094. async function TryFight(ArenaOrCT)
  1095. {
  1096. var enemy = jQ(".attack");
  1097. var Suffiks = (ArenaOrCT == Arena ? "Arena" : "CT");
  1098.  
  1099. DebugLog("TryFight pre | Typ: "+Suffiks + " | Len: "+enemy.length+" | Symulator: "+ustawienia['Symulator'+Suffiks]);
  1100.  
  1101. if(enemy.length == 0) return;
  1102.  
  1103. if(ustawienia['Symulator'+Suffiks] == 0)
  1104. {
  1105. setAction(NudyNaPudy);
  1106. WaiterStamp();
  1107. var setting = "KogoBic"+Suffiks;
  1108.  
  1109. if(ustawienia[setting] == 1) enemy.first().click();
  1110. else if(ustawienia[setting] == 2) enemy.eq(getRndInteger(0, enemy.length)).click();
  1111. else if(ustawienia[setting] == 3) enemy.last().click();
  1112. }
  1113. else
  1114. {
  1115. var start = 0;
  1116. var end = Symulator.EnemyCount;
  1117. if(Symulator.EnemyCount == 9) start = 5;
  1118.  
  1119. var buttons = jQ(`button[onclick*="CheckPlayer"]`);
  1120. for(var i = start; i < end; i++)
  1121. {
  1122. buttons.eq(i).click();
  1123. DebugLog("Click: "+i);
  1124. }
  1125.  
  1126. while(Symulator.EnemyCount != (Symulator.EnemyLoaded+start)) await sleep(10);
  1127.  
  1128. setAction(NudyNaPudy);
  1129. WaiterStamp();
  1130. DebugLog("Click on enemy on pos: "+Symulator.WeakestEnemy.Position);
  1131. enemy.eq(Symulator.WeakestEnemy.Position - start).click();
  1132. }
  1133.  
  1134. jQ("#linkbod").click();
  1135. }
  1136.  
  1137.  
  1138. /* --- Trening --- */
  1139. function TryTrening()
  1140. {
  1141. DebugLog("[Trening] TryTrening() pre");
  1142. var AddPoints = jQ(`div[style="width:500px;position:relative"]`);
  1143.  
  1144. var TrenowaneStaty = [];
  1145. for(var i=0; i < 6; i++)
  1146. {
  1147.  
  1148. }
  1149.  
  1150. if(ustawienia['TRS'] == 1)
  1151. {
  1152. var lowest = [ 0, 1000000000];
  1153. for(var i=0; i < 6; i++)
  1154. {
  1155. if(ustawienia['SDT-'+(i+1)])
  1156. {
  1157.  
  1158. var gold = parseInt(jQ("div.training_costs").eq(i).text().replaceAll(".",""));
  1159.  
  1160. if(lowest[1] >= gold)
  1161. {
  1162. lowest[0] = i;
  1163. lowest[1] = gold;
  1164. }
  1165. }
  1166. }
  1167.  
  1168. if(ustawienia['SDT-'+(lowest[0]+1)])
  1169. {
  1170. setAction(NudyNaPudy);
  1171. var link = AddPoints.eq(lowest[0]).children(`div[class="training_link"]`).children(`a.training_button`).first().attr("href");
  1172. Location(link);
  1173. return;
  1174. }
  1175. }
  1176. else
  1177. {
  1178. var count = 0;
  1179. for(var i=0; i < 6; i++) if(ustawienia['SDT-'+(i+1)]) count++;
  1180.  
  1181. var rand = getRndInteger(0, count);
  1182. for(var i=0; i < 6; i++)
  1183. {
  1184. if(ustawienia['SDT-'+(i+1)])
  1185. {
  1186. if(rand == 0)
  1187. {
  1188. setAction(NudyNaPudy);
  1189. var link = AddPoints.eq(i).children(`div[class="training_link"]`).children(`a.training_button`).first().attr("href");
  1190. Location(link);
  1191. return;
  1192. }
  1193. rand--;
  1194. }
  1195. }
  1196. }
  1197. }
  1198.  
  1199. function LookForStats()
  1200. {
  1201. if(!ImThere(link_trening)) return;
  1202.  
  1203. for(var i=0; i < 6; i++)
  1204. {
  1205. staty[i] = Number(jQ("#char_f"+i+" > .training_value").first().text().split("+")[0]);
  1206. localStorage.setItem("B_Staty-"+i, staty[i]);
  1207. }
  1208. }
  1209.  
  1210. function MinKosztStatow()
  1211. {
  1212. var koszta = [];
  1213. var min = -1;
  1214. for(var i=0; i < 6; i++)
  1215. {
  1216. if(ustawienia['SDT-'+(i+1)] == 1)
  1217. {
  1218. koszta[i] = Math.floor(Math.pow(staty[i]-4, StatsExp[i])*(1-2*ustawienia['PPT']/100));
  1219. if(min == -1 || koszta[i] < koszta[min]) min = i;
  1220. }
  1221. }
  1222. return koszta[min];
  1223. }
  1224.  
  1225.  
  1226. function GetGold()
  1227. {
  1228. var divGold = toInt(jQ("#sstat_gold_val").text().replace(/\s/g, "").replace(/\./g,""));
  1229. if(isNaN(divGold)) return 0;
  1230.  
  1231. return divGold;
  1232. }
  1233.  
  1234. /* --- Roztapiarka --- */
  1235. function TakeMaterials()
  1236. {
  1237. WaiterStamp();
  1238. jQ("#forge_lootbox").click();
  1239. }
  1240.  
  1241.  
  1242. async function MakeForge()
  1243. {
  1244. for(var j=1; j < 6;j++)
  1245. {
  1246. if(!ustawienia['SZI-'+j]) continue;
  1247.  
  1248. ChooseStorageBox(j);
  1249. await sleep(500);
  1250. var Box = FindBoxByType(BoxEq).first();
  1251. if(Box.length == 0) continue;
  1252.  
  1253. for(var i=0; i < Eq.length; i++)
  1254. {
  1255. var Items = FindItemsByType(Eq[i], Inventarz);
  1256. if(Items.length > 0)
  1257. {
  1258. var Item = Items.first();
  1259. DragAndDrop(Item, Box);
  1260. await sleep(2000);
  1261. rent();
  1262. return;
  1263. }
  1264. }
  1265. }
  1266. setAction(NudyNaPudy);
  1267. Funkcja[Roztapiarka] = 0;
  1268. localStorage.setItem("B_Func"+Roztapiarka, Funkcja[Roztapiarka]);
  1269. jQ('#B_F'+Roztapiarka).prop('checked', false);
  1270. }
  1271.  
  1272. function CheckForgeTime(x=-1)
  1273. {
  1274. if(x == -1)
  1275. {
  1276. var Done = 0;
  1277. for(var i=0; CzasDoTopienia.length > i; i++)
  1278. {
  1279. if((CzasDoTopienia[i] - GetTime()) < 0) Done = 1;
  1280. }
  1281. if(Done) return true;
  1282. }
  1283. else
  1284. {
  1285. if((CzasDoTopienia[x] - GetTime()) < 0) return true;
  1286. }
  1287.  
  1288. return false;
  1289. }
  1290.  
  1291. async function TryRoztapiarka()
  1292. {
  1293. DebugLog("[Roztapiarka] TryRoztapiarka Pre");
  1294. //setAction(NudyNaPudy);
  1295. for(var i=0; i < 6; i++)
  1296. {
  1297. if(!CheckForgeTime(i)) continue;
  1298.  
  1299. DebugLog("[Roztapiarka] i == "+i);
  1300. ChooseForgeBox(i);
  1301. await sleep(3000);
  1302.  
  1303. if(jQ("#slot-finished-succeeded[class^='hidden']").length == 0)
  1304. {
  1305. DebugLog("[Roztapiarka] finished-succeeded");
  1306. TakeMaterials();
  1307. return;
  1308. }
  1309. else if(jQ("#slot-closed[class^='hidden']").length == 0)
  1310. {
  1311. DebugLog("[Roztapiarka] closed");
  1312. MakeForge();
  1313. return;
  1314. }
  1315. else if(jQ("#slot-crafting[class^='hidden']").length == 0)
  1316. {
  1317. DebugLog("[Roztapiarka] crafting, time == "+jQ("#forge_time_remaining").text());
  1318. var tabOfTime = jQ("#forge_time_remaining").text().split(':');
  1319. for(var j=0; j<3;j++) tabOfTime[j] = parseInt(tabOfTime[j]);
  1320.  
  1321. CzasDoTopienia[i] = GetTime()+1000*(tabOfTime[2]+60*(tabOfTime[1] + 60*tabOfTime[0]));
  1322. localStorage.setItem("B_Roztapiarka"+i, CzasDoTopienia[i]);
  1323. setAction(NudyNaPudy);
  1324. }
  1325. else
  1326. {
  1327. setAction(NudyNaPudy);
  1328. DebugLog("[Roztapiarka] break");
  1329. break;
  1330. }
  1331. }
  1332. }
  1333.  
  1334. function ChooseForgeBox(index)
  1335. {
  1336. var divNav = jQ("#forge_nav").find("div");
  1337. if(divNav.length > 0)
  1338. {
  1339. divNav.eq(index).click();
  1340. }
  1341. }
  1342.  
  1343. function ChooseStorageBox(num)
  1344. {
  1345. jQ("a[data-bag-number="+(511+num)+"]").click();
  1346. }
  1347.  
  1348. function FindBoxByType(type)
  1349. {
  1350. return jQ("div[data-content-type-accept="+type+"]");
  1351. }
  1352.  
  1353. function FindItemsByType(type, from)
  1354. {
  1355. return jQ( from ).find("div[data-content-type="+type+"]");
  1356. }
  1357.  
  1358. function FindItems(from)
  1359. {
  1360. return jQ(from).find(`div[class*="item"]`);
  1361. }
  1362.  
  1363. /* --- Dodanie HP --- */
  1364. async function AddHP()
  1365. {
  1366. DebugLog("AddHP()");
  1367. for(var i=1; i < 6; i++)
  1368. {
  1369. if(!ustawienia['SZJ-'+i]) continue;
  1370.  
  1371. ChooseStorageBox(i);
  1372. await sleep(1000);
  1373. DebugLog("After ChooseStorageBox()");
  1374. var Item = FindItemsByType(Jedzenie, Inventarz);
  1375. var Box = FindBoxByType(Jedzenie);
  1376.  
  1377. if(Item.length <= 0 || Box.length <= 0)
  1378. {
  1379. if(Item.length <= 0) DebugLog("[Jedzenie] Nie ma tu żarcia");
  1380. if(Box.length <= 0) DebugLog("[Jedzenie] Nie ma tu box'a");
  1381. continue;
  1382. }
  1383. Item = Item.first();
  1384. Box = Box.first();
  1385.  
  1386. DragAndDrop(Item, Box);
  1387. DebugLog("After DragAndDrop()");
  1388. setAction(NudyNaPudy);
  1389. return;
  1390. }
  1391. }
  1392.  
  1393. function GetHP()
  1394. {
  1395. var HP = parseInt(jQ("#header_values_hp_percent").text());
  1396. if(isNaN(HP)) return 0;
  1397.  
  1398. return HP;
  1399. }
  1400.  
  1401.  
  1402. /* --- Misje --- */
  1403.  
  1404. function TryMisja()
  1405. {
  1406. for(var i=0; i < MissionID_end.length; i++)
  1407. {
  1408. var box = jQ( MissionID_end[i] );
  1409. if(box.length != 1) continue;
  1410.  
  1411. if( box.css("display") == "block")
  1412. {
  1413. var mission = box.find("a");
  1414. if(mission.length <= 0) continue;
  1415. mission = mission.first();
  1416. var url = mission.attr("href");
  1417. Location(url);
  1418. return;
  1419. }
  1420. }
  1421. setAction(NudyNaPudy);
  1422.  
  1423. for(var i=0; i < MissionID_start.length; i++)
  1424. {
  1425. if(!ustawienia['MDW-'+(i+1)]) continue;
  1426.  
  1427. var box = jQ( MissionID_start[i] );
  1428. if(box.length != 1) continue;
  1429.  
  1430. if( box.css("display") == "block")
  1431. {
  1432. var mission = box.find("a");
  1433. for(var j=0; j < mission.length; j++)
  1434. {
  1435. if( mission.eq(j).attr("title") == "Przyjmij zadanie")
  1436. {
  1437. var url = mission.eq(j).attr("href");
  1438. Location(url);
  1439. return;
  1440. }
  1441. }
  1442. }
  1443. }
  1444.  
  1445.  
  1446. var newMissionBtn = jQ(`input[value="Nowe zadania"]:enabled`);
  1447. if( newMissionBtn.length == 1) newMissionBtn.click();
  1448. }
  1449.  
  1450. /* --- Pakowanie --- */
  1451.  
  1452. function setPakaStatus(x)
  1453. {
  1454. PakiStatus = x;
  1455. localStorage.setItem("B_Paczka_Akcja", x);
  1456. }
  1457.  
  1458. window.confirm = function myConfirm() {
  1459. return true;
  1460. }
  1461.  
  1462. function TryPakujGolda()
  1463. {
  1464. var myGold = GetGold();
  1465. var btn = jQ(`input[value="Kup"]`);
  1466.  
  1467. for(var i=btn.length-1; i >= 0; i--)
  1468. {
  1469. var td = btn.eq(i).closest("tr").find("td");
  1470. var itemPrice = toInt(td.eq(2).text().replace(/\s/g, "").replace(/\./g,""));
  1471. if(itemPrice % 100000 != 0 || itemPrice > myGold) continue;
  1472.  
  1473. var sniezka = td.eq(0).find(`div[data-basis="21-5"]`).length;
  1474. var dynia = td.eq(0).find(`div[data-basis="21-7"]`).length;
  1475.  
  1476. if(sniezka == 0 && dynia == 0) cotninue;
  1477.  
  1478. var myItem = td.eq(0).find(`div[class*="item"]`);
  1479. var itemID = myItem.attr("data-soulbound-to");
  1480. localStorage.setItem("B_Paczka_Akcja", 1);
  1481. localStorage.setItem("B_Paczka_ID", itemID);
  1482. localStorage.setItem("B_Paczka_Cena", itemPrice);
  1483.  
  1484. WaiterStamp();
  1485. jQ(`input[value="Kup"]`).eq(i).click();
  1486. DebugLog("[Paczki] Kupuje: i: "+i+" | price: "+itemPrice+" | id: "+itemID);
  1487. return;
  1488. }
  1489. }
  1490.  
  1491. async function TryWezPaczke()
  1492. {
  1493. ChooseStorageBox(ustawienia['SZEQNP']);
  1494. await sleep(1000);
  1495. var Box = jQ(Inventarz);
  1496. var Item = jQ(`div[data-soulbound-to=`+PakiItemID+`]`);
  1497. if(Item.length > 0)
  1498. {
  1499. var Cells = Box.find(`div[class="ui-droppable grid-droparea"]`);
  1500. if(Cells.length == 0)
  1501. {
  1502. DragAndDrop(Item, Box);
  1503. await sleep(100);
  1504. Cells = Box.find(`div[class="ui-droppable grid-droparea"]`);
  1505. }
  1506. DragAndDrop(Item, Cells.last());
  1507. await sleep(2000);
  1508. setPakaStatus(2);
  1509. GoTo(link_rynekGildii);
  1510. return "lel";
  1511. }
  1512. PaczkiRestart();
  1513. }
  1514.  
  1515. async function TrySprzedajPake()
  1516. {
  1517. if(GetGold() < (PakiCena*0.02 + 1) ) return;
  1518.  
  1519. ChooseStorageBox(ustawienia['SZEQNP']);
  1520. await sleep(1000);
  1521. var Box = jQ("#market_sell");
  1522. var Item = jQ(Inventarz).find(`div[data-soulbound-to=`+PakiItemID+`]`);
  1523.  
  1524. if(Item.length > 0)
  1525. {
  1526. DragAndDrop(Item, Box);
  1527. await sleep(1000);
  1528. jQ("#preis").val(PakiCena);
  1529. jQ("#dauer").val(3)
  1530. calcDues();
  1531. await sleep(1000);
  1532. jQ(`input[value="Oferta"]`).click();
  1533. }
  1534. PaczkiRestart();
  1535. }
  1536.  
  1537. function PaczkiRestart()
  1538. {
  1539. setPakaStatus(0);
  1540. localStorage.setItem("B_Paczka_ID", 0);
  1541. localStorage.setItem("B_Paczka_Cena", 0);
  1542. }
  1543.  
  1544. function AddButtons()
  1545. {
  1546. if(ImThere(link_paczki)) jQ(`div[class*="inventoryBox"]`).first().append(PaczkiButton);
  1547. else if(ImThere(link_handlarze)) jQ(`div[class*="inventoryBox"]`).first().append(HandlarzeButton);
  1548. else if(ImThere(link_ranking))
  1549. {
  1550. var ele = jQ("#highscore_range");
  1551. ele.prepend(ClickAllArena);
  1552. ele.prepend(ClickAllCT);
  1553. }
  1554. else if(ImThere(link_listaCzlonkowGildii))
  1555. {
  1556. var ele = jQ("#content");
  1557. ele.prepend(ClickAllArena);
  1558. ele.prepend(ClickAllCT);
  1559. }
  1560. else if(ImThere(link_aukcja))
  1561. {
  1562. var Items = FindItemsByType(Jedzenie, "#auction_table").not(`[data-tooltip*="Czas"]`);
  1563. if(Items.length > 0)
  1564. {
  1565. var oldBtn = jQ(`input[value="Filtr" ]`);
  1566. var oldTd = oldBtn.closest("td");
  1567. var tr = oldTd.closest("tr");
  1568. oldTd.attr("colspan", "");
  1569. oldTd.css("text-align", "right");
  1570. tr.append(AukcjaButton);
  1571. }
  1572. }
  1573.  
  1574. /* --- Simulator buttons --- */
  1575. var listOfPlayers = jQ("a[href*='mod=player']");
  1576. if( listOfPlayers.length == 0) return;
  1577.  
  1578. if( ImThere(link_arenaProvincum) || ImThere(link_arena) || ImThere(link_raportyArena) ) AddCheckButtons(Arena);
  1579. else if( ImThere(link_ctProvincum) || ImThere(link_ct) || ImThere(link_raportyCT) ) AddCheckButtons(CT);
  1580. else if( ImThere(link_listaCzlonkowGildii) || ImThere(link_ranking) ) AddCheckButtons(Arena|CT);
  1581. }
  1582.  
  1583. async function PutAllItemsToBox(From, To)
  1584. {
  1585. var Box = jQ(To);
  1586. if(Box.length != 1)
  1587. {
  1588. console.log("Brak elementu: "+To);
  1589. return;
  1590. }
  1591.  
  1592. var Items = FindItems(From);
  1593. if(Items.length < 1)
  1594. {
  1595. console.log("Brak przedmiotów");
  1596. return;
  1597. }
  1598. var Cells = Box.find(`div[class="ui-droppable grid-droparea"]`);
  1599. if(Cells.length == 0)
  1600. {
  1601. DragAndDrop(Items.last(), Box);
  1602. await sleep(150);
  1603. if(Items.length == 0) Items = FindItems(From);
  1604. Cells = Box.find(`div[class="ui-droppable grid-droparea"]`);
  1605. }
  1606.  
  1607. for(var i = (Items.length - 1); i >= 0; i--)
  1608. {
  1609. DragAndDrop(Items.eq(i), Box);
  1610. await sleep(10);
  1611. Cells = Box.find(`div[class="ui-droppable grid-droparea"]`);
  1612. if(Cells.length < 1)
  1613. {
  1614. console.log("Koniec miejsca w box'ie");
  1615. return;
  1616. }
  1617. DragAndDrop(Items.eq(i), Cells.last());
  1618. await sleep(125);
  1619. if(Items.length == 0) Items = FindItems(From);
  1620. }
  1621. }
  1622.  
  1623. function KupJedzenie()
  1624. {
  1625. jQ("#B_tooltiptext").css("opacity", "1");
  1626. jQ("#B_tooltiptext").text("KupujÄ™");
  1627. var Items = FindItemsByType(Jedzenie, "#auction_table").not(`[data-tooltip*="Czas"]`);
  1628. var count = 0;
  1629. for(var i = 0; i < Items.length; i++)
  1630. {
  1631. if(Items.eq(i).attr("data-content-size") == 1)
  1632. {
  1633. var div = Items.eq(i).closest("form").find(`div[class="auction_bid_div"]`);
  1634. var text = div.children("div").first().text().slice(1, 100);
  1635. text = text.replace(/\s/g, "");
  1636. if(text == "Brakofert" || text == "Przedmiotlicytowany")
  1637. {
  1638. var btn = div.children(`input[value="Licytuj"]`);
  1639. if(btn.length == 1)
  1640. {
  1641. btn.click();
  1642. count++;
  1643. }
  1644. }
  1645. }
  1646. }
  1647. jQ("#B_tooltiptext").text("Zakupiono "+count+" jedzenia");
  1648. setTimeout(() => jQ("#B_tooltiptext").css("opacity", "0"), 2000);
  1649. }
  1650.  
  1651. function AddCheckButtons(type)
  1652. {
  1653. var listOfPlayers = jQ("a[href*='mod=player']");
  1654. var res = `https://s`+ustawienia['IndexSerwera']+`-pl.gladiatus.gameforge.com/game/`;
  1655.  
  1656. for(var i=0; i < listOfPlayers.length; i++)
  1657. {
  1658. if(type != (Arena|CT))
  1659. {
  1660. var tr = jQ("a[href*='mod=player']").eq(i).parents("tbody").children("tr").first();
  1661. if(tr.children("th").last().text() != "Symulator") tr.append("<th>Symulator</th>");
  1662.  
  1663. var tab = jQ("a[href*='mod=player']").eq(i).parents("table");
  1664. tab.css("width", "100%");
  1665. }
  1666.  
  1667. var link = listOfPlayers.eq(i).attr("href");
  1668. if(link.indexOf("gladiatus") == -1)
  1669. {
  1670. link = res + link;
  1671. var serverID = ustawienia['IndexSerwera'];
  1672. }
  1673. else
  1674. {
  1675. var buff = listOfPlayers.eq(i).attr("href").split("s");
  1676. var serverID = parseInt(buff[2]);
  1677. }
  1678.  
  1679. var enemy_url = new URL(link);
  1680. var playerID = enemy_url.searchParams.get("p");
  1681.  
  1682. // Nie powtarzanie przycisków
  1683. if(!ImThere(link_raportyArena) && !ImThere(link_raportyCT))
  1684. {
  1685. if(Symulator.EnemyID.find(x => {return x == playerID}) != undefined) continue;
  1686.  
  1687. Symulator.EnemyID.push(playerID);
  1688. }
  1689.  
  1690. if(type == (Arena|CT))
  1691. {
  1692. var parent = jQ("a[href*='mod=player']").eq(i).parents("td");
  1693. parent.css("text-align", "center");
  1694. var str = `<br><div class="SymulatorView" >`;
  1695. str += `<span style="width: 50%;float: left;"><button data-pos-num="`+i+`" data-type="`+Arena+`" onclick="CheckPlayer(this,`+playerID+`,`+serverID+`,`+Arena+`)">Arena</button></span>`;
  1696. str += `<span style="width: 50%;float: right;"><button data-pos-num="`+i+`" data-type="`+CT+`" onclick="CheckPlayer(this,`+playerID+`,`+serverID+`,`+CT+`)">CT</button></span>`;
  1697. str += `</div>`
  1698. parent.append(str);
  1699. }
  1700. else
  1701. {
  1702. var parent = jQ("a[href*='mod=player']").eq(i).parents("tr");
  1703. var str = `<td style="text-align: center;"><button data-pos-num="`+i+`" data-type="`+type+`" onclick="CheckPlayer(this,`+playerID+`,`+serverID+`,`+type+`)">Check</button></td>`;
  1704. parent.append(str);
  1705. }
  1706. Symulator.EnemyCount++;
  1707. }
  1708.  
  1709. var lel = jQ(`td[colspan="4"]`);
  1710. for(var i=0; i < lel.length; i++) lel.eq(i).attr("colspan", 5);
  1711. }
  1712.  
  1713. /* --- JavaScript --- */
  1714.  
  1715. function ReloadPage()
  1716. {
  1717. window.location.reload(true);
  1718. }
  1719.  
  1720. function GetTime()
  1721. {
  1722. return (new Date()).getTime();
  1723. }
  1724.  
  1725. function sleep(ms) {
  1726. return new Promise(resolve => setTimeout(resolve, ms));
  1727. }
  1728.  
  1729.  
  1730. function getRndInteger(min, max) {
  1731. return Math.floor(Math.random() * (max - min) ) + min;
  1732. }
  1733.  
  1734.  
  1735. function MinMax(min, val, max)
  1736. {
  1737. if(min > val) return min;
  1738. if(max < val) return max;
  1739.  
  1740. return val;
  1741. }
  1742.  
  1743. function Max(a, b)
  1744. {
  1745. if(a > b) return a;
  1746.  
  1747. return b;
  1748. }
  1749.  
  1750. function Min(a, b)
  1751. {
  1752. if(a < b) return a;
  1753.  
  1754. return b;
  1755. }
  1756.  
  1757.  
  1758. function TimeToString(time)
  1759. {
  1760. time -= GetTime();
  1761. time = Math.floor( time/1000 );
  1762. var S = time % 60;
  1763. time = Math.floor( time/60 );
  1764. var M = time % 60;
  1765. time = Math.floor( time/60 );
  1766. var H = time % 60;
  1767.  
  1768. var str = "";
  1769. if(H > 0) str = H+":"+M+":"+S;
  1770. else if( M > 0) str = M+":"+S;
  1771. else if( S > 0) str = S;
  1772. else str = "On";
  1773.  
  1774. return str;
  1775. }
  1776.  
  1777.  
  1778. function setCookie(cname, cvalue, exdays) {
  1779. var d = new Date();
  1780. d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
  1781. var expires = "expires="+d.toUTCString();
  1782. document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  1783. }
  1784.  
  1785. function setCookieSec(cname, cvalue, exsec) {
  1786. var d = new Date();
  1787. d.setTime(d.getTime() + (exsec * 1000));
  1788. var expires = "expires="+d.toUTCString();
  1789. document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  1790. }
  1791.  
  1792. function getCookie(name)
  1793. {
  1794. var value = "; " + document.cookie;
  1795. var parts = value.split("; " + name + "=");
  1796. if (parts.length == 2) return parts.pop().split(";").shift();
  1797.  
  1798. return "";
  1799. }
  1800.  
  1801. function CanChangeLocation()
  1802. {
  1803. var d = new Date();
  1804. var time = d.getTime();
  1805. if((time - localStorage.getItem("LastSiteChange")) > 1500 ) return true;
  1806.  
  1807. return false;
  1808. }
  1809.  
  1810. function Location(pwd)
  1811. {
  1812. var d = new Date();
  1813. var time = d.getTime();
  1814. if((time - localStorage.getItem("LastSiteChange")) > 1500 )
  1815. {
  1816. if(pwd == undefined)
  1817. {
  1818. GoTo(link_podglad);
  1819. return;
  1820. }
  1821. localStorage.setItem("LastSiteChange", time);
  1822. window.location = pwd;
  1823. }
  1824. }
  1825.  
  1826. function WaiterStamp()
  1827. {
  1828. var d = new Date();
  1829. var time = d.getTime();
  1830.  
  1831. localStorage.setItem("LastSiteChange", time);
  1832. }
  1833.  
  1834. function DebugLog(Msg)
  1835. {
  1836. if(Debug) console.log(Msg);
  1837. }
  1838.  
  1839. String.prototype.replaceAll = function(search, replacement) {
  1840. var target = this;
  1841. return target.split(search).join(replacement);
  1842. }
  1843.  
  1844. function toInt(str)
  1845. {
  1846. if(isNaN(str)) return 0;
  1847.  
  1848. var number = parseInt(str);
  1849. if(isNaN(number) || !Number.isFinite(number)) return 0;
  1850.  
  1851. return number;
  1852. }
  1853.  
  1854. Element.prototype.remove = function() {
  1855. this.parentElement.removeChild(this);
  1856. }
  1857. NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
  1858. for(var i = this.length - 1; i >= 0; i--) {
  1859. if(this[i] && this[i].parentElement) {
  1860. this[i].parentElement.removeChild(this[i]);
  1861. }
  1862. }
  1863. }
  1864.  
  1865.  
  1866. function getKeyByValue(object, value) {
  1867. return Object.keys(object).find(key => object[key] === value);
  1868. }
  1869.  
  1870. async function GetPlayerData()
  1871. {
  1872. var listOfPlayers = jQ("a[href*='mod=player']");
  1873. if( listOfPlayers.length == 0 ) return;
  1874. if(!(ImThere(link_arenaProvincum) || ImThere(link_arena) || ImThere(link_raportyArena) || ImThere(link_raportyCT) || ImThere(link_listaCzlonkowGildii) || ImThere(link_ranking) || ImThere(link_ctProvincum) || ImThere(link_ct))) return;
  1875.  
  1876. var type = 0;
  1877. if(Akcja == Arena && ustawienia['SymulatorArena']) type = Arena;
  1878. else if(Akcja == CT && ustawienia['SymulatorCT']) type = CT;
  1879.  
  1880. if(type)
  1881. {
  1882. if(Symulator.Ja <= 0)
  1883. {
  1884. if(Symulator.Ja == 0) CheckPlayer(-1, ustawienia['IndexGracza'], ustawienia['IndexSerwera'], type);
  1885.  
  1886. Symulator.Ja = -1;
  1887.  
  1888. while(Symulator.Ja <= 0) await sleep(10);
  1889. }
  1890. /*
  1891. var res = `https://s`+ustawienia['IndexSerwera']+`-pl.gladiatus.gameforge.com/game/`;
  1892.  
  1893. for(var i=0; i < listOfPlayers.length; i++)
  1894. {
  1895. var link = listOfPlayers.eq(i).attr("href");
  1896. if(link.indexOf("gladiatus") == -1)
  1897. {
  1898. link = res + link;
  1899. var serverID = ustawienia['IndexSerwera'];
  1900. }
  1901. else
  1902. {
  1903. var buff = listOfPlayers.eq(i).attr("href").split("s");
  1904. var serverID = parseInt(buff[2]);
  1905. }
  1906.  
  1907. var enemy_url = new URL(link);
  1908. var playerID = enemy_url.searchParams.get("p");
  1909. if(Symulator.EnemyID.find(x => {return x == playerID}) != undefined) continue;
  1910.  
  1911. Symulator.EnemyID.push(playerID);
  1912. Symulator.EnemyCount++;
  1913. CheckPlayer(i, playerID, serverID, type);
  1914. }*/
  1915. }
  1916. }
  1917.  
  1918. async function CheckPlayer(Button, playerID, serverID, type)
  1919. {
  1920. DebugLog("Fight: "+playerID+" | "+serverID+" | "+type);
  1921. var pc = new Player(playerID, serverID, type);
  1922.  
  1923. if(Symulator.Ja <= 0 && Button != -1)
  1924. {
  1925. if(Symulator.Ja == 0) CheckPlayer(-1, ustawienia['IndexGracza'], ustawienia['IndexSerwera'], type);
  1926.  
  1927. Symulator.Ja = -1;
  1928. while(Symulator.Ja <= 0) await sleep(10);
  1929. }
  1930.  
  1931. if(type == Arena) httpGetAsync(Button, pc.GetLink(1), LoadPlayerData, pc);
  1932. else for(var i=2; i < 7; i++) httpGetAsync(Button, pc.GetLink(i), LoadPlayerData, pc);
  1933. }
  1934.  
  1935. function httpGetAsync(Button, theUrl, callback, pc)
  1936. {
  1937. var xmlHttp = new XMLHttpRequest();
  1938. xmlHttp.onreadystatechange = function() {
  1939. if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
  1940. callback(Button, xmlHttp.responseText, pc);
  1941. }
  1942. xmlHttp.open("GET", theUrl, true); // true for asynchronous
  1943. xmlHttp.send(null);
  1944. }
  1945.  
  1946. function LoadPlayerData(Button, page, pc)
  1947. {
  1948. var start = page.search(`id="charstats"`);
  1949. page = page.substring(start, page.length - 1);
  1950.  
  1951. var lastone = 0;
  1952. var character = new Char();
  1953.  
  1954. /* --- Określenie typu postaci --- */
  1955.  
  1956. var n = page.indexOf("charmercsel active", 0);
  1957. var start = page.indexOf("Zadanie: ", n);
  1958. var end = page.indexOf("&", start);
  1959. var str = page.slice(start,end);
  1960. if(page.indexOf("Walka w lochach", n) != -1) character.isMain = true;
  1961. else character.isMain = false;
  1962.  
  1963. if(str == "Zadanie: Prowokuj przeciwnika") character.type = Blocker;
  1964. else if(str == "Zadanie: Atakuj") character.type = Attacker;
  1965. else character.type = Healer;
  1966. /* end */
  1967.  
  1968. /* --- Get: lvl, dmg, pancerz, zagrożenie --- */
  1969. for(var i=0; i < 4; i++)
  1970. {
  1971. var toFind = `"charstats_value22"`;
  1972. n = page.indexOf(toFind, lastone)+toFind.length;
  1973. lastone = n;
  1974.  
  1975. if(i == 2)
  1976. {
  1977. var buff = page.substring(n+1, n+12).split(" - ");
  1978. character.obrazeniaMin = parseInt(buff[0]);
  1979. character.obrazeniaMax = parseInt(buff[1]);
  1980. }
  1981. else
  1982. {
  1983. var number = parseInt(page.substring(n+1, n+7));
  1984. if(i == 0) character.lvl = number;
  1985. else if(i == 1) character.pancerz = number;
  1986. else if(i == 3) character.zagrozenie = number;
  1987. }
  1988. }
  1989.  
  1990. /* --- Get: base stats --- */
  1991. lastone = 0;
  1992. for(var i = 0; i < 8; i++)
  1993. {
  1994. var toFind = `"charstats_value"`;
  1995. n = page.indexOf(toFind, lastone)+toFind.length;
  1996. lastone = n;
  1997.  
  1998. var number = parseInt(page.substring(n+1, n+7));
  1999. if(character.isMain)
  2000. {
  2001. if(i == 2) character.sila = number;
  2002. else if(i == 3) character.wladanie = number;
  2003. else if(i == 4) character.zrecznosc = number;
  2004. else if(i == 5) character.budowa = number;
  2005. else if(i == 6) character.charyzma = number;
  2006. else if(i == 7) character.inteligencja = number;
  2007. }
  2008. else
  2009. {
  2010. if(i == 1) character.sila = number;
  2011. else if(i == 2) character.wladanie = number;
  2012. else if(i == 3) character.zrecznosc = number;
  2013. else if(i == 4) character.budowa = number;
  2014. else if(i == 5) character.charyzma = number;
  2015. else if(i == 6) character.inteligencja = number;
  2016. }
  2017. }
  2018.  
  2019. // Parowanie
  2020. var toFind = `cie krytycznych trafie`;
  2021. n = page.indexOf(toFind)+toFind.length;
  2022. var number = parseInt( page.substring(n+20, n+23) );
  2023. character.UnikniecieKrytyczne = number/100;
  2024.  
  2025. // Blokowanie
  2026. toFind = `Szanse na zablokowanie ciosu:`;
  2027. n = page.indexOf(toFind)+toFind.length;
  2028. number = parseInt( page.substring(n+13, n+16) );
  2029. character.ZablokowanieTrafienia = number/100;
  2030.  
  2031. // Trafienie krytyczne
  2032. toFind = `Szanse na krytyczne trafienie:`;
  2033. n = page.indexOf(toFind)+toFind.length;
  2034. number = parseInt( page.substring(n+13, n+16) );
  2035. character.KrytyczneTrafienie = number/100;
  2036.  
  2037. pc.character.push(character);
  2038. if(pc.type == Arena || (pc.type == CT && pc.character.length == 5) )
  2039. {
  2040. if(Button == -1) Symulator.Ja = pc;
  2041. else
  2042. {
  2043. SimulateBattle(Button, pc);
  2044. Symulator.EnemyLoaded++;
  2045. }
  2046. }
  2047. }
  2048.  
  2049. function SimulateBattle(Button, pc)
  2050. {
  2051. var chance = 0;
  2052. if(pc.type == Arena) chance = SimulateArena(Symulator.Ja, pc);
  2053. else chance = SimulateCT(Symulator.Ja, pc);
  2054.  
  2055. red = 255*Math.cos( (Math.PI/2)*MinMax(0, chance, 100)/100 );
  2056. green = 255*Math.sin( (Math.PI/2)*MinMax(0, chance, 100)/100 );
  2057.  
  2058. var elementTD = jQ(Button).parent();
  2059. elementTD.append(`<span class="B_ChanceToWin" style="text-shadow: 0 1px 6px rgb(`+red+`,`+green+`,0);">`+chance+`%</span>`);
  2060. var BtnPos = Number(jQ(Button).attr("data-pos-num"));
  2061. var BtnType = Number(jQ(Button).attr("data-type"));
  2062. jQ(Button).remove();
  2063.  
  2064. if(Symulator.WeakestEnemy.WinRatio <= chance)
  2065. {
  2066. Symulator.WeakestEnemy.Position = BtnPos;
  2067. Symulator.WeakestEnemy.WinRatio = chance;
  2068. }
  2069. }
  2070.  
  2071. function SimulateCT(attacker, deffender)
  2072. {
  2073. attacker.CalculateStats();
  2074. deffender.CalculateStats();
  2075. var aDmg = 0;
  2076. var dDmg = 0;
  2077.  
  2078. for(var i = 0; i < attacker.character.length; i++)
  2079. {
  2080. for(var j = 0; j < deffender.character.length; j++)
  2081. {
  2082. var a = attacker.character[i];
  2083. var d = deffender.character[j];
  2084.  
  2085. a.CalculateStats(d);
  2086. d.CalculateStats(a);
  2087.  
  2088. var aChance = d.GetThreat() / deffender.zagrozenie;
  2089. var dChance = a.GetThreat() / attacker.zagrozenie;
  2090.  
  2091. aDmg += a.DmgDone(d, aChance, 50);
  2092. dDmg += d.DmgDone(a, dChance, 50);
  2093. }
  2094. }
  2095.  
  2096. //var chance = Math.round(1000*aDmg / (aDmg+dDmg))/10;
  2097.  
  2098. var aDmgPerc = aDmg / (aDmg+dDmg);
  2099. var dDmgPerc = dDmg / (aDmg+dDmg);
  2100.  
  2101. var aXGauss = Math.sqrt(-Math.log(aDmgPerc));
  2102. var dXGauss = Math.sqrt(-Math.log(dDmgPerc));
  2103.  
  2104. var chance = Math.round(1000*dXGauss / (dXGauss+aXGauss))/10;
  2105.  
  2106. return chance;
  2107. }
  2108.  
  2109. function SimulateArena(attacker, deffender)
  2110. {
  2111. var a = attacker.character[0];
  2112. var d = deffender.character[0];
  2113. a.CalculateStats(d);
  2114. d.CalculateStats(a);
  2115.  
  2116. var aDmg = a.DmgDone(d, 1, 15);
  2117. var dDmg = d.DmgDone(a, 1, 15);
  2118.  
  2119. //var chance = Math.round(1000*aDmg / (aDmg+dDmg))/10;
  2120.  
  2121. var aDmgPerc = aDmg / (aDmg+dDmg);
  2122. var dDmgPerc = dDmg / (aDmg+dDmg);
  2123.  
  2124. var aXGauss = Math.sqrt(-Math.log(aDmgPerc));
  2125. var dXGauss = Math.sqrt(-Math.log(dDmgPerc));
  2126.  
  2127. var chance = Math.round(1000*dXGauss / (dXGauss+aXGauss))/10;
  2128.  
  2129. /*var str = "Statystyki\n\nJa:";
  2130. var lel = a;
  2131. str += "\nObrażenia: "+lel.ZadawaneObrazenia[0] + " ~ " + lel.ZadawaneObrazenia[1];
  2132. str += "\nSzansa na trafienie: "+lel.Trafienie;
  2133. str += "\nSzansa na podwójne trafienie: "+lel.PodwojneTrafienie;
  2134. str += "\nSzansa na krytyczne trafienie: "+lel.KrytyczneTrafienie;
  2135. str += "\nSzansa na blok: "+lel.ZablokowanieTrafienia;
  2136. str += "\nBlokowanie obrażeń: "+lel.BlokowaneObrazenia[0] + " ~ " + lel.BlokowaneObrazenia[1];
  2137. str += "\nSzansa na unik: "+lel.UnikniecieKrytyczne;
  2138.  
  2139. var lel = d;
  2140. str += "\n\nEnemy:";
  2141. str += "\nObrażenia: "+lel.ZadawaneObrazenia[0] + " ~ " + lel.ZadawaneObrazenia[1];
  2142. str += "\nSzansa na trafienie: "+lel.Trafienie;
  2143. str += "\nSzansa na podwójne trafienie: "+lel.PodwojneTrafienie;
  2144. str += "\nSzansa na krytyczne trafienie: "+lel.KrytyczneTrafienie;
  2145. str += "\nSzansa na blok: "+lel.ZablokowanieTrafienia;
  2146. str += "\nBlokowanie obrażeń: "+lel.BlokowaneObrazenia[0] + " ~ " + lel.BlokowaneObrazenia[1];
  2147. str += "\nSzansa na unik: "+lel.UnikniecieKrytyczne;
  2148.  
  2149. DebugLog(str);
  2150. DebugLog("A: "+aDmg+" | D: " + dDmg);*/
  2151.  
  2152. return chance;
  2153. }
  2154.  
  2155. function GetCss()
  2156. {
  2157. var GuiStyle = `<style>
  2158. .B_Gui
  2159. {
  2160. margin: 10px;
  2161. position: fixed;
  2162. z-index: 4000;
  2163. padding: 10px;
  2164. display: block;
  2165. background-color: black;
  2166. opacity: 0.85;
  2167. border-style: outset;
  2168. border-radius: 3px;
  2169. color: white;
  2170. box-sizing: inherit;
  2171. width: 250px;
  2172. }
  2173.  
  2174. .timer
  2175. {
  2176. top: 200px;
  2177. }
  2178.  
  2179. /* Rounded sliders */
  2180. .switch {
  2181. position: relative;
  2182. display: inline-block;
  2183. width: 40px;
  2184. height: 23px;
  2185. opacity: 1;
  2186. vertical-align: bottom;
  2187. }
  2188.  
  2189. .switch input {
  2190. opacity: 0;
  2191. width: 0;
  2192. height: 0;
  2193. }
  2194.  
  2195. .sliderFromSwitch {
  2196. position: absolute;
  2197. cursor: pointer;
  2198. top: 0;
  2199. left: 0;
  2200. right: 0;
  2201. bottom: 0;
  2202. background-color: #ccc;
  2203. -webkit-transition: .4s;
  2204. transition: .4s;
  2205. opacity: 1;
  2206. }
  2207.  
  2208. .sliderFromSwitch:before {
  2209. position: absolute;
  2210. content: "";
  2211. height: 17px;
  2212. width: 17px;
  2213. left: 3px;
  2214. bottom: 3px;
  2215. background-color: white;
  2216. -webkit-transition: .4s;
  2217. transition: .4s;
  2218. opacity: 1;
  2219. }
  2220.  
  2221. input:checked + .sliderFromSwitch {
  2222. background-color: limegreen;
  2223. }
  2224.  
  2225. input:focus + .sliderFromSwitch {
  2226. box-shadow: 0 0 1px #2196F3;
  2227. }
  2228.  
  2229. input:checked + .sliderFromSwitch:before {
  2230. -webkit-transform: translateX(17px);
  2231. -ms-transform: translateX(17px);
  2232. transform: translateX(17px);
  2233. }
  2234.  
  2235. .sliderFromSwitch.round {
  2236. border-radius: 23px;
  2237. }
  2238.  
  2239. .sliderFromSwitch.round:before {
  2240. border-radius: 50%;
  2241. }
  2242.  
  2243. /* Inner table*/
  2244. table.B_table, table.B_table td, table.B_table th {
  2245. padding: 4px;
  2246. //border: 1px solid #ddd;
  2247. text-align: center;
  2248. font-size: 102%;
  2249. opacity: 1;
  2250. }
  2251. table.B_table th
  2252. {
  2253. font-weight: bold;
  2254. text-decoration: underline;
  2255. width: 33%;
  2256. }
  2257. table.B_table caption
  2258. {
  2259. color: bisque;
  2260. margin: 6px 0;
  2261. font-size: 1.4em;
  2262. text-align: center;
  2263. }
  2264.  
  2265. table.B_table {
  2266. border-collapse: collapse;
  2267. opacity: 1;
  2268. }
  2269. .B_ChanceToWin
  2270. {
  2271. font-weight: bold;
  2272. display: inline-block;
  2273. color: black;
  2274. padding: 1px 3px 1px 3px;
  2275. text-decoration: none;
  2276. }
  2277. h2 {
  2278. text-align: center;
  2279. }
  2280. .tooltip {
  2281. position: relative;
  2282. display: inline-block;
  2283. }
  2284.  
  2285. .tooltip .tooltiptext {
  2286. opacity: 0;
  2287. width: 120px;
  2288. background-color: black;
  2289. color: #fff;
  2290. text-align: center;
  2291. border-radius: 6px;
  2292. padding: 5px 0;
  2293. position: absolute;
  2294. z-index: 1;
  2295. bottom: 150%;
  2296. left: 50%;
  2297. margin-left: -60px;
  2298. transition: opacity 0.5s;
  2299. }
  2300.  
  2301. .tooltip .tooltiptext::after {
  2302. content: "";
  2303. position: absolute;
  2304. top: 100%;
  2305. left: 50%;
  2306. margin-left: -5px;
  2307. border-width: 5px;
  2308. border-style: solid;
  2309. border-color: black transparent transparent transparent;
  2310. }
  2311.  
  2312. input.settings
  2313. {
  2314. width: 15px;
  2315. height: 15px;
  2316. margin: 0px 3px 0px 3px;
  2317. background-color: white;
  2318. border-color: gray;
  2319. padding: 2px;
  2320. border-radius: 5px;
  2321. vertical-align: bottom;
  2322. }
  2323.  
  2324. .SettingsMenu
  2325. {
  2326. position: relative;
  2327. display: inline-block;
  2328. }
  2329.  
  2330. .SettingsMenu .SettingsMenuText
  2331. {
  2332. display: none;
  2333. opacity: 0;
  2334. width: 250px;
  2335. background-color: grey;
  2336. color: #fff;
  2337. text-align: center;
  2338. padding: 5px 0;
  2339. border-radius: 6px;
  2340.  
  2341. position: absolute;
  2342. z-index: 99999;
  2343. transition: opacity 0.5s;
  2344. top: -5px;
  2345. left: 105%;
  2346. }
  2347.  
  2348. .SettingsMenuText select
  2349. {
  2350. width: 100%;
  2351. padding: 4px 6px;
  2352. border: none;
  2353. border-radius: 4px;
  2354. background-color: #f1f1f1;
  2355. }
  2356.  
  2357. input[type=image].settings:focus {
  2358. outline: none;
  2359. }
  2360.  
  2361. input[type=range].xSlider {
  2362. -webkit-appearance: none;
  2363. width: 80%;
  2364. margin: 0.7px 0;
  2365. border-color: #00000000;
  2366. background-color: #00000000;
  2367. vertical-align: bottom;
  2368. bottom: 0;
  2369. }
  2370. input[type=range].xSlider:focus {
  2371. outline: none;
  2372. }
  2373. input[type=range].xSlider::-webkit-slider-runnable-track {
  2374. width: 100%;
  2375. height: 25.6px;
  2376. cursor: pointer;
  2377. box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  2378. background: #484d4d;
  2379. border-radius: 0px;
  2380. border: 0px solid #010101;
  2381. }
  2382. input[type=range].xSlider::-webkit-slider-thumb {
  2383. box-shadow: 0px 0px 1px #670000, 0px 0px 0px #810000;
  2384. border: 0px solid #ff1e00;
  2385. height: 27px;
  2386. width: 18px;
  2387. border-radius: 0px;
  2388. background: rgba(255, 67, 95, 0.93);
  2389. cursor: pointer;
  2390. -webkit-appearance: none;
  2391. margin-top: -0.7px;
  2392. }
  2393. input[type=range].xSlider:focus::-webkit-slider-runnable-track {
  2394. background: #484d4d;
  2395. }
  2396. input[type=range].xSlider::-moz-range-track {
  2397. width: 100%;
  2398. height: 25.6px;
  2399. cursor: pointer;
  2400. box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  2401. background: #484d4d;
  2402. border-radius: 0px;
  2403. border: 0px solid #010101;
  2404. }
  2405. input[type=range].xSlider::-moz-range-thumb {
  2406. box-shadow: 0px 0px 1px #670000, 0px 0px 0px #810000;
  2407. border: 0px solid #ff1e00;
  2408. height: 27px;
  2409. width: 18px;
  2410. border-radius: 0px;
  2411. background: rgba(255, 67, 95, 0.93);
  2412. cursor: pointer;
  2413. }
  2414. input[type=range].xSlider::-ms-track {
  2415. width: 100%;
  2416. height: 25.6px;
  2417. cursor: pointer;
  2418. background: transparent;
  2419. border-color: transparent;
  2420. color: transparent;
  2421. }
  2422. input[type=range].xSlider::-ms-fill-lower {
  2423. background: #484d4d;
  2424. border: 0px solid #010101;
  2425. border-radius: 0px;
  2426. box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  2427. }
  2428. input[type=range].xSlider::-ms-fill-upper {
  2429. background: #484d4d;
  2430. border: 0px solid #010101;
  2431. border-radius: 0px;
  2432. box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  2433. }
  2434. input[type=range].xSlider::-ms-thumb {
  2435. box-shadow: 0px 0px 1px #670000, 0px 0px 0px #810000;
  2436. border: 0px solid #ff1e00;
  2437. height: 27px;
  2438. width: 18px;
  2439. border-radius: 0px;
  2440. background: rgba(255, 67, 95, 0.93);
  2441. cursor: pointer;
  2442. height: 25.6px;
  2443. }
  2444. input[type=range].xSlider:focus::-ms-fill-lower {
  2445. background: #484d4d;
  2446. }
  2447. input[type=range].xSlider:focus::-ms-fill-upper {
  2448. background: #484d4d;
  2449. }
  2450.  
  2451. input[type=number].BINum:focus {
  2452. outline: none;
  2453. }
  2454.  
  2455. input[type=number].BINum {
  2456. background: white;
  2457. border-color: #ff9d0070;
  2458. border-radius: 5px;
  2459. width: 100px;
  2460. text-align: center;
  2461. font-family: "Times New Roman", Times, serif;
  2462. padding: 3px 0px 2px 10px;
  2463. }
  2464.  
  2465. .SymulatorView
  2466. {
  2467. //border: 2px solid white;
  2468. margin: 1px 0 1px 0;
  2469. //border-left: 6px solid #80f;
  2470. display: inline-block;
  2471. width: 100%;
  2472. }
  2473.  
  2474. button
  2475. {
  2476. border: 1.5px solid white;
  2477. padding: 3% 10% 3% 10%;
  2478. margin: 0;
  2479. color: white;
  2480. background-color: #0000003A;
  2481. cursor: pointer;
  2482. transition: 400ms;
  2483. }
  2484.  
  2485. button:hover, button:focus
  2486. {
  2487. background-color: white;
  2488. color: black;
  2489. }
  2490.  
  2491. button:focus, button:active
  2492. {
  2493. outline: 2px solid #fff;
  2494. outline-offset: -1px;
  2495. }
  2496.  
  2497. .BVersion
  2498. {
  2499. float: right;
  2500. position: absolute;
  2501. top: 0;
  2502. right: 0;
  2503. padding: 5px;
  2504. }
  2505. </style>`;
  2506. return GuiStyle;
  2507. }
  2508.  
  2509. function DragAndDrop(Item, Box)
  2510. {
  2511. var draggable = Item.draggable(),
  2512. droppable = Box.droppable(),
  2513. droppableOffset = droppable.offset(),
  2514. draggableOffset = draggable.offset(),
  2515. dx = droppableOffset.left - draggableOffset.left,
  2516. dy = droppableOffset.top - draggableOffset.top;
  2517.  
  2518. draggable.simulate("drag", { dx: dx, dy: dy });
  2519. }
  2520.  
  2521. /* --- DragAndDrop simulate --- */
  2522. (function( jQ, undefined ) {
  2523.  
  2524. var rkeyEvent = /^key/,
  2525. rmouseEvent = /^(?:mouse|contextmenu)|click/;
  2526.  
  2527. jQ.fn.simulate = function( type, options ) {
  2528. return this.each(function() {
  2529. new jQ.simulate( this, type, options );
  2530. });
  2531. };
  2532.  
  2533. jQ.simulate = function( elem, type, options ) {
  2534. var method = jQ.camelCase( "simulate-" + type );
  2535.  
  2536. this.target = elem;
  2537. this.options = options;
  2538.  
  2539. if ( this[ method ] ) {
  2540. this[ method ]();
  2541. } else {
  2542. this.simulateEvent( elem, type, options );
  2543. }
  2544. };
  2545.  
  2546. jQ.extend( jQ.simulate, {
  2547.  
  2548. keyCode: {
  2549. BACKSPACE: 8,
  2550. COMMA: 188,
  2551. DELETE: 46,
  2552. DOWN: 40,
  2553. END: 35,
  2554. ENTER: 13,
  2555. ESCAPE: 27,
  2556. HOME: 36,
  2557. LEFT: 37,
  2558. NUMPAD_ADD: 107,
  2559. NUMPAD_DECIMAL: 110,
  2560. NUMPAD_DIVIDE: 111,
  2561. NUMPAD_ENTER: 108,
  2562. NUMPAD_MULTIPLY: 106,
  2563. NUMPAD_SUBTRACT: 109,
  2564. PAGE_DOWN: 34,
  2565. PAGE_UP: 33,
  2566. PERIOD: 190,
  2567. RIGHT: 39,
  2568. SPACE: 32,
  2569. TAB: 9,
  2570. UP: 38
  2571. },
  2572.  
  2573. buttonCode: {
  2574. LEFT: 0,
  2575. MIDDLE: 1,
  2576. RIGHT: 2
  2577. }
  2578. });
  2579.  
  2580. jQ.extend( jQ.simulate.prototype, {
  2581.  
  2582. simulateEvent: function( elem, type, options ) {
  2583. var event = this.createEvent( type, options );
  2584. this.dispatchEvent( elem, type, event, options );
  2585. },
  2586.  
  2587. createEvent: function( type, options ) {
  2588. if ( rkeyEvent.test( type ) ) {
  2589. return this.keyEvent( type, options );
  2590. }
  2591.  
  2592. if ( rmouseEvent.test( type ) ) {
  2593. return this.mouseEvent( type, options );
  2594. }
  2595. },
  2596.  
  2597. mouseEvent: function( type, options ) {
  2598. var event, eventDoc, doc, body;
  2599. options = jQ.extend({
  2600. bubbles: true,
  2601. cancelable: (type !== "mousemove"),
  2602. view: window,
  2603. detail: 0,
  2604. screenX: 0,
  2605. screenY: 0,
  2606. clientX: 1,
  2607. clientY: 1,
  2608. ctrlKey: false,
  2609. altKey: false,
  2610. shiftKey: false,
  2611. metaKey: false,
  2612. button: 0,
  2613. relatedTarget: undefined
  2614. }, options );
  2615.  
  2616. if ( document.createEvent ) {
  2617. event = document.createEvent( "MouseEvents" );
  2618. event.initMouseEvent( type, options.bubbles, options.cancelable,
  2619. options.view, options.detail,
  2620. options.screenX, options.screenY, options.clientX, options.clientY,
  2621. options.ctrlKey, options.altKey, options.shiftKey, options.metaKey,
  2622. options.button, options.relatedTarget || document.body.parentNode );
  2623.  
  2624. // IE 9+ creates events with pageX and pageY set to 0.
  2625. // Trying to modify the properties throws an error,
  2626. // so we define getters to return the correct values.
  2627. if ( event.pageX === 0 && event.pageY === 0 && Object.defineProperty ) {
  2628. eventDoc = event.relatedTarget.ownerDocument || document;
  2629. doc = eventDoc.documentElement;
  2630. body = eventDoc.body;
  2631.  
  2632. Object.defineProperty( event, "pageX", {
  2633. get: function() {
  2634. return options.clientX +
  2635. ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
  2636. ( doc && doc.clientLeft || body && body.clientLeft || 0 );
  2637. }
  2638. });
  2639. Object.defineProperty( event, "pageY", {
  2640. get: function() {
  2641. return options.clientY +
  2642. ( doc && doc.scrollTop || body && body.scrollTop || 0 ) -
  2643. ( doc && doc.clientTop || body && body.clientTop || 0 );
  2644. }
  2645. });
  2646. }
  2647. } else if ( document.createEventObject ) {
  2648. event = document.createEventObject();
  2649. jQ.extend( event, options );
  2650. // standards event.button uses constants defined here: http://msdn.microsoft.com/en-us/library/ie/ff974877(v=vs.85).aspx
  2651. // old IE event.button uses constants defined here: http://msdn.microsoft.com/en-us/library/ie/ms533544(v=vs.85).aspx
  2652. // so we actually need to map the standard back to oldIE
  2653. event.button = {
  2654. 0: 1,
  2655. 1: 4,
  2656. 2: 2
  2657. }[ event.button ] || ( event.button === -1 ? 0 : event.button );
  2658. }
  2659.  
  2660. return event;
  2661. }
  2662. });
  2663.  
  2664.  
  2665.  
  2666. /** complex events **/
  2667.  
  2668. function findCenter( elem ) {
  2669. var offset,
  2670. document = jQ( elem.ownerDocument );
  2671. elem = jQ( elem );
  2672. offset = elem.offset();
  2673.  
  2674. return {
  2675. x: offset.left + elem.outerWidth() / 2 - document.scrollLeft(),
  2676. y: offset.top + elem.outerHeight() / 2 - document.scrollTop()
  2677. };
  2678. }
  2679.  
  2680. function findCorner( elem ) {
  2681. var offset,
  2682. document = jQ( elem.ownerDocument );
  2683. elem = jQ( elem );
  2684. offset = elem.offset();
  2685.  
  2686. return {
  2687. x: offset.left - document.scrollLeft(),
  2688. y: offset.top - document.scrollTop()
  2689. };
  2690. }
  2691.  
  2692. jQ.extend( jQ.simulate.prototype, {
  2693. simulateDrag: function() {
  2694. var i = 0,
  2695. target = this.target,
  2696. options = this.options,
  2697. center = options.handle === "corner" ? findCorner( target ) : findCenter( target ),
  2698. x = Math.floor( center.x ),
  2699. y = Math.floor( center.y ),
  2700. coord = { clientX: x, clientY: y },
  2701. dx = options.dx || ( options.x !== undefined ? options.x - x : 0 ),
  2702. dy = options.dy || ( options.y !== undefined ? options.y - y : 0 ),
  2703. moves = options.moves || 3;
  2704.  
  2705. this.simulateEvent( target, "mousedown", coord );
  2706.  
  2707. for ( ; i < moves ; i++ ) {
  2708. x += dx / moves;
  2709. y += dy / moves;
  2710.  
  2711. coord = {
  2712. clientX: Math.round( x ),
  2713. clientY: Math.round( y )
  2714. };
  2715.  
  2716. this.simulateEvent( target.ownerDocument, "mousemove", coord );
  2717. }
  2718.  
  2719. if ( jQ.contains( document, target ) ) {
  2720. this.simulateEvent( target, "mouseup", coord );
  2721. this.simulateEvent( target, "click", coord );
  2722. } else {
  2723. this.simulateEvent( document, "mouseup", coord );
  2724. }
  2725. },
  2726. dispatchEvent: function( elem, type, event ) {
  2727. if ( elem[ type ] ) {
  2728. elem[ type ]();
  2729. } else if ( elem.dispatchEvent ) {
  2730. elem.dispatchEvent( event );
  2731. } else if ( elem.fireEvent ) {
  2732. elem.fireEvent( "on" + type, event );
  2733. }
  2734. }
  2735. });
  2736.  
  2737. })( jQ );
  2738.  
  2739.  
  2740. function GetMsg(e)
  2741. {
  2742. if(e.data == "Go")
  2743. {
  2744. isIframeLoaded = true;
  2745. if(isParent())
  2746. {
  2747. iframe.contentWindow.postMessage("IsWorking|"+IsWorking, '*');
  2748. iframe.contentWindow.postMessage("CzyPaczkowac|"+CzyPaczkowac, '*');
  2749. }
  2750. }
  2751. else
  2752. {
  2753. var str = e.data.split("|");
  2754. if(str[0] == "IsWorking")
  2755. {
  2756. IsWorking = toInt(str[1]);
  2757. if(!isParent()) jQ("#B_cb99").get()[0].checked = IsWorking;
  2758. }
  2759. else if(str[0] == "CzyPaczkowac")
  2760. {
  2761. CzyPaczkowac = toInt(str[1]);
  2762. if(!isParent()) jQ("#B_cb98").get()[0].checked = CzyPaczkowac;
  2763. }
  2764. }
  2765. }
  2766.  
  2767. function iframeLoaded()
  2768. {
  2769. isIframeLoaded = false;
  2770. }
  2771.  
  2772. function isParent()
  2773. {
  2774. if(iframe != null) return true;
  2775.  
  2776. return false;
  2777. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement