03 August, 2013

[ Tutorial ] Membuat Trainer, Cheat Engine 6.3

Gambar 1. Kegunaan Trainer ( Mengatur Value Ke Nilai Tertentu ).

Gambar 2. Kegunaan Trainer ( Lock Value ).

Gambar 3. ( Mengatur Value Ke Nilai 200 ). Ketika Menekan F10. *[ Value bisa di atur sesuai keinginan pembuat trainer. ]
Oke, Itu Spoiler dan Fungsi Trainer. Sekarang Cara Membuatnya. Ikuti Langkah-langkah pada gambar.

Gambar 4. File > Generate generic trainer lua script from table.



 - Klik, File > Generate generic trainer lua script from table.
* Pastikan Process game.
* Pastikan address speed sudah di dalam tabel. 

Gambar 5.
 - 1 dan 2 adalah bersifat opsional, boleh di ubah, boleh juga dibiarkan saja seperti yg sudah tampil.
*1. untuk mengubah Judul Trainer yg akan kita buat.
*2. untuk mengubah dekripsi pada About. yang pengen narsis bisa aja di ganti. "Trainer ini dibuat oleh UDIN GALAU"

- 3. Klik Add Hotkey. Untuk melanjutkan.

Gambar 6.
 - muncul jendela Cheat Entries.
- jika address pada tabel pertama lebih dari 1 maka akan muncul beberapa address.
* biasanya bernama "No Description" jadi sebaiknya dilihat lagi urutan address yg akan dipilih.
- setelah yakin dangan addressnya, klik OK. step 4.


Gambar 7.
 - 5.1 Tentukan Hotkey yg akan di gunakan, disini saya menggunakan F10, F11, dan F12. untuk tiap" perintah nantinya.
* Pertama saya menggunakan F12, untuk mengunci value.
- 6.1 Pilih Toggle Freeze.
- 7.1 Isi Dengan Kegunaan. disni saya mengisi Kunci. ( ini akan tampil pada trainer nantinya ).
- 8.1 Klik Apply, Dan selanjutnya > OK.

* Belum Selesai, Klik lagi Add Hotkey. jendela Cheat Entries akan muncul lagi. Klik OK.
- 5.2 Hotkey Selanjutnya adalah F11,
- 6.2 Pilih Set Value To.
* Isi Kotak dibawah 6.2 tadi dengan Value yg diinginkan. Contoh 200.
- 7.2 Ini akan saya isi dengan Speed 200.
- 8.2 Klik Apply, dan selanjutny > OK.

* Ulangi lagi jika ingin Menambahkan Value yg berbeda.
- Klik lagi Add Hotkey. jendela Cheat Entries akan muncul lagi. Klik OK.
- 5.3 Hotkey Selanjutnya adalah F10,
- 6.3 Pilih Set Value To.
* Isi Kotak dibawah 6.3 tadi dengan Value yg diinginkan. Contoh 180.
- 7.3 Ini akan saya isi dengan Speed 180.
- 8.3 Klik Apply, dan selanjutny > OK.


Gambar 8.
 * Kira-kira seperti ini lah tampilannya setelah melakukan langkah-langkah diatas.
- Langkah Selanjutnya Klik Generate trainer [ 10 ].

Gambar 9.
- Pilih Tiny. [ 11 ].
- Klik Generate [ 12 ].
- Beri Nama File tadi sesuai selera. contoh : TrainerAO.exe
* Pilih Folder penyimpanan yg mudah di temukan.

Sekian dan terima kasih, semoga bermanfaat.

03 July, 2013

Mouse wheel behaves strangely with dbgrids ( pindah record pake scroll mouse )

this code handler will correct this behavior.

Paste code dibawah ini pada public declaration :
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);

Paste code dibawah ini dibawah impelentasi : ( TForm1 Sesuaikan dengan nama form kerja contoh : TMenu_Utama )

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
var
a: Smallint;
begin
if Msg.message = WM_MOUSEWHEEL then
begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
a := HiWord(Msg.wParam);
if a > 0 then
Msg.wParam := VK_UP else
Msg.wParam := VK_DOWN;
Handled := False;
end;
end;


