Tekil Mesaj gösterimi
Alt 14 Nisan 2014, 04:08   #1
Çevrimiçi
xwerswoodx
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
IRCServices 5.1.24 (+q) Founder Düzenlemesi




IRCServices 5.1.24 sürümü ile kaldırılan founder sorunun daha önceden sorusu sorulmuş ve çözümler yetersiz kalmış, bende hazır ora yazmışken döküman haline getireyim dedim, yardımcı olabildiysem ne mutlu bana.

Biraz eskidi konu ancak hala sorun yaşayanlar varsa ben çözdüğüm yöntemi anlatmak istiyorum;

Dosya: irc*.*/modules/chanserv/access.c
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
{ CA_AUTOPROTECT, ACCLEV_SOP, "AUTOPROTECT", CHAN_LEVEL_AUTOPROTECT, CL_SET_MODE, { .cumode = {"a",0} } },

üzerine;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
{ CA_AUTOOWNER, ACCLEV_FOUNDER, "", -1, CL_SET_MODE, { .cumode = {"", 1} } },

Aynı dosyada bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
for (i = 0; levelinfo[i].what >= 0; i++) { int type = levelinfo[i].action & CL_TYPEMASK; if (type == CL_SET_MODE || type == CL_CLEAR_MODE) { /* Use MODE_NOERROR to deal with protocols that don't * support some modes (e.g. +h in AUTODEOP) */ levelinfo[i].target.cumode.flags = mode_string_to_flags(levelinfo[i].target.cumode.modes, MODE_CHANUSER | MODE_NOERROR); } def_levels[levelinfo[i].what] = levelinfo[i].defval; lev_is_max[levelinfo[i].what] = levelinfo[i].action & CL_LESSEQUAL; }

Böyle değiştir;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
for (i = 0; levelinfo[i].what >= 0; i++) { int type = levelinfo[i].action & CL_TYPEMASK; if (type == CL_SET_MODE || type == CL_CLEAR_MODE) { if (levelinfo[i].what == CA_AUTOOWNER) { if (chanusermode_owner) levelinfo[i].target.cumode.flags = chanusermode_owner; else levelinfo[i].action = CL_OTHER; /* make it a no-op */ } else { /* Use MODE_NOERROR to deal with protocols that don't * support some modes (e.g. +h in AUTODEOP) */ levelinfo[i].target.cumode.flags = mode_string_to_flags(levelinfo[i].target.cumode.modes, MODE_CHANUSER | MODE_NOERROR); } } def_levels[levelinfo[i].what] = levelinfo[i].defval; lev_is_max[levelinfo[i].what] = levelinfo[i].action & CL_LESSEQUAL; }

Dosya: irc*.*/modules/chanserv/chanserv.h

Bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/* CA_AUTOOWNER 18 */ /* No longer used */

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#define CA_AUTOOWNER 18

olarak değiştir.

Dosya: irc*.*/modules/chanserv/main.c

Bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
else if (strcmp(cmd, "DEHALFOP") == 0) target_nextacc = CA_AUTOOP; else target_nextacc = -1;

Hemen altına;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
if (strcmp(cmd, "DEPROTECT") == 0 && chanusermode_owner) mode |= chanusermode_owner;

Dosya: irc*.*/modes.c

Bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
char chanmode_multiple[257]; /* Chanmodes that can be set multiple times */

Hemen üstüne;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
int32 chanusermode_owner;

Aynı dosyada bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
modelist = chanusermodes; flaglist = chanuserflags; for (i = 0; i < 256; i++) { if (modelist[i].flag) { int n = 0; uint32 tmp = (uint32) modelist[i].flag; prefixtable[ (uint8)modelist[i].prefix ] = tmp; while (tmp >>= 1) n++; if (n < 31) flaglist[n] = (char)i; if (modelist[i].plus_params!=1 || modelist[i].minus_params!=1) { log("modes: Warning: channel user mode `%c' takes %d/%d" " parameters (should be 1/1)", i, modelist[i].plus_params, modelist[i].minus_params); } } } }

Bununla değiştir;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
modelist = chanusermodes; flaglist = chanuserflags; for (i = 0; i < 256; i++) { if (modelist[i].flag) { int n = 0; uint32 tmp = (uint32) modelist[i].flag; prefixtable[ (uint8)modelist[i].prefix ] = tmp; if (modelist[i].info & MI_CHANOWNER) chanusermode_owner |= tmp; while (tmp >>= 1) n++; if (n < 31) flaglist[n] = (char)i; if (modelist[i].plus_params!=1 || modelist[i].minus_params!=1) { log("modes: Warning: channel user mode `%c' takes %d/%d" " parameters (should be 1/1)", i, modelist[i].plus_params, modelist[i].minus_params); } } } }

Dosya: irc*.*/modes.h

Bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#define MI_REGNICKS_ONLY 0x08 /* [ C] Only registered/ID'd nicks may join */

Hemen altına ekle;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#define MI_CHANOWNER 0x10

Aynı dosyada bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
extern int32 chanmode_opersonly;/* Chanmodes indicating oper-only channels */

Hemen altına;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
extern int32 chanusermode_owner;

Dosya: irc*.*/modules/protocol/ptlink.c

Bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static const struct modedata_init new_chanusermodes[] = { {'a', {0x00000010,1,1,'.'}}, /* Channel owner */ };

Bununla değiştir;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static const struct modedata_init new_chanusermodes[] = { {'a', {0x00000010,1,1,'.',MI_CHANOWNER}}, /* Channel owner */ };

Dosya: irc*.*/modules/protocol/trircd.c

Bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static const struct modedata_init new_chanusermodes[] = { {'h', {0x00000004,1,1,'%'}}, /* Half-op */ {'a', {0x00000008,1,1,'~'}}, /* Protected (no kick or deop by +o) */ {'u', {0x00000010,1,1,'.'}}, /* Channel owner */ };

Bununla değiştir;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static const struct modedata_init new_chanusermodes[] = { {'h', {0x00000004,1,1,'%'}}, /* Half-op */ {'a', {0x00000008,1,1,'~'}}, /* Protected (no kick or deop by +o) */ {'u', {0x00000010,1,1,'.',MI_CHANOWNER}}, /* Channel owner */ };

Dosya: irc*.*/modules/protocol/unreal.c

Bunu bulup;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static const struct modedata_init new_chanusermodes[] = { {'h', {0x00000004,1,1,'%'}}, /* Half-op */ {'a', {0x00000008,1,1,'~'}}, /* Protected (no kick or deop by +o) */ {'q', {0x00000010,1,1,'*'}}, /* Channel owner */ };

Bununla değiştir;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static const struct modedata_init new_chanusermodes[] = { {'h', {0x00000004,1,1,'%'}}, /* Half-op */ {'a', {0x00000008,1,1,'~'}}, /* Protected (no kick or deop by +o) */ {'q', {0x00000010,1,1,'*',MI_CHANOWNER}}, /* Channel owner */ };

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

Servisleri restartlamanız gerekmektedir.

Umarım eksik bir kod vermemişimdir, hata alırsanız hatayı kopyalarsanız yardımcı olabilirim. Şuanda açık bir sunucuda bu şekilde +q yetkisini ayarladm, herhangi bir sorun yaşamadım, yaşayacağınızı sanmıyorum, yinede hata varsa belirtirseniz çözmeye çalışırım.

Alıntı:
[02:09:19] *** Tekrar Girilmeye Çalışılıyor...
[02:09:19] *** Kanala Tekrar Giriliyor #sohbet
[02:09:19] *** ChanServ mod değiştirdi:+oq xwerswoodx xwerswoodx



 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver