<?xml version="1.0"?>
<rss version="2.0"><channel><title>Systemy, questy i poprawki ostatnich temat&#xF3;w</title><link>https://www.mpcforum.pl/forum/591-systemy-questy-i-poprawki/</link><description>Systemy, questy i poprawki ostatnich temat&#xF3;w</description><language>pl</language><item><title>Edycja j&#x119;zyka np z tureckiego na polski w plikach przydatne do t&#x142;umaczenia plik&#xF3;w</title><link>https://www.mpcforum.pl/topic/1688500-edycja-jezyka-np-z-tureckiego-na-polski-w-plikach-przydatne-do-tlumaczenia-plikow/</link><description><![CDATA[<p>
	<span>null</span>Witam jak ktoś chce tłumacza do locale to proszę
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	totalvirus <a href="https://www.virustotal.com/gui/file/5ce618deb17e2bb32dfeb300faadd9c72741770a2c090ced35fcd04d49aecbb9?nocache=1" rel="external nofollow">VirusTotal - File - 5ce618deb17e2bb32dfeb300faadd9c72741770a2c090ced35fcd04d49aecbb9</a>
</p>

<p><a href="https://www.mpcforum.pl/uploads/monthly_2026_07/image.png.0498e606ba2e780138624635fb2c0c84.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="170000" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" data-src="https://www.mpcforum.pl/uploads/monthly_2026_07/image.png.0498e606ba2e780138624635fb2c0c84.png" data-ratio="57.95" width="616" class="ipsImage ipsImage_thumbnailed" alt="image.png"></a></p><p>


 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	
</p>]]></description><guid isPermaLink="false">1688500</guid><pubDate>Fri, 31 Jul 2026 14:32:00 +0000</pubDate></item><item><title>Osobne efekty GM i prefiksy administracji (Dzia&#x142;a na Martysamie)</title><link>https://www.mpcforum.pl/topic/1688340-osobne-efekty-gm-i-prefiksy-administracji-dziala-na-martysamie/</link><description><![CDATA[<p>
	Cześć,
</p>

<p>
	 
</p>

<p>
	Przy wsparciu sztucznej inteligencji przygotowałem system osobnych efektów wizualnych GM, bazujący na pomyśle z poniższego tematu:
</p>

<p>
	<a href="https://metin2.dev/topic/31121-gm-affects/" rel="external nofollow">https://metin2.dev/topic/31121-gm-affects/</a>
</p>

<p>
	 
</p>

<p>
	System oddziela efekt wizualny GM od faktycznego poziomu uprawnień administratora poprzez dodanie nowej kolumny prefix w tabeli gmlist. Dzięki temu mAuthority nadal odpowiada za realne uprawnienia GM, a prefix służy wyłącznie do określenia wyświetlanego tagu administracji oraz przypisanego efektu wizualnego.
</p>

<p>
	 
</p>

<p>
	Dodatkowo standardowy poziom postaci nad graczem został zastąpiony prefiksem administracji, np. [HA], [TECH], [GA], [GM], [TGM] lub [TUT].
</p>

<p>
	 
</p>

<p>
	Patch został przygotowany pod pliki Martysamy.
</p>

<p>
	 
</p>

<p>
	W patchu nie znajdują się pliki efektów (.mse i .tga). Należy je załączyć samodzielnie.
</p>

<p>
	 
</p>

<p>
	Przykład:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<img alt=".jpg" class="ipsImage" data-ratio="66.50" height="593" style="height:auto;" width="1000" data-src="https://metin2.download/picture/YJeeJ4r2rXR337Pn6a76D2cyj7c1bP29/.jpg" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Link do pobrania:
</p>

<p>
	<a href="https://github.com/rvczpl/Metin-GM-Affects-Extended-System" rel="external nofollow">https://github.com/rvczpl/Metin-GM-Affects-Extended-System</a>
</p>

<p>
	 
</p>

<p>
	Skan: 
</p>

<p>
	<a href="https://www.virustotal.com/gui/file/f773527701b3d557340366463bfa229e5e31e440505acdacbe0ba5e3b35f7884?nocache=1" rel="external nofollow">https://www.virustotal.com/gui/file/f773527701b3d557340366463bfa229e5e31e440505acdacbe0ba5e3b35f7884?nocache=1</a>
</p>

<p>
	

 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	

</p>
]]></description><guid isPermaLink="false">1688340</guid><pubDate>Sun, 31 May 2026 17:42:22 +0000</pubDate></item><item><title>[PROBLEM] DX9 Reset() device psuje splatting terenu na nowych sterownikach NVIDIA</title><link>https://www.mpcforum.pl/topic/1688244-problem-dx9-reset-device-psuje-splatting-terenu-na-nowych-sterownikach-nvidia/</link><description><![CDATA[<p>
	<span style="font-size:20px;">Witam</span>
</p>

<p>
	 
</p>

<p>
	Mam problem z klientem na silniku DirectX 9. Po Ctrl+Alt+Delete (lub UAC), gra wykonuje Reset() device i odtwarza wszystkie stany. Tekstury terenu (splatting) przestają działać – Stage 1 multitexturing nie miesza tekstur (są kwadratowe przejścia zamiast płynnych).
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">Co sprawdziłem:</span>
</p>

<p>
	 
</p>

<p>
	Wszystkie samplery, texture stage states, transformacje – ustawione poprawnie po resecie
</p>

<p>
	Tekstury tworzone od nowa przez D3DPOOL_MANAGED + LockRect
</p>

<p>
	Vertex bufory – OK
</p>

<p>
	SetTexture(1, itd) – wywoływane
</p>

<p>
	Stage 1 ColorOp/AlphaOp – ustawione na SELECTARG1
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">Logi potwierdzają że wszystko jest identyczne przed i po resecie</span>
</p>

<p>
	 
</p>

<p>
	Kod działa poprawnie – problem znika dopiero po pełnym restarcie gry (nowy CreateDevice). Teleport/reload mapy NIE pomaga.
</p>

<p>
	 
</p>

<p>
	Testowane na:
</p>

<p>
	Windows 10 64-bit
</p>

<p>
	NVIDIA GTX 1060 6GB, sterownik 32.0.15.8180
</p>

<p>
	DirectX 12 (klient po migracji na DX9)
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:26px;"><strong><span style="color:#f39c12;">UPDATE : </span></strong></span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Problem rozwiązany poniżej rozwiązanie <span>: </span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	W statemanager.cpp szukamy 
</p>

<p>
	 
</p>

<p>
	#ifdef _DEBUG<br />
	    int i, j;<br />
	    for (i = 0; i &lt; STATEMANAGER_MAX_RENDERSTATES; i++)<br />
	        m_bRenderStateSavingFlag[i] = FALSE;
</p>

<p>
	    for (j = 0; j &lt; STATEMANAGER_MAX_TRANSFORMSTATES; j++)<br />
	        m_bTransformSavingFlag[j] = FALSE;
</p>

<p>
	    for (j = 0; j &lt; STATEMANAGER_MAX_STAGES; ++j)<br />
	        for (i = 0; i &lt; STATEMANAGER_MAX_TEXTURESTATES; ++i)<br />
	            m_bTextureStageStateSavingFlag[j][i] = FALSE;<br />
	#endif _DEBUG
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	pod spodem dodajemy <span>: </span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span>#ifdef DX9_BLUR_FIX<br />
	    if (!m_lpD3DDev)<br />
	        return;</span>
</p>

<p>
	<span>    D3DCAPS9 d3dCaps = {};<br />
	    m_lpD3DDev-&gt;GetDeviceCaps(&amp;d3dCaps);</span>
</p>

<p>
	<span>    m_dwBestMagFilter = (d3dCaps.TextureFilterCaps &amp; D3DPTFILTERCAPS_MAGFANISOTROPIC)<br />
	        ? D3DTEXF_ANISOTROPIC : D3DTEXF_LINEAR;</span>
</p>

<p>
	<span>    m_dwBestMinFilter = (d3dCaps.TextureFilterCaps &amp; D3DPTFILTERCAPS_MINFANISOTROPIC)<br />
	        ? D3DTEXF_ANISOTROPIC : D3DTEXF_LINEAR;</span>
</p>

<p>
	<span>    DWORD dwMax = d3dCaps.MaxAnisotropy;<br />
	    if (dwMax &gt; 4) dwMax = 4;</span>
</p>

<p>
	<span>    if (dwMax &gt; 1) {<br />
	        for (int i = 0; i &lt; 3; ++i) {<br />
	            m_lpD3DDev-&gt;SetSamplerState(i, D3DSAMP_MAXANISOTROPY, dwMax);<br />
	            m_lpD3DDev-&gt;SetSamplerState(i, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC);<br />
	            m_lpD3DDev-&gt;SetSamplerState(i, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);<br />
	            m_lpD3DDev-&gt;SetSamplerState(i, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);<br />
	        }<br />
	    }<br />
	#endif</span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	W locale_inc.h dodajemy na końcu <span>: </span>
</p>

<p>
	 
</p>

<p>
	<span>#define DX9_BLUR_FIX </span>
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1688244</guid><pubDate>Sat, 02 May 2026 16:03:37 +0000</pubDate></item><item><title>Zmiana podstawowych warto&#x15B;ci</title><link>https://www.mpcforum.pl/topic/1688126-zmiana-podstawowych-wartosci/</link><description><![CDATA[<p>
	Witam gdzie znajdę i zmienię podstawowe wartości takie jak szybkość ataku ruchu itd które dostaje sie przy tworzeniu postaci ? 
