X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=PA.pm;h=c55d2cf6b28b4a5ac5923d8f2518437cd5aa172d;hb=ffb56e4adfef8bd434b2baeb4e94d4635722c931;hp=63a41d2efd5dcd0bf6bfa4f541f90219c441f0d9;hpb=ec80f6c0dba1fd56a63d591e89f6368d468912f7;p=NDIRC.git diff --git a/PA.pm b/PA.pm index 63a41d2..c55d2cf 100644 --- a/PA.pm +++ b/PA.pm @@ -33,16 +33,16 @@ our @EXPORT = qw/checkPlanet checkGal shipEff shipStop parseValue prettyValue ca sub checkPlanet { my ($msg) = @_; - DB(); my ($x,$y,$z,$nick); if ($msg =~ /(\d+)\D+(\d+)\D+(\d+)/){ $x = $1; $y = $2; $z = $3; - }elsif (officer()){ + }elsif (officer() && defined $msg){ $nick = $msg; }else{ - $ND::server->command("notice $ND::target usage .p X:Y:Z".(officer() ? ' or .p nick' : '')); + $ND::server->command("notice $ND::nick usage .p X:Y:Z".(officer() ? ' or .p nick' : '')); + return; } my $f = $ND::DBH->prepare(q{SELECT coords(x,y,z),ruler,planet,race,score,size,value,scorerank,sizerank, valuerank, xp, xprank, alliance, relationship, nick, planet_status, hit_us, channel @@ -57,28 +57,46 @@ sub checkPlanet { if (officer() || dc()){ $ally = "Alliance=$planet->{alliance} ($planet->{relationship}), Nick=$planet->{nick} ($planet->{planet_status}), Channel: $planet->{channel}, Hostile Count: $planet->{hit_us},"; } - $ND::server->command("notice $ND::target $planet->{coords} $planet->{ruler} OF $planet->{planet},$ally Race=$planet->{race}, Score=$planet->{score} ($planet->{scorerank}), Size=$planet->{size} ($planet->{sizerank}), Value=$planet->{value} ($planet->{valuerank}), XP=$planet->{xp} ($planet->{xprank})"); + $ND::server->command("notice $ND::nick $planet->{coords} $planet->{ruler} OF $planet->{planet},$ally Race=$planet->{race}, Score=$planet->{score} ($planet->{scorerank}), Size=$planet->{size} ($planet->{sizerank}), Value=$planet->{value} ($planet->{valuerank}), XP=$planet->{xp} ($planet->{xprank})"); }else{ - $ND::server->command("notice $ND::target Couldn't find planet: $msg"); + $ND::server->command("notice $ND::nick Couldn't find planet: $msg"); } } sub checkGal { - my ($x,$y) = @_; - DB(); - my $f = $ND::DBH->prepare("SELECT name,score,size,value FROM galaxies WHERE x = ? AND y = ? and tick = (SELECT max(tick) from galaxies)"); + my ($msg) = @_; + + my ($x,$y,); + if ($msg =~ /(\d+)\D+(\d+)/){ + $x = $1; + $y = $2; + }else{ + $ND::server->command("notice $ND::nick syntax: .g X:Y"); + } + my $f = $ND::DBH->prepare("SELECT score,size,value FROM galaxies WHERE x = ? AND y = ? and tick = (SELECT max(tick) from galaxies)"); $f->execute($x,$y); while (my @row = $f->fetchrow()){ @row = map (valuecolor(1),@row); - $ND::server->command("notice $ND::target $x:$y $row[0], Score=$row[1], Size=$row[2], Value=$row[3]"); + $ND::server->command("notice $ND::nick $x:$y Score=$row[0], Size=$row[1], Value=$row[2]"); } } sub shipEff { - my ($amount,$ship,$value) = @_; - $ship = "\%$ship\%"; - $amount = parseValue($amount); - $value = parseValue($value); - $value *= -1.5 if defined $value and $value < 0; + my ($msg,$value) = @_; + my ($amount,$ship); + if($msg =~ /^(-?\d+(?:\.\d+)?[hkMG]?) (\w+)$/){ + if (defined $value){ + $value = parseValue($1); + $value *= -1.5 if $value < 0; + my $feud = ''; + }else{ + $amount = parseValue($1); + } + $ship = "\%$2\%"; + }else{ + my $command = (defined $value ? "veff" : "eff"); + $ND::server->command("notice $ND::nick syntax: .$command amount ship"); + return; + } my $feud = ''; my @ship = $ND::DBH->selectrow_array(q{ @@ -90,8 +108,10 @@ FROM ship_stats WHERE name ILIKE ? $type = "stun" if $ship[2] eq 'Emp'; $type = "steal" if ($ship[2] eq 'Steal') or ($ship[2] eq 'Pod'); - $amount = int(($value*100/$ship[4])) if $amount eq 'value'; - $feud = '(FEUD: '.prettyValue(int($amount/0.80)).') ' if defined $value; + if (defined $value){ + $amount = int(($value*100/$ship[4])); + $feud = '(FEUD: '.prettyValue(int($amount/0.80)).') '; + } $value = prettyValue(($amount*$ship[4]/100)); my $text = prettyValue($amount)." $feud $ship[0] ($ship[5]:$value) will $type:"; my $st = $ND::DBH->prepare(q{ @@ -113,17 +133,28 @@ FROM ship_stats WHERE name ILIKE ? $text .= " $ND::B$dead$ND::B $target[0] ($target[5]:$value),"; } chop $text; - $ND::server->command("notice $ND::target $text"); + $ND::server->command("notice $ND::nick $text"); } #print $text; } sub shipStop { - my ($amount,$ship,$value) = @_; - $ship = "\%$ship\%"; - $amount = parseValue($amount); - $value = parseValue($value); - $value *= -1.5 if defined $value and $value < 0; + my ($msg,$value) = @_; + my ($amount,$ship); + if($msg =~ /^(-?\d+(?:\.\d+)?[hkMG]?) (\w+)$/){ + if (defined $value){ + $value = parseValue($1); + $value *= -1.5 if $value < 0; + my $feud = ''; + }else{ + $amount = parseValue($1); + } + $ship = "\%$2\%"; + }else{ + my $command = (defined $value ? "vstop" : "stop"); + $ND::server->command("notice $ND::nick syntax: .$command amount ship"); + return; + } my $feud = ''; my @ship = $ND::DBH->selectrow_array(q{ @@ -135,8 +166,10 @@ FROM ship_stats WHERE name ILIKE ? $ship[0] = "${ND::C}12$ship[0]$ND::C" if $ship[2] eq 'Emp'; $ship[0] = "${ND::C}13$ship[0]$ND::C" if $ship[2] eq 'Steal'; - $amount = int(($value*100/$ship[4])) if $amount eq 'value'; - $feud = '(FEUD: '.int($amount/0.80).') ' if defined $value; + if (defined $value){ + $amount = int(($value*100/$ship[4])); + $feud = '(FEUD: '.prettyValue(int($amount/0.80)).') '; + } $value = prettyValue(($amount*$ship[4]/100)); my $text = "To stop $amount $feud $ship[0] ($ship[5]:$value) you need:"; my $st = $ND::DBH->prepare(q{ @@ -158,7 +191,7 @@ FROM ship_stats WHERE name ILIKE ? $text .= " $ND::B$needed$ND::B $stopper[0] ($stopper[5]:$value),"; } chop $text; - $ND::server->command("notice $ND::target $text"); + $ND::server->command("notice $ND::nick $text"); } #print $text; }