Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Die Siedler Online Language Change - naprawa skryptu
Forum PHP.pl > Forum > Przedszkole
tOmki
Witam wszystkich,

Mam problem z grą Die Siedler Online, na początku gra pojawiła się tylko na sserwerach w języku niemieckim i tam zacząłem grać. Po ok. roku pojawiła się wersja polska i tedy dało mi się znaleść skrypt na userscript, który spolszcza interfejs. Nie chciałem marnować roku grania i zostałem na serwerze niemiecki, ratując się spolszczeniem. Dziś skrypt przestał działać.

Oryginalny skrypt dający angielski język : http://userscripts.org/scripts/show/93510
Przerobiony skrypt dający język polski: http://userscripts.org/scripts/show/102221

Wiem że chodzi o element flashvars

To kod skryptu, którego korzystałem do dzisiaj
  1. // ==UserScript==
  2. // @name The Settlers Online Test Server Language Change
  3. // @namespace <a href="http://userscripts.org/users/bropiter" target="_blank">http://userscripts.org/users/bropiter</a>
  4. // @description Plik został zrobiony na podstawie Die Siedler Online Language Change by Drogas
  5. // @include <a href="http://www.tsotesting.com/en/play" target="_blank">http://www.tsotesting.com/en/play</a>
  6. // @identifier <a href="http://userscripts.org/scripts/source/102221.user.js" target="_blank">http://userscripts.org/scripts/source/102221.user.js</a>
  7. // @version 1.1.1
  8. // ==/UserScript==
  9.  
  10. var embed = document.getElementById("SWMMO");
  11. var vars = [];
  12. var getsetSupport = false; //Chrome does not support GM_* commands, sad =\
  13. if (typeof GM_getValue=='function')
  14. {
  15. GM_setValue("test",true);
  16. getsetSupport=GM_getValue("test");
  17. }
  18. for (var i=0;i<embed.attributes.length;i++)
  19. vars[embed.attributes[i].name.toLowerCase()]=embed.attributes[i].value;
  20.  
  21. function setLanguage(language)
  22. {
  23. if (getsetSupport)
  24. {
  25. alert("Wybierz język \r\nz: "+GM_getValue("lang")+"\r\nna: "+language+"\r\nZmiana nastąpi po odświeżeniu strony.");
  26. GM_setValue("lang", language);
  27. }
  28. switchLang();
  29. }
  30.  
  31. function setCountry(country)
  32. {
  33. if (getsetSupport)
  34. {
  35. alert("Wybierz kraj \r\nz: "+GM_getValue("country")+"\r\nna: "+country+"\r\nZmiana nastąpi po odświeżeniu strony.");
  36. GM_setValue("country", country);
  37. }
  38. }
  39.  
  40. function switchLang()
  41. {
  42. document.body.innerHTML = "";
  43. var newembed = document.createElement("embed");
  44. for (var i in vars)
  45. {
  46. newembed.setAttribute(i, vars[i]);
  47. }
  48. var val=vars["flashvars"];
  49. if (getsetSupport)val=val.replace(/lang=[a-z]{2}-[a-z]{2}/gi,"lang="+GM_getValue("lang"));
  50. else val=val.replace(/lang=[a-z]{2}-[a-z]{2}/gi,"lang=pl-pl");
  51. if (getsetSupport)val=val.replace(/country=[a-z]{2}/gi,"country="+GM_getValue("country"));
  52. newembed.setAttribute("flashvars", val);
  53. document.body.appendChild(newembed);
  54. }
  55.  
  56. if(getsetSupport)
  57. {
  58. GM_registerMenuCommand("Zmień język na Niemiecki", function(){setLanguage("de-de");});
  59. GM_registerMenuCommand("Zmień język na Angielski", function(){setLanguage("en-us");});
  60. GM_registerMenuCommand("Zmień język na Polski", function(){setLanguage("pl-pl");});
  61. GM_registerMenuCommand("Ustaw kraj na Niemiecki", function(){setCountry("DE");});
  62. GM_registerMenuCommand("Ustaw kraj na Angielski", function(){setCountry("EN");});
  63. GM_registerMenuCommand("Ustaw kraj na Polski", function(){setCountry("PL");});
  64. GM_registerMenuCommand("Pokaż ustawienia", function(){alert("Bieżący język: "+GM_getValue("lang")+"\r\nBieżący kraj: "+GM_getValue("country"));});
  65.  
  66.  
  67. if (!GM_getValue("lang"))
  68. {
  69. setLanguage("pl-pl");
  70. }
  71. if (!GM_getValue("country"))
  72. {
  73. GM_setValue("country", /country=([a-z]{2})/gi.exec(vars["flashvars"])[1]);
  74. }
  75. }
  76.  
  77. switchLang();