</p>
]]></description><guid isPermaLink="false">1688126</guid><pubDate>Tue, 31 Mar 2026 19:48:04 +0000</pubDate></item><item><title>[C++] Konwersja formatu czasu.</title><link>https://www.mpcforum.pl/topic/1682428-c-konwersja-formatu-czasu/</link><description><![CDATA[<p>
	<strong>Dziś przedstawię Wam sposób, by uczynić wyświetlanie czasu w przedmiotach bardziej intuicyjnym.<br />
	Chciałbym Wam pokazać, jak dodać brakującą jednostkę sekund oraz jak zamienić skrócone nazwy jednostek czasu na ich pełne wersje,<br />
	tak aby były one bardziej zrozumiałe dla każdego gracza. Dodatkowo dostosujemy wyświetlanie ich do polskiej lokalizacji jednostek czasu.</strong><br />
	<br />
	Plik: root -&gt; localeInfo.py<br />
	<br />
	Szukamy:
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			def SecondToDHM(time):
		</p>
	</div>
</blockquote>

<p>
	<br />
	Zamieniamy całą funkcje na:<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			 
		</p>

		<p>
			def SecondToDHM(time):<br />
			    text = ""
		</p>

		<p>
			    second = int(time % 60)<br />
			    minute = int((time / 60) % 60)<br />
			    hour = int((time / 3600) % 24)<br />
			    day = int(time / 86400)
		</p>

		<p>
			    if day &gt; 0:<br />
			        text += "{} {}".format(day, getPolishTimeUnit(day, ["dzień", "dni", "dni"]))<br />
			        text += " "
		</p>

		<p>
			    if hour &gt; 0:<br />
			        text += "{} {}".format(hour, getPolishTimeUnit(hour, ["godzina", "godziny", "godzin"]))<br />
			        text += " "
		</p>

		<p>
			    if minute &gt; 0:<br />
			        text += "{} {}".format(minute, getPolishTimeUnit(minute, ["minuta", "minuty", "minut"]))<br />
			        text += " "
		</p>

		<p>
			    if second &gt; 0:<br />
			        text += "{} {}".format(second, getPolishTimeUnit(second, ["sekunda", "sekundy", "sekund"]))<br />
			        text += " "
		</p>

		<p>
			    return text.strip()
		</p>

		<p>
			 
		</p>
	</div>
</blockquote>

<p>
	<br />
	nad def SecondToDHM(time):<br />
	<br />
	dodajemy:
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			def getPolishTimeUnit(n, forms):<br />
			    if n == 1:<br />
			        return forms[0]<br />
			    elif 10 &lt; n % 100 &lt; 20:<br />
			        return forms[2]<br />
			    elif n % 10 == 2 or n % 10 == 3 or n % 10 == 4:<br />
			        return forms[1]<br />
			    else:<br />
			        return forms[2]
		</p>
	</div>
</blockquote>

<p>
	<br />
	root -&gt; uiToolTip.py<br />
	<br />
	Szukamy:<br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			def AppendUniqueItemLastTime(self, restMin):
		</p>
	</div>
</blockquote>

<p>
	<br />
	Zamieniamy na <span>:</span><br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			<span>def AppendUniqueItemLastTime(self, restMin):<br />
			    restSecond = restMin * 60<br />
			    self.AppendSpace(5)<br />
			    self.AppendTextLine(localeInfo.LEFT_TIME, self.LEFT_TIME_COLOR)<br />
			    self.AppendTextLine(localeInfo.SecondToDHM(restSecond), self.NORMAL_COLOR)</span>
		</p>
	</div>
</blockquote>

<p>
	<br />
	Szukamy:<br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			def AppendMallItemLastTime(self, endTime):
		</p>
	</div>
</blockquote>

<p>
	<br />
	Zamieniamy na <span>:</span><br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			<span>def AppendMallItemLastTime(self, endTime):<br />
			    leftSec = max(0, endTime - app.GetGlobalTimeStamp())<br />
			    self.AppendSpace(5)<br />
			    self.AppendTextLine(localeInfo.LEFT_TIME, self.LEFT_TIME_COLOR)<br />
			    self.AppendTextLine(localeInfo.SecondToDHM(leftSec), self.NORMAL_COLOR)</span>
		</p>
	</div>
</blockquote>

<p>
	<br />
	Szukamy: <br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			LOW_PRICE_COLOR = grp.GenerateColor(0.7, 0.7, 0.7, 1.0)
		</p>
	</div>
</blockquote>

<p>
	<br />
	Dodajemy pod:<br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			LEFT_TIME_COLOR = 0xFFFFA500
		</p>
	</div>
</blockquote>

<p style="text-align:center;">
	<br />
	Jak to wygląda? Filmik poniżej.<br />
	 
</p>

<div class="ipsEmbeddedVideo" contenteditable="false">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" src="https://www.youtube-nocookie.com/embed/Xqa5KsiQKEs?feature=oembed" title="Konwersja formatu czasu - sharegon.pl" width="200"></iframe>
	</div>
</div>

<p style="text-align:center;">
	 
</p>
]]></description><guid isPermaLink="false">1682428</guid><pubDate>Sun, 03 Sep 2023 18:36:42 +0000</pubDate></item><item><title>[C++] Modernizacja i optymalizacja struktury DynamicCharacterPtr.</title><link>https://www.mpcforum.pl/topic/1682433-c-modernizacja-i-optymalizacja-struktury-dynamiccharacterptr/</link><description><![CDATA[<p style="text-align:center;">
	<em>Witajcie !</em>
</p>

<p style="text-align:center;">
	<em>Niedługo opublikuję mój nowy projekt czystego źródła. Mam ambicję, by stał się on najlepszą darmową bazą do rozpoczęcia pracy nad własnym serwerem.</em>
</p>

<p style="text-align:center;">
	<em>Stawiając na jakość i chcąc być na bieżąco z najnowszymi standardami C++, postanowiłem przeprowadzić solidną przebudowę struktury DynamicCharacterPtr.<br />
	__________________________________________________________________________________________________________________</em><br />
	<br />
	<strong>char.cpp<br />
	<br />
	Szukamy:</strong><br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			 
		</p>

		<p>
			<strong>LPCHARACTER DynamicCharacterPtr::Get() const {<br />
			    LPCHARACTER p = nullptr;<br />
			    if (is_pc) {<br />
			        p = CHARACTER_MANAGER::Instance().FindByPID(id);<br />
			    } else {<br />
			        p = CHARACTER_MANAGER::Instance().Find(id);<br />
			    }<br />
			    return p;<br />
			}</strong>
		</p>

		<p>
			<strong>DynamicCharacterPtr&amp; DynamicCharacterPtr::operator=(LPCHARACTER character) {<br />
			    if (character == nullptr) {<br />
			        Reset();<br />
			        return *this;<br />
			    }<br />
			    if (character-&gt;IsPC()) {<br />
			        is_pc = true;<br />
			        id = character-&gt;GetPlayerID();<br />
			    } else {<br />
			        is_pc = false;<br />
			        id = character-&gt;GetVID();<br />
			    }<br />
			    return *this;<br />
			}</strong>
		</p>

		<p>
			 
		</p>
	</div>
</blockquote>

<p style="text-align:center;">
	<br />
	<strong>Zamieniamy na <span>:</span></strong><br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			 
		</p>

		<p>
			<strong><span>LPCHARACTER DynamicCharacterPtr::Get() const <br />
			{<br />
			    auto&amp; manager = CHARACTER_MANAGER::instance();<br />
			    return is_pc ? manager.FindByPID(id) : manager.Find(id);<br />
			}</span></strong>
		</p>

		<p>
			<strong><span>DynamicCharacterPtr&amp; DynamicCharacterPtr::operator=(LPCHARACTER character) <br />
			{<br />
			    if (!character) <br />
			    {<br />
			        Reset();<br />
			        return *this;<br />
			    } <br />
			    <br />
			    is_pc = character-&gt;IsPC();<br />
			    id = is_pc ? character-&gt;GetPlayerID() : character-&gt;GetVID();<br />
			    <br />
			    return *this;<br />
			}</span></strong>
		</p>

		<p>
			 
		</p>
	</div>
</blockquote>

<p style="text-align:center;">
	<strong><span>_______________________________________________________________________________________________</span><br />
	<br />
	char.h<br />
	<br />
	Szukamy:</strong><br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			 
		</p>

		<p>
			<strong>// &lt;Factor&gt; Dynamically evaluated CHARACTER* equivalent.<br />
			// Referring to SCharDeadEventInfo.<br />
			struct DynamicCharacterPtr {<br />
			    DynamicCharacterPtr() : is_pc(false), id(0) {}<br />
			    DynamicCharacterPtr(const DynamicCharacterPtr&amp; o)<br />
			        : is_pc(o.is_pc), id(o.id) {}</strong>
		</p>

		<p>
			<strong>    // Returns the LPCHARACTER found in CHARACTER_MANAGER.<br />
			    LPCHARACTER Get() const; <br />
			    // Clears the current settings.<br />
			    void Reset() {<br />
			        is_pc = false;<br />
			        id = 0;<br />
			    }</strong>
		</p>

		<p>
			<strong>    // Basic assignment operator.<br />
			    DynamicCharacterPtr&amp; operator=(const DynamicCharacterPtr&amp; rhs) {<br />
			        is_pc = rhs.is_pc;<br />
			        id = rhs.id;<br />
			        return *this;<br />
			    }<br />
			    // Supports assignment with LPCHARACTER type.<br />
			    DynamicCharacterPtr&amp; operator=(LPCHARACTER character);<br />
			    // Supports type casting to LPCHARACTER.<br />
			    operator LPCHARACTER() const {<br />
			        return Get();<br />
			    }</strong>
		</p>

		<p>
			<strong>    bool is_pc;<br />
			    uint32_t id;<br />
			};</strong>
		</p>

		<p>
			 
		</p>
	</div>
