Anda di halaman 1dari 43

Tutorial RPG Maker VX Ace

By: Navest
Table of Contents:
1. Introduction
a. Getting Started
b. Menu Bar
2. Editing Database
a. Actor
b. Classes
c. Skills
d. Items
e. Weapons
f. Armors
g. Enemies
h. Troops
i. States
j. Animations
k. Tilesets
l. Common Events
m. System
n. Terms
3. Making Maps
4. Editing Event
5. Formulas
6. Script
7. NEW!!! Spriting Tutorial
1. Introduction
Kita sekarang akan berkenalan dengan RPG Maker VX Ace atau bisa disingkat RMVX Ace,
nah, sebelum kita mulai, alangkah baiknya kalau kita mulai dengan doaBerdoa
dimulai.. wait: 120 frames(s) selesai
a.Getting Started
Sekarang, kita akan memulai membuat project
Kita namai dengan nama RPG VX Ace atau terserah anda sendiri
Dan, inilah tampilan pertama dari RPG Maker VX Ace:
b. Menu Bar
(dari kiri ke kanan)
New Project
Membuat project baru
Open Project
Membuka project yang telah tersimpan
Save Project
Menyimpan Project
Cut
Memotong seleksi dan menaruhnya pada Clipboard
Copy
Menyalin seleksi dan menaruhnya pada Clipboard
Paste
Menempel yang ada pada Cliboard
Delete
Menghapus seleksi
Undo
Meng-undo aksi terakhir
Map
Digunakan untuk membuat / mengedit map
Event
Digunakan untuk membuat / mengedit event
Region
Untuk mengeset region pada map
Pencil
Untuk menggambar map
Rectangle
Untuk menggambar map dengan bentuk kotak/persegi panjang
Ellipse
Untuk menggambar map dengan bentuk oval/bulat
Flood Fill
Mengisi semua region pada tile yang sama
Shadow Pen
Untuk mengatur Bayangan pada map
1/1
Untuk melihat map dengan skala 1:1
1/2
Untuk melihat map dengan skala 1:2
1/4
Untuk melihat map dengan skala 1:4
1/8
Untuk melihat map dengan skala 1:8
Database
Untuk membuka database
Resource Manager
Untuk membuka Resource Manager
Script Editor
Untuk membuka Script Editor
Sound Test
Untuk memainkan atau mengetes musik yangada pada file project
Character Generator
Untuk membuat sprite/face
Playtest
Untuk memainkan project yang telah dibuat
2. Editing Database
Sebelum kita mengedit map, event, dll. , kita akan mengedit Database terlebih dahulu
Buka Database(lihat gambar) atau tekan F9, nah,, sekarang, yang
terbuka pertama kali pasti adalah
a. Actors
kurang lebih, tampilan actor database seperti ini
Sekarang,, kita akan mengedit atau membuat actor kita sendiriklik change maximum
pada kiri bawah database actorseperti ini
setelah itu akan terbuka window seperti ini
Kita rubah menjadi 2 actor
Alhasil,, akan berubah seperti ini
Nah, sekarang kita clear semua actor dengan cara menekal Del atau klik kanan-Clear
alhasil, akan berubah seperti ini
- Name : Sekarang coba isi nama actor pertama dengan nama Navest atau yang
lain(terserah anda)
- Nickname : Lalu isi nickname dengan nama Smart Boy atau yang lain(terserah
anda)
- Class : Jangan sentuh Class dulu, toh kita belum mempelajari class
- Description :Sekarang isi description seperti ini:
He is original boy that have unknown power atau yang lain(terserah anda)
- Graphic : Nah, sekarang kita mulai mengganti face dan spriteskalo yg ini
terserah anda
Sekarang yang ada di layar saya adalah seperti ini
Sudah dulu untuk Actor,, untuk actor yang ke-2 isi sendirisambil belajar juga,, masa
mau dituntun terusdan untuk class dan starting equipment kita biarkan terlebih
dahulu,, karena class dan equipment juga belum dibahas,, nanti kalau sudah dibahas
pasti akan kembali ke actor
b. Classes
Nah, sekarangkita berpindah ke Classes
Sekarang coba change maximum seperti tadidan merubahnya menjadi 2 dan meng-
clear semua class tersebut
- Name : Kalau sudah, rubah name class yang pertama menjadi Warrior,
- EXP Curve : masalah EXP Curve itu terserah anda mau dirubah atau enggak.. yang
jelas EXP Curve itu buat naik level up itu membutuhkan exp berapa kayak gitu-gitu
dehkalo mau saya sarankan cobarubah aja,, buat eksperimen,, biar tau gimana
EXP Curve itu
- Parameter Curves: sekarang coba klik dua kali pada salah satu parameter curve, mau
MHP, MMP, terserah.. nah disitu kamu liat akan keluar seperti ini(MHP):
Sekarang ada beberapa metode untuk mengubah parameter curve ini
1. Quick setting: quick setting membuat kamu cepat dalam mengubah parameter
curve, tapi dengan setting yg sudah ditentukan
2. Level >Value: setting yg ada di kotak value untuk merubah parameter,, arti dari
kotak Level >Value ialah.. coba perhatikan gambar diatas dahulu.. kalau sudah,
parameter itu menunjukkan kalau player masih level 1 maka MHPnya adalah
211
3. Gambar Parameter Curve: coba gambar sendiri parameternya
4. Generate Curve: seperti di kotak Level >Value tapi lebih advanced.. coba utak
atik sendiri,, dan untuk Fast Average Slow nya itu untuk menentukan kecepatan
kenaikan parameter tersebut
- Features: pilih fiturnya, dan untuk parameter, kita tinggalkan dahulu
- Skills: untuk skills kita tinggalkan dahulu
Untuk class yg ke-2 bisa diisi sendiri,, dan sekarang class.nya udah jadi kan??
Sekarang rubah class di Actor kamu.. btw ini yang ada di layar saya
c. Skills
Sekarang kita akan membahas tentang skills
Nah,, untuk skills seperti tadi di change maximum,, tapi gak kita jadiin 2, kita jadiin
130(kita tambah empat skills)
Pertama yang kita edit ialah
- Name
- Icon: klik dua kali kotak icon, terserah mau pilih icon apa..
- Description
- Skill type: pilih tipe skill yang anda inginkan
- MP Cost / TP Cost: berapa TP/MP yang kamu mau untuk melakukan skill tsb
- Scope: targetnya, kalau kamu pilih one enemy, maka targetnya hanya satu musuh
yang diserang, tapi kalau all enemies, semua musuh akan diserang
- Occasion: pilih dimana aja kamu bias pakai skill ini, pada menu, battle atau dua-dua
nya
- Invocation
- Using Message: untuk mengumumkankalau musuh atau player tersebut telah
menggunakan skill tsb
- Required weapon: pilih tipe weapon/senjata yang dibutuhkan untuk melakukan skill
tsb
- Damage:
o Type: pilih tipe skill tsb
o Element: pilih elemen skill tsb
o Formula: untuk formula kita tinggalkan dahulu
o Variance: persenan value.. misal kalau variance 20 dan tipenya HP Damage,
maka ketika kamu menyerang dengan skill tsb, HP musuh akan berkurang
20%dari aslinya
o Critical: untuk mengeset kalo skill ini bias critical atau tidak
- Effects: untuk effect terserah mau nambahin atau nggak
Sekarang satu skill udah jadi,, untuk skill yang laen, bisa benahin sendiridan sekarang
kamu bisa nambahin skill yang ada di class tadi
Btw,, ini yg ada di layar saya:
^skill
^skill waktu di class
d. Items
Nah, sekarang kita akan membahas tentang Items..
Untuk items hampir sama dengan skills yang membuatnya beda ialah
- Price: harga,, tentukan harga beli item tsb
- Consume: untuk menentukan bahwa item tsb dapat dikonsumsi atau
tidak(dikonsumsi bukan berarti harus dimakan atau diminum yaa..)
Untuk yang lain sama yang ada di skills, hanya saja fitur using message dan required
weapon yang ada di skills dihilangkan di items(emang gak dibutuhin di items) jadi untuk
yang lain bias dipelajari sendiri
e. Weapons
Yg ini juga hampir sama ama items.. yg beda hanya effect diganti feature(isi effect beda
dengan feature loh yaa) dan ada
- Parameter changes: untuk menambah parameter.
Jadi semisal ATK player 200 kalo parameter weapon HP lu kasih
20, maka kalo player tersebut mengequip weapon tsb,
parameter ATKnya akan bertambah menjadi 220
- Feature: untuk feature bisa dipelajari sendiri,, isinya banyak soalnya(dan feature di
weapon hampir sama ama yang di classes)
Nah sekarang kalau weapon udah jadi, coba edit starting equipment yang ada di
actor kamu tadi
f. Armors
Untuk armors sama dengan weapons, jadi pelajari sendiri
Sekarang kamu juga punya armor untuk actor kamu kan.. sekarang tambahkan armor
yang kamu buat ke initial equipment actormu
g. Enemies
Seperti biasa, change maximum, tambahin 3 enemies, jadi ada 33 enemies..
Kita edit enemy yang pertama
- Name: kita namai menjadi Captain atau yang lain
- Graphic: klik dua kali kotak graphic, lalu pilih Captain, jadinya seperti ini
- Parameter Enemy(MHP ,MMP, ATK, DEF, MAT, MDF, AGI, LUK): isi sendiri, kalo saya
jadinya seperti ini
- Rewards: isi sendiri, kalo saya jadinya seperti ini
- Drop Items: itu ada tiga slot, kalau musuh sederhana mending jangan diisi semua,
satu saja,, untuk drop items, saya jelaskan sedikit
None: tidak ada drop item
Item: pilih item untuk drop item
Weapon: pilih weapon untuk drop item
Armor: pilih armor untuk drop item
Probability: untuk mengeset maksimal drop item yang bisa didapat
Untuk si Captain, saya mengeset drop item menjadi seperti ini
- Action patterns: isi sendiri, untuk action patterns juga saya jelaskan sedikit
Skill: pilih skill untuk action
Rating: set rating untuk membuat sering atau tidaknya action tersebut dipakai
Conditions
Always: selalu menggunakan action tsb(apabila ada action yang lain dengan rating
yang lebih tinggi, maka, action ini jarang dipakai)
Turn no: action tsb hanya dapat digunakan mulai pada turn tertentu
HP: action tsb hanya dapat digunakan pada ketika musuh dalam keadaan HP
tertentu
MP: action tsb hanya dapat digunakan pada ketika musuh dalam keadaan MP
tertentu
State: action tsb hanya dapat digunakan pada ketika musuh dalam keadaan state
tertentu
Party level: action tsb hanya dapat digunakan pada ketika Actor dalam keadaan level
tertentu
Switch: action tsb hanya dapat digunakan apabila switch tsb menyala/ON
- Features: untuk feature pelajari sendiri
Nah,, untuk enemy yang lain, silahkan isi sendiri, ini yang ada di layar saya
h. Troops
Untuk troops ini adalah pasangan Enemy, jadi kalau ingin battle processing dengan
enemy, pertama harus di setting lewat troops ini
Seperti biasa, pertama di change maximum dahulu
Sekarang lakukan seperti dibawah
1. Name: isi nama troops mu(dengan enemy yang tadi kamu buat)
2. Pilih enemy yang telah kamu buat tadi di Enemy List
3. Kalau sudah klik [<Add] dua kali
4. Maka yang terjadi adalah seperti ini
5. Sekarang, coba rearrange musuhnya, kalau saya, menjadi seperti
6. Coba klik [Autoname], yang terjadi adalah seperti ini
Enemy List
Sudah, sekarang kamu punya troops untuk enemy-mu,, sekarang saya coba
jelaskan satu per satu isi pada Troops
- Name: pasti udah tau kan arti name, jadi gausah dijelasin
- Autoname: member nama secara otomatis
- Change battleback: untuk mengganti battleback pada preview
- Battle Test: untuk mengetes battle dengan troops tersebut
- <Add: untuk menambahkan musuh yang dipilih
- >Remove: untuk menghapus musuh yang dipilih
- Clear: untuk menghapus semua musuh pada troops
- Arrange: memposisikan musuh
- Battle Event: untuk event tidak saya jelaskan dahulu
Dan sudah,,, sekarang kamu udah punya troop untuk enemy-mu, dan kamu bisa
langsung mengetes battle tersebut, btw,, ini yang ada di layar saya
i. States
Untuk yang satu ini, saya nggak ngerekomendasiin buat menambah states, karena
menurut saya, states yang ada sudah cukup lengkap,, jadi saya jelasin dikit aja
- Name: gausah dijelasin
- Restriction: susah jelasinnya,, umm.. untuk mengeset aksi yang dapat dilakukan
ketika berada dalam state tsb..
- Priority: untuk mengeset tampilan icon states tsb pada layar
- Removal Condition: untuk mengeset pada kondisi apa state tsb dapat hilang dari
player..
- Message: untuk mengumumkan states tersebut
- Features: untuk feature, pelajari sendiri
Sip, udah selesai, sekarang kita tinggalkan states dan berlanjut ke
j. Animation
Sebenernya ini adalah yang paling susah dijelasin,, mau saya ajarin langsung buat
animation susah, mau jelasin satu-satu ya banyak
Well,, untuk animation kamu bisa eksperimen sendiri
Saya cuma jelasin general setting.nya aja..
- Name: halah dari tadi pake name mulu, cape nih tangan gw nulis ginian terus
- Graphic: untuk mengeset gambar untuk animasi
- Position: untuk mengeset posisi animasi
- Max#: untuk mengeset maksimal frame pada animasi tsb
Udah deh, gitu aja untuk animasi,, yang lain, pelajari sendiri, sekarang kita lanjut..
k. Tilesets
Untuk yang satu ini juga ga saya rekomendasiin buat nambah tileset, karena semua
RTP tileset udah dipake disini
Untuk di tileset pasti udah banyak yang tau arti dari semua ini, jadi saya cuma
menjelaskan sedikit tentang ini
- Passage:
O: Bisa dilewati
X: Tidak bisa dilewati
*: bisa dilewati(diatas player)
- Passage 4 dir: susah jelasinnya, pelajari sendiri
- Ladder: untuk mengeset kalau tile tsb untuk tangga atau bukan
- Bush: susah jelasinnya, pelajari sendiri, yang jelas, biasanya dipake buat rumput
rumputan yang tinggi
- Counter: juga susah jelasinnya, yang jelas biasanya dipake buat meja
- Damage Floor: untuk mengeset tile tsb apabila player menginjak tile damage floor,
maka HP player akan berkurang
- Terrain Tag: juga susah jelasinnya, pelajari sendiri..
Oke, udah selesai.. kita lanjutkan ke..
l. Common Events
Untuk yang ini saya jelaskan sedikit aja,, karena juga sebenernya event itu dibahas
nanti
- Name: no comment :P
- Trigger: untuk mengeset trigger event, untuk lebih lengkapnya bisa dibaca di chapter
Editing Event
- Condition Switch: untuk mengeset kondisi event pada switch tertentu
Udah, gitu aja, untuk yang lain, bisa dibaca di chapter 4. Editing Event
m. System
untuk system, langsung saya jelasin aja..
Initial Party: untuk mengeset party pertama kali
- Game Title: untuk mengeset judul game
- Currency Unit: mata uang
- Vehicle Graphic: untuk mengeset gambar kendaraan
- Window Color: untuk mengeset warna window
- Options:
Initialize MIDI at Startup: apabila ini dicentang, dan player menggunakan OS
Windows Vista keatas, dijamin music ber format MIDI akan terdengar lebih nyaring
Transparet ON: apabila ini dicentang maka player akan transparan waktu pertama
main
Show Player Followers: kayak script caterpillar
K.O. by Slip Damage: susah jelasinnyapelajari sendiri
K.O. by floor Damage: susah jelasinnyapelajari sendiri
Display TP in Battle: apabila ini dicentang, maka waktu battle, TP meter akan terlihat
Reserve Members EXP: apabila ini dicentang, actor yang gak ikutan bertarung(yang
di party) akan mendapat EXP
- Music: untuk mengeset music pada game
- Sound Effects: untuk mengeset SE pada game
- Starting positions: untuk mengeset posisi start player, maupun kendaraan(vehicle)
- Title Screen: untuk mengganti title screen
Draw Game Title: untuk memunculkan judul game pada title screen(apabila
dicentang)
Hanya itu yang bisa saya sampaikan untuk System.
n. Terms
Untuk terms,, terserah mau diganti apa nggak,, tergantung developer soalnya,
Cuma saya jelasin aja.
- Elements: untuk menentukan elemen dalamgame
- Weapon Types: untuk menentukan tipe senjata dalam game
- Skill Types: untuk menentukan tipe skill dalam game
- Armor Types: untuk menentukan tipe armor dalam game
- Basic status: untuk menentukan nama status dalam game
- Parameters: untuk menentukan nama parameter dalam game
- Equip Types: untuk menentukan tipe equip dalam game
- Commands: untuk menentukan nama komando dalam game
Commands dibagi tiga yaitu:
Battle Commands: untuk menentukan komando dalam battle
Equipment Commands: untuk menentukan komando dalam equip menu
Title Commands: untuk menentukan komando dalam title screen
Cuma itu yang bisa saya sampaikan,, untuk Terms, dan Database lain,, untuk kurang dan
lebihnya mohon maaf..
Nah,, sekarang kita udah nyelesein semua database,, horeee \^o^/
Sekarang, tinggal mapping, dan eventing..
Untuk formula, parameter, script, dan sprite akan dijelaskan belakangan,, toh itu juga ga begitu
penting,, karena basicnya itu yang penting..
3. Making Maps
Sekarang, kita masuk ke chapter ke-3.. yaitu Making Maps atau membuat peta..
Pertama, klik dulu icon seperti dibawah ini
Tampilan pertama adalah seperti ini
1. Tileset
2. Map Screen
3. Map File
Sekarang kita bikin map untuk world map
Coba klik pada map file terus pijit spasi(space) entar akan terbuka window seperti ini
1
2
3
Sekarang coba ganti nama mapnya,, misal ganti World Map
Untuk display name terserah diisi atau enggak,, dan display name itu fungsinya untuk
mendisplay nama map tsb dalam game,, coba deh isi aja display name,, terus coba testplay,,
Kalo udah kasih nama,, di kotak Width dan Height diganti jadi 30x30 jadi seperti ini
Sekarang,, di kotak encounters,, dikasih enemy yang kamu buat..
Klo udah tinggal klik OK
Sekarang kita coba bikin map
Coba klik di bagian air
Sekarang coba klik icon Flood Fill(cet tumpah) sekarang klik pada map yang berwarna
kotak kotak biru..
Klo sudah coba klik di tileset bagian rumput
Bikin kayak pulau,, contoh
Coba bikin pulau lain,, contoh
(itu saya preview dengan skala 1:2)
Sekarang,, coba bikin gunung,, kastil,, kota,, dll
Di tab B
Nah,,udah dulu untuk map,, untuk map lain bisa buat sendiri,, kalo ada yang gak
mengerti,, tanya aja langsung ke saya via email (evanandasatria@gmail.com) atau
facebook ( https://www.facebook.com/evananda.satriya) klo email sih jarang saya buka,
mending langsung via facebook aja..
4. Editing Event
Sekarang kita bikin event yang simple dulu deh,, kita bikin message event
Coba klik pada icon kepala dan tubuh warna biru
Sekarang klik dua kali pada map,, terserah dimana,, pokoknya passable,, sekarang akan
terbuka window seperti ini
Klik dua kali pada graphic,, lalu pilih terserah yang mana..
Sekarang klik dua kali pada konten, trus klik ShowText.. coba ketik Hello, how are you
terus pilih face graphicnya,, klo saya sih gini
Sekarang coba bikin message untuk player kayak gini
Lagi
Nah biar si abang brewok ini ngomong see you terus di bikin switch dahulu
Coba bikin event terus klik control switches kasih dengan nama message kek gini
Klo udah, bikin event page baru,, klik New Event page, terus di kiri atas,, Condition,,
Switch di centang,, pilih switch Message tadi,, kek gini
Sekarang, tambahin graphic kaya yg tadi,,
Terus bikin event baru show text kayak gini
Sekarang coba testplay, dan hasilnya seperti ini
Udah dulu untuk eventing,, kalo ada yang gak ngerti langsung kontak saya,,
Atau coba gabung di grup facebook kita
https://www.facebook.com/groups/rpgmakervx.ace.xp/
5. Formulas
Kalo masalah formula,, saya gak jelasin deh,, banyak soalnya,, untung ada temen saya
yang mengetik itu semua,,
:
Coba kamu buka database RPGVXAce, terus pilih tab Skills, lihat bagian formula pada skill Attack. Pasti
ada tulisan seperti ini :
a.atk * 4 - b.def * 2
Itu adalah formula/rumus yang digunakan Ace untuk mengkalkulasi damage dasar dari sebuah serangan
biasa. Ingatlah hal ini :
a = user/caster/yang pake skill
b = target/yang kena skill
v = variabel
Ketiga huruf itu yang akan kita gunakan nantinya untuk menulis formula damage buatan sendiri. Dengan
contoh diatas, berarti damage yang akan dihasilkan :
attack user X 4 - defense target X 2
Angka 4 dan 2 diformula itu bisa diganti dengan angka berapapun terserah kamu yang pengen ngebuat
rumus sendiri. Dicontoh ini saya coba menggunakan kebanyakan
angka-angka itu, males saya bikin angka yang laen, kalopun ada paling cuman sedikit. Let's continue. :3
PENERAPAN SKILL DASAR :
Itu untuk skill attack biasa doank. Gimana kalo misalnya kita buat skill Shield Attack, damagenya
berdasarkan kekuatan defense dari user? Try this :
a.def * 4 - b.def * 2
Gimana kalo Mind Attack, damagenya berdasarkan kekuatan magic dari user?
a.mat * 4 - b.def * 2
Skill Mind Crush, damagenya berdasarkan kekuatan magic dari user dan ditahan/dikurangi dengan
kekuatan pertahanan magic dari target :
a.mat * 4 - b.mdf * 2
Skill Speedster, damagenya berdasarkan kekuatan agility dari user :
a.agi * 4 - b.agi * 2
Skill Gravity, damagenya setengah kali dari hp target yang tersisa :
b.hp / 2
Itu contoh penerapan skill dasar dari parameter-parameter dasar yang kita udah tau semuanya. Kalo mau
lebih tau lagi tentang parameternya, coba kamu sorot tulisan formula pada bagian skill, ntar muncul
popup window penjelasannya.
PENERAPAN SKILL MENENGAH :
Penerapan skill menengah mencakup skill-skill dengan berbagai kondisi percabangan. Kamu pasti tau
kan format penulisan di event conditional branch?
Conditional Branch : Kondisinya
Kalo benar pernyataan disini yang dijalanin
else
Kalo salah pernyataan disini yang dijalanin
Branch End
Itu versi eventnya. Kalo versi scriptnya kira-kira modelnya seperti ini :
if kondisi
pernyataan benar
else
pernyataan salah
end
Wah gimana nulis skill kondisionalnya kalo bisa maken 5 baris gitu doank untuk perintah dasarnya?
Tenang-tenang, 5 baris perintah dasar itu kita bisa singkat menjadi seperti ini :
if kondisi ; pernyataan benar ; else ; pernyataan salah ; end
atau kayak gini :
kondisi == kondisinya ? pernyataan benar : pernyataan salah
Tanda titik koma (;) menggantikan penggunaan baris baru pada script nantinya, jadi kita bisa menyingkat
berbagai script yang panjang dan yang berbaris-baris dengan tanda titik koma (;). Dalam penulisan
damage formula kita akan menggunakan tanda itu dikarenakan kolom damage formula hanyalah satu
baris tingginya. :v
Ayo kita coba buat beberapa skill dengan penerapan kondisi-kondisi tersebut.
Skill Reaper Heal, jika target heal adalah Erik (Erik di database actor urutan ke 1) maka efek healingnya
jadi 2000 HP, selain Erik hanya 100 HP heal :
b.id? == 1 ? 2000 : 100
Skill Reaper Suicide, skill yang memberikan damage tertinggi tapi cost caster sebagai tumbalnya. Wah
ganas yah skillnya :D :
a.add_state(1); a.atk * 999;
Skill Holy Terence, skill yang berdasarkan kekuatan attack dari Terence (Terence di database aktor
urutan ke 3) :
$game_actors[3].atk * 10
Skill Bone Crack, damage akan bertambah 2X ketika switch nomor 1 ON. Kalo switch OFF, damage
normal :
$game_switches[1] ? (a.atk - b.def) * 2 : a.atk - b.def
Skill Bone Crush, damage akan bertambah X lipat seiring bertambahnya variabel nomor 1 :
$game_variables[1] * a.atk
bisa juga disingkat kaek gini :
v[1] * a.atk
Skill Fissure, damagenya akan menyisakan 1 HP pada target (skill tidak bisa membunuh target karena
akan selalu tersisa 1 HP) :
b.hp - 1
Itu contoh dari penerapan skill tingkat menengah.
PENERAPAN SKILL LANJUT :
Penerapan skill lanjut hanyalah gabungan dari penerapan skill dasar dan menengah yang ditambahkan
beberapa logika script yang gile. :3
Coba buat skill yang seperti ini.
Skill Nether Strike, semakin sedikit hp target, semakin sakit damagenya :
a.atk * 5 + ((b.mhp - b.hp)/100) * 5
Angka 100 itu sebenarnya buat ngescale damagenya biar target ga langsung mati saat kena skill. Bisa
diganti dengan scale berapapun terserah kamu.
Skill Break Raid, semakin sedikit mp caster, semakin sakit damagenya :
a.mat * 5 + ((a.mmp - a.mp)/100) * 5
Skill Magic Raid, semakin banyak mp caster, semakin sakit damagenya :
a.mat * 2 + a.mp / 2
Skill Power Strike, semakin banyak hp target, semakin sakit damagenya :
a.atk * 2 + a.hp / 2
Skill Dice Gambler, damagenya berdasarkan hasil pelemparan 2 buah dadu. Setiap mata dadu yang
muncul, damagenya dikalikan 100. Kalo mata dadu yang muncul adalah mata 1 pada kedua dadu,
damagenya jadi 1. Kalo mata dadu yang muncul adalah mata 6 pada kedua dadu, damagenya jadi 9999 :
c=1+rand(6);d=1+rand(6);if c==1 && d==1;1;elsif c==6 && d==6;9999;else;(c+d)*100;end
Sepertinya makin advance aja yah. Saya kasih penjelasan singkat. Variabel c dan d yang ada di formula
tadi mewakili dadu pertama(c) dan dadu kedua(d). Ingat yang ditulis sebelumnya diatas, untuk
penggunaan variabel jangan gunakan huruf a, b, dan v. Gunakan huruf/kata lain untuk memakai fungsi
variabel. Diskill ini memang terlihat advance karena penggunaan variabel dan penggunaan kondisi
bercabang dijadikan satu.
Skill Toxic Curse, saat digunakan menyebabkan caster dan target terkena Poison (Poison di database
state urutan ke 2) :
a.add_state(2);b.add_state(2);a.atk * 4 - b.def * 2
Formula damagenya diletakkan paling akhir karena kalkulasi diadakan setelah semua requirements
terpenuhi. Kalo misalnya formula damagenya kamu tulis di awal, maka yang ada malahan no damage
namun tetap kena Poison.
Skill Hunting, kalo digunakan saat equip Shortbow (Shortbow di database weapon urutan ke 31), maka
damagenya akan menjadi 5X, selain memakai Shortbowdamagenya 2X :
a.weapons.include?($data_weapons[31]) ? a.atk * 5 : a.atk * 2
Sepertinya skill Hunting diatas hanya bisa dipake sama aktor doank, soalnya hanya aktor yang bisa
menggunakan equipment weapon. Selebihnya untuk enemy belum dicobain seh. :P
Skill Melting Blood (namanya sama kaek finishernya MaloMyotismon di DMW3 :3 ), damage akan
menjadi 3X kalo target terkena status Bleeding (misalnya Bleeding di database state urutan ke 26), selain
itu damage normal :
b.state?(26) ? (a.atk * 4 - b.def * 2) * 3 : a.atk * 4 - b.def * 2
Skill Union Attack, damage akan menjadi 5X kalo saat Erik menggunakan skill ini ada Natalie di party
(Erik dan Natalie di database aktor masing-masing urutan ke 1 dan 2), selain itu damage normal :
a==$game_actors[1]&&$game_party.members.include?($game_actors[2]) ? (a.atk * 4 - b.def * 2) * 5 :
a.atk * 4 - b.def * 2
Skill diatas (kayaknya lagi) tidak bisa digunakan oleh enemy dikarenakan deklarasi $game_actors yang
hanya dikhususkan untuk aktor saja damagenya.
Skill Final Strike, damage maksimalnya dibatasi hanya sampe 5000 damage doank :
[a.atk * 4 - b.def * 2, 5000].min
Maksud dari .min itu adalah program mengambil nilai terendah dahulu sebagai array indeks pertama,
kemudian nilai tertinggi di array indeks kedua, lalu mengevaluasi setiap nilai di array tersebut dengan
.min, kalau-kalau saja nilai indeks pertama >nilai indeks kedua. Kalau memang melewati, maka nilai
indeks kedua yang akan dijalankan.
Skill Final Crush, damage minimalnya dibatasi sampe 1 doank, untuk menghindari no damage saat def
target >atk caster :
[a.atk * 4 - b.def * 2, 1].max
Maksud dari .max itu adalah program mengambil nilai tertinggi dahulu sebagai array indeks pertama,
kemudian nilai terendah di array indeks kedua, lalu mengevaluasi setiap nilai di array tersebut dengan
.max, kalau-kalau saja nilai indeks pertama <nilai indeks kedua. Kalau memang melewati, maka nilai
indeks kedua yang akan dijalankan.
Skill Rain Shot, mentarget 3 battler secara acak. Setiap damage yang diberikan ke target, 1/2 nya akan
ngeheal caster :
c=2*(a.atk-b.def);a.hp+=c/2;c
Variabel c mewakili damagenya. Baris kedua adalah penambahan HP untuk aktor berdasarkan
damage(variabel c) yang kena ke target. Baris ketiga eksekusi damagenya.
Karena target battler adalah 3 secara acak, formula diatas akan berulang.
Skill Hell Stack, jika target terkena Poison, Blind, Silence, dan Confusion (urutannya di database state
nomor 2,3,4,5), setiap state yang terkena target akan menambah damagenya 100 :
c=4*a.atk-2*b.def;for d in [2,3,4,5];if b.state?(d);c+=100;end;end;c
Baris pertama cek formula biasa, return hasilnya. Baris kedua cek array states apa saja yang akan
diikutsertakan dalam penambahan damage. Baris ketiga cek apakah setiap state yang disertakan tadi
ada pada target. Baris keempat penambahan damagenya jika memang state yang diikutsertakan ada
pada target. Baris terakhir eksekusi damage.
Skill Venom Strike, skill yang meracuni target jika digunakan saat HP target dibawah 50%. Persentase
kemungkinan terkena Poison adalah 50% :
c=rand(2);b.add_state(2) if b.hp<=b.mhp/2 and c==1;a.atk * 4 - b.def * 2
Variabel c untuk random persentasenya. Baris kedua HANYA AKAN DIJ ALANKAN kalo HP target
dibawah 50%. Baris ketiga eksekusi damagenya.
PENERAPAN SKILL EXTREME
Kok tingkat extreme?
Ya dibilang extreme karena saatnya kita nyentuh SCRIPT. :3
Misalnya, game kamu punya skill Dice Gambler dengan level, jadi ada Dice Gambler level 1, level 2, level
3, level 4, level 5. Terus kalkulasi damagenya ga beda jauh dengan skill Dice Gambler Level 1. Akhirnya,
dengan formula yang hampir sama kamu akan copas formulanya di skill level 2, 3, 4, dan 5. Terus tiba-
tiba
kamu pengen rubah base damagenya Dice Gambler Level 1. Berarti skill level setelahnya harus copas
lagi donk formulanya? :3 Ribet banget yah. :D :D
Untuk mempersingkat waktu penulisan formula, kamu bisa mendeklarasikan sebuah metode baru untuk
kalkulasi damage formulanya di class Game_Battler. Kenapa harus di Game_Battler? Liat struktur data
dari RGSS3 :
Game_BattlerBase ->Game_Battler ->Game_Actor
|
|
V
Game_Enemy

Yang battle kan aktor dan enemy, ingat ya bukan NPC lho. :P
Aktor dan enemy di struktur data mempunyai pewarisan metode dari Game_Battler dan
Game_BattlerBase, dengan kata lain apa saja yang kamu tulis di Game_BattlerBase ama Game_Battler
bakalan bisa digunakan oleh aktor dan enemy.
Lha kok ga ditulis di Game_BattlerBase aja?
Kalo gitu coba ke script editor, tekan Ctrl +Shift +F , ketikan di kolom pencarian def atk. Nemunya di
Game_BattlerBase, baris ke 59 kan? Metode def atk untuk mengambil parameter attack power dari aktor
dan enemy, begitu juga def parameter-parameter yang lain. Emang sih pengambilan parameter dilakukan
di Game_BattlerBase, TAPI daritadi kan kita ngebahas tentang DAMAGE, sementara kalkulasi damage
dilakukan di Game_Battler. Maka, nantinya kamu harus nulis damage formulanya di Game_Battler. Kan
pewarisan utamanya berasal dari Game_BattlerBase, jadi ga usah takut Game_Battler ga ada metode
def atk, karena sudah diturunkan kepada Game_Battler lewat pewarisannya Game_BattlerBase. :)
Kita ambil saja contoh skill Dice Gambler (saya suka liat kondisi skillnya, ajib dah :P). Line sepanjang itu
kita akan singkat dengan membuat metode baru di script, tepatnya di class Game_Battler seperti yang
sudah saya jelaskan diatas. Coba insert script baru, terus tuliskan seperti ini :
class Game_Battler < Game_BattlerBase
def skill_dice_gambler(a,b)
c = 1 + rand(6)
d = 1 + rand(6)
if c == 1 && d == 1
return 1
elsif c == 6 && d == 6
return 9999
else
return (c+d) * 100
end
end
end
Lebih enak dibaca lewat script daripada cuman satu baris box formula yah? Wkwkwkwkwkwkk. :D :D
Berarti daritadi kamu cuman mau ngerjain saya dengan nulis formula yang susah dibaca ntu?
Eh eh, enak saja, ini cuman mempermudah doank dalam penulisan formula. Kalo kamu kagak tau logika
formulanya, masa harus langsung sentuh script? :P
Sekarang dengan deklarasi skill_dice_gambler(a,b) didalam script, maka penulisan damage formulanya
akan lebih pendek lagi. Coba deh kamu tulis seperti ini di damage formula box skill Dice Gambler :
a.skill_dice_gambler(a,b)
Formulanya sekarang pendek bener kan? :v :v
Yang dilakukan skill saat box formula isinya bukan lagi kalkulasi damage, adalah mencari tulisan metode
yang sama persis dengan metode skill yang kamu tulis tadi (skill_dice_gambler) beserta argumen
didalamnya (a,b). Skill mencarinya di Game_Battler, karena disitulah kalkulasi damage terjadi. Saat
ketemu, akan dievaluasi satu per satu isinya apakah berisi formula damage atau tidak. Kalo ya, damage
dijalankan, kalo tidak, error. :3
Misalkan itu adalah untuk skill Dice Gambler Level 1. Kalo damage skill Dice Gambler Level 2 gimana
donk? Pastilah damagenya akan lain lagi donk, lebih besar dari damage level 1. Okay, kita akan merubah
sedikit dari script yang sudah kita tulis tadi diatas. Akan ditambahkan beberapa variabel tambahan :
class Game_Battler < Game_BattlerBase
def skill_dice_gambler(a,b,dmg_min,dmg_max,dmg_normal)
c = 1 + rand(6)
d = 1 + rand(6)
if c == 1 && d == 1
return dmg_min
elsif c == 6 && d == 6
return dmg_max
else
return (c+d) * dmg_normal
end
end
end
Karena damage minimal level 1 adalah 1, damage maksimalnya adalah 9999, damage normalnya adalah
dikalikan 100, maka untuk level 2 kita misalkan :
- Damage minimal(saat kedua mata dadu adalah 1) =50
- Damage maksimal(saat kedua mata dadu adalah 6) =99999
- Damage normal(saat kedua mata dadu tidak sama-sama 1 dan 6) =X 200
Kita tuliskan seperti ini di box formula skill Dice Gambler Level 2 :
a.skill_dice_gambler(a,b,50,99999,200)
Perhatikan baik-baik, sebelumnya kan kita nulis formulanya seperti ini :
a.skill_dice_gambler(a,b)
Sekarang kita nulis formulanya seperti ini :
a.skill_dice_gambler(a,b,50,99999,200)
Perbedaannya adalah pada argumen yang disertakan (argumen itu apa saja yang ada didalam tanda
kurung saat deklarasi metode baru). Argumen sebelumnya hanya berisi a dan b, sementara argumen
selanjutnya (setelah diedit) menjadi a, b, dmg_min, dmg_max, dmg_norml. 3 variabel yang terakhir itu
yang akan kita gunakan untuk mendeklarasikan damage minimal, maksimal, dan damage normalnya
(nama variabel terserah, yang penting jangan tabrakan dengan variabel yang sudah ada sebelumnya).
Liat juga bagian perhitungan damagenya :
Yang lama :
if c == 1 && d == 1
return 1
elsif c == 6 && d == 6
return 9999
else
return (c+d) * 100
end
Yang baru :
if c == 1 && d == 1
return dmg_min
elsif c == 6 && d == 6
return dmg_max
else
return (c+d) * dmg_normal
end
Saat script mengembalikan (return) nilai yang sudah dievaluasi ke kalkulasi damage, sebelumnya kita
hanya menuliskan angka statis yang tidak bisa dirubah-rubah. Versi lamanya ada angka 1 sebagai
damage minimal, 9999 sebagai damage maksimal, 100 sebagai damage normal. Versi barunya tidak ada
angka disitu, KARENA angka damagenya kita sudah sertakan saat pemanggilan metode damage di box
formula. Liat kan ada angka 50, 99999, dan 200 di damage formulanya. Coba liat urutan argumen yang
sudah kita edit sebelumnya :
(a,b,dmg_min,dmg_max,dmg_normal)
Maka urutan angka tersebut saat disimpan di variabel dan diterjemahkan ke dalam script akan menjadi :
- dmg_min =50
- dmg_max =99999
- dmg_normal =200
Versi barunya, saat return nilai, script mencari variabel dmg_min, dmg_max, dan dmg_normal yang
sudah berisi nilai tadi itu. Tulisan skill_dice_gambler juga bisa kamu ganti-ganti, terserah kamu, misalnya
lempar_dadu, atau ga dadu_gila. Cara manggilnya, sesuaikan dengan nama metode yang kamu rubah
tadi itu. Misalnya nama metodenya jadi seperti ini :
def dadu_gila(a,b,dmg_min,dmg_max,dmg_normal)
blablabla sampe selesai scriptnya
Berarti kamu nulisnya di box formula :
a.dadu_gila(a,b,50,99999,200)
Simpel kan?
Simpel kepala lo, panjang tau. :v :v
Disarankan untuk menggunakan script versi baru dari skill Dice Gambler, karena akan lebih bervariasi
damagenya dibanding versi lama. :)
Itu hanya untuk skill Dice Gambler, skill lain gimana donk?
Okay, well dengan deklarasi metode di class yang sama kamu juga bisa bikin metode perhitungan
damage yang berbeda-beda. Tapi ingat, tulis deklarasi metode baru SETELAH akhir (end) dari deklarasi
metode sebelumnya, kalo ga error ditanggung pembeli. Nama metodenya juga ga boleh sama. :3 :3
Saya kasih contoh, misalnya skill Melting Blood kita mau buatin deklarasi metodenya di script. Script
sebelumnya seperti ini :
class Game_Battler < Game_BattlerBase
def skill_dice_gambler(a,b,dmg_min,dmg_max,dmg_normal)
c = 1 + rand(6)
d = 1 + rand(6)
if c == 1 && d == 1
return dmg_min
elsif c == 6 && d == 6
return dmg_max
else
return (c+d) * dmg_normal
end
end # <----- tekan enter di ujung end ini, karena ini end dari metode skill_dice_gambler
end
Sekarang bakalan seperti ini :
class Game_Battler < Game_BattlerBase
def skill_dice_gambler(a,b,dmg_min,dmg_max,dmg_normal)
c = 1 + rand(6)
d = 1 + rand(6)
if c == 1 && d == 1
return dmg_min
elsif c == 6 && d == 6
return dmg_max
else
return (c+d) * dmg_normal
end
end

