IRCServices /Ns Zarat eklentisi - düzenlenmiş hali

YouMyCure

Üye
Mesajlar
559
Puanları
293
Konum
Dublin
Tepkime puanı
243
Fikir X -> forumundaki Entrance isimli arkadaşa ait ama bazı eksikleri vardı ard arda zar atıp hediye kazanabiliyodun ve sadece tek bir hediye veriordu ben ona ek kullanma süresi ve he zar için farklı hediye ekledim
kodun orjinal linki ; TIKLA
Kodumuza geçelim;

/modules/nickserv/main.c
Kod:
 Kodları sadece üyelerimiz görebilir.

Altına
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin
Kod:
 Kodları sadece üyelerimiz görebilir.

Altına
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin.. daha sonra
Kod:
 Kodları sadece üyelerimiz görebilir.

ÜZERİNE
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin.. kaydedip çıkın.

/modules/nickserv/nickserv.h
Kod:
 Kodları sadece üyelerimiz görebilir.

Altına
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin.. kaydedin çıkın.
ssh den
make & make install
daha sonra servisleri yeniden başlatın

SURE AYARINI YAPMAK İÇİN;
Bu Kısım'da "X" Forumunda Emrehan Kardeşimizin Eklemesidir.
Kaynak: TIKLA

Kod:
 Kodları sadece üyelerimiz görebilir.

değiştirin,

Kod:
 Kodları sadece üyelerimiz görebilir.
 

YouMyCure

Üye
Mesajlar
559
Puanları
293
Konum
Dublin
Tepkime puanı
243
Fikir X -> forumundaki Entrance isimli arkadaşa ait ama bazı eksikleri vardı ard arda zar atıp hediye kazanabiliyodun ve sadece tek bir hediye veriordu ben ona ek kullanma süresi ve he zar için farklı hediye ekledim
kodun orjinal linki ; https://www.ircforumlari.net/servic...ices-ns-zarat-eklentisi-duzenlenmis-hali.html
Kodumuza geçelim;

/modules/nickserv/main.c
Kod:
 Kodları sadece üyelerimiz görebilir.

Altına
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin
Kod:
 Kodları sadece üyelerimiz görebilir.

Altına
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin.. daha sonra
Kod:
 Kodları sadece üyelerimiz görebilir.

ÜZERİNE
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin.. kaydedip çıkın.

/modules/nickserv/nickserv.h
Kod:
 Kodları sadece üyelerimiz görebilir.

Altına
Kod:
 Kodları sadece üyelerimiz görebilir.

ekleyin.. kaydedin çıkın.
ssh den
make & make install
daha sonra servisleri yeniden başlatın

SURE AYARINI YAPMAK İÇİN;

Kod:
 Kodları sadece üyelerimiz görebilir.

değiştirin,

Kod:
 Kodları sadece üyelerimiz görebilir.
 

Sky-Dancer

Üye
Mesajlar
21
Puanları
263
Konum
Adana
Tepkime puanı
50
Kod parçası ile ilgili olarak;
NickInfo *ni;
ni = get_nickinfo(u->nick);
static int ymc = 60*60*12;
time_t now = time(NULL);
NickGroupInfo *ngi;
ngi = get_ngi(ni);
if (!ni) {
send_cmd(s_NickServ, "NOTICE %s Kullanıcı adınızı kaydetmelisiniz...", u->nick);
return;
}
Şu kodlarda birşey dikkatimi çekti.
ni = get_nickinfo(u->nick); // -> ni, get_nickinfo fonksiyonu ile eşitleniyor;
...
ngi = get_ngi(ni); // nick grup bilgisi ni değişkeninden alınıyor ve eşitleniyor;
if (!ni) { // ni pointer kontrolü yapılıyor. Yok ise kod durduruluyor.

---

Şu durumda kayıtsız bir nickin bu komutu kullanması servisleri düşürecektir.
Bilginize.
 

Sky-Dancer

Üye
Mesajlar
21
Puanları
263
Konum
Adana
Tepkime puanı
50
Hatalar tabi ki yapıla yapıla görülecek ama, üzerinden gidilen kodun yapımcısının yaptığı hataları tekrar tekrar yapmaya gerek yok sanırım.
Burada hatalı olan kişi yukarıdaki kodları yazan değil de,
https://www.ircforumlari.com.tr/ircservices/617-ircservices-sans-eklentisi.html
Bu konuda bahsi geçen kişi sanırım. Çünkü kod girişleri birebir aynı. Aynı hatalar, aynı kullanım.
Herhangi bir kişinin, hatalar doğrultusunda, arkasında durulmayacak kod yazmasına karşıyım...
---
Kodlarla ilgili bir yorum;
---
ngi alınırken kendi içerisinde ni varmı yokmu bunun kontrolü yapılıyor ama; bu komut kayıtsız nicklerin her kullanımında, "BUG: ni==NULL in get_ngi() (called from ..." diye bir mesaj çıkartacaktır.
Yine de, sonraki kullanımda hata verme ihtimali var...
Nick grup bilgisi bir şekilde hatalı dönerse, servislerin bir çok yerinde "INTERNAL_ERROR" hatasına dönderildiğini görürsünüz (get_ni ve get_ngi ORJİNAL kullanımlarına bakın).
Bu kodlarda olması gereken işlemler DÜZGÜN yapılmamış.
Kısaca özetle;
ngi = get_ngi(ni); // bu kod, if (!ni) { ile başlayan bloğun sonrasında olmalı.
Ve ngi değişkeninin NULL gelip gelmediğine bakılmalıydı.
İyi Çalışmalar...
 
Üst Alt