</blockquote>

<p style="text-align:center;">
	<br />
	<strong>Zamieniamy na <span><span>:</span></span></strong><br />
	<br />
	 
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Cytat
	</div>

	<div class="ipsQuote_contents">
		<p>
			 
		</p>

		<p>
			<strong><span><span>struct DynamicCharacterPtr <br />
			{<br />
			    private:<br />
			        bool is_pc = false;<br />
			        uint32_t id = 0;<br />
			    <br />
			    public:<br />
			        DynamicCharacterPtr() = default;<br />
			        DynamicCharacterPtr(const DynamicCharacterPtr&amp; o) = default;<br />
			        DynamicCharacterPtr&amp; operator=(const DynamicCharacterPtr&amp; rhs) = default;<br />
			        DynamicCharacterPtr(DynamicCharacterPtr&amp;&amp; o) noexcept = default;<br />
			        DynamicCharacterPtr&amp; operator=(DynamicCharacterPtr&amp;&amp; rhs) noexcept = default;<br />
			        <br />
			        LPCHARACTER Get() const; <br />
			        <br />
			        void Reset() <br />
			        {<br />
			            is_pc = false;<br />
			            id = 0;<br />
			        }</span></span></strong>
		</p>

		<p>
			<strong><span><span>        DynamicCharacterPtr&amp; operator=(LPCHARACTER character);<br />
			        operator LPCHARACTER() const <br />
			        {<br />
			            return Get();<br />
			        }<br />
			        <br />
			        bool IsPC() const <br />
			        {<br />
			            return is_pc; <br />
			        }<br />
			        <br />
			        uint32_t GetID() const <br />
			        {<br />
			            return id; <br />
			        }<br />
			        <br />
			        void SetIsPC(bool value) <br />
			        {<br />
			            is_pc = value; <br />
			        }<br />
			        <br />
			        void SetID(uint32_t value) <br />
			        {<br />
			            id = value; <br />
			        }<br />
			};</span></span></strong>
		</p>

		<p>
			 
		</p>
	</div>
</blockquote>

<p style="text-align:center;">
	 
</p>
]]></description><guid isPermaLink="false">1682433</guid><pubDate>Mon, 04 Sep 2023 09:32:13 +0000</pubDate></item><item><title>[C++] Rewolucja w zarz&#x105;dzaniu buffami nowa funkcja dla GM.</title><link>https://www.mpcforum.pl/topic/1682467-c-rewolucja-w-zarzadzaniu-buffami-nowa-funkcja-dla-gm/</link><description><![CDATA[<p style="text-align:center;">
	Najnowszy system, który dzisiaj pokażę, automatycznie rozpoznaje, kiedy Mistrz Gry próbuje nałożyć efekt na zwykłego gracza i automatycznie zwraca ten efekt do GM'a.<br />
	To samo dzieje się, gdy zwykły gracz próbuje nałożyć efekt na GM'a.<br />
	<br />
	Jak to Działa?<br />
	Nasz system inteligentnie rozpoznaje, kiedy Mistrz Gry próbuje nałożyć efekt na zwykłego gracza i od razu zwraca ten efekt na GM'a.<br />
	Ale to nie wszystko! Działa to również w drugą stronę – jeżeli to gracz próbuje nałożyć efekt na GM.<br />
	 
</p>

<div class="ipsEmbeddedVideo" contenteditable="false">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" src="https://www.youtube-nocookie.com/embed/8LV7uyMfY0w?feature=oembed" title="Nowa funkcja blokująca buff GM" width="200"></iframe>
	</div>
</div>

<p style="text-align:center;">
	 
</p>

<p>
	Teraz przedstawię krok po kroku jak wdrożyć powyższe rozwiązanie, zapraszam.<br />
	<br />
	 
</p>

<p>
	<span class="ipsEmoji">📂</span> Lokalizacja pliku: game -&gt; stdafx.h<br />
	<span class="ipsEmoji">➕</span> Dodaj w przypadku gdy nie masz:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	 
</p>

<p>
	<span class="ipsEmoji">📂</span> Lokalizacja pliku: 'common -&gt; service.h / commondefines.h<br />
	<span class="ipsEmoji">➕</span> Dodaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 
</p>

<p>
	<span class="ipsEmoji">📂</span> Lokalizacja pliku: 'game -&gt; char_skill.cpp'<br />
	<span class="ipsEmoji">🔍</span> Szukaj:<br />
	<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 <span class="ipsEmoji">➕</span> Dodaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 <span class="ipsEmoji">🔍</span> Szukaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	 <br />
	<span class="ipsEmoji">🔍</span> A w tej funkcji znajdz:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	 <br />
	<span class="ipsEmoji">➕</span> Dodaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 <span class="ipsEmoji">📂</span> Lokalizacja pliku: 'game -&gt; char.h'<br />
	 <span class="ipsEmoji">🔍</span> Szukaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 <span class="ipsEmoji">➕</span> Dodaj:
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 <span class="ipsEmoji">📂</span> Lokalizacja pliku: 'share -&gt; locale -&gt; poland -&gt;  locale_string.txt'<br />
	 <span class="ipsEmoji">➕</span> Dodaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	 
</p>
]]></description><guid isPermaLink="false">1682467</guid><pubDate>Mon, 11 Sep 2023 16:22:29 +0000</pubDate></item><item><title>[C++] FIX - Naprawa problemu z nullptr w funkcji przenoszenia przedmiot&#xF3;w do magazynu.</title><link>https://www.mpcforum.pl/topic/1682475-c-fix-naprawa-problemu-z-nullptr-w-funkcji-przenoszenia-przedmiotow-do-magazynu/</link><description><![CDATA[<p>
	Witam wszystkich<span class="ipsEmoji">👋</span>
</p>

<p>
	 
</p>

<p>
	Zarys problemu <span class="ipsEmoji">📖</span>
</p>

<p>
	Każdy, kto zajmuje się tworzeniem serwerów do gry Metin2, zna znaczenie stabilności i bezawaryjności.<br />
	W tym kontekście, błąd w funkcji CInputMain::SafeboxCheckin może być prawdziwą pułapką, prowadzącą do crashu serwera i frustracji graczy. <span class="ipsEmoji">🎮</span><span class="ipsEmoji">😤</span><br />
	Ta funkcja zajmuje się przenoszeniem przedmiotów pomiędzy ekwipunkiem a magazynem, co jest kluczową operacją dla każdego gracza.<br />
	Co gorsza, błąd pojawia się w momencie, gdy próbujemy sprawdzić status questu. Na pewno nikt z nas nie chce, aby serwer padł w tak krytycznym momencie! <span class="ipsEmoji">🛠️</span>
</p>

<p>
	 
</p>

<p>
	Problem w Skrócie <span class="ipsEmoji">🤔</span>
</p>

<p>
	Błąd polega na tym, że metoda GetPCForce() może zwrócić wskaźnik nullptr, który później jest używany w metodzie IsRunning().<br />
	Jest to klasyczny przypadek błędu segmentacji, który może mieć poważne konsekwencje, takie jak crash serwera.
</p>

<p>
	 
</p>

<p>
	Funkcja z problemem <span class="ipsEmoji">📍</span>
</p>

<p>
	Funkcja CInputMain::SafeboxCheckin służy do sprawdzenia przenoszonych przedmiotów między magazynem a ekwipunkiem postaci.<br />
	Obejmuje ona różne warunki i przypadki, które muszą być spełnione, zanim przedmiot zostanie przeniesiony.<br />
	Obejmuje również sprawdzanie różnych questów i ich statusów, co prowadzi do potencjalnego błędu segmentacji, jeżeli nie jest właściwie zarządzane.
</p>

<p>
	 
</p>

<p>
	Sposób naprawy <span class="ipsEmoji">🛠️</span>
</p>

<p>
	Jeśli chcesz tego uniknąć, dodaj warunek sprawdzający, czy wskaźnik zwrócony przez GetPCForce() jest nullptr - zanim wywołasz na nim metodę IsRunning()<br />
	<br />
	 
</p>

<p>
	Rozwiązanie:
</p>

<p>
	<strong>Lokalizacja pliku: game -&gt; input_main.cpp</strong><br />
	<br />
	 
</p>

<p>
	Znajdź funkcję:
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	 
	</p><p>
		W tej funkcji na samym początku znajdziesz taki warunek:<br />
		<br />
		 
	</p>




 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	Zastąp powyższy warunek następującym kodem:
</p>

<p>
	 
	</p>

 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	



<p>
	 
	</p><p>
		Podsumowanie <span class="ipsEmoji">🌟</span>
	</p>


<p>
	Dzięki tej prostej, ale skutecznej naprawie, zabezpieczysz swój serwer Metin2 przed potencjalnymi błędami segmentacji.<br />
	To niewielka zmiana, lecz może znacząco wpłynąć na doświadczenie graczy i stabilność serwera. <span class="ipsEmoji">🎉</span><span class="ipsEmoji">👍</span>
</p>

<p>
	 
	</p><p>
		 
	</p>

]]></description><guid isPermaLink="false">1682475</guid><pubDate>Tue, 12 Sep 2023 20:40:12 +0000</pubDate></item><item><title>[C++] Naprawa (zabezpieczenie) iniekcji SQL dotycz&#x105;ca "net.SendAnswerMakeGuildPacket"</title><link>https://www.mpcforum.pl/topic/1682542-c-naprawa-zabezpieczenie-iniekcji-sql-dotyczaca-netsendanswermakeguildpacket/</link><description><![CDATA[<p>
	<strong>Tak jak w temacie, małe zabezpieczenie gildyjne.</strong><br />
	<br />
	<span class="ipsEmoji">📂</span><strong>Lokalizacja pliku: game -&gt; guild_manager.cpp</strong><br />
	<br />
	<span class="ipsEmoji">🔍</span> Szukaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 Dodaj pod :<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	 
</p>
]]></description><guid isPermaLink="false">1682542</guid><pubDate>Wed, 27 Sep 2023 09:35:40 +0000</pubDate></item><item><title>[C++] FIX - Naprawa b&#x142;&#x119;du z wy&#x15B;wietlaniem nazw sklep&#xF3;w nad potworami i graczami.</title><link>https://www.mpcforum.pl/topic/1682476-c-fix-naprawa-bledu-z-wyswietlaniem-nazw-sklepow-nad-potworami-i-graczami/</link><description><![CDATA[<p>
	Cześć<span class="ipsEmoji">👋</span>
</p>

<p>
	 
</p>

<p>
	Podczas walki z potworami, czasami mogą nad nimi pojawiać się nazwy sklepów. Zdarza się to głównie na serwerach z dużą ilością graczy. Nawet jeśli gracz nie założył własnego sklepu nad postacią mogą pojawiać się nazwy sklepów innych graczy. Ten błąd również istniał na oficjalnych serwerach dawno temu. Rozwiązanie błędu dotyczy tylko zwykłych sklepów wystawianych przez graczy. Możesz na podstawie tego rozwiązania wdrożyć poprawkę również w sklepach offline. Jeśli dokonasz poniższych zmian w swoim kodzie, rozwiążesz ten problem. Uwaga bez odpowiednich modyfikacji w sklepach offline mogą występować problemy z nazwami sklepów!
</p>

<p>
	 
</p>

<p>
	Wyjaśnienie problemu:
</p>

<p>
	Funkcja 'GetMyShop' zwraca pointer na sklep przypisany do postaci. W przypadku błędnej obsługi, gdy zwrócony pointer jest null i gdy w okolicy pojawia się wiele potworów, trudno jest określić, która postać do czego się odnosi. Funkcja 'EncodeInsertPacket' jest nieco problematyczna i powoduje opóźnienia rzędu 1 - 2 sekundy w obszarach z dużą ilością potworów. Kolejnym problemem jest wyświetlanie nazw sklepów nad postaciami, które tak naprawdę nie mają własnego sklepu. 
</p>

<p>
	 
</p>

<p>
	<span class="ipsEmoji">🧩</span> Rozwiązanie:
</p>

<p>
	<span class="ipsEmoji">📁</span> <strong>Lokalizacja pliku: 'game -&gt; char.cpp'</strong><br />
	<br />
	<span class="ipsEmoji">🔍</span> Szukaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 
</p>

<p>
	<span class="ipsEmoji">♻️</span> Zamień:<br />
	<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	<span class="ipsEmoji">🔍</span> Szukaj:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	<br />
	<span class="ipsEmoji">♻️</span> Zamień:<br />
	<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	<br />
	<span class="ipsEmoji">🔍</span> Szukamy nadal w funkcji 'OpenMyShop':<br />
	<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	<br />
	<span class="ipsEmoji">♻️</span> Zamień:<br />
	 
</p>



 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	


<p>
	 
</p>
]]></description><guid isPermaLink="false">1682476</guid><pubDate>Tue, 12 Sep 2023 20:53:01 +0000</pubDate></item><item><title>[PY] Skrypt naprawiaj&#x105;cy czarne plamy na minimapie</title><link>https://www.mpcforum.pl/topic/1686754-py-skrypt-naprawiajacy-czarne-plamy-na-minimapie/</link><description><![CDATA[<p>
	Długi czas oczekiwania w końcu dobiegł końca, oto na wasze ręce daje kawałek kodu, który rozwiązuje odwieczny problem WE.
</p>

<p>
	Jak wiadomo, nowe drzewka przy generowaniu z WE są widoczne jako czarne plamy na minimapie, a ja jestem perfekcjonistą.
</p>

<p>
	Podziwiam, że tyle lat byliście w stanie patrzeć na te czarne plamy i udawać, że ich tam nie ma i nie wygląda to źle.
</p>

<p>
	Natomiast już nie musicie tego robić, skorzystajcie z mojego skryptu, który ma proste switche, ale za to szeroki wachlarz możliwości.
</p>

<p>
	Nikt nie pytał, a każdy potrzebował <span><span class="ipsEmoji">🙂</span></span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<strong>Żeby go odpalić trzeba mieć komputer, pythona, CMD i bibliotekę:</strong>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			pip install pillow
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Pod skrypt tworzycie sobie folder, wrzucacie go tam, a następnie do środka folder całej mapy i duży atlas w formacie .dds czy .bmp (obojętnie), ma to wyglądać tak:
</p>

<p>
	<img alt="Zrzut-ekranu-2025-04-25-141841.png" class="ipsImage" data-ratio="46.87" height="247" style="height:auto;" width="527" data-src="https://i.ibb.co/4gjDfqF8/Zrzut-ekranu-2025-04-25-141841.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Gdy użyjecie skryptu, powstaje folder z gotowymi plikami po przeróbce, nie rusza tych waszych źródłowych, a przy innych opcjach jak sobie wybierzecie, to nadpisuje te znajdujące się w tym folderze, więc można się pobawić ustawieniami i tam sobie zerkać np. na duży atlas, jak się zmienia.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Kod PY:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			import os,random,shutil,sys<br />
			from PIL import Image<br />
			from collections import deque
		</p>

		<p>
			P1=[(20,70,20),(15,65,15),(10,60,10),(5,55,5),(7,50,7),(4,40,4)]<br />
			P2=[(30,90,30),(25,80,25),(20,70,20),(15,65,15),(10,60,10),(5,55,5)]<br />
			P3=[(100,170,100),(90,160,90),(110,90,60),(90,70,50),(70,50,30),(60,130,60)]<br />
			S=20<br />
			F="FIXED_MAP"<br />
			N=os.path.basename(sys.argv[0])
		</p>

		<p>
			def n(x,y,w,h):return[(x+dx,y+dy)for dx,dy in[(-1,0),(1,0),(0,-1),(0,1)]if 0&lt;=x+dx&lt;w and 0&lt;=y+dy&lt;h]
		</p>

		<p>
			def p(s,d,pal,t,m):<br />
			 img=Image.open(s).convert("RGBA");pix=img.load();w,h=img.size<br />
			 if m==1:<br />
			  for y in range(h):<br />
			   for x in range(w):<br />
			    r,g,b,a=pix[x,y]<br />
			    if r&lt;=t and g&lt;=t and b&lt;=t and a&gt;0:pix[x,y]=random.choice(pal)+(a,)<br />
			 else:<br />
			  v=[[0 for _ in range(w)]for _ in range(h)]<br />
			  for y in range(h):<br />
			   for x in range(w):<br />
			    r,g,b,a=pix[x,y]<br />
			    if not v[y][x]and r&lt;=t and g&lt;=t and b&lt;=t and a&gt;0:<br />
			     q=deque([(x,y)]);bL=[]<br />
			     while q:<br />
			      cx,cy=q.popleft()<br />
			      if v[cy][cx]:continue<br />
			      cr,cg,cb,ca=pix[cx,cy]<br />
			      if cr&lt;=t and cg&lt;=t and cb&lt;=t and ca&gt;0:<br />
			       v[cy][cx]=1;bL.append((cx,cy));q.extend(n(cx,cy,w,h))<br />
			     z=len(bL)<br />
			     if m==2:<br />
			      sH=pal[2:4]if z&lt;=S else pal[3:]<br />
			      for i,(bx,by)in enumerate(bL):<br />
			       c=pal[0]if z&gt;S and i==z//2 else random.choice(sH)<br />
			       pix[bx,by]=c+(pix[bx,by][3],)<br />
			     elif m==3:<br />
			      for i,(bx,by)in enumerate(bL):<br />
			       if i%10==0:pix[bx,by]=pal[0]+(pix[bx,by][3],)<br />
			       elif i%7==0:pix[bx,by]=pal[1]+(pix[bx,by][3],)<br />
			       else:pix[bx,by]=random.choice(pal[2:])+(pix[bx,by][3],)<br />
			 img.save(d);print(f"Przerobiono: {d}")
		</p>

		<p>
			def fnd(pal,t,m):<br />
			 for r,d,fL in os.walk(os.getcwd()):<br />
			  if F in r:continue<br />
			  for f in fL:<br />
			   if f==N:continue<br />
			   sP=os.path.join(r,f)<br />
			   rP=os.path.relpath(sP,os.getcwd())<br />
			   dP=os.path.join(F,rP)<br />
			   os.makedirs(os.path.dirname(dP),exist_ok=True)<br />
			   lf=f.lower()<br />
			   if lf=="minimap.dds"or("atlas"in lf and(lf.endswith(".dds")or lf.endswith(".bmp"))):p(sP,dP,pal,t,m)<br />
			   else:shutil.copy2(sP,dP)
		</p>

		<p>
			if __name__=="__main__":<br />
			 print("════════════════════════════════════")<br />
			 print("      Matesh dla MPCForum.pl")<br />
			 print("════════════════════════════════════\n")<br />
			 print("════════════════════════════════════")<br />
			 print("  Skrypt naprawie czarne minimapy")<br />
			 print("════════════════════════════════════\n")<br />
			 while 1:<br />
			  print("Wybierz styl kolorystyki roślinności:")<br />
			  print("1 - Ciemnozielony\n2 - Zielony\n3 - Pustynny")<br />
			  c=input("Wybór (1-3): ")<br />
			  if c in["1","2","3"]:break<br />
			  print("\nJaja se szmato robisz?!\n")<br />
			 pal=P1<br />
			 if c=="2":pal=P2<br />
			 elif c=="3":pal=P3<br />
			 while 1:<br />
			  print("\nWybierz tryb wypełnienia czerni:")<br />
			  print("1 - Losowe (Piksel)\n2 - Inteligentny (Gradient)\n3 - Zaawansowany (Gradient + Kamuflaż + Wzory)")<br />
			  m=input("Wybór (1-3): ")<br />
			  if m in["1","2","3"]:m=int(m);break<br />
			  print("\nJaja se szmato robisz?!\n")<br />
			 while 1:<br />
			  t=input("\nPodaj poziom tolerancji czerni (1-20, domyślnie 10): ")<br />
			  if t.strip()=="":t=10;break<br />
			  elif t.isdigit()and 1&lt;=int(t)&lt;=20:t=int(t);break<br />
			  print("\nJaja se szmato robisz?!\n")<br />
			 os.makedirs(F,exist_ok=True)<br />
			 fnd(pal,t,m)
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Skrypt po uruchomieniu:
</p>

