<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Strona Główna on Kakele Online MMORPG: Darmowa Gra Wieloplatformowa Pixel Art</title><link>https://kakele.io/pl/</link><description>Recent content in Strona Główna on Kakele Online MMORPG: Darmowa Gra Wieloplatformowa Pixel Art</description><generator>Hugo -- gohugo.io</generator><language>pl</language><copyright>© 2012-2026 ViVa Games. All rights reserved.</copyright><lastBuildDate>Thu, 21 May 2026 10:00:00 +0000</lastBuildDate><atom:link href="https://kakele.io/pl/index.xml" rel="self" type="application/rss+xml"/><item><title>Czy niebo upadnie na Kakele?! Odkryj mechaniki Hymalaya w nowej ekspansji naszego 2D MMORPG</title><link>https://kakele.io/pl/news/spoiler-hymalaya/</link><pubDate>Thu, 21 May 2026 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/spoiler-hymalaya/</guid><description>Nina, resident kapibara bloga, odpowiada na pytania graczy dotyczące nowej ekspansji Kakele. Wyjaśnia tragiczną historię dotyczącą podziału zamarzniętego królestwa Hymalaya na dwie części — Hyma i Laya — cierpienie Króla Nocy i daje bezpośrednią wskazówkę, jak rozwiązać nową mechanikę sfer, aby postępować w zadaniach.</description></item><item><title>Start Serwera SA-Open PvP Black i Wyzwanie Łowcy!</title><link>https://kakele.io/pl/news/south-america-black/</link><pubDate>Tue, 31 Mar 2026 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/south-america-black/</guid><description>Nowy serwer South America Open PvP startuje 2 kwietnia z początkiem od zera na Poziomie 1, zbalansowaną walką i tygodniową rywalizacją Bestiariusza z nagrodami Premium.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/south-america-black/featured.png"/></item><item><title>Pieśń Wiecznego Lodu</title><link>https://kakele.io/pl/news/song-of-eternal-ice/</link><pubDate>Thu, 15 Jan 2026 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/song-of-eternal-ice/</guid><description>Pierwsza ekspansja 2026 dla darmowego, multiplatformowego MMORPG 2D: pełna odnowa wizualna, duże ulepszenia interfejsu, nowe wydarzenia, rebalance PvP i masa zmian quality-of-life stworzonych z myślą o społeczności.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/song-of-eternal-ice/featured.png"/></item><item><title>Kontynent Gangan</title><link>https://kakele.io/pl/news/continent-of-gangan/</link><pubDate>Thu, 10 Jul 2025 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/continent-of-gangan/</guid><description>Najbardziej wyczekiwana ekspansja roku już tutaj! Odkryj mistyczny kontynent Gangan w stylu wschodnim, z masowymi aktualizacjami treści, nowymi systemami i ulepszeniami jakości życia.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/continent-of-gangan/featured.png"/></item><item><title>Orkowie z Walfendah</title><link>https://kakele.io/pl/news/orcs-of-walfendah/</link><pubDate>Mon, 02 Dec 2024 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/orcs-of-walfendah/</guid><description>Nadszedł czas, aby podzielić się z Wami planowanymi zmianami ekspansji 4.9! Na początku zdecydowaliśmy się przemianować ekspansję 4.9 na 2024.3. Ta nowa nazwa jest jaśniejsza i intuicyjna. Od teraz będziemy używać tego szablonu dla przyszłych ekspansji (2025.1, 2025.2, itd..).</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/orcs-of-walfendah/featured.png"/></item><item><title>Powstanie Cyborgów</title><link>https://kakele.io/pl/news/ciborgs-uprising/</link><pubDate>Fri, 30 Aug 2024 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/ciborgs-uprising/</guid><description>Jesteśmy podekscytowani, że możemy wam przynieść coś, na co wszyscy niecierpliwie czekaliście — premierę Ekspansji Gry Kakele 4.8! Ta ekspansja jest pełna ekscytujących nowych funkcji, mnóstwa ulepszeń i tony świeżej zawartości, którą z pewnością pokochacie.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/ciborgs-uprising/featured.png"/></item><item><title>Wyspa Sohterra</title><link>https://kakele.io/pl/news/island-of-sohterra/</link><pubDate>Fri, 22 Mar 2024 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/island-of-sohterra/</guid><description>Jesteśmy podekscytowani ogłoszeniem czegoś, na co wszyscy niecierpliwie czekaliście – premiery zupełnie nowej Ekspansji Gry Kakele, Ekspansji 4.7!</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/island-of-sohterra/featured.jpg"/></item><item><title>Wyspa Świętego Mardi</title><link>https://kakele.io/pl/news/island-of-saint-mardi/</link><pubDate>Sat, 25 Nov 2023 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/island-of-saint-mardi/</guid><description>Odkryj tajemniczą wyspę Świętego Mardi w Kakele 4.6! Nowa zawartość, przygody i wyzwania czekają w tej ekscytującej aktualizacji świata Kakele.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/island-of-saint-mardi/featured.png"/></item><item><title>Kopalnie Krasnoludów</title><link>https://kakele.io/pl/news/dwarven-mines/</link><pubDate>Tue, 25 Jul 2023 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/dwarven-mines/</guid><description>Czy jesteście gotowi na nowe treści obejmujące poziomy 50-800+? Odkryjcie nowe krasnoludzkie góry i kopalnie i wejdźcie głęboko w eksplorację ich jaskiń.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/dwarven-mines/featured.png"/></item><item><title>Mistyczne Podwodne Ziemie</title><link>https://kakele.io/pl/news/mystical-underwater-lands/</link><pubDate>Fri, 21 Apr 2023 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/mystical-underwater-lands/</guid><description>Witamy w aktualizacji 4.4 i mistycznych podwodnych ziemiach Kakele, domu królestwa syren Maio, koralowych lasów i zatopionej ruiny!</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/mystical-underwater-lands/featured.jpg"/></item><item><title>Nad Chmurami Choia</title><link>https://kakele.io/pl/news/over-the-clouds-of-choia/</link><pubDate>Sat, 31 Dec 2022 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/over-the-clouds-of-choia/</guid><description>Nadszedł czas, aby przekazać wam wspaniałe wieści o nadchodzącej aktualizacji! Cyklopi nie mogą się doczekać, aby rzucić wam wyzwanie w epickich walkach, bitwach z bossami i zagadkach.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/over-the-clouds-of-choia/featured.jpg"/></item><item><title>Bękarty Światła</title><link>https://kakele.io/pl/news/bastards-of-light/</link><pubDate>Sat, 09 Jul 2022 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/bastards-of-light/</guid><description>Witajcie w Aktualizacji Kakele 4.2!! Byliśmy zajęci naprawianiem starych błędów, przerabianiem istniejących funkcji i dodawaniem nowych rzeczy do gry!</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/bastards-of-light/featured.jpg"/></item><item><title>Ciemny Kontynent</title><link>https://kakele.io/pl/news/dark-continent/</link><pubDate>Thu, 28 Apr 2022 10:00:00 +0000</pubDate><guid>https://kakele.io/pl/news/dark-continent/</guid><description>Jesteśmy podekscytowani ogłoszeniem nowej aktualizacji, Kakele 4.1! To pierwsza aktualizacja po tym, jak ukończyliśmy 2 lata online, i nie możemy się doczekać, aby ją wypuścić!</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://kakele.io/news/dark-continent/featured.jpg"/></item><item><title>Dropy Twitch</title><link>https://kakele.io/pl/drops/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/drops/</guid><description>&lt;h2 class="relative group">title: &amp;ldquo;Drops Twitch&amp;rdquo;
layout: &amp;ldquo;simple&amp;rdquo;
&lt;div id="layout-simple" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#layout-simple" aria-label="Kotwica">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>SKOPIUJ I WKLEJ poniższy kod w aplikacji klienckiej gry:&lt;/p>
&lt;style>
.oauth-code-container {
background: #f5f5f5;
border: 2px solid #ddd;
border-radius: 8px;
padding: 1rem;
margin: 1rem 0;
font-family: monospace;
word-break: break-all;
min-height: 60px;
display: flex;
align-items: center;
justify-content: center;
}
.oauth-code-container p {
margin: 0;
font-size: 1rem;
color: #ff0000;
}
&lt;/style>
&lt;div id="twitch-code" class="oauth-code-container">
&lt;div>
&lt;p>&lt;/p>
&lt;/div>
&lt;/div>
&lt;script>
let str = window.location.href;
let paramName = 'code';
let endDelimiter = '\u0026scope=';
let tokenStartPosition = str.indexOf(paramName + '=') + paramName.length + 1;
let tokenEndPosition = str.indexOf(endDelimiter);
let tokenString = str.substr(tokenStartPosition, tokenEndPosition - tokenStartPosition);
let el = document.getElementById('twitch-code').querySelector('div p')
el.style.wordBreak = "break-all";
el.innerHTML = tokenString;
navigator.clipboard.writeText(tokenString);
&lt;/script></description></item><item><title>FAQ</title><link>https://kakele.io/pl/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/faq/</guid><description>&lt;p>Witaj! Jeśli któreś z tych pytań jest nieaktualne lub myślisz, że powinniśmy dodać nowe pytania, skontaktuj się z nami pod adresem &lt;a
href="mailto:contact@kakele.io">contact@kakele.io&lt;/a>
! Dziękujemy!&lt;/p>
&lt;p>Ważne: Upewnij się, że czytasz najnowszą wersję FAQ, ponieważ regularnie aktualizujemy go o nowe pytania i odpowiedzi. FAQ może być nieaktualne po wydaniu nowych rozszerzeń gry. Ten FAQ jest aktualny dla wersji Kakele 2026.1.1.&lt;/p>
&lt;h2 class="relative group">Pytania Ogólne
&lt;div id="pytania-ogólne" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#pytania-og%c3%b3lne" aria-label="Kotwica">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;strong>P:&lt;/strong> Czym jest Kakele Online?&lt;br>
&lt;strong>O:&lt;/strong> Kakele Online to dwuwymiarowa masowa wieloosobowa gra online w otwartym świecie. W Kakele dołączasz do graczy z całego świata, aby walczyć z potworami, eksplorować tajemnicze jaskinie, wykonywać zadania i misje, zbierać cenne przedmioty i wiele więcej!&lt;/p></description></item><item><title>Kontakt i O Nas</title><link>https://kakele.io/pl/contact-about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/contact-about/</guid><description>&lt;p>Aby się z nami skontaktować, wyślij email na &lt;a
href="mailto:contact@kakele.io">contact@kakele.io&lt;/a>
. Jesteśmy również dostępni do rozmowy przez nasze konta w mediach społecznościowych i Discord, które znajdziesz na dole każdej strony na stronie internetowej.&lt;/p>
&lt;p>Kakele jest rozwijane przez ViVa Games LLC. W sprawie kontaktu lub zapytań:&lt;/p>
&lt;p>&lt;strong>Firma:&lt;/strong> ViVa Games LLC&lt;br>
&lt;strong>Adres:&lt;/strong> 1501 Lincoln Blvd Num 1138, Venice, CA 90291, USA&lt;br>
&lt;strong>Email:&lt;/strong> &lt;a
href="mailto:contact@kakele.io">contact@kakele.io&lt;/a>
&lt;/p>
&lt;p>&lt;strong>Strona ViVa Games:&lt;/strong> &lt;a
href="https://vivagames.online"
target="_blank"
>vivagames.online&lt;/a>
&lt;/p>
&lt;h2 class="relative group">O Kakele
&lt;div id="o-kakele" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#o-kakele" aria-label="Kotwica">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Kakele Online to klasyczne 2D MMORPG inspirowane klasycznymi grami RPG. Staramy się zebrać najlepsze doświadczenia z gier ze wszystkich klasycznych RPG w jednej grze, Kakele! W Kakele spędzasz czas walcząc z potworami, eksplorując świat, znajdując skrzynie skarbów, zawierając sojusze lub wypowiadając wojny innym. Ciekawostka: ludzie zwykle nie wymawiają nazwy gry poprawnie. Ostatnia litera, e, powinna być najsilniejsza, tak jak w &amp;lsquo;Pelé&amp;rsquo;, najlepszym piłkarzu wszech czasów :)&lt;/p></description></item><item><title>Link Discord</title><link>https://kakele.io/pl/discord-link/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/discord-link/</guid><description>&lt;p>SKOPIUJ I WKLEJ poniższy kod w aplikacji klienckiej gry:&lt;/p>
&lt;style>
.oauth-code-container {
background: #f5f5f5;
border: 2px solid #ddd;
border-radius: 8px;
padding: 1rem;
margin: 1rem 0;
font-family: monospace;
word-break: break-all;
min-height: 60px;
display: flex;
align-items: center;
justify-content: center;
}
.oauth-code-container p {
margin: 0;
font-size: 1rem;
color: #ff0000;
}
&lt;/style>
&lt;div id="discord-code" class="oauth-code-container">
&lt;div>
&lt;p>&lt;/p>
&lt;/div>
&lt;/div>
&lt;script>
let str = window.location.href;
let paramName = 'access_token';
let endDelimiter = '\u0026expires_in=';
let tokenStartPosition = str.indexOf(paramName + '=') + paramName.length + 1;
let tokenEndPosition = str.indexOf(endDelimiter);
let tokenString = str.substr(tokenStartPosition, tokenEndPosition - tokenStartPosition);
let el = document.getElementById('discord-code').querySelector('div p')
el.style.wordBreak = "break-all";
el.innerHTML = tokenString;
navigator.clipboard.writeText(tokenString);
&lt;/script></description></item><item><title>Partnerstwo</title><link>https://kakele.io/pl/partnership/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/partnership/</guid><description>&lt;h2 class="relative group">Jakie typy programów partnerskich są dostępne?
&lt;div id="jakie-typy-programów-partnerskich-są-dostępne" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#jakie-typy-program%c3%b3w-partnerskich-s%c4%85-dost%c4%99pne" aria-label="Kotwica">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Witamy każdego, kto chce nam pomóc rosnąć! Aby sformalizować i zorganizować sprawy nieco bardziej, obecnie oferujemy dwa typy Partnerstwa:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Twórca treści&lt;/strong>: ci, którzy tworzą treści o Kakele na YouTube, Twitchu i innych platformach wideo;&lt;/li>
&lt;li>&lt;strong>Fansite&lt;/strong>: ci, którzy tworzą stronę internetową lub blog z informacjami o grze&lt;/li>
&lt;li>&lt;strong>Masz inne pomysły na partnerstwa?&lt;/strong> Napisz do nas na &lt;a
href="mailto:contact@kakele.io?subject=Partnership%20Inquiry">contact@kakele.io&lt;/a>
!&lt;/li>
&lt;/ul>
&lt;h2 class="relative group">Co ja z tego mam?
&lt;div id="co-ja-z-tego-mam" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#co-ja-z-tego-mam" aria-label="Kotwica">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Jako Partner Kakele możesz tworzyć dowolne treści! Jako entuzjasta gry, Twoim celem powinno być stworzenie własnej społeczności i zwiększenie swojej obecności na platformie streamingowej, której używasz. Dzięki temu będziesz rosnąć w liczbie subskrybentów i widzów! Dodatkowo, to wszystko jest Twoje do zatrzymania!&lt;/p></description></item><item><title>Płatność Zakończona</title><link>https://kakele.io/pl/paid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/paid/</guid><description>&lt;p>Jeśli ukończyłeś płatność, gratulacje! W zależności od metody płatności może to potrwać kilka godzin, aby zostać przetworzone. Płatność pojawi się jako &amp;ldquo;zakończona&amp;rdquo; w aplikacji gry po przetworzeniu, a KC zostaną przypisane do Twojego konta. Skontaktuj się z nami pod adresem &lt;a
href="mailto:contact@kakele.io?subject=">contact@kakele.io&lt;/a>
jeśli masz jakieś pytania.&lt;/p>
&lt;p>Po kliknięciu Gotowe, jeśli Twoje monety nie są jeszcze aktywowane, zaloguj się na swoje konto i przejdź do Sklepu, a następnie do menu Kup Monety ponownie, aby sprawdzić status płatności. Po tym powinien pojawić się komunikat, że monety zostały zaktualizowane. Monety to niebieskie złote kawałki.&lt;/p></description></item><item><title>Pobieranie</title><link>https://kakele.io/pl/downloads/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/downloads/</guid><description>&lt;p>Zdecydowanie zalecamy instalację Kakele przez oficjalne sklepy z grami! Twoja gra będzie automatycznie aktualizowana i w ten sposób unikniesz błędów gry! &lt;a
href="https://kakele.io/pl">Odwiedź nasze oficjalne sklepy z grami&lt;/a>
aby przejść do oficjalnych pobierań. Poniższe linki to bezpośrednie pobierania, które wymagają ręcznych aktualizacji. Zalecamy korzystanie z oficjalnych sklepów aplikacji w celu automatycznych aktualizacji.&lt;/p>
&lt;p>Jeśli nadal chcesz ręcznie zainstalować Kakele, sprawdź opcje poniżej:&lt;/p>
&lt;style>
.downloads-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 15px;
margin: 20px 0;
}
.download-card {
background: linear-gradient(135deg, #f8f9fa, #e9ecef);
border: 2px solid #000;
border-radius: 8px;
padding: 18px;
text-align: center;
transition: all 0.3s ease;
text-decoration: none;
color: #000;
display: block;
}
.download-card:hover {
background: linear-gradient(135deg, #000, #333);
color: #fff;
transform: translateY(-5px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
text-decoration: none;
}
.download-icon {
font-size: 36px;
margin-bottom: 12px;
display: block;
}
.download-title {
font-size: 16px;
font-weight: bold;
margin-bottom: 6px;
}
.download-description {
font-size: 14px;
opacity: 0.8;
margin-bottom: 0;
}
.download-size {
font-size: 12px;
opacity: 0.6;
margin-top: 6px;
}
.downloads-warning {
background: rgba(255, 235, 59, 0.1);
border-left: 4px solid #ffc107;
padding: 15px;
margin: 20px 0;
border-radius: 4px;
}
.downloads-warning p {
margin: 0;
font-size: 14px;
}
@media (max-width: 1024px) {
.downloads-grid {
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.download-card {
padding: 15px;
}
.download-card:nth-child(1) { order: 2; }
.download-card:nth-child(2) { order: 3; }
.download-card:nth-child(3) { order: 4; }
.download-card:nth-child(4) { order: 1; }
.download-icon {
font-size: 28px;
margin-bottom: 8px;
}
.download-title {
font-size: 14px;
margin-bottom: 4px;
}
.download-description {
font-size: 12px;
}
.download-size {
font-size: 10px;
margin-top: 4px;
}
}
&lt;/style>
&lt;div class="downloads-grid">
&lt;a href="https://files.kakele.io/latest/kakele-win.zip?cache=disable" class="download-card" target="_blank"
rel="noopener">
&lt;span class="download-icon">🪟&lt;/span>
&lt;div class="download-title">Windows&lt;/div>
&lt;div class="download-description">Windows 10+&lt;/div>
&lt;div class="download-size">ZIP&lt;/div>
&lt;/a>
&lt;a href="https://files.kakele.io/latest/kakele-mac.zip?cache=disable" class="download-card" target="_blank"
rel="noopener">
&lt;span class="download-icon">🍎&lt;/span>
&lt;div class="download-title">macOS&lt;/div>
&lt;div class="download-description">Intel &amp; Apple Silicon&lt;/div>
&lt;div class="download-size">ZIP&lt;/div>
&lt;/a>
&lt;a href="https://files.kakele.io/latest/kakele-linux.zip?cache=disable" class="download-card" target="_blank"
rel="noopener">
&lt;span class="download-icon">🐧&lt;/span>
&lt;div class="download-title">Linux&lt;/div>
&lt;div class="download-description">x64&lt;/div>
&lt;div class="download-size">ZIP&lt;/div>
&lt;/a>
&lt;a href="https://files.kakele.io/latest/kakele.apk?cache=disable" class="download-card" target="_blank"
rel="noopener">
&lt;span class="download-icon">📱&lt;/span>
&lt;div class="download-title">Android APK&lt;/div>
&lt;div class="download-description">Android 5.0+&lt;/div>
&lt;div class="download-size">APK&lt;/div>
&lt;/a>
&lt;/div></description></item><item><title>Rankingi</title><link>https://kakele.io/pl/rankings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/rankings/</guid><description>&lt;p>Zobacz najlepszych graczy z różnych serwerów w Kakele Online! Wybierz serwer poniżej, aby zobaczyć aktualne rankingi graczy, w tym ich poziomy, klasy, osiągnięcia i więcej.&lt;/p>
&lt;link rel="stylesheet" href="https://cdn.datatables.net/2.3.2/css/dataTables.dataTables.min.css" />
&lt;link rel="stylesheet" href="https://cdn.datatables.net/fixedcolumns/5.0.4/css/fixedColumns.dataTables.min.css" />
&lt;script src="https://code.jquery.com/jquery-3.7.1.min.js">&lt;/script>
&lt;script src="https://cdn.datatables.net/2.3.2/js/dataTables.min.js">&lt;/script>
&lt;script src="https://cdn.datatables.net/fixedcolumns/5.0.4/js/dataTables.fixedColumns.min.js">&lt;/script>
&lt;script src="https://cdn.jsdelivr.net/npm/pako@2.1.0/dist/pako.min.js">&lt;/script>
&lt;style>
.rankings-select {
color: #000;
}
.rankings-error {
color: #dc3545;
font-weight: bold;
}
.rankings-loading {
font-weight: bold;
}
.world-green { color: #0c7625; font-weight: bold; }
.world-orange { color: #fc780c; font-weight: bold; }
.world-lime { color: #0cf30c; font-weight: bold; }
.world-violet { color: #6533c3; font-weight: bold; }
.world-blue { color: #004cff; font-weight: bold; }
.world-pink { color: #f843b3; font-weight: bold; }
.world-red { color: #dd1125; font-weight: bold; }
.world-white { color: #e7ebee; font-weight: bold; }
.world-emerald { color: #6ff69c; font-weight: bold; }
.world-black { color: #333; font-weight: bold; }
.text-success { color: #28a745; font-weight: bold; }
.text-danger { color: #dc3545; font-weight: bold; }
.text-muted { color: #6c757d; }
&lt;/style>
&lt;script>
const RANKINGS_MESSAGES = {
loading: 'Ładowanie rankingów, proszę czekać...',
selectWorld: 'Wybierz Świat',
selectType: 'Typ Rankingu',
typeTotalExperience: 'Całkowite Doświadczenie',
typeDailyExperience: 'Dzienne Doświadczenie',
typeWeeklyExperience: 'Tygodniowe Doświadczenie',
typeMonthlyExperience: 'Miesięczne Doświadczenie',
error: 'Nie udało się załadować danych rankingów. Spróbuj ponownie.',
dataGenerating: 'Dane dla dzisiaj są wciąż generowane. Spróbuj ponownie później.',
none: 'Brak',
globalWarWins: 'Globalne Zwycięstwa Wojenne',
columns: {
rank: 'Pozycja',
name: 'Imię',
level: 'Poziom',
experience: 'Doświadczenie',
vocation: 'Zawód',
gold: 'Złoto',
petPoints: 'Punkty Zwierzęcia',
attack: 'Atak',
armor: 'Zbroja',
magic: 'Magia',
achievements: 'Osiągnięcia',
loginPoints: 'Punkty Logowania',
bestiary: 'Bestiariusz',
guild: 'Gildia'
}
};
function getWorldsList() {
const select = document.getElementById('worlds');
const worlds = [];
for (let i = 0; i &lt; select.options.length; i++) {
const value = select.options[i].value;
if (value &amp;&amp; value !== 'global') {
worlds.push(value);
}
}
return worlds;
}
function getUTCDateString(daysOffset = 0) {
const date = new Date();
date.setUTCDate(date.getUTCDate() + daysOffset);
const year = date.getUTCFullYear();
const month = String(date.getUTCMonth() + 1).padStart(2, '0');
const day = String(date.getUTCDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
async function fetchWorldData(world, dayOffset = 0) {
try {
const dateString = getUTCDateString(dayOffset);
const url = `https://files.kakele.io/rankings/${world}-${dateString}.zlib`;
const dataResponse = await fetch(url);
if (!dataResponse.ok) {
return null;
}
const compressedData = await dataResponse.arrayBuffer();
const decompressedData = pako.inflate(compressedData, { to: 'string' });
const worldData = JSON.parse(decompressedData);
return worldData;
} catch (error) {
console.warn(`Failed to fetch data from ${world} for day offset ${dayOffset}:`, error);
return null;
}
}
async function fetchWorldsData(worlds, experienceMode) {
const allData = [];
let totalGlobalWarWins = 0;
const getComparisonOffset = (mode) => {
switch (mode) {
case 'daily-experience': return -1;
case 'weekly-experience': return -7;
case 'monthly-experience': return -30;
default: return null;
}
};
const comparisonOffset = getComparisonOffset(experienceMode);
const needsComparison = comparisonOffset !== null;
const promises = worlds.map(async (world) => {
const todayData = await fetchWorldData(world, 0);
if (!todayData) {
return null;
}
let comparisonData = null;
if (needsComparison) {
comparisonData = await fetchWorldData(world, comparisonOffset);
}
if (todayData.content &amp;&amp; worlds.length > 1) {
todayData.content.forEach(player => {
player.world = world;
});
}
if (needsComparison) {
const comparisonMap = new Map();
if (comparisonData &amp;&amp; comparisonData.content) {
comparisonData.content.forEach(player => {
comparisonMap.set(player.name, parseInt(player.experience));
});
}
todayData.content.forEach(player => {
const comparisonExp = comparisonMap.get(player.name);
if (comparisonExp !== undefined) {
const todayExp = parseInt(player.experience);
player.originalExperience = todayExp;
player.experience = todayExp - comparisonExp;
} else {
player.originalExperience = parseInt(player.experience);
player.experience = 0;
}
});
}
if (todayData.content) {
allData.push(...todayData.content);
}
if (todayData.global_war_wins) {
totalGlobalWarWins += parseInt(todayData.global_war_wins);
}
return todayData;
});
await Promise.all(promises);
allData.sort((a, b) => parseInt(b.experience) - parseInt(a.experience));
return {
content: allData,
global_war_wins: totalGlobalWarWins
};
}
async function worldSelect(selectObject) {
const loadingElement = document.getElementById('loading-table');
const tableContainer = document.getElementById('rankings-table-container');
const rankingTypeSelect = document.getElementById('ranking-type');
if (!selectObject.value) {
await createTableFromJSON({ content: [] });
return;
}
loadingElement.innerHTML = '&lt;div class="rankings-loading">' + RANKINGS_MESSAGES.loading + '&lt;/div>';
tableContainer.style.opacity = '0.5';
try {
const worlds = selectObject.value === 'global'
? getWorldsList()
: [selectObject.value];
const experienceMode = rankingTypeSelect ? rankingTypeSelect.value : 'total-experience';
const data = await fetchWorldsData(worlds, experienceMode);
if (!data.content || data.content.length === 0) {
await createTableFromJSON({ content: [] }, experienceMode);
loadingElement.innerHTML = '&lt;div class="rankings-error">' + RANKINGS_MESSAGES.dataGenerating + '&lt;/div>';
tableContainer.style.opacity = '1';
return;
}
await createTableFromJSON(data, experienceMode);
updateGlobalWar(data, selectObject);
tableContainer.style.opacity = '1';
} catch (error) {
console.error('Rankings loading error:', error);
loadingElement.innerHTML = '&lt;div class="rankings-error">' + RANKINGS_MESSAGES.error + '&lt;/div>';
tableContainer.style.opacity = '1';
}
}
async function rankingTypeSelect(selectObject) {
const element = document.getElementById('worlds');
if (element &amp;&amp; element.value) {
await worldSelect(element);
}
}
function updateGlobalWar(data, selectObject) {
const option = selectObject.selectedOptions[0];
const baseText = option.value === 'global' ? '🌍 Global' : option.text.split(' (')[0];
if (option.value === 'global') {
option.text = baseText;
} else {
const warWins = parseInt(data.global_war_wins);
option.text = baseText + " (" + warWins + " " + RANKINGS_MESSAGES.globalWarWins + ")";
}
}
function calculateLevel(experience, maxExperienceAtLevel) {
let start = 1, end = 10000;
while (start != end) {
const level = Math.floor((start + end) / 2);
if (maxExperienceAtLevel[level] &lt; experience) {
start = level + 1;
} else {
end = level;
}
}
return start;
}
function formatNumber(num) {
return new Intl.NumberFormat().format(num);
}
function getWorldColorClass(world) {
if (world.includes('green')) return 'world-green';
if (world.includes('emerald')) return 'world-emerald';
if (world.includes('orange')) return 'world-orange';
if (world.includes('lime')) return 'world-lime';
if (world.includes('violet')) return 'world-violet';
if (world.includes('blue')) return 'world-blue';
if (world.includes('pink')) return 'world-pink';
if (world.includes('red')) return 'world-red';
if (world.includes('white')) return 'world-white';
if (world.includes('black')) return 'world-black';
return '';
}
function createTableHeader() {
const thead = document.querySelector('#rankings-table thead');
if (thead) {
thead.remove();
}
const table = document.getElementById('rankings-table');
const newThead = document.createElement('thead');
const headerRow = document.createElement('tr');
const headers = [
RANKINGS_MESSAGES.columns.rank,
RANKINGS_MESSAGES.columns.name,
RANKINGS_MESSAGES.columns.level,
RANKINGS_MESSAGES.columns.experience,
RANKINGS_MESSAGES.columns.vocation,
RANKINGS_MESSAGES.columns.guild,
RANKINGS_MESSAGES.columns.attack,
RANKINGS_MESSAGES.columns.armor,
RANKINGS_MESSAGES.columns.magic,
RANKINGS_MESSAGES.columns.petPoints,
RANKINGS_MESSAGES.columns.gold,
RANKINGS_MESSAGES.columns.achievements,
RANKINGS_MESSAGES.columns.loginPoints,
RANKINGS_MESSAGES.columns.bestiary
];
headers.forEach(headerText => {
const th = document.createElement('th');
th.textContent = headerText;
headerRow.appendChild(th);
});
newThead.appendChild(headerRow);
table.insertBefore(newThead, table.firstChild);
}
async function createTableFromJSON(data, experienceMode = 'total-experience') {
createTableHeader();
const maxExperienceAtLevel = [];
for (let level = 0; level &lt;= 10000; ++level) {
if (level &lt; 200) {
maxExperienceAtLevel.push(10 * level * level * level - 1);
} else if (level &lt; 1200) {
maxExperienceAtLevel.push(Math.floor(10 * level * level * level * level / 200) - 1);
} else {
maxExperienceAtLevel.push(Math.floor(Math.floor(10 * level * level * level * level / 200) * level / 1200) - 1);
}
}
if ($.fn.DataTable.isDataTable('#rankings-table')) {
$('#rankings-table').DataTable().destroy();
}
const tableBody = document.getElementById("rankings-table-body");
tableBody.innerHTML = "";
const tableData = [];
const isGlobalView = data.content.length > 0 &amp;&amp; data.content[0].world;
for (let i = 0; i &lt; data.content.length; i++) {
const player = data.content[i];
const experience = parseInt(player.experience);
const experienceForLevel = player.originalExperience ? parseInt(player.originalExperience) : experience;
const level = calculateLevel(experienceForLevel, maxExperienceAtLevel);
let guildDisplay;
if (isGlobalView) {
const guildText = player.guild || RANKINGS_MESSAGES.none;
const colorClass = getWorldColorClass(player.world);
guildDisplay = `&lt;span class="${colorClass}">${guildText}&lt;/span>`;
} else {
guildDisplay = player.guild || RANKINGS_MESSAGES.none;
}
let experienceDisplay;
if (experienceMode === 'daily-experience' || experienceMode === 'weekly-experience' || experienceMode === 'monthly-experience') {
const diffFormatted = experience > 0 ? `+${experience.toLocaleString()}` : experience.toLocaleString();
const diffClass = experience > 0 ? 'text-success' : (experience &lt; 0 ? 'text-danger' : 'text-muted');
experienceDisplay = `&lt;span class="${diffClass}">${diffFormatted}&lt;/span>`;
} else {
experienceDisplay = experience.toLocaleString();
}
const rowData = [
i + 1,
player.name,
level,
experienceDisplay,
player.vocation,
guildDisplay,
parseInt(player.total_attack).toLocaleString(),
parseInt(player.total_armor).toLocaleString(),
parseInt(player.total_magic).toLocaleString(),
parseInt(player.pet_points).toLocaleString(),
parseInt(player.gold).toLocaleString(),
parseInt(player.achievements).toLocaleString(),
parseInt(player.login_points).toLocaleString(),
parseInt(player.bestiary).toLocaleString()
];
tableData.push(rowData);
}
const columns = [
{ "title": RANKINGS_MESSAGES.columns.rank },
{ "title": RANKINGS_MESSAGES.columns.name },
{ "title": RANKINGS_MESSAGES.columns.level },
{ "title": RANKINGS_MESSAGES.columns.experience },
{ "title": RANKINGS_MESSAGES.columns.vocation },
{ "title": RANKINGS_MESSAGES.columns.guild },
{ "title": RANKINGS_MESSAGES.columns.attack },
{ "title": RANKINGS_MESSAGES.columns.armor },
{ "title": RANKINGS_MESSAGES.columns.magic },
{ "title": RANKINGS_MESSAGES.columns.petPoints },
{ "title": RANKINGS_MESSAGES.columns.gold },
{ "title": RANKINGS_MESSAGES.columns.achievements },
{ "title": RANKINGS_MESSAGES.columns.loginPoints },
{ "title": RANKINGS_MESSAGES.columns.bestiary }
];
const dataTable = $('#rankings-table').DataTable({
"data": tableData,
"order": [[3, "desc"], [0, "asc"]],
"pageLength": 25,
"autoWidth": false,
"deferRender": true,
"orderClasses": false,
"paging": true,
"searching": true,
"info": true,
"scrollX": true,
"processing": true,
"fixedColumns": {
"left": 2
},
"columns": columns,
"language": {
"search": "Szukaj:",
"lengthMenu": "Pokaż _MENU_ wpisów",
"info": "Pokazywanie _START_ do _END_ z _TOTAL_ wpisów",
"infoEmpty": "Pokazywanie 0 do 0 z 0 wpisów",
"infoFiltered": "(przefiltrowane z _MAX_ wszystkich wpisów)",
"paginate": {
"first": "Pierwszy",
"last": "Ostatni",
"next": "Następny",
"previous": "Poprzedni"
}
}
});
document.getElementById('loading-table').innerHTML = "";
}
document.addEventListener('DOMContentLoaded', async function () {
await createTableFromJSON({ content: [] }, 'total-experience');
});
&lt;/script>
&lt;div class="rankings-container">
&lt;div class="rankings-header">
&lt;div style="display: flex; gap: 20px; align-items: center; flex-wrap: wrap;">
&lt;div>
&lt;label for="worlds" class="rankings-label">Wybierz Świat:&lt;/label>
&lt;select id="worlds" onchange="worldSelect(this)" class="rankings-select">
&lt;option value="">Wybierz Świat&lt;/option>
&lt;option value="global">🌍 Global&lt;/option>
&lt;option value="europe-green">🇪🇺 Europe Green&lt;/option>
&lt;option value="europe-orange">🇪🇺 Europe Orange&lt;/option>
&lt;option value="north-america-lime">🇺🇸 North America Lime&lt;/option>
&lt;option value="north-america-violet">🇺🇸 North America Violet&lt;/option>
&lt;option value="south-america-black">🇧🇷 South America Black&lt;/option>
&lt;option value="south-america-blue">🇧🇷 South America Blue&lt;/option>
&lt;option value="south-america-pink">🇧🇷 South America Pink&lt;/option>
&lt;option value="south-america-red">🇧🇷 South America Red&lt;/option>
&lt;option value="south-america-emerald">🇧🇷 South America Emerald&lt;/option>
&lt;option value="southeast-asia-white">🌏 Southeast Asia White&lt;/option>
&lt;/select>
&lt;/div>
&lt;div>
&lt;label for="ranking-type" class="rankings-label">Typ Rankingu:&lt;/label>
&lt;select id="ranking-type" onchange="rankingTypeSelect(this)" class="rankings-select">
&lt;option value="total-experience">Całkowite Doświadczenie&lt;/option>
&lt;option value="daily-experience">Dzienne Doświadczenie&lt;/option>
&lt;option value="weekly-experience">Tygodniowe Doświadczenie&lt;/option>
&lt;option value="monthly-experience">Miesięczne Doświadczenie&lt;/option>
&lt;/select>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div id="rankings">
&lt;div id="loading-table">&lt;/div>
&lt;div id="rankings-table-container">
&lt;table id="rankings-table">
&lt;tbody id="rankings-table-body">
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div></description></item><item><title>Sklep</title><link>https://kakele.io/pl/shop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/shop/</guid><description>&lt;p>
&lt;div class="shop-iframe-container">
&lt;iframe id="shop" title="Shop" height="900px" width="100%" style="border: none; border-radius: 8px;"
sandbox="allow-downloads allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts allow-top-navigation allow-top-navigation-by-user-activation allow-top-navigation-to-custom-protocols allow-storage-access-by-user-activation"
src="">
&lt;/iframe>
&lt;/div>
&lt;style>
.shop-login-wrapper {
max-width: 500px;
margin: 0 auto;
padding: 1rem;
}
.shop-login-form-group {
margin-bottom: 1rem;
}
.shop-login-form-group label {
display: block;
margin-bottom: 0.5rem;
font-weight: bold;
}
.shop-login-form-group input {
width: 100%;
padding: 0.5rem;
color: #000;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.shop-login-form-group input:disabled {
background-color: #f5f5f5;
color: #666;
cursor: not-allowed;
opacity: 0.6;
}
.shop-login-actions {
text-align: center;
margin: 1rem 0;
}
.shop-login-actions button {
margin: 0 0.5rem;
padding: 0.75rem 1.5rem;
background-color: rgb(153, 27, 27);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
font-weight: bold;
}
.shop-login-actions button:hover {
background-color: rgb(133, 17, 17);
}
.shop-login-actions button:disabled {
background-color: #666;
cursor: not-allowed;
opacity: 0.5;
}
.shop-login-status {
text-align: center;
margin-top: 1rem;
padding: 0.5rem;
border-radius: 4px;
}
.shop-login-status.shop-login-success {
color: #10b981;
background-color: #d1fae5;
}
.shop-login-status.shop-login-error {
color: #ef4444;
background-color: #fee2e2;
}
&lt;/style>
&lt;div class="shop-login-wrapper" id="shop-login-wrapper">
&lt;form id="shop-login-form" novalidate>
&lt;div class="shop-login-form-group">
&lt;label for="shop-login-email">Email Konta Kakele:&lt;/label>
&lt;input type="email" id="shop-login-email" name="email" required placeholder="twoj@email.com" />
&lt;/div>
&lt;div class="shop-login-form-group">
&lt;label for="shop-login-player">Nazwa Postaci:&lt;/label>
&lt;input type="text" id="shop-login-player" name="player_name" required placeholder="Nazwa twojej postaci" />
&lt;/div>
&lt;div class="shop-login-form-group">
&lt;label for="shop-login-streamer">(Opcjonalne) Kod Streamera:&lt;/label>
&lt;input type="text" id="shop-login-streamer" name="streamer_code" placeholder="(Opcjonalne) Kod streamera" />
&lt;/div>
&lt;div class="shop-login-actions">
&lt;button type="submit" id="shop-login-submit">Zaloguj się&lt;/button>
&lt;/div>
&lt;div class="shop-login-status" id="shop-login-status">&lt;/div>
&lt;/form>
&lt;/div>
&lt;script>
(function () {
const form = document.getElementById('shop-login-form');
const statusEl = document.getElementById('shop-login-status');
const submitBtn = document.getElementById('shop-login-submit');
const elementId = 'shop';
const baseUrl = 'https:\/\/shop-v2.kakele.io\/';
document.addEventListener('DOMContentLoaded', function () {
populateUserFormFromUrl('shop-login-email', 'shop-login-player', 'shop-login-streamer');
});
window.addEventListener('message', (event) => {
if (event.data &amp;&amp; event.data.type === 'user-id-modal-shown') {
window.location.reload();
}
});
function setStatus(msg, type) {
statusEl.textContent = msg || '';
statusEl.className = 'shop-login-status' + (type ? ' shop-login-' + type : '');
}
function performLogin(email, playerName, streamerCode) {
setStatus('Logowanie...', '');
submitBtn.disabled = true;
const inputs = form.querySelectorAll('input');
inputs.forEach(input => input.disabled = true);
try {
let userId = email;
if (streamerCode) {
const cleanCode = streamerCode.startsWith('#') ? streamerCode.substring(1) : streamerCode;
userId += ':' + cleanCode;
} else {
userId += ':';
}
userId += ':' + playerName;
const targetElement = document.getElementById(elementId);
if (!targetElement) {
throw new Error('Element docelowy nie został znaleziony.');
}
const separator = baseUrl.includes('?') ? '&amp;' : '?';
let newSrc = baseUrl + separator + 'user-id=' + encodeURIComponent(userId);
const trackingId = typeof getParamFromUrl === 'function'
? getParamFromUrl('tracking_id')
: new URLSearchParams(window.location.search).get('tracking_id');
if (trackingId) {
newSrc += '&amp;tracking_id=' + encodeURIComponent(trackingId);
}
targetElement.src = newSrc;
if (!window._analyticsUserIdSet) {
fetch('https://kakele-7dttx.ondigitalocean.app/webhook/user_validation?xsolla_key=93pUU39i9bcb&amp;ignore_too_many_payments=true', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ user_id: userId })
}).then(function (res) {
if (!res.ok) return;
return res.json();
}).then(function (json) {
if (json &amp;&amp; json.analytics_user_id) {
setGtagUserId(json.analytics_user_id);
}
}).catch(function () { });
}
setStatus('Rozpoczęto logowanie! Jeśli to konieczne, odśwież stronę.', 'success');
} catch (err) {
console.error(err);
setStatus('Błąd logowania. Spróbuj ponownie.', 'error');
inputs.forEach(input => input.disabled = false);
submitBtn.disabled = false;
}
}
form.addEventListener('submit', function (e) {
e.preventDefault();
const email = form.email.value.trim();
const playerName = form.player_name.value.trim();
const streamerCode = form.streamer_code.value.trim();
if (!email || !playerName) {
setStatus('Wypełnij wszystkie wymagane pola.', 'error');
return;
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
setStatus('Wprowadź prawidłowy adres email.', 'error');
return;
}
performLogin(email, playerName, streamerCode);
});
})();
&lt;/script>
&lt;style>
#shop-login-wrapper {
display: none;
}
&lt;/style>
&lt;script>
(function () {
const shopModeKey = 'kakele_shop_mode';
function safeGetStorage(key) {
try {
return window.localStorage.getItem(key);
} catch (e) {
return null;
}
}
function safeSetStorage(key, value) {
try {
window.localStorage.setItem(key, value);
} catch (e) {
}
}
const urlParams = new URLSearchParams(window.location.search);
const incomingTrackingId = urlParams.get('tracking_id');
if (incomingTrackingId) {
safeSetStorage(shopModeKey, 'web');
}
const isPtPage = window.location.pathname.startsWith('/pt-br/');
const useWebShop = !isPtPage || safeGetStorage(shopModeKey) === 'web';
if (!useWebShop) {
return;
}
var webShopLogin = document.getElementById('shop-login-wrapper');
var pixBlock = document.getElementById('pix-wrapper');
if (webShopLogin) webShopLogin.style.display = 'block';
if (pixBlock) pixBlock.style.display = 'none';
})();
&lt;/script>
&lt;/p></description></item><item><title>Ściana Ofert</title><link>https://kakele.io/pl/offerwall/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/offerwall/</guid><description>&lt;p>
&lt;style>
.offerwall-iframe-container {
width: 100%;
margin: 0;
padding: 0;
}
@media (max-width: 1024px) {
.offerwall-iframe-container {
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
width: 100vw;
padding: 0;
}
.offerwall-iframe-container iframe {
width: 100vw;
border-radius: 0;
}
article header h1 {
display: none;
}
article section {
margin-top: 0;
}
}
.offerwall-iframe-container iframe[src=""] {
display: none;
}
.offerwall-iframe-container iframe[src]:not([src=""]) {
display: block;
}
&lt;/style>
&lt;div class="offerwall-iframe-container">
&lt;iframe id="offerwall" title="Offerwall" height="650px" width="100%" style="border: none; border-radius: 8px;"
sandbox="allow-downloads allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts allow-top-navigation allow-top-navigation-by-user-activation allow-top-navigation-to-custom-protocols allow-storage-access-by-user-activation allow-document-domain allow-camera allow-microphone allow-display-capture allow-clipboard-read allow-clipboard-write allow-geolocation allow-payment"
src="">
&lt;/iframe>
&lt;/div>
&lt;style>
.shop-login-wrapper {
max-width: 500px;
margin: 0 auto;
padding: 1rem;
}
.shop-login-form-group {
margin-bottom: 1rem;
}
.shop-login-form-group label {
display: block;
margin-bottom: 0.5rem;
font-weight: bold;
}
.shop-login-form-group input {
width: 100%;
padding: 0.5rem;
color: #000;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.shop-login-form-group input:disabled {
background-color: #f5f5f5;
color: #666;
cursor: not-allowed;
opacity: 0.6;
}
.shop-login-actions {
text-align: center;
margin: 1rem 0;
}
.shop-login-actions button {
margin: 0 0.5rem;
padding: 0.75rem 1.5rem;
background-color: rgb(153, 27, 27);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1rem;
font-weight: bold;
}
.shop-login-actions button:hover {
background-color: rgb(133, 17, 17);
}
.shop-login-actions button:disabled {
background-color: #666;
cursor: not-allowed;
opacity: 0.5;
}
.shop-login-status {
text-align: center;
margin-top: 1rem;
padding: 0.5rem;
border-radius: 4px;
}
.shop-login-status.shop-login-success {
color: #10b981;
background-color: #d1fae5;
}
.shop-login-status.shop-login-error {
color: #ef4444;
background-color: #fee2e2;
}
&lt;/style>
&lt;div class="shop-login-wrapper" id="shop-login-wrapper">
&lt;form id="shop-login-form" novalidate>
&lt;div class="shop-login-form-group">
&lt;label for="shop-login-email">Email Konta Kakele:&lt;/label>
&lt;input type="email" id="shop-login-email" name="email" required placeholder="twoj@email.com" />
&lt;/div>
&lt;div class="shop-login-form-group">
&lt;label for="shop-login-player">Nazwa Postaci:&lt;/label>
&lt;input type="text" id="shop-login-player" name="player_name" required placeholder="Nazwa twojej postaci" />
&lt;/div>
&lt;div class="shop-login-form-group">
&lt;label for="shop-login-streamer">(Opcjonalne) Kod Streamera:&lt;/label>
&lt;input type="text" id="shop-login-streamer" name="streamer_code" placeholder="(Opcjonalne) Kod streamera" />
&lt;/div>
&lt;div class="shop-login-actions">
&lt;button type="submit" id="shop-login-submit">Zaloguj się&lt;/button>
&lt;/div>
&lt;div class="shop-login-status" id="shop-login-status">&lt;/div>
&lt;/form>
&lt;/div>
&lt;script>
(function () {
const form = document.getElementById('shop-login-form');
const statusEl = document.getElementById('shop-login-status');
const submitBtn = document.getElementById('shop-login-submit');
const elementId = 'offerwall';
const baseUrl = 'https:\/\/offerwall.kakele.io\/';
document.addEventListener('DOMContentLoaded', function () {
populateUserFormFromUrl('shop-login-email', 'shop-login-player', 'shop-login-streamer');
});
window.addEventListener('message', (event) => {
if (event.data &amp;&amp; event.data.type === 'user-id-modal-shown') {
window.location.reload();
}
});
function setStatus(msg, type) {
statusEl.textContent = msg || '';
statusEl.className = 'shop-login-status' + (type ? ' shop-login-' + type : '');
}
function performLogin(email, playerName, streamerCode) {
setStatus('Logowanie...', '');
submitBtn.disabled = true;
const inputs = form.querySelectorAll('input');
inputs.forEach(input => input.disabled = true);
try {
let userId = email;
if (streamerCode) {
const cleanCode = streamerCode.startsWith('#') ? streamerCode.substring(1) : streamerCode;
userId += ':' + cleanCode;
} else {
userId += ':';
}
userId += ':' + playerName;
const targetElement = document.getElementById(elementId);
if (!targetElement) {
throw new Error('Element docelowy nie został znaleziony.');
}
const separator = baseUrl.includes('?') ? '&amp;' : '?';
let newSrc = baseUrl + separator + 'user-id=' + encodeURIComponent(userId);
const trackingId = typeof getParamFromUrl === 'function'
? getParamFromUrl('tracking_id')
: new URLSearchParams(window.location.search).get('tracking_id');
if (trackingId) {
newSrc += '&amp;tracking_id=' + encodeURIComponent(trackingId);
}
targetElement.src = newSrc;
if (!window._analyticsUserIdSet) {
fetch('https://kakele-7dttx.ondigitalocean.app/webhook/user_validation?xsolla_key=93pUU39i9bcb&amp;ignore_too_many_payments=true', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ user_id: userId })
}).then(function (res) {
if (!res.ok) return;
return res.json();
}).then(function (json) {
if (json &amp;&amp; json.analytics_user_id) {
setGtagUserId(json.analytics_user_id);
}
}).catch(function () { });
}
setStatus('Rozpoczęto logowanie! Jeśli to konieczne, odśwież stronę.', 'success');
} catch (err) {
console.error(err);
setStatus('Błąd logowania. Spróbuj ponownie.', 'error');
inputs.forEach(input => input.disabled = false);
submitBtn.disabled = false;
}
}
form.addEventListener('submit', function (e) {
e.preventDefault();
const email = form.email.value.trim();
const playerName = form.player_name.value.trim();
const streamerCode = form.streamer_code.value.trim();
if (!email || !playerName) {
setStatus('Wypełnij wszystkie wymagane pola.', 'error');
return;
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
setStatus('Wprowadź prawidłowy adres email.', 'error');
return;
}
performLogin(email, playerName, streamerCode);
});
})();
&lt;/script>&lt;/p></description></item><item><title>Wiki</title><link>https://kakele.io/pl/wiki/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/wiki/</guid><description>&lt;p>Witaj w Wiki Kakele Online! Tutaj możesz znaleźć kompleksowe informacje o wszystkich elementach gry. Kliknij na dowolną kategorię poniżej, aby zobaczyć szczegółowe informacje.&lt;/p>
&lt;style>
.wiki-nav {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 16px;
margin: 20px 0;
padding: 20px;
background: rgba(2, 6, 23, 0.4);
}
.wiki-category-btn {
position: relative;
background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(147, 51, 234, 0.1));
border: 2px solid rgba(59, 130, 246, 0.3);
color: #e2e8f0;
padding: 18px 24px;
border-radius: 12px;
cursor: pointer;
text-align: center;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
text-decoration: none;
font-weight: bold;
font-family: inherit;
font-size: 16px;
overflow: hidden;
backdrop-filter: blur(10px);
}
.wiki-category-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
transition: left 0.5s;
}
.wiki-category-btn:hover::before {
left: 100%;
}
.wiki-category-btn:hover {
background: linear-gradient(135deg, rgba(59, 130, 246, 0.2), rgba(147, 51, 234, 0.2));
border-color: rgba(59, 130, 246, 0.6);
box-shadow: 0 8px 25px rgba(59, 130, 246, 0.3);
color: #ffffff;
}
.wiki-section-content {
display: none;
margin-top: 20px;
padding: 20px;
background: linear-gradient(135deg, rgba(2, 6, 23, 0.6), rgba(30, 41, 59, 0.4));
backdrop-filter: blur(15px);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.wiki-loading {
text-align: center;
padding: 60px;
color: #94a3b8;
font-style: italic;
font-size: 16px;
background: rgba(15, 23, 42, 0.3);
border-radius: 12px;
border: 1px dashed rgba(59, 130, 246, 0.3);
}
.wiki-section-title {
background: linear-gradient(90deg, #3b82f6, #8b5cf6);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
border-bottom: 3px solid rgba(59, 130, 246, 0.3);
padding-bottom: 15px;
margin-bottom: 25px;
font-size: 24px;
font-weight: bold;
text-align: center;
}
.wiki-table {
background: rgba(2, 6, 23, 0.8);
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
border: 1px solid rgba(59, 130, 246, 0.2);
width: 100%;
}
.wiki-table table {
width: 100%;
border-collapse: collapse;
}
.wiki-table th {
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(147, 51, 234, 0.8));
color: #ffffff;
text-align: center;
padding: 16px 12px;
font-weight: bold;
font-size: 16px;
text-transform: uppercase;
letter-spacing: 0.5px;
white-space: nowrap;
border-bottom: 2px solid rgba(59, 130, 246, 0.5);
}
.wiki-table td {
text-align: center;
padding: 14px 12px;
color: #e2e8f0;
border-bottom: 1px solid rgba(59, 130, 246, 0.1);
transition: all 0.2s ease;
font-size: 16px;
width: auto;
vertical-align: middle;
}
.wiki-table tr {
border: none;
}
.wiki-table tr:nth-child(even) {
background: rgba(15, 23, 42, 0.6);
}
.wiki-table tr:nth-child(odd) {
background: rgba(30, 41, 59, 0.4);
}
.wiki-table tr:hover {
background: linear-gradient(90deg, rgba(59, 130, 246, 0.1), rgba(147, 51, 234, 0.1));
box-shadow: 0 4px 15px rgba(59, 130, 246, 0.2);
}
.creature {
background-size: 32px 32px !important;
background-repeat: no-repeat !important;
background-position: center !important;
background-color: black !important;
width: 36px;
height: 36px;
display: inline-block;
margin-right: 8px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
vertical-align: middle;
}
.creature:hover {
border-color: rgba(59, 130, 246, 0.8);
box-shadow: 0 4px 16px rgba(59, 130, 246, 0.4);
}
.item {
background-size: 34px 34px !important;
background-repeat: no-repeat !important;
background-position: center !important;
background-color: black !important;
width: 38px;
height: 38px;
display: inline-block;
margin-right: 8px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
vertical-align: middle;
}
.item:hover {
border-color: rgba(59, 130, 246, 0.8);
box-shadow: 0 4px 16px rgba(59, 130, 246, 0.4);
}
@media (max-width: 1024px) {
.wiki-nav {
grid-template-columns: 1fr;
gap: 12px;
padding: 15px;
}
.wiki-category-btn {
padding: 16px 20px;
font-size: 16px;
}
.wiki-section-content {
padding: 20px 15px;
margin-top: 20px;
}
.wiki-section-title {
font-size: 20px;
}
.wiki-table {
overflow-x: auto;
border: 0;
}
.wiki-table table {
overflow-x: auto;
white-space: normal;
}
.wiki-table th,
.wiki-table td {
padding: 12px 8px;
word-wrap: break-word;
}
.wiki-table,
.wiki-table table,
.wiki-table tbody,
.wiki-table tr,
.wiki-table th,
.wiki-table td {
display: block;
}
.wiki-table thead {
display: none;
}
.wiki-table tr {
background: rgba(15, 23, 42, 0.9);
border: 1px solid rgba(59, 130, 246, 0.3);
border-radius: 8px;
margin-bottom: 16px;
padding: 16px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.wiki-table td {
text-align: right;
padding: 12px 0;
border: none;
border-bottom: 1px solid rgba(59, 130, 246, 0.3);
border-top: none;
font-size: 16px;
display: block;
word-wrap: break-word;
overflow-wrap: break-word;
position: relative;
overflow: hidden;
line-height: 40px;
}
.wiki-table td span {
word-wrap: break-word;
}
.wiki-table td div {
float: left;
max-width: 100%;
box-sizing: border-box;
}
.wiki-table td[data]:before {
content: attr(data);
font-weight: bold;
color: #94a3b8;
float: left;
max-width: 50%;
box-sizing: border-box;
}
.wiki-table td:last-child {
border-bottom: none;
}
.creature,
.item {
vertical-align: middle;
margin-bottom: 0;
}
}
@keyframes pulse {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
.wiki-loading {
animation: pulse 2s infinite;
}
.wiki-datatable {
background: rgba(2, 6, 23, 0.8);
color: #e2e8f0;
}
.wiki-datatable thead th {
background: linear-gradient(135deg, rgba(59, 130, 246, 0.8), rgba(147, 51, 234, 0.8));
color: #ffffff;
border-bottom: 2px solid rgba(59, 130, 246, 0.5);
}
.wiki-datatable tbody td {
background: rgba(15, 23, 42, 0.6);
color: #e2e8f0;
border-bottom: 1px solid rgba(59, 130, 246, 0.1);
}
.wiki-datatable tbody tr:nth-child(even) td {
background: rgba(30, 41, 59, 0.4);
}
.wiki-datatable tbody tr:hover td {
background: linear-gradient(90deg, rgba(59, 130, 246, 0.1), rgba(147, 51, 234, 0.1));
}
.dataTables_wrapper {
color: #e2e8f0;
}
.dataTables_filter input {
background: rgba(15, 23, 42, 0.8);
border: 1px solid rgba(59, 130, 246, 0.3);
color: #e2e8f0;
border-radius: 4px;
padding: 6px 12px;
}
.dataTables_length select {
background: rgba(15, 23, 42, 0.8);
border: 1px solid rgba(59, 130, 246, 0.3);
color: #e2e8f0;
border-radius: 4px;
padding: 4px 8px;
}
&lt;/style>
&lt;div class="wiki-container">
&lt;div class="wiki-nav">
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('spells-section'); loadWiki('spells')">
✨ Zaklęcia
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('equipments-section'); loadWiki('equipments')">
🛡️ Wyposażenie
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('weapons-section'); loadWiki('weapons')">
⚔️ Broń
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('monsters-section'); loadWiki('monsters')">
👹 Potwory
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('pets-section'); loadWiki('pets')">
🐾 Zwierzęta
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('mounts-section'); loadWiki('mounts')">
🐎 Wierzchowce
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('addons-section'); loadWiki('addons')">
👕 Dodatki
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('outfits-section'); loadWiki('outfits')">
👗 Stroje
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('foods-section'); loadWiki('foods')">
🍖 Jedzenie i Przedmioty
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('items-section'); loadWiki('items')">
🎒 Inne Przedmioty
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('pet_foods-section'); loadWiki('pet_foods')">
🦴 Karma dla Zwierząt
&lt;/button>
&lt;button class="wiki-category-btn" onclick="toggleWikiSection('npcs-section'); loadWiki('npcs')">
🌍 NPCs
&lt;/button>
&lt;/div>
&lt;div id="spells-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Zaklęcia&lt;/h2>
&lt;div id="spells-loading" class="wiki-loading">Kliknij &amp;#34;✨ Zaklęcia&amp;#34; aby załadować dane zaklęć...&lt;/div>
&lt;div id="spells-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="equipments-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Wyposażenie&lt;/h2>
&lt;div id="equipments-loading" class="wiki-loading">Kliknij &amp;#34;🛡️ Wyposażenie&amp;#34; aby załadować dane wyposażenia...&lt;/div>
&lt;div id="equipments-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="weapons-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Broń&lt;/h2>
&lt;div id="weapons-loading" class="wiki-loading">Kliknij &amp;#34;⚔️ Broń&amp;#34; aby załadować dane broni...&lt;/div>
&lt;div id="weapons-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="monsters-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Potwory&lt;/h2>
&lt;div id="monsters-loading" class="wiki-loading">Kliknij &amp;#34;👹 Potwory&amp;#34; aby załadować dane potworów...&lt;/div>
&lt;div id="monsters-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="pets-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Zwierzęta&lt;/h2>
&lt;div id="pets-loading" class="wiki-loading">Kliknij &amp;#34;🐾 Zwierzęta&amp;#34; aby załadować dane zwierząt...&lt;/div>
&lt;div id="pets-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="mounts-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Wierzchowce&lt;/h2>
&lt;div id="mounts-loading" class="wiki-loading">Kliknij &amp;#34;🐎 Wierzchowce&amp;#34; aby załadować dane wierzchowców...&lt;/div>
&lt;div id="mounts-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="addons-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Dodatki&lt;/h2>
&lt;div id="addons-loading" class="wiki-loading">Kliknij &amp;#34;👕 Dodatki&amp;#34; aby załadować dane dodatków...&lt;/div>
&lt;div id="addons-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="outfits-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Stroje&lt;/h2>
&lt;div id="outfits-loading" class="wiki-loading">Kliknij &amp;#34;👗 Stroje&amp;#34; aby załadować dane strojów...&lt;/div>
&lt;div id="outfits-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="foods-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Jedzenie i Przedmioty&lt;/h2>
&lt;div id="foods-loading" class="wiki-loading">Kliknij &amp;#34;🍖 Jedzenie i Przedmioty&amp;#34; aby załadować dane jedzenia...&lt;/div>
&lt;div id="foods-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="items-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Inne Przedmioty&lt;/h2>
&lt;div id="items-loading" class="wiki-loading">Kliknij &amp;#34;🎒 Inne Przedmioty&amp;#34; aby załadować dane przedmiotów...&lt;/div>
&lt;div id="items-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="pet_foods-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">Karma dla Zwierząt&lt;/h2>
&lt;div id="pet_foods-loading" class="wiki-loading">Kliknij &amp;#34;🦴 Karma dla Zwierząt&amp;#34; aby załadować dane karmy...&lt;/div>
&lt;div id="pet_foods-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;div id="npcs-section" class="wiki-section-content">
&lt;h2 class="wiki-section-title">NPCs&lt;/h2>
&lt;div id="npcs-loading" class="wiki-loading">Kliknij &amp;#34;🌍 NPCs&amp;#34; aby załadować dane NPCs...&lt;/div>
&lt;div id="npcs-content" class="wiki-table">&lt;/div>
&lt;/div>
&lt;/div>
&lt;link rel="stylesheet" href="https://cdn.datatables.net/2.3.2/css/dataTables.dataTables.min.css" />
&lt;script src="https://code.jquery.com/jquery-3.7.1.min.js">&lt;/script>
&lt;script src="https://cdn.datatables.net/2.3.2/js/dataTables.min.js">&lt;/script>
&lt;script>
const WIKI_ERROR_MESSAGE = 'Nie udało się załadować treści. Spróbuj ponownie później.';
const WIKI_LANGUAGE = 'pl';
function getWikiLanguageSuffix(langCode) {
const languageMap = {
'en': 'english',
'pt-br': 'portuguese',
'es': 'spanish',
'pl': 'polish'
};
return languageMap[langCode] || 'english';
}
async function loadWiki(wiki) {
const loadingElement = document.getElementById(wiki + "-loading");
const contentElement = document.getElementById(wiki + "-content");
if (!loadingElement || !contentElement) return;
try {
const languageSuffix = getWikiLanguageSuffix(WIKI_LANGUAGE);
const response = await fetch('https://raw.githubusercontent.com/contact-kakele/kakele-data/main/wiki/' + wiki + '_' + languageSuffix + '.html');
if (!response.ok) throw new Error('Failed to load content');
const html = await response.text();
loadingElement.remove();
const tempDiv = document.createElement('div');
tempDiv.innerHTML = html;
const table = tempDiv.querySelector('table');
if (table) {
setupDataTable(wiki, table, contentElement);
} else {
const content = document.createElement("div");
content.innerHTML = html;
contentElement.appendChild(content);
}
} catch (error) {
loadingElement.innerHTML = '&lt;p style="color: #ff6b6b;">' + WIKI_ERROR_MESSAGE + '&lt;/p></description></item><item><title>Witamy w Kakele Online!</title><link>https://kakele.io/pl/welcome/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kakele.io/pl/welcome/</guid><description>&lt;style>
.centered-image {
display: flex;
justify-content: center;
align-items: center;
max-width: 100%;
}
.centered-image img {
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
&lt;/style>
&lt;div class="centered-image">&lt;img src="https://kakele.io/images/kakele.webp" alt="Witamy w Kakele Online"
width="450" height="250"
/>
&lt;/div>
&lt;p>To jest nasza strona internetowa! Zawiera dodatkowe informacje o grze, zespole gry, społeczności i więcej! Gdy będziesz mieć czas, poświęć kilka minut na przeglądanie. Nie zapomnij dołączyć do naszych społeczności, gdzie możesz poznać więcej graczy z Kakele.&lt;/p></description></item></channel></rss>