mIRCForumlari - mIRC ve IRC Kullanıcılarının Paylaşım Platformu
  https://www.sosyalchat.com/


SohbetG.Com
mircforumlari

Kullanıcı Etiket Listesi

Yeni Konu aç Cevapla
 
Seçenekler
Alt 22 Aralık 2022, 06:17   #1
Çevrimiçi
Üyelik tarihi: 07 Aralık 2022
Konular: 21281
Mesajlar: 24.385
Nerden: İstanbul
Cinsiyet: Erkek
Web Site: TRmIRC.Net
IRC Sunucu: IRC.TRmIRC.Net
Alınan Beğeni: 3913
Beğendikleri: 7042
@RahmetLi
Ruh Hali : : Olu Gibi
Standart IRCServices (+q) Founder Düzenlemesi

Dosya: irc*.*/modules/chanserv/access.c
Kod:
{ CA_AUTOPROTECT, ACCLEV_SOP, "AUTOPROTECT", CHAN_LEVEL_AUTOPROTECT,
CL_SET_MODE, { .cumode = {"a",0} } },

üzerine;
Kod:
{ CA_AUTOOWNER, ACCLEV_FOUNDER, "", -1,
CL_SET_MODE, { .cumode = {"", 1} } },

Aynı dosyada bunu bulup;
Kod:
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:
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:
/* CA_AUTOOWNER 18 */ /* No longer used */

Kod:
#define CA_AUTOOWNER 18

olarak değiştir.

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

Bunu bulup;
Kod:
else if (strcmp(cmd, "DEHALFOP") == 0)
target_nextacc = CA_AUTOOP;
else
target_nextacc = -1;

Hemen altına;
Kod:
if (strcmp(cmd, "DEPROTECT") == 0 && chanusermode_owner)
mode |= chanusermode_owner;

Dosya: irc*.*/modes.c

Bunu bulup;
Kod:
char chanmode_multiple[257]; /* Chanmodes that can be set multiple times */

Hemen üstüne;
Kod:
int32 chanusermode_owner;

Aynı dosyada bunu bulup;
Kod:
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:
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:
#define MI_REGNICKS_ONLY 0x08 /* [ C] Only registered/ID'd nicks may join */

Hemen altına ekle;
Kod:
#define MI_CHANOWNER 0x10

Aynı dosyada bunu bulup;
Kod:
extern int32 chanmode_opersonly;/* Chanmodes indicating oper-only channels */

Hemen altına;
Kod:
extern int32 chanusermode_owner;

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

Bunu bulup;
Kod:
static const struct modedata_init new_chanusermodes[] = {
{'a', {0x00000010,1,1,'.'}}, /* Channel owner */
};

Bununla değiştir;
Kod:
static const struct modedata_init new_chanusermodes[] = {
{'a', {0x00000010,1,1,'.',MI_CHANOWNER}}, /* Channel owner */
};

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

Bunu bulup;
Kod:
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:
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:
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:
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:
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ı:




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

Cevapla
Etiketler
access, açık, altına, ayı, eksik, herhangi, iple, levels, link, mode, set, soru, sorun, unreal, user, varsa, war, yardımcı, üstü, Şuanda


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