ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/maps/perl/cfplus.ext
(Generate patch)

Comparing deliantra/maps/perl/cfplus.ext (file contents):
Revision 1.1 by root, Mon Jun 12 13:23:43 2006 UTC vs.
Revision 1.2 by root, Mon Jun 12 14:13:39 2006 UTC

60 60
61 my ($token, $dx, $dy) = split / /, $data; 61 my ($token, $dx, $dy) = split / /, $data;
62 62
63 my %res; 63 my %res;
64 64
65 my $near = abs ($dx) <= 2 && abs ($dy) <= 2; 65 my $near = (abs $dx) <= 2 && (abs $dy) <= 2;
66 66
67 if ($pl->cell_visible ($dx, $dy)) { 67 if ($pl->cell_visible ($dx, $dy)) {
68 for my $ob ($pl->ob->map->at ($pl->ob->x + $dx, $pl->ob->y + $dy)) { 68 for my $ob ($pl->ob->map->at ($pl->ob->x + $dx, $pl->ob->y + $dy)) {
69 $res{npc_dialog} = $ob->name 69 $res{npc_dialog} = $ob->name
70 if $near && $ob->message =~ /^\@match /; 70 if $near && $ob->message =~ /^\@match /;
77cf::register_extcmd npc_dialog_begin => sub { 77cf::register_extcmd npc_dialog_begin => sub {
78 my ($pl, $data) = @_; 78 my ($pl, $data) = @_;
79 79
80 my ($token, $dx, $dy) = split / /, $data; 80 my ($token, $dx, $dy) = split / /, $data;
81 81
82 return unless abs ($dx) <= 2 && abs ($dy) <= 2; 82 return unless (abs $dx) <= 2 && (abs $dy) <= 2;
83 return unless $pl->cell_visible ($dx, $dy); 83 return unless $pl->cell_visible ($dx, $dy);
84 84
85 for my $npc ($pl->ob->map->at ($pl->ob->x + $dx, $pl->ob->y + $dy)) { 85 for my $npc ($pl->ob->map->at ($pl->ob->x + $dx, $pl->ob->y + $dy)) {
86 if (my @match = parse_message $npc->get_message) { 86 if (my @match = parse_message $npc->get_message) {
87 $dialog{$token} = { 87 $dialog{$token} = {
112 my ($pl, $token) = @_; 112 my ($pl, $token) = @_;
113 113
114 delete $dialog{$token}; 114 delete $dialog{$token};
115}; 115};
116 116
117sub on_clock {
118 return 0 unless %dialog;
119
120 while (my ($token, $dialog) = each %dialog) {
121 if (my $pl = cf::player::find $dialog->{name}) {
122 my (undef, $dx, $dy) = $pl->ob->rangevector ($dialog->{npc});
123 next if (abs $dx) <= 2 && (abs $dy) <= 2;
124
125 $pl->send ("ext $token out_of_range");
126 }
127 delete $dialog{$token};
128 }
129
130 0
131}
132

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines