IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   IRCd Makaleler (https://www.ircforumlari.net/ircd-makaleler/)
-   -   IRCServices - ngi ve ni Kullanimlar. (https://www.ircforumlari.net/ircd-makaleler/357245-ircservices-ngi-ve-ni-kullanimlar.html)

toXic 30 Eylül 2010 09:41

IRCServices - ngi ve ni Kullanimlar.
 
IRCServiceste bazi durumlari kullanmak için pointerlar kullanilir. Bu pointerlar birçok özellikleri almak için, işlem yapmak için sıkca kullanilir. Örneğin *ni..

Örnek vericek olursak;

Kod:


/************************************************************************/
//coded toXic

static void do_sans(User *u)
{
NickInfo *ni;
ni  = get_nickinfo(u->nick);
#define bekle 3;
static int toxolog = 60*60*24*bekle;
time_t now = time(NULL);
NickGroupInfo *ngi;
ngi = get_ngi(ni);
if (!ni) {
send_cmd(s_NickServ, "NOTICE %s Nickiniz'i kaydetmelisiniz.", u->nick);
return;
}

if (!is_services_admin(u) && ngi->lastsans && now - ngi->lastsans < toxolog) {
send_cmd(s_NickServ, "NOTICE %s Bu Komutu \2( 3 ) \2 Gunde, sadece \2 1 \2 Kez Kullanabilirsiniz..", u->nick);
return;
}
ngi->lastsans = now;
/*
int Kalan;
Kalan = now - ngi->lastsans - toxolog;
send_cmd(s_NickServ, "NOTICE %s kalan sureniz ( \2%d\2 )", u->nick, Kalan);
*/
int x = 0;
int ibo = 0;
  for (ibo = 0; ibo < 1; ++ibo)
        x=rand()%100;
send_cmd(s_NickServ, "NOTICE %s Sans Numaraniz, \2 ( %d )\2 Olmustur..", u->nick, x);
send_cmd(s_NickServ, "NOTICE %s Kazanma bilgisi ", u->nick);
if (x == 35) {
send_cmd(s_NickServ, "NOTICE %s Tebrikler, Sansli sayiyi yakaladiniz.", u->nick);
send_cmd(s_NickServ, "SWHOIS %s :Vhost Sansli Kullanicisi", u->nick);
}
else if (x == 44) {
send_cmd(s_NickServ, "NOTICE %s Tebrikler, Sansli sayiyi yakaladiniz.", u->nick);
send_cmd(s_NickServ, "NOTICE %s Odulunuz, Size Whois cekenleri goreceksiniz..", u->nick);
send_cmd(s_NickServ, "SVSMODE %s +W :1", u->nick);
}
else if (x == 62) {
send_cmd(s_NickServ, "NOTICE %s Tebrikler, Sansli sayiyi yakaladiniz.", u->nick);
send_cmd(s_NickServ, "NOTICE %s Odulunuz, Kanallardan atilmayacaksiniz..", u->nick);
send_cmd(s_NickServ, "SVSMODE %s +q :1", u->nick);
}
else if (x == 77) {
send_cmd(s_NickServ, "NOTICE %s Tebrikler, Sansli sayiyi yakaladiniz.", u->nick);
send_cmd(s_NickServ, "NOTICE %s Odulunuz, Vip Kullanicisi oldunuz.", u->nick);
send_cmd(s_NickServ, "SVSMODE %s +qW :1", u->nick);
}
else if (x == 93) {
send_cmd(s_NickServ, "NOTICE %s Tebrikler, Sansli sayiyi yakaladiniz.", u->nick);
send_cmd(s_NickServ, "NOTICE %s Odulunuz, Size Whois cekenleri goreceksiniz..", u->nick);
send_cmd(s_NickServ, "SVSMODE %s +W :1", u->nick);
}
else {
send_cmd(s_NickServ, "NOTICE %s Maalesef, Sansli gununuzde degilsiniz..", u->nick);
send_cmd(s_NickServ, "NOTICE %s Tekrar Kullanim icin, \2 3 \2 Gun beklemelisiniz..", u->nick);
    }
  }


bu sekilde bir kod yazalim.


Kod:

NickInfo *ni;
Burada *ni'yi kullandik. Fakat Kullanicinin bilgilerini almak için bir pointer daha kullanmaliyiz. Oda;

Kod:

ni  = get_nickinfo(u->nick);
Burada, get_nickinfo kullanicinin nick bilgilerini alir. Mesela sunucuya giren kullanicilara karşilama yapmak için,

Kod:


NickInfo *ni;
ni = get_nickinfo(u->nick);
 
#define tox "Nickiniz kayitlidir."
if (ni) {
send_cmd(s_NickServ, "PRIVMSG %s %s", u->nick, tox);
}

Olarak kullaniyoruz, Kullanicinin nickinin kayitli olup olmadiğini bu şekilde algilatiyoruz.

Kod:

if (!ni) {
send_cmd(s_NickServ, "NOTICE %s Nickiniz'i kaydetmelisiniz.", u->nick);
return;
}

Burada kayitsiz nicklere komut kullanimini kapadik. return burada işlemi kesmiş. Eğer return kullanilmasa idi, işlem gerçekleşirdi.




İlk Kodumuzda varsayalim ki,

Kod:

ni  = get_nickinfo(u->nick);
yok..

Alıntı:


© NickServ Sifre kabul edildi.

nickserv -- sans
© NickServ Nickiniz'i kaydetmelisiniz.

Nick kayitli olduğu halde, nickinizi kaydetmelisiniz diyor. 10 harfcik bir kod bile çok önemli kod yazimi için. Hatta bu segmantationa kadar rahatlikla götürebilir.

Gelelim ngi ' ye.

Kullanimi;
Kod:

NickGroupInfo *ngi;
Seklindedir.

Bunu;

Kod:

if (!is_services_admin(u) && ngi->lastsans && now - ngi->lastsans < toxolog) {
send_cmd(s_NickServ, "NOTICE %s Bu Komutu \2( 3 ) \2 Gunde, sadece \2 1 \2 Kez Kullanabilirsiniz..", u->nick);
return;
}

olarak kullanmişiz. ngi en cok emaildi sifre idi yani kişiye özel işlemlerde kullanilmaktadir.

aSi 05 Ekim 2010 11:13

Cevap: IRCServices - ngi ve ni Kullanimlar.
 
Emeğine sağlık güzel bir çalışma..

ArresT 03 Şubat 2011 02:11

Cevap: IRCServices - ngi ve ni Kullanimlar.
 
güzel makale olmuş. :) eline sağlık ibrahim.

ngi için biraz daha açıklama lazım değil kardeşim? :)


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 16:29.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk