Mercurial > eagle-eye
view sheep.pl @ 232:978a949602e5
Auto-update Scientists numbers for Academy.
Refined the rules for safehouse, the safe house must be same or higher level then Town Hall.
Make people very happy, when the townHall is less then 16.
Build museum first then tavern
THG: changed warfare.pl
author | "Rex Tsai <chihchun@kalug.linux.org.tw>" |
---|---|
date | Thu, 06 Nov 2008 20:31:05 +0800 |
parents | 9b8aa30a532c |
children | 937fc672df56 |
line wrap: on
line source
#!/usr/bin/perl use strict; use Ikariam; use Data::Dumper; package main; my $mime = Ikariam::User->retrieve ('name' => $::user); # only challenge the small victims my $army_score_main = ($mime->army_score_main / 3); my @tradegoodText = qw/NULL 葡萄酒 大理石 水晶 硫磺/; Ikariam::User->has_many(cities => 'Ikariam::Cities'); Ikariam::User->has_a(ally => 'Ikariam::Ally'); Ikariam::User->set_sql(inactivity => qq { SELECT user.id FROM user, cities, island WHERE user.id == cities.user AND cities.island == island.id AND island.x <= ? AND island.x >= ? AND island.y <= ? AND island.y >= ? AND cities.status = 'i' } ); Ikariam::User->set_sql(sheeps => qq { SELECT user.id FROM user, cities WHERE user.id == cities.user AND user.trader_score_secondary >= user.army_score_main*3 AND user.army_score_main <= $army_score_main AND cities.island IN (SELECT island.id FROM island WHERE island.x <= ? AND island.x >= ? AND island.y <= ? AND island.y >= ? ) } ); sub listSheeps { my @sheeps = @_; my %results; my $s; foreach my $sheep (sort (@sheeps)) { # avoid duplicate next if($sheep->id == $s); $s = $sheep->id; # 查聯盟數量 my $members = 1; unless ($sheep->allyId == '0') { unless (!defined($sheep->allyId) || $sheep->allyId == 0) { my $ally = Ikariam::Ally->retrieve($sheep->allyId); $members = $ally->members; } } foreach my $c ($sheep->cities) { my $line = ""; # Ignore 假期模式 next if($c->status eq 'v'); unless($c->status eq 'i') { # Ignore 聯盟人數大於五 # TODO 應該依照影響力來分 next if($members > 10); } my $island = Ikariam::Island->retrieve($c->island); # 所得金錢 = 對方城鎮等級x(對方城鎮等級-1)x對方金錢/10000 my $capture = $c->citylevel * ($c->citylevel - 1) * $sheep->trader_score_secondary / 10000; next if($capture < 200); # 測試風險評估 # $capture = $capture - ($sheep->army_score_main*100); $line = sprintf("%d %s score %d army %d %s/%s(%d),", $capture, $c->status, $sheep->score, $sheep->army_score_main, $sheep->name, $sheep->ally, $members); $line .= sprintf("\"%s\" %d [%d,%d] %s http://%s/index.php?view=island&id=%d&selectCity=%d\n", $c->cityname, $c->citylevel, $island->x, $island->y, $tradegoodText[$island->tradegood], $::server, $island->id, $c->cityId ); printf("%s", $line); } } } __MAIN__: if($#ARGV != 1) { die("Usage: $0 x y\n"); } my ($x, $y) = @ARGV; listSheeps(Ikariam::User->search_sheeps(($x + 6), ($x - 6), ($y + 6), ($y - 6))); # listSheeps(Ikariam::User->search_inactivity(($x + 6), ($x - 6), ($y + 6), ($y - 6)));