Konu: Çözüldü Seslenme Remotesi
Tekil Mesaj gösterimi
Alt 28 Aralık 2025, 21:45   #9
Çevrimiçi
Ali
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Seslenme Remotesi




Selamlar, kodundaki temel sorun isin operatörünü kullanman. isin operatörü, belirttiğin kelimeyi cümlenin herhangi bir yerinde (başında, sonunda veya başka bir kelimenin içinde) gördüğü an tetiklenir. "Hatay" yazdığında içindeki "ata"yı yakalamasının sebebi budur.
Bunu çözmek için Wildcard (Joker karakter) eşleşmesi yapan iswm operatörünü kullanmalıyız ve aradığın nicklerin önüne/arkasına boşluk veya noktalama işaretlerini de kapsayacak bir mantık kurmalıyız. Ancak daha kesin çözüm, $istok (item in token) tanımlayıcısını kullanmaktır.
Aşağıdaki güncellenmiş kod, sadece belirttiğin kelimeler ayrı bir kelime olarak geçtiğinde tetiklenir.


PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
   on *:text:*:#:{
  
Aranacak kelimeleri bir değişken olarak tanımlayalım (kolay düzenleme için)
  ; 
Buraya istediğin nickleri/kelimeleri ekleyebilirsin.
  var %
arananlar $me mekansiz mekansız Ata DJ^Ata Ata'Away

  ; $istok komutu cümlenin içindeki her kelimeyi tek tek kontrol eder
  ; $1- içindeki kelimelerden herhangi biri %arananlar listesinde var mı diye bakar.
  
  var %i = 1
  while ($gettok(%arananlar, %i, 32)) {
    var %v = $v1
    if ($istok($1-, %v, 32)) {
      if (!$window([MENTION=153575]Seslen[/MENTION]me)) { window -en [MENTION=153575]Seslen[/MENTION]me }
      echo -tm [MENTION=153575]Seslen[/MENTION]me $chan - $nick - $1-
      halt ; Bir kere bulduysa durması için
    }
    inc %i
  }


Neler Değişti?
• $istok Kullanımı: Bu fonksiyon, cümlenin içindeki "Hatay" kelimesini bir bütün olarak görür ve içinde "Ata" geçse bile onu "Ata" ile eşleştirmez. Sadece tam olarak "Ata" yazıldığında tetiklenir.
• Dinamik Liste: DJ^Ata veya Ata'Away gibi özel karakterli nickleri %arananlar kısmına ekledim. Artık sadece bu tam kelimeler geçtiğinde bildirim alacaksın.
• Hata Önleme: Cümle içinde hem "Ata" hem "mekansız" geçerse pencereye iki kere yazmasın diye halt eklendi.
Eğer büyük/küçük harf duyarlılığı olsun istersen (yani sadece Ata yazınca çalışsın, ata yazınca çalışmasın istersen), kodun içindeki karşılaştırma mantığını cs (case-sensitive) ekleri ile değiştirebiliriz.
Bu kodun çalışmasını test etmek için bir arkadaşından "Selam Ata" ve "Selam Hatay" yazmasını isteyebilirsin; sadece ilkinde @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]me penceresine düşecektir.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet bizimmekan reklamver