Okey, har hatt det litt travelt om dagene og er også litt distré med å huske på å poste. Laget det ferdig på mandag eller tirsdag. Valgte å skrive scriptet på en litt utradisjonell måte slik at jeg også kan vise dere andre at det er ikke så nøye hvilket språk man faktisk skriver scriptet i. Man trenger kun grunnleggende tcl-ferdigheter. ALtså, her tar tcl-scriptet i mot argumentene som trengs, og deretter sendes de videre til selve php-scriptet. Enkelt og genialt!
Uansett, here goes. Gå til scripts i eggdrop-katalogen og lag filen phonebook.tcl
Kode
bind pub * !tlf pub_getnumber
bind pub * !add pub_addnumber
proc pub_getnumber {nick host handle chan text} {
putlog "Asking for number to $text"
set getnum [exec php scripts/phonebook.php get $text]
putserv "privmsg $nick :$getnum"
}
proc pub_addnumber {nick host handle chan text} {
set number [lindex $text 0]
putlog "Adding $number to $nick"
set addnum [exec php scripts/phonebook.php add $nick $number]
putserv "privmsg $nick :$addnum"
}
Deretter lager du fila phonebook.php i samme katalog.
Kode
<?php
class cPhoneBook
{
var $Content = '';
var $Handle = null;
var $PhoneBook = 'Katalogen.txt';
function cPhoneBook( ) // Constructor
{
if( null == ($this->Handle=@fopen($this->PhoneBook, 'a+')) )
die( 'Constructor Error' );
}
function Destroy() // Destructor
{
if( null != $this->Handle )
fclose( $this->Handle );
settype( &$this, 'null' );
}
function AddNumber( $Name, $Number )
{
if( null != $this->Handle )
{
$this->Content = @fread( $this->Handle, filesize($this->PhoneBook) );
if( 0 != eregi('Name:' . $Name, $this->Content) )
echo $Name . ' is already added';
else
{
echo 'Adding phone number ' . $Number . ' to ' . $Name;
if( null == (@fwrite($this->Handle, 'Name:' . $Name . ' Number:' . $Number . "\n")) )
die( 'File writing error' );
}
}
}
function GetNumber( $Name )
{
if( null != ($this->Content=@fread($this->Handle,filesize($this->PhoneBook))) )
{
if( 0 != eregi('Name:' . $Name . ' Number:([0-9]+)', $this->Content, $Num) )
echo 'Number for ' . $Name . ' is: ' . $Num[1];
else
echo $Name . ' was not found';
}
else
echo 'File is empty';
}
}
$PhoneBook = new cPhoneBook();
$Action = $argv[1];
if( !strcmp($Action, 'get') )
{
$GetNumber = $argv[2];
$PhoneBook->GetNumber( $GetNumber );
}
if( !strcmp($Action, 'add') )
{
$Name = $argv[2];
$Number = $argv[3];
$PhoneBook->AddNumber( $Name, $Number );
}
$PhoneBook->Destroy();
?>
Så til slutt går du i eggdrop-configen og laster inn scriptet.
Kode
source scripts/eggdrop.tcl
Restart eggdropen eller ta en .rehash så den laster inn scriptet.
Så, for å legge tli en i telefonkatalogen så skriver man kun !add <nummer>, og for å søke på oppslag skriver man bare !tlf <nick>. Slik det er nå så legger den nummeret automatisk til et nick. Men dersom du ønsker å ha slik at man skal kunne lage et eget navn til nummeret kan jeg skrive en liten fix til det. Have fun.
Sist endret av m0b; 20. august 2005 kl. 21:25.