… | |
… | |
1030 | =cut |
1030 | =cut |
1031 | |
1031 | |
1032 | sub quit_character { |
1032 | sub quit_character { |
1033 | my ($pl) = @_; |
1033 | my ($pl) = @_; |
1034 | |
1034 | |
|
|
1035 | my $name = $pl->ob->name; |
|
|
1036 | |
1035 | $pl->{deny_save} = 1; |
1037 | $pl->{deny_save} = 1; |
1036 | $pl->password ("*"); # this should lock out the player until we nuked the dir |
1038 | $pl->password ("*"); # this should lock out the player until we nuked the dir |
1037 | |
1039 | |
1038 | $pl->invoke (cf::EVENT_PLAYER_LOGOUT, 1) if $pl->active; |
1040 | $pl->invoke (cf::EVENT_PLAYER_LOGOUT, 1) if $pl->active; |
1039 | $pl->deactivate; |
1041 | $pl->deactivate; |
… | |
… | |
1043 | my $path = playerdir $pl; |
1045 | my $path = playerdir $pl; |
1044 | my $temp = "$path~$cf::RUNTIME~deleting~"; |
1046 | my $temp = "$path~$cf::RUNTIME~deleting~"; |
1045 | aio_rename $path, $temp; |
1047 | aio_rename $path, $temp; |
1046 | delete $cf::PLAYER{$pl->ob->name}; |
1048 | delete $cf::PLAYER{$pl->ob->name}; |
1047 | $pl->destroy; |
1049 | $pl->destroy; |
|
|
1050 | |
|
|
1051 | my $prefix = qr<^~\Q$name\E/>; |
|
|
1052 | |
|
|
1053 | # nuke player maps |
|
|
1054 | $cf::MAP{$_}->nuke for grep /$prefix/, keys %cf::MAP; |
|
|
1055 | |
1048 | IO::AIO::aio_rmtree $temp; |
1056 | IO::AIO::aio_rmtree $temp; |
1049 | } |
1057 | } |
1050 | |
1058 | |
1051 | =item cf::player::list_logins |
1059 | =item cf::player::list_logins |
1052 | |
1060 | |