mIRCForumlari - mIRC ve IRC Kullanıcılarının Paylaşım Platformu
  https://www.mircforumlari.net/iletisim/


SohbetG.Com

Kullanıcı Etiket Listesi

Ağaç Şeklinde Aç1Beğeni
  • 1 gönderen RahmetLi

Yeni Konu aç Cevapla
 
Seçenekler
Alt 27 Mart 2023, 06:32   #1
Çevrimdışı
Üyelik tarihi: 07 Aralık 2022
Konular: 21245
Mesajlar: 24.248
Nerden: İstanbul
Cinsiyet: Erkek
Web Site: TRmIRC.Net
IRC Sunucu: IRC.TRmIRC.Net
Alınan Beğeni: 3770
Beğendikleri: 6794
@RahmetLi
Ruh Hali : : Olu Gibi
Standart 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..

Kod : Kodu kopyalamak için üzerine çift tıklayın!

© 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.

Makale Sahibi : toXic
NobRaN bunu beğendi.


Kalbim Atar Cansız, Geçmez Gün Ahsız, Vahsız..
  Alıntı ile Cevapla

Cevapla
Etiketler
kullanimlar, ngi


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