IFGT Hazır kod Online Kullanici ve Kullanici Rekoru

IFGENTR Konu Bilgileri

Konu Hakkında Merhaba, tarihinde Services Hazır Kodlar kategorisinde KraL tarafından oluşturulan Online Kullanici ve Kullanici Rekoru başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 12 kez görüntülenmiş, 0 yorum ve 0 tepki puanı almıştır...
Kategori Adı Services Hazır Kodlar
Konu Başlığı Online Kullanici ve Kullanici Rekoru
Konbuyu başlatan KraL
Başlangıç tarihi
Cevaplar
Görüntüleme
İlk mesaj tepki puanı
Son Mesaj Yazan KraL

KraL

IFGT Süper Moderatör
Katılım
27 Kas 2025
Mesajlar
1,421
Tepkime puanı
19
IFGT Puan
38
cd ircservices-5.0.xx
pico channels.h


dosyası içerisinde

Kod:
time_t topic_time;   /* When topic was set */
satırının hemen altına

Kod:
int anuser;
int maxuser;
time_t maxuser_time;
ekleyip kayıt edin ..

pico channels.c

dosyası içerisinde

Kod:
/* Allocate pre-cleared memory */
c = scalloc(sizeof(Channel), 1);
satırının hemen altına

Kod:
c->anuser = 0;
şeklinde ekleyip ve aynı dosya içerisinde

Kod:
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

Kod:
(c->anuser)--;
şeklinde ekleyip kayıt edin ...

cd modules\chanserv
pico chanserv.h


dosyası içerisinde

Kod:
char *last_topic;  /* Last topic on the channel */
satırının hemen üzerine

Kod:
int anuser;
int maxuser;
time_t maxuser_time;
şeklinde ekleyip kayıt edin ...

pico main.c

dosyası içerisinde

Kod:
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

Kod:
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

Kod:
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(c);
    restore_topic(c);
    return 0;
}
satırını

Kod:
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(c);
    restore_topic(c);
    return 0;
}
şeklinde değiştirin ve aynı dosya içerisinde

Kod:
if (ci && ci->entry_message)
notice(s_ChanServ, user->nick, "(%s) %s", ci->name, ci->entry_message);
satırının üzerine

Kod:
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

Kod:
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

Kod:
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

Kod:
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

Kod:
char buf2[BUFSIZE];
time_t now=time(NULL);
şeklinde ekleyin ve aynı dosya içerisinde

Kod:
if (ci->entry_message && CHECK_SHOW_ALL)
notice_lang(s_ChanServ, u, CHAN_INFO_ENTRYMSG, ci->entry_message);
satırının hemen üzerine

Kod:
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

Kod:
SAFE(write_int32(ci->last_topic_time, f));
satırının hemen altına

Kod:
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

Kod:
SAFE(read_int32(&tmp32, f));
ci->last_topic_time = tmp32;
satırını bulup hemen altına

Kod:
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


yaparak servisinizi tekrar restartlayın.Güle güle kullanın :)

Kodu yazarı : Diablo