View Unit ( CTRL + F12 ). dan pilih project1 (sesuaikan dengan nama projek )
Paste code berikut

Application.OnMessage :=Form13.AppMessage;
Application.Run; // ini sudah ada pada coding. yg dipaste hanya 1 baris diatas.

original http://delphi.about.com/cs/adptips2002/a/bltip1102_3.htm


Just drop a TApplicationEvents ("Additional" tab on the Component Palette) component on a form and handle it's OnMessage event as:
~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.ApplicationEvents1Message
   (var Msg: TMsg; var Handled: Boolean) ;
var
   i: SmallInt;
begin
   if Msg.message = WM_MOUSEWHEEL then
   begin
     Msg.message := WM_KEYDOWN;
     Msg.lParam := 0;
     i := HiWord(Msg.wParam) ;
     if i > 0 then
       Msg.wParam := VK_UP
     else
       Msg.wParam := VK_DOWN;

     Handled := False;
   end;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~

Note: This fixes the mouse wheel behavior not only for DBGrid-s but for all other list component (TListBox, TListView, etc).

27 May, 2013

Kalkulator Waktu

Karena saya agak lama kalau menghitung jam. jadi saya buat ni program buat ngitung waktu.
dalam kasus saya kesulitan untuk mengetahui delay Dungeon Guild, Dungeon Nation. atau Individual Dungeon dalam game AO. 40jam kedepan jam brp ya ?

atau yg pengen ngitung waktu penuhnya energi di game facebook. hehehe

3 menit 1 energy, atau 5 menit 1 energy dan lain sebagainya.
contohnya energy yg tersisa 1/110 energy. untuk 1 energy butuh 3 menit.
jadi perkiraan penuhnya energy ( 110 - 1 = 109 energy yg ditunggu ).
109 energy di kalikan 3 menit = 327 menit. nah lho jam brp itu 327 menit kedepan ? bingung kan hahaha.
dengan menggunakan kalkulator ini diharapkan pengguna bisa langsung mengetahui hasil nya :)

nah liat gambar 327 menit kedepan adalah jam 9 pagi. 

Enak kan ? langsung disedot aja Download

03 May, 2013

IF sederhana

buatlah form seperti gambar brikut : 

pada button1 klik 2x dan isi perintah berikut : 

22 April, 2013

FormatDateTime pemrograman Delphi

ini sekedar catatan saya jika lupa syntax hehe...

Example code : Showing all of the date field formatting data types
var
  myDate : TDateTime;

begin
  // Set up our TDateTime variable with a full date and time :
  // 5th of June 2000 at 01:02:03.004  (.004 milli-seconds)
  myDate := EncodeDateTime(2000, 6, 5, 1, 2, 3, 4);

  // Date only - numeric values with no leading zeroes (except year)
  ShowMessage('              d/m/y = '+
              FormatDateTime('d/m/y', myDate));

  // Date only - numeric values with leading zeroes
  ShowMessage('           dd/mm/yy = '+
              FormatDateTime('dd/mm/yy', myDate));

  // Use short names for the day, month, and add freeform text ('of')
  ShowMessage('  ddd d of mmm yyyy = '+
              FormatDateTime('ddd d of mmm yyyy', myDate));

  // Use long names for the day and month
  ShowMessage('dddd d of mmmm yyyy = '+
              FormatDateTime('dddd d of mmmm yyyy', myDate));

  // Use the ShortDateFormat settings only
  ShowMessage('              ddddd = '+
              FormatDateTime('ddddd', myDate));

  // Use the LongDateFormat settings only
  ShowMessage('             dddddd = '+
              FormatDateTime('dddddd', myDate));

  // Use the ShortDateFormat + LongTimeFormat settings
  ShowMessage('                  c = '+
              FormatDateTime('c', myDate));
end;
Show full unit code
                 d/m/y = 5/6/00
              dd/mm/yy = 05/06/00
     ddd d of mmm yyyy = Mon 5 of Jun 2000
   dddd d of mmmm yyyy = Monday 5 of June 2000
                 ddddd = 05/06/2000
                dddddd = 05 June 2000
                     c = 05/06/2000 01:02:03
 
