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

>
+
Etiketlenen Kullanıcılar

1Beğeni(ler)

 
 
LinkBack Seçenekler Stil
Prev önceki Mesaj   sonraki Mesaj Next
Alt 26 Ağustos 2007, 02:18   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Access Kabul (IrcServices)




Sky-Dancer'a kodlardan ötürü teşekkürler ..
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Ptlink tarzı Access Kabul sistemi.. (eklenen accesslerin /cs kabul #kanalismi e/h yapması şarttır.)

Kod 3 saat içinde tarafımdan yazılmıştır..

Ekleme Zorluğu : Orta/Zor

Yapılması Gereken Değişiklikler :

cd ircservices-5.0.xx

------------------------------
pico lang/tr.l

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_ACCESS_ADDED %s nick'i %s kanalinin erisim listesine %d seviyeden eklendi.

Bu Satırları bulup, Şu şekilde değiştirin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_ACCESS_ADDED %s nick'ine %s kanalinin erisim listesine %d seviyeden eklenmesi için Kabul Mesajı Gönderildi.

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_ACCESS_LIST_HEADER %s Kanali Erisim Listesi: Sira Seviye Nick CHAN_ACCESS_LIST_FORMAT %4d %4d %s

Bu Satırları bulup, Şu şekilde değiştirin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_ACCESS_LIST_HEADER %s Kanali Erisim Listesi: Sira Seviye Nick Durum CHAN_ACCESS_LIST_FORMAT %4d %4d %s %s

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_XOP_ADDED %s %s %s listesine eklendi.

Bu Satırları bulup, Şu şekilde değiştirin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_XOP_ADDED %s nickine %s %s listesine eklenmesi için Kabul Mesajı Gönderildi.

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_XOP_LIST_HEADER %s %s listesi: Sira Nick CHAN_XOP_LIST_FORMAT %4d %s

Bu Satırları bulup, Şu şekilde değiştirin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
CHAN_XOP_LIST_HEADER %s %s listesi: Sira Nick Durum CHAN_XOP_LIST_FORMAT %4d %s %s

------------------------------
pico modules\chanserv\access-levels.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
int is_list; /* Is true when command is either LIST or COUNT */

Bu Satırları bulup, bir üstüne şu satırı ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
User *sky;

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
notice_lang(s_ChanServ, u, CHAN_ACCESS_ADDED, nick, chan, level);

Bu satırı bulup, bir altına şu satırları ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
sky = get_user(nick); if (sky) { if (user_identified(sky)) { send_cmd(s_ChanServ, "NOTICE %s :%s Nicki %s Kanalında Size Access Ekledi.", sky->nick, u->nick, chan); send_cmd(s_ChanServ, "NOTICE %s :Kabul Etmek için /chanserv kabul %s e Yaziniz.", sky->nick, chan); send_cmd(s_ChanServ, "NOTICE %s :Reddetmek için /chanserv kabul %s h Yaziniz.", sky->nick, chan); } }

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static int access_list(User *u, int index, ChannelInfo *ci, int *sent_header) { ChanAccess *access = &ci->access[index]; NickGroupInfo *ngi; if (!access->nickgroup) return RET_NOENTRY; if (!(ngi = get_ngi_id(access->nickgroup))) return RET_INTERR; if (!*sent_header) { notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name); *sent_header = 1; } notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT, index+1, access->level, ngi_mainnick(ngi)); return RET_LISTED; }

Bu kodu bulup, şu kod ile değiştirin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static int access_list(User *u, int index, ChannelInfo *ci, int *sent_header) { ChanAccess *access = &ci->access[index]; NickGroupInfo *ngi; if (!access->nickgroup) return RET_NOENTRY; if (!(ngi = get_ngi_id(access->nickgroup))) return RET_INTERR; if (!*sent_header) { notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name); *sent_header = 1; } if (access->kabul==0) notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT, index+1, access->level, ngi_mainnick(ngi), "<Beklemede>"); else if (access->kabul==1) notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FORMAT, index+1, access->level, ngi_mainnick(ngi), "<Kabul Edildi>"); return RET_LISTED; }

