gunakan code box formating untuk code agar lebih rapih dan text formating code tidak berubah, script engine pada emulator sensitive untuk tab dan space pada saat parsing code.
saya telah meninggalkan beberapa catatan pada script silahkan di telaah.
prontera,158,180,4 script VRO Asisten 100,{
mes "[VRO Asisten]";
mes "Halo! Apakah kamu ingin menjual Jellopy padaku? Saya membayar harga yang berbeda tergantung waktu!";
next;
// Tampilkan harga yang saat ini ditawarkan
mes "Saat ini, saya akan membeli Jellopy seharga "+.selected_price+" Zeny per buah.";
next;
// Note 1:
// Kalau bisa jangan terlalu banyak membuat nesting if else
// buat script mudah di baca dan pahami dengan sekilas agar mudah dalam debuging.
// Cek apakah pemain memiliki Jellopy
if (countitem(909) < 1)
{
mes "Tampaknya kamu tidak memiliki Jellopy!";
close;
}
mes "Berapa banyak Jellopy yang ingin kamu jual?";
// Note 2:
// gunakan variable type yg tepat
// untuk user input seperti ini gunakan temporary script variable type ".@"
// Note 3:
// ".selected_price" dapat berubah ketika script dalam keadaan "suspended / pause" state
// script command yg dapat menyebabkan suspended / pause state,
// sleep, sleep2, next, progressbar, menu, select.
// sebaiknya preserve value ".selected_price" pada saat user akses time dan bandingkan nanti
// apakah value ".selected_price" berubah atau tidak (validasi).
.@selected_price = .selected_price;
input .@amount;
// *Note 1, prevent nesting if else
if (.@amount < 0 || .@amount > countitem(909))
{
mes "Mohon masukkan jumlah yang valid!";
close;
}
// *Note 3 validasi value ".selected_price"
if (.@selected_price != .selected_price)
{
mes "Harga telah berubah, silahkan coba lagi!";
close;
}
// Hitung total zeny yang akan diterima pemain
// *Note 2, use apt variable type.
.@total_price = .@amount * .selected_price;
mes "Kamu akan mendapatkan "+ .@total_price +" Zeny untuk "+ .@amount +" Jellopy.";
next;
// *Note 3 validasi value ".selected_price"
if (.@selected_price != .selected_price)
{
mes "Harga telah berubah, silahkan coba lagi!";
close;
}
.@s = select("Jual:Ya,Tidak");
if (.@s == 1)
{
// *Note 3 validasi value ".selected_price"
if (.@selected_price != .selected_price)
{
mes "Harga telah berubah, silahkan coba lagi!";
close;
}
// Konfirmasi penjualan dan transaksi
delitem 909, .@amount; // Hapus Jellopy dari inventory pemain
Zeny += .@total_price; // Berikan Zeny kepada pemain
mes "Terima kasih telah menjual Jellopy-mu!";
}
else
{
mes "Mungkin lain waktu!";
}
close;
OnInit:
// Inisialisasi
setarray .price[0], 10, 20, 30; // Array harga yang mungkin
OnTimer900000: // ubah harga setiap 15 menit.
stopnpctimer();
// Menetapkan harga acak dari array .price
set .selected_price, .price[rand(getarraysize(.price))];
// use initnpctimer() script command disini untuk membuat loop.
initnpctimer();
end;
}