Emistry icon

[RO] SQL Broadcaster 1.2

Emistry | PRO | 06/16/22 03:48:29 PM UTC (Edited) | 0 ⭐ | 1293 👁️ | Never ⏰ | []
C |

2.72 KB

|

None

|

0 👍

/

0 👎

// 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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