<p>
	<img alt="Zrzut-ekranu-2025-04-25-141635.png" class="ipsImage" data-ratio="135.14" height="750" style="height:auto;" width="425" data-src="https://i.ibb.co/3yz3TmCq/Zrzut-ekranu-2025-04-25-141635.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<strong>Źródłowy:</strong>
</p>

<p>
	<img alt="natural-map-atlas.png" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/FksCY9j8/natural-map-atlas.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<strong>Porównanie możliwości (dla tolerancji 15 - trochę za ostro w tym wypadku o jakieś 3-4 punkty):</strong>
</p>

<p>
	<strong>1. Ciemnozielony</strong>
</p>

<p>
	a) Losowe
</p>

<p>
	<img alt="natural-map-atlas-losowe-ciemno-zielony." class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/CKh4n45y/natural-map-atlas-losowe-ciemno-zielony.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	b) Inteligentny
</p>

<p>
	<img alt="natural-map-atlas-gradient-ciemno-zielon" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/N6BBHYKf/natural-map-atlas-gradient-ciemno-zielony.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	c) Zaawansowany
</p>

<p>
	<img alt="natural-map-atlas-zaawansowany-ciemno-zi" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/gbjdTL1M/natural-map-atlas-zaawansowany-ciemno-zielony.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	<strong>2. Zielony</strong>
</p>

<p>
	a) Losowe
</p>

<p>
	<img alt="natural-map-atlas-losowe-zielony.png" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/Dg8vdg3k/natural-map-atlas-losowe-zielony.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	b) Inteligentny
</p>

<p>
	<img alt="natural-map-atlas-gradient-zielony.png" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/N0zX7T7/natural-map-atlas-gradient-zielony.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	c) Zaawansowany
</p>

<p>
	<img alt="natural-map-atlas-zaawansowany-zielony.p" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/7JbnZZBm/natural-map-atlas-zaawansowany-zielony.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	<strong>3. Pustynny</strong>
</p>

<p>
	a) Losowe
</p>

<p>
	<img alt="natural-map-atlas-losowe-pustynny.png" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/sp7P4KBk/natural-map-atlas-losowe-pustynny.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	b) Inteligentny
</p>

<p>
	<img alt="natural-map-atlas-gradient-pustynny.png" class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/JFmwf55M/natural-map-atlas-gradient-pustynny.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	c) Zaawansowany
</p>

<p>
	<img alt="natural-map-atlas-zaawansowany-pustynny." class="ipsImage" data-ratio="75.08" height="571" style="height:auto;" width="1000" data-src="https://i.ibb.co/0pntNYD2/natural-map-atlas-zaawansowany-pustynny.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1686754</guid><pubDate>Fri, 25 Apr 2025 12:38:51 +0000</pubDate></item><item><title>Edycja Alchemii</title><link>https://www.mpcforum.pl/topic/1685858-edycja-alchemii/</link><description><![CDATA[<p>
	Cześć . Czy ktoś może mi podpowiedzieć jak edytować questa z alchemia ? Mam wersje od paszki na plikach terenzo.
</p>

<p>
	Potrzebuje edytować ilość kamieni potrzebnych do ulepszania ,zwiększyć szanse na pozytyw i spolszczyć komunikaty o ulepszeniu . Aktualnie jest ciezko coś wbić , potrzeba 3-4 kamienie na kolejny stopien jakości . Chce to przybliżyć bardziej do globala jeśli chodzi o alchemie. Chce aby były ciągle potrzebne 2 takie same kamienie ,aby ulepszyć. Chciałbym też podnieść delikatnie szanse na ulepszenie . Może ma ktoś już taki gotowy sprawdzony  pliczek do podmiany? 
</p>
]]></description><guid isPermaLink="false">1685858</guid><pubDate>Fri, 06 Dec 2024 16:20:59 +0000</pubDate></item><item><title>Naprawa skryptu tabowanie</title><link>https://www.mpcforum.pl/topic/1682168-naprawa-skryptu-tabowanie/</link><description><![CDATA[<p>
	Moze mi ktos wytabować pls w konsoli wyskakuje bład cos o linijce 109
</p>

<p>
	 
</p>

<p>
	quest handelpostaciami3 begin
</p>

<p>
	    state start begin<br />
	        when 20012.take with item.vnum == 50001 begin<br />
	        local sockets = item.get_socket(0)<br />
	        if sockets == 0 then<br />
	            say_title("Uriel:")<br />
	            say("")<br />
	            say("Chcesz abym umiescil w tym pudelku")<br />
	            say("dusze czlowieka?")<br />
	            say("Nie jestem pewny czy to nie jest zakazane...")<br />
	            say("No, ale czemu by nie spróbowac.")<br />
	            say("")<br />
	            say_title("Pamietaj, ze mozesz umiescic tylko")<br />
	            say_title("postac która znajduje sie na TWOIM koncie!")<br />
	            say("")<br />
	        local s = select("Tak, spróbujmy", "Wole nie ryzykowac")<br />
	        if s == 2 then<br />
	            return<br />
	        else<br />
	            say_title("Uriel:")<br />
	            say("")<br />
	            say("Podaj nick postaci, która chcesz")<br />
	            say("umiescic w tym pudelku.")<br />
	            say("")<br />
	            say("")<br />
	            say_title("Pamietaj, ze mozesz umiescic tylko")<br />
	            say_title("postac która znajduje sie na TWOIM koncie!")<br />
	            say("")<br />
	            local i = input()<br />
	            local n = pc.get_name()<br />
	        if n == i then<br />
	            say_title("Uriel:")<br />
	            say("")<br />
	            say("Wybacz, ale nie możesz sprzedać postaci")<br />
	            say("której aktualnie używasz!")<br />
	            say("")<br />
	        elseif i == "" then<br />
	            say_title("Uriel:")<br />
	            say("")<br />
	            say("Imię postaci, które wpisałeś jest nie prawidłowe!")<br />
	            say("")<br />
	        else<br />
	            local p = query("SELECT account_id FROM player.player WHERE name = '"..n.."';")<br />
	            local s = query("SELECT account_id FROM player.player WHERE name = '"..i.."';")<br />
	            local x = query("SELECT id FROM player.player WHERE name = '"..i.."';")<br />
	        if p == s then<br />
	            local z = query("UPDATE player.player SET account_id = '0' WHERE name = '"..i.."';")<br />
	            local pid1u = query("UPDATE player.player_index SET pid1 = '0' WHERE pid1 = '"..x.."';")<br />
	            local pid2u = query("UPDATE player.player_index SET pid2 = '0' WHERE pid2 = '"..x.."';")<br />
	            local pid3u = query("UPDATE player.player_index SET pid3 = '0' WHERE pid3 = '"..x.."';")<br />
	            local pid4u = query("UPDATE player.player_index SET pid4 = '0' WHERE pid4 = '"..x.."';")<br />
	            item.set_socket(0, x)<br />
	                say_title("Uriel:")<br />
	                say("")<br />
	                say("Gracz zostal zapieczetowany!")<br />
	                say("")<br />
	                say_title("Aby zmiany weszły w życie, ")<br />
	                say_title("musisz wykonać pełny relog.")<br />
	                say_title("")<br />
	        else<br />
	                say_title("Uriel:")<br />
	                say("")<br />
	                say("Wybacz, ale nie mozesz handlować postacią,")<br />
	                say("która nie należy do Ciebie.")<br />
	                say("")<br />
	            end<br />
	        end<br />
	end<br />
	        elseif sockets != 0 then<br />
	                say_title("Uriel:")<br />
	                say("")<br />
	                say("Co to za pudełko?!")<br />
	                say("Wygląda na to, że w środku znajduje znajduje się ")<br />
	                say("dusza pewnej postaci...")<br />
	                say("Mogę ją dla Ciebie wyciągnąć, ale")<br />
	                say("nie jestem pewny czy to nie jest zakazane...")<br />
	                say("No, ale czemu by nie spróbowac.")<br />
	                say("")<br />
	                say_title("Pamietaj, ze MUSISZ posiadać na koncie")<br />
	                say_title("MAKSYMALNIE CZTERY postacie.")<br />
	                say("")<br />
	            local s = select("Tak, spróbujmy", "Wole nie ryzykowac")<br />
	        if s == 2 then<br />
	            return<br />
	        else<br />
	            local socket = item.get_socket(0)<br />
	            local o = tonumber(query("SELECT COUNT(ip) FROM player.player WHERE account_id = '"..pc.get_account_id().."' ;"))<br />
	            local beka = query("UPDATE player.player SET account_id = '"..pc.get_account_id().."' WHERE id = '"..socket.."';")<br />
	        if o == 1 then<br />
	            item.set_socket(0, 0)<br />
	            local pid2d = query("UPDATE player.player_index SET pid2 = '"..socket.."' WHERE pid2 = '0';")<br />
	        elseif o == 2 then<br />
	            item.set_socket(0, 0)<br />
	            local pid3d = query("UPDATE player.player_index SET pid3 = '"..socket.."' WHERE pid3 = '0';")<br />
	        elseif o == 3 then<br />
	            item.set_socket(0, 0)<br />
	            local pid4d = query("UPDATE player.player_index SET pid4 = '"..socket.."' WHERE pid4 = '0';")<br />
	        else<br />
	                say_title("Uriel:")<br />
	                say("")<br />
	                say("Wybacz, ale masz już na swoim koncie")<br />
	                say("cztery postacie. Dodanie nowej, nie jest możliwe.")<br />
	                say("")<br />
	            end<br />
	        end<br />
	        end<br />
	        end<br />
	    end