Example code : Showing all of the time field formatting data types
var
  myDate : TDateTime;

begin
  // Set up our TDateTime variable with a full date and time :
  // 5th of June 2000 at 01:02:03.004  (.004 milli-seconds)
  myDate := EncodeDateTime(2000, 6, 5, 1, 2, 3, 4);

  // Time only - numeric values with no leading zeroes
  ShowMessage('     h:n:s.z = '+FormatDateTime('h:n:s.z', myDate));

  // Time only - numeric values with leading zeroes
  ShowMessage('hh:nn:ss.zzz = '+FormatDateTime('hh:nn:ss.zzz', myDate));

  // Use the ShortTimeFormat settings only
  ShowMessage('           t = '+FormatDateTime('t', myDate));

  // Use the LongTimeFormat settings only
  ShowMessage('          tt = '+FormatDateTime('tt', myDate));

  // Use the ShortDateFormat + LongTimeFormat settings
  ShowMessage('           c = '+FormatDateTime('c', myDate));
end;
Show full unit code
        h:m:s.z = 1:2:3.4
   hh:mm:ss.zzz = 01:02:03.004
              t = 01:02
             tt = 01:02:03
              c = 05/06/2000 01:02:03
 
Example code : Showing the effect of local date format settings
var
  myDate : TDateTime;

begin
  // Set up our TDateTime variable with a full date and time :
  // 5th of June 2049 at 01:02:03.004  (.004 milli-seconds)
  //
  // Note that 49 is treated as 2049 as follows :
  //               TwoDigitYearCenturyWindow => 50
  //                            Current year => 2008 (at time of writing)
  //      Subtract TwoDigitYearCenturyWindow => 1958
  //            2 digit year to be converted => 49
  //  Compare with the last 2 digits of 1958 => Less
  //      So the year is in the next century => 2049
  // (58 would be converted to 1958)

  myDate := StrToDateTime('05/06/49 01:02:03.004');

  // Demonstrate default locale settings

  // Use the DateSeparator and TimeSeparator values
  ShowMessage('dd/mm/yy hh:nn:ss = '+
              FormatDateTime('dd/mm/yy hh:nn:ss', myDate));

  // Use ShortMonthNames
  ShowMessage('              mmm = '+FormatDateTime('mmm', myDate));

  // Use LongMonthNames
  ShowMessage('             mmmm = '+FormatDateTime('mmmm', myDate));

  // Use ShortDayNames
  ShowMessage('              ddd = '+FormatDateTime('ddd', myDate));

  // Use LongDayNames
  ShowMessage('             dddd = '+FormatDateTime('dddd', myDate));

  // Use the ShortDateFormat string
  ShowMessage('            ddddd = '+FormatDateTime('ddddd', myDate));

  // Use the LongDateFormat string
  ShowMessage('           dddddd = '+FormatDateTime('dddddd', myDate));

  // Use the TimeAmString
  ShowMessage('           hhampm = '+FormatDateTime('hhampm', myDate));

  // Use the ShortTimeFormat string
  ShowMessage('                t = '+FormatDateTime('t', myDate));

  // Use the LongTimeFormat string
  ShowMessage('               tt = '+FormatDateTime('tt', myDate));

  // Use the TwoDigitCenturyWindow
  ShowMessage('       dd/mm/yyyy = '+
              FormatDateTime('dd/mm/yyyy', myDate));

  ShowMessage('');

  // Now change the defaults
  DateSeparator      := '-';
  TimeSeparator      := '_';
  ShortDateFormat    := 'dd/mmm/yy';
  LongDateFormat     := 'dddd dd of mmmm of yyyy';
  TimeAMString       := 'morning';
  TimePMString       := 'afternoon';
  ShortTimeFormat    := 'hh:nn:ss';
  LongTimeFormat     := 'hh : nn : ss . zzz';
  ShortMonthNames[6] := 'JUN';
  LongMonthNames[6]  := 'JUNE';
  ShortDayNames[1]   := 'SUN';
  LongDayNames[1]    := 'SUNDAY';
  TwoDigitYearCenturyWindow := 75; // This means 49 is treated as 1949

  // Set up our TDateTime variable with the same value as before
  // except that we must use the new date and time separators
  // The TwoDigitYearCenturyWindow variable only takes effect here
  myDate := StrToDateTime('09-02-49 01_02_03.004');

  // Use the DateSeparator and TimeSeparator values
  ShowMessage('dd/mm/yy hh:nn:ss = '+
              FormatDateTime('dd/mm/yy hh:nn:ss', myDate));

  // Use ShortMonthNames
  ShowMessage('              mmm = '+FormatDateTime('mmm', myDate));

  // Use LongMonthNames
  ShowMessage('             mmmm = '+FormatDateTime('mmmm', myDate));

  // Use ShortDayNames
  ShowMessage('              ddd = '+FormatDateTime('ddd', myDate));

  // Use LongDayNames
  ShowMessage('             dddd = '+FormatDateTime('dddd', myDate));

  // Use the ShortDateFormat string
  ShowMessage('            ddddd = '+FormatDateTime('ddddd', myDate));

  // Use the LongDateFormat string
  ShowMessage('           dddddd = '+FormatDateTime('dddddd', myDate));

  // Use the TimeAmString
  ShowMessage('           hhampm = '+FormatDateTime('hhampm', myDate));

  // Use the ShortTimeFormat string
  ShowMessage('                t = '+FormatDateTime('t', myDate));

  // Use the LongTimeFormat string
  ShowMessage('               tt = '+FormatDateTime('tt', myDate));

  // Use the TwoDigitCenturyWindow
  ShowMessage('       dd/mm/yyyy = '+
              FormatDateTime('dd/mm/yyyy', myDate));
