我目前正在开发一个 twitch.tv 机器人。该机器人的设计目的是在用户加入 mIRC 端的聊天时自动给他们积分。计时器开始计时,他们每 30 分钟获得 1 分。这样做的问题是我不希望人们在关闭流的情况下进行聊天,所以我想输入一个类似“!pointstimer start”的命令。运行该命令时,我希望它显示计时器已启动的消息。我希望这个命令也只能是 op,这样其他人就不能在他们认为合适的任何时候运行该命令。我有积分系统以及赠品抽奖系统。问题是当我输入命令来打开和关闭积分系统时,什么也没有发生。如果命令不是 op,我可以让它显示文本,但是当它是 op 时,什么也不会发生。
代码:
on *:TEXT:!commands:#: {
if ((%floodcommands) || ($($+(%,floodcommands.,$nick),2))) { return }
set -u10 %floodcommands On
set -u30 %floodcommands. $+ $nick On
msg $chan The commands for this channel are the following. !commands, !social, !help, !cop, !hypno, !medic, !vigi, !inno, !gunsmith, !rafflesystem, !donks, !buytickets [number of tickets]. Mod only commands are the following, !donks [add|remove] [user] [number], !raffle [open|close], !roll, !permit [user]. $+
}
on *:TEXT:!social:#: {
if ((%floodsocial) || ($($+(%,floodsocial.,$nick),2))) { return }
set -u10 %floodsocial On
set -u30 %floodsocial. $+ $nick On
msg $chan The YouTube page is http://www.youtube.com/user/TheDailyMafia The Twitter page is http://twitter.com/DailyMafia Don't forget to follow and subscribe! $+
}
on *:TEXT:!help:#: {
if ((%floodhelp) || ($($+(%,floodhelp.,$nick),2))) { return }
set -u10 %floodhelp On
set -u30 %floodhelp. $+ $nick On
msg $chan To learn the rules of mafia check out $+
}
on *:TEXT:!cop:#: {
if ((%floodcop) || ($($+(%,floodcop.,$nick),2))) { return }
set -u10 %floodcop On
set -u30 %floodcop. $+ $nick On
msg $chan Every night the Cop picks a player who is currently alive to investigate or “check”. The mod will then tell the Cop whether that player is town or mafia. Note: the Cop only finds out if the player is town or mafia and is not informed of any special role the player might have. $+
}
on *:TEXT:!medic:#: {
if ((%floodmedic) || ($($+(%,floodmedic.,$nick),2))) { return }
set -u10 %floodmedic On
set -u30 %floodmedic. $+ $nick On
msg $chan Every night the Medic picks a player who is currently alive to protect or “save”. This player is protected from 1 KP for that night phase (and that night phase only). If the player is hit with 2 KP the player will still die even if the Medic is protecting them. The Medic may not save himself, and unless otherwise state the Medic may save the same person on consecutive nights. $+
}
on *:TEXT:!hypno:#: {
if ((%floodhypno) || ($($+(%,floodhypno.,$nick),2))) { return }
set -u10 %floodhypno On
set -u30 %floodhypno. $+ $nick On
msg $chan The Hypnotist has a one-time use power to use during the night. In order for the power to work both himself and the player the Hypnotist uses it on must be alive at the start of the following day. If the Hypnotists uses his power on you then you become hypnotized and must claim your role at the start of the next day. The first three words out of your mouth must be ‘I am *your role here*’. $+
}
on *:TEXT:!vigi:#: {
if ((%floodvigi) || ($($+(%,floodvigi.,$nick),2))) { return }
set -u10 %floodvigi On
set -u30 %floodvigi. $+ $nick On
msg $chan The Vigilante is given a gun with one bullet for the entire game. The Vigilante may choose to shoot someone during the night phase (and only the night phase). If the Vigilante shoots a player who is medic protected that player will not die and the Vigilante will lose his bullet. If the Vigilante shoots a player who is also shot by the mafia the Vigilante will lose his bullet. $+
}
on *:TEXT:!inno:#: {
if ((%floodinno) || ($($+(%,floodinno.,$nick),2))) { return }
set -u10 %floodinno On
set -u30 %floodinno. $+ $nick On
msg $chan The Innocent Child is a vanilla town confirmed at the very start of the game by mod. They have no power. $+
}
on *:TEXT:!gunsmith:#: {
if ((%floodgunsmith) || ($($+(%,floodgunsmith.,$nick),2))) { return }
set -u10 %floodgunsmith On
set -u30 %floodgunsmith. $+ $nick On
msg $chan The gunsmith is a town sided role that is allowed to give out a gun during the night which the recipient can then shoot only during the day by saying a command such as, "I Shoot X". The guns have a 1 time use. $+
}
on *:TEXT:!rafflesystem:#: {
if ((%floodgunsmith) || ($($+(%,floodgunsmith.,$nick),2))) { return }
set -u10 %floodgunsmith On
set -u30 %floodgunsmith. $+ $nick On
msg $chan We now have a point system for raffles. You earn Donks by being in chat and watching the games. To check how many Donks you have use !donks. When a raffle opens use !buytickets [number of tickets] to buy tickets for the raffle. $+
}
代码 2:
on *:TEXT:!buytickets &:#:{
if (!%raffle) { msg $chan Raffle is currently closed! }
else {
if ($int($2) < 1) { msg $chan Do you really want to buy no Tickets, $nick $+ ..? }
elseif ($int($2) > 1000) { msg $chan Sorry $nick but you can only buy up to 1000 raffle tickets at a time. }
else {
var %i = 0, %ticket = $int($2)
var %topic = $+(#,.,$nick), %user = $readini(Points.ini,%topic,Points), %end = 1 * %ticket, %delete = %user - %end
if (%delete > 0) {
writeini -n $qt(Points.ini) %topic Points %delete
while (%i < %ticket) {
write $qt(Raffle.txt) $nick
inc %i
}
msg $chan $nick you have bought %ticket tickets with %end Donks.
}
}
}
}
on *:TEXT:!raffle &:#:{
if ($nick isop #) {
if (($2 == open) && (!%raffle)) || (($2 == close) && (%raffle)) {
msg $chan RAFFLE IS NOW $replace($upper($2!!),CLOSE,CLOSED)
if ($2 == open) { set %raffle 1 }
else unset %raffle
write -c $qt(Raffle.txt)
}
}
}
on *:TEXT:!roll:#:{
if ($nick isop #) && (%raffle) {
msg $chan RAFFLE IS NOW BEING ROLLED, GOOD LUCK!!
.timerCD 1 3 msg $chan /me $!calc( $!timer(CD).reps + 1 ) $!+ !
.timer 1 4 msg $chan AND THE WINNER IS:
.timer 1 5 msg $chan $read(Raffle.txt, n)
unset %raffle
write -c $qt(Raffle.txt)
}
}
代码 3
alias -l addPoints {
if ($1 !isnum) { echo 2 -st $1 is not a number. It needs to be a number. | halt }
var %topic $+($chan,.,$nick)
var %points $calc($readini(Points.ini,%topic,Points) + $1)
writeini -n Points.ini %topic Points %points
return %points
}
alias -l lookUpPoints {
var %topic $+($chan,.,$nick)
var %points $readini(Points.ini,%topic,Points)
return %points
}
alias doaddpoints {
if ($3 !isnum) { echo 2 -st $3 is not a number. It needs to be a number. | halt }
var %topic $+($1,.,$2)
var %points $calc($readini(Points.ini,%topic,Points) + $3)
writeini -n Points.ini %topic Points %points
echo -a Added points for %topic
}
alias dorempoints {
var %topic $+($1,.,$2)
remini -n Points.ini %topic Points
echo -a Removed points for %topic
}
on *:text:!donks:#:{
if ((%floodpoints) || ($($+(%,floodpoints.,$nick),2))) { return }
set -u10 %floodpoints On
set -u30 %floodpoints. $+ $nick On
msg # $nick has $readini(Points.ini,$+(#,.,$nick),Points) total donks.
}
on $*:text:/!donks (add|remove)/Si:#:{
if ($nick isop #) {
if ($0 < 3) { msg # Insufficient parameters: Use !donks [add|remove] [user] [number] | return }
writeini -n Points.ini $+(#,.,$3) Points $calc($readini(Points.ini,$+(#,.,$3),Points) $iif($2 == add,+,-) $iif($4 isnum,$4,1))
{ msg $chan $3 now has $readini(Points.ini,$+(#,.,$3),Points) total donks. }
}
else { msg $chan This command is only available to moderators. }
}
on *:TEXT:!donktime &:#:{
if ($nick isop #) {
if (($2 == start) && (!%donktime)) || (($2 == stop) && (%donktime)) {
msg $chan DONKTIME IS NOW $replace($upper($2ED!!),CLOSE,CLOSED)
if ($2 == start) { set %donktime 1 }
else unset %donktown
}
}
}
on !*:join:#:{
if (!%donktown) {halt}
else{
$+(.timerpoints.,#,.,$nick) 0 1800 add.pts $+(#,.,$nick)
add.pts $+(#,.,$nick)}
}
on !*:part:#:$+(.timerpoints.,#,.,$nick) off
alias -l add.pts {
writeini -n Points.ini $1 Points $calc($readini(Points.ini,$1,Points) + 1)
}
预先感谢您的任何帮助。