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

>
+
Etiketlenen Kullanıcılar

 
 
LinkBack Seçenekler Stil
Prev önceki Mesaj   sonraki Mesaj Next
Alt 30 Eylül 2010, 09:41   #1
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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:   Kodu kopyalamak için üzerine çift tıklayın!
/************************************************************************/ //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:   Kodu kopyalamak için üzerine çift tıklayın!
NickInfo *ni;

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

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
ni = get_nickinfo(u->nick);

Burada, get_nickinfo kullanicinin nick bilgilerini alir. Mesela sunucuya giren kullanicilara karşilama yapmak için,

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
NickGroupInfo *ngi;

Seklindedir.

Bunu;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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.

 
Alıntı ile Cevapla

 

Etiketler
anahtar, ni, ve


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
ircservices db ATLAS IRCServices 3 13 Mayıs 2009 09:15
ircservices/lib raskolnikov IRCServices 1 15 Mart 2009 14:24
ircservices-5.0.63 woody IRCServices 3 08 Ekim 2008 13:28
ircservices de bot BeYaZAsLaN Servisler 8 20 Mayıs 2007 13:50
ircservices BattaL Servisler 2 21 Nisan 2006 20:03