end;
Show full unit code
   dd/mm/yy hh:mm:ss = 05/06/49 01:02:03
                 mmm = Jun
                mmmm = June
                 ddd = Sat
                dddd = Saturday
               ddddd = 05/06/2049
              dddddd = 05 June 2049
              hhampm = 01AM
                   t = 01:02
                  tt = 01:02:03
          dd/mm/yyyy = 05/06/2049
 
   dd/mm/yy hh:nn:ss = 05-06-49 01_02_03
                 mmm = JUN
                mmmm = JUNE
                 ddd = SUN
                dddd = SUNDAY
               ddddd = 05-JUN-49
              dddddd = SUNDAY 05 of JUNE of 1949
              hhampm = 01morning
                   t = 01_02_03
                  tt = 01 _ 02 _ 03 . 004
          dd/mm/yyyy = 05-06-1949
 


Source : www.delphibasics.co.uk

17 April, 2013

Handling errors / Penanganan Kesalahan di Delphi

Delphi menggunakan pendekatan event handling untuk penanganan error. Kesalahan adalah (kebanyakan) dianggap sebagai pengecualian, yang menyebabkan pengoperasian program untuk menunda dan melompat ke handler pengecualian terdekat. Jika kita tidak memiliki satu, ini akan menjadi default handler Delphi yang akan melaporkan kesalahan dan menghentikan program.


Try, except dimana masalah berada

Delphi menyediakan hanya membangun untuk membungkus kode dengan penanganan exception. Ketika pengecualian terjadi dalam kode terbungkus (atau apa pun itu panggilan), kode tersebut akan melompat ke exception handling bagian dari kode pembungkus:


begin
Try
...
The code we want to execute
...
Except
...
This code gets executed if an exception occurs in the above block
...
end;
end;


kita mencoba untuk mengeksekusi beberapa kode, yang akan berjalan kecuali jika kesalahan (pengecualian) terjadi. Kemudian kode kecuali akan mengambil alih.


Mari kita lihat contoh sederhana di mana kita sengaja membagi angka dengan nol:


var
number1, number0 : Integer;
begin
try
number0 := 0;
number1 := 1;
number1 := number1 div number0;
ShowMessage('1 / 0 = '+IntToStr(number1));
except
on E : Exception do
begin
ShowMessage('Exception class name = '+E.ClassName);
ShowMessage('Exception message = '+E.Message);
end;
end;
end;