</p>
]]></description><guid isPermaLink="false">1682168</guid><pubDate>Mon, 17 Jul 2023 12:08:46 +0000</pubDate></item><item><title>quest nie dzia&#x142;a</title><link>https://www.mpcforum.pl/topic/1680454-quest-nie-dziala/</link><description><![CDATA[<p>
	

 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	
Cześć, jest ktoś w stanie pomóc bo cały czas wyskakują co róż to nowe błędy nie mogę sobie poradzić.
</p>
]]></description><guid isPermaLink="false">1680454</guid><pubDate>Mon, 19 Sep 2022 12:26:06 +0000</pubDate></item><item><title>Czas Zmiany Bon&#xF3;w 1-5 Problem</title><link>https://www.mpcforum.pl/topic/1679611-czas-zmiany-bonow-1-5-problem/</link><description><![CDATA[<p>
	Chcial bym zmienc czas bon z 10 min na 0, pliki serwerowe terenzo bez source.
</p>
]]></description><guid isPermaLink="false">1679611</guid><pubDate>Wed, 25 May 2022 21:07:37 +0000</pubDate></item><item><title>Poszukuj&#x119; -Metin2 Ultra Tool by JachuPL</title><link>https://www.mpcforum.pl/topic/1679523-poszukuje-metin2-ultra-tool-by-jachupl/</link><description><![CDATA[<p>
	Witam. 
</p>

<p>
	Małe pytanie czy może ktoś jeszcze ma programik Metin2 Ultra Tool by JachuPL ? 
</p>

<p>
	Jeżeli tak to czy byłaby możliwość udostępnienia go ? z góry dziękuję za pomoc
</p>

<p>
	Pozdrawiam 
</p>
]]></description><guid isPermaLink="false">1679523</guid><pubDate>Fri, 13 May 2022 10:37:28 +0000</pubDate></item><item><title>System sklep&#xF3;w offline</title><link>https://www.mpcforum.pl/topic/1606693-system-sklep%C3%B3w-offline/</link><description><![CDATA[<p>W związku z tym że w Polsce mamy spierdoliny umysłowe które opierdalają ludzi co miesiąc na kasę i mają się za "dev'ów" kupując wszystko od innych albo podpierdalając z innego serwera udostępniam wam MOJE sklepy offline z ostatnimi aktualizacjami, robię to ponieważ jak widzę takiego zjeba jakim jest Dekador &amp; spółka to aż mi go żal. </p>
<p>Nie wiem kto normalny umysłowo z IQ większym od zera płaci za coś 650zł by to pózniej udostępnić.</p>
<p>Dla wszystkich którzy kupili sklepy i są w porządku zostanie wam wysłana nowa wersja sklepów, odświeżona z większymi możliwościami i jeszcze lepszą optymalizacją za +- 2 tygodnie. </p>
<p>W nowych sklepach będą możliwe do włączenia m.in:</p>
<p>- wyszukiwarka</p>
<p>- zmiana modeli sklepów</p>
<p>- won'y i własna waluta</p>
<p> </p>
<p>Nie będę chujem i nie udostępnie wiecej rzeczy mimo że mógłbym (source,psd niektórych serwerów i same pliki) bo nie bawię się w takie rzeczy.</p>
<p>A jak kogoś boli dupsko z tego powodu że sklepy udostępniam to niech wyciągnie klin z dupy.</p>
<p> </p>
<div>Funkcje</div>
<div>- Gracz może otworzyć zwykly sklep jak i offline </div>
<div>- Dynamiczne ceny i czas otwarcia sklepu offline ustawiane w bazie</div>
<div>- Gracz może edytować sklep/nazwę sklepu bez konieczności stania obok sklepu</div>
<div>- Gracz może pobrać zarobione Yangi ze sklepu jak i go zamknąć bez konieczności stania obok sklepu</div>
<div>- Po otworzeniu sklepu nazwa zmieni kolor na niebieski (Zapamiętywanie przeglądnietych już sklepów)</div>
<div>- Po restarcie serwera bądź awarii (crashu) sklepy będą stały tam gdzie wcześniej</div>
<div>- Możliwość wyłączenia pokazywania nazw npc sklepów (Zmniejsza lagi przy większej ilości sklepów)</div>
<div>- Automatyczne zamykanie sklepu gdy gracz kupi ostatni przedmiot</div>
<div>- Zapisywanie cen przy tworzeniu sklepu</div>
<div>- Ustawienie widoczności nazw sklepów poprzez dystans w Opcjach Gry</div>
<div>- Sklepy offline mają własny kolor nazw jak i na minimapie</div>
<div>- Sklepy współpracują z usuniętym limitem Yang</div>
<div>- Sklepy współpracują z systemem szarf</div>
<div>- Sklepy są zabezpieczone przed wszelkimi próbami ataków</div>
<div>- System jest w pełni zoptymalizowany do jak najlepszej i jak najstabilniejszej pracy</div>
<div>- Sklepy są przetłumaczone na 3 języki: Polski,Angielski,Niemiecki,Rumuński</div>
<div> </div>
<div>Komendy:</div>
<div>/delete_shop &lt;rodzaj&gt; &lt;argument&gt; </div>
<div>Rodzaje:</div>
<div>shopid - Usuwanie sklepu po ID</div>
<div>player - Usuwanie wszystkich sklepów po nicku gracza</div>
<div>Przykłady:</div>
<div>/delete_shop player Best4ever</div>
<div>/delete_shop shopid 1</div>
<div>/update_shop &lt;ID sklepu&gt; - Przeładowanie itemów w sklepie jeśli je edytowałeś w bazie</div>
<div> </div>
<div>Nowe event flagi:</div>
<div>/e shop_max &lt;count&gt; - Maksymalna ilość sklepów na jednej postaci, domyślnie limit to 2 sklepy</div>
<div>/e shop_off 1 - Wyłączenie tworzenia sklepów w grze</div>
<div>/e shop_off 0 - Włączenie tworzenia sklepów w grze</div>
<div>/e shop_dist &lt;0 - 10000&gt; - Ustawienie dystansu w jakim ma pokazywać NPC sklepów, domyślnie system został wyłączony</div>
<div> </div>
<div>Skan:</div>
<div>


 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	

<p>Pobieranie:</p>
<p>

 
	
		<div class="ipsAreaBackground ipsPad_half ipsSpacer_bottom ipsType_center">
			<div class='ipsSpacer_bottom ipsSpacer_half'>To jest ukryta treść, proszę	</div>
			<ul class="ipsList_inline">
				<li>
					<a href='https://www.mpcforum.pl/login/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zaloguj się</a>
				</li>
				<li>lub</li>
				<li>
					<a href='https://www.mpcforum.pl/register/' class="ipsButton ipsButton_primary ipsButton_verySmall ipsPos_right" data-ipsDialog data-ipsDialog-size='medium'>Zarejestruj się</a>
				</li>
			</ul>		
		</div>	
	
