Tekil Mesaj gösterimi
Alt 26 Ağustos 2007, 02:18   #1
Çevrimdışı
NeTDeLiSi
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

IRCForumlari.NET Reklamlar
sohbet odaları sohbet bizimmekan sohbet odaları