]> ruin.nu Git - NDIRC.git/blob - Intel.pm
Converted the .setnick command
[NDIRC.git] / Intel.pm
1 #**************************************************************************
2 #   Copyright (C) 2006 by Michael Andreen <harvATruinDOTnu>               *
3 #                                                                         *
4 #   This program is free software; you can redistribute it and/or modify  *
5 #   it under the terms of the GNU General Public License as published by  *
6 #   the Free Software Foundation; either version 2 of the License, or     *
7 #   (at your option) any later version.                                   *
8 #                                                                         *
9 #   This program is distributed in the hope that it will be useful,       *
10 #   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12 #   GNU General Public License for more details.                          *
13 #                                                                         *
14 #   You should have received a copy of the GNU General Public License     *
15 #   along with this program; if not, write to the                         *
16 #   Free Software Foundation, Inc.,                                       *
17 #   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
18 #**************************************************************************/
19 package NDIRC::Intel;
20 use strict;
21 use warnings;
22 use ND::DB;
23 use NDIRC::Access;
24 use NDIRC::Misc;
25 use ND::Include;
26 require Exporter;
27
28 our @ISA = qw/Exporter/;
29
30 our @EXPORT = qw/setAlly setChannel/;
31
32 sub setAlly {
33         my ($msg, $command) = @_;
34         my ($x,$y,$z,$ally);
35         if(defined $msg && $msg =~ /^(\d+)\D(\d+)\D(\d+) (\S+)$/){
36                 $x = $1;
37                 $y = $2;
38                 $z = $3;
39                 $ally = $4;
40         }else{
41                 $ND::server->command("notice $ND::nick Usage: .$command X:Y:Z ally | | % can be used for wildcards \%-crew\% will match [F-Crew]");
42                 return;
43         }
44         if (my $user = intel){
45                 my $aid;
46                 if ($ally ne 'unknown'){
47                         ($aid,$ally) = $ND::DBH->selectrow_array("SELECT id,name FROM alliances WHERE name ILIKE ?",undef,$ally);
48                 }
49                 if ($ally){
50                         my $findid = $ND::DBH->prepare(q{SELECT id,alliance FROM current_planet_stats 
51                                 WHERE x = ? AND y = ? and z = ?});
52                         my ($id,$alliance) = $ND::DBH->selectrow_array($findid,undef,$x,$y,$z);
53                         unless ($id){
54                                 $ND::server->command("msg $ND::target Couldn't find a planet at $x:$y:$z");
55                                 return;
56                         }
57                         if($ND::DBH->do('UPDATE planets SET alliance_id = $1 WHERE id = $2'
58                                 ,undef,$aid,$id)){
59                                 if (defined $alliance){
60                                         $ND::server->command("msg $ND::target Changed $x:$y:$z from $ND::B$alliance$ND::B to $ND::B$ally");
61                                 }else{
62                                         $ND::server->command("msg $ND::target Setting $x:$y:$z as $ND::B$ally");
63                                 }
64                                 intel_log $user->{uid},$id,"Set alliance_id to: $aid ($ally)";
65                         }else{
66                                 $ND::server->command("msg $ND::target Couldn't set alliance_id to: $aid");
67                         }
68                 }else{
69                         $ND::server->command("msg $ND::target Couldn't find such an alliance");
70                 }
71         }
72 }
73
74 sub setChannel {
75         my ($msg, $command) = @_;
76         my ($x,$y,$z,$channel);
77         if(defined $msg && $msg =~ /^(\d+)\D(\d+)\D(\d+) (\S+)$/){
78                 $x = $1;
79                 $y = $2;
80                 $z = $3;
81                 $channel = $4;
82         }else{
83                 $ND::server->command("notice $ND::nick Usage: .$command X:Y:Z channel");
84                 return;
85         }
86         if (my $user = intel){
87                 my $findid = $ND::DBH->prepare_cached(q{SELECT id,channel FROM current_planet_stats 
88                                 WHERE x = ? AND y = ? and z = ?});
89                 my ($id,$c) = $ND::DBH->selectrow_array($findid,undef,$x,$y,$z);
90                 if ($ND::DBH->do('UPDATE planets SET channel = $1 WHERE id = $2'
91                                 ,undef,$channel,$id)){
92
93                         if (defined $c){
94                                 $ND::server->command("msg $ND::target Changed $x:$y:$z from $ND::B$c$ND::B to $ND::B$channel");
95                         }else{
96                                 $ND::server->command("msg $ND::target Setting $x:$y:$z as $ND::B$channel");
97                         }
98                         intel_log $user->{uid},$id,"Set channel to: $channel";
99                 }else{
100                         $ND::server->command("msg $ND::target Couldn't find a planet at $x:$y:$z");
101                 }
102         }
103 }
104
105 1;