Emistry

[RO] SQL Broadcaster 1.2

Oct 23rd, 2018 (edited)
982
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.72 KB | None | 0 0
  1. // https://rathena.org/board/topic/117251-broadcaster-npc-request/
  2.  
  3. /*
  4. DROP TABLE IF EXISTS `e_broadcast`;
  5. CREATE 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.   `repeat` tinyint(3) NOT NULL DEFAULT '1',
  14.   PRIMARY KEY (`id`)
  15. ) ENGINE=MyISAM;
  16. */
  17.  
  18. prontera,155,181,5  script  Broadcaster 4_F_KAFRA1,{
  19.     doevent "broadcast_main::OnTalk";
  20. }
  21.  
  22. -   script  broadcast_main  -1,{
  23.  
  24.     OnInit:
  25.         .zeny = 100000;
  26.         .broadcast_delay_second = 180;
  27.         .log_limit = 3;
  28.         end;
  29.        
  30.     OnTalk:
  31.         .@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);
  32.         mes "Would you like to broadcast a message?";
  33.         next;
  34.         switch (select(
  35.             "Broadcast",
  36.             (.@size ? "History" : ""),
  37.             "Cancel"
  38.         )) {
  39.             case 2:
  40.                 for (.@i = 0; .@i < .@size; .@i++) {
  41.                     mes (.@i + 1 )+". "+.@message$[.@i];
  42.                     mes " ";
  43.                     .@menu$ = .@menu$ + "Recent Broadcast # "+(.@i + 1) + ":";
  44.                 }
  45.                 .@i = select(.@menu$) - 1;
  46.                 if (.@repeat[.@i]) {
  47.                     mes "This broadcast cant be used to repeat now.";
  48.                     close;
  49.                 }
  50.                 .@broadcast_message$ = .@message$[.@i];
  51.             case 1:
  52.                 if (.@broadcast_message$ == "") {
  53.                     mes "Enter your broadcast message:";
  54.                     input .@broadcast_message$;
  55.                 }
  56.                 next;
  57.                 mes "Confirm to broadcast this?";
  58.                 mes "^777777"+.@broadcast_message$+"^000000";
  59.                 mes " ";
  60.                 if (.zeny) {
  61.                     mes "Zeny: "+F_InsertComma(.zeny)+"z";
  62.                     mes " ";
  63.                 }
  64.                 if (select("Confirm", "Cancel") == 1) {
  65.                     .@gettimetick = gettimetick(2);
  66.                     if (.zeny > 0 && Zeny <= .zeny) {
  67.                         mes "You dont have enough zeny.";
  68.                     }
  69.                     else if (.broadcast_delay_second > 0 && .@gettimetick < (.@time + .broadcast_delay_second)) {
  70.                         mes "You cant broadcast for next "+((.@time + .broadcast_delay_second) - .@gettimetick)+" second(s)";
  71.                     }
  72.                     else {
  73.                         Zeny -= .zeny;
  74.                         announce "<"+strcharinfo(0)+">: "+.@broadcast_message$, bc_all;
  75.                         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)+")");
  76.                         if (.@id[.@i] > 0) {
  77.                             query_sql("UPDATE `e_broadcast` SET `repeat` = 1 WHERE `id` = "+.@id[.@i]+" LIMIT 1");
  78.                         }
  79.                         mes "done.";
  80.                     }
  81.                 }
  82.                 break;
  83.             default:
  84.                 break;
  85.         }
  86.         close;
  87. }
Add Comment
Please, Sign In to add comment