L* R*
HOME FORUM DOWNLOADS
Content
  Links
     Browse SVN
     SVN Commit log
     Documentation (Wiki)
  Developers
     Taskmanager
User
Welcome, Guest. Please login or register.
Did you miss your activation email?
December 02, 2008, 03:35:54 PM

Login with username, password and session length
Search



Advanced search
Support GoPHP5.org
BeBot - An Anarchy Online/Age Of Conan chat automaton > Forum > Modules > Official modules > Topic: Totally rewritten teamsmodule
Pages: [1] 2   Go Down
« previous next »
Print
Author Topic: Totally rewritten teamsmodule  (Read 2616 times)
0 Members and 1 Guest are viewing this topic.
Zacix
Rookie
**
Offline Offline

Posts: 72


Totally rewritten teamsmodule
« on: July 11, 2005, 03:32:37 AM »

Personally I've upgraded to PHP5, so I'm not using this version of the teamsmodule...but I think this is a lot better, and easier to change.

NewTeams.php
Code:
<?php
//Written by Zacix for BeBot

require_once("_TeamsClass.php");

$newteams = new NewTeams($bot);
$commands["tell"]["startteam"] = &$newteams;
$commands["tell"]["teams"] = &$newteams;
$commands["tell"]["clearteams"] = &$newteams;
$commands["tell"]["addteam"] = &$newteams;
$commands["tell"]["remteam"] = &$newteams;
$commands["tell"]["delteam"] = &$newteams;
$commands["tell"]["setleader"] = &$newteams;
$commands["tell"]["teamadmin"] = &$newteams;
$commands["tell"]["teamname"] = &$newteams;

$commands["pgmsg"]["startteam"] = &$newteams;
$commands["pgmsg"]["teams"] = &$newteams;
$commands["pgmsg"]["clearteams"] = &$newteams;
$commands["pgmsg"]["addteam"] = &$newteams;
$commands["pgmsg"]["remteam"] = &$newteams;
$commands["pgmsg"]["delteam"] = &$newteams;
$commands["pgmsg"]["setleader"] = &$newteams;
$commands["pgmsg"]["teamadmin"] = &$newteams;
$commands["pgmsg"]["teamname"] = &$newteams;
$commands["pgjoin"][] = &$newteams;
$commands["pgleave"][] = &$newteams;

/*
The Class itself...
*/
class NewTeams {
  var 
$bot;
  var 
$pgroup;
  var 
$numteams;
  var 
$infotext;
  var 
$headertext;
  var 
$teams;
  
/*
  Constructor:
  Hands over a referance to the "Bot" class.
  */
  
function NewTeams (&$bot) {
    
$this -> bot = &$bot;
    
$this -> teams = array();
    
$this -> numteams = 0;
    
$this -> pgroup = array(array());
    
$this -> infotext = "<font color=#66aa66>";
    
$this -> headertext = "<font color=#dd4444>";
    
$this -> highlight = "<font color=#00FFFF>";
  }
  
  function 
SetTeamLeader($name,$num,$executer) {
    
$highlight = $this -> highlight;
    
$infotext = $this->infotext;
 
$headertext = $this->headertext;
 

    if(
preg_match("#^[1-9]#", $num)) {
      if(
$num <= count($this->teams) && $num > 0) {
        
$team =& $this->GetTeam($num);
        
$member =& $team->GetMember($name);
        if(
$member){
          
$team->ClearLeader();
          
$member->SetLeader(true);
          
$this->bot->send_pgroup($infotext . "[" . $highlight . $name ."</font>] is new leader of team " . $highlight . $num . "</font></font>");
        }
        else {
          
$this->bot->send_tell($executer,$infotext . "[" . $highlight . $name ."</font>] is not in team " . $highlight . $num . "</font></font>");
        }
      }
      else {
        
$this->bot->send_tell($executer,$infotext . "Team " . $highlight . $num . "</font> does not exist</font>");
      }
    }
    else {
      
$this->bot->send_tell($executer,$infotext . "Usage: !setleader &lt;number&gt; &lt;name&gt;</font>");
    }
  }
  
  function 
PrintTeams() {
    
$highlight = $this -> highlight;
    
$infotext = $this->infotext;
    
$headertext = $this->headertext;

    foreach(
$this->teams as $index=>$team) {
      if(
$team->GetName() == "") {
        
$msg = $infotext . "Team " . $highlight . bcadd($index,1) . "</font> (" . $highlight . $team->Count() . "</font>) :: ";
      }
      else {
        
$msg = $infotext . "Team " . $highlight . bcadd($index,1) . "</font> :: \"" . $team->GetName() . "\" (" . $highlight . $team->Count() . "</font>) :: ";
      }

      
$members =& $team->GetTeamMembers();
      foreach(
$members as $index=>$teammember) {
        if(
$teammember->IsLeader()) {
          
$msg .= "[" . $headertext . $teammember->GetName() . " :: Leader</font>]";
}
else {
          
$msg .= "[" . $highlight . $teammember->GetName() . "</font>]";
}
      }
      
$msg .= "</font>";
      
$this->bot->send_pgroup($msg);
    }
  }
  
  function 
AddTeam(&$team) {
    
array_push($this->teams,&$team);
  }
  
  function 
ClearTeams($name) {
    
$highlight = $this -> highlight;
    
$infotext = $this->infotext;
    foreach(
$this->teams as $index=>$teams) {
      
$this->DelTeam(1,$name);
    }
    
$this->bot->send_pgroup($infotext . "Teams cleared by [" . $highlight . $name . "</font>]</font>");
  }
  
  function 
DelTeam($num,$executer) {
    if(
preg_match("#^[1-9]#", $num)) {
      if(
$num <= count($this->teams) && $num > 0) {
        
$team =& $this->teams[$num-1];
        foreach(
$team->GetTeamMembers() as $index=>$member) {
          if(isset(
$this->pgroup[$member->GetName()])) {
            
$this->pgroup[$member->GetName()][4] = true;
          }
        }
        unset(
$this->teams[$num-1]);
        
$this->numteams--;
        
$this->teams = array_values($this->teams);
      }
      else {
        
$this->bot->aoc->send_tell($executer,$infotext . "Team " . $highlight . $num . "</font> does not exist</font>");
      }
    }
    else {
      
$this->bot->aoc->send_tell($executer,$infotext . "Usage: !delteam &lt;number&gt;</font>");
    }
  }
  
  function &
GetTeam($num) {
    return 
$this->teams[$num-1];
  }
  
  function 
DelTeamMember($name,$executer,$suppress=true) {
    
$highlight = $this -> highlight;
    
$infotext = $this->infotext;
    
$headertext = $this->headertext;
    
$return = false;

    if(
$this->bot->aoc->get_uid($name)) {
      for(
$i=1;$i<=count($this->teams);$i++) {
        
$team =& $this->GetTeam($i);
        if(
$team->DelMember($name)) {
          if(isset(
$this->pgroup[$name])) {
            
$this->pgroup[$name][4] = true;
          }
          
$return = true;
          if(!
$suppress) {
            
$this->bot->send_pgroup($infotext . "[" . $highlight . $name ."</font>] has been removed from team " . $highlight . $i . "</font></font>");
          }
        }
        else {
          
$return = $return | false;
        }
      }
      return 
$return;
    }
    else {
      
$this->bot->send_tell($executer,$infotext . "Usage: !remteam &lt;name&gt;</font>");
      return 
false;
    }
  }
  
  function 
AddTeamMember($name,$num,$executer) {
    
$highlight = $this -> highlight;
$infotext = $this->infotext;
$headertext = $this->headertext;

if(preg_match("#^[1-9]#", $num)) {
      if(
$num <= count($this->teams) && $num > 0) {
if($name != "") {
      if(isset($this->pgroup[$name])) {
            
$member =& new TeamMember($this->pgroup[$name][0],$this->pgroup[$name][1],$this->pgroup[$name][2],$this->pgroup[$name][3]);
            
$team =& $this->GetTeam($num);
            
$teammembers =& $team->GetTeamMembers();
            
print_r(get_object_vars($teammembers));
            if(
array_search($member,$teammembers)) {
              
$this->bot->send_pgroup($infotext .$highlight . $name . "</font> is already in team " . $highlight . $num . "</font></font>");
              return;
            }
            else {
              
$deleted = $this->DelTeamMember($name,$executer);
            }
            
            
            if(
$team->AddMember($member)) {
              
$this->pgroup[$name][4] = false;
              if(
$deleted) {
                
$this->bot->send_pgroup($infotext . "[" . $highlight . $name . "</font>] changed to team " . $highlight . $num . "</font></font>");
              }
              else {
                
$this->bot->send_pgroup($infotext . "[" . $highlight . $name . "</font>] has been added to team " . $highlight . $num . "</font></font>");
              }
            }
            else {
              
$this->bot->send_pgroup($infotext . "Team " . $highlight . $num . "</font> is full</font>");
            }
  }
  else {
$this->bot->aoc->send_tell($executer,$infotext . "[" . $highlight . $name . "</font>] is not in the group</font>");
  }
  
}
else {
}
      }
  else {
$this->bot->aoc->send_tell($executer,$infotext . "Team " . $highlight . $num . "</font> does not exist</font>");
  }
}
else {
  $this->bot->aoc->send_tell($executer,$infotext . "Usage: !teamadd &lt;number&gt; &lt;name&gt;</font>");
    }
  }
  
  function 
StartTeam($executer,$name,$teamname) {
    
$highlight = $this -> highlight;
    
$infotext = $this->infotext;
    
$headertext = $this->headertext;
    
    if(
$name != "") {
      if(isset(
$this->pgroup[$name])) {
        
$this->DelTeamMember($name,$executer);
        
$member = &new TeamMember($this->pgroup[$name][0],$this->pgroup[$name][1],$this->pgroup[$name][2],$this->pgroup[$name][3],true);
        
$team = &new Team($member,$teamname);
        ++
$this->numteams;
        
$this->pgroup[$name][4] = false;
        
$this->AddTeam($team);
        
$this->bot->send_pgroup($infotext . "Team " . $highlight . $this->numteams . "</font> has been started. Leader is [" . $highlight . $name . "</font>]</font>");
      }
      else {
        
$this->bot->send_pgroup($infotext . "[" . $highlight . $name . "</font>] is not in the group</font>");
      }
    }
  }
  
