// https://rathena.org/board/topic/117251-broadcaster-npc-request/
/*
DROP TABLE IF EXISTS `e_broadcast`;
CREATE TABLE IF NOT EXISTS `e_broadcast` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`aid` int(11) NOT NULL DEFAULT '0',
`cid` int(11) NOT NULL DEFAULT '0',
`name` varchar(25) NOT NULL DEFAULT '',
`message` varchar(255) NOT NULL DEFAULT '',
`time` int(11) NOT NULL DEFAULT '0',
`status` tinyint(3) NOT NULL DEFAULT '1',
`repeat` tinyint(3) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
*/
prontera,155,181,5 script Broadcaster 4_F_KAFRA1,{
doevent "broadcast_main::OnTalk";
}
- script broadcast_main -1,{
OnInit:
.zeny = 100000;
.broadcast_delay_second = 180;
.log_limit = 3;
end;
OnTalk:
.@size = query_sql("SELECT `id`,`message`,`time`,`repeat` FROM `e_broadcast` WHERE `cid` = "+getcharid(0)+" ORDER BY `id` DESC LIMIT "+.log_limit, .@id, .@message$, .@time, .@repeat);
mes "Would you like to broadcast a message?";
next;
switch (select(
"Broadcast",
(.@size ? "History" : ""),
"Cancel"
)) {
case 2:
for (.@i = 0; .@i < .@size; .@i++) {
mes (.@i + 1 )+". "+.@message$[.@i];
mes " ";
.@menu$ = .@menu$ + "Recent Broadcast # "+(.@i + 1) + ":";
}
.@i = select(.@menu$) - 1;
if (.@repeat[.@i]) {
mes "This broadcast cant be used to repeat now.";
close;
}
.@broadcast_message$ = .@message$[.@i];
case 1:
if (.@broadcast_message$ == "") {
mes "Enter your broadcast message:";
input .@broadcast_message$;
}
next;
mes "Confirm to broadcast this?";
mes "^777777"+.@broadcast_message$+"^000000";
mes " ";
if (.zeny) {
mes "Zeny: "+F_InsertComma(.zeny)+"z";
mes " ";
}
if (select("Confirm", "Cancel") == 1) {
.@gettimetick = gettimetick(2);
if (.zeny > 0 && Zeny <= .zeny) {
mes "You dont have enough zeny.";
}
else if (.broadcast_delay_second > 0 && .@gettimetick < (.@time + .broadcast_delay_second)) {
mes "You cant broadcast for next "+((.@time + .broadcast_delay_second) - .@gettimetick)+" second(s)";
}
else {
Zeny -= .zeny;
announce "<"+strcharinfo(0)+">: "+.@broadcast_message$, bc_all;
query_sql("INSERT INTO `e_broadcast` (`aid`,`cid`,`name`,`message`,`time`,`repeat`) VALUES ( "+getcharid(3)+","+getcharid(0)+",'"+escape_sql(strcharinfo(0))+"','"+escape_sql(.@broadcast_message$)+"', "+.@gettimetick+","+(.@repeat[.@i] > 0)+")");
if (.@id[.@i] > 0) {
query_sql("UPDATE `e_broadcast` SET `repeat` = 1 WHERE `id` = "+.@id[.@i]+" LIMIT 1");
}
mes "done.";
}
}
break;
default:
break;
}
close;
}
Comments
0 B
|👍
/👎