LF2 Data Changer Tutorial
Bahasa Indonesia
Ini adalah LF2 Data Changer Tutorial yang kudapat dari internet dan saya gabung-gabungkan.
Di tutorial ini, anda akan menemukan beberapa singkatan khusus, yaitu:
“SA” berarti serangan spesial.
“MP” berarti tenaga dalam.
“HP” berarti tenaga yang dimiliki.
“=>” berarti arti dari isi format tersebut, bukan bagian dari pemrograman dari karakter anda.
Bila anda membuka suatu karakter dari LF2 Data Changer, anda akan mendapati tampilan seperti berikut:
<bmp_begin> => awal dari pembentukan karakter dan gambarnya.
name: Template => nama dari karakter anda
head: sprite\template1\face.bmp => foto dari karakter anda saat di Pemilihan karakter pada LF2
small: sprite\template1\s.bmp => tampilan karakter anda di sebelah kiri dari HP dan MP bar anda
file(0-69): sprite\template1.bmp w: 79 h: 79 row: 10 col: 7 => gambar sprite / karakter anda pada saat bertarung dengan format sebagai berikut :
file(0-69): sprite\template1.bmp berarti gambar 1 – 70 (ingat, nomor dalam array dimulai dari 0) adalah gambar yang telah diidentifikasikan (dalam contoh ini, 0.bmp) sebagai gambar dalam gerakan karakter anda. Contoh cara pemakaian gambar dijelaskan dalam hal frame.
w: 79 h: 79 row: 10 col: 7 => gambar yang diidentifikasikan mempunyai panjang 80 pixel per gambar(w:), lebar 80 pixel per gambar(h:) dan ingat, nomor dalam array dimulai dari 0, dan kolom di seluruh gambar ada 10 kolom dan mempunyai 7 baris.
Demikian juga dengan format yang sama di bawah format gambar karakter diatas, hanya berbeda nama file dan panjang lebarnya saja.
walking_frame_rate 3 => mengidentifikasikan berapa frame per detik jika sedang berjalan.
walking_speed 4.000000 => mengidentifikasikan kecepatan berjalan.
walking_speedz 2.000000 => mengidentifikasikan kecepatan berjalan ketika sedang berjalan diagonal.
running_frame_rate 3 => mengidentifikasikan berapa frame per detik jika sedang berlari.
running_speed 8.000000 => mengidentifikasikan kecepatan berlari.
running_speedz 1.300000 => mengidentifikasikan kecepatan berlari ketika sedang berlari diagonal.
heavy_walking_speed 3.000000 => mengidentifikasikan kecepatan berjalan ketika sedang membawa alat berat(alat yang diangkat diatas kepala).
heavy_walking_speedz 1.500000 => mengidentifikasikan kecepatan berjalan ketika sedang berjalan diagonal sambil membawa alat berat.
heavy_running_speed 5.000000 => mengidentifikasikan kecepatan berlari ketika sedang membawa alat berat.
heavy_running_speedz 0.800000 => mengidentifikasikan kecepatan berlari ketika sedang berlari diagonal sambil membawa alat berat.
jump_height -16.299999 => mengidentifikasikan seberapa tinggi karakter anda melompat.
jump_distance 8.000000 => mengidentifikasikan seberapa jauh karakter anda melompat ke kiri atau kanan.
jump_distancez 3.000000 => mengidentifikasikan seberapa jauh karakter anda melompat diagonal.
dash_height -11.000000 => mengidentifikasikan seberapa puncak tinggi karakter anda melompat jauh.
dash_distance 15.000000 => mengidentifikasikan seberapa jauh karakter anda melompat jauh ke kiri atau ke kanan.
dash_distancez 3.750000 => mengidentifikasikan seberapa jauh karakter anda melompat jauh diagonal.
rowing_height -2.000000 => mengidentifikasikan seberapa lebar karakter anda bersalto ke belakang saat terpental jatuh ke tanah.
rowing_distance 5.000000 => mengidentifikasikan seberapa jauh karakter anda bersalto ke belakang.
<bmp_end> => akhir dari pembentukan karakter dan gambarnya.
<frame> 0 standing
pic: 0 state: 0 wait: 3 next: 1 dvx: 0 dvy: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
wpoint:
kind: 1 x: 33 y: 45 weaponact: 21 attacking: 0 cover: 0 dvx: 0 dvy: 0 dvz: 0
wpoint_end:
bdy:
kind: 0 x: 21 y: 18 w: 43 h: 62
bdy_end:
<frame_end>
Frame di atas adalah contoh frame ke 1 yaitu “standing” dan penjelasannya sebagai berikut:
<frame> 0 standing => mengidentifikasikan awal frame dan bahwa frame ini bernomor urut 0 dan framenya bernama standing (nama frame selain frame pokok itu bebas untuk dipilih) dan jika membuat frame itu nomor urut frame tidak boleh sama dengan nomor urut frame yang lain, jika sama maka frame yang akan dipanggil adalah frame yang lebih dulu ditulis.
pic: => mengidentifikasikan bahwa pada frame ini karakter akan bergambar sesuai dengan nomor urut gambar yang akan diidentifikasikan.
state: => mengidentifikasikan pada karakter bahwa pada frame ini karakter sedang mengalami aksi apa? Apakah terbakar, beku, atau yang lain? disini akan dijelaskan mengenai itu. untuk mengetahui state apa saja yang ada maka lihatlah pada banyak state di bawah ini(statenya hanya nomornya saja!):
0 Stand (can be picking a weapon or a man) => berdiri diam dan tidak melakukan apa-apa (bisa memegang suatu senjata atau memegang karakter)
1 Walk => berjalan
2 Run => berlari
3 Normal punch, kick => state meninju atau menyerang biasa / normal
4 Jumping => lompat
5 Dashing => lompat jauh
6 Rowing => berguling atau bersalto
7 Defending => bertahan dari serangan musuh
8 Defend broken => state saat karakter tidak kuat bertahan lagi kemudian terpeleset
9 Catching => state saat memegang karakter
10 Caught => state saat terpegang karakter
11 Injured (being Hurt) => state pada saat terkena serangan biasa dan terluka
12 Falling (being hurt in the sky) => state pada saat terserang kemudian terpental di langit
13 Ice => state pada saat membeku
14 Lying => state pada saat terbaring di tanah untuk beberapa saat dan tidak bisa melakukan apa-apa dan tidak bisa diserang
15 Other => state selain state yang telah ada
16 Faint => state pada saat terkena serangan biasa sampai pusing untuk sementara (biasanya kena serangan biasa 3 kali secara cepat dan berturut-turut)
17 Drinking => state pada saat meminum sesuatu
18 Burning => state pada saat terbakar
19 Burning Run => state pada saat berlari bakar yang menyebabkan karakter lain terbakar
100 Louis’ special move (sky) cause the crouch action -> 94 => state pada saat memukul dari angkasa ke tanah yang menyebabkan pada saat menyentuh tanah berhenti dan memanggil frame nomor 94
3?? short distance special move => mungkin state dari serangan spesial dan ?? merupakan nomor acak
301 deep’s dash special move ( can control up, down ) => serangan spesial yang gerakan maju mundurnya bisa digerakkan ke atas dan ke bawah
400 teleport to the nearest enemy’s side => teleport / berpindah tempat secara langsung ke samping musuh terdekat
401 teleport to the farest friend’s side => teleport / berpindah tempat secara langsung ke samping teman terjauh (bila tidak mempunyai teman maka hanya akan ke tempat semula)
500/501 transform to past character again (ninja Rudolf only) => berubah ke karakter yang lalu lagi
1000 Light weapon on the sky => state senjata ringan yang berada di langit
1001 light weapon on hand => state senjata ringan di tangan
1002 light weapon being thrown => state senjata ringan yang terlempar
1003 light weapon rebounding on the ground => state senjata ringan yang hancur di tanah
1004 light weapon on the ground => state senjata ringan di tanah
1700 heal self magic => state mengobati diri sendiri sampai batas maksimal darah
2000 heavy weapon on the sky => state senjata berat di langit
2001 heavy weapon on hand => state senjata berat di tangan
2002 heavy weapon on ground => state senjata berat di tanah
3000 ball’s flying => jurus tembakan spesial yang terbang
3001 ball’s hit enemy and explosion => jurus tembakan spesial yang menyentuh musuh dan meledak
3002 ball’s cancel and explosion => jurus tembakan spesial yang sudah habis masanya dan meledak
3003 ball’s rebound and explosion => jurus tembakan spesial yang hancur dan meledak
3004 ball’s disappearing => jurus tembakan spesial yang menghilang dan hancur
3005 wind’s flying => jurus tembakan spesial yang seperti angin, semakin jauh semakin kecil efeknya
3006 super arrow => jurus tembakan spesial yang tidak bisa dihentikan
80?? transform to id: ?? (criminal) => berubah secara langsung ke karakter yang “id” nya ditulis pd tanda “?”. Misalnya, jika value state-nya “8011” maka karakter akan berubah / transform ke id nomor “11”
9995 change to LouisEX => berubah ke LouisEX atau lebih tepatnya ke karakter ber-id 50
9996 Louis off armour => mengeluarkan armor Louis, 1 armor agak besar dan 4 lainnya agak kecil
9997 message (can be seen it at anywhere) => menampilkan gambar berupa tulisan (bisa dilihat dimana saja)
9998 deleted by itself => dihapus oleh dirinya sendiri
9999 effect/ broken thing => efek dari senjata hancur, pecah belah senjata
wait: => mengidentifikasikan bahwa frame ini akan menunggu selama yang ditentukan untuk melanjutkan ke frame berikutnya.
next: => mengidentifikasikan bahwa frame ini setelah menunggu lalu akan ke frame nomor berapa? bagian ini yag menjelaskannya. (bila next-nya adalah 999 maka rangkaian frame disudahi)
dvx: => mengidentifikasikan bahwa pada frame ini karakter akan bergerak ke mana secara horizontal / mendatar. jika 0, berarti tidak akan kemana-mana, jika angka positif berarti ke kanan jika angka negatif berarti ke kiri dan kecepatan geraknya tergantung dari angkanya, jika banyak maka cepat jika sedikit maka juga pelan.
dvy: => sama dengan dvx, tetapi secara vertikal dan jika angka positif menurun jika negatif naik.
centerx: => mengidentifikasikan letak tabrakan karakter secara horizontal.
centery: => mengidentifikasikan letak tabrakan karakter secara vertikal.
hit_a: => mengidentifikasikan bahwa jika karakter sedang melakukan frame ini dan pemain menekan tombol “attack” maka frame akan langsung berlanjut ke frame yang dituju tanpa menunggu (bila 0 menandakan bahwa tidak akan terjadi apa-apa).
hit_j: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “jump”
hit_d: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend”
hit_back: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “kebalikan dari arah hadap karakter”
BAGIAN KHUSUS “SA”
hit_Fa: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend + salah satu dari kanan dan kiri + attack” biasanya bagian ini digunakan untuk serangan spesial. Tetapi fungsi dari bagian ini berbeda pada tembakan spesial. Biasanya pada tembakan spesial ini digunakan untuk tembakan mengincar dengan value yang harus ditentukan. Kalau value-nya “2” berarti pengincaran yang lama, kalau value-nya “14” berarti pengincaran yang sebentar. Kalau “1” berarti terus menerus, dan lanjutannya yaitu “10” berarti berhenti mengincar dan bergerak ke arah terakhir yang sedang dituju.
hit_Fj: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend + salah satu dari kanan dan kiri + jump” biasanya bagian ini digunakan untuk serangan spesial.
hit_Ua: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend + atas + attack” biasanya bagian ini digunakan untuk serangan spesial.
hit_Uj: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend + atas + jump” biasanya bagian ini digunakan untuk serangan spesial.
hit_Da: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend + bawah + attack” biasanya bagian ini digunakan untuk serangan spesial.
hit_Dj: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend + bawah + jump” biasanya bagian ini digunakan untuk serangan spesial.
hit_ja: => sama dengan “hit_a” tetapi tombol yang ditekan adalah “defend + jump + attack” biasanya bagian ini digunakan untuk serangan spesial.
Cara untuk membuat suatu jurus buatan seperti tembakan spesial, angin spesial, dan tembakan mengincar. Struktur konfigurasi gambarnya berbeda dengan karakter. Ini penjelasannya:
<bmp_begin> => awal dari pembentukan tembakan spesial
file(0-11): sprite\sys\jack_b.bmp w: 81 h: 82 row: 4 col: 2 => sama seperti format pada karakter
weapon_hit_sound: data20.wav => suara yang dikeluarkan oleh tembakan spesial atau senjata saat menyentuh musuh atau tembakan spesial lainnya
weapon_drop_sound: data20.wav => suara yang dikeluarkan oleh tembakan spesial saat tembakan spesial atau senjata saat menyentuh tanah
weapon_broken_sound: data20.wav => suara yang dikeluarkan oleh tembakan spesial saat tembakan spesial atau senjata saat hancur
<bmp_end> => akhir dari pembentukan tembakan spesial
Frame yang digunakan untuk melayang di udara biasanya dari 0 – 9. Kalau ingin lebih biasanya menulis frame yang berada di luar frame biasa.
Frame yang digunakan untuk menyentuh musuh biasanya dari 10 – 13. Kalau ingin lebih harus menulis frame yang berada di luar frame biasa dan diubah “next:”-nya (tidak berguna jika di frame melayang ada “itr:” yang akan dijelaskan nanti.
Frame yang digunakan untuk menyentuh tembakan spesial (mungkin) lain biasanya dari 20 – 23. Kalau ingin lebih harus menulis frame yang berada di luar frame biasa dan diubah “next:”-nya.
Frame yang digunakan untuk hancur dan menghilang biasanya dari 20 – 23. Kalau ingin lebih harus menulis frame yang berada di luar frame biasa dan diubah “next:”-nya.
Frame yang digunakan untuk muncul dan terbentuk biasanya dari 40 – 43 atau frame diluar lainnya dan dilanjutkan ke frame melayang.
Dan sekarang akan dijelaskan mengenai bagian frame yang lain.
itr: dan itr_end: adalah awal dan akhir dari bagian frame khusus menyentuh musuh. Komponennya =>
kind: ???
x: => menunjukkan dimana titik secara horizontal (menunjukan koordinat horizontal) awal dari frame saat akan menyentuh musuh (titik kiri atas pada persegi yang akan bertabrakan dengan musuh yang mengelilingi sprite / gambar)
y: => menunjukkan dimana titik secara vertikal (menunjukan koordinat vertikal) awal dari frame saat akan menyentuh musuh (titik kiri atas pada persegi yang akan bertabrakan dengan musuh yang mengelilingi sprite / gambar)
w: => menunjukkan berapa panjang dari persegi panjang / panjang garis horizontal yang akan menjadi wilayah tabrakan terhadap musuh.
h: => menunjukkan berapa lebar dari persegi panjang / panjang garis vertikal yang akan menjadi wilayah tabrakan terhadap musuh.
dvx: => menunjukkan bahwa saat menyentuh musuh musuhnya akan terpental ke arah horizontal seberapa jauh.
dvy: => menunjukkan bahwa saat menyentuh musuh musuhnya akan terpental ke arah vertikal seberapa jauh dan terpental ke langit, bukan ke arah diagonal.
dvz: => menunjukkan bahwa saat menyentuh musuh musuhnya akan terpental ke arah vertikal seberapa jauh dan terpental diagonal, bukan ke langit.
fall: => jika musuh menyentuh karakter / tembakan spesial sampai luka musuhnya melebihi value bagian ini, maka musuh akan jatuh terpental bila tidak ada dvx, dvy, maupun dvz sama sekali.
vrest: ???
bdefend: => bila musuh bertahan dan karakter / tembakan spesial mengenai musuh itu, dan jika angka “injury:”-nya sudah melebihi value bagian ini, maka musuh akan terpeleset dan karakter / tembakan spesial akan memiliki kesempatan untuk menyerang musuhnya.
injury: => bila musuh mengenai tembakan spesial / karakter tanpa pertahanan maka musuh akan berkurang kekuatannya sesuai dengan value yang ditentukan (setiap karakter memiliki kekuatan 500) dan ada value tertentu yang melebihi 500 tetapi tidak langsung membunuh musuhnya.
effect: => efek yang akan dihasilkan dari sentuhan yang dilakukan. Bila akan menghasilkan efek pukulan tidak usah diberi bagian ini, tapi jika ingin efek berdarah, terbakar, membeku, atau tembakan spesial lain memantul harus diberi bagian ini. Jika valuenya puluhan dan satuannya 0, maka hanya dilakukan sekali setelah musuhnya (khusus terbakar dan membeku, bila sudah terbakar maka tidak akan terkena lagi, bila sudah membeku juga sama. Di bawah ini adalah beberapa value tsb:
effect: 1 => efek berdarah
effect: 2 => efek terbakar
effect: 3 => efek membeku
effect: 4 => efek tembakan spesial memantul (tidak akan terjadi apa-apa untuk tabrakan pd karakter)
cpoint: dan cpoint_end: => adalah awal dan akhir dari bagian frame khusus memegang atau terpegang musuh. Komponennya =>
kind: ???
x: ???
y: ???
injury: => sama seperti itr di atas
vaction: => frame yang musuh lakukan saat musuh terpegang sesuai dengan value
aaction: => frame yang akan karakter lakukan dan lanjutkan saat menekan tombol “attack” sesuai dengan value apabila tidak dilanjutkan ke frame manapun sampai waktu tunggu habis (next: 0).
taction: => frame yang akan karakter lakukan dan lanjutkan saat menekan tombol kanan atau kiri sambil menekan tombol “attack” (cara melempar) sesuai dengan value.
throwvz: => menunjukkan bahwa saat melepaskan musuh musuhnya akan terpental ke arah vertikal seberapa jauh dan terpental diagonal dan ke langit.
hurtable: ???
throwinjury: => sama seperti itr di atas tetapi ini saat musuhnya dilempar oleh pemegang.
decrease: ???
fronthurtact: => frame pada saat terpegang dan diserang oleh musuh lain dari depan.
backhurtact: => frame pada saat terpegang dan diserang oleh musuh lain dari belakang.
opoint: dan opoint_end: => adalah awal dan akhir dari bagian frame khusus membuat objek (senjata, karakter, tembakan spesial). Komponennya =>
kind: ???
x: => menunjukkan dimana titik secara horizontal (menunjukan koordinat horizontal) awal dari frame saat akan membuat objek (titik kiri atas pada persegi yang akan bertabrakan dengan musuh yang mengelilingi sprite / gambar)
y: => menunjukkan dimana titik secara vertikal (menunjukan koordinat vertikal) awal dari frame saat akan membuat objek (titik kiri atas pada persegi yang akan bertabrakan dengan musuh yang mengelilingi sprite / gambar)
action: => pada saat objek terbuat, objek akan melakukan frame ke berapa yang objek punyai.
dvx: => pada frame ini objek yang terbuat akan langsung bergerak ke mana secara horizontal / mendatar. jika 0, berarti tidak akan kemana-mana, jika angka positif berarti ke kanan jika angka negatif berarti ke kiri dan kecepatan geraknya tergantung dari angkanya, jika banyak maka cepat jika sedikit maka juga pelan.
dvy: => sama dengan dvx, tetapi secara vertikal dan jika angka positif menurun jika negatif naik.
oid: => hal ini adalah yang paling penting, karena disini diidentifikasikan id objek mana yang akan dibuat. Jika tidak ada yang sesuai maka tidak akan ada objek yang terbuat.
facing: => jumlah dari objek yang akan dibuat dan arah hadapnya, kalau bersatuan 0 berarti sesuai dengan arah hadap pembuatnya, kalau satuannya 1 berarti berbalikan dari arah pembuatnya. Kalau menginginkan hanya 1 yang dibuat maka hanya ditulis satuannya saja, kalau lebih harus memakai puluhan. Misalnya seperti ini “facing: 50”, yang ditulis dengan highlight hijau berarti jumlahnya (disini jumlahnya 5), yang kuning berarti arah hadapnya (berbalikan dengan pembuatnya). Misal bila valuenya “251” berarti jumlah objek yang dibuat berjumlah 25 dan arah hadapnya berbalikan dengan pembuatnya.
wpoint: dan wpoint_end: adalah awal dan akhir dari bagian frame khusus memegang senjata. Komponennya =>
kind: jenis senjata
x: => koordinat horizontal letak senjata yang sedang dipegang yang berdasarkan gambar sprite.
y: => koordinat vertikal letak senjata yang sedang dipegang yang berdasarkan gambar sprite.
weaponact: => frame yang akan dilakukan senjata secara terus menerus selama bagian frame ini menunjuk ke nomor frame. Misal jika valuenya “23” maka frame yang akan dilakukan oleh si senjata yang dipegang adalah frame nomor 23 yang dia miliki.
attacking: => apakah senjata sedang melakukan serangan atau tidak? Jika valuenya “0” berarti tidak, sedangkan bila “1” berarti ya.
cover: => apakah gambar senjata tertutupi oleh gambar si pemegang atau tidak? Jika valuenya “0” berarti tidak, sedangkan bila “1” berarti ya.
dvx: => bila value ini terisi, maka senjata akan lepas dari si pemegang dan terpental secara horizontal menurut valuenya.
dvy: => bila value ini terisi, maka senjata akan lepas dari si pemegang dan terpental ke langit, bukan ke arah diagonal dan menurut valuenya.
dvz: => bila value ini terisi, maka senjata akan lepas dari si pemegang dan terpental ke arah diagonal, bukan ke langit dan menurut valuenya.
Mengubah / mentransform karakter ke karakter lain
Ini adalah hal yang paling keren dari aksi karakter. Sudah dijelaskan bagaimana cara mentransform karakter ke karakter lain dengan mengubah state-nya. Tapi, itu saja belum cukup. Kita harus menambahkan beberapa resep agar tidak ada kesalahan ataupun gambar kosong yang muncul. Ikuti langkah-langkah berikut ini:
-
Buatlah gambar untuk frame pentransforman dengan gambar baru atau gambar yang sudah ada.
-
Pada frame akhir ubah state dengan “80??” ?? diganti dengan id karakter sesuai seperti yang telah dijelaskan.
-
Lalu, pada karakter tujuan kita ubah gambarnya, supaya tidak ada gambar kosong, maka kita ubah gambarnya seperti berikut:
file(0-69): sprite\sys\davis_0.bmp w: 79 h: 79 row: 10 col: 7
file(70-139): sprite\sys\davis_1.bmp w: 79 h: 79 row: 10 col: 7
Maka, si komputer akan berpikir: davis_0 – urutan 1 = davis_0 – urutan 3
davis_1 – urutan 2 = davis_1 – urutan 4!!!
dan kita ubah seperti ini:
file(0-69): sprite\sys\davis_0.bmp w: 79 h: 79 row: 10 col: 7
file(70-139): sprite\sys\davis_1.bmp w: 79 h: 79 row: 10 col: 7
file(140-209): sprite\sys\davis_0.bmp w: 79 h: 79 row: 10 col: 7
file(210-279): sprite\sys\davis_1.bmp w: 79 h: 79 row: 10 col: 7
kita ubah urutannya sesuai dengan jumlah gambarnya dan sesuai urutan yang ada dan sesuai juga dengan jumlah filenya. Bila ada file lebih, kita harus mengubah lebih banyak:
file(0-69): sprite\sys\davis_0.bmp w: 79 h: 79 row: 10 col: 7
file(70-139): sprite\sys\davis_1.bmp w: 79 h: 79 row: 10 col: 7
file(140-209): sprite\sys\davis_0.bmp w: 79 h: 79 row: 10 col: 7
file(210-279): sprite\sys\davis_1.bmp w: 79 h: 79 row: 10 col: 7
file(280-349): sprite\sys\davis_2.bmp w: 79 h: 79 row: 10 col: 7
file(350-419): sprite\sys\davis_3.bmp w: 79 h: 79 row: 10 col: 7
file(420-489): sprite\sys\davis_2.bmp w: 79 h: 79 row: 10 col: 7
file(490-559): sprite\sys\davis_3.bmp w: 79 h: 79 row: 10 col: 7
-
Dan jangan lupa, berilah SA tertentu pada frame yang anda kehendaki akan anda lakukan pada saat-saat tertentu untuk menjalankan frame yang telah anda buat.