Ketika pembagian gagal, kode melompat ke blok statement Exception . Pernyataan ShowMessage pertama sehingga tidak bisa dijalankan.


apa yangh terjadi ketika proses debugging


Perhatikan bahwa ketika Anda kode debug kita dalam Delphi, Delphi akan pengecualian perangkap bahkan jika kita memiliki exception handling. kita kemudian harus mengklik OK pada dialog kesalahan, lalu tekan F9 atau panah hijau untuk meneruskan statement exeception . kita bisa menghindari ini dengan mengubah pilihan debug.


And finally …


Misalkan bukannya menjebak kesalahan statement itu terjadi, kita mungkin ingin membiarkan tingkat pengecualian penangan yang lebih tinggi dalam kode kita untuk melakukan perangkap lebih global.


Delphi menyediakan bagian alternatif untuk pembungkus exception Akhirnya. Bukannya dipanggil ketika pengecualian terjadi, klausa akhirnya selalu disebut setelah sebagian atau semua statement coba dijalankan. Hal ini memungkinkan kita untuk membebaskan memori yang dialokasikan, atau kegiatan sejenis lainnya. Namun, tidak perangkap kesalahan – penanganan exception tertinggi berikutnya (Try) blok yang bersarang telah di alokasikan dan dieksekusi.






Sumber : readoneit.wordpress.com

16 April, 2013

Hardiskku yang malang habis terjatuh dari lemari baju.

Dari judulnya sangat menyeramkan hahahaha.
tapi memang menyeramkan, setelah hardisk seagate ku terjatuh
dia mati !!! gak bergerak ( berputar maksudnya ) dibios gak kedetect.
external apa lagi. setelah beberapa abad berlalu ....
muncul lah niat untuk mengetahui, ngapain aja sih isinya hardisk kwkwkwkw...
dan dibedah lah sang hardisk mati tadi...
(maaf gambarnya belum di upload. nanti ya kalau sempat hahahha... )

setelah dibedah, dan dikeluarkan isinya. ( lebay dikit hahaha )
di ketuk-ketuk, dicolok lagi powernya. zzzzhhhh zzzzhhhh wah bunyi apa itu ?
jangan-jangan ada jin-nya hahhaha.

mungkin faktor hoki ato apa heatnya aq geser saat powernya nyala, wuzz wuzz wuzz... wah headnya pindah ke track awal. dan piringannya berputar kembali :D horeee...

pengalaman hari ini sangat mengesankan hehehhe.... jadi ini hanya coretan saya. jika tidak berkenan silahkan lewati postingan ini hahaha :D

yang jelas hari ini saya senang. wkkwk

Mengambil Tabel Dari web tertentu menggunakan google spreadsheed.

OK, Pertama Kalian Harus memiliki akun google. kalau tidak punya silahkan buat.
Siapkan link website yang ingin di ambil tabelnya. contoh saya adalah http://www.atlantica-db.com/mercenary/melee .

Langkah Selanjutnya Melangkah Ke Google Drive.
- Pilih Create.
- Pilih Spreadsheet.
- sorot pada cell a1.
- ketik atau paste link =ImportHtml("http://www.atlantica-db.com/mercenary/melee","table",1)
fungsi ImportHtml(url,query,index)

untuk menyimpan ke drive lokal anda tinggal pilih File > Download as...
pilih sesuai kebutuhan anda.

wala, tabel sukses tercopy. hahaha. semoga bermanfaat.

Google Drive Mempermudah Berbagi file

Rasanya kebutuhan untuk berbagi file itu sangat penting apa lagi saat ini jarak merupakan salah satu penghalang yg nyata. nah google drive adalah solusinya. tidak perlu berjalan ke rumah teman untuk mengcopy file. tinggal di taruh di folder google drive, sync ( google drive akan mensinkronkan file di lokal disk ke disk di google ) jika di temukan file baru, akan di upload secara otomatis. mudah kan ? tidak perlu lagi masuk ke halaman upload haha. mari kunjungi halaman google drive disini.

15 April, 2013

Aplikasi Ping dengan Log File

Silahkan Langsung ~ download

File > Unduh atau CTRL + S.