Inspektor DOM i stylów pokazuje mi taki kod:
  1. <html slick-uniqueid="1">
  2.  
  3. <head> </head>
  4. <body scroll="no">
  5. <embed id="SWMMO" width="100%" height="100%" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" allowfullscreeninteractive="true" allowfullscreen="true" allowscriptaccess="always" name="SWMMO" bgcolor="#869ca7" quality="high" flashvars="lang=&e=true&ubb=true&bb=http://w03bb01.diesiedleronline.de/&s=http://static14.cdn.ubi.com/settlers_online/live/SWMMO|http://static13.cdn.ubi.com/settlers_online/live/SWMMO&chatS=http://89.234.31.191:80&chatB=http://89.234.31.191:80&country=PL&realmBeta=false&realmLang=de" src="http://static14.cdn.ubi.com/settlers_online/live/SWMMO/debug/aa2d540e8477327cebea764eaf77d3c98a801721.swf">
  6. </embed>
  7. <div id="fb-root" class=" fb_reset"> </div>
  8. </body>
  9. <a class="rrlmfhyxuqncyykyqgaw" title="Kliknij tutaj, aby zablokować ten obiekt" href="http://static14.cdn.ubi.com/settlers_online/live/SWMMO/debug/aa2d540e8477327cebea764eaf77d3c98a801721.swf" style="opacity: 1 ! important; left: 1618px ! important; top: 491px ! important;"> </a>
  10.  
  11. </html>


A to kawałek kodu, który widzę jak włączę pokaż źródło strony;
  1. <script language="JavaScript" type="text/javascript">
  2. var hasProductInstall = DetectFlashVer(6, 0, 65);
  3. var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
  4. if ( hasProductInstall && !hasRequestedVersion ) {
  5. var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
  6. var MMredirectURL = window.location;
  7. document.title = document.title.slice(0, 47) + ' - Flash Player Installation';
  8. var MMdoctitle = document.title;
  9. var alternateContent = 'Um Die Siedler Online spielen zu können brauchen Sie die aktuelle Version des Adobe Flash Players.<br>Leider konnten wie keine aktuelle Version erkennen. Bitte aktualisieren Sie Ihre Flash Player Installation unter: <a href=http://www.adobe.com/go/getflash/>http://www.adobe.com/go/getflash/</a>';
  10. document.write(alternateContent); // insert non-flash content
  11. } else if (hasRequestedVersion) {
  12. AC_FL_RunContent(
  13. "src", "http://static14.cdn.ubi.com/settlers_online/live/SWMMO/debug/aa2d540e8477327cebea764eaf77d3c98a801721",
  14. "flashVars", "lang=&e=true&ubb=true&bb=http://w03bb01.diesiedleronline.de/&s=http://static14.cdn.ubi.com/settlers_online/live/SWMMO|http://static13.cdn.ubi.com/settlers_online/live/SWMMO&chatS=http://89.234.31.191:80&chatB=http://89.234.31.191:80&country=PL&realmBeta=false&realmLang=de",
  15. "width", "100%",
  16. "height", "100%",
  17. "align", "middle",
  18. "id", "SWMMO",
  19. "quality", "high",
  20. "bgcolor", "#869ca7",
  21. "name", "SWMMO",
  22. "allowScriptAccess","always",
  23. "allowFullScreen", "true",
  24. "allowFullScreenInteractive", "true",
  25. "type", "application/x-shockwave-flash",
  26. "pluginspage", "http://www.adobe.com/go/getflashplayer"
  27. );
  28. } else { // flash is too old or we can't detect the plugin
  29. var alternateContent = 'Um Die Siedler Online spielen zu können brauchen Sie die aktuelle Version des Adobe Flash Players.<br>Leider konnten wie keine aktuelle Version erkennen. Bitte aktualisieren Sie Ihre Flash Player Installation unter: <a href=http://www.adobe.com/go/getflash/>http://www.adobe.com/go/getflash/</a>';
  30. document.write(alternateContent); // insert non-flash content
  31. }


Liczę na dobre rady, bo z programowania jestem noga.

Z góry dzięki
tzm
Dobra rada
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.