------------------------------
pico modules\chanserv\access-xop.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
const char *listname = XOP_LISTNAME(level);

Bu Satıri bulup, bir üstüne şu satırı ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
User *sky;

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
notice_lang(s_ChanServ, u, CHAN_XOP_ADDED, nick, chan, listname);

Bu satırı bulup bir altına şu satırları ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
sky = get_user(nick); if (sky) { if (user_identified(sky)) { send_cmd(s_ChanServ, "NOTICE %s :%s Nicki %s Kanalında Size Access Ekledi.", sky->nick, u->nick, chan); send_cmd(s_ChanServ, "NOTICE %s :Kabul Etmek için /chanserv kabul %s e Yaziniz.", sky->nick, chan); send_cmd(s_ChanServ, "NOTICE %s :Reddetmek için /chanserv kabul %s h Yaziniz.", sky->nick, chan); } }

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static int xop_list(User *u, int index, ChannelInfo *ci, int *sent_header, int relindex) { ChanAccess *access = &ci->access[index]; NickGroupInfo *ngi; if (!(ngi = get_ngi_id(access->nickgroup))) return 0; if (!*sent_header) { notice_lang(s_ChanServ, u, CHAN_XOP_LIST_HEADER, XOP_LISTNAME(access->level), ci->name); *sent_header = 1; } notice_lang(s_ChanServ, u, CHAN_XOP_LIST_FORMAT, relindex, ngi_mainnick(ngi)); return 1; }

Bu kodu bulup şu kod ile değiştirin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static int xop_list(User *u, int index, ChannelInfo *ci, int *sent_header, int relindex) { ChanAccess *access = &ci->access[index]; NickGroupInfo *ngi; if (!(ngi = get_ngi_id(access->nickgroup))) return 0; if (!*sent_header) { notice_lang(s_ChanServ, u, CHAN_XOP_LIST_HEADER, XOP_LISTNAME(access->level), ci->name); *sent_header = 1; } if (access->kabul==0) notice_lang(s_ChanServ, u, CHAN_XOP_LIST_FORMAT, relindex, ngi_mainnick(ngi), "<Beklemede>"); else if (access->kabul==1) notice_lang(s_ChanServ, u, CHAN_XOP_LIST_FORMAT, relindex, ngi_mainnick(ngi), "<Kabul Edildi>"); return 1; }

------------------------------
pico modules\chanserv\access.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
if (ci->access[i].nickgroup == id)

Bu kodu bulup Hemen bir alt satıra şu kodu ekleyiniz : (bu satır 2 kez çıkacak, ikisinde de aynı şekilde bir alt satırına aşağıdaki satırı ekleyiniz.)

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
if (ci->access[i].kabul==1)

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
ci->access[i].nickgroup = ni->nickgroup; ci->access[i].level = level;

bu satırları bulup hemen altına şu kodu ekleyiniz:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
ci->access[i].kabul = 0;

------------------------------
pico modules\chanserv\chanserv.h

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

bu kodu bulup hemen altına şu kodu ekleyin:

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

-

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

bu kodu bulup hemen altına şu kodu ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
ChanAccess *accesstemp;

------------------------------
pico modules\chanserv\main.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static void do_status(User *u);

bu satırı bulup hemen altına şu satırı ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static void do_kabul(User *u);

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
{ "UNSUSPEND",do_unsuspend,is_services_admin, -1, -1, CHAN_OPER_HELP_UNSUSPEND },

