Mercurial > eagle-eye
annotate sheep.pl @ 376:6ca0677a361e
refiend output format and fixed timing issue.
author | "Rex Tsai <chihchun@kalug.linux.org.tw>" |
---|---|
date | Tue, 14 Apr 2009 17:02:17 +0800 |
parents | 81a2aeaf6bf7 |
children |
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); |
240
937fc672df56
count by Ally's score
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
142
diff
changeset
|
8 my $myAlly = undef; |
361
81a2aeaf6bf7
refined sheep finder for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
355
diff
changeset
|
9 $myAlly = Ikariam::Ally->retrieve($mime->allyId) if(defined($mime->allyId) && $mime->allyId ne '0'); |
240
937fc672df56
count by Ally's score
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
142
diff
changeset
|
10 |
95
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
11 # only challenge the small victims |
361
81a2aeaf6bf7
refined sheep finder for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
355
diff
changeset
|
12 # my $army_score_main = ($mime->army_score_main / 3); |
81a2aeaf6bf7
refined sheep finder for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
355
diff
changeset
|
13 my $army_score_main = $mime->army_score_main; |
95
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
14 |
18 | 15 my @tradegoodText = qw/NULL 葡萄酒 大理石 水晶 硫磺/; |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
16 |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
17 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
|
18 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
|
19 Ikariam::User->set_sql(inactivity => qq { |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
20 SELECT user.id |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
21 FROM user, cities, island |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
22 WHERE user.id == cities.user |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
23 AND cities.island == island.id |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
24 AND island.x <= ? |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
25 AND island.x >= ? |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
26 AND island.y <= ? |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
27 AND island.y >= ? |
15 | 28 AND cities.status = 'i' |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
29 } |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
30 ); |
22
552528bb4917
refined the cache timeout is 12 hours.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
18
diff
changeset
|
31 |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
32 Ikariam::User->set_sql(sheeps => qq { |
24 | 33 SELECT user.id |
34 FROM user, cities | |
35 WHERE user.id == cities.user | |
361
81a2aeaf6bf7
refined sheep finder for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
355
diff
changeset
|
36 AND user.army_score_main <= $army_score_main |
24 | 37 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
|
38 } |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
39 ); |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
40 |
324 | 41 sub travelTime { |
42 my ($x1, $y1, $x2, $y2, $speed) = @_; | |
343
85d60a0569bf
fixed travel time for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
341
diff
changeset
|
43 $speed = 60 unless(defined($speed)); |
85d60a0569bf
fixed travel time for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
341
diff
changeset
|
44 if($x1 == $x2 && $y1 == $y2) { |
85d60a0569bf
fixed travel time for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
341
diff
changeset
|
45 return 600/$speed; |
85d60a0569bf
fixed travel time for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
341
diff
changeset
|
46 } else { |
85d60a0569bf
fixed travel time for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
341
diff
changeset
|
47 return int( (sqrt((abs($x1 - $x2) * abs($x1 - $x2)) + (abs($y1 - $y2) * abs($y1 - $y2)))) * (1200/$speed)); |
85d60a0569bf
fixed travel time for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
341
diff
changeset
|
48 } |
324 | 49 } |
50 | |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
51 sub listSheeps |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
52 { |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
53 my @sheeps = @_; |
24 | 54 my %results; |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
55 |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
56 my $s; |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
57 foreach my $sheep (sort (@sheeps)) { |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
58 # avoid duplicate |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
59 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
|
60 |
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
61 foreach my $c ($sheep->cities) { |
24 | 62 my $line = ""; |
63 # Ignore 假期模式 | |
15 | 64 next if($c->status eq 'v'); |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
65 |
355 | 66 # unless($c->status eq 'i') { |
67 # # 依照影響力區分 | |
68 # unless ($sheep->allyId == '0') { | |
69 # unless (!defined($sheep->allyId) || $sheep->allyId == 0) { | |
70 # my $ally = Ikariam::Ally->retrieve($sheep->allyId); | |
71 # next if(!defined($ally)); | |
72 # next if($ally->score > $myAlly->score); | |
73 # } | |
74 # } | |
75 # } | |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
76 |
361
81a2aeaf6bf7
refined sheep finder for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
355
diff
changeset
|
77 next if($mime->allyId == $sheep->allyId); |
81a2aeaf6bf7
refined sheep finder for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
355
diff
changeset
|
78 next if($c->citylevel <= 5); |
81a2aeaf6bf7
refined sheep finder for 0.3.0
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
355
diff
changeset
|
79 next if($c->risk >= 50); |
24 | 80 my $island = Ikariam::Island->retrieve($c->island); |
81 | |
295
15c288dd7dc5
checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
249
diff
changeset
|
82 $line = sprintf("%d %s score %d army %d risk %d %s/%s,", |
324 | 83 travelTime($::x, $::y, $island->x, $island->y), |
84 # $capture, | |
295
15c288dd7dc5
checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
249
diff
changeset
|
85 $c->status, $sheep->score, $sheep->army_score_main, $c->risk, $sheep->name, $sheep->ally); |
24 | 86 |
74
27b16506231f
improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
65
diff
changeset
|
87 $line .= sprintf("\"%s\" %d [%d,%d] %s http://%s/index.php?view=island&id=%d&selectCity=%d\n", |
24 | 88 $c->cityname, $c->citylevel, |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
89 $island->x, $island->y, |
18 | 90 $tradegoodText[$island->tradegood], |
74
27b16506231f
improved the tech trees
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
65
diff
changeset
|
91 $::server, |
33
d183277b4d93
refined the output message.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
24
diff
changeset
|
92 $island->id, |
d183277b4d93
refined the output message.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
24
diff
changeset
|
93 $c->cityId |
d183277b4d93
refined the output message.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
24
diff
changeset
|
94 ); |
24 | 95 |
96 printf("%s", $line); | |
10
f590b5ea5e55
fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
8
diff
changeset
|
97 } |
8
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
98 } |
e4b3168d0319
implemented sheep and enemy scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff
changeset
|
99 } |
95
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 __MAIN__: |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
102 |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
103 if($#ARGV != 1) { die("Usage: $0 x y\n"); } |
324 | 104 our ($x, $y) = @ARGV; |
95
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
105 |
6527b4b20d60
refiend the army score filtering
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
74
diff
changeset
|
106 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
|
107 # 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
|
108 |