Membangun Ragnarok online private server tentu belum lengkap tanpa custom item. Custom item bisa berubah Headgear, Usable Item, atau sprite yang di modifikasi. Yang paling populer pada Ragnarok private server adalah menambah headgear dengan stats yang dimodifikasi. Namun, sayangnya menambah custom item sekarang ga se-simple dulu. Kebanyakan developer baru kebingunan dengan sistem yang sekarang (termasuk saya).
Dalam tutorial ini saya akan memberikan contoh bagaimana cara menambah custom item (bukan membuat custom item atau custom headgear). Tutorial ini sebenernya mudah, namun karena banyaknya file yang harus dirubah, sering kali membuat kita pusing sendiri. Untuk itu, perlu kita pelajari dulu sebentar.
NOTE : Menambah custom item pada ragnarok online private server lebih rumit dari membuat servernya, jadi kamu harus benar-benar teliti, siapkan buku dan buat catatan dengan versimu sendiri.
NOTE : Menambah custom item pada ragnarok online private server lebih rumit dari membuat servernya, jadi kamu harus benar-benar teliti, siapkan buku dan buat catatan dengan versimu sendiri.
Seperti yang sudah saya jelaskan pada artikel Membangun Server dan Database, agar game dapat berjalan dengan baik, maka data server dan client harus sama, untuk itu ada beberapa file yang akan kita rubah/tambahkan isi nya.
Pada cara ini, saya menggunakan database item yang ada di dalam folder db. Untuk kamu yang menggunakan database pada mysql, kamu bisa masukan manual, caranya sama seperti Menambah Akun GM, cuma beda tabel yang dirubah.
Pada server (emulator), file yang akan kita gunakan adalah :
1. item_db.txt /.conf, pilih pada folder pre-re atau renewal (Sesuai fitur server yang dibuat)
2. item_db2.txt / conf (Jika ada)
Pada item_db.txt / conf, kita bisa gunakan untuk base dari item yang akan kita buat. Sedangkan nantinya. item yang akan kita tambahkan, dimasukan ke item_db2.txt / ,conf
Pada client (data folder / grf), file yang akan kita perlukan adalah :
idnum2itemdesctable.txt
idnum2itemdisplaynametable.txt
idnum2itemresnametable.txt
num2itemdesctable.txt
num2itemdisplaynametable.txt
num2itemresnametable.txt
File idnum2 adalah file berisikan item-item yang dapat langsung digunakan, sedangkan num2, biasanya untuk dropan item dan item yang belum di identifikasi. Jika kamu hanya ingin menambah item yang bisa langsung digunakan, biasanya kita akan lebih sering mengedit idnum2.
itemdesctable.txt berisi deskripsi item saat kita mengklik kanan item pada inventory.
itemdisplaynametable.txt berisi Nama item yang muncul saat disorot mouse.
itemresnametable.txt berisi nama file item yang akan diproses agar tampilannya muncul.
Optional, kita juga akan memerlukan file itemslotcounttable.txt untuk mengatur slot item.
Lalu pada masuk ke folder lua files/datainfo kita akan membutuhkan :
accessoryid.lua
accname.lua
accessoryid.lua berisi index dari viewID headgear
accname.lua berisi index file headgear yang sama pada resnametable.txt secara urut
NOTE : file asli berformat .lub walau beberapa hexed bisa membaca .lua
Terakhir, Untuk client diatas tahun 2012, kita juga harus menyiapkan satu file lagi, kalau Translation Data tidak tersedia file ini, buka folder Ragnarok Online mu, lalu masuk ke folder System, kita akan gunakan file bernama ItemInfo.lub
Setelah file-file tersebut kamu ketahui, sekarang kita juga harus perlu mengetahui struktur dari client ragnarok online atau data folder/GRF file. Karena kita akan menambah Custom Headgear, jadi saya hanya akan memberikan contoh folder-folder yang akan dipakai dalam proses ini.
Didalam GRF terdapat banyak file dan folder, karena ragnarok online adalah game buatan dan korea dan umurnya cukup lama, struktur nya masih banyak dalam bahasa korea (Hongul). Dan untuk komputer kamu yang ga pernah menambah Language library, biasanya akan makin bingung, karena jika GRF tersebut di extract, huruf korea nya berubah menjadi ASCII seperti pada gambar dibawah ini.
Maka dari itu kita setidaknya harus hapal dimana folder yang akan sering kita gunakan. Saya ingatkan kembali, folder-folder diatas adalah folder yang paling sering digunakan saat menambah custom headgear.
- Untuk file seperti idnum2itemdesctable.txt biasanya ada di root pada GRF, jadi begitu kamu membuka GRF, kamu tinggal scroll kebawah dan file tersebut dapat langsung kamu temukan.
- Untuk file ber-ekstensi .lub (atau .lua) biasanya ada didalam folder lua files.
- Untuk file sprite ber-ekstensi .spr dan .act biasanya masuk ke folder sprite
- Dan untuk file-file gambar berformat BMP dan JPG biasanya masuk ke folder Texture
- Sprite drop adalah sprite yang akan muncul ketika item didrop ke tanah biasanya tidak ada kode khusus, misal angel_wing.act dan angel_wing.spr
- Sprite view (Men/Women), adalah sprite yang ditampilkan ketika headgear digunakan, biasanya ada kode khusus (Men/Women), misalnya 여_angel_wing.act dan 여_angel_wing.spr
Perlu diperhatikan, Men/Women biasanya untuk item dengan gender exclusive, tapi sekarang kebanyakan headgear sudah bisa digunakan karakter gender Men/Women. Jadi nantinya kamu tidak perlu bingung memilih mana folder Sprite view untuk Men/Women.
Mari kita mulai untuk menambah Headgear, kamu bisa menggunakan file headgear yang ingin kamu coba tambahkan atau duplikat dari file yang sudah ada dan mengganti namanya. Disini saya akan menggunakan Angel Wing dan menggunakan sprite yang sudah ada didalam data.grf official. Angel Wing ini akan saya ganti nama menjadi White Angel.
File yang harus kamu siapkan
1. sprite view (biasanya ada 2 atau 4 file, dengan dua format ACT dan SPR)
2. sprite drop (biasanya ada 2 file ACT dan SPR)
3. image deskripsi (biasanya dengan format BMP 70x100 pixel 24 bit)
4. image thumbnail (biasanya dengan format BMP 24x24 pixel 24 bit)
5. Jangan ada spasi pada nama file, gunakan garis bawah atau tanpa spasi !
Kita tidak akan langsung menambahkan item ke dalam data.grf tapi kita akan membuat patch dan nantinya akan di merge menggunakan GRF editor.
Langkah - Langkah menambah headgear :
A. Menyiapkan Folder
F. Mengaplikasikan Patch File ke Custom.grf
Sampai pada tahap terakhir, kalau kamu mengikuti tutorial ini dengan baik, maka sekarang kamu bisa langsung menambahkan item custom yang kamu buat pada Custom GRF server mu. Perlu diperhatikan, jangan tambahkan custom item mu pada file GRF official seperti data.grf, rdata.grf, atau sdata.grf kecuali kamu benar-benar mengerti dengan apa yang kamu lakukan.
Jika kamu menggunakan patch read data folder first pada saat meng-hexing client.exe mu, maka kamu bisa langsung mencoba nya dengan cara membuat folder data pada folder Ragnarok Online mu, dan mengcopy paste file yang sudah kamu edit.
atau, kamu bisa membuat grf baru yang berisi data item yang sudah kamu edit, dan nantinya kamu tinggal menambahkan pada file DATA.ini.
NOTE : cara membuat file grf https://adani-game.blogspot.com/2018/09/membangun-client-side.html
Untuk mencobanya, kamu bisa langsung masuk ke dalam game, dan menggunakan command @item
G. Pada Client Terbaru
Untuk client versi diatas (Renewal Clients > 2012-04-10a atau Main Clients > 2012-07-10a), kita tidak memerlukan lagi file-file berikut :
- idnum2itemdesctable.txt
- idnum2itemdisplaynametable.txt
- idnum2itemresnametable.txt
- num2desctable.txt
- num2itemdisplaynametable.txt
- num2itemresnametable.txt
- itemslotcountable.txt
- accessoryid.lub (Hanya perlu untuk melihat ViewID terakhir, jika file nya uptodate)
- accname.lub
karena semua file setting sudah ada dalam satu file yaitu ItemInfo.Lub. Perlu diperhatikan, ItemInfo yang kita pakai harus sesuai dengan settingan servertype di clientinfo.xml.
- Jika servertype mu primary, gunakan ItemInfo.lub
- Jika servertype mu sakray, gunakan ItemInfo_Sak.lub
Letak file ItemInfo ada didalam folder System pada Ragnarok Online mu.
NOTE: perlu diperhatikan, kamu harus tetap menggunakan patch read lua before lub jika ingin menggunakan file berekstensi Lua pada saat meng-hexing client. dan pastikan deskripsi itemnya sesuai dengan server mu (renewal atau pre-renewal)
Format dari ItemInfo.lub
Proses edit file ItemInfo.lub
Contoh ItemInfo.lub dari Item Custom yang saya pasang
TIPS :
Sampai disini, selamat, kamu sudah berhasil membuat patch dan menambahkan custom item mu sendiri, Happy RO ^^ !
idnum2itemdisplaynametable.txt
idnum2itemresnametable.txt
num2itemdesctable.txt
num2itemdisplaynametable.txt
num2itemresnametable.txt
File idnum2 adalah file berisikan item-item yang dapat langsung digunakan, sedangkan num2, biasanya untuk dropan item dan item yang belum di identifikasi. Jika kamu hanya ingin menambah item yang bisa langsung digunakan, biasanya kita akan lebih sering mengedit idnum2.
itemdesctable.txt berisi deskripsi item saat kita mengklik kanan item pada inventory.
itemdisplaynametable.txt berisi Nama item yang muncul saat disorot mouse.
itemresnametable.txt berisi nama file item yang akan diproses agar tampilannya muncul.
Optional, kita juga akan memerlukan file itemslotcounttable.txt untuk mengatur slot item.
Lalu pada masuk ke folder lua files/datainfo kita akan membutuhkan :
accessoryid.lua
accname.lua
accessoryid.lua berisi index dari viewID headgear
accname.lua berisi index file headgear yang sama pada resnametable.txt secara urut
NOTE : file asli berformat .lub walau beberapa hexed bisa membaca .lua
Terakhir, Untuk client diatas tahun 2012, kita juga harus menyiapkan satu file lagi, kalau Translation Data tidak tersedia file ini, buka folder Ragnarok Online mu, lalu masuk ke folder System, kita akan gunakan file bernama ItemInfo.lub
Setelah file-file tersebut kamu ketahui, sekarang kita juga harus perlu mengetahui struktur dari client ragnarok online atau data folder/GRF file. Karena kita akan menambah Custom Headgear, jadi saya hanya akan memberikan contoh folder-folder yang akan dipakai dalam proses ini.
Struktur Data Folder, data yang ada pada gambar bukan data keseluruhan pada GRF official. |
Dalam Kotak Merah: Huruf Korea dalam bentuk ASCII |
Sebelah kiri adalah root Folder, paling atas adalah root inti, sebelah kanan adalah isi masing-masing folder root. |
- Untuk file ber-ekstensi .lub (atau .lua) biasanya ada didalam folder lua files.
- Untuk file sprite ber-ekstensi .spr dan .act biasanya masuk ke folder sprite
- Dan untuk file-file gambar berformat BMP dan JPG biasanya masuk ke folder Texture
Letak masing-masing file didalam Data Folder, tidak boleh tertukar atau salah masuk folder. |
- Sprite view (Men/Women), adalah sprite yang ditampilkan ketika headgear digunakan, biasanya ada kode khusus (Men/Women), misalnya 여_angel_wing.act dan 여_angel_wing.spr
Perlu diperhatikan, Men/Women biasanya untuk item dengan gender exclusive, tapi sekarang kebanyakan headgear sudah bisa digunakan karakter gender Men/Women. Jadi nantinya kamu tidak perlu bingung memilih mana folder Sprite view untuk Men/Women.
Mari kita mulai untuk menambah Headgear, kamu bisa menggunakan file headgear yang ingin kamu coba tambahkan atau duplikat dari file yang sudah ada dan mengganti namanya. Disini saya akan menggunakan Angel Wing dan menggunakan sprite yang sudah ada didalam data.grf official. Angel Wing ini akan saya ganti nama menjadi White Angel.
Contoh sprite custom yang didapat dari hasil Download, ada 2 spirte view, 2 sprite drop, dan file pendukung lainnya. |
1. sprite view (biasanya ada 2 atau 4 file, dengan dua format ACT dan SPR)
2. sprite drop (biasanya ada 2 file ACT dan SPR)
3. image deskripsi (biasanya dengan format BMP 70x100 pixel 24 bit)
4. image thumbnail (biasanya dengan format BMP 24x24 pixel 24 bit)
5. Jangan ada spasi pada nama file, gunakan garis bawah atau tanpa spasi !
Kita tidak akan langsung menambahkan item ke dalam data.grf tapi kita akan membuat patch dan nantinya akan di merge menggunakan GRF editor.
Langkah - Langkah menambah headgear :
A. Menyiapkan Folder
- Buat folder baru dengan nama tanggal kamu membuatnya, misalnya: patch-17sep18.
- Didalam folder tersebut buat lagi folder bernama data
- karena kita akan menambah headgear, didalam folder tersebut buat lagi 2 folder bernama lua files, sprite dan texture
- Buka folder sprite, buat lagi 2 folder, bernama ¾ÆÀÌÅÛ dan ¾Ç¼¼»ç¸®
- Buka folder ¾Ç¼¼»ç¸® dan buat lagi 2 folder bernama ¿© dan ³²
- Kembali ke folder data, buka folder texture buat folder baru bernama À¯ÀúÀÎÅÍÆäÀ̽º
- buka folder À¯ÀúÀÎÅÍÆäÀ̽º dan buat 2 folder bernama collection dan item
- Terakhir, kembali ke folder data, buka folder lua files dan buat folder baru bernama datainfo
sekarang kamu sudah siap untuk menambah sprite headgear yang akan kamu tambahkan
NOTE :
- ³² = Men
B. Menyiapkan Sprite File
Seperti yang sudah saya jelaskan sebelumnya, disini saya akan menggunakan item Angel Wing yang saya ganti nama menjadi White Angel sebagai contoh. Jika kamu ingin menambah sprite headgear lain yang ingin kamu tambahkan, sesuaikanlah dengan nama sprite yang akan kamu gunakan.
- Masukan file Sprite Drop kedalam folder ¾ÆÀÌÅÛ
- Untuk Sprite View, jika kamu hanya mendapatkan 2 file, maka buat duplikat nya, lalu rename menjadi ¿©_White_Angel.act dan ¿©_White_Angel.spr, lalu ³²_White_Angel.act dan ³²_White_Angel.spr
- Ingat, ³² berarti untuk Men dan ¿© Women !
- Buka folder ¾Ç¼¼»ç¸® dan masukan file berawalan ³²_ kedalam folder ³² dan file berawalan ¿©_ kedalam folder ¿©.
- selanjutnya buka folder Collection, dan masukkan file BMP yang berukuran 70x100
- terakhir buka folder item, dan masukkan file BMP yang berukuran 24x24
NOTE :
Semua file harus bernama sama setelah masuk ke masing-masing folder kecuali untuk file yg masuk kedalam folder ³² dan ¿©.
Contoh, saya ingin menambahkan item bernama White Angel, semua file yang saya masukkan bernama White_Angel kecuali ¿©_White_Angel.act dan ¿©_White_Angel.spr, lalu ³²_White_Angel.act dan ³²_White_Angel.spr
C. Mengedit accname dan accessoryid
Setelah kamu memasukan file-file gambar dengan benar, waktunya untuk mendaftarkan item yang kita ingin gunakan kedalam game engine, agar saat headgear yang kita tambahkan bisa muncul. Pada client versi baru, salah satu nya adalah kita akan menggunakan accname.lub dan accessoryid.lub.
Namun kamu harus mengecek terlebih dahulu apakah file tersebut bisa diedit atau tidak, kamu bisa membukanya dengan Notepad++. Jika tampilannya seperti dibawah, maka kamu harus mencari file .lua nya terlebih dahulu. Kamu bisa mengambil nya didalam folder lua files pada Data Translation yang pernah kamu download.
Jika tampilannya seperti dibawah ini, kamu bisa langsung mengeditnya.
Sebenarnya kamu bisa menggunakan file ber-ekstensi .lua, dan nantinya kamu tinggal menambahkan option Read Lua Before Lub pada saat meng-hexing client mu. Tapi dengan tujuan menghindari pembajakan, kebanyakan developer memilih menggunakan file ber-ekstensi .lub seperti pada official server.
Tapi disini karena kita sedang belajar menambahkan headgear, maka kita bisa memilih mana yang sudah ada terlebih dahulu, kalau .lub file nya bisa langsung dibuka, kamu bisa langsung mengerjakannya. Namun jika .lub file nya di encrypt, kamu bisa menggunakan .lua
Pertama-tama copy paste accessoryid dan accname (.lub atau .lua) kedalam folder lua files/datainfo dari Translation Data yang kamu download sebelumnya.
kemudian buka file accessoryid.lua (atau .lub) dalam folder datainfo yang sudah kamu buat.
1. rAthena,
cari item_db.txt, file ini ada di folder db dan buka folder pre-re atau re (sesuai sistem yang kamu pilih pre-renewal atau renewal).
item.db rAthena masih menggunakan format yang sama dengan eAthena dan 3ceam atau emulator sebelum rAthena, jadi pengguna lama tidak akan merasakan perbedaan yang besar. Hanya saya pada rAthena versi terbaru, item_db2 ditiadakan.
Struktur dari item_db rAthena adalah
Sesuai format, kamu harus menulis kode menyamping kekanan, dan harus urut. Agar pekerjaanmu mudah, kamu bisa langsung mengcopy paste item yang sudah ada. Seperti misalnya item White Angel yang ingin saya tambahkan base nya dari Angel Wing, maka kode yang saya buat seperti berikut :
Kode Angel Wing sebelum dirubah :
Kode item yang diubah dari Angel Wing :
Yang saya rubah adalah :
2. Hercules
Namun kamu harus mengecek terlebih dahulu apakah file tersebut bisa diedit atau tidak, kamu bisa membukanya dengan Notepad++. Jika tampilannya seperti dibawah, maka kamu harus mencari file .lua nya terlebih dahulu. Kamu bisa mengambil nya didalam folder lua files pada Data Translation yang pernah kamu download.
Contoh file .lub yang di encrypt |
Jika tampilannya seperti dibawah ini, kamu bisa langsung mengeditnya.
Sebenarnya kamu bisa menggunakan file ber-ekstensi .lua, dan nantinya kamu tinggal menambahkan option Read Lua Before Lub pada saat meng-hexing client mu. Tapi dengan tujuan menghindari pembajakan, kebanyakan developer memilih menggunakan file ber-ekstensi .lub seperti pada official server.
Tapi disini karena kita sedang belajar menambahkan headgear, maka kita bisa memilih mana yang sudah ada terlebih dahulu, kalau .lub file nya bisa langsung dibuka, kamu bisa langsung mengerjakannya. Namun jika .lub file nya di encrypt, kamu bisa menggunakan .lua
Pertama-tama copy paste accessoryid dan accname (.lub atau .lua) kedalam folder lua files/datainfo dari Translation Data yang kamu download sebelumnya.
kemudian buka file accessoryid.lua (atau .lub) dalam folder datainfo yang sudah kamu buat.
- Format ACCESSORY_NAMA_ITEM =
- Karena saya ingin menambahkan Headgear baru bernama White Angel, maka saya menambahkan ACCESSORY_WHITE_ANGEL = 1392
- Perhatikan angka di belakang, angka ini adalah view ID, dimana angka ini adalah unik, tidak boleh ada nomer yang sama dalam 1 file, tidak boleh ada nama item yang sama dalam 1 file, dan tidak boleh ada nomer yang terlewat dan harus urut tidak boleh random.
- Pada daftar item terakhir, tidak boleh ada tanda koma seperti ID sebelumnya, jadi kalau kamu ingin menambah item baru, kamu tinggal menambahkan koma pada baris sebelumnya, dan tanpa koma pada item terakhir
- Nama Item harus sama dengan nama file yang kamu ingin tambahkan.
- Setelah selesai jangan lupa save
Struktur file : accessoryid (.lub atau .lua) |
Lalu buka file accname.lua (atau .lub) dalam folder datainfo yang sudah kamu buat.
- Format [ACCESSORY_IDs.ACCESSORY_NAMA_ITEM] = "_namaitem",
- karena saya ingin menambahkan item baru bernama White Angel, maka saya menambahkan [ACCESSORY_IDs.ACCESSORY_WHITE_ANGEL] = "_White_Angel",
- Nama item harus sama dengan file yang kamu tambahkan
- Format nama item pada sebelah kiri harus huruf kapital
- Format nama item pada sebelah kanan harus diawali garis bawah dan nama mengikuti nama file.
- Baris tidak boleh ada tanda koma
- Setelah selesai jangan lupa save
Struktur file : accname (.lub atau .lua) |
Sampai disini kamu selesai bekerja untuk membuat patch data grf yang nanti akan kamu tambahkan secara manual.
D. Mendaftarkan Item ID pada Server
Sekarang kamu harus menambahkan item pada server, berhubung rAthena dan Hercules memiliki format yang beda, maka tutorial nya akan saya bagi dua, kamu tinggal mencocokan emulator yang kamu pakai.
Walaupun format struktur dari kedua emulator berbeda, namun cara kerja dan fungsinya tetap sama. Untuk mendaftarkan Item kita pada server, kita perlu mengedit beberapa value, yaitu:
Walaupun format struktur dari kedua emulator berbeda, namun cara kerja dan fungsinya tetap sama. Untuk mendaftarkan Item kita pada server, kita perlu mengedit beberapa value, yaitu:
- ID = kode item dalam angka, tidak boleh ada penomoran yang sama.
- AegisName = nama yg didaftarkan pada server, penulisan harus berbeda satu sama lain, dan tidak boleh ada spasi, untuk item dengan nama yang sama, misal Hat, kamu bisa membuat nama baru yaitu Hat_ (ditambah garis bawah), atau Hat2 (ditambah angka), dan seterusnya.
- Name = nama item yang akan muncul pada kotak chat saat kamu mendapatkan item tersebut.
- Type = jenis item, 4 = Armor/Garment/Boots/Acc/Headgear/Costume, 12 = Shadow Equipment
- Weight = berat item
- DEF = Defense point
- Slots = Jumlah slot untuk kartu, slot senjata max 4, slot equipment max 1
- Job = Syarat Job, 0xFFFFFFFF = semua job
- Class = Tier Job, 8 = hanya job 3, 63 = semua tier
- Loc = lokasi gear, 256 = Upper, 512 = Mid, 001 = Lower , 769 (256 + 512 + 001) = Upper, Mid, Lower. Pada Hercules, EQP_HEAD_TOP = Upper, EQP_HEAD_MID = Mid, EQP_HEAD_LOW = Lower, EQP_HELM = Upper, Mid, Lower.
- Refineable = Bisa ditempa atau tidak, 0 = tidak bisa, 1 = bisa
- View ID = kode unik untuk masing-masing item, kode untuk headgear harus berbeda satu sama lain. ViewID ini lah yang kita tambahkan di accessoryid.lub atau pada ItemInfo.lua
- Script (Kolom 1) = efek tambahan menggunakan script, misal bonus bAllStats,1; artinya item tersebut memiliki efek tambahan All Stats + 1
- Untuk value yang nilai nya 0, kamu tidak perlu menulis value apapun pada format agar terlihat lebih rapih dan mudah dibaca, namun jangan sampai kamu melupakan tanda koma sebagai pembatas
Note : Untuk penjelasan yang lebih mendetail, kamu dapat membuka folder doc dan buka file item_db.txt
1. rAthena,
cari item_db.txt, file ini ada di folder db dan buka folder pre-re atau re (sesuai sistem yang kamu pilih pre-renewal atau renewal).
item.db rAthena masih menggunakan format yang sama dengan eAthena dan 3ceam atau emulator sebelum rAthena, jadi pengguna lama tidak akan merasakan perbedaan yang besar. Hanya saya pada rAthena versi terbaru, item_db2 ditiadakan.
Struktur dari item_db rAthena adalah
ID,AegisName,Name,Type,Buy,Sell,Weight,ATK,DEF,Range,Slots,Job,Class,Gender,Loc,wLV,eLV[:maxLevel],Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script }
Sesuai format, kamu harus menulis kode menyamping kekanan, dan harus urut. Agar pekerjaanmu mudah, kamu bisa langsung mengcopy paste item yang sudah ada. Seperti misalnya item White Angel yang ingin saya tambahkan base nya dari Angel Wing, maka kode yang saya buat seperti berikut :
Kode Angel Wing sebelum dirubah :
2254,Angelic_Chain,Angel Wing,4,20,,100,,2,,0,0xFFFFFFFE,7,2,256,,0,1,38,{ bonus bMdef,3; bonus bAgi,1; bonus bLuk,1; bonus2 bSubRace,RC_Demon,3; },{},{}
Kode item yang diubah dari Angel Wing :
27000,White_Angel,White Angel,4,20,,100,,5,,1,0xFFFFFFFE,7,,256,,0,1,1392,{ bonus bAgi,1; },{},{}
Yang saya rubah adalah :
- ItemID yang saya gunakan 27000, karena pada saat saya menulis artikel ini, angka 27000 belum terpakai
- DEF diganti jadi 5
- Slot = 1
- ViewID Harus sesuai dengan yang saya tambahkan pada accessoryid.lub, kode terakhir yang belum terpakai adalah 1392
- Script (kolom 1) saya adalah bonus bAgi,1; yang artinya item ini memiliki efek tambahan yaitu AGI + 1
- Perhatikan value Sell, ini adalah contoh dimana kita tidak perlu mengisi value agar format menjadi terlihat lebih pendek dan mudah dibaca. Untuk value Sell, jika kamu mengosongkan value, dan karena value Buy nya tercantum, maka value Sell nya akan otomatis membagi setengah dari value Buy. Maka perlu diperhatikan, walau value Buy nya = 20, jika kamu mengisi value Sell = 0, maka harga jual tidak akan dibagi setengah, tapi akan tetap dianggap 0.
Sampai disini, Save.
2. Hercules
Karena Hercules masih memiliki item_db2 kamu cukup membuka folder db dan cari file item_db2.conf
Banyak perubahan struktur yang dibuat oleh tim developer Hercules, termasuk item_db, format baru ini mungkin dibuat untuk para pemula, namun bagi developer lama seperti saya, agak memusingkan ketika kita ingin membuat banyak item, karena baris database nya menjadi lebih banyak.
Struktur dari item_db hercules adalah
Hercules memiliki lebih banyak fitur ketimbang rAthena, seperti misalnya kamu bisa menambahkan trade, dimana kamu bisa langsung mengatur trade restriction langsung didalam item_db tanpa harus membuka file pengaturan item_restrict.
Walau begitu, pada intinya cara penggunaannya tetap sama, kamu hanya perlu mengedit beberapa value untuk item yang ingin kamu tambahkan.
Sesuai format, kamu harus menulis kode kebawah, dan berurutan. Agar pekerjaanmu mudah, kamu bisa langsung mengcopy paste item yang sudah ada. Seperti misalnya item White Angel yang ingin saya tambahkan base nya dari Angel Wing.
NOTE : setiap item dibuka dan ditutup dengan curly braces ( tanda } dan { )
Kode Angel Wing sebelum diubah:
Kode item yang diubah dari Angel Wing:
Yang saya rubah adalah :
Struktur dari item_db hercules adalah
{ // ================ Mandatory fields ============================== Id: ID (int) AegisName: "Aegis_Name" (string, optional if Inherit: true) Name: "Item Name" (string, optional if Inherit: true) // ================ Optional fields =============================== Type: Item Type (int, defaults to 3 = etc item) Buy: Buy Price (int, defaults to Sell * 2) Sell: Sell Price (int, defaults to Buy / 2) Weight: Item Weight (int, defaults to 0) Atk: Attack (int, defaults to 0) Matk: Magical Attack (int, defaults to 0, ignored in pre-re) Def: Defense (int, defaults to 0) Range: Attack Range (int, defaults to 0) Slots: Slots (int, defaults to 0) Job: { (defaults to all job) All: true/false (boolean, defaults to false) Novice: true/false (boolean, defaults to false) Swordsman: true/false (boolean, defaults to false) Magician: true/false (boolean, defaults to false) Archer: true/false (boolean, defaults to false) Acolyte: true/false (boolean, defaults to false) Merchant: true/false (boolean, defaults to false) Thief: true/false (boolean, defaults to false) Knight: true/false (boolean, defaults to false) Priest: true/false (boolean, defaults to false) Wizard: true/false (boolean, defaults to false) Blacksmith: true/false (boolean, defaults to false) Hunter: true/false (boolean, defaults to false) Assassin: true/false (boolean, defaults to false) Crusader: true/false (boolean, defaults to false) Monk: true/false (boolean, defaults to false) Sage: true/false (boolean, defaults to false) Rogue: true/false (boolean, defaults to false) Alchemist: true/false (boolean, defaults to false) Bard: true/false (boolean, defaults to false) Taekwon: true/false (boolean, defaults to false) Star_Gladiator: true/false (boolean, defaults to false) Soul_Linker: true/false (boolean, defaults to false) Gunslinger: true/false (boolean, defaults to false) Ninja: true/false (boolean, defaults to false) Gangsi: true/false (boolean, defaults to false) Death_Knight: true/false (boolean, defaults to false) Dark_Collector: true/false (boolean, defaults to false) Kagerou: true/false (boolean, defaults to false) Rebellion: true/false (boolean, defaults to false) } Job: Job mask (alternate format, int, defaults to all jobs = 0xFFFFFFFF) Upper: Upper mask (bitmask array, string or int, defaults to "ITEMUPPER_ALL") Gender: Gender (int, defaults to both = 2) Loc: Equip location (bitmask array, string or int, required value for equipment) WeaponLv: Weapon Level (int, defaults to 0) EquipLv: Equip required level (int, defaults to 0) EquipLv: [min, max] (alternative syntax with min / max level) Refine: Refineable (boolean, defaults to true) Subtype: Item Subtype (int, defaults to 0) ViewSprite: Sprite view ID (int, defaults to 0) BindOnEquip: true/false (boolean, defaults to false) ForceSerial: true/false (boolean, defaults to false) BuyingStore: true/false (boolean, defaults to false) Delay: Delay to use item (int, defaults to 0) KeepAfterUse: true/false (boolean, defaults to false) Trade: { (defaults to no restrictions) override: GroupID (int, defaults to 100) nodrop: true/false (boolean, defaults to false) notrade: true/false (boolean, defaults to false) partneroverride: true/false (boolean, defaults to false) noselltonpc: true/false (boolean, defaults to false) nocart: true/false (boolean, defaults to false) nostorage: true/false (boolean, defaults to false) nogstorage: true/false (boolean, defaults to false) nomail: true/false (boolean, defaults to false) noauction: true/false (boolean, defaults to false) } Nouse: { (defaults to no restrictions) override: GroupID (int, defaults to 100) sitting: true/false (boolean, defaults to false) } Stack: [amount, type] (int, defaults to 0) Sprite: SpriteID (int, defaults to 0) Script: <" Script (it can be multi-line) "> OnEquipScript: <" OnEquip Script (can also be multi-line) "> OnUnequipScript: <" OnUnequip Script (can also be multi-line) "> OnRentalStartScript: <" On item renting script, gets called after item is created in inventory (can also be multi-line) "> OnRentalEndScript: <" On item rent end/expire script, gets called after item is removed from inventory (can also be multi-line) "> // ================ Optional fields (item_db2 only) =============== Inherit: true/false (boolean, if true, inherit the values that weren't specified, from item_db.conf, else override it and use default values) },
Hercules memiliki lebih banyak fitur ketimbang rAthena, seperti misalnya kamu bisa menambahkan trade, dimana kamu bisa langsung mengatur trade restriction langsung didalam item_db tanpa harus membuka file pengaturan item_restrict.
Walau begitu, pada intinya cara penggunaannya tetap sama, kamu hanya perlu mengedit beberapa value untuk item yang ingin kamu tambahkan.
Sesuai format, kamu harus menulis kode kebawah, dan berurutan. Agar pekerjaanmu mudah, kamu bisa langsung mengcopy paste item yang sudah ada. Seperti misalnya item White Angel yang ingin saya tambahkan base nya dari Angel Wing.
NOTE : setiap item dibuka dan ditutup dengan curly braces ( tanda } dan { )
Kode Angel Wing sebelum diubah:
{ Id: 2254 AegisName: "Angelic_Chain" Name: "Angel Wing" Type: "IT_ARMOR" Buy: 20 Weight: 100 Def: 2 Job: { All: true Novice: false } Loc: "EQP_HEAD_TOP" ViewSprite: 38 Script: <" bonus bMdef,3; bonus bAgi,1; bonus bLuk,1; bonus2 bSubRace,RC_Demon,3; "> },
Kode item yang diubah dari Angel Wing:
{ Id: 27000 AegisName: "White_Angel" Name: "White Angel" Type: "IT_ARMOR" Buy: 20 Weight: 100 Def: 5 Slots: 1 Job: { All: true Novice: false } Loc: "EQP_HEAD_TOP" ViewSprite: 1392 Script: <" bonus bAgi,1; "> },
Yang saya rubah adalah :
- ItemID yang saya gunakan 27000, karena pada saat saya menulis artikel ini, angka 27000 belum terpakai
- DEF diganti jadi 5
- Slot = 1, karena pada contoh yang diambil ga ada baris slots, maka kita tinggal menambahnya sendiri
- ViewID Harus sesuai dengan yang saya tambahkan pada accessoryid.lub, kode terakhir yang belum terpakai adalah 1392
- Script (kolom 1) saya adalah bonus bAgi,1; yang artinya item ini memiliki efek tambahan yaitu AGI + 1
- Perhatikan value Sell, ini adalah contoh dimana kita tidak perlu mengisi value agar format menjadi terlihat lebih pendek dan mudah dibaca. Untuk value Sell, jika kamu mengosongkan value, dan karena value Buy nya tercantum, maka value Sell nya akan otomatis membagi setengah dari value Buy. Maka perlu diperhatikan, walau value Buy nya = 20, jika kamu mengisi value Sell = 0, maka harga jual tidak akan dibagi setengah, tapi akan tetap dianggap 0.
Sampai disini, kamu sudah berhasil mendaftarkan item kamu kedalam server.
NOTE : Karena bentrok coding C dengan HTML sehingga beberapa kode tidak muncul, jangan copy paste format yang ada diatas, silahkan copy paste dari item_db yang kamu punya sebagai base. Kode diatas hanya sebagai contoh.
E. Memberi Identitas dan Deskripsi pada Client Side
Setelah mendaftarkan item custom mu pada server, sekarang kita akan bisa melanjutkan kembali client side. Lalu kenapa tidak dari awal saja dikerjakan semua ? karena kita perlu mengecek terlebih dahulu View ID mana yg belum terpakai dan hanya bisa dilihat dari accessoryid.lub, dan mencari item ID yang belum terpakai di item_db, dengan begitu kita bisa menambahkan item ID dan deskripsi pada tahap terakhir.
Pada tahap ini, yang kita perlukan adalah
- idnum2itemdesctable.txt
- idnum2itemdisplaynametable.txt
- idnum2itemresnametable.txt
kalau kamu berniat untuk membuat itemnya drop dari monster, kamu juga memerlukan :
- num2desctable.txt
- num2itemdisplaynametable.txt
- num2itemresnametable.txt
Cara penambahannya sama.
NOTE : semua file langsung bisa kamu temukan begitu kamu membuka folder data (lihat gambar pertama dihalaman ini), dan pastikan Translation data yang kamu gunakan sesuai dengan sistem servermu (Pre-Renewal atau Renewal), karena beda sistem, beda pula deskripsi item nya.
Contoh : DEF Angel Wing di Pre-Renewal = 2, tapi di Renewal = 4
1. Menambahkan deskripsi di idnum2itemdesctable.txt
Format nya adalah :
Deskripsi setelah diganti menjadi White Angel
Yang saya rubah adalah :
NOTE : Karena bentrok coding C dengan HTML sehingga beberapa kode tidak muncul, jangan copy paste format yang ada diatas, silahkan copy paste dari item_db yang kamu punya sebagai base. Kode diatas hanya sebagai contoh.
E. Memberi Identitas dan Deskripsi pada Client Side
Setelah mendaftarkan item custom mu pada server, sekarang kita akan bisa melanjutkan kembali client side. Lalu kenapa tidak dari awal saja dikerjakan semua ? karena kita perlu mengecek terlebih dahulu View ID mana yg belum terpakai dan hanya bisa dilihat dari accessoryid.lub, dan mencari item ID yang belum terpakai di item_db, dengan begitu kita bisa menambahkan item ID dan deskripsi pada tahap terakhir.
Pada tahap ini, yang kita perlukan adalah
- idnum2itemdesctable.txt
- idnum2itemdisplaynametable.txt
- idnum2itemresnametable.txt
kalau kamu berniat untuk membuat itemnya drop dari monster, kamu juga memerlukan :
- num2desctable.txt
- num2itemdisplaynametable.txt
- num2itemresnametable.txt
Cara penambahannya sama.
NOTE : semua file langsung bisa kamu temukan begitu kamu membuka folder data (lihat gambar pertama dihalaman ini), dan pastikan Translation data yang kamu gunakan sesuai dengan sistem servermu (Pre-Renewal atau Renewal), karena beda sistem, beda pula deskripsi item nya.
Contoh : DEF Angel Wing di Pre-Renewal = 2, tapi di Renewal = 4
1. Menambahkan deskripsi di idnum2itemdesctable.txt
Format nya adalah :
ItemID# Deskripsi Item, Deskripsi Item, dan lain-lain #
- Copy file idnum2itemdesctable.txt dan masukan pada folder patch item yang kamu buat
- Buka file tersebut pada notepad atau Notepad++
- Kamu bisa menyontoh dari item yang sudah ada sebagai base, karena saya mengambil item Angel Wing maka saya tinggal mencari item ID dari Angel Wing yaitu 2254
- Copy dari Item ID sampai tanda # (pagar) kedua
- Scroll ke baris paling bawah, lalu paste dan edit deskripsi sesuai keinginan.
- Jangan lupa disave
Deskripsi awal Angel Wing
2254# A headband adorned with what appears to be the wings of an angel. It contains holiness that blesses the wearer's soul and offers protection from dark forces. ------------------------- AGI +1, LUK +1 MDEF +3 ------------------------- Reduces damage taken from ^6666CCDemon^000000 monsters by 3%. ------------------------- Class:^6666CC Headgear^000000 Defense:^0000FF 4^000000 Location:^6666CC Upper^000000 Weight:^009900 10^000000 Jobs:^6666CC All except Novice^000000 #
Deskripsi setelah diganti menjadi White Angel
27000# A headband from White Angel Feather. ------------------------- AGI +1 ------------------------- Class:^6666CC Headgear^000000 Defense:^0000FF 5^000000 Location:^6666CC Upper^000000 Weight:^009900 10^000000 Jobs:^6666CC All except Novice^000000 #
Yang saya rubah adalah :
- Item ID = sesuai dengan item_db pada server
- Deskripsi item, Efek tambahan, dan defense
- Jangan lupa tanda # (pagar), setiap item diawali ItemID# dan diakhiri tanda #
2. Menambahkan Nama item pada idnum2itemdisplaynametable.txt
Format-nya adalah :
3. Mendaftarkan ItemID dengan Sprite File pada idnum2itemresnametable.txt
Format-nya adalah :
Format-nya adalah :
ITEM ID#NAMA FILE#
- Copy file idnum2itemdisplayname.txt dan masukan pada folder patch item yang kamu buat
- Buka file tersebut pada notepad atau Notepad++
- Scroll ke baris paling bawah, lalu tambahkan ItemID dan Nama Item yang ingin kamu gunakan untuk item yang kamu tambahkan
- Jangan lupa disave
Display Name yang saya tambahkan :
27000#White Angel#
3. Mendaftarkan ItemID dengan Sprite File pada idnum2itemresnametable.txt
Format-nya adalah :
Item ID#Sprite File Name#
- Copy file idnum2itemdisplaynametable.txt dan masukan pada folder patch item yang kamu buat
- Buka file tersebut pada notepad atau Notepad++
- Scroll ke baris paling bawah, lalu tambahkan ItemID dan sprite file sesuai format dan data yang kamu tambahkan
- Jangan lupa disave
Data custom item yang saya tambahkan :
27000#White_Angel#
F. Mengaplikasikan Patch File ke Custom.grf
Sampai pada tahap terakhir, kalau kamu mengikuti tutorial ini dengan baik, maka sekarang kamu bisa langsung menambahkan item custom yang kamu buat pada Custom GRF server mu. Perlu diperhatikan, jangan tambahkan custom item mu pada file GRF official seperti data.grf, rdata.grf, atau sdata.grf kecuali kamu benar-benar mengerti dengan apa yang kamu lakukan.
Jika kamu menggunakan patch read data folder first pada saat meng-hexing client.exe mu, maka kamu bisa langsung mencoba nya dengan cara membuat folder data pada folder Ragnarok Online mu, dan mengcopy paste file yang sudah kamu edit.
atau, kamu bisa membuat grf baru yang berisi data item yang sudah kamu edit, dan nantinya kamu tinggal menambahkan pada file DATA.ini.
NOTE : cara membuat file grf https://adani-game.blogspot.com/2018/09/membangun-client-side.html
Untuk mencobanya, kamu bisa langsung masuk ke dalam game, dan menggunakan command @item
- Jika yang muncul Unknown Item berbentuk Apple, dan langsung muncul Gravity Error, maka file-file custom item mu tidak ada sama seakli pada Custom GRF (atau folder data jika kamu menggunakan metode ini)
- Jika yang muncul Unknown Item berbentuk Apple, namun tidak muncul Gravity Error, kemungkinan ada file sprite atau text yang salah penamaan atau peletakkan
- Jika nama item sudah muncul tapi masih berbentuk Apple, berarti kamu belum menambahkan thumbnail pada folder item
- Jika nama item sudah benar dan bentuk thumbnail item sudah benar, tapi saat di klik kanan langsung muncul Gravity Error, periksa apakah gambar di dalam folder Collection sudah sesuai format dan nama file nya sudah benar atau belum. Jika sudah benar, namun saat di klik kanan masih error, berarti ada kesalahan pada idnum2itemdesctable.txt
- Jika nama item, bentuk thumbnail, dan pada saat klik kanan sudah benar, namun saat digunakan muncul gravity error, ada kemungkinan kamu salah edit di accname.lub (khusus headgear) dan idnum2resnametable.txt
- (Khusus Headgear) Jika nama item, bentuk thumbnail, pada saat klik kanan, dan saat digunakan tidak ada error, tapi bentuk headgear berbeda dengan preview asli item yang kamu persiapkan, maka kemungkinan kamu salah pada View ID pada accessoryid.lub dan item_db
Jika sudah tidak ada yang error, maka kamu dapat langsung membuat file patch untuk nanti nya di merge dengan Custom GRF yang kamu punya. Buka grfbuilder mu
Grf Builder v. 0.1.30 |
- Klik New, pilih folder untuk file patch mu (Jangan masukan didalam folder yang akan dijadikan patch) lalu berikan nama sesuai dengan nama folder yang kamu buat misalnya patch-17sep18 dengan format .gpf
- Klik Merge dir, buka folder patch mu, dan klik sekali saja pada folder data, lalu klik Ok
- Tunggu sampai data terbaca, setelah selesai klik repack dan klik Ok.
- Tunggu proses selesai lalu klik toolbar close (dibawah Repack)
- sampai tahap ini seharusnya kamu sudah memiliki file patch gpf mu
Selanjutnya tahap untuk mengaplikasikan patch :
NOTE : Jangan lupa backup terlebih dahulu Custom GRF mu.
- Kembali ke grfbuilder, klik Open, dan pilih Custom GRF mu, misal ragnarok.grf
- Tunggu sampai selesai membaca data
- Kemudian klik Merge GRF, pilih file patch gpf mu misalnya patch-17sep18.gpf lalu klik Open.
- Tunggu sampai proses selesai, lalu klik Repack dan klik Ok
- selesai
G. Pada Client Terbaru
Untuk client versi diatas (Renewal Clients > 2012-04-10a atau Main Clients > 2012-07-10a), kita tidak memerlukan lagi file-file berikut :
- idnum2itemdesctable.txt
- idnum2itemdisplaynametable.txt
- idnum2itemresnametable.txt
- num2desctable.txt
- num2itemdisplaynametable.txt
- num2itemresnametable.txt
- itemslotcountable.txt
- accessoryid.lub (Hanya perlu untuk melihat ViewID terakhir, jika file nya uptodate)
- accname.lub
karena semua file setting sudah ada dalam satu file yaitu ItemInfo.Lub. Perlu diperhatikan, ItemInfo yang kita pakai harus sesuai dengan settingan servertype di clientinfo.xml.
- Jika servertype mu primary, gunakan ItemInfo.lub
- Jika servertype mu sakray, gunakan ItemInfo_Sak.lub
Letak file ItemInfo ada didalam folder System pada Ragnarok Online mu.
NOTE: perlu diperhatikan, kamu harus tetap menggunakan patch read lua before lub jika ingin menggunakan file berekstensi Lua pada saat meng-hexing client. dan pastikan deskripsi itemnya sesuai dengan server mu (renewal atau pre-renewal)
Format dari ItemInfo.lub
[ITEM ID] = { unidentifiedDisplayName = Nama item sebelum di identifikasi, unidentifiedResourceName = nama sprite yang digunakan item sebelum di identifikasi, unidentifiedDescriptionName = { deskripsi item sebelum di identifikasi}, identifiedDisplayName = Nama item custom mu, identifiedResourceName = nama sprite file item custom yg digunakan, identifiedDescriptionName = { deskripsi item }, slotCount = jumlah slot, ClassNum = View ID - harus sesuai dengan item_db },
Proses edit file ItemInfo.lub
- Backup terlebih dahulu file ItemInfo.lub yang asli, dan copy ke lokasi yang mudah kamu ingat.
- Biasanya dari Translation Data, juga terdapat ItemInfo yang sudah ditranslasi sehingga kamu bisa mengcopy nya untuk base server kamu. Perlu dicatat, biasanya deskripsi item yang terdaftar dalam bentuk renewal, jika server mu adalah pre-renewal, kamu bisa mencari mentahannya terlebih dahulu di google.
- Buka file ItemInfo.lub dengan Notepad++
- Scroll ke baris paling bawah (atau tekan CTRL + End pada keyboard). lalu scroll sedikit keatas (diatas function main), tambahkan deskripsi item mu setelah item paling akhir,
- format text untuk deskripsi harus selalu dibuka dengan curl, dan text harus didalam tanda double quote dan di akhiri koma.
- perhatikan tanda Curl terakhir, item terakhir tidak boleh diberi tanda koma.
- Setelah selesai, Save. Dan kamu bisa mencoba item yang kamu tambahkan.
Contoh ItemInfo.lub dari Item Custom yang saya pasang
[27000] = { unidentifiedDisplayName = "Hairband", unidentifiedResourceName = "머리띠", unidentifiedDescriptionName = { "Unknown Item, can be identified by using a ^6666CCMagnifier^000000." }, identifiedDisplayName = "White Angel", identifiedResourceName = "White_Angel", identifiedDescriptionName = { "A headband from a White Angel feather.", "Agi +1", "^FFFFFF_^000000", "Class:^6666CC Headgear^000000", "Defense:^0000FF 4^000000", "Position:^6666CC Upper^000000", "Weight:^009900 10^000000", "Jobs:^6666CC All except Novice^000000" }, slotCount = 1, ClassNum = 1392 }
TIPS :
- Kamu bisa menggunakan sprite item lain untuk item yang belum di identifikasi, dan juga untuk item selain headgear, equip, dan weapon.
- Untuk mencari sprite item, kamu bisa mencari kode item yang mau kamu pakai terlebih dahulu, lalu search (CTRL + F) di ItemInfo.lub, dan tinggal kamu copypaste nama sprite nya.
- Cara ini juga berguna untuk menduplikat item tanpa harus menduplikasi file spritenya.
Sampai disini, selamat, kamu sudah berhasil membuat patch dan menambahkan custom item mu sendiri, Happy RO ^^ !