ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/reseller.ext
(Generate patch)

Comparing deliantra/server/ext/reseller.ext (file contents):
Revision 1.1 by root, Fri Dec 15 19:29:18 2006 UTC vs.
Revision 1.2 by elmex, Wed Dec 20 01:29:12 2006 UTC

10my %aliases = ( 10my %aliases = (
11 platinum => 'platina', 11 platinum => 'platina',
12 royalties => 'royalty', 12 royalties => 'royalty',
13); 13);
14 14
15sub ob2info {
16 my ($item, $rval) = @_;
17 sprintf "[%s from %s (%d:%d%s) nrof: %d uuid: %s]",
18 $item->name, $item->get_ob_key_value ('ext_reseller_seller'),
19 $item->get_ob_key_value ('ext_reseller_orig_value'), $item->value,
20 (defined $rval ? ":$rval" : ""), $item->nrof, $item->uuid;
21}
22
23sub audit_log {
24 my ($who, $action, $info) = @_;
25 warn
26 sprintf "RESELLER_AUDIT(%s) %s %s: %s\n",
27 $who->map->path, $who->name, $action, $info;
28}
29
15sub find_rec { 30sub find_rec {
16 my ($ob, $cb) = @_; 31 my ($ob, $cb) = @_;
17 32
18 my @unpaid; 33 my @unpaid;
19 for my $i ($ob->inv) { 34 for my $i ($ob->inv) {
71 $sum += $_ for values %$hissells; 86 $sum += $_ for values %$hissells;
72 87
73 $who->pay_player ($sum); 88 $who->pay_player ($sum);
74 $who->reply ($npc, "Here are the " . cf::cost_string_from_value ($sum) . " for your sales"); 89 $who->reply ($npc, "Here are the " . cf::cost_string_from_value ($sum) . " for your sales");
75 90
91 audit_log ($who, 'collects', "$sum silver");
92
76 $sells->{$who->name} = {}; 93 $sells->{$who->name} = {};
77 94
78 $npc->set_ob_key_value (ext_reseller_sales => cf::to_json $sells); 95 $npc->set_ob_key_value (ext_reseller_sales => cf::to_json $sells);
79 96
80 0 97 0
86 103
87 my @obs = grep { $_->name eq $self->{reseller_shopmat}{npc_name} } 104 my @obs = grep { $_->name eq $self->{reseller_shopmat}{npc_name} }
88 $who->map->at ($self->{reseller_shopmat}{npc_x}, $self->{reseller_shopmat}{npc_y}); 105 $who->map->at ($self->{reseller_shopmat}{npc_x}, $self->{reseller_shopmat}{npc_y});
89 106
90 unless (@obs) { 107 unless (@obs) {
91 warn "Couldn't find shop keeper in " . $who->map . "\n"; 108 warn "Couldn't find shop keeper in " . $who->map->path . "\n";
92 return cf::override; 109 return cf::override;
93 } 110 }
94 111
95 my $sells = cf::from_json $obs[0]->get_ob_key_value ('ext_reseller_sales'); 112 my $sells = cf::from_json $obs[0]->get_ob_key_value ('ext_reseller_sales');
96 113
97 my $unpaid_items = {}; 114 my $unpaid_items = {};
98 115
99 for my $item (find_unpaid ($who)) { 116 for my $item (find_unpaid ($who)) {
100 if ($item->get_ob_key_value ('ext_reseller_seller') eq $who->name) { 117 if ($item->get_ob_key_value ('ext_reseller_seller') eq $who->name) {
118 audit_log ($who, 'removes', ob2info ($item));
101 $item->flag (cf::FLAG_UNPAID, 0); 119 $item->flag (cf::FLAG_UNPAID, 0);
102 $item->remove; 120 $item->remove;
103 $item->insert_ob_in_ob ($who); 121 $item->insert_ob_in_ob ($who);
104 next; 122 next;
105 } 123 }
111 if $item->get_ob_key_value ('ext_reseller_seller') eq ''; 129 if $item->get_ob_key_value ('ext_reseller_seller') eq '';
112 130
113 $unpaid_items->{$item} = [$value, $item]; 131 $unpaid_items->{$item} = [$value, $item];
114 } 132 }
115 133
134 audit_log ($who, 'wants', (join ",", map { ob2info ($_->[1], $_->[0]) } values %$unpaid_items))
135 if %$unpaid_items;
136
116 $self->apply_shop_mat ($who); 137 $self->apply_shop_mat ($who);
138
139 my @seller_noted;
117 140
118 for my $item (find_traded ($who)) { 141 for my $item (find_traded ($who)) {
119 next if $item->flag (cf::FLAG_UNPAID); 142 next if $item->flag (cf::FLAG_UNPAID);
120 if (my $value = $unpaid_items->{$item}[0]) { 143 if (my $value = $unpaid_items->{$item}[0]) {
144 push @seller_noted, ob2info ($item, $value)."P";
121 $sells->{$item->get_ob_key_value ('ext_reseller_seller')}->{$item->name} += $value; 145 $sells->{$item->get_ob_key_value ('ext_reseller_seller')}->{$item->name} += $value;
146 } else {
147 push @seller_noted, ob2info ($item)."T";
122 } 148 }
123 149
124 $item->value ($item->get_ob_key_value ('ext_reseller_orig_value')); 150 $item->value ($item->get_ob_key_value ('ext_reseller_orig_value'));
125 $item->set_ob_key_value (ext_reseller_seller => ''); 151 $item->set_ob_key_value (ext_reseller_seller => '');
126 } 152 }
153
154 audit_log ($who, 'removed', (join ",", @seller_noted))
155 if @seller_noted;
127 156
128 $obs[0]->set_ob_key_value (ext_reseller_sales => cf::to_json $sells); 157 $obs[0]->set_ob_key_value (ext_reseller_sales => cf::to_json $sells);
129 158
130 cf::override; 159 cf::override;
131 }, 160 },
221# warn "SET SELLER ON " . $what->name . " + " . $what->{seller}->[0] . "\n"; 250# warn "SET SELLER ON " . $what->name . " + " . $what->{seller}->[0] . "\n";
222 $what->custom_name ($what->name . " (by " . $who->name . ")"); 251 $what->custom_name ($what->name . " (by " . $who->name . ")");
223 $what->flag (cf::FLAG_UNPAID, 1); 252 $what->flag (cf::FLAG_UNPAID, 1);
224 $what->insert_ob_in_map_at ($who->map, $who, cf::INS_BELOW_ORIGINATOR, $who->x, $who->y); 253 $what->insert_ob_in_map_at ($who->map, $who, cf::INS_BELOW_ORIGINATOR, $who->x, $who->y);
225 254
255 audit_log ($who, 'sells', ob2info ($what));
256
226 cf::override; 257 cf::override;
227 }, 258 },
228; 259;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines