· 7 years ago · Oct 23, 2018, 02:24 PM
1// https://rathena.org/board/topic/117251-broadcaster-npc-request/
2
3/*
4DROP TABLE IF EXISTS `e_broadcast`;
5CREATE TABLE IF NOT EXISTS `e_broadcast` (
6 `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
7 `aid` int(11) NOT NULL DEFAULT '0',
8 `cid` int(11) NOT NULL DEFAULT '0',
9 `name` varchar(25) NOT NULL DEFAULT '',
10 `message` varchar(255) NOT NULL DEFAULT '',
11 `time` int(11) NOT NULL DEFAULT '0',
12 `status` tinyint(3) NOT NULL DEFAULT '1',
13 PRIMARY KEY (`id`)
14) ENGINE=MyISAM;
15*/
16
17prontera,155,181,5 script Broadcaster 4_F_KAFRA1,{
18 doevent "broadcast_main::OnTalk";
19}
20
21- script broadcast_main -1,{
22
23 OnInit:
24 .zeny = 100000;
25 .broadcast_delay_second = 180;
26 .log_limit = 3;
27 end;
28
29 OnTalk:
30 .@size = query_sql("SELECT `message`,`time` FROM `e_broadcast` WHERE `cid` = "+getcharid(0)+" ORDER BY `id` DESC LIMIT "+.log_limit, .@message$, .@time);
31 mes "Would you like to broadcast a message?";
32 next;
33 switch (select(
34 "Broadcast",
35 (.@size ? "History" : ""),
36 "Cancel"
37 )) {
38 case 2:
39 for (.@i = 0; .@i < .@size; .@i++) {
40 mes (.@i + 1 )+". "+.@message$[.@i];
41 mes " ";
42 .@menu$ = .@menu$ + "Recent Broadcast # "+(.@i + 1) + ":";
43 }
44 .@i = select(.@menu$) - 1;
45 .@broadcast_message$ = .@message$[.@i];
46 case 1:
47 if (.@broadcast_message$ == "") {
48 mes "Enter your broadcast message:";
49 input .@broadcast_message$;
50 }
51 next;
52 mes "Confirm to broadcast this?";
53 mes "^777777"+.@broadcast_message$+"^000000";
54 mes " ";
55 if (.zeny) {
56 mes "Zeny: "+F_InsertComma(.zeny)+"z";
57 mes " ";
58 }
59 if (select("Confirm", "Cancel") == 1) {
60 .@gettimetick = gettimetick(2);
61 if (.zeny > 0 && Zeny <= .zeny) {
62 mes "You dont have enough zeny.";
63 }
64 else if (.broadcast_delay_second > 0 && .@gettimetick < (.@time + .broadcast_delay_second)) {
65 mes "You cant broadcast for next "+((.@time + .broadcast_delay_second) - .@gettimetick)+" second(s)";
66 }
67 else {
68 Zeny -= .zeny;
69 announce "<"+strcharinfo(0)+">: "+.@broadcast_message$, bc_all;
70 query_sql("INSERT INTO `e_broadcast` (`aid`,`cid`,`name`,`message`,`time`) VALUES ( "+getcharid(3)+","+getcharid(0)+",'"+escape_sql(strcharinfo(0))+"','"+escape_sql(.@broadcast_message$)+"', "+.@gettimetick+")");
71 mes "done.";
72 }
73 }
74 break;
75 default:
76 break;
77 }
78 close;
79}