From: Michael Andreen Date: Sat, 16 May 2009 22:57:14 +0000 (+0200) Subject: Converted .setally X-Git-Url: https://ruin.nu/git/?a=commitdiff_plain;h=86a286d12a410321c2784bc2742ce9c755c262ed;p=NDIRC.git Converted .setally --- diff --git a/Commands/Intel.pm b/Commands/Intel.pm index e529018..dd8eb2e 100644 --- a/Commands/Intel.pm +++ b/Commands/Intel.pm @@ -76,4 +76,48 @@ SELECT nick, id, alliance_id FROM planets WHERE id = planetid(?,?,?,tick()) } } +sub setally + : Help(Usage: .setally X:Y:Z ally | % can be used for wildcards \%-crew\% will match [F-Crew]) + : ACL(irc_setally) +{ + my ($self,$c,$msg) = @_; + my ($x,$y,$z,$ally) = $msg =~ /^(\d+)\D(\d+)\D(\d+) (\S+)$/ or die 'ARGS'; + my $dbh = $c->model; + + my $aid; + if ($ally ne 'unknown'){ + ($aid,$ally) = $dbh->selectrow_array(q{ +SELECT id,name FROM alliances WHERE name ILIKE ? + },undef,$ally); + } + if ($aid ~~ 1){ + $c->reply("Don't set ND planets manually."); + }elsif ($ally){ + my $findid = $dbh->prepare(q{ +SELECT id,alliance,alliance_id FROM current_planet_stats WHERE x = ? AND y = ? and z = ? + }); + my ($id,$alliance,$alliance_id) = $dbh->selectrow_array($findid,undef,$x,$y,$z); + unless ($id){ + $c->reply("Couldn't find a planet at $x:$y:$z"); + }elsif ($alliance_id ~~ 1){ + $c->reply("$x:$y:$z is an ND planet."); + }elsif ($alliance_id ~~ $aid){ + $c->reply("$x:$y:$z is already set to $ally"); + }else{ + $dbh->begin_work; + $dbh->do(q{UPDATE planets SET alliance_id = $1 WHERE id = $2} + ,undef,$aid,$id); + if (defined $alliance){ + $c->reply("Changed $x:$y:$z from $alliance to $ally"); + }else{ + $c->reply("Setting $x:$y:$z as $ally"); + } + $c->intel_log($id,"Set alliance_id to: $aid ($ally)"); + $dbh->commit; + } + }else{ + $c->reply("Couldn't find such an alliance"); + } +} + 1; diff --git a/Intel.pm b/Intel.pm index 4d98d80..83dd833 100644 --- a/Intel.pm +++ b/Intel.pm @@ -27,49 +27,7 @@ require Exporter; our @ISA = qw/Exporter/; -our @EXPORT = qw/setAlly setChannel/; - -sub setAlly { - my ($msg, $command) = @_; - my ($x,$y,$z,$ally); - if(defined $msg && $msg =~ /^(\d+)\D(\d+)\D(\d+) (\S+)$/){ - $x = $1; - $y = $2; - $z = $3; - $ally = $4; - }else{ - $ND::server->command("notice $ND::nick Usage: .$command X:Y:Z ally | | % can be used for wildcards \%-crew\% will match [F-Crew]"); - return; - } - if (my $user = intel){ - my $aid; - if ($ally ne 'unknown'){ - ($aid,$ally) = $ND::DBH->selectrow_array("SELECT id,name FROM alliances WHERE name ILIKE ?",undef,$ally); - } - if ($ally){ - my $findid = $ND::DBH->prepare(q{SELECT id,alliance FROM current_planet_stats - WHERE x = ? AND y = ? and z = ?}); - my ($id,$alliance) = $ND::DBH->selectrow_array($findid,undef,$x,$y,$z); - unless ($id){ - $ND::server->command("msg $ND::target Couldn't find a planet at $x:$y:$z"); - return; - } - if($ND::DBH->do('UPDATE planets SET alliance_id = $1 WHERE id = $2' - ,undef,$aid,$id)){ - if (defined $alliance){ - $ND::server->command("msg $ND::target Changed $x:$y:$z from $ND::B$alliance$ND::B to $ND::B$ally"); - }else{ - $ND::server->command("msg $ND::target Setting $x:$y:$z as $ND::B$ally"); - } - intel_log $user->{uid},$id,"Set alliance_id to: $aid ($ally)"; - }else{ - $ND::server->command("msg $ND::target Couldn't set alliance_id to: $aid"); - } - }else{ - $ND::server->command("msg $ND::target Couldn't find such an alliance"); - } - } -} +our @EXPORT = qw/setChannel/; sub setChannel { my ($msg, $command) = @_; diff --git a/database/roles.sql b/database/roles.sql index 5ff09a0..315fe47 100644 --- a/database/roles.sql +++ b/database/roles.sql @@ -26,6 +26,7 @@ INSERT INTO roles VALUES('irc_s'); INSERT INTO roles VALUES('irc_h'); INSERT INTO roles VALUES('irc_sethostile'); INSERT INTO roles VALUES('irc_setnick'); +INSERT INTO roles VALUES('irc_setally'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_nick'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_intel'); @@ -53,6 +54,7 @@ INSERT INTO group_roles (gid,role) VALUES(1,'irc_s'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_h'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_sethostile'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_setnick'); +INSERT INTO group_roles (gid,role) VALUES(1,'irc_setally'); INSERT INTO group_roles (gid,role) VALUES(2,'irc_gs'); INSERT INTO group_roles (gid,role) VALUES(2,'irc_scan'); @@ -82,6 +84,7 @@ INSERT INTO group_roles (gid,role) VALUES(3,'irc_s'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_h'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_sethostile'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_setnick'); +INSERT INTO group_roles (gid,role) VALUES(3,'irc_setally'); INSERT INTO group_roles (gid,role) VALUES(4,'irc_points_others'); INSERT INTO group_roles (gid,role) VALUES(4,'irc_a'); @@ -90,6 +93,7 @@ INSERT INTO group_roles (gid,role) VALUES(5,'irc_p_nick'); INSERT INTO group_roles (gid,role) VALUES(5,'irc_p_intel'); INSERT INTO group_roles (gid,role) VALUES(5,'irc_sethostile'); INSERT INTO group_roles (gid,role) VALUES(5,'irc_setnick'); +INSERT INTO group_roles (gid,role) VALUES(5,'irc_setally'); INSERT INTO group_roles (gid,role) VALUES(6,'irc_p_intel'); INSERT INTO group_roles (gid,role) VALUES(6,'irc_points_others');