X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Commands%2FIntel.pm;h=9643333461973995da6bb958cc78b31d1978bfc9;hb=cd394b6907c15c9a6a9161022a9e58f403f9618a;hp=5e79c96a6c859db3ab2df9a16470968a60a99b76;hpb=f6172920f8ba7bfd9a15260edcf01322bf09472b;p=NDIRC.git diff --git a/Commands/Intel.pm b/Commands/Intel.pm index 5e79c96..9643333 100644 --- a/Commands/Intel.pm +++ b/Commands/Intel.pm @@ -46,4 +46,107 @@ sub sethostile $dbh->commit; } +sub setnick + : Help(Usage: .setnick X:Y:Z nick) + : ACL(irc_setnick) +{ + my ($self,$c,$msg) = @_; + my ($x,$y,$z,$nick) = $msg =~ /^(\d+)\D(\d+)\D(\d+) (\S+)$/ or die 'ARGS'; + my $dbh = $c->model; + + my $findid = $dbh->prepare(q{ +SELECT nick, id, alliance_id FROM planets WHERE id = planetid(?,?,?,tick()) + }); + my $planet = $dbh->selectrow_hashref($findid,undef,$x,$y,$z); + unless($planet->{id}){ + $c->reply("Couldn't find any planet with coords $x:$y:$z"); + }elsif($planet->{alliance_id} ~~ 1){ + $c->reply("This is an ND planet."); + }else{ + $dbh->begin_work; + $dbh->do(q{UPDATE planets SET nick = $1 WHERE id = $2} + ,undef,$nick,$planet->{id}); + if ($planet->{nick}){ + $c->reply("$x:$y:$z nick has been changed from $planet->{nick} to $nick"); + }else{ + $c->reply("$x:$y:$z nick has been set to $nick"); + } + $c->intel_log($planet->{id},"Set nick to: $nick"); + $dbh->commit; + } +} + +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"); + } +} + +sub setchannel + : Help(Usage: .setchannel X:Y:Z channel | Set channel or bot for a planet) + : ACL(irc_setchannel) +{ + my ($self,$c,$msg) = @_; + my ($x,$y,$z,$channel) = $msg =~ /^(\d+)\D(\d+)\D(\d+) (\S+)$/ or die 'ARGS'; + my $dbh = $c->model; + + my $findid = $dbh->prepare_cached(q{SELECT id,channel FROM current_planet_stats + WHERE x = ? AND y = ? and z = ?}); + my ($id,$oc) = $dbh->selectrow_array($findid,undef,$x,$y,$z); + if ($channel ~~ $oc){ + $c->reply("$x:$y:$z already got $oc as channel"); + }elsif($id){ + $dbh->begin_work; + $dbh->do(q{UPDATE planets SET channel = $1 WHERE id = $2} + ,undef,$channel,$id); + $c->intel_log($id,"Set channel to: $channel"); + $dbh->commit; + if ($oc){ + $c->reply("Changed $x:$y:$z from $oc to $channel"); + }else{ + $c->reply("Setting $x:$y:$z as $channel"); + } + }else{ + $c->reply("Couldn't find a planet at $x:$y:$z"); + } +} + 1;