Mercurial > eagle-eye
annotate sheep.pl @ 187:fa34cdb6879a
merged.
author | "Rex Tsai <chihchun@kalug.linux.org.tw>" |
---|---|
date | Sun, 02 Nov 2008 21:19:07 +0800 |
parents | 9b8aa30a532c |
children | 937fc672df56 |
rev | line source |
---|---|
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
1 #!/usr/bin/perl |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
2 use strict; |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
3 use Ikariam; |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
4 use Data::Dumper; |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
5 |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
6 package main; |
95
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
7 my $mime = Ikariam::User->retrieve ('name' => $::user); |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
8 # only challenge the small victims |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
9 my $army_score_main = ($mime->army_score_main / 3); |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
10 |
18 | 11 my @tradegoodText = qw/NULL 葡萄酒 大理石 水晶 硫磺/; |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
12 |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
13 Ikariam::User->has_many(cities => 'Ikariam::Cities'); |
102
94c9cde99e19
check the ally by right phe ally page, not counting the members we scanned.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
95
diff
changeset
|
14 Ikariam::User->has_a(ally => 'Ikariam::Ally'); |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
15 Ikariam::User->set_sql(inactivity => qq { |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
16 SELECT user.id |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
17 FROM user, cities, island |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
18 WHERE user.id == cities.user |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
19 AND cities.island == island.id |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
20 AND island.x <= ? |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
21 AND island.x >= ? |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
22 AND island.y <= ? |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
23 AND island.y >= ? |
15 | 24 AND cities.status = 'i' |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
25 } |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
26 ); |
22
552528bb4917
refined the cache timeout is 12 hours.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
18
diff
changeset
|
27 |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
28 Ikariam::User->set_sql(sheeps => qq { |
24 | 29 SELECT user.id |
30 FROM user, cities | |
31 WHERE user.id == cities.user | |
95
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
32 AND user.trader_score_secondary >= user.army_score_main*3 |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
33 AND user.army_score_main <= $army_score_main |
24 | 34 AND cities.island IN (SELECT island.id FROM island WHERE island.x <= ? AND island.x >= ? AND island.y <= ? AND island.y >= ? ) |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
35 } |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
36 ); |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
37 |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
38 sub listSheeps |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
39 { |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
40 my @sheeps = @_; |
24 | 41 my %results; |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
42 |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
43 my $s; |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
44 foreach my $sheep (sort (@sheeps)) { |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
45 # avoid duplicate |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
46 next if($sheep->id == $s); $s = $sheep->id; |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
47 |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
48 # 查聯盟數量 |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
49 my $members = 1; |
15 | 50 unless ($sheep->allyId == '0') { |
142
9b8aa30a532c
counting members by ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
134
diff
changeset
|
51 unless (!defined($sheep->allyId) || $sheep->allyId == 0) { |
9b8aa30a532c
counting members by ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
134
diff
changeset
|
52 my $ally = Ikariam::Ally->retrieve($sheep->allyId); |
9b8aa30a532c
counting members by ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
134
diff
changeset
|
53 $members = $ally->members; |
9b8aa30a532c
counting members by ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
134
diff
changeset
|
54 } |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
55 } |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
56 |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
57 foreach my $c ($sheep->cities) { |
24 | 58 my $line = ""; |
59 # Ignore 假期模式 | |
15 | 60 next if($c->status eq 'v'); |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
61 |
15 | 62 unless($c->status eq 'i') { |
95
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
63 # Ignore 聯盟人數大於五 |
102
94c9cde99e19
check the ally by right phe ally page, not counting the members we scanned.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
95
diff
changeset
|
64 # TODO 應該依照影響力來分 |
142
9b8aa30a532c
counting members by ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
134
diff
changeset
|
65 next if($members > 10); |
15 | 66 } |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
67 |
24 | 68 my $island = Ikariam::Island->retrieve($c->island); |
69 | |
70 # 所得金錢 = 對方城鎮等級x(對方城鎮等級-1)x對方金錢/10000 | |
65
3a611c51b99b
for the new world, we only have sheep with a little gold. poor people.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
52
diff
changeset
|
71 my $capture = $c->citylevel * ($c->citylevel - 1) * $sheep->trader_score_secondary / 10000; |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
72 |
102
94c9cde99e19
check the ally by right phe ally page, not counting the members we scanned.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
95
diff
changeset
|
73 next if($capture < 200); |
33
d183277b4d93
refined the output message.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
24
diff
changeset
|
74 |
134
21df8eb17a52
commented an idea for risk assessment
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
102
diff
changeset
|
75 # 測試風險評估 |
21df8eb17a52
commented an idea for risk assessment
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
102
diff
changeset
|
76 # $capture = $capture - ($sheep->army_score_main*100); |
21df8eb17a52
commented an idea for risk assessment
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
102
diff
changeset
|
77 |
74
27b16506231f
improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
65
diff
changeset
|
78 $line = sprintf("%d %s score %d army %d %s/%s(%d),", |
65
3a611c51b99b
for the new world, we only have sheep with a little gold. poor people.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
52
diff
changeset
|
79 $capture, |
74
27b16506231f
improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
65
diff
changeset
|
80 $c->status, $sheep->score, $sheep->army_score_main, $sheep->name, $sheep->ally, $members); |
24 | 81 |
74
27b16506231f
improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
65
diff
changeset
|
82 $line .= sprintf("\"%s\" %d [%d,%d] %s http://%s/index.php?view=island&id=%d&selectCity=%d\n", |
24 | 83 $c->cityname, $c->citylevel, |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
84 $island->x, $island->y, |
18 | 85 $tradegoodText[$island->tradegood], |
74
27b16506231f
improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
65
diff
changeset
|
86 $::server, |
33
d183277b4d93
refined the output message.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
24
diff
changeset
|
87 $island->id, |
d183277b4d93
refined the output message.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
24
diff
changeset
|
88 $c->cityId |
d183277b4d93
refined the output message.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
24
diff
changeset
|
89 ); |
24 | 90 |
91 printf("%s", $line); | |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
92 } |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
93 } |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
94 } |
95
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
95 |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
96 __MAIN__: |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
97 |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
98 if($#ARGV != 1) { die("Usage: $0 x y\n"); } |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
99 my ($x, $y) = @ARGV; |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
100 |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
101 listSheeps(Ikariam::User->search_sheeps(($x + 6), ($x - 6), ($y + 6), ($y - 6))); |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
102 # listSheeps(Ikariam::User->search_inactivity(($x + 6), ($x - 6), ($y + 6), ($y - 6))); |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
103 |