--- deliantra/server/lib/cf.pm 2007/08/31 04:10:43 1.349 +++ deliantra/server/lib/cf.pm 2007/09/02 12:26:54 1.354 @@ -1415,9 +1415,14 @@ my @logins; for my $login (@$dirs) { - my $fh = aio_open path $login, Fcntl::O_RDONLY, 0 or next; - aio_read $fh, 0, 512, my $buf, 0 or next; - $buf !~ /^password -------------$/m or next; # official not-valid tag + my $path = path $login; + + # a .pst is a dead give-away for a valid player + unless (-e "$path.pst") { + my $fh = aio_open $path, Fcntl::O_RDONLY, 0 or next; + aio_read $fh, 0, 512, my $buf, 0 or next; + $buf !~ /^password -------------$/m or next; # official not-valid tag + } utf8::decode $login; push @logins, $login; @@ -1465,7 +1470,7 @@ # escape & and < s/&/&/g; - s/(?]*)>/$1<\/b>/ || s/I<([^\>]*)>/$1<\/i>/ || s/U<([^\>]*)>/$1<\/u>/ + || s/T<([^\>]*)>/$1<\/b><\/big>/ # replace G tags || s{G<([^>|]*)\|([^>]*)>}{ $self->gender ? $2 : $1 @@ -2093,14 +2099,14 @@ delete $cf::MAP{$self->path}; + $self->unlink_save; + bless $self, "cf::map"; delete $self->{deny_reset}; $self->{deny_save} = 1; $self->reset_timeout (1); $self->path ($self->{path} = "{nuke}/" . ($nuke_counter++)); - $self->unlink_save; - $cf::MAP{$self->path} = $self; } @@ -2506,6 +2512,21 @@ =cut +our %CHANNEL = ( + "c/identify" => { + id => "identify", + title => "Identify", + reply => undef, + tooltip => "Items recently identified", + }, + "c/examine" => { + id => "examine", + title => "Examine", + reply => undef, + tooltip => "Signs and other items you examined", + }, +); + sub cf::client::send_msg { my ($self, $channel, $msg, $color, @extra) = @_; @@ -2513,11 +2534,15 @@ $color &= cf::NDI_CLIENT_MASK; # just in case... + # check predefined channels, for the benefit of C + $channel = $CHANNEL{$channel} if $CHANNEL{$channel}; + if (ref $channel) { # send meta info to client, if not yet sent unless (exists $self->{channel}{$channel->{id}}) { $self->{channel}{$channel->{id}} = $channel; - $self->ext_msg (channel_info => $channel); + $self->ext_msg (channel_info => $channel) + if $self->can_msg; } $channel = $channel->{id};