C++ programozás kezdő fokon! ( m )

Indította Noradice, 2011-10-13, 00:22:42

2011-10-13, 00:22:42 Utolsó szerkesztés: 2012-07-23, 19:39:27 Szerző: [MOD]Niix
Sziasztok! Ha készen álltok kezdjünk is bele!

Tudnivalók:
Nos ebben a témában szeretnék mindenkit egy kicsit közelebb hozni a programozási nyelvekhez és ha más nem egy picit jártassá tenni benne. Mielőtt elkezditek olvasni még azt hozzátenném hogy MINIMUM egy alapfokú angol tudás nélkül neki se álljatok! Ajánlott: Középfok.

Melyik nyelvet használjam?
Nos, sokan azt mondják hogy a legjobb programozási nyelv a C++. Ez igaz is és szinte mindent meg lehet vele oldani, de ez nekünk még nem kell ugyanis csak kisebb GM segítséget szolgáló botok, illetve hirdető botokat hozunk létre ezzel a parancsokkal..
Ezek a pontok létrehozására a legegyszerűbb nyelv az az úgynevezett AutoIT v3 (szerintem).
Link: http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe

Egyéb tanácsok/mondanivaló használat előtt:
Miután letöltötted, telepítsd fel a programot!

Ajánlott programok: Visual C++ 2008 Link: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=29
(Ennek viszonylag egyszerű a kezelése, és barátságosabb mint a Dev C++ vagy ennek az előbbi verziói.)

Előmunkálatok:
  1) Először is létre kell hozni egy fájlt amibe írjuk magát a kódot:
jobb egér klikk az asztalon -> Új -> AutoIT v3 Script
  2) Ezt fájlt nevezd át kedved szerint majd nyisd meg (jobb klikk rajta és Edit Script)
  3) Ez gyakorlatilag a főmenü - majdnem ugyan az mint a Notepad :)
  4) Legjobb társad programozáskor a HELP rész. Az F1-el hívhatod elő. Ide minden le van írva. Minden egyes parancs és annak pontos használata! Ha valamit nem tudsz akkor nyisd meg a Tárgymutató-t és keress rá a parancsra.

2) KIEGÉSZÍTÉS! Ha nem jelenne meg az Edit Script menü, akkor társítsad a Visual C++-al! Alapértelmezett helye ha nem találnád a programlistában: C:\Program Files\Visual C++ 2008\Common7\IDE\VCExpress.exe

Maga a kód/programozás:
Nos az alapokat bemutatom:

------------------------------------------------------------------------------------------------------------------------------------

MsgBoX()
A program elejére általában szokott lenni egy ablak ami mutatja hogy ki hozta létre a programot és hogy hogyan kell használni. Ezt az msgbox paranccsal tehetjük meg.

Használata:
msgbox(0, "ide megy a cím", "Ide bármilyen szöveg")
a "0" helyére írhatsz mást is, de ha érdekel hogy mit akkor olvasd el a HELP menüben.

Kiegészítés:
Írhatsz akár több sorba is ha így csinálod a szöveg részt:  .... "ez az első sor" & @CRLF & "második sor" & @CRLF & "harmadik sor" ....

Run()
Ezzel a paranccsal elindíthatsz egy megadott programot valahonnan. Csak EXE, BAT, COM, vagy PIF formátumú fájlokat lehet vele futtatni!

Használata:
Run("C:\ezaz.exe")

Kiegészítés:
Lehet programot indítani abból a mappából ahol ez az exe van elindítva a következő paranccsal:
Run(@ScriptDir & "\progineve.exe")

ProcessExists()
Ezzel a paranccsal megnézheted hogy egy megadott program fut-e és akár azt is megoldhatod hogy NE fusson a programod tovább addig amíg a felhasználó el nem indítja az exe-t.

Használata:
ProcessExists("fájl_neve.exe")

És most megmutatom hogy hogyan is használd élőben ugyanis ha csak szimplán odaírod ahogy az előbb volt azzal sokra nem mész.
Először is tudni kell hogy a ProcessExists-nek van egy értéke. Az ami az éppen megadott exe fájl egyedi ID száma (ez mindig változó).

Tehát:
If ProcessExists("explorer.exe") > 0 Then
   ide felsorolsz pár funkciót hogy mit csináljon a program az exe megjelenése után.
   és utána befejezed így:
EndIF

Most egy valódi példa ami működik is:
Kód:


If ProcessExists("Explorer.exe") = 0 Then
  msgbox(32, "Test", "Elég nagy gond van a gépeddel :D")
EndIF

While, WEnd és ExitLoop
Ezzel a paranccsal pár megadott parancsot ismételhetünk végtelenszer. Vigyázat mert ha ezt használod akkor a program NEM fogja lefuttatni az ezután következő parancsokat kivéve ha megtöröd a "Loop"-ot. Az ExitLoop-al pedig bármikor megtörhetjük ezt az effektust

Használata:
While 1
  Parancs 1
  Parancs 2
  Parancs 3
  Parancs n+1
WEnd

Kiegészítés (Az ExitLoop parancs):
Megteheted azt is hogy addig ismételed azt amit akarsz amíg egy bizonyos dolog be nem következik, majd miután ez bekövetkezett a program folytatja a többi paranccsal. Példa:
Kód:
While 1
  $game = ProcessExists("metin2.exe")
  If $game > 0 then ExitLoop
WEnd

Parancs 1
Parancs 2
...

Ezáltal addig vár a program és nézi a futó exe-ket amíg nem találja meg a Metin2-őt. Ha megvan akkor folytatja a parancs1 és 2-vel.

HotKeySet()
Ezzel a funkcióval akár kilépés gombot is tehetünk a programunkba vagy csak szimplán egy bizonyos gomblenyomáshoz rendelhetjük egy funkció elindulását. Ha a billentyű neve több betűből áll például ENTER akkor így kel írni: {ENTER}. Ha a billenytből több van pl Ctrl akkor így használd: {LCtrl} -> Left Ctrl vagy {RCtrl} -> Right Ctlr.
VIGYÁZAT: A hotkey csak addig él amíg a program fut. Ez nem tartja a programot futva ezért ha CSAK Hotkeyből áll a programunk akkor ezt be kell szúrni az utolsó HotkeySet után:
Kód:
While 1
Sleep(250)
WEnd

Használata:
HotkeySet("a billentyű neve", "Hozzá rendelt funkció neve -mind1 mi a név-")
Ezáltal felállítottál egy hotkeyt. Most hozzá kell csatolni egy jelentést így:
Func Hozzá rendelt funkció neve -mind1 mi a név-()
Akkor ez történik
És ez is
stb
amit ide beállítasz az fog történni a hotkey lenyomásakor
végül lezárod így:
EndFunc

Példa Program:
Ez egy Pickup Bot:
Kód:
msgbox(0, "PickUpBot", "  Created by [Noradice]™" & @CRLF & " " & @CRLF & "Press 'Num0' for start and 'Num5' for End")

HotKeySet("{numpad5}", "Terminate")
HotKeySet("{numpad0}", "ShowMe")

While 1
   Sleep(100)
WEnd

Func Terminate()
   Exit 0
EndFunc

Func ShowMe()
While 1
   Send("0")
   Sleep(100)
WEnd
EndFunc

Ui.: a Send és a Sleep funkció most következik.

Sleep()
Ezzel a paranccsal meg tudod állítani a programot egy megadott időre. Ez ms-ban számolja.
1sec = 1000ms
1min = 60000ms
1ms = 0,001s

Használat:
Sleep(idő)

Példa:
Msgbox(0, "Test", "OK lenyomása után egy újabb üzenet meg fog jelenni 5mp múlva!")
Sleep(5000)
msgbox(0, "Test", "Én megmondtam! :D")

Send()
Ezzel a funkcióval bizonyos gombokat nyom le a programod anélkül hogy a felhasználónak bármit is kellene csinálnia.

Használata:
Send("gomb neve")

pl.:
Kód:
Run("notepad.exe")
Sleep(1000)
Send("hello{ENTER}második vonal{ENTER}{CAPSLOCK}nagybetűk{CAPSLOCK}{ENTER}kisbetűkkel")
Send("{LALT}{enter}{down}{down}{down}{down}{down}{down}")
Sleep(500)
Send("{ENTER}")

MouseClick()
Ezzel pedig szimplán előre megadott koordinátákra kattint az egered. A sebesség értéke 0 és 100 között van. 0=azonnal 100=lassan mozgatja

Használata:
MouseClick("Left vagy Right", x koordináta, y koordináta, hányszor katintson, sebesség)

Kiegészítés:
Van egy parancs amivel meg tudod azonnal a képernyő hosszát vagy szélességét bármilyen legyen a képernyő beállítása. Ez pedig a következő:
@DesktopHeight
@DesktopWidth

Példa:
Kód:
MouseClick("left", 0, @DesktopHeight, 1, 0, 0)
Ezzel a Start menüdre kattint bármilyen is a felbontásod 

InetGet()
Ezzel le tudsz tölteni egy megadott fájlt.
InetGet("forrás oldal", "C:\Idetöltsele.txt, 1, 0)

Gyakorlatban:
Kód:
InetGet("http://metin2hungary.net", @ScriptDir & /index.php", 1, 0)
msgbox(64, "Download", "Letöltés befejezve!")
Ezáltal a fórum fő oldalát tölti le a Script mappájába. Az 1 és 0-t azt ajánlom hagyd úgy, ha érdekel hogy mi az akkor nézd meg a Help-et.

BlockInput()
Ezzel meg tudod akadályozni hogy a Felhasználó belepiszkáljon a bot-ba ha az éppen működik. Letiltja az egeret és a billentyűzetet. Ezt érdemes beállítani úgy, hogy miután befejezte a folyamatot, akkor kapcsolja vissza az egeret és a billentyűzetet is.

Használata:
BlockInput(1) = Bill. + egér letiltása
BlockInput(0) = Bill. + egér engedélyzése

Kiegészítés:
Hiába van letiltva a billentyűzet, a felhasználó a Ctrl+Alt+Del lenyomásával ezt meg tudja törni ha esetleg elszúrnád a feloldás részét!

------------------------------------------------------------------------------------------------------------------------------------

Mindezek tudatában egy egyszerű bot-ot te is össze tudsz állítani! Pl.:
Több gombal rendelkező exe-t álítassz össze, amiben szerepelnek tegyük fel: /i 19 /i 29 /i 39 vagy /setskill 1 /setskill 2 /setskill 3 bla-bla-bla

Ezek csak példák, csak legyetek szívesek tisztességes célokra használjátok, ne pedig arra hogy károkat okozzatok a másiknak!

Ha nem sikerülne, írd le nekem privát üzenetben a kódot amit írtál, és hogy milyen végkifejletet szeretnél, és én vissza küldöm kis idő után a forráskódot kijavítva.

Köszönetek jöhetnek PM-ben!