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
<?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 <number> <name></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 <number></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 <name></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 <number> <name></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 <number> <name></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 .= <