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

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Scripting Sorunları (https://www.ircforumlari.net/mirc-scripting-sorunlari/)
-   -   Yetkilendirme (https://www.ircforumlari.net/mirc-scripting-sorunlari/506871-yetkilendirme.html)

Med Cezir 07 Kasım 2012 02:17

Cevap: Yetkilendirme
 
Neden txt dosyasına eklemeyi ısrarla istiyorsunki, bu nasıl bir fayda sağlayacak, ayrıca ilk kodda $nick olarak atamada sorgulatma yapmışız bunun yerine %n atanan nick üzerinden yapmamız gerekliydi.

Bunu düzeltmek istersen;
Kod:

if (%n isop #opkanali) || (%n ishop #opkanali) || (%n == $me) || ($istok(%atama,$nick,32) == $true) { goto replay }
satırını aşağıdaki gibi düzeltirsin.
Kod:

if (%n isop #opkanali) || (%n ishop #opkanali) || (%n == $me) || ($istok(%atama,%n,32) == $true) { goto replay }

illusi0n 07 Kasım 2012 11:45

Cevap: Yetkilendirme
 
Alıntı:

Med Cezir Nickli Üyeden Alıntı (Mesaj 1041240069)
Neden txt dosyasına eklemeyi ısrarla istiyorsunki, bu nasıl bir fayda sağlayacak, ayrıca ilk kodda $nick olarak atamada sorgulatma yapmışız bunun yerine %n atanan nick üzerinden yapmamız gerekliydi.

Bunu düzeltmek istersen;
Kod:

if (%n isop #opkanali) || (%n ishop #opkanali) || (%n == $me) || ($istok(%atama,$nick,32) == $true) { goto replay }
satırını aşağıdaki gibi düzeltirsin.
Kod:

if (%n isop #opkanali) || (%n ishop #opkanali) || (%n == $me) || ($istok(%atama,%n,32) == $true) { goto replay }

Şimdi oldu dostum dağılım eşitlendi yalnız bu %atama verisini mircı kapatmadan da belli aralıklarla sıfırlama gibi bir imkanımız olur mu? Şundan dolayı istiyorum; kanalda 3 op olduğunda %atama verisine bunları kayıt ettiğinde 4. sefer atama yaptığımda kilitleniyor bot

Med Cezir 08 Kasım 2012 05:33

Cevap: Yetkilendirme
 
Daha önceden yazılmış bir koda yama usulüyle eklemeler yapmak daha sonradan sıkıntılara yol açabiliyor. Başta düşünceniz doğrultusunda misal goto kulllanarak değilde, farklı bir mantıkla bu kod daha sorunsuzda yazılabilirdi.

Mevcut koda nasıl ekleme yaptım;
ilk olarak %atama daki nickler kanaldaki kişi sayısına eşitse veya büyükse %atama verisi sıfırlanacak.
İkinci olarak %atama verisine kayıtlı kişiler kanaldan part yapar veya sunucudan cıkarsada %atama verisinden silineceklerki kodun devamlılığı olsun.
Son olarakda %atama verisindeki bir nick nickini değişirse verideki nickide değiştirilecek.

Kod:

on *:text:!atama*:#kanal: {
if (!$istok(Nick Nick1 Nick2,$nick,32)) { halt }
if $token(%atama,0,32) >= $nick($chan,0) { unset %atama }
:replay
var %n = $nick(#opkanali,$rand(1,$nick(#opkanali,0)))
if (%n isop #opkanali) || (%n ishop #opkanali) || (%n == $me) || ($istok(%atama,%n,32) == $true) { goto replay }
/msg #opkanali " Badnick " kontrolü yapılıp bilgi verilsin lütfen atanan yetkili: $+(%n,))
.set -e %atama $addtok(%atama,%n,32)
/msg #ircd - Liste kontrolü icin operatör atandı.
}
on *:Part:#opkanali:if $istok(%atama,$nick,32) == $true { $remove(%atama,$nick) }
on *:Quit:if $istok(%atama,$nick,32) == $true { $remove(%atama,$nick) }
on *:Nick:if $istok(%atama,$nick,32) == $true { $replace(%atama,$nick,$newnick) }

Bun dışında birşey istersen timer kullanarak unset %atama yaparak belirli zaman aralıklarıylada sıfırlayabilirsin.

Aklıma şuanlık gelen bu kadar :)

illusi0n 08 Kasım 2012 15:11

Cevap: Yetkilendirme
 
Alıntı:

Med Cezir Nickli Üyeden Alıntı (Mesaj 1041240614)
Daha önceden yazılmış bir koda yama usulüyle eklemeler yapmak daha sonradan sıkıntılara yol açabiliyor. Başta düşünceniz doğrultusunda misal goto kulllanarak değilde, farklı bir mantıkla bu kod daha sorunsuzda yazılabilirdi.

Mevcut koda nasıl ekleme yaptım;
ilk olarak %atama daki nickler kanaldaki kişi sayısına eşitse veya büyükse %atama verisi sıfırlanacak.
İkinci olarak %atama verisine kayıtlı kişiler kanaldan part yapar veya sunucudan cıkarsada %atama verisinden silineceklerki kodun devamlılığı olsun.
Son olarakda %atama verisindeki bir nick nickini değişirse verideki nickide değiştirilecek.

Kod:

on *:text:!atama*:#kanal: {
if (!$istok(Nick Nick1 Nick2,$nick,32)) { halt }
if $token(%atama,0,32) >= $nick($chan,0) { unset %atama }
:replay
var %n = $nick(#opkanali,$rand(1,$nick(#opkanali,0)))
if (%n isop #opkanali) || (%n ishop #opkanali) || (%n == $me) || ($istok(%atama,%n,32) == $true) { goto replay }
/msg #opkanali " Badnick " kontrolü yapılıp bilgi verilsin lütfen atanan yetkili: $+(%n,))
.set -e %atama $addtok(%atama,%n,32)
/msg #ircd - Liste kontrolü icin operatör atandı.
}
on *:Part:#opkanali:if $istok(%atama,$nick,32) == $true { $remove(%atama,$nick) }
on *:Quit:if $istok(%atama,$nick,32) == $true { $remove(%atama,$nick) }
on *:Nick:if $istok(%atama,$nick,32) == $true { $replace(%atama,$nick,$newnick) }

Bun dışında birşey istersen timer kullanarak unset %atama yaparak belirli zaman aralıklarıylada sıfırlayabilirsin.

Aklıma şuanlık gelen bu kadar :)

Emeğine sağlık dostum :)

rX 27 Ocak 2013 10:48

Cevap: Yetkilendirme
 
Konuyu hortlatıyorum fakat ek olarak yapabileceğimiz birşey olabilir mi diye soracaktım?


#Founders kanalında; #Sohbet@ #kelime@ #yarisma@ #oyun@ founder'leri ve successor'leri bulunuyor.

#Founders kanalında sohbetop.txt içinde ekli olanlar !atama #sohbet@ komutunu kullanabilsinler
#Founders kanalında oyunop.txt içinde ekli olanlar !atama #oyun@ komutunu kullanabilsinler

ve diyelim ki sohbetop.txt içinde bulunan !atama #oyun@ yaptığında ona uyarı gönderecek;

Siz Oyun kanalı yetkilisi değilsiniz şeklinde...

verilen kodu bu şekilde uyarlamak mümkün müdür?

Tek kod ile yoksa her kanal için farklı kod mu türetmemiz gerekiyor?

Med Cezir 29 Ocak 2013 04:04

Cevap: Yetkilendirme
 
Koda yeterince yama yaptığımızı düşünüyordum :) Kodu denemedim sen dener sonucu bildirirsin. Ama aşağıda belirttiğim unsurları tamamen uygulaman gerekli, bunlardan kaynaklı bir hata oluşmasın

sohbetop.txt ve oyunop.txt oluşturup içine yetkili nickleri eklersin
sohbet kanalının op kanalı #sohbetop , oyun kanalının op kanalı #oyunop olmalı
#founder kanalında !atama #sohbet veya !atama #oyun kanalı olarak kullanılabilir.

Kod:

on *:text:!atama*:#founder: {
  if (!$istok(Nick Nick1 Nick2,$nick,32)) { halt }
  if $regex($2,/^(#sohbet|#oyun)$/i) {
    if $token($+(%,atama,.,$2),0,32) >= $nick($+($2,op),0) { unset %atama }
    if $read($+($right($2,-1),op,.,txt),w,$nick) { goto replay }
    else { msg $chan $2 kanalı yetkilisi değilsin işlem yapamazsın | halt }
  }
  else { msg $chan $2 kanalı erişim dahlinde değildir. | halt }
  :replay
  var %n = $nick($+($2,op),$rand(1,$nick($+($2,op),0)))
  if (%n isop $+($2,op)) || (%n ishop $+($2,op)) || (%n == $me) || ($istok($+(%,atama,.,$2),%n,32) == $true) { goto replay }
  /msg $+($2,op) " Badnick " kontrolü yapılıp bilgi verilsin lütfen atanan yetkili: $+(%n,))
  .set -e %atama $addtok(%atama,%n,32)
  /msg #founder - Liste kontrolü icin operatör atandı.
}
on *:Part:#: {
  if $chan == #sohbetop && $istok(%atama.#sohbet,$nick,32) == $true { $remove(%atama.#sohbet,$nick) }
  if $chan == #oyunop && $istok(%atama.#oyun,$nick,32) == $true { $remove(%atama.#oyun,$nick) }
}
on *:Quit: {
  if $istok(%atama.#sohbet,$nick,32) == $true { $remove(%atama.#sohbet,$nick) }
  if $istok(%atama.#oyun,$nick,32) == $true { $remove(%atama.#oyun,$nick) }
}
on *:Nick: {
  if $istok(%atama.#sohbet,$nick,32) == $true { $replace(%atama.#sohbet,$nick,$newnick) }
  if $istok(%atama.#oyun,$nick,32) == $true { $replace(%atama.#oyun,$nick,$newnick) }
}


rX 09 Mart 2013 11:15

Cevap: Yetkilendirme
 
Alıntı:

Med Cezir Nickli Üyeden Alıntı (Mesaj 1041274443)
Koda yeterince yama yaptığımızı düşünüyordum :) Kodu denemedim sen dener sonucu bildirirsin. Ama aşağıda belirttiğim unsurları tamamen uygulaman gerekli, bunlardan kaynaklı bir hata oluşmasın

sohbetop.txt ve oyunop.txt oluşturup içine yetkili nickleri eklersin
sohbet kanalının op kanalı #sohbetop , oyun kanalının op kanalı #oyunop olmalı
#founder kanalında !atama #sohbet veya !atama #oyun kanalı olarak kullanılabilir.

Kod:

on *:text:!atama*:#founder: {
  if (!$istok(Nick Nick1 Nick2,$nick,32)) { halt }
  if $regex($2,/^(#sohbet|#oyun)$/i) {
    if $token($+(%,atama,.,$2),0,32) >= $nick($+($2,op),0) { unset %atama }
    if $read($+($right($2,-1),op,.,txt),w,$nick) { goto replay }
    else { msg $chan $2 kanalı yetkilisi değilsin işlem yapamazsın | halt }
  }
  else { msg $chan $2 kanalı erişim dahlinde değildir. | halt }
  :replay
  var %n = $nick($+($2,op),$rand(1,$nick($+($2,op),0)))
  if (%n isop $+($2,op)) || (%n ishop $+($2,op)) || (%n == $me) || ($istok($+(%,atama,.,$2),%n,32) == $true) { goto replay }
  /msg $+($2,op) " Badnick " kontrolü yapılıp bilgi verilsin lütfen atanan yetkili: $+(%n,))
  .set -e %atama $addtok(%atama,%n,32)
  /msg #founder - Liste kontrolü icin operatör atandı.
}
on *:Part:#: {
  if $chan == #sohbetop && $istok(%atama.#sohbet,$nick,32) == $true { $remove(%atama.#sohbet,$nick) }
  if $chan == #oyunop && $istok(%atama.#oyun,$nick,32) == $true { $remove(%atama.#oyun,$nick) }
}
on *:Quit: {
  if $istok(%atama.#sohbet,$nick,32) == $true { $remove(%atama.#sohbet,$nick) }
  if $istok(%atama.#oyun,$nick,32) == $true { $remove(%atama.#oyun,$nick) }
}
on *:Nick: {
  if $istok(%atama.#sohbet,$nick,32) == $true { $replace(%atama.#sohbet,$nick,$newnick) }
  if $istok(%atama.#oyun,$nick,32) == $true { $replace(%atama.#oyun,$nick,$newnick) }
}


Kodun çalışacağına eminim sağolasın şuan askerde oldugum için deneyemedim sunucu kapalı olduğu için, Deneyen var ise sonucunu yazarsa başkalarına da yararı olur.
İyi forumlar.

rX 07 Kasım 2013 03:55

Cevap: Yetkilendirme
 
Teşekkür ederim kod çalışıyor fakat istediğim kanal ismini aldıramadım $right ile nasıl yapacağım hakkında fikrimde yok açıkçası :)

$+($2,op) yerine $+($2,@) yaptım oluyor ama benim istediğim diyelim ki kanalın adı #IF-Sohbet bunu #Sohbet@ olarak aldırmak istiyorum fakat fazla parametre hatası alıyorum. $right($2,-2,-3,-4),@ şeklinde deneyince fazla parametre hatası alıyorum farklı bir yöntem var mıdır?

rX 06 Şubat 2014 11:15

Cevap: Yetkilendirme
 
Kod:

on *:text:!atama*:#founders: {
  if (!$istok(rX Read Nick2,$nick,32)) { halt }
  if $regex($2,/^(#KT-Sohbet|#KT-oyun|#KT-Kelime|#KT-Yarisma)$/i) {
    if $token($+(%,atama,.,$2),0,32) >= $nick($+($2,@),0) { unset %atama }
    if $read($+($token($2,2,45),@,.,txt),w,$nick) { goto replay }
    else { msg $chan $2 kanalı yetkilisi değilsin işlem yapamazsın | halt }
  }
  else { msg $chan $2 kanalı erişim dahlinde değildir. | halt }
  :replay
  var %:chan $+($chr(35),$token($2,2,45),$chr(64))
  var %n = $nick(%:chan,$r(1,$nick(%:chan,0)))
  if (%n isop %:chan) || (%n ishop %:chan) || (%n == $me) || $istok(Nick1 Nick2 Nick3,%n,32) { goto replay }
  .msg $+($chr(35),$token($2,2,45),$chr(64)) "4Badnick" 2kontrolü yapılıp bilgi verilsin lütfen. 4Atanan yetkili:5 $+(%n,))
  .set -e %atama $addtok(%atama,%n,32)
  .msg #founders - 2Liste kontrolü icin operatör atandı. 4Atanan yetkili:5 $+(%n,))
}
on *:Part:#: {
  if $chan == #sohbet@ && $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Sohbet,$nick) }
  if $chan == #Oyun@ && $istok(%atama.#oyun,$nick,32) == $true { $remove(%atama.#KT-oyun,$nick) }
  if $chan == #Kelime@ && $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Kelime,$nick) }
  if $chan == #Yarisma@ && $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Yarisma,$nick) }
}
on *:Quit: {
  if $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Sohbet,$nick) }
  if $istok(%atama.#KT-oyun,$nick,32) == $true { $remove(%atama.#KT-oyun,$nick) }
  if $istok(%atama.#KT-Kelime,$nick,32) == $true { $remove(%atama.#KT-Kelime,$nick) }
  if $istok(%atama.#KT-Yarisma,$nick,32) == $true { $remove(%atama.#KT-Yarisma,$nick) }
}
on *:Nick: {
  if $istok(%atama.#KT-Sohbet,$nick,32) == $true { $replace(%atama.#KT-Sohbet,$nick,$newnick) }
  if $istok(%atama.#KT-oyun,$nick,32) == $true { $replace(%atama.#KT-oyun,$nick,$newnick) }
  if $istok(%atama.#KT-Kelime,$nick,32) == $true { $replace(%atama.#KT-Kelime,$nick,$newnick) }
  if $istok(%atama.#KT-Yarisma,$nick,32) == $true { $replace(%atama.#KT-oyun,$nick,$newnick) }
}

Kod şu halde işlevi tamam fakat eksikliği var;

if (!$istok(rX Read Nick2,$nick,32)) { halt }

bu kısımdaki nickleri muaf tutmuyor atamaya dahil ediyor yetkili olduğunda dahil etmiyor atamaya sadece #Sohbet@ kanalındaki yetkisiz nickleri dahil ediyor ama arada muaf nickler de dahil oluyor ve diyelim #Sohbet@ kanalında X-System haricinde kullanıcı olmadığında mirci kasıyor kapanmasına sebep oluyor boş olduğunda kullanıcı olmadığında atama yapacak yönetici bulunamadı şeklinde yazması mümkün mü acaba?

TeknikShell 06 Şubat 2014 12:57

Cevap: Yetkilendirme
 
Alıntı:

rX Nickli Üyeden Alıntı (Mesaj 1041389309)
Kod:

on *:text:!atama*:#founders: {
  if (!$istok(rX Read Nick2,$nick,32)) { halt }
  if $regex($2,/^(#KT-Sohbet|#KT-oyun|#KT-Kelime|#KT-Yarisma)$/i) {
    if $token($+(%,atama,.,$2),0,32) >= $nick($+($2,@),0) { unset %atama }
    if $read($+($token($2,2,45),@,.,txt),w,$nick) { goto replay }
    else { msg $chan $2 kanalı yetkilisi değilsin işlem yapamazsın | halt }
  }
  else { msg $chan $2 kanalı erişim dahlinde değildir. | halt }
  :replay
  var %:chan $+($chr(35),$token($2,2,45),$chr(64))
  var %n = $nick(%:chan,$r(1,$nick(%:chan,0)))
  if (%n isop %:chan) || (%n ishop %:chan) || (%n == $me) || $istok(Nick1 Nick2 Nick3,%n,32) { goto replay }
  .msg $+($chr(35),$token($2,2,45),$chr(64)) "4Badnick" 2kontrolü yapılıp bilgi verilsin lütfen. 4Atanan yetkili:5 $+(%n,))
  .set -e %atama $addtok(%atama,%n,32)
  .msg #founders - 2Liste kontrolü icin operatör atandı. 4Atanan yetkili:5 $+(%n,))
}
on *:Part:#: {
  if $chan == #sohbet@ && $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Sohbet,$nick) }
  if $chan == #Oyun@ && $istok(%atama.#oyun,$nick,32) == $true { $remove(%atama.#KT-oyun,$nick) }
  if $chan == #Kelime@ && $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Kelime,$nick) }
  if $chan == #Yarisma@ && $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Yarisma,$nick) }
}
on *:Quit: {
  if $istok(%atama.#KT-Sohbet,$nick,32) == $true { $remove(%atama.#KT-Sohbet,$nick) }
  if $istok(%atama.#KT-oyun,$nick,32) == $true { $remove(%atama.#KT-oyun,$nick) }
  if $istok(%atama.#KT-Kelime,$nick,32) == $true { $remove(%atama.#KT-Kelime,$nick) }
  if $istok(%atama.#KT-Yarisma,$nick,32) == $true { $remove(%atama.#KT-Yarisma,$nick) }
}
on *:Nick: {
  if $istok(%atama.#KT-Sohbet,$nick,32) == $true { $replace(%atama.#KT-Sohbet,$nick,$newnick) }
  if $istok(%atama.#KT-oyun,$nick,32) == $true { $replace(%atama.#KT-oyun,$nick,$newnick) }
  if $istok(%atama.#KT-Kelime,$nick,32) == $true { $replace(%atama.#KT-Kelime,$nick,$newnick) }
  if $istok(%atama.#KT-Yarisma,$nick,32) == $true { $replace(%atama.#KT-oyun,$nick,$newnick) }
}

Kod şu halde işlevi tamam fakat eksikliği var;

if (!$istok(rX Read Nick2,$nick,32)) { halt }

bu kısımdaki nickleri muaf tutmuyor atamaya dahil ediyor yetkili olduğunda dahil etmiyor atamaya sadece #Sohbet@ kanalındaki yetkisiz nickleri dahil ediyor ama arada muaf nickler de dahil oluyor ve diyelim #Sohbet@ kanalında X-System haricinde kullanıcı olmadığında mirci kasıyor kapanmasına sebep oluyor boş olduğunda kullanıcı olmadığında atama yapacak yönetici bulunamadı şeklinde yazması mümkün mü acaba?

Senin verdigin o kisim !atama kpmutunu kullanan nickler onlarsa islem yapmasin icin. Telden girdigim icin fqzla goremedim ama muaf nick eklemek icin sanirim mirc klasoru icinde #kanal@.txt olup icine muaf nickleri yazmak #kanal@ ornekdi..


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 19:10.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk