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

Comparing deliantra/maps/perl/eval.ext (file contents):
Revision 1.4 by root, Fri Mar 31 22:47:19 2006 UTC vs.
Revision 1.5 by elmex, Tue Aug 8 22:45:02 2006 UTC

1#! perl 1#! perl
2 2
3# generic perl code evaluator 3# generic perl code evaluator
4 4
5sub eval_event { 5sub eval_event {
6 my ($event, $args, @args) = @_; 6 my ($event, %vars) = @_;
7 7
8 my $code = $event->message; 8 my $code = $event->message;
9 my $who = eval { $event->environment->name } || "<unknown>"; 9 my $who = eval { $event->environment->name } || "<unknown>";
10 10
11 my $rv = eval "my ($args) = \@args;\n" 11 my $rv = cf::safe_eval $code, %vars;
12 . "#line 1 \"$who\"\n"
13 . $code;
14 12
15 warn $@ if $@; 13 warn $@ if $@;
16 14
17 $rv 15 $rv
18} 16}
19 17
20# currently say only
21sub on_say { 18sub on_say {
22 my ($event, $ob, $who, $msg) = @_; 19 my ($event, $ob, $who, $msg) = @_;
23 20
24 local $_ = $msg; 21 local $_ = $msg;
25 22
26 eval_event $event, '$ob, $who, $msg', $ob, $who, $msg 23 eval_event $event, ob => $ob, who => $who, msg => $msg
27} 24}
25
26sub on_apply {
27 my ($event, $ob, $who) = @_;
28
29 eval_event $event, ob => $ob, who => $who
30}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines