PDA

Orijinalini görmek için tıklayınız : Online Kullanici ve Kullanici Rekoru


airforce
08-05-2008, 15:00
cd ircservices-5.0.xx
pico channels.h

dosyası içerisinde

time_t topic_time; /* When topic was set */

satırının hemen altına

int anuser;
int maxuser;
time_t maxuser_time;

ekleyip kayıt edin ..

pico channels.c

dosyası içerisinde

/* Allocate pre-cleared memory */
c = scalloc(sizeof(Channel), 1);

satırının hemen altına

c->anuser = 0;

şeklinde ekleyip ve aynı dosya içerisinde

void chan_deluser(User *user, Channel *c)
{
struct c_userlist *u;
int i;
LIST_SEARCH_SCALAR(c->users, user, user, u);
if (!u) {
log("channel: BUG: chan_deluser() called for %s in %s but they "
"were not found on the channel's userlist.",
user->nick, c->name);
return;
}

satırının hemen altına

(c->anuser)--;

şeklinde ekleyip kayıt edin ...

cd modules\chanserv
pico chanserv.h

dosyası içerisinde


char *last_topic; /* Last topic on the channel */

satırının hemen üzerine


int anuser;
int maxuser;
time_t maxuser_time;

şeklinde ekleyip kayıt edin ...

pico main.c

dosyası içerisinde

static int chanserv_whois(const char *source, char *who, char *extra)
{
if (irc_stricmp(who, s_ChanServ) != 0)
return 0;
send_cmd(ServerName, "311 %s %s %s %s * :%s", source, who,
ServiceUser, ServiceHost, desc_ChanServ);
send_cmd(ServerName, "312 %s %s %s :%s", source, who,
ServerName, ServerDesc);
send_cmd(ServerName, "318 End of /WHOIS response.");
return 1;
}

satırının hemen altına

void ago_time(char *buf, time_t t, User *u)
{
int days, hours, minutes, seconds;
days = t/(24*3600);
t %= 24*3600;
hours = t/3600;
t %= 3600;
minutes = t/60;
t %= 60;
seconds = t;
sprintf(buf,"%d gün, %d saat, %d dakika ve %d saniye önce", days, hours, minutes, seconds);
}

şeklinde ekleyin ve aynı dosya içerisinde

static int do_channel_create(Channel *c, User *u, int32 modes)
{
/* Store ChannelInfo pointer in channel record */
c->ci = get_channelinfo(c->name);
if (c->ci) {
/* Store return pointer in ChannelInfo record */
c->ci->c = c;
}
/* Restore locked modes and saved topic */
/* Note: these should be outside the c->ci test to ensure any spurious
* +r modes are cleared */
check_modes©;
restore_topic©;
return 0;
}

satırını

static int do_channel_create(Channel *c, User *u, int32 modes)
{
/* Store ChannelInfo pointer in channel record */
c->ci = get_channelinfo(c->name);
if (c->ci) {
/* Store return pointer in ChannelInfo record */
c->ci->c = c;
c->maxuser = c->ci->maxuser;
c->maxuser_time = c->ci->maxuser_time;
} else
{
c->maxuser = 1;
c->maxuser_time = time(NULL);
}
/* Restore locked modes and saved topic */
/* Note: these should be outside the c->ci test to ensure any spurious
* +r modes are cleared */
check_modes©;
restore_topic©;
return 0;
}

şeklinde değiştirin ve aynı dosya içerisinde


if (ci && ci->entry_message)
notice(s_ChanServ, user->nick, "(%s) %s", ci->name, ci->entry_message);

satırının üzerine



if (c->maxuser < ++(c->anuser)) {
c->maxuser = c->anuser;
c->maxuser_time = time(NULL);
if(ci) {
ci->maxuser = c->maxuser;
ci->maxuser_time = c->maxuser_time;
}
}

şeklinde ekleyin ve aynı dosya içerisinde


if (c->topic) {
ci->last_topic = sstrdup(c->topic);
strscpy(ci->last_topic_setter, c->topic_setter, NICKMAX);
ci->last_topic_time = c->topic_time;
}

satırının hemen altına


c->maxuser = c->anuser;
c->maxuser_time = time(NULL);
ci->maxuser = c->maxuser;
ci->maxuser_time = c->maxuser_time;

şeklinde ekleyin ve aynı dosya içerisinde

static void do_info(User *u)
{
char *chan = strtok(NULL, " ");
char *param = strtok(NULL, " ");
ChannelInfo *ci;
NickGroupInfo *ngi, *ngi2 = NULL;
char buf[BUFSIZE], *end, *s;

satırının altına

char buf2[BUFSIZE];
time_t now=time(NULL);

şeklinde ekleyin ve aynı dosya içerisinde


if (ci->entry_message && CHECK_SHOW_ALL)
notice_lang(s_ChanServ, u, CHAN_INFO_ENTRYMSG, ci->entry_message);

satırının hemen üzerine

if (ci->c)
send_cmd(s_ChanServ, "NOTICE %s :Online kullanıcı : \2%d\2", u->nick, ci->c->anuser);
ago_time(buf2, now-ci->maxuser_time, u);
send_cmd(s_ChanServ, "NOTICE %s :Kullanıcı rekoru : \2%d\2 [%s]", u->nick, ci->maxuser, buf2);

şeklinde kaydedin...

cd ..
cd database
pico version4.c

dosyası içerisinde


SAFE(write_int32(ci->last_topic_time, f));

satırının hemen altına

SAFE(write_int16(ci->maxuser, f));
SAFE(write_int32(ci->maxuser_time, f));

şeklinde ekleyip kaydedin ve sonra ircservices-5.0.xx
ana klasör içerisinde

make
make install

yaparak servisinizi restartlayın.sunucunuza girerek kayıtlı bir
kanalınıza info cekin..
daha sonra tekrar

cd ircservices-5.0.xx\modules\database
pico version4.c

dosyasına tekrar girip içerisinde

SAFE(read_int32(&tmp32, f));
ci->last_topic_time = tmp32;

satırını bulup hemen altına


SAFE(read_int16(&tmp16, f));
ci->maxuser = tmp16;
SAFE(read_int32(&tmp32, f));
ci->maxuser_time = tmp32;

ekleyip dosyayı kaydediyoruz ve sonra ircservices-5.0.xx
ana klasör içerisinde

make
make install