--- deliantra/server/lib/cf.pm 2007/04/04 00:02:06 1.231 +++ deliantra/server/lib/cf.pm 2007/04/04 02:20:27 1.233 @@ -1149,11 +1149,7 @@ sub ext_event($$%) { my ($self, $type, %msg) = @_; - delete $msg{msgid}; - $msg{msgtype} = "event"; - $msg{eventtype} = $type; - - $self->send ("ext " . cf::to_json \%msg); + $self->ns->ext_event ($type, %msg); } package cf; @@ -1971,6 +1967,8 @@ if ($exit->slaying eq "/!") { #TODO: this should de-fi-ni-te-ly not be a sync-job + # the problem is that $exit might not survive long enough + # so it needs to be done right now, right here cf::sync_job { prepare_random_map $exit }; } @@ -1988,9 +1986,9 @@ 1; }) { $self->message ("Something went wrong deep within the crossfire server. " - . "I'll try to bring you back to the map you were before. " - . "Please report this to the dungeon master!", - cf::NDI_UNIQUE | cf::NDI_RED); + . "I'll try to bring you back to the map you were before. " + . "Please report this to the dungeon master!", + cf::NDI_UNIQUE | cf::NDI_RED); warn "ERROR in enter_exit: $@"; $self->leave_link; @@ -2016,6 +2014,18 @@ $self->send_packet (sprintf "drawinfo %d %s", $flags || cf::NDI_BLACK, $text); } +=item $client->ext_event ($type, %msg) + +Sends an exti event to the client. + +=cut + +sub cf::client::ext_event($$%) { + my ($self, $type, %msg) = @_; + + $msg{msgtype} = "event_$type"; + $self->send_packet ("ext " . cf::to_json \%msg); +} =item $success = $client->query ($flags, "text", \&cb)