bu satırları bulup hemen altına şu satırı ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
{ "KABUL", do_kabul, NULL, -1,-1, -1 },

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static void do_help(User *u) {

bu satırları bulup hemen bir üstüne şu kodu ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static void do_kabul(User *u) { //char *cmd = strtok_remaining(); char *kanal = strtok(NULL, " "); char *secim = strtok(NULL, " "); int sec; ChannelInfo *ci; NickInfo *ni=u->ni; int bulunan=0; int i=0; if (!kanal) { send_cmd(s_ChanServ, "NOTICE %s :Kullanımı : KABUL #Kanal e/h", u->nick); return; } ci = get_channelinfo(kanal); if (strcmp(kanal, "#") == 0) { notice_lang(s_ChanServ, u, CHAN_REGISTER_SHORT_CHANNEL); } else if (*kanal == '&') { notice_lang(s_ChanServ, u, CHAN_REGISTER_NOT_LOCAL); } else if ((*kanal != '#') && stricmp(kanal, "list")) { notice_lang(s_ChanServ, u, CHAN_REGISTER_INVALID_NAME); } else if (!ni) { notice_lang(s_ChanServ, u, CHAN_MUST_REGISTER_NICK, s_NickServ); } else if (!user_identified(u)) { notice_lang(s_ChanServ, u, CHAN_MUST_IDENTIFY_NICK, s_NickServ, s_NickServ); } else if (stricmp(kanal, "list") == 0) { for (ci = first_channelinfo(); ci; ci = next_channelinfo()) { if (ci->flags & (CI_VERBOTEN)) continue; if (ci->suspendinfo) continue; ARRAY_SEARCH_SCALAR(ci->access, nickgroup, u->ngi->id, i); if (i != ci->access_count) { if (ci->access[i].kabul==0) { send_cmd(s_ChanServ, "NOTICE %s :%s Kanalında Bekleyen Bir Access isteği Bulundu..", u->nick, ci->name); send_cmd(s_ChanServ, "NOTICE %s :Kabul Etmek için /chanserv kabul %s e Yazınız.", u->nick, ci->name); send_cmd(s_ChanServ, "NOTICE %s :Reddetmek için /chanserv kabul %s h Yazınız.", u->nick, ci->name); send_cmd(s_ChanServ, "NOTICE %s :-", u->nick); } } } return; } else if (ci == NULL) { notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, kanal); } else { if (!secim) { send_cmd(s_ChanServ, "NOTICE %s :Kullanımı : KABUL #Kanal e/h", u->nick); return; } if (stricmp(secim, "h") == 0) sec=0; else if (stricmp(secim, "e") == 0) sec=1; else { send_cmd(s_ChanServ, "NOTICE %s :Kullanımı : KABUL #Kanal e/h", u->nick); return; } if (ci->flags & CI_VERBOTEN) { send_cmd(s_ChanServ, "NOTICE %s :Bu Kanal Yasaklı Bir Kanaldır, Komutunuzu Gözden Geçiriniz.", u->nick); return; } else if (ci->suspendinfo) { send_cmd(s_ChanServ, "NOTICE %s :Bu Kanal Suspendli Bir Kanaldır, Komutunuzu Gözden Geçiriniz.", u->nick); return; } ARRAY_FOREACH (i, ci->access) { if (ci->access[i].nickgroup == ni->nickgroup) { if (sec==1) { if (ci->access[i].kabul==0) { ci->access[i].kabul=1; send_cmd(s_ChanServ, "NOTICE %s :%s Kanalı için Access Eklemesi Kabul Edildi.", u->nick, kanal); } else if (ci->access[i].kabul==1) { send_cmd(s_ChanServ, "NOTICE %s :%s Kanalı için Access Eklemesini Zaten Kabul Etmişsiniz.", u->nick, kanal); } else { send_cmd(s_ChanServ, "NOTICE %s :%s Kanalı için Nickinize Ait Bekleyen Access isteği Yok.", u->nick, kanal); } put_channelinfo(ci); bulunan=1; break; } else { if (ci->access[i].kabul==0) { send_cmd(s_ChanServ, "NOTICE %s :%s Kanalındaki Bekleyen Access isteğiniz Silindi.", u->nick, kanal); ARRAY_REMOVE(ci->access, i); put_channelinfo(ci); bulunan=1; } break; } } } if (bulunan==0) send_cmd(s_ChanServ, "NOTICE %s :Nickiniz için %s Kanalında Bekleyen Bir Access isteği Yok.", u->nick, kanal); } }

------------------------------
pico modules\nickserv\main.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#include "modules/operserv/operserv.h"

bu kodu bulup hemen altına şu kodu ekleyin

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#include "modules/chanserv/chanserv.h"

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
char *s_NickServ;

bu kodu bulup hemen altına şu kodu ekleyin:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
char *s_ChanServ;

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static void do_identify(User *u) { char *pass = strtok_remaining(); NickInfo *ni = NULL; NickGroupInfo *ngi = NULL;

bu satırları bulup hemen altına şu 3 satırı ekleyiniz:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
ChannelInfo *ci; int i; int toplam=0;

-

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
notice_lang(s_NickServ, u, NICK_IDENTIFY_SUCCEEDED);

bu satırı bulup hemen bir altına şu satırları ekleyiniz:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
for (ci = first_channelinfo(); ci; ci = next_channelinfo()) { if (ci->flags & (CI_VERBOTEN)) continue; if (ci->suspendinfo) continue; ARRAY_SEARCH_SCALAR(ci->access, nickgroup, u->ngi->id, i); if (i != ci->access_count) { if (ci->access[i].kabul==0) toplam++; } } if (toplam!=0) { send_cmd(s_ChanServ, "NOTICE %s :%d Adet Bekleyen Access Kabul isteğiniz Var.", u->nick, toplam); send_cmd(s_ChanServ, "NOTICE %s :istekleri Listelemek için /chanserv kabul list Komutunu Uygulayınız.", u->nick); }

------------------------------
pico modules\database\version4.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
SAFE(write_int16(convert_new_level(ci->access[i].level), f));

bu satırı bulup hemen altına şu satırı ekleyiniz:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
SAFE(write_int32(ci->access[i].kabul, f));

------------------------------

Not : tr.l de yapacağınız değişikliklerde "tab"lara dikkat ediniz.
Not : dosyalarınızıftp den çekip not defterinde veya başka bir editörde yapmanız daha iyi olacaktır.

Buraya kadar herşeyi Satır kaydırmadan yaptıysanız;

make
make install

komutlarınızı kullanınız.

sonra ./ircservices komutu ile servislerinizi getirip, mirc üzerinden admin nickinizile girip /os update komutunu kullanınız..

bu işlemden HEMEN sonra servislerinizi ps x listenizden kapatınız..

sonrasında şu editi yapınız:

---
pico modules\database\version4.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
ci->access[i].level = convert_old_level(lev);

bu satırı bulup hemen altına şu satırı ekleyiniz:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
SAFE(read_int32(&ci->access[i].kabul, f));

bu işlemden sonra da tekrar
make
make install
komutlarını uygulayıp servislerinizi getirirseniz işlem tamamlanacaktır.

Not : Çıkan yazılar, kodlar veya komut düzenlerinde devriklik veya hata olabilir.. Bu, Test etmediğimden ve kodu hazırladıktan sonra zamanımın olmayışından kaynaklanıyor.

Not : Umarım kodlar hakkında eskiden yaşananlar yine yaşanmaz.. (BAŞKA FORUMLARDA PAYLAŞACAKSANIZ "Alıntı : Kodlayan Sky-Dancer" gibi bir yazı yazarsanız sevinirim. )

Çıkan hataları bu başlık altında yazarsanız sevinirim.

iyi Çalışmalar..

 
Alıntı ile Cevapla

 

Etiketler
ircservices, kabul, access


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'de Access Ekleyen'ini Gösterme Psitha Servisler 16 21 Haziran 2009 11:00
Ircservices access kabuL ? aLLstaR IRCServices 3 14 Nisan 2009 21:16
/cs access ve levels nasıl aktif edilir ? ircservices Raw Servisler 2 06 Nisan 2009 22:06
ircservices access sorunu bilinmez Servisler 5 28 Kasım 2007 01:29
IrcServices`te Access Ayarı YoN`a`TeaM Servisler 6 26 Nisan 2006 20:27