… | |
… | |
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; |
|
|
1057 | } |
|
|
1058 | |
|
|
1059 | =item $pl->kick |
|
|
1060 | |
|
|
1061 | Kicks a player out of the game. This destroys the connection. |
|
|
1062 | |
|
|
1063 | =cut |
|
|
1064 | |
|
|
1065 | sub kick { |
|
|
1066 | my ($pl, $kicker) = @_; |
|
|
1067 | |
|
|
1068 | $pl->invoke (cf::EVENT_PLAYER_KICK, $kicker); |
|
|
1069 | $pl->killer ("kicked"); |
|
|
1070 | $pl->ns->destroy; |
1049 | } |
1071 | } |
1050 | |
1072 | |
1051 | =item cf::player::list_logins |
1073 | =item cf::player::list_logins |
1052 | |
1074 | |
1053 | Returns am arrayref of all valid playernames in the system, can take a |
1075 | Returns am arrayref of all valid playernames in the system, can take a |
… | |
… | |
2450 | |
2472 | |
2451 | warn "loading extensions"; |
2473 | warn "loading extensions"; |
2452 | cf::load_extensions; |
2474 | cf::load_extensions; |
2453 | |
2475 | |
2454 | warn "reattaching attachments to objects/players"; |
2476 | warn "reattaching attachments to objects/players"; |
2455 | _global_reattach; |
2477 | _global_reattach; # objects, sockets |
2456 | warn "reattaching attachments to maps"; |
2478 | warn "reattaching attachments to maps"; |
2457 | reattach $_ for values %MAP; |
2479 | reattach $_ for values %MAP; |
|
|
2480 | warn "reattaching attachments to players"; |
|
|
2481 | reattach $_ for values %PLAYER; |
2458 | |
2482 | |
2459 | warn "loading reloadable resources"; |
2483 | warn "loading reloadable resources"; |
2460 | init_resources; |
2484 | init_resources; |
2461 | |
2485 | |
2462 | warn "leaving sync_job"; |
2486 | warn "leaving sync_job"; |