Jump to content

Php error help


Buvian

Recommended Posts

First of let me start by saying I have not a clue about PHP and coding in general. I'm running a PHP/MySQL Chat bot for a game I play and I have a module that I'm having issues with. The script is for recruiting people. This is the error it keeps throwing. Fatal error: Can't use method return value in write context in /home/guild/service48/modules/aoc/Ginfo.php on line 19

 

This is the PHP code. Any help would be greatly appreciated and I'm sorry if I posting in wrong section. I would ask the developers, but they do not monitor the project often.

<?php
/*
* GuildInfo
* This module helps people with guild recruitment.
*
*
*/
$GuildInfo = new GuildInfo($bot);

class GuildInfo extends BaseActiveModule
{

   function __construct(&$bot)
   {
      parent::__construct(&$bot, get_class($this));
      
      $this -> register_command(&#39;all&#39;, &#39;ginfo&#39;, "ANONYMOUS");

      $this -> bot -> core("colors") -> define_scheme("GI", "highlight", "yellow");
      $this -> bot -> core("colors") -> define_scheme("GI", "normal", "white");
      $this -> bot -> core("colors") -> define_scheme("GI", "info", "lightgreen");
      $this -> bot -> core("colors") -> define_scheme("GI", "red", "red");
      $this -> bot -> core("colors") -> define_scheme("GI", "Silver", "Silver");

      $this -> help[&#39;description&#39;] = &#39;Helps with guild recruitment.&#39;;
      $this -> help[&#39;command&#39;][&#39;ginfo&#39;]="Displays guild&#39;s info tab.";
      $this -> help[&#39;command&#39;][&#39;ginfo members&#39;]="Displays a list of members in the guild.";
      $this -> help[&#39;command&#39;][&#39;ginfo classes&#39;]="Displays a list of classes in the guild.";
      $this -> help[&#39;command&#39;][&#39;grecruit&#39;]="Displays a recruitment link in OOC (usable only with priveleges).";
   }

   function command_handler($name, $msg, $origin)
   {
      if (preg_match(&#39;/^ginfo/i&#39;, $msg, $info)) {
         $words = trim(substr($msg, strlen(&#39;ginfo&#39;)));
         if ($words == "members")
         {
            return $this -> memberslist();
         } else if($words == "classes") {
            return $this -> memberscount();
         } else {
            return $this -> info();
         }
      } else if(preg_match(&#39;/^grecruit/i&#39;, $msg, $info)) {
         //return "Command under development";
         $msg = $this -> recruit();
         $channel = $this -> bot -> core("chat") -> lookup_group("Playfield");
         return "Currently under development: ".$channel;
      } else {
         $this -> bot -> send_help($name);
      }
   }
   
   /*
   Guilds Info
   */
   function info()
   {
      $txt.= "##GI_red##GUILD NAME HERE##end##\n\n";
  $txt.= "##end##\n";      
      
      $txt.= "##highlight##Leader:##end##\n\n";
 $online = $this -> officercheck("GUILD LEADER NAME");
 $online_state = $online[0];
      $txt.= "##GI_highlight##".$online_state[&#39;content&#39;] . $online[1];
  $txt.= "##end##\n";
  $txt.= "##end##\n";      
      $txt.= "##highlight##Officers:##end##\n";
 $online = $this -> officercheck("OFFICER 1");
 $online_state = $online[0];
      $txt.= "##GI_highlight##".$online_state[&#39;content&#39;] . $online[1];
  $txt.= "##end##\n";
     $online = $this -> officercheck("OFFICER 2");
 $online_state = $online[0];
      $txt.= "##GI_highlight##".$online_state[&#39;content&#39;] . $online[1];
  $txt.= "##end##\n";
 $online = $this -> officercheck("OFFICER 3");
 $online_state = $online[0];
      $txt.= "##GI_highlight##".$online_state[&#39;content&#39;] . $online[1];
  $txt.= "##end##\n";
 $online = $this -> officercheck("OFFICER 4");
 $online_state = $online[0];
      $txt.= "##GI_highlight##".$online_state[&#39;content&#39;] . $online[1];
  $txt.= "##end##\n";
 $online = $this -> officercheck("OFFICER 5");
 $online_state = $online[0];
      $txt.= "##GI_highlight##".$online_state[&#39;content&#39;] . $online[1];
  $txt.= "##end##\n";  
 $online = $this -> officercheck("OFFICER 6");
 $online_state = $online[0];
      $txt.= "##GI_highlight##".$online_state[&#39;content&#39;] . $online[1];
  $txt.= "##end##\n";  
  $txt.= "##end##\n"; 
      $txt.= "##GI_red##Website:##end## ##GI_info## WWW. YOUR WEBSITE HERE .COM##end##\n\n";
      $txt.= "##GI_red##City:##end## ##Silver##WHAT YOUVE BUILT##end##\n\n";
      $txt.= "##GI_red##Raids:##end## ##Silver##WHAT YOUVE KILLED##end##\n\n";
      $txt.= "##GI_red##Recruitment:##end## ##Silver##SPECIAL REQUIREMENTS??.##end##\n\n";
  $txt.= "##end##\n";
      $txt.= "##highlight##Assassin:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Barbarian:##end## ##Red## [Closed]##end##\n";
      $txt.= "##highlight##Bear Shaman:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Conqueror:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Dark Templer:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Demonologist:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Guardian:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Herald of Xotli:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Necromancer:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Priest of Mitra:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Ranger:##end## ##Red##[Closed]##end##\n";
      $txt.= "##highlight##Tempest of Set:##end## ##Red##[Closed]##end##\n\n";
  $txt.= "##end##\n";
      
      $txt.= "##GI_red##Guild Info:##end##\n";
      $txt.= "##Silver##";
      $txt.= "GUILD INFO SECTION 1\n\n";
  $txt.= "##end##\n";
  $txt.= "##Silver##";
      $txt.= "GUILD INFO SECTION 2\n\n";
  $txt.= "##end##\n";
  $txt.= "##Silver##";
      $txt.= "GUILD INFO SECTION 3\n\n";
      $txt.= "##end##";
      
      
      return $this -> bot -> core("tools") -> make_blob("WHAT YOU WANT THE BOT TO TELL THE PLAYER", $txt);
   }
   /*
   Still working on this, for now just some random debugging stuff I was trying
   */
   function recruit()
   {   
      $blob = "Guild Name is Recruiting!: &#39;";
      $blob.= $this -> info();
      $blob.= " Playfield ID: ";
      return $blob;
      
   }

 /*
 Checks online list for presence of officer of $name
 Returns online status, and if online, name of current main/alt
 */
 function officercheck($name)
 {
  $online = $this -> bot -> db -> select("SELECT t1.nickname FROM "
  . "#___online AS t1 LEFT JOIN #___whois AS t2 ON t1.nickname = t2.nickname WHERE status_gc=1");

  $found = FALSE;
  if (!empty($online))
  {
   foreach ($online as $player)
   {
    if(isset($this -> listed[$channel][$player[0]]))
     Continue; 
    
    $main = $this -> bot -> core("alts") -> main($player[0]);

    if ($name == $main)
    {
     $online_state = $this -> bot -> core("online") -> get_online_state($this -> bot -> core("chat") -> get_uname($player[0]));
     $retstr = " - " . $this -> bot -> core("chat") -> get_uname($player[0]);
     $found = TRUE;
     break;
    }
    else if ($name == $this -> bot -> core("chat") -> get_uname($player[0]))
    {
     $online_state = $this -> bot -> core("online") -> get_online_state($main);
     $retstr = " - " . $main;
     $found = TRUE;
     break;
    }
   }
   if ($found == FALSE)
   {
    $online_state = $this -> bot -> core("online") -> get_online_state($name);
    $retstr = " - " . $name;
   }
  }
  return array($online_state, $retstr);
 }
   
   /*
   Need to revize so it just uses core
   */
   function memberslist()
   {
      $blob = "";
      $count = 0;
      $result = $this -> bot -> db -> select("SELECT nickname, last_seen FROM #___users WHERE user_level = " . MEMBER . " ORDER BY nickname ASC");
      if (!empty($result))
      {
         $inside = "##blob_title##:::: <botname>&#39;s Member List ::::##end##\n\n";
         foreach ($result as $val)
         {
            $count++;
            $inside .= "##blob_text##&#38;#8226; " . $val[0];
            if ($val[1] > 0)
            {
               $inside .= ", last seen at " . gmdate($this -> bot -> core("settings") -> get("Time", "FormatString"), $val[1]);
            }
            else
            {
               $inside .= ", never seen online";
            }
            $inside .= "##end## ".$this -> bot -> core("tools") -> chatcmd("whois " . $val[0], "[Whois]")."\n";
         }
         $blob = " :: " . $this -> bot -> core("tools") -> make_blob("click to view", $inside);
      }
      return $count . " Guild Members:" . $blob;
   }
   
   /*
   Need to revize so it just uses core
   */
   function memberscount()
   {
      $blob = "";
      $total = 0;
      
      $buddies = count($this -> bot -> aoc -> buddies);
      //Get a list of professions
      $profession_list = "&#39;".$this->bot->core(&#39;professions&#39;)->get_professions("&#39;, &#39;")."&#39;";
      $counts = $this -> bot -> db -> select("SELECT t2.class, COUNT(DISTINCT t1.nickname)
            FROM #___users AS t1 LEFT JOIN #___whois AS t2 ON t1.nickname = t2.nickname
             WHERE user_level = " . MEMBER . " AND t2.class IN ($profession_list) GROUP BY class");
            
      foreach ($this -> bot->core(&#39;professions&#39;)->get_profession_array() as $prof)
         $count[$prof] = 0;
      if (!(empty($counts)))
      {
         foreach ($counts as $profcount)
         {
            $count[$profcount[0]] += $profcount[1];
            $total += $profcount[1];
         }
      }
      
      $inside = "##blob_title##:::: <botname>&#39;s Member Count ::::##end##\n";
      $inside .= "\n##blob_text##Buddy List Count: ##blob_title##".$buddies."##end##\n";
      foreach ($count as $key => $value)
         $inside .= "\n&#38;#8226; ".$key." = ##blob_title##".$value."##end##";
      $blob = " :: " . $this -> bot -> core("tools") -> make_blob("click to view", $inside);

      return $total . " Guild Classes:" . $blob;
   }
}
?>
Link to comment
https://forums.phpfreaks.com/topic/283973-php-error-help/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.