</p>
</div>
<div> </div>
<div style="text-align:center;"><span style="color:#ff0000;">Jest to ostatnia ich wersja, zawiera wszystkie potrzebne poprawki.</span></div>
<div style="text-align:center;"><span style="color:#ff0000;">A jeśli znajdziecie dziurę o której wiem tylko ja to już wasza sprawa <img src="https://www.mpcforum.pl/uploads/emoticons/emotki_MPC_2015_buzka.png" alt=":)" srcset="https://www.mpcforum.pl/uploads/emoticons/smile@2x.png 2x" width="15" height="15"></span></div>
<div style="text-align:center;"><span style="color:#ff0000;">NIE POMAGAM Z INSTALACJA ANI NIE POMAGAM Z SKLEPAMI.</span></div>
<p> </p>
<p>ps. Jeszcze tutaj wrócę za niedługo robiąc syf w tym gownopolskich serwerach <img src="https://www.mpcforum.pl/uploads/emoticons/emotki_MPC_2015_buzka.png" alt=":)" srcset="https://www.mpcforum.pl/uploads/emoticons/smile@2x.png 2x" width="15" height="15"></p>
]]></description><guid isPermaLink="false">1606693</guid><pubDate>Wed, 08 Mar 2017 17:13:01 +0000</pubDate></item><item><title>Mysql no txt source</title><link>https://www.mpcforum.pl/topic/1325732-mysql-no-txt-source/</link><description><![CDATA[<p><strong>Witam użytkowników mpcforum dzisiaj mała wstawka mysql czytana bezpośrednio z bazy do dzieła! </strong></p>
<p> </p>
<p><b>Otwieramy plik: </b><span style="color:#00ff00;"><strong>ClientManagerBoot.cpp</strong></span></p>
<p> </p>
<p><span style="color:#ffff00;"><strong>Szukamy:</strong></span></p>
<pre class="ipsCode prettyprint">
bool CClientManager::InitializeMobTable()</pre>
<p><span style="color:#00ff00;"><strong>Zmieniamy całą funkcję:</strong></span></p>
<pre class="ipsCode prettyprint">
<a href="http://www.wklej.eu/index.php?id=b6cabba777" rel="external nofollow">http://www.wklej.eu/index.php?id=b6cabba777</a></pre>
<p><strong><span style="color:#ffff00;">Szukamy:</span></strong></p>
<pre class="ipsCode prettyprint">
bool CClientManager::InitializeItemTable()</pre>
<p><strong><span style="color:#00ff00;">Zmieniamy całą funkcję:</span></strong></p>
<pre class="ipsCode prettyprint">
<a href="http://www.wklej.eu/index.php?id=f030cabe3a" rel="external nofollow">http://www.wklej.eu/index.php?id=f030cabe3a</a></pre>
<p><span style="color:rgb(255,165,0);">                                                                                                               </span></p>
]]></description><guid isPermaLink="false">1325732</guid><pubDate>Sun, 30 Nov 2014 12:39:35 +0000</pubDate></item><item><title>Szaman Lecz&#x105;cy - zwinno&#x15B;&#x107;?</title><link>https://www.mpcforum.pl/topic/1675918-szaman-lecz%C4%85cy-zwinno%C5%9B%C4%87/</link><description><![CDATA[<p>
	Witam, po nadaniu sobie  buffa zwinność nie dostaje efektu pod nogami gdy się poruszam i tak samo w górnym lewym rogu nie dostaje informacji że posiadam taki buff na sobie.
</p>

<p>
	Co robić? <span><span class="ipsEmoji">😄</span></span>
</p>
]]></description><guid isPermaLink="false">1675918</guid><pubDate>Wed, 28 Apr 2021 10:17:31 +0000</pubDate></item><item><title>quest na hp</title><link>https://www.mpcforum.pl/topic/1675343-quest-na-hp/</link><description><![CDATA[<p>
	Witam,
</p>

<p>
	 
</p>

<p>
	Generalnie nie siedzę na co dzień w questach więc moja prośba o pomoc.
</p>

<p>
	Czy byłby w stanie ktoś mi ogarnąć questa dodającego określoną ilość HP każdemu graczowi?
</p>
]]></description><guid isPermaLink="false">1675343</guid><pubDate>Wed, 31 Mar 2021 16:17:35 +0000</pubDate></item><item><title>Problem w que&#x15B;cie z czytania medali konnych</title><link>https://www.mpcforum.pl/topic/1670184-problem-w-que%C5%9Bcie-z-czytania-medali-konnych/</link><description><![CDATA[<p>
	Hejka. Jestem w tym totalnie nowy i zielony  konstruktywny hejt przyjmuję na klatę i proszę o pomoc. Mianowicie to mój 1 quest więc zapewne wiele w nim jest do poprawy. Lecimy z tematem. Możliweość szkolenia konia tylko w określonych warunkach do poziomu 10 expimy zawsze bez zbędnych ograniczeń, następny etap to poziomy 11-20 minimalny poziom postaci to  30 i ostatni etap to militar - jedynie od poziomu 50 ,
</p>

<p>
	W kodzie niby wszystko działa ale jest problem. Po osiągnięciu przez konia poziomu 21 nie można dalej szkolić.  Nie wyświetla się żaden komunikat a po kliknięciu na medal nic się nie dzieje. Nie mam zielonego pojęcia gdzie tu jest błąd. 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted">
<span class="pln">quest medal begin
    state start begin
        when 50050.use begin
            if horse.get_level()&lt;=9 then
                local pass_percent=60
                local s=number(1,100)
                    if s&lt;=pass_percent then
                        chat("Gratulacje, szkolenie przebiegło pomyślnie ")
                        horse.advance()
                        pc.remove_item(50050, 1)
                    else
                        chat("Nie tym razem ziemczku..... ")
                        pc.remove_item(50050, 1)
                    end
            elseif horse.get_level()&gt;=10 and pc.get_level()&lt;=29 then
                chat("do roboty leniu, musisz wbić 30 lvl aby szkolic konia na wyższy poziom ")
                say("Jesteś jeszcze zbyt cienki na bojowca ")
           
            elseif horse.get_level()==10 and pc.get_level()&gt;=30 then                                                
                local pass_percent=30
                local s=number(1,100)
                    if s&lt;=pass_percent then
                        chat("Gratulacje, szkolenie przebiegło pomyślnie ")
                        say("Jesteś jebanym kozakiem masz bojowca i możesz z niego napierdalać ")
                        horse.advance()
                        horse.unsummon()
                        horse.summon()
                        pc.give_item2(50052)
                        pc.remove_item(50050, 1)
                    else
                        chat("Nie tym razem ziemczku..... ")
                        pc.remove_item(50050, 1)
                    end
            elseif horse.get_level()&gt;=11 and horse.get_level()&lt;=19 and pc.get_level()&gt;=30 then      
                local pass_percent=30
                local s=number(1,100)
                    if s&lt;=pass_percent then
                        chat("Gratulacje, szkolenie przebiegło pomyślnie ")
                        horse.advance()
                        pc.remove_item(50050, 1)
                    else
                        chat("Nie tym razem ziemczku..... ")
                        pc.remove_item(50050, 1)
                    end
            elseif horse.get_level()&gt;=19 and pc.get_level()&lt;=49 then
                chat("do roboty leniu, musisz wbić 50 lvl aby szkolic konia na wyższy poziom ")
                say("Jesteś jeszcze zbyt cienki na militara ")
            elseif horse.get_level()==20 and pc.get_level()&gt;49 then
                local pass_percent=10
                local s=number(1,100)
                    if s&lt;=pass_percent then
                        chat("Gratulacje, szkolenie przebiegło pomyślnie ")
                        say("Jesteś jebanym kozakiem masz militara i możesz używać skili konia ")
                        horse.advance()
                        horse.unsummon()
                        horse.summon()
                        pc.give_item2(50053)
                        pc.remove_item(50052, 1)
                        pc.remove_item(50050, 1)
                    else
                        chat("Nie tym razem ziemczku..... ")
                        pc.remove_item(50050, 1)
                    end
            elseif horse.get_level()&gt;=21 and horse.get_level()&lt;=29 and pc.get_level&gt;=50 then
                local pass_percent=10
                local s=number(1,100)
                    if s&lt;=pass_percent then
                    chat("Gratulacje, szkolenie przebiegło pomyślnie ")
                        horse.set_level(horse.get_level()+1)
                        pc.remove_item(50050, 1)
                    else
                        chat("Nie tym razem ziemczku..... ")
                        pc.remove_item(50050, 1)
                    end
            elseif horse.get_level==30 then
                    say("Osiągnięto maksymalny poziom konia ")
                end
            end
        end
    end</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1670184</guid><pubDate>Sun, 19 Jul 2020 22:15:30 +0000</pubDate></item><item><title>C++ Questowa funkcja pc.get_exp_data()</title><link>https://www.mpcforum.pl/topic/1392097-c-questowa-funkcja-pcget_exp_data/</link><description><![CDATA[<div><strong><span style="color:#ff0000;">Przedstawienie działania oraz kilka słów wyjaśnienia</span></strong></div>
<br><div> </div>
<br><div>
<p>
</p>
<div class="ipsEmbeddedVideo"><div><iframe width="480" height="270" src="https://www.youtube.com/embed/RbhBA1Ko4x8?feature=oembed" frameborder="0" allowfullscreen="true"></iframe></div></div>
</div>
<br><div> </div>
<br><div>Jak możesz zobaczyć na filmiku funkcja przechowuje ilość expa, którą otrzymałeś za ostatnio zabitego moba.</div>
<br><div>Zmienna jest resetowana podczas każdego wejścia do gry (wliczamy w to teleportację).</div>
<br><div> </div>
<br><div><strong>##### HowTo #####</strong></div>
<br><div>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents"><p></p></div>
<br><div>
<strong>########</strong> Otwórz <strong>char.h</strong> i wklej to do publicznej klasy <strong>########</strong>
</div>
<br><div>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents"><p></p></div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
int    GivenExpData;<br>
int    GetExpData() const {return GivenExpData;}</pre>
<br>
</div>
<br><div></div>
</div>
<p></p>
</div>
<br><div> </div>
<br><div>
<strong>########</strong> Otwórz <strong>char.cpp</strong> i wyszukaj <strong>########</strong>
</div>
<br><div>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents"><p></p></div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
void CHARACTER::Initialize()</pre>
<br>
</div>
<br><div>Gdzieś w środku dodaj</div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
GivenExpData = 0;</pre>
<br>
</div>
<br><div></div>
</div>
<p></p>
</div>
<br><div> </div>
<br><div>
<strong>########</strong> Otwórz <strong>char_battle.cpp</strong> i wyszukaj <strong>########</strong>
</div>
<br><div>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents"><p></p></div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
to-&gt;PointChange(POINT_EXP, iExp, true);</pre>
<br>
</div>
<br><div> </div>
<br><div>Wklej do nowej linii</div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
to-&gt;GivenExpData = iExp;</pre>
<br>
</div>
<br><div></div>
</div>
<p></p>
</div>
<br><div> </div>
<br><div>
<strong>########</strong> Otwórz <strong>questlua_pc.cpp</strong> i dodaj <strong>########</strong>
</div>
<br><div>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents"><p></p></div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
int pc_get_exp_data(lua_State * L)<br>
{<br>
    lua_pushnumber(L, CQuestManager::instance().GetCurrentCharacterPtr()-&gt;GetExpData());<br>
    return 1;<br>
}</pre>
<br>
</div>
<br><div> </div>
<br><div>Gdzieś na końcu <strong>RegisterPCFunctionTable</strong> dodaj</div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
{"get_exp_data", pc_get_exp_data},</pre>
<br>
</div>
<br><div></div>
</div>
<p></p>
</div>
<br><div> </div>
<br><div>
<strong>########</strong> <span style="color:#ff0000;"><strong>Przykładowy Quest</strong></span> <strong>########</strong>
</div>
<br><div>(zauważ, że wersja różni się od tej pokazanej na filmiku)</div>
<br><div>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents"><p></p></div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
quest exp begin<br>
state start begin<br>
    when kill with !npc.is_pc() begin<br>
        chat(pc.get_exp_data().." EXP "..mob_name(npc.get_race()))<br>
    end<br>
end<br>
end</pre>
<br>
</div>
<br><div> </div>
<br><div>Przykład wiadomości wyświetlonej po zabiciu moba</div>
<br><div>
<br><pre class="ipsCode prettyprint lang-auto"><br>
999 EXP Wild Dog</pre>
<br>
</div>
<br><div></div>
</div>
<p> </p>
</div>
</div>
<p></p>
</div>
<br>
]]></description><guid isPermaLink="false">1392097</guid><pubDate>Sun, 29 Mar 2015 04:11:05 +0000</pubDate></item><item><title>Prze&#x142;&#x105;cznik bazy na TXT lub SQL</title><link>https://www.mpcforum.pl/topic/1652904-prze%C5%82%C4%85cznik-bazy-na-txt-lub-sql/</link><description><![CDATA[<p style="text-align:center;">
	<a href="https://pastebin.com/raw/fZ3uhi0v" rel="external nofollow">ELO HERE 123</a> &lt;-- Tak, tutaj jest link, lol.
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="color:#2ecc71;">Wiem, że to jest ch**owe, i można się pośmiać, ale ważne, że działa.</span>
</p>

<p style="text-align:center;">
	<span style="color:#f39c12;">A na pewno za darmo nie dałbym świetnego, bardzo ogarniętego przełącznika.</span>
</p>

<p style="text-align:center;">
	<span style="color:#f39c12;">Tak, każdy głupi by sobie to zrobił, ale jakoś tutaj chyba nie widziałem, nawet takiego.</span>
</p>
]]></description><guid isPermaLink="false">1652904</guid><pubDate>Mon, 31 Dec 2018 20:25:33 +0000</pubDate></item><item><title>FIX - usuwanie postaci na ka&#x17C;dych plikach serwerowych</title><link>https://www.mpcforum.pl/topic/1595480-fix-usuwanie-postaci-na-ka%C5%BCdych-plikach-serwerowych/</link><description><![CDATA[<p style="text-align:center;"><span style="font-size:14px;"><span style="font-family:georgia, serif;">Witajcie!</span></span></p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><span style="font-size:14px;"><span style="font-family:georgia, serif;">Dziś przeglądając forum, zauważyłem nietypowy sposób niby fixa na usuwanie postaci napisanego przez Bazyliszka więc postanowiłem stworzyć kompletny i w pełni działający fix na usuwanie postaci.</span></span></p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><span style="font-size:14px;"><span style="font-family:georgia, serif;">Bez zbędnego owijania w bawełnę:</span></span></p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><strong><span style="font-family:georgia, serif;"><span style="font-size:18px;">[METODA TRADYCYJNA]</span></span></strong></p>
<p style="text-align:center;"><span style="font-size:14px;"><span style="font-family:georgia, serif;">Otwieramy plik <u><strong>conf.txt</strong></u>, który znajduje się w większości plikach w folderze db.</span></span></p>
<p style="text-align:center;"><span style="font-size:14px;"><span style="font-family:georgia, serif;">Mamy linijkę:</span></span></p>
<pre class="ipsCode prettyprint">
PLAYER_DELETE_LEVEL_LIMIT = 1
</pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Więc jeśli chcemy usuwać postacie do 100lv włącznie, to wpis będzie następujący:</span><br> </p>
<pre class="ipsCode prettyprint">
PLAYER_DELETE_LEVEL_LIMIT = 101</pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Nie zapomnijmy o bazie jeszcze...</span></p>
<p style="text-align:center;"><span style="font-family:georgia, serif;">mamy w bazie w player tabelę o nazwie:</span></p>
<pre class="ipsCode prettyprint">
player_deleted
</pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">I usuńmy tą tabele player_deleted, dla wszelkiego działania i proszę skopiować tabelę o nazwie:</span></p>
<pre class="ipsCode prettyprint">
player
</pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Utworzy się naszym oczom tabela o nazwie:</span></p>
<pre class="ipsCode prettyprint">
player_copy </pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Więc zmieniamy nazwę z player_copy na:</span></p>
<pre class="ipsCode prettyprint">
player_deleted </pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">I oczywiście jeszcze trzeba zrobić Truncate tabeli player_deleted metodą przez navicata albo metodą przez navicata w konsoli(F6) wpisując:</span></p>
<pre class="ipsCode prettyprint">
truncate table player.player_deleted; </pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">I oczywiście po tych czynnościach zamykamy db wraz z game i od nowa odpalamy serwa.</span></p>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Od tej pory możemy usuwać postacie nie większe niż 101lv.</span></p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><strong><span style="font-size:18px;"><span style="font-family:georgia, serif;">[METODA SOURCE]</span></span></strong></p>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Dla tych którzy nie mają takiego wpisu, mają source i zechcą to na source ograniczyć to jeśli się nie mylę to ograniczenie możemy ustalić w pliku:</span></p>
<pre class="ipsCode prettyprint">
ClientManagerPlayer.cpp
</pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Szukamy frazę:</span></p>
<pre class="ipsCode prettyprint">
int deletedLevelLimit = 0;
</pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">I zmieniamy na np.:</span></p>
<pre class="ipsCode prettyprint">
int deletedLevelLimit = 101;
</pre>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Kompilujemy db i od tej pory limit powinien wynosić 100lv w usuwaniu postaci.</span></p>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Oczywiście nie zapomnijmy o skopiowaniu tabeli player i zmiany nazwy player_copy na player_deleted oraz wyczyszczenie tabeli player_deleted.</span></p>
<p style="text-align:center;">Nie testowałem na source, bo ja tam wolę pierwszy sposób <img src="https://www.mpcforum.pl/uploads/emoticons/emotki_MPC_2015_;D.png" alt=":D" srcset="https://www.mpcforum.pl/uploads/emoticons/biggrin@2x.png 2x" width="15" height="15"> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;">Dla sprostowania, wiem że temat bazyliszka jest:</p>
<p style="text-align:center;"><span style="font-family:georgia, serif;"><a href="https://www.mpcforum.pl/topic/1588417-fix-na-usuwanie-postaci" rel="">http://www.mpcforum.pl/topic/1588417-fix-na-usuwanie-postaci</a></span></p>
<p style="text-align:center;"><span style="font-family:georgia, serif;">Lecz niestety ma błędne myślenie i nie wnosi żadnych rezultatów.</span></p>
<p style="text-align:center;">Pierwsza metoda sprawdzona dzisiaj.</p>
<p> </p>
]]></description><guid isPermaLink="false">1595480</guid><pubDate>Tue, 03 Jan 2017 02:30:00 +0000</pubDate></item><item><title>Quest na lvl po wej&#x15B;ciu na serwer</title><link>https://www.mpcforum.pl/topic/1668695-quest-na-lvl-po-wej%C5%9Bciu-na-serwer/</link><description><![CDATA[<p>
	hejka jestem w tym temacie naprawdę zielony potrzebuje quest który po wejściu gracza na serwer jeżeli nie ma max poziomu to otrzymuje go, coś na zasadzie serwerów pvp kiedy otrzymują max lvl nawet w misjach w panelu bocznych by mogło to być jak np odbierz lvl.
</p>

<p>
	<em>dziękuje za pomoc</em>
</p>
]]></description><guid isPermaLink="false">1668695</guid><pubDate>Sat, 23 May 2020 13:05:12 +0000</pubDate></item></channel></rss>
