… | |
… | |
36 | cf::register_command listen => sub { |
36 | cf::register_command listen => sub { |
37 | my ($pl, $msg) = @_; |
37 | my ($pl, $msg) = @_; |
38 | my $player = cf::player::find_active $pl->name; |
38 | my $player = cf::player::find_active $pl->name; |
39 | |
39 | |
40 | if ($msg ne "") { |
40 | if ($msg ne "") { |
|
|
41 | $msg = 10 if $msg > 10; |
|
|
42 | |
41 | my $prev_listen = $player->listening; |
43 | my $prev_listen = $player->listening; |
42 | $player->listening ($msg); |
44 | $player->listening ($msg); |
43 | if ($prev_listen == $player->listening) { |
45 | if ($prev_listen == $player->listening) { |
44 | $pl->message ("Your verbose level stayed $prev_listen.", cf::NDI_UNIQUE); |
46 | $pl->message ("Your verbose level stayed $prev_listen.", cf::NDI_UNIQUE); |
45 | } else { |
47 | } else { |
… | |
… | |
823 | |
825 | |
824 | if ($msg) { |
826 | if ($msg) { |
825 | my $name = $pl->name; |
827 | my $name = $pl->name; |
826 | my $NOW = time; |
828 | my $NOW = time; |
827 | |
829 | |
828 | utf8::encode $msg; # ->message not yet utf8-ified |
|
|
829 | cf::LOG cf::llevDebug, sprintf "QBERT [%s] %s\n", $name, $msg; |
830 | cf::LOG cf::llevDebug, sprintf "QBERT [%s] %s\n", $name, $msg; |
830 | ext::schmorp_irc::do_notice (sprintf "[%s] %s", $name, $msg); |
831 | ext::schmorp_irc::do_notice (sprintf "[%s] %s", $name, $msg); |
831 | |
832 | |
832 | $_->ob->message ("$name chats: $msg", cf::NDI_BLUE) |
833 | $_->ob->message ("$name chats: $msg", cf::NDI_BLUE) |
833 | for grep { $_->ob->{ext_ignore_shout}{$name} < $NOW && $_->listening >= 10 } cf::player::list; |
834 | for grep { $_->ob->{ext_ignore_shout}{$name} < $NOW && $_->listening >= 10 } cf::player::list; |
… | |
… | |
880 | if ($target eq $name) { |
881 | if ($target eq $name) { |
881 | $pl->message ("You are talking to yourself, you freak!", cf::NDI_UNIQUE); |
882 | $pl->message ("You are talking to yourself, you freak!", cf::NDI_UNIQUE); |
882 | } elsif ($other->ob->{ext_ignore_tell}{$name} >= time) { |
883 | } elsif ($other->ob->{ext_ignore_tell}{$name} >= time) { |
883 | $pl->message ("$target ignores what you say. Give up on it.", cf::NDI_UNIQUE); |
884 | $pl->message ("$target ignores what you say. Give up on it.", cf::NDI_UNIQUE); |
884 | } else { |
885 | } else { |
|
|
886 | return if $other->invoke (cf::EVENT_PLAYER_TOLD, $pl->contr, $msg); |
885 | utf8::encode $msg; # ->message not yet utf8-ified |
887 | utf8::encode $msg; # ->message not yet utf8-ified |
886 | cf::LOG cf::llevDebug, sprintf "TELL [%s>%s] %s\n", $name, $target, $msg; |
888 | cf::LOG cf::llevDebug, sprintf "TELL [%s>%s] %s\n", $name, $target, $msg; |
887 | |
889 | |
888 | $pl->message ("You tell $target: $msg"); |
890 | $pl->message ("You tell $target: $msg"); |
889 | $other->ob->message ("$name tells you: $msg"); |
891 | $other->ob->message ("$name tells you: $msg"); |
… | |
… | |
1016 | $pl->message ("No such player or ambiguous name: $target", cf::NDI_UNIQUE); |
1018 | $pl->message ("No such player or ambiguous name: $target", cf::NDI_UNIQUE); |
1017 | } |
1019 | } |
1018 | } |
1020 | } |
1019 | }; |
1021 | }; |
1020 | |
1022 | |
1021 | cf::register_command seen => sub { |
|
|
1022 | my ($pl, $args) = @_; |
|
|
1023 | |
|
|
1024 | if (my ($login) = $args =~ /(\S+)/) { |
|
|
1025 | if ($login eq $pl->name) { |
|
|
1026 | $pl->message ("Very funny, $login. Ha. Ha.", cf::NDI_UNIQUE); |
|
|
1027 | } elsif (cf::player::find_active $login) { |
|
|
1028 | $pl->message ("$login is right here on this server!", cf::NDI_UNIQUE); |
|
|
1029 | } elsif (cf::player::exists $login |
|
|
1030 | and stat sprintf "%s/%s/%s/%s.pl", cf::localdir, cf::playerdir, ($login) x 2) { |
|
|
1031 | my $time = (stat _)[9]; |
|
|
1032 | |
|
|
1033 | $pl->message ("$login was last seen here " |
|
|
1034 | . (POSIX::strftime "%Y-%m-%d %H:%M:%S +0000", gmtime $time) |
|
|
1035 | . " which was " . (int +(time - $time) / 3600) . " hours ago.", cf::NDI_UNIQUE); |
|
|
1036 | } else { |
|
|
1037 | $pl->message ("No player named $login is known to me.", cf::NDI_UNIQUE); |
|
|
1038 | } |
|
|
1039 | } else { |
|
|
1040 | $pl->message ("Usage: seen <player>", cf::NDI_UNIQUE); |
|
|
1041 | } |
|
|
1042 | }; |
|
|
1043 | |
|
|