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/)
-   -   İki kod birleştirme (https://www.ircforumlari.net/mirc-scripting-sorunlari/550043-iki-kod-birlestirme.html)

OricinaL 04 Ekim 2013 12:35

İki kod birleştirme
 
Selam Arkadaşlar,
elimdeki mircdeki 2 kod çakışıyor kodlardan biri nick renkli yazma kodu diğeri ise noktalama işaretleri. forumdaki benzer konuları incelememe rağmen kendim yapmayı başaradım yardımcı olabilirseniz sevinirim.
noktalama işaretleri kodu;

on *:input:*:{
if (!$regex($left($1,1),/^!|[./]|/|/i/)) {
say $wn($1-) | halt
}
}
alias wn return $replace($+($regsubex($regsubex($1-,/([.,;,!,+,*,?,{,},=,-,:,',^,%,&,/,_,~,`,"])/g,$+(,$yr,\t,,$chr(15))),/([A-Z])/g,\t),),$chan,$+(<,,$yr,,$chan,,,>))
alias yr return 12

nick renkli yazma kodu;

if (/* iswm $1) { return }
var %a 0, %b, %c
while (%a < $numtok($1-,32)) {
inc %a
%c = $gettok($1-,%a,32)
if ($remove(%c,!,?,:,;,.,$chr(44),?) ison #) { %b = $iif(%b,%b) $+(4,%c,) }
else { %b = %b %c }
}
if (!%b) { %b = $1- }
say %b
halt
}
}


Bu iki kodu birleştirip tek kod haline getirebilmeniz mümkünmü acaba, şimdiden teşekkür ederim.

Feragat 04 Ekim 2013 16:39

Cevap: İki kod birleştirme
 
Alıntı:

OricinaL Nickli Üyeden Alıntı (Mesaj 1041348882)
Selam Arkadaşlar,
elimdeki mircdeki 2 kod çakışıyor kodlardan biri nick renkli yazma kodu diğeri ise noktalama işaretleri. forumdaki benzer konuları incelememe rağmen kendim yapmayı başaradım yardımcı olabilirseniz sevinirim.
noktalama işaretleri kodu;

on *:input:*:{
if (!$regex($left($1,1),/^!|[./]|/|/i/)) {
say $wn($1-) | halt
}
}
alias wn return $replace($+($regsubex($regsubex($1-,/([.,;,!,+,*,?,{,},=,-,:,',^,%,&,/,_,~,`,"])/g,$+(,$yr,\t,,$chr(15))),/([A-Z])/g,\t),),$chan,$+(<,,$yr,,$chan,,,>))
alias yr return 12

nick renkli yazma kodu;

if (/* iswm $1) { return }
var %a 0, %b, %c
while (%a < $numtok($1-,32)) {
inc %a
%c = $gettok($1-,%a,32)
if ($remove(%c,!,?,:,;,.,$chr(44),?) ison #) { %b = $iif(%b,%b) $+(4,%c,) }
else { %b = %b %c }
}
if (!%b) { %b = $1- }
say %b
halt
}
}


Bu iki kodu birleştirip tek kod haline getirebilmeniz mümkünmü acaba, şimdiden teşekkür ederim.

Kod:

on *:input:*:{
  if (!$regex($left($1,1),/^!|[./]|/|/i/)) {
    var %a 0, %b, %c
    while (%a < $numtok($1-,32)) {
      inc %a
      %c = $gettok($1-,%a,32)
      if ($remove(%c,!,?,:,;,.,$chr(44),?) ison #) { %b = $iif(%b,%b) $+(4,%c,) }
      else { %b = %b %c }
    }
    if (!%b) { %b = $1- }
    say $wn(%b)
    halt
  }
}

alias wn return $replace($+($regsubex($regsubex($1-,/([[:punct:]])/g,$+(,$yr,\t,,$chr(15))),/([A-Z])/g,\t),),$chan,$+(<,,$yr,,$chan,,,>))
alias yr return 12


Difuzyon 05 Ekim 2013 22:51

Cevap: İki kod birleştirme
 
Merhaba Feragat,

Doğruya biraz daha yaklaşmak adına bilgi paylaşım yapmak istedim...

Kodda ki regex kısmı sırıtıyor (Kulakların çınlasın biraz @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ) , böyle bir tanımlama olmaz. Ki seninde bunu copy/paste geçmeden önce farketmen daha doğru olur. Mutlaka regex'mi kullanmalıyız? Hayır, bir $istok sorgusu (/,.,!) bunları aşmaya yeter.

Kodlamada bir while döngüsü var ve bence bunu egale etmek adına regsubex kullanmak doğru ve önerim \S+ (kelime haznesi) kullanmak, burdan çıkacak sonuçları "nick'mi değil mi?" kendi içinde $iif operatörünü kullanarak (if-else) nickse renklendir, değilse normal aktar ve peşinden 2.regsubex ile noktalama işaretlerinin sonuçlarını yansıtabilirsin.

Ekstra olarak INPUT event'ında kanal/özel (*) ayrışmasını sağlamamız daha doğru olur kanısındayım.

Kod:

on *:input:*:{
  if !$istok(/ ! .,$left($1,1),32) {
    if $window($active).type == channel { msg $active $regsubex($regsubex($1-,/(\S+)/g,$iif(\1 ison #,$+(04,\1,,),\1)),/([[:punct:]])/g,$+(12,\1,,)) }
    elseif $window($active).type == query { msg $active $regsubex($regsubex($1-,/(\S+)/g,$iif(\1 == $active,$+(04,\1,,),\1)),/([[:punct:]])/g,$+(12,\1,,)) }
    halt
  }
}



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

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net