end
Udah ada tempat kosong kan? Mari menulis deklarasi metode baru. :)
class Game_Battler < Game_BattlerBase
def skill_dice_gambler(a,b,dmg_min,dmg_max,dmg_normal)
c = 1 + rand(6)
d = 1 + rand(6)
if c == 1 && d == 1
return dmg_min
elsif c == 6 && d == 6
return dmg_max
else
return (c+d) * dmg_normal
end
end

def skill_melting_blood(a,b,state_id,dmg_max)
if b.state?(state_id)
return (a.atk * 4 - b.def * 2) * dmg_max
else
return a.atk * 4 - b.def * 2
end
end
end
Kemudian, dengan contoh diatas kita akan asumsikan state Bleeding adalah state urutan ke 26 di
database, dan saat target terkena state Bleeding, damagenya akan dikalikan dengan 10. J adi, nulisnya di
box formula skill Melting Blood :
a.skill_melting_blood(a,b,26,10)
Gimana? Ribet kan? :3 :3
Emang gitu kalo bikin script, rada ribet sendiri. Tapi kalo kamu sudah tau metode yang seperti ini, akan
lebih mudah lagi nantinya untuk kamu yang ga usah mikir jauh-jauh menuhin baris di box formula,
mendingan penuhin baris di script aja dengan formulanya. :P :P
Deklarasi metode-metode formula seperti diatas bisa juga dilakukan di class Game_Actor dan
Game_Enemy, mengingat pewarisan utama dari kedua class tersebut adalah Game_Battler dan
Game_BattlerBase. Tapi jangan sampe tumpang tindih ya, kamu udah nulis metode skill di
Game_Battler, terus nulis lagi di Game_Actor. :v
Dan juga, kalo kamu nulis metodenya hanya di Game_Actor doank, berarti skill tersebut hanya untuk
aktor, tidak boleh disertakan di action listnya enemy, atau ga bakalan error. Begitu juga sebaliknya untuk
Game_Enemy. Makanya tadi nulisnya di Game_Battler, karena pewarisan metodenya adalah untuk
Game_Actor dan Game_Enemy, jadi aktor dan enemy bisa menggunakan skill yang sama.
Tambahan sedikit, untuk skill physical dan magical juga bisa dibuatin kondisinya didalam script. Ini
contohnya (kita tambah saja baris baru di script sebelumnya):
class Game_Battler < Game_BattlerBase
def skill_dice_gambler(a,b,dmg_min,dmg_max,dmg_normal)
c = 1 + rand(6)
d = 1 + rand(6)
if c == 1 && d == 1
return dmg_min
elsif c == 6 && d == 6
return dmg_max
else
return (c+d) * dmg_normal
end
end

def skill_melting_blood(a,b,state_id,dmg_max)
if b.state?(state_id)
return (a.atk * 4 - b.def * 2) * dmg_max
else
return a.atk * 4 - b.def * 2
end
end

def physical_magical(a,b,magical=false)
return a.mat * 4 - b.def * 2 if magical
return a.atk * 4 - b.def * 2
end
end
Sekarang tulis seperti ini di formula dari normal attack :
physical_magical(a,b)
Lha, itu kan ada 3 argumen, kok ditulis cuman 2? :3
Ya, karena argumen ketiga sudah ada nilai defaultnya yaitu false.
Itu lagi, magical dari mana tuh? Saya cari def magical ga ketemu-ketemu.
Well, magical disini kan hanya variabel bung. :v :v
Kalo mau set damagenya ke magical, tinggal tambah argumen true di akhir dari argumen tadi.
Phew, panjang juga tutorialnya. Anyway, selamat berkreasi dengan damagemu sendiri. :P :P
Sumber :
http://cobbtocs.co.uk/wp/?p=271
http://cobbtocs.co.uk/wp/?p=286
http://www.13th-info.blogspot.com/2013/06/troyz-custom-damage-formula.html
Thanks to Agung Lightz :D
6. Script
Apa itu script??? Script disini adalah suatu setting untuk menjalankan game,, kalo kamu
mau nambahin script disitu bisa kok,,
1. Cari script di search engine(google, Babylon, dll)
2. Kalau udah ketemu, buka Script Editor dan kalau tidak berupa demo,, coba insert
script di script editor dibawah material namun diatas main, lalu copy dan paste
script tersebut, kalau berupa demo langsung aja copas file script di script editor yg
ada di demo tsb
3. Untuk script yg plug and play, bisa langsung di testplay dan dilihat perubahannya, klo
yang gak plug and play alias harus melewati config terlebih dahulu, saya ajarin
sedikit tentang script,, yaitu Basic Ruby Syntax,,
Sebenernya sih saya males ngetik,, berhubung ada temen saya yang bikin
tutorialnya,, nih, kesini aja http://theolized.blogspot.com/2013/04/tutorial-rgss3-
bahasa-indonesia.html
Udah, gitu aja untuk script,, untuk spriting,, pasti segera saya update..

Anda mungkin juga menyukai