annotate Ikariam.pm @ 365:2444685c68c9

merged multi-attacks script
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Sun, 01 Mar 2009 11:10:32 +0800
parents 4bea7db828eb
children d9d3cdff27c6
rev   line source
265
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
1
41
5849b6fdc76c removed my password from scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 37
diff changeset
2 BEGIN {
48
96ee35378696 modified for searching configuration files
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 41
diff changeset
3 foreach (((getpwuid($<))[7], $ENV{HOME}, $ENV{LOGDIR}, ".")) {
96ee35378696 modified for searching configuration files
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 41
diff changeset
4 require "$_/.eagleeye.pm" if (-f "$_/.eagleeye.pm");
96ee35378696 modified for searching configuration files
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 41
diff changeset
5 }
41
5849b6fdc76c removed my password from scripts.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 37
diff changeset
6 }
2
0fb73a7a0b94 ok, we done basic island scanning functions.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 1
diff changeset
7
265
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
8 package Ikariam::Base;
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
9 use strict;
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
10 require Class::DBI::SQLite;
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
11 use base qw(Class::DBI::SQLite);
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
12
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
13 sub _db_error {
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
14 my ($self, %info) = @_;
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
15 my $msg = delete $info{msg};
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
16 die($msg);
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
17 # return $self->_carp($msg, %info);
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
18 }
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
19
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
20 1;
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
21
2
0fb73a7a0b94 ok, we done basic island scanning functions.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 1
diff changeset
22 use Class::DBI::AutoLoader (
0fb73a7a0b94 ok, we done basic island scanning functions.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 1
diff changeset
23 dsn => 'dbi:SQLite:dbname=ikariam.sqlite',
0fb73a7a0b94 ok, we done basic island scanning functions.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 1
diff changeset
24 options => { RaiseError => 1 },
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
25 tables => ['cities', 'island', 'user', 'ally', 'report'],
265
aaffc50e3318 try to handle db_error
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 263
diff changeset
26 use_base => 'Ikariam::Base',
2
0fb73a7a0b94 ok, we done basic island scanning functions.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 1
diff changeset
27 namespace => 'Ikariam',
0fb73a7a0b94 ok, we done basic island scanning functions.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 1
diff changeset
28 );
0fb73a7a0b94 ok, we done basic island scanning functions.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 1
diff changeset
29
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
30 package Ikariam::Extractor;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
31 use strict;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
32 use Data::Dumper;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
33 use XML::LibXML;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
34 use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
35 use Carp;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
36 use utf8;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
37
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
38 sub new {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
39 Carp::croak("Options should be key/value pairs, not hash reference") if ref($_[1]) eq 'HASH';
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
40
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
41 my($class, %conf) = @_;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
42
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
43 my $self = bless {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
44 doc => undef,
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
45 gzip => 1,
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
46 }, $class;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
47
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
48 $self->{gzip} = $conf{'gzip'} if(defined($conf{'gzip'}));
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
49 $self->parse($conf{'content'}) if(defined($conf{'content'}));
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
50
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
51 return $self;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
52 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
53
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
54 sub parse {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
55 my ($self, $content) = @_;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
56 my $string;
110
279a000eb3b0 fixed encoding issue of LibXML
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 106
diff changeset
57 my $parser = XML::LibXML->new('1.0','UTF-8');
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
58
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
59 if($self->{gzip} == 1) {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
60 gunzip \$content => \$string
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
61 or die "gunzip failed: $GunzipError\n";
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
62 } else {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
63 $string = $content;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
64 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
65
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
66 # dirty hack for stupid highScore search function.
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
67 $string =~ s/name="searchUser" value=".*?"/name="searchUser" value=""/;
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
68
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
69 $self->{doc} = $parser->parse_html_string ($string, { suppress_errors => 1, encoding => 'UTF-8' });
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
70 return;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
71 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
72
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
73 # find($XPathQuery);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
74 sub find {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
75 my $self = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
76 my $query = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
77 my $out = [];
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
78
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
79 my $result = $self->{doc}->find($query);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
80
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
81 return undef unless defined($result);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
82
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
83 if ( $result->isa( 'XML::LibXML::NodeList' ) ) {
150
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
84 if($result->size() == 0) {
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
85 return undef unless wantarray;
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
86 return ();
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
87 }
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
88 foreach ( @$result ) {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
89 # $_ is XML::LibXML::Element, XML::LibXML::Node
92
bcd2e32cfabb fixed the user name encoding issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 91
diff changeset
90 my $literal = $_->to_literal();
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
91 utf8::encode($literal);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
92 # warn $_->toString(1) , "\n";
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
93 return $literal unless wantarray;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
94 push( @$out, $literal);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
95 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
96 } else {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
97 Carp::croak("Unsupported data type");
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
98 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
99 # TODO
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
100 # XML::LibXML::Literal
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
101 # XML::LibXML::Boolean
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
102
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
103 return @$out;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
104 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
105
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
106 1;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
107
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
108 package Ikariam;
27
dd85b55eec2a implemented basic inference engine.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 26
diff changeset
109 use strict;
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
110 use Data::Dumper;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
111 use LWP;
154
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
112
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
113 use HTTP::Cookies;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
114 use WWW::Mechanize;
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
115 use XML::LibXML qw(:encoding);
298
b3b845d30d4b new cache mechanism
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 296
diff changeset
116 use YAML qw/LoadFile Dump DumpFile/;
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
117 use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ;
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
118 use POSIX;
326
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
119 use JSON;;
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
120 use utf8;
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
121
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
122 sub new
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
123 {
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
124 my ($class, $server, $user, $pass) = @_;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
125
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
126 my $self =
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
127 {
16
59f2c435760c implemented cached by timing.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 10
diff changeset
128 mech => WWW::Mechanize->new(
59f2c435760c implemented cached by timing.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 10
diff changeset
129 agent => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092816 Iceweasel/3.0.1 (Debian-3.0.1-1)",
59f2c435760c implemented cached by timing.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 10
diff changeset
130 timeout => 10,
59f2c435760c implemented cached by timing.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 10
diff changeset
131 ),
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
132 server => $server,
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
133 user => $user,
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
134 pass => $pass,
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
135 debug => undef,
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
136 };
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
137
298
b3b845d30d4b new cache mechanism
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 296
diff changeset
138
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
139 # if debug
179
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
140 LWP::Debug::level('+trace');
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
141
250
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
142 $self->{mech}->cookie_jar(HTTP::Cookies->new(file => "/tmp/ikariam-$server-cookies.txt", autosave => 1, ignore_discard => 1));
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
143 $self->{mech}->default_headers->push_header('Accept-Encoding', 'deflate');
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
144
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
145 return bless $self, $class;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
146 }
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
147
250
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
148 sub clone
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
149 {
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
150 my $self = shift;
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
151 my $copy = bless { %$self }, ref $self; # copy most fields
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
152
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
153 $copy;
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
154 }
a654d43731f0 implement multi-thread Ikariam::Scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 242
diff changeset
155
98
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
156 sub viewAlly
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
157 {
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
158 my $self = shift;
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
159 my $allyId = shift;
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
160
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
161 my $res = $self->{mech}->get(sprintf("http://%s/index.php?view=allyPage&allyId=%d", $self->{server}, $allyId));
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
162 my $extractor = new Ikariam::Extractor(content => $res->content);
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
163
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
164 my %ally;
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
165 $ally{'id'} = $allyId;
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
166 $ally{'name'} = $extractor->find("//table[\@id='allyinfo']/tr[1]/td[2]/text()");
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
167 $ally{'members'} = $extractor->find("//table[\@id='allyinfo']/tr[2]/td[2]/text()");
240
937fc672df56 count by Ally's score
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 232
diff changeset
168 $ally{'score'} = $extractor->find("//table[\@id='allyinfo']/tr[4]/td[2]/text()");
937fc672df56 count by Ally's score
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 232
diff changeset
169 $ally{'score'} =~ s/\d+ \(([\d,]+)\)/$1/;
937fc672df56 count by Ally's score
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 232
diff changeset
170 $ally{'score'} =~ s/,//g;
937fc672df56 count by Ally's score
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 232
diff changeset
171
98
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
172 $ally{'url'} = $extractor->find("//table[\@id='allyinfo']/tr[5]/td[2]/text()");
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
173 delete($ally{'url'}) if($ally{'url'} eq '-');
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
174
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
175 return \%ally;
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
176 }
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
177
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
178 sub viewScore
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
179 {
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
180 my $self = shift;
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
181 my $type = shift || 'score';
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
182 my $user = shift || '';
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
183 my $offset = shift || 0;
91
53c87400183f rewrite viewScore with Extractor.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 88
diff changeset
184 my %users;
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
185
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
186 $self->{mech}->get(sprintf("http://%s/index.php?view=highscore&showMe=1", $self->{server}));
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
187 my $res = $self->{mech}->submit_form(
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
188 form_number => 1,
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
189 fields => {
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
190 highscoreType => $type,
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
191 offset => $offset,
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
192 searchUser => $user,
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
193 }
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
194 );
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
195
91
53c87400183f rewrite viewScore with Extractor.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 88
diff changeset
196 my $extractor = new Ikariam::Extractor(content => $res->content);
53c87400183f rewrite viewScore with Extractor.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 88
diff changeset
197 my $result = $extractor->{doc}->find('//table[@class="table01"][2]//tr');
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
198
91
53c87400183f rewrite viewScore with Extractor.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 88
diff changeset
199 foreach my $tr ( @$result ) {
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
200 my %user;
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
201 my $extractor = new Ikariam::Extractor(content => $tr->toString(0));
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
202
92
bcd2e32cfabb fixed the user name encoding issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 91
diff changeset
203 my $href = $extractor->find('//td[@class="action"]/a/@href');
91
53c87400183f rewrite viewScore with Extractor.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 88
diff changeset
204 if($href =~ /index\.php\?view=sendMessage&with=(\d+)&oldView=highscore/) {
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
205 $user{'id'} = $1;
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
206 # $user{'name'} = $user;
110
279a000eb3b0 fixed encoding issue of LibXML
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 106
diff changeset
207 # encoding issue.
279a000eb3b0 fixed encoding issue of LibXML
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 106
diff changeset
208 $user{'name'} = $extractor->find('//td[@class="name"]/text()');
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
209 next if($user{'name'} eq '');
92
bcd2e32cfabb fixed the user name encoding issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 91
diff changeset
210
bcd2e32cfabb fixed the user name encoding issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 91
diff changeset
211 $user{'ally'} = $extractor->find('//td[@class="allytag"]/a/text()');
bcd2e32cfabb fixed the user name encoding issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 91
diff changeset
212 my $allyHref = $extractor->find('//td[@class="allytag"]/a/@href');
98
34749e907405 we now scan for ally
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 96
diff changeset
213 if($allyHref =~ /\?view=allyPage&oldView=highscore&allyId=(\d+)/) {
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
214 $user{'allyId'} = $1;
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
215 }
92
bcd2e32cfabb fixed the user name encoding issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 91
diff changeset
216 $user{$type} = $extractor->find('//td[@class="score"]/text()');
19
9c52ae71c1cb fixed , in score
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 16
diff changeset
217 $user{$type} =~ s/,//g;
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
218 $users{$user{'id'}} = \%user;
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
219 }
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
220 }
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
221 # print(Dumper(\%users));
5
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
222 return \%users;
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
223 }
dbb97c4265ba implemented the scores search tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 3
diff changeset
224
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
225 sub viewWorldMap
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
226 {
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
227 my $self = shift;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
228 my $x = shift;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
229 my $y = shift;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
230
88
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
231 if(!defined($x) && !defined($y)) {
1
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
232 die('location required');
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
233 }
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
234
326
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
235 my $res = $self->{mech}->post(sprintf("http://%s/index.php?action=WorldMap&function=getJSONArea&x_min=%d&x_max=%d&y_min=%d&y_max=%d",
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
236 $self->{server}, $x - 14, $x + 12, $y - 17, $y + 9), []);
1
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
237
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
238 my $c;
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
239 my $status = gunzip \$res->content => \$c
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
240 or die "gunzip failed: $GunzipError\n";
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
241
326
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
242 my $nodes = jsonToObj($c);
1
f9eac5385dc0 added viewWorldMap
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 0
diff changeset
243 my @islands;
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
244
359
4bea7db828eb fixed scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 338
diff changeset
245 # print Dumper($nodes->{'data'});
326
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
246 foreach my $x (keys %{$nodes->{'data'}}) {
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
247 foreach my $y (keys(%{$nodes->{data}->{$x}})) {
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
248 my %island;
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
249 $island{x} = $x;
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
250 $island{y} = $y;
359
4bea7db828eb fixed scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 338
diff changeset
251
4bea7db828eb fixed scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 338
diff changeset
252 $island{id} = $nodes->{data}->{$x}->{$y}[0];
326
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
253 $island{name} = $nodes->{data}->{$x}->{$y}[1];
359
4bea7db828eb fixed scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 338
diff changeset
254 $island{tradegood} = $nodes->{data}->{$x}->{$y}[2];
4bea7db828eb fixed scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 338
diff changeset
255 $island{wonder} = $nodes->{data}->{$x}->{$y}[3];
4bea7db828eb fixed scanner
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 338
diff changeset
256 $island{people} = $nodes->{data}->{$x}->{$y}[6];
326
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
257
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
258 push @islands, \%island;
58b36b18809f new scanning tool
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 298
diff changeset
259 }
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
260 }
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
261 return @islands;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
262 }
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
263
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
264 sub viewIsland
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
265 {
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
266 my $self = shift;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
267 my $island = shift;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
268
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
269 my $res = $self->{mech}->get(sprintf("http://%s/index.php?view=island&id=%s", $self->{server}, $island));
88
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
270 my $extractor = new Ikariam::Extractor(content => $res->content);
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
271
88
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
272 my @cities;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
273 foreach my $i (0..16) {
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
274 my $cityLocations = $extractor->find(sprintf('//li[@id="cityLocation%s"]/@class', $i));
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
275 if($cityLocations =~ /city level(\d+)/) {
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
276 my %info;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
277 $info{'citylevel'} = $1;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
278 $info{'cityname'} = $extractor->find(sprintf('//li[@id="cityLocation%s"]//li[@class="name"]/text()', $i));
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
279 $info{'owner'} = $extractor->find(sprintf('//li[@id="cityLocation%s"]//li[@class="owner"]/text()', $i));
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
280 $info{'owner'} =~ s/\s+//g;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
281 $info{'ally'} = $extractor->find(sprintf('//li[@id="cityLocation%s"]//li[@class="ally"]/a/text()', $i));
117
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
282 if($info{'ally'} eq '-') {
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
283 delete($info{'ally'})
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
284 } else {
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
285 my $href = $extractor->find(sprintf('//li[@id="cityLocation%s"]//li[@class="ally"]/a/@href', $i));
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
286 if($href =~ /&allyId=(\d+)&/) {
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
287 $info{'allyId'} = $1;
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
288 }
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
289 }
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
290
5a66fea952fe implemented a dirty hack to fixed the stupid highscore search function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 110
diff changeset
291 # Ally Id
88
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
292 my $href = $extractor->find(sprintf('//li[@id="cityLocation%s"]//a[@class="messageSend"]/@href', $i));
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
293 if ($href =~ /with=(\d+)&destinationCityId=(\d+)/) {
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
294 $info{'user'} = $1;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
295 $info{'cityId'} = $2;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
296 } else {
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
297 # 聯盟 this is me.
88
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
298 my $id = $extractor->find(sprintf('//li[@id="cityLocation%s"]/a/@id', $i));
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
299 if($id =~ /city_(\d+)/) {
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
300 $info{'user'} = undef; # FIXME
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
301 $info{'cityId'} = $1;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
302 }
10
f590b5ea5e55 fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 9
diff changeset
303 }
f590b5ea5e55 fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 9
diff changeset
304
88
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
305 if(defined(($extractor->find(sprintf('//li[@id="cityLocation%s"]//span[@class="vacation"]', $i)))[0])) {
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
306 $info{'status'} = 'v';
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
307 }
96
65c102183458 saved the status of inactivity player
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 92
diff changeset
308 if(defined(($extractor->find(sprintf('//li[@id="cityLocation%s"]//span[@class="inactivity"]', $i)))[0])) {
65c102183458 saved the status of inactivity player
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 92
diff changeset
309 $info{'status'} = 'i';
65c102183458 saved the status of inactivity player
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 92
diff changeset
310 }
88
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
311 push @cities, \%info;
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
312 } else {
0fa9cd836e1e rewrited the viewIsland function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 87
diff changeset
313 # TODO: delete the old city.
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
314 }
10
f590b5ea5e55 fixed bug of sheep.pl
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 9
diff changeset
315
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
316 }
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
317
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
318 return @cities;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
319 }
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
320
295
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
321 sub switchCityBySafehouseLevel {
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
322 my $self = shift;
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
323 }
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
324
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
325 sub viewSendSpy {
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
326 my $self = shift;
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
327 my $cityId = shift;
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
328 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=sendSpy&destinationCityId=%d', $self->{server}, $cityId));
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
329 return Ikariam::Extractor->new(content => $res->content)->find(sprintf('//div[@class="percentage"]/text()'));
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
330 }
15c288dd7dc5 checking spy risks
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 288
diff changeset
331
54
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
332 sub increaseTransporter {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
333 my $self = shift;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
334 my $param = shift;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
335 my $cityId = shift;
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
336
80
7ab5fc8c847c added some memo of TODO
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 79
diff changeset
337 # TODO: 應該扣除買船之黃金, 以免誤計
7ab5fc8c847c added some memo of TODO
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 79
diff changeset
338 # TODO: 加上所有之船隻
7ab5fc8c847c added some memo of TODO
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 79
diff changeset
339 # my @cargoCost = qw/160 244 396 812 1240 1272 1832 1888 3848 3972 5204 5384 6868 7120 8864 9200 11268 11712 14108 14680 23320 24288 28664 29880 34956 36468 42348 44212 51024 53308 61236 64024 73096 76468 87020 91088 103224 116524 122072 137432 180060 202132 211964 237444 249108 278276 292076 306623 321963 338138 355198 373191 392171 412195 433320 455612 479135 503962 530166 557828 587031 617863 650420 684802 721113 759466 799981 842783 888005 935790 986286 1039654 1096062 1155689 1218724 1285369 1355837 1430353 1509159 1592508 1680670 1773932 1872597 1976989 2087448 2204338 2328045 2458976 2597567 2744276 2899594 3064040 3238163 3422550 3617820 3824635 4043693 4275738 4521561 4782000 5057946 5350345 5660202 5988585 6336630 6705540 7096598 7511164 7950683 8416694 8910828 9434823 9990523 10579889 11205006 11868090 12571498 13317734 14109462 14949514/;
7ab5fc8c847c added some memo of TODO
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 79
diff changeset
340 # $city->{transporters}->{sum}
7ab5fc8c847c added some memo of TODO
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 79
diff changeset
341
7ab5fc8c847c added some memo of TODO
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 79
diff changeset
342 # TODO: 找買船最便宜之城市
54
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
343 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
344 foreach (1..2) {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
345 if($locations[$_] eq 'port') {
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
346 my $res = $self->{mech}->get(sprintf('http://%s/index.php?action=CityScreen&function=increaseTransporter&id=%s&position=%s',
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
347 $self->{server}, $cityId, $_));
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
348 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
349 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
350 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
351
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
352
173
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
353 # for tavern only
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
354 sub set {
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
355 my $self = shift;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
356 my $type = shift;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
357 my $cityId = shift;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
358
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
359 die ("we don't know about this city") unless(defined($self->{'cities'}->{$cityId}));
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
360
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
361 my $position = -1;
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
362 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
363 foreach (0..$#locations) {
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
364 $position = $_ if($locations[$_] eq $type);
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
365 }
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
366
232
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
367 # Academy - inputScientists
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
368 if($position != -1 && $type eq 'academy') {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
369 $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
370 $self->{mech}->submit_form(
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
371 form_number => 1,
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
372 fields => {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
373 s => $self->{'cities'}->{$cityId}->{$type}->{maxValue},
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
374 }
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
375 );
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
376
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
377 }
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
378
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
379 # Tavern
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
380 if($position != -1 && $type eq 'tavern') {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
381 $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
382 $self->{mech}->submit_form(
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
383 form_number => 1,
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
384 fields => {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
385 amount => $self->{'cities'}->{$cityId}->{$type}->{maxValue},
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
386 }
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
387 );
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
388
173
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
389 }
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
390 }
e8a244ce5a1d update the tavern setting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 172
diff changeset
391
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
392 sub is_shipyard_upgrading {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
393 my $self = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
394 my $cityId = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
395 my $type = "shipyard";
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
396
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
397 my $position = -1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
398 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
399 foreach (1..2) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
400 $position = $_ if($locations[$_] eq $type);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
401 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
402
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
403 if($position != -1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
404 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
405 if(defined(Ikariam::Extractor->new(content => $res->content)->find('//div[@class="isUpgrading"]'))) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
406 return 1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
407 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
408 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
409 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
410 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
411 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
412 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
413
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
414 sub is_navy_trainning {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
415 my $self = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
416 my $cityId = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
417 my $type = "shipyard";
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
418
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
419 my $position = -1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
420 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
421 foreach (1..2) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
422 $position = $_ if($locations[$_] eq $type);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
423 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
424
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
425 if($position != -1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
426 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
427 if(defined(Ikariam::Extractor->new(content => $res->content)->find('//div[@id="unitConstructionList"]//h4'))) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
428 return 1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
429 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
430 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
431 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
432 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
433 # FIXME we can not found the shipyard
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
434 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
435 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
436
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
437 sub buildShips {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
438 my $self = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
439 my $shipType = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
440 my $cityId = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
441 my $type = 'shipyard';
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
442
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
443 warn("buildShips $shipType");
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
444 my $position = -1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
445 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
446 foreach (1..2) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
447 $position = $_ if($locations[$_] eq $type);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
448 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
449
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
450 if($position != -1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
451 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
452 $self->{mech}->submit_form(
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
453 form_number => 1,
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
454 fields => {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
455 $shipType => 1,
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
456 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
457 );
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
458 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
459 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
460
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
461 sub is_army_trainning {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
462 my $self = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
463 my $cityId = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
464 my $type = "barracks";
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
465
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
466 my $position = -1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
467 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
468 foreach (2..$#locations) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
469 $position = $_ if($locations[$_] eq $type);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
470 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
471
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
472 if($position != -1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
473 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
474 if(defined(Ikariam::Extractor->new(content => $res->content)->find('//div[@id="unitConstructionList"]//h4'))) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
475 return 1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
476 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
477 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
478 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
479 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
480 # FIXME we can not found the shipyard
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
481 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
482 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
483
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
484 sub is_barracks_upgrading {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
485 my $self = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
486 my $cityId = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
487 my $type = 'barracks';
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
488
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
489 my $position = -1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
490 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
491 foreach (2..$#locations) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
492 $position = $_ if($locations[$_] eq $type);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
493 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
494
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
495 if($position != -1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
496 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
497 if(defined(Ikariam::Extractor->new(content => $res->content)->find('//div[@class="isUpgrading"]'))) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
498 return 1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
499 } else {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
500 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
501 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
502 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
503 return 0;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
504 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
505
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
506 sub buildUnits {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
507 my $self = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
508 my $unitType = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
509 my $cityId = shift;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
510 my $type = 'barracks';
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
511
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
512 warn("buildShips $unitType");
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
513 my $position = -1;
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
514 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
515 foreach (2..$#locations) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
516 $position = $_ if($locations[$_] eq $type);
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
517 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
518
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
519 if($position != -1) {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
520 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
521 $self->{mech}->submit_form(
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
522 form_number => 1,
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
523 fields => {
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
524 $unitType => 1,
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
525 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
526 );
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
527 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
528 }
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
529
207
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
530 sub buildSpy {
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
531 my $self = shift;
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
532 my $unitType = shift;
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
533 my $cityId = shift;
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
534 my $type = 'safehouse';
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
535
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
536 my $position = -1;
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
537 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
538 foreach (2..$#locations) {
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
539 $position = $_ if($locations[$_] eq $type);
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
540 }
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
541
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
542 if($position != -1) {
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
543 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
544 my $url =
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
545 Ikariam::Extractor->new(content => $res->content)->find(sprintf('//div[@class="forminput"]/a/@href'));
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
546 $self->{mech}->get($url) if(defined($url));
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
547 }
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
548 }
48ea8222782a automatic build spys
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 205
diff changeset
549
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
550 sub build {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
551 my $self = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
552 my $type = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
553 my $cityId = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
554
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
555 die ("we don't know about this city") unless(defined($self->{'cities'}->{$cityId}));
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
556
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
557 my $position = -1;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
558 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
559 foreach (0..$#locations) {
54
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
560 $position = $_ if($locations[$_] eq $type);
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
561 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
562
82
82acbba33b97 fixed the build function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 81
diff changeset
563 if($position == -1) {
200
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
564 my $targetPosition = undef;
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
565 if($type eq "wall") {
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
566 # 14 is wall.
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
567 $targetPosition = 14;
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
568 } else {
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
569 foreach (0..13) {
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
570 next if($_ <= 2 && ($type ne "workshop-fleet" &&
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
571 $type ne "shipyard"));
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
572
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
573 if($locations[$_] eq undef) {
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
574 $targetPosition = $_;
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
575 last;
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
576 }
54
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
577 }
2d3c394b7940 rules for build new building and buy transporters
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 52
diff changeset
578 }
200
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
579
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
580 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=buildingGround&id=%s&position=%s',
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
581 $self->{server}, $cityId, $targetPosition));
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
582 my $url =
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
583 Ikariam::Extractor->new(content => $res->content)->find(sprintf('//li[@class="building %s"]//a/@href', $type));
e9f111057392 fixed the build new building function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 197
diff changeset
584 $self->{mech}->get($url) if(defined($url));
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
585 } else {
82
82acbba33b97 fixed the build function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 81
diff changeset
586 my $res = $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
83
ec087515da38 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 82
diff changeset
587 my $url = Ikariam::Extractor->new(content => $res->content)->find('//a[@title="升級建築物"]/@href');
ec087515da38 fixed a typo.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 82
diff changeset
588 $self->{mech}->get($url) if(defined($url));
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
589 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
590 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
591
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
592 sub run {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
593 my $self = shift;
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
594 my $param = shift;
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
595 # defense.
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
596 warn ("run $param not implemented yet.");
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
597 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
598
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
599 sub research
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
600 {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
601 my $self = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
602 my $type = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
603 my $cityId = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
604
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
605 # check if we are researching the same stuff
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
606 my $res = $self->{mech}->get(sprintf('http://%s/index.php?action=CityScreen&function=changeResearch&id=%s&researchType=%s', $self->{server}, $cityId, $type));
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
607 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
608
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
609 sub checkResearch {
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
610 my $self = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
611 my $cityId = shift;
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
612
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
613 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=researchOverview&id=%s', $self->{server}, $cityId));
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
614
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
615 my @urls = Ikariam::Extractor->new(content => $res->content)->find('//ul[@class="explored"]//a/@href');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
616 my $out = {};
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
617 foreach(@urls) {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
618 if(/view=researchDetail&id=\d+&position=\d+&researchId=(\d+)$/) {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
619 # we ignore the chinese name of technology researched.
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
620 @$out{$1} = 1;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
621 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
622 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
623 return $out;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
624 }
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
625
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
626 sub plunderCity {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
627 my $self = shift;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
628 my $cityId = shift;
270
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
629 my $fields = shift;
171
2efa901871e5 check peace treaty
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
630 my $res = $self->{mech}->get(sprintf("http://%s/index.php?view=plunder&destinationCityId=%d", $self->{server}, $cityId));
2efa901871e5 check peace treaty
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
631
242
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
632 my $extractor = Ikariam::Extractor->new(content => $res->content);
171
2efa901871e5 check peace treaty
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
633 # check peace treaty
242
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
634 my $treaty = $extractor->find('//div[@class="warning"]');
171
2efa901871e5 check peace treaty
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
635 if(!defined($treaty)) {
242
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
636 my @forms = $self->{mech}->forms();
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
637 if($#forms < 1) {
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
638 my $city = Ikariam::Cities->retrieve($cityId);
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
639 $city->delete;
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
640 } else {
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
641 $self->{mech}->submit_form(
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
642 form_number => 1,
270
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
643 fields => $fields);
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
644 }
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
645 } else {
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
646 # put the id in the friends.txt file.
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
647 Ikariam::Cities->has_a(user => 'Ikariam::User');
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
648 my $city = Ikariam::Cities->retrieve($cityId);
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
649 my $sheep = $city->user;
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
650
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
651 open(OUT, ">>friends.txt") or Carp::carp("can not open friends.txt");
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
652 print OUT $sheep->name . "\n";
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
653 close(OUT);
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
654 Carp::carp($treaty);
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
655 }
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
656 }
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
657
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
658
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
659 sub blockadeCity {
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
660 my $self = shift;
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
661 my $cityId = shift;
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
662 my $fields = shift;
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
663 my $res = $self->{mech}->get(sprintf("http://%s/index.php?view=blockade&destinationCityId=%d", $self->{server}, $cityId));
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
664
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
665 my $extractor = Ikariam::Extractor->new(content => $res->content);
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
666 # check peace treaty
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
667 my $treaty = $extractor->find('//div[@class="warning"]');
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
668 if(!defined($treaty)) {
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
669 my @forms = $self->{mech}->forms();
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
670 if($#forms < 1) {
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
671 my $city = Ikariam::Cities->retrieve($cityId);
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
672 $city->delete;
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
673 } else {
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
674 $self->{mech}->submit_form(
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
675 form_number => 1,
6bce423892f4 updated plunderCity and blockadeCity
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 268
diff changeset
676 fields => $fields);
242
5f6f845bbb1d check if the city still exist.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 240
diff changeset
677 }
171
2efa901871e5 check peace treaty
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
678 } else {
179
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
679 # put the id in the friends.txt file.
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
680 Ikariam::Cities->has_a(user => 'Ikariam::User');
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
681 my $city = Ikariam::Cities->retrieve($cityId);
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
682 my $sheep = $city->user;
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
683
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
684 open(OUT, ">>friends.txt") or Carp::carp("can not open friends.txt");
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
685 print OUT $sheep->name . "\n";
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
686 close(OUT);
8afd380c20ac do not fight with friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
687 Carp::carp($treaty);
171
2efa901871e5 check peace treaty
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
688 }
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
689 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
690
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
691 sub changeCity {
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
692 my $self = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
693 my $cityId = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
694
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
695 $self->{mech}->get(sprintf("http://%s/index.php", $self->{server}));
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
696 $self->{mech}->submit_form(
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
697 form_number => 2,
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
698 fields => {
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
699 cityId => $cityId,
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
700 }
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
701 );
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
702 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
703
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
704 sub readCity {
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
705 my $self = shift;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
706 my $cityId = shift;
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
707 my $data;
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
708
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
709 my $res = $self->{mech}->get(sprintf("http://%s/index.php?view=city&id=%d", $self->{server}, $cityId));
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
710 my $extractor = new Ikariam::Extractor(content => $res->content);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
711
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
712 foreach my $i (0..14) {
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
713 my @buildings = $extractor->find(sprintf('//li[@id="position%s"]/@class', $i));
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
714 foreach my $building (@buildings) {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
715 if (!($building =~ /buildingGround/) && !($building =~ /townhall/)) {
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
716 $data->{locations}[$i] = $building;
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
717
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
718 my $span;
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
719 my @spans = $extractor->find(sprintf('//li[@id="position%s"]//span[@class="textLabel"]/text()', $i));
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
720 if($#spans >= 1) {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
721 $span = $spans[1];
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
722 } else {
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
723 $span = $spans[0];
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
724 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
725 my (undef, undef, $level) = split(/ /, $span);
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
726 $data->{buildings}->{$building} = $level;
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
727 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
728 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
729 }
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
730
288
24de33db8284 fixed the missed metadata
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 286
diff changeset
731 $data->{id} = $cityId;
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
732 $data->{name} = $extractor->find('//span[@class="city"]/text()');
284
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
733
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
734 my $island = $extractor->find('//div[@id="breadcrumbs"]/a[@class="island"]');
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
735 if($island =~ /(\w+)\[(\d+):(\d+)\]/) {
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
736 $data->{island}->{name} = $1;
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
737 $data->{island}->{x} = $2;
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
738 $data->{island}->{y} = $3;
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
739 $data->{island}->{id} = my $island = $extractor->find('//div[@id="breadcrumbs"]/a[@class="island"]/@href');
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
740 $data->{island}->{id} =~ s/\?view=island&id=(\d+)/$1/;
284
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
741 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
742
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
743 return $data;
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
744 }
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
745
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
746 sub checkCity {
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
747 my $self = shift;
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
748 my $cityId = shift;
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
749
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
750 $self->{'cities'}->{$cityId} = $self->readCity($cityId);
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
751
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
752 my $res = $self->{mech}->get(sprintf("http://%s/index.php?view=city&id=%d", $self->{server}, $cityId));
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
753 my $extractor = new Ikariam::Extractor(content => $res->content);
284
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
754
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
755 $self->{'cities'}->{$cityId}->{resources}->{gold} = $extractor->find('//span[@id="value_gold"]/text()');
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
756 $self->{'cities'}->{$cityId}->{resources}->{gold} =~ s/,//g;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
757
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
758 $self->{'cities'}->{$cityId}->{construction} = defined($extractor->find('//*[@class="constructionSite"]')) ? 1 : 0;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
759
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
760 # maxCapacity
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
761 my $page = $extractor->{doc}->toString(1);
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
762 if($page =~ /maxCapacity : {\s+wood: (\d+),\s+wine: (\d+),\s+marble: (\d+),\s+crystal: (\d+),\s+sulfur: (\d+)\s+}/s) {
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
763 $self->{'cities'}->{$cityId}->{maxCapacity}->{wood} = $1;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
764 $self->{'cities'}->{$cityId}->{maxCapacity}->{wine} = $2;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
765 $self->{'cities'}->{$cityId}->{maxCapacity}->{marble} = $3;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
766 $self->{'cities'}->{$cityId}->{maxCapacity}->{crystal} = $4;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
767 $self->{'cities'}->{$cityId}->{maxCapacity}->{sulfur} = $5;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
768 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
769
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
770 foreach my $good (qw/wood wine marble crystal sulfur/) {
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
771 $self->{'cities'}->{$cityId}->{resources}->{$good} = $extractor->find(sprintf('//span[@id="value_%s"]', $good));
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
772 $self->{'cities'}->{$cityId}->{resources}->{$good} =~ s/,//g;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
773 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
774
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
775 $self->{'cities'}->{$cityId}->{transporters}->{avail} = $extractor->find('//span[@id="value_transAvail"]/text()');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
776 $self->{'cities'}->{$cityId}->{transporters}->{sum} = $extractor->find('//span[@id="value_transSum"]/text()');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
777 $self->{'cities'}->{$cityId}->{transporters}->{sum} =~ s/[\(|\)]//g;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
778 $self->{'cities'}->{$cityId}->{maxActionPoints} = $extractor->find('//span[@id="value_maxActionPoints"]');;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
779 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
780
232
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
781 sub checkAcademy {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
782 my $self = shift;
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
783 my $cityId = shift;
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
784 my $building = "academy";
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
785
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
786 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
787 # init
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
788 $self->{'cities'}->{$cityId}->{$building}->{'maxValue'} = 0;
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
789 $self->{'cities'}->{$cityId}->{$building}->{'iniValue'} = 0;
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
790 foreach (0..$#locations) {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
791 if($locations[$_] eq $building) {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
792 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=%s&id=%d&position=%d', $self->{server}, $building, $cityId, $_ ));
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
793 my $extractor = Ikariam::Extractor->new(content => $res->content);
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
794 if($extractor->{doc}->toString(0) =~ /maxValue : (\d+),\s+overcharge : \d+,\s+iniValue : (\d+),/) {
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
795 $self->{'cities'}->{$cityId}->{$building}->{'maxValue'} = $1;
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
796 $self->{'cities'}->{$cityId}->{$building}->{'iniValue'} = $2;
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
797 }
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
798 last;
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
799 }
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
800 }
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
801 }
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
802
172
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
803 sub checkTavern {
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
804 my $self = shift;
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
805 my $cityId = shift;
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
806
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
807 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
808 # init
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
809 $self->{'cities'}->{$cityId}->{'tavern'}->{'maxValue'} = 0;
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
810 $self->{'cities'}->{$cityId}->{'tavern'}->{'iniValue'} = 0;
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
811 foreach (0..$#locations) {
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
812 if($locations[$_] eq 'tavern') {
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
813 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=tavern&id=%d&position=%d', $self->{server}, $cityId, $_ ));
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
814 my $extractor = Ikariam::Extractor->new(content => $res->content);
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
815 if($extractor->{doc}->toString(0) =~ /maxValue : (\d+),\s+overcharge : \d+,\s+iniValue : (\d+),/) {
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
816 $self->{'cities'}->{$cityId}->{'tavern'}->{'maxValue'} = $1;
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
817 $self->{'cities'}->{$cityId}->{'tavern'}->{'iniValue'} = $2;
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
818 }
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
819 last;
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
820 }
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
821 }
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
822 }
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
823
284
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
824 sub checkSafeHouse {
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
825 my $self = shift;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
826 my $cityId = shift;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
827 my $data;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
828
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
829 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
830 foreach (0..$#locations) {
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
831 if($locations[$_] eq 'safehouse') {
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
832 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=safehouse&id=%d&position=%d', $self->{server}, $cityId, $_ ));
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
833 my $extractor = Ikariam::Extractor->new(content => $res->content);
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
834 foreach (1..25) {
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
835 my @links = $extractor->find(sprintf('//div[@class="spyinfo" and position() = %d]//a/@href', $_));
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
836 if ($links[0] =~ /id=(\d+)/) {
286
2ddd2bd21ef2 list spydata when check enemies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 284
diff changeset
837 $data->{$1}->{city} = $self->readCity($1);
284
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
838 @{$data->{$1}->{risks}} = Ikariam::Extractor->new(content => $self->{mech}->get($links[1])->content)->find('//div[@class="missionRisk"]');
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
839 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
840 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
841 last;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
842 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
843 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
844 return $data;
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
845 }
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
846
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
847
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
848 sub checkMilitaryAdvisorMilitaryMovements {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
849 my $self = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
850 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=militaryAdvisorMilitaryMovements', $self->{server}));
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
851 my $extractor = new Ikariam::Extractor(content => $res->content);
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
852
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
853 $self->{'military'}->{wars} = 0;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
854 $self->{'military'}->{attack} = 0;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
855
338
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
856 # FIXME, we don't if there is a attack.
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
857 foreach (qw/homeland elsewhere/) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
858 $self->{'military'}->{$_} = ();
338
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
859 my $result = $extractor->{doc}->find(sprintf('//table[@class="locationEvents"]//tr[position() > 1]', $_));
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
860 foreach my $div ( @$result ) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
861 my $extractor = new Ikariam::Extractor(content => $div->toString(1));
338
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
862 my $f = $extractor->find('//td[4]/a/@href');
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
863 my $t = $extractor->find('//td[8]/a/@href');
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
864 $f = $1 if($f =~ /\?view=island&cityId=(\d+)/);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
865 $t = $1 if($t =~ /\?view=island&cityId=(\d+)/);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
866
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
867 push @{$self->{'military'}->{$_}}, { from => $f, to => $t};
338
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
868
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
869 # if($_ eq 'homeland') {
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
870 # $self->{'military'}->{wars}++;
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
871 # } else {
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
872 # $self->{'military'}->{attack}++;
824f949bc484 we attack zero army victim every 3 days
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 331
diff changeset
873 # }
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
874 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
875 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
876 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
877
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
878 sub checkMilitaryAdvisorReportView {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
879 my $self = shift;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
880 my $combatId = shift;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
881 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=militaryAdvisorReportView&detailedCombatId=%s', $self->{server}, $combatId));
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
882 my $extractor = new Ikariam::Extractor(content => $res->content);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
883
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
884 my %report;
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
885
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
886 $report{id} = $combatId;
205
d9f17bcbf1f1 we keep 10 transporters for prize
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 204
diff changeset
887 my $c = $extractor->{doc}->toString(0);
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
888
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
889 # FIXME 城鎮 6 級)的城牆( 2 級)為防禦部隊增加了 7% 的防禦力。
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
890 while($c =~ /城鎮\s+(\d+)/gs) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
891 $report{cityLevel} = $1;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
892 $report{wallLevel} = $2;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
893 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
894
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
895 $report{attacker} = $extractor->find('//div[@id="troopsReport"]//table[@id="result"]//th[@class="attackers"]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
896 $report{defender} = $extractor->find('//div[@id="troopsReport"]//table[@id="result"]//th[@class="defenders"]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
897 $report{winner} = $extractor->find('//div[@id="troopsReport"]//table[@id="result"]//td[@class="winner"]');
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
898
150
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
899 # the combat we win!
147
7f9109a50679 trying to fixed report
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 146
diff changeset
900 $report{targetCity} = $extractor->find('//div[@id="troopsReport"]/div/h3/a/text()');
7f9109a50679 trying to fixed report
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 146
diff changeset
901 my $href = $extractor->find('//div[@id="troopsReport"]/div/h3/a/@href');
150
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
902 if(!defined($href)) {
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
903 # the combat we lost!
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
904 $report{targetCity} = $extractor->find('//td[@class="battle"]/a/text()');
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
905 $href = $extractor->find('//td[@class="battle"]/a/@href');
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
906 }
145
aad08889ddb3 hacked for s4.ikariam.tw
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 143
diff changeset
907
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
908 if($href =~ /index\.php\?view=island&id=(\d+)&selectCity=(\d+)/) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
909 $report{island} = $1;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
910 $report{city} = $2;
129
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
911 } else {
150
fab1593cadf1 fixed the combat reading issue.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 148
diff changeset
912 warn($href);
143
bfa78302cf09 ignore some combat reports, which is not finished.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 129
diff changeset
913 warn ("can not read combat reprot $combatId");
bfa78302cf09 ignore some combat reports, which is not finished.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 129
diff changeset
914 return undef;
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
915 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
916 $report{gold} = $extractor->find('//div[@id="troopsReport"]//ul[@class="resources"]/li[@class="gold"]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
917 $report{wood} = $extractor->find('//div[@id="troopsReport"]//ul[@class="resources"]/li[@class="wood"]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
918 $report{crystal} = $extractor->find('//div[@id="troopsReport"]//ul[@class="resources"]/li[@class="glass"]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
919 $report{wine} = $extractor->find('//div[@id="troopsReport"]//ul[@class="resources"]/li[@class="wine"]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
920 $report{sulfur} = $extractor->find('//div[@id="troopsReport"]//ul[@class="resources"]/li[@class="sulfur"]');
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
921
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
922 foreach(qw/gold wood crystal wine sulfur attacker defender winner/) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
923 $report{$_} =~ s/^.*?:\s+//;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
924 $report{$_} =~ s/\s+$//;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
925 $report{$_} =~ s/,//g;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
926 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
927 return \%report;
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
928 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
929
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
930 sub checkMilitaryAdvisorCombatReports {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
931 my $self = shift;
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
932 my $page = shift || 0;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
933
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
934 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=militaryAdvisorCombatReports&start=%s', $self->{server}, $page));
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
935 my $extractor = new Ikariam::Extractor(content => $res->content);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
936
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
937 my $result = $extractor->{doc}->find('//div[@id="troopsOverview"]//table/tr[position()<=10]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
938 foreach my $tr ( @$result ) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
939 my $trExtractor = new Ikariam::Extractor(content => $tr->toString(1));
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
940 my $date = $trExtractor->find('//td[@class="date"]');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
941 $date =~ s/^\s+//g; $date =~ s/\s+$//g;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
942
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
943
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
944 my $href = $trExtractor->find('//td/a/@href');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
945 if($href =~ /index.php\?view=militaryAdvisorReportView&combatId=(\d+)/) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
946 my $report = Ikariam::Report->retrieve($1);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
947 if(!$report) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
948 my $report_hash = $self->checkMilitaryAdvisorReportView($1);
129
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
949 if(defined($report_hash)) {
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
950 $report = Ikariam::Report->insert($report_hash);
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
951
129
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
952 if($date =~ /(\d+)\.(\d+)\. (\d+):(\d+)/) {
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
953 my $unixtime = mktime (0, $4, $3, $1, ($2-1), '108');
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
954 $report->set('date', $unixtime);
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
955 }
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
956 $report->set('time', time);
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
957
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
958 $report->update();
143
bfa78302cf09 ignore some combat reports, which is not finished.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 129
diff changeset
959 } else {
bfa78302cf09 ignore some combat reports, which is not finished.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 129
diff changeset
960 # for some reason, we can not read the report.
bfa78302cf09 ignore some combat reports, which is not finished.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 129
diff changeset
961 next;
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
962 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
963 } else {
129
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
964 # we have found the report we like to know, exit the function.
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
965 return;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
966 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
967 } else {
129
3756298f8e4b fixed the island and city id in the military reports.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 125
diff changeset
968 # there is not report yet.
101
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
969 return;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
970 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
971 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
972
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
973 my @moreCombats = $extractor->find('//div[@id="troopsOverview"]//table/tr[position()>10]//a/@href');
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
974 foreach (@moreCombats){
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
975 last if(/^javascript/);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
976 if(/\?view=militaryAdvisorCombatReports&start=(\d+)/) {
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
977 next if($1 le $page);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
978 $self->checkMilitaryAdvisorCombatReports($1);
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
979 last;
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
980 }
592d3b3b7898 implemented the WAR robot
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 100
diff changeset
981 }
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
982 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
983
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
984 sub checkTownHall {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
985 my $self = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
986 my $cityId = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
987
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
988 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=townHall&id=%d', $self->{server}, $cityId));
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
989 my $extractor = new Ikariam::Extractor(content => $res->content);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
990
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
991 # //div[@id='SatisfactionOverview']//div[@class='value']
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
992 # //div[@id='SatisfactionOverview']//div[@class='text']
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
993 $self->{"cities"}->{$cityId}->{happiness} = $extractor->find('//div[@id="SatisfactionOverview"]//div[@class="value"]');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
994
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
995 # 取 SatisfactionOverview 中的其他值
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
996 # 一個城鎮的市民滿意度結合了多方面的因素
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
997 # check happiness
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
998 # Happiness = Basic bonuses (196 + Capital Bonus + Holiday Bonus(25)) +
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
999 # Wine (Tavern Base(12*level) +
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1000 # Tavern Bonus(80*step)) +
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1001 # Culture (Museum Base(20*level) +
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1002 # Cultural Goods Bonus(50*Cultural Goods)) -
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1003 # Population (population) -
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1004 # Corruption (Corruption rate * population)
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1005 #
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1006 # Growth Rate = Happiness * 0.02
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1007
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1008 # Space, 房屋數
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1009 $self->{'cities'}->{$cityId}->{"space"} = {};
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1010 $self->{'cities'}->{$cityId}->{"space"}->{'total'} = $extractor->find('//span[@class="value total"]/text()');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1011 $self->{'cities'}->{$cityId}->{"space"}->{'occupied'} = $extractor->find('//span[@class="value occupied"]/text()');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1012
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1013 my @values = $extractor->find('//div[@id="CityOverview"]//span[@class="value"]');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1014 $self->{'cities'}->{$cityId}->{"growth"} = $values[0];
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1015 $self->{'cities'}->{$cityId}->{"incomegold"} = $values[1];
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1016
100
ed6160630329 save actionPoints.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 98
diff changeset
1017 my $actionPoints = $extractor->find('//div[@id="CityOverview"]//li[@class="actions"]/text()');
ed6160630329 save actionPoints.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 98
diff changeset
1018 if($actionPoints =~ /(\d+)\/(\d+)/) {
ed6160630329 save actionPoints.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 98
diff changeset
1019 $self->{'cities'}->{$cityId}->{actionPoints} = $1;
ed6160630329 save actionPoints.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 98
diff changeset
1020 $self->{'cities'}->{$cityId}->{maxActionPoints} = $2;
ed6160630329 save actionPoints.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 98
diff changeset
1021 }
ed6160630329 save actionPoints.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 98
diff changeset
1022
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1023 $self->{'cities'}->{$cityId}->{corruption} = $extractor->find('//li[@class="corruption"]//span[@title="目前腐敗程度"]');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1024 $self->{'cities'}->{$cityId}->{corruption} =~ s/%//g;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1025
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1026 my @citizens_type = qw/citizens woodworkers specialworkers scientists/;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1027 @values = $extractor->find('//div[@id="PopulationGraph"]//span[@class="count"]');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1028 foreach my $i (0..$#citizens_type)
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1029 {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1030 $self->{'cities'}->{$cityId}->{'citizens'}->{$citizens_type[$i]} = $values[$i];
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1031 $self->{'cities'}->{$cityId}->{'citizens'}->{total} += $values[$i];
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1032 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1033 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1034
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1035 sub checkArmies
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1036 {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1037 my $self = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1038 my $cityId = shift;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1039 my %force_types;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1040
330
484aaddeef66 fixed the order of armies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 326
diff changeset
1041 $force_types{'army'} = [ qw/undef undef Slinger Swordsman Phalanx Archer Gunsman Gyrocopter SteamGiant Bombardier Ram Catapult Mortar Doctor Cook/ ];
484aaddeef66 fixed the order of armies
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 326
diff changeset
1042 $force_types{'fleet'} = [ qw/undef undef Ram-Ship BallistaShip Flamethrower CatapultShip PaddleWheelRam MortarShip DivingBoat/ ];
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1043
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1044 foreach my $x (qw/army fleet/) {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1045 $self->{'cities'}->{$cityId}->{$x} = {};
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1046 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=cityMilitary-%s&id=%d', $self->{server}, $x, $cityId));
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1047 my @numbers = Ikariam::Extractor->new(content => $res->content)->find('//table//tr/td');
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1048 foreach my $j (0..$#{$force_types{$x}}) {
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1049 next if(!defined($force_types{$x}[$j]));
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1050 if ($numbers[$j] == '-') {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1051 $self->{'cities'}->{$cityId}->{$x}->{$force_types{$x}[$j]} = 0;
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1052 } else {
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1053 $self->{'cities'}->{$cityId}->{$x}->{$force_types{$x}[$j]} = $numbers[$j];
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1054 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1055 }
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1056 }
52
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
1057 }
d2ac1e198ce4 implement a new agent based on Decision Tree (Decision::ParseTree)
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 48
diff changeset
1058
154
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1059 sub checkFriends
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1060 {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1061 # must check cities first, so we know if we have a museum available.
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1062 my $self = shift;
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1063
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1064 foreach my $cityId (keys(%{$self->{'cities'}})) {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1065 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1066 foreach (0..$#locations) {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1067 if($locations[$_] eq 'museum') {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1068 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=museum&id=%d&position=%d', $self->{server}, $cityId, $_ ));
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1069 my @hrefs = Ikariam::Extractor->new(content => $res->content)->find('//div[@class="content"]/table/tbody/tr/td/a[1]/@href');
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1070 foreach my $href (@hrefs) {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1071 if ($href =~ /&id=(\d+)&/) {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1072 $self->{'friends'}->{$1} = undef;
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1073 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1074 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1075 last;
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1076 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1077 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1078 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1079
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1080 if(-f "friends.txt") {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1081 # load friends
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1082 open(IN, "friends.txt") or die "Unable to open friends.txt\n";
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1083 while(<IN>) {
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1084 chomp;
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1085 my $friend = Ikariam::User->retrieve(name => $_);
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1086 $self->{friends}->{$friend->id} = undef if(defined($friend));
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1087 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1088 close(IN);
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1089 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1090 }
637314cc57ed checking for friends.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 150
diff changeset
1091
23
54ab0becd730 implemented a prototype for collecting account status.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 19
diff changeset
1092 sub check
54ab0becd730 implemented a prototype for collecting account status.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 19
diff changeset
1093 {
54ab0becd730 implemented a prototype for collecting account status.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 19
diff changeset
1094 my $self = shift;
54ab0becd730 implemented a prototype for collecting account status.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 19
diff changeset
1095
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1096 # MilitaryAdvisor
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1097 $self->checkMilitaryAdvisorMilitaryMovements();
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1098 $self->checkMilitaryAdvisorCombatReports();
81
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
1099 $self->{'research'} = $self->checkResearch((keys(%{$self->{'cities'}}))[0]);
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
1100
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
1101 # alerts
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
1102 # //li[@id="advCities"]/a[@class="normalalert"]
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
1103 # //li[@id="advMilitary"]/a[@class="normalalert"]
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
1104 # //li[@id="advResearch"]/a[@class="normalalert"]
d57920014cb4 split buliding.yaml to city.yaml and overall.yaml
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 80
diff changeset
1105 # //li[@id="advDiplomacy"]/a[@class="normalalert"]
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1106
26
d8117792c6f5 collecting more data from townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 23
diff changeset
1107 # looking for cities
125
4374173bab47 collect hometown island information.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 117
diff changeset
1108 foreach my $cityId (keys(%{$self->{'cities'}})) {
284
10f14db31151 added new dump spy info function
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 270
diff changeset
1109 $self->changeCity($cityId);
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1110 $self->checkCity($cityId);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1111 $self->checkTownHall($cityId);
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1112 $self->checkArmies($cityId);
172
ba03aa8abdb2 reading Tavern's infomration
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 154
diff changeset
1113 $self->checkTavern($cityId);
232
978a949602e5 Auto-update Scientists numbers for Academy.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 210
diff changeset
1114 $self->checkAcademy($cityId);
23
54ab0becd730 implemented a prototype for collecting account status.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 19
diff changeset
1115 }
197
dbdd7dcc91c6 fixed for friendly troop and corruption
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 195
diff changeset
1116 # $self->checkFriends();
26
d8117792c6f5 collecting more data from townHall
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 23
diff changeset
1117 return $self->{'cities'};
23
54ab0becd730 implemented a prototype for collecting account status.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 19
diff changeset
1118 }
54ab0becd730 implemented a prototype for collecting account status.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 19
diff changeset
1119
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1120 sub getNetIncome {
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1121 my $self = shift;
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1122 my $cityId = shift;
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1123
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1124 Carp::croak("must assign cityId") if !defined($cityId);
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1125
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1126 # 扣除研發每人花費 8 GOLD
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1127 return ($self->{cities}->{$cityId}->{citizens}->{total}*4 - $self->{cities}->{$cityId}->{citizens}->{scientists}*8 );
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1128 }
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1129
87
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1130 sub getNavyExpenditure {
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1131 my $self = shift;
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1132 my $cityId = shift;
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1133 my $cities = $self->{cities};
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1134
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1135 my $ships = {
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1136 CargoShip => {n => "CargoShip",a => 0,d => 0,s => 4,c => "Steamship",v => 20,A => 0,D => 0},
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1137 'Ram-Ship' => {n => "Ram-Ship",p => 6,w => 56,S => 21,b => "34m",u => 20,m => 1,o => 3,a => 16,d => 16,A => 4,D => 4,s => 10,c => "Sailer",v => 10},
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1138 BallistaShip => {n => "BallistaShip",p => 5,w => 72,S => 29,b => "47m",u => 24,m => 3,o => 5,a => 20,d => 28,A => 5,D => 7,s => 11,c => "Sailer",v => 8,x => "Resistance"},
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1139 Flamethrower => {n => "Flamethrower",p => 5,w => 105,S => 77,b => "1h 55m",u => 45,m => 5,o => 7,a => 40,d => 40,A => 10,D => 10,s => 12,c => "Steamship",v => 8,x => "Assault"},
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1140 CatapultShip => {n => "CatapultShip",p => 10,w => 173,S => 76,b => "3h 11m",u => 57,m => 7,o => 10,a => 60,d => 60,A => 12,D => 12,s => 16,c => "Sailer",v => 6},
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1141 MortarShip => {n => "MortarShip",p => 22,w => 456,S => 282,b => "3h 38m",u => 130,m => 12,o => 15,a => 160,d => 160,A => 35,D => 35,s => 14,c => "Steamship",v => 4},
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1142 PaddleWheelRam => {n => "PaddleWheelRam",i => "steamboat",p => 12,w => 513,S => 167,b => "4h 8m",u => 114,m => 10,o => 13,a => 100,d => 90,A => 20,D => 18,s => 13,c => "Steamship",v => 8,x => "Assault"},
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1143 DivingBoat => {n => "DivingBoat",i => "submarine",p => 16,w => 493,C => 378,b => "5h 5m",u => 126,m => 15,o => 16,a => 110,d => 155,A => 20,D => 30,s => 10,c => "Steamship",v => 2,x => "Resistance"}
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1144 };
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1145 my $cost = 0;
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1146 foreach(keys(%{$cities->{$cityId}->{fleet}})) {
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1147 $cost += $cities->{$cityId}->{fleet}->{$_} * $ships->{$_}->{u};
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1148 }
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1149 return $cost;
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1150 }
4c82cf844aa8 counting navy expenditure
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 86
diff changeset
1151
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1152 sub getMilityExpenditure {
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1153 my $self = shift;
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1154 my $cityId = shift;
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1155 my $cities = $self->{cities};
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1156 my $troops = {
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1157 # p 需要人口
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1158 # w 木頭
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1159 # S 硫磺
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1160 # b 製造時間
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1161 # u 維持費用
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1162 # m 最低軍營等級
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1163 # o 最佳軍營等級
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1164 # a 攻擊力
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1165 # d 防守力
210
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1166 # A 攻擊力加成
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1167 # D 防守力加成
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1168 # s 耐力
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1169 # c 種類
210
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1170 # v Speed
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1171 # x 攻防加成 Assault, Resistance
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1172 Slinger => {n => "Slinger", p => 1, w => 40, b => "12m", u => 8, m => 1, o => 4, a => 7, d => 6, A => 2, D => 2, s => 10, c => "Human", v => 20},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1173 Swordsman => {n => "Swordsman", p => 2, w => 47, S => 16, b => "17m", u => 16, m => 3, o => 5, a => 18, d => 14, A => 4, D => 3, s => 12, c => "Human", v => 20, x => "Assault"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1174 Phalanx => {n => "Phalanx", p => 4, w => 104, S => 64, b => "40m", u => 24, m => 4, o => 7, a => 24, d => 40, A => 6, D => 10, s => 14, c => "Human", v => 20, x => "Resistance"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1175 Ram => {n => "Ram", p => 8, w => 198, S => 128, b => "42m", u => 52, m => 5, o => 8, a => 14, d => 18, A => 3, D => 4, s => 16, c => "Machina", v => 20, x => "Ram"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1176 Archer => {n => "Archer", p => 4, w => 172, S => 86, b => "49m", u => 32, m => 7, o => 10, a => 40, d => 40, A => 10, D => 10, s => 12, c => "Human", v => 20},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1177 Catapult => {n => "Catapult", p => 10, w => 342, S => 232, b => "49m", u => 72, m => 10, o => 14, a => 36, d => 28, A => 9, D => 7, s => 16, c => "Machina", v => 20, x => "Ram"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1178 Gunsman => {n => "Gunsman", i => "marksman", p => 7, w => 355, S => 154, b => "1h 23m", u => 58, m => 14, o => 18, a => 80, d => 64, A => 18, D => 14, s => 10, c => "Human", v => 20},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1179 Mortar => {n => "Mortar", p => 12, w => 1325, S => 938, b => "1h 53m", u => 128, m => 19, o => 21, a => 64, d => 64, A => 15, D => 15, s => 16, c => "Machina", v => 20, x => "Ram"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1180 SteamGiant => {n => "SteamGiant", i => "steamgiant", p => 6, w => 1150, S => 716, b => "1h 45m", u => 68, m => 16, o => 20, a => 100, d => 140, A => 20, D => 30, s => 14, c => "Machina", v => 20, x => "Resistance"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1181 Gyrocopter => {n => "Gyrocopter", p => 8, w => 1250, S => 670, b => "1h 2m", u => 97, m => 12, o => 16, a => 112, d => 112, A => 25, D => 25, s => 12, c => "Machina", v => 20},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1182 Bombardier => {n => "Bombardier", p => 24, w => 2270, S => 878, b => "2h 10m", u => 228, m => 22, o => 24, a => 200, d => 165, A => 45, D => 35, s => 14, c => "Machina", v => 20, x => "Assault"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1183 Doctor => {n => "Doctor", i => "medic", p => 6, w => 640, C => 361, b => "1h 2m", u => 244, m => 11, o => 12, a => 4, d => 28, A => 0, D => 0, s => 14, c => "Human", v => 20, x => "Healer"},
a5862d3f1c84 fixed build_barracks and build_shipyard
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 207
diff changeset
1184 Cook => {n => "Cook", p => 4, w => 520, W => 103, b => "38m", u => 138, m => 8, o => 8, a => 6, d => 26, A => 0, D => 0, s => 16, c => "Human", v => 20, x => "Regeneration"}
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1185 };
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1186
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1187 my $cost = 0;
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1188 foreach(keys(%{$cities->{$cityId}->{army}})) {
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1189 $cost += $cities->{$cityId}->{army}->{$_} * $troops->{$_}->{u};
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1190 }
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1191 return $cost;
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1192 }
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1193
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1194 sub blanceHurmanResource {
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1195 my $self = shift;
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1196 my $cityId = shift;
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1197 my $workersRatio = {
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1198 'citizens' => 0.4,
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1199 'specialworkers' => 0.3,
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1200 'woodworkers' => 0.7,
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1201 };
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1202
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1203 my $netincome = $self->getNetIncome($cityId);
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1204
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1205 # --- HR ---
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1206 # 扣除研發,四成種田生產,剩下 3:7 挖資源
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1207 # 四成收入中可用兩成做軍事用途
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1208 # 生產共四成
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1209 my $produceworkers = int(($netincome * $workersRatio->{citizens}) / 4);
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1210
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1211 # 換成生產人力
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1212 my $freePeople = $self->{cities}->{$cityId}->{citizens}->{total} - ($produceworkers + $self->{cities}->{$cityId}->{scientists});
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1213
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1214 # XXX
86
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1215 # 需計算資源開挖上限, 依照島等級區分
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1216 # 木頭
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1217 # create_slider({
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1218 # dir : 'ltr',
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1219 # id : "default",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1220 # maxValue : 367,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1221 # overcharge : 0,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1222 # iniValue : 367,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1223 # bg : "sliderbg",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1224 # thumb : "sliderthumb",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1225 # topConstraint: -10,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1226 # bottomConstraint: 344,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1227 # bg_value : "actualValue",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1228 # bg_overcharge : "overcharge",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1229 # textfield:"inputWorkers"
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1230 # });
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1231
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1232 # create_slider({
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1233 # dir : 'ltr',
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1234 # id : "default",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1235 # maxValue : 367,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1236 # overcharge : 0,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1237 # iniValue : 367,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1238 # bg : "sliderbg",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1239 # thumb : "sliderthumb",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1240 # topConstraint: -10,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1241 # bottomConstraint: 344,
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1242 # bg_value : "actualValue",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1243 # bg_overcharge : "overcharge",
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1244 # textfield:"inputWorkers"
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1245 # });
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1246
a8acf50bf7bb implemented a simple MilityExpenditure counting
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 84
diff changeset
1247 Carp::carp(sprintf("Suggested HR palnning - produce: %s wood %s special %s\n", $produceworkers, int($freePeople*0.3), int($freePeople*0.7)));
84
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1248 }
2c6c219dc3ff fixed the checkCity function, implemneted a human resources palnning function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 83
diff changeset
1249
9
ae412d1f7761 added logout function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 8
diff changeset
1250 sub logout
ae412d1f7761 added logout function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 8
diff changeset
1251 {
ae412d1f7761 added logout function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 8
diff changeset
1252 my $self = shift;
ae412d1f7761 added logout function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 8
diff changeset
1253 $self->{mech}->get(sprintf('http://%s/index.php?action=loginAvatar&function=logout', $self->{server}));
ae412d1f7761 added logout function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 8
diff changeset
1254 }
ae412d1f7761 added logout function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 8
diff changeset
1255
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1256 sub login
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1257 {
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1258 my $self = shift;
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1259
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1260 my $res = $self->{mech}->post(sprintf("http://%s/index.php?action=loginAvatar&function=login", $self->{server}), [
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1261 name => $self->{user},
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1262 password => $self->{pass},
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1263 ]);
79
9d92e8c12f58 rewrited the code in XPath.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 75
diff changeset
1264
82
82acbba33b97 fixed the build function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 81
diff changeset
1265 my @cities = Ikariam::Extractor->new(content => $res->content)->find('//option[@class="avatarCities coords"]/@value');
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1266
82
82acbba33b97 fixed the build function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 81
diff changeset
1267 if($#cities<0) {
82acbba33b97 fixed the build function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 81
diff changeset
1268 die ("login failed\n");
82acbba33b97 fixed the build function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 81
diff changeset
1269 }
298
b3b845d30d4b new cache mechanism
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 296
diff changeset
1270 foreach (@cities) {
82
82acbba33b97 fixed the build function.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 81
diff changeset
1271 $self->{'cities'}->{$_} = {};
183
2362c8c8909e implemented military builder.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 174
diff changeset
1272 $self->{'cities'}->{$_}->{id} = $_;
298
b3b845d30d4b new cache mechanism
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 296
diff changeset
1273 if(-f "city-$_-dump.yaml") {
b3b845d30d4b new cache mechanism
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 296
diff changeset
1274 $self->{'cities'}->{$_} = LoadFile("city-$_-dump.yaml");
b3b845d30d4b new cache mechanism
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents: 296
diff changeset
1275 }
0
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1276 }
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1277 }
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1278
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1279
abaee7064429 new scanning prototype.
"Rex Tsai <chihchun@kalug.linux.org.tw>"
parents:
diff changeset
1280 1;