/*=========================================================
Hercules Radio
by Mumbles
Edited By: Maczekiel of FaeRO Ragnarok Online
===========================================================
===========================================================
Description:
A radio NPC that plays preset selection of client-side
songs (these songs are to be placed in the 'BGM' folder.
The command '@radio' was added as a convenience, to allow
songs to be played wherever the invoking player may be.
Songs are played on the map in which the NPC was invoked,
meaning that if a player is in pay_gld and types '@radio',
(s)he and everyone on the map will hear the selected song.
Each time a song is played, a lock is set for the preset
minutes; this lock prevents the NPC from being accessed.
A countdown in minutes and seconds is be displayed to
reflect the remaining time until the next song can be
played.
===========================================================
Compatibility:
Optimised for Hercules emulators. only
translated for Rathena
===========================================================
Changelog:
v1.0 - First version.
v1.0.1 - Removed support for backwards compatibility.
v1.0.2 - Some housekeeping.
v1.0.3 - I Added Dedication and global announcement
Thanks Aeromesi
=========================================================*/
prontera,148,178,5 script FaeRO DJ::radio 4_F_05,{
OnRequest:
// Check voucher amount
if (countitem(.voucher) < .amount) {
message strcharinfo(0), "You must have "+ .amount +" "+ getitemname(.voucher) +" to play a song.";
end;
}
switch(select("DedicationSong:No")) {
case 1:
mes "You like to Dedicate this to Someone, Right?.";
mes "type the name";
input .dedicate$;
next;
case 2:
mes "Choose Your Song";
set .bitter$,"NO ONE!";
next;
}
// Display menu
message strcharinfo(0), "Please select a song to play (cost: "+ .amount +" "+ getitemname(.voucher) +").";
set .@menu$,implode(.song$, ":");
set .@selection, select(.@menu$) -1;
// Check lock time
if (.lock > gettimetick(2)) {
// Calculate time left
.@minutes_left = (.lock - gettimetick(2)) / 60;
.@seconds_left = (.lock - gettimetick(2)) % 60;
// Display time left
message strcharinfo(0), strnpcinfo(1) +" is not accepting requests at this time.";
if (.@minutes_left < 1) {
message strcharinfo(0), "Please try again in "+ .@seconds_left +" seconds.";
} else {
message strcharinfo(0), "Please try again in "+ .@minutes_left +" minute"+ (.@minutes_left > 1 ? "s" : "") +" and "+ .@seconds_left +" seconds.";
}
close;
}
// Delete required vouchers
delitem .voucher, .amount;
// Play and announce choice on the player's current map
playbgmall .file$[.@selection], strcharinfo(3);
announce strnpcinfo(1) +": Now playing '"+ .song$[.@selection] +"' by "+ .artist$[.@selection] +" as requested by "+ strcharinfo(0) +" for "+ .dedicate$ +" "+ .bitter$ +".", bc_map;
// Lock NPC for preset amount
.lock = .minutes * 60;
.lock += gettimetick(2);
close;
OnInit:
// Configuration
.voucher = 7608; // Voucher item ID
.amount = 10; // Usage cost, in vouchers
.minutes = 4; // Lock time, in minutes
.minutesvip = 2;
// Create @radio command
bindatcmd "radio", strnpcinfo(3) +"::OnRequest", 0, 40;
bindatcmd "vipradio", strnpcinfo(3) +"::OnVip", 0, 40;
// Songs
// The song names for each track
setarray .song$[0], "Parokya ni Edgar",
"Tao Lang",
"Numb Encore",
"If i aint Got you",
"OFFENSE",
"Sayo",
"Magda",
"1 hit combo",
"Monster",
"OO",
"Pwede ba",
"Sana Sinabi",
"Jet Lag",
"SuperMan",
"Tadhana",
"Pilosopo",
"Dont you Remember u love me",
"With a Smile",
"Cerberus",
"Chiksilog",
"Hinahanap hanap kita",
"Love Ur Self",
"What do u mean",
"Huling Dance",
"Lunes",
"Asukal",
"Like im gona luz u",
"Lay me Down",
"Tattoed on my mind",
"Roses",
"Tulog",
"Indak",
"Dilem Ah",
"Sky Ful of Stars",
"So High",
"Legend",
"WhatsLove",
"Dazed n Confused",
"All i have",
"Disclosure",
"Lovin",
"too Close",
"Pusong Bato",
"Si Kae nga",
"Sila",
"Drive it lyk u stole",
"Fast Car",
"Home",
"All of ME",
"See you Again",
"Collide",
"Crazy Love",
"Everything",
"feeling Good",
"Mr. n Mrs JOnes",
"Put your head ",
"Sway",
"Tell Me Where it Hurts",
"Only Reminds me of U",
"Let me be D 1",
"Wag ka ng Umiyak",
"Kailan",
"Hanggang Dito Na lang",
"Iloveyou Goodbye",
"Much has been Said",
"Masaya",
"End of the Road";
// Artists
// The artist name for each track
setarray .artist$[0], "Parokya Ft Gloc9",
"Loonie",
"Linkin Park",
"alicia Keys",
"Himig Hambog",
"Silent Sanctuary",
"Gloc 9",
"Gloc 9",
"Paramore",
"Updharmadown",
"Soap Dish",
"Soap Dish",
"Simple Plan",
"Boyce Avenue",
"UpdharmaDown",
"Smugglaz Ft Loonie",
"Usher",
"Eraserheads",
"AbraFt.Loonie&Ron",
"BobbyTheGay",
"Sitti",
"Justin Bibe",
"Justin Fever",
"Kamikazee Ft Kyla",
"SpongeCoke",
"Moron5",
"Meghan Trainor",
"Mac Cover",
"sitti",
"Chainsmoker",
"Mac Cover",
"UpdharmaDown",
"Neli Ft Kelly",
"Coldplay",
"Dojo Cat",
"Drake",
"Ashanti Ft Fat JOe",
"Jake Miller",
"JLow Ft LLCool",
"Latch Ft Sam SMith",
"Mantsya",
"Next",
"BobbyTheBroken",
"ang hanap hanap",
"SUD",
"Glitch Mob",
"Tobtok Ft Kaltok",
"DAughtry",
"John Legend",
"WizKhalifa",
"Howie Day",
"Machael Buble",
"Machael Buble",
"Machael Buble",
"Machael Buble",
"On Bobby's Shoulder",
"Machael Buble",
"MYMP",
"MYMP",
"Master Pogi",
"KZ Tandingan",
"Noel Cabangon",
"Space Boy",
"Juris",
"kawayan",
"kawayan",
"boyzIIMen";
// Files
// The file name for each track (no extension)
setarray .file$[0], "1001",
"1002",
"1003",
"1004",
"1005",
"1006",
"1007",
"1008",
"1009",
"1010",
"1011",
"1012",
"1013",
"1014",
"1015",
"1016",
"1017",
"1018",
"1019",
"1020",
"1021",
"1022",
"1023",
"1024",
"1025",
"1026",
"1027",
"1028",
"1029",
"1030",
"1031",
"1032",
"1033",
"1034",
"1035",
"1036",
"1037",
"1038",
"1039",
"1040",
"1041",
"1042",
"1043",
"1044",
"1045",
"1046",
"1047",
"1048",
"1049",
"1050",
"1051",
"1052",
"1053",
"1054",
"1055",
"1056",
"1057",
"1058",
"1059",
"1060",
"1061",
"1062",
"1063",
"1064",
"1065",
"1066",
"1067";
// Waitingroom display
// Configured to show the NPC's display name
waitingroom strnpcinfo(1), 0;
end;
}