--- deliantra/server/ext/cfplus.ext 2008/09/19 01:39:45 1.13 +++ deliantra/server/ext/cfplus.ext 2010/03/16 20:28:22 1.16 @@ -87,7 +87,7 @@ my ($pl, $id, $token) = @_; #TODO: - # this is not a request, so returnign does no good: make it a request and die on error + # this is not a request, so returning does no good: make it a request and die on error return unless $pl->ob && $pl->ob->map; @@ -173,7 +173,13 @@ cf::register_extcmd editor_support => sub { my ($pl, %msg) = @_; - map +($_ => $cf::CFG{"editor_$_"}), qw(servertype gameserver testserver cvs_root lib_root builder_ui) + my %cfg = map +($_ => $cf::CFG{"editor_$_"}), qw(servertype servertypes gameserver testserver cvs_root lib_root builder_ui); + + # clients 2.10 and below check for type and "nameserver" :/ + $cfg{type} = $cfg{servertype}; + $cfg{nameserver} = $cfg{gameserver}; + + %cfg }; sub unload { @@ -192,6 +198,15 @@ delete $pl->{npc_dialog}; $pl->detach ("npc_dialog_active"); }, + on_map_change => sub { + my ($pl) = @_; + + my $dialog = delete $pl->{npc_dialog} + or return; + + $pl->ext_msg ($dialog->{id} => error => "out of range"); + $pl->detach ("npc_dialog_active"); + }, on_move => sub { my ($pl, $dir) = @_; @@ -204,11 +219,10 @@ return if (abs $dx) <= 2 && (abs $dy) <= 2; + delete $pl->{npc_dialog}; $pl->ext_msg ($dialog->{id} => error => "out of range"); + $pl->detach ("npc_dialog_active"); } - - delete $pl->{npc_dialog}; - $pl->detach ("npc_dialog_active"); }; }, ;