  function 
SetTeamName($teamname,$num,$executer) {
    if(
preg_match("#^[1-9]#", $num)) {
      if(
$num <= count($this->teams) && $num > 0) {
        
$team =& $this->GetTeam($num);
        
$team->SetName($teamname);
      }
      else {
        
$this->bot->aoc->send_tell($executer,$infotext . "Team " . $highlight . $num . "</font> does not exist</font>");
      }
    }
    else {
      
$this->bot->aoc->send_tell($executer,$infotext . "Usage: !teamname &lt;number&gt; &lt;name&gt;</font>");
    }

  }
  
  function 
GetPlayerInfo($name) {
    
$uid = $this->bot->aoc->get_uid($name);
    
$member = $this->bot->db->select("SELECT nickname,level,profession,guild,updated FROM members WHERE id = " . $uid);
    if(
$member && (bcsub(time(),$member[0][4]) < (60*60*12))) {
      if(
$member[0][3] == "") {
        
$member[0][3] = "Unknown";
      }
      
$member[0][0] = $name;
      
$member[0][4] = true;
      return 
$member[0];
    }
    else if((
$site = $this->bot->get_site("http://www.anarchy-online.com/character/bio/d/" . $this -> bot -> dimension . "/name/" . strtolower($name) . "/bio.xml")) != "") {
      
$member[0] = $name;
      
$member[1] = $this -> bot -> xmlparse($site, "level");
      
$member[2] = $this -> bot -> xmlparse($site, "profession");
      
$member[3] = $this -> bot -> xmlparse($site, "guild");
      
$member[4] = true;
      return 
$member;
    }
    else if(
$member){
      if(
$member[0][3] == "") {
        
$member[0][3] = "Unknown";
      }
      
$member[0][0] = $name;
      
$member[0][4] = true;
      return 
$member[0];
    }
    else {
      
$member[0] = $name;
      
$member[1] = "Unknown";
      
$member[2] = "Unknown";
      
$member[3] = "Unknown";
      
$member[4] = true;
      return 
$member;
    }
  }
  
  function 
pgmsg($name,$msg) {
    
$msg = explode(" ",$msg);
    
    if(
strtolower($msg[0]) == $this->bot->commpre . "startteam") {
      
$this->StartTeam($name,ucfirst(strtolower($msg[1])),implode(" ",array_slice($msg,2)));
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "teams") {
      
$this->PrintTeams();
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "addteam") {
      
$this->AddTeamMember(ucfirst(strtolower($msg[2])),$msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "remteam") {
      
$this->DelTeamMember(ucfirst(strtolower($msg[1])),$name,false);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "delteam") {
      
$this->DelTeam($msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "setleader") {
      
$this->SetTeamLeader(ucfirst(strtolower($msg[2])),$msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "teamname") {
      
$this->SetTeamName(implode(" ",array_slice($msg,2)),$msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "clearteams") {
      
$this->ClearTeams($name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "teamadmin") {
      
$this->GetAdminConsole($name);
    }
  }
  
  function 
tell($name,$msg) {
    
$msg = explode(" ",$msg);

    if(
strtolower($msg[0]) == $this->bot->commpre . "startteam") {
      
$this->StartTeam($name,ucfirst(strtolower($msg[1])),implode(" ",array_slice($msg,2)));
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "teams") {
      
$this->PrintTeams();
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "addteam") {
      
$this->AddTeamMember(ucfirst(strtolower($msg[2])),$msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "remteam") {
      
$this->DelTeamMember(ucfirst(strtolower($msg[1])),$name,false);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "delteam") {
      
$this->DelTeam($msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "setleader") {
      
$this->SetTeamLeader(ucfirst(strtolower($msg[2])),$msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "teamname") {
      
$this->SetTeamName(implode(" ",array_slice($msg,2)),$msg[1],$name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "clearteams") {
      
$this->ClearTeams($name);
    }
    else if(
strtolower($msg[0]) == $this->bot->commpre . "teamadmin") {
      
$this->GetAdminConsole($name);
    }
  }
  
  function 
pgjoin($name) {
    
$this->pgroup[$name] = $this->GetPlayerInfo($name);
  }
  
  function 
pgleave($name) {
    unset(
$this->pgroup[$name]);
  }
  
  function 
GetAdminConsole($name) {
    
$highlight = $this -> highlight;
    
$infotext = $this->infotext;
    
$headertext = $this->headertext;
    
    
$msg  = $infotext . $headertext . ":::: Teams Administration ::::</font>\n\n";
    
$msg .= $highlight . "Commands:</font>\n";
$msg