--- deliantra/server/ext/login.ext 2010/08/28 00:30:28 1.113 +++ deliantra/server/ext/login.ext 2012/11/08 00:16:07 1.118 @@ -5,7 +5,7 @@ use Fcntl; use Coro::AIO; -our $MAX_DISCONNECT_TIME = $cf::CFG{max_disconnect_time} || 3600; +CONF MAX_DISCONNECT_TIME = 3600; # paranoia function to overwrite a string-in-place sub nuke_str { @@ -62,7 +62,7 @@ my $y = $ob->y; # never happens normally, but helps when shell users make mistakes - $m->in_memory == cf::MAP_ACTIVE + $m->linkable or return 1; # return 0;#d# @@ -142,7 +142,9 @@ sub compare_password($$) { my ($pass, $token) = @_; - if ($token =~ /\!(.*)/) { + if ($token =~ /!!(.*)/) { + return +(substr $pass, 0, 8) eq pack "H*", $1; + } elsif ($token =~ /!(.*)/) { return $pass eq pack "H*", $1; } else { return $token eq crypt $pass, $token; @@ -290,7 +292,7 @@ } } else { # unable to load the playerfile: - # check wether the player dir exists, which means the file is corrupted or + # check whether the player dir exists, which means the file is corrupted or # something very similar. if (!aio_stat cf::player::playerdir $user) { $ns->send_drawinfo ( @@ -497,7 +499,10 @@ $ob->send_msg ($cf::SAY_CHANNEL => "In the future, you will wake up here when you die.", cf::NDI_DEF | cf::NDI_REPLY); - $pl->ns->query (cf::CS_QUERY_SINGLECHAR, "Do you want to continue playing (y/n)?", sub { + my $ns = $pl->ns + or return; + + $ns->query (cf::CS_QUERY_SINGLECHAR, "Do you want to continue playing (y/n)?", sub { if ($_[0] !~ /^[yY]/) { $pl->invoke (cf::EVENT_PLAYER_LOGOUT, 1); $pl->deactivate;