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 Ruh Hali : : | 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.. |