begin process at 2008 08 22 01:56:00
1 229 745 membres
17 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLONE KICKER ON JOIN


Information sur la source

Catégorie :Scripts Classé sous : clone, anti, kick Niveau : Débutant Date de création : 26/09/2007 Date de mise à jour : 01/12/2007 22:32:11 Vu : 3 998

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (34)
Ajouter un commentaire et/ou une note

Description

Et bien voila, j'apprécie le scripting et cela fait maintenant un mois que je script seulement.
j'en ai eu marre de voir des bots (clones) faire interruption dans mon channel...
c'est un script qui kick un clone quand il join mon channel ,donc.
C'est trés simpliste mais ça marche trés bien !
(je l'utilise sur cyanide-x donc il n'y a pas de possibilité que quelqu'un joigne avec deux fois le meme pseudo , ce qui fait de ce script qu'il est suffisant.)

Source

  • ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  • ;;;;;;;;;H;;;A;;;C;;;K;;;M;;;A;;;N;;;;;;;;;
  • ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  • ;YOU ONLY NEED TO LOAD THIS FILE ON A REMOTE WITH mIRC;
  • ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  • menu * {
  • Cl0NeKiCkEr
  • .Configuration : /clonekick
  • }
  • on *:start:{
  • if ($exists(htables) == $false) { mkdir htables }
  • hmake cloneconf 100
  • if ($exists(htables/cloneconf) == $false) {
  • hadd cloneconf Nghost 1
  • hadd cloneconf BAN 4
  • hadd cloneconf chan $null
  • hadd cloneconf nick $null
  • hadd cloneconf message $null
  • hsave cloneconf htables/cloneconf
  • }
  • hload cloneconf htables/cloneconf
  • }
  • alias clonekick { dialog -m clonekick clonekick }
  • dialog clonekick {
  • title Cl0neKicker : MADE BY HACKMAN[TeTa]
  • icon mirc.exe,18
  • size -1 -1 200 100
  • option dbu
  • tab "Channel", 10, 10 12 183 70
  • tab "Except", 20
  • tab "Message", 30
  • tab "Config +", 40
  • box "",1,5 0 192 97
  • check ": clonekick State ON/OFF",2,68 4 80 10
  • ;--------TAB10-------
  • text "Channel Used (with #):",11,12 30 80 10, tab 10
  • edit "",12,11 40 150 10, tab 10
  • list 13,11 50 150 40,sort vsbar tab 10
  • button "Add",14,161 50 30 10,push tab 10
  • button "Remove",15,161 60 30 10,push tab 10
  • ;--------TAB20-------
  • text "Exception (type the nick of the exeption :NEED TO BE ONLINE)",21,12 30 180 10, tab 20
  • edit "",22,11 40 150 10, tab 20
  • list 23,11 50 150 40,sort vsbar tab 20
  • button "Add",24,161 50 30 10,push tab 20
  • button "Remove",25,161 60 30 10,push tab 20
  • ;--------TAB30-------
  • text "Kick message",31,12 30 180 10, tab 30
  • text "you can type CLONE1 or CLONE2 on the message , those values will be replaced by the nicks of both clones (CLONE1 = kicked one)",32,12 38 180 20, tab 30
  • text "If you don't set one, it will use a default one ",34,12 51 180 10, tab 30
  • edit "",33,11 60 180 10, tab 30
  • ;--------TAB40-------
  • text "Max Clone Number Per Channel",41,20 30 170 10, tab 40
  • edit "",43,20 40 80 10, tab 40
  • text "Number Of Rejoin/Kick Before BAN",44,20 55 170 10, tab 40
  • edit "",45,20 65 80 10, tab 40
  • ;--------QUIT&SAVE-------
  • button "Close&Save",9,80 87 40 10,flat,ok
  • icon 4,160 2 20 20,mirc.exe,18,large
  • }
  • on *:dialog:clonekick:sclick:14:{
  • if ($did(12) isin $hget(cloneconf,chan)) { did -ra clonekick 12 Already on the list ! }
  • else {
  • hadd -m cloneconf chan $iif($hget(cloneconf,chan), $hget(cloneconf,chan) $+ $chr(32) $+ $did(12), $did(12))
  • }
  • did -r clonekick 13
  • didtok clonekick 13 32 $hget(cloneconf,chan)
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • }
  • on *:dialog:clonekick:sclick:15:{
  • hadd cloneconf chan $replacex($remove($hget(cloneconf,chan), $did(13).seltext), $chr(32) $+ $chr(32), $chr(32))
  • did -r clonekick 13
  • didtok clonekick 13 32 $hget(cloneconf,chan)
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • }
  • on *:dialog:clonekick:sclick:24:{
  • if ($address($did(22),4) isin $hget(cloneconf,nick)) { did -ra clonekick 22 Already on the list ! }
  • else {
  • hadd -m cloneconf nick $iif($hget(cloneconf,nick), $hget(cloneconf,nick) $+ $chr(32) $+ $address($did(22),4), $address($did(22),4))
  • }
  • did -r clonekick 23
  • didtok clonekick 23 32 $hget(cloneconf,nick)
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • }
  • on *:dialog:clonekick:sclick:25:{
  • hadd cloneconf nick $replacex($remove($hget(cloneconf,nick), $did(23).seltext), $chr(32) $+ $chr(32), $chr(32))
  • did -r clonekick 23
  • didtok clonekick 23 32 $hget(cloneconf,nick)
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • }
  • on *:dialog:clonekick:sclick:9:{
  • hadd cloneconf Nghost $did(43)
  • hadd cloneconf BAN $did(45)
  • if ($did(33) == $null) { hadd cloneconf message No Clones admitted *( $+(%,clone.nick1) & $+(%,clone.nick2) )* }
  • else { hadd cloneconf message $replace($did(33), CLONE1, $+(%,clone.nick1), CLONE2, $+(%,clone.nick2)) }
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • hsave cloneconf htables/cloneconf
  • }
  • on *:dialog:clonekick:edit:43:{
  • hadd cloneconf Nghost $did(43)
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • }
  • on *:dialog:clonekick:edit:45:{
  • hadd cloneconf BAN $did(45)
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • }
  • on *:dialog:clonekick:init:0:{
  • did -r clonekick 13
  • didtok clonekick 13 32 $hget(cloneconf,chan)
  • did -r clonekick 23
  • didtok clonekick 23 32 $hget(cloneconf,nick)
  • if (%CLONEKICK.State == ON) { did -c clonekick 2 }
  • if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  • else { did -e clonekick 2,9 }
  • did -r clonekick 43
  • didtok clonekick 43 32 $hget(cloneconf,Nghost)
  • did -r clonekick 45
  • didtok clonekick 45 32 $hget(cloneconf,BAN)
  • }
  • on *:dialog:clonekick:sclick:2:{
  • if $did(2).state == 1 { set %CLONEKICK.State ON | echo -a %CLONEKICK.Chan 4 clonekick : 2ON 6annoying $hget(cloneconf,chan) }
  • else { set %CLONEKICK.State OFF | echo -a %CLONEKICK.Chan 4 clonekick : 2OFF }
  • }
  • alias clonestart {
  • .who %clone.chan
  • var %nnick = 1
  • while (%nnick <= $nick(%clone.chan,0)) {
  • var %address = $address($nick(%clone.chan,%nnick),4)
  • hadd $+(clonekick,%clone.chan) %address $iif($hget($+(clonekick,%clone.chan),%address) == $null, $nick(%clone.chan,%nnick), $hget($+(clonekick,%clone.chan),%address) $+ $chr(32) $+ $nick(%clone.chan,%nnick))
  • tokenize 32 $hget($+(clonekick,%clone.chan),%address)
  • while ($0 > $hget(cloneconf,Nghost)) {
  • var %clone.nick1 = $1
  • var %clone.nick2 = $2
  • if (%address == $address($me,4)) || (%address isin $hget(cloneconf,nick)) { echo -a %clone.nick excepted | break }
  • hadd $+(clonekick,%clone.chan) %address $remove($hget($+(clonekick,%clone.chan),%address), $1)
  • $iif(!$($+(%,ban,$1),2),set -u10,inc) $+(%,ban,$1) 1
  • if ($($+(%,ban,$1),2) > $hget(cloneconf,BAN)) { ban -u30 %clone.chan $1 }
  • kick %clone.chan $1 $($hget(cloneconf,message),2)
  • tokenize 32 $hget($+(clonekick,%clone.chan),%address)
  • }
  • inc %nnick
  • }
  • }
  • alias clonejoin {
  • if (!$address(%clone.nick,4)) { .who %clone.chan }
  • var %address.join = $address(%clone.nick,4)
  • hadd -m $+(clonekick,%clone.chan) %address.join $iif($hget($+(clonekick,%clone.chan), %address.join) == $null, %clone.nick, $hget($+(clonekick,%clone.chan), %address.join) $+ $chr(32) $+ %clone.nick)
  • tokenize 32 $hget($+(clonekick,%clone.chan), %address.join)
  • while ($0 > $hget(cloneconf,Nghost)) {
  • var %clone.nick1 = $1
  • var %clone.nick2 = $2
  • if (%address.join == $address($me,4)) || (%address.join isin $hget(cloneconf,nick)) { echo -a %clone.nick excepted | return }
  • hadd $+(clonekick,%clone.chan) %address.join $remove($hget($+(clonekick,%clone.chan), %address.join), $1)
  • kick %clone.chan $1 $($hget(cloneconf,message),2)
  • tokenize 32 $hget($+(clonekick,%clone.chan),%address.join)
  • }
  • }
  • on *:join:*:{
  • if (%CLONEKICK.State == ON) {
  • if ($chan isin $hget(cloneconf,chan)) {
  • set %clone.nick $nick
  • set %clone.chan $chan
  • if ($nick == $me) {
  • var %nchan = 1
  • while ($gettok($hget(cloneconf,chan),%nchan,32)) {
  • .who $gettok($hget(cloneconf,chan),%nchan,32)
  • inc %nchan
  • }
  • hfree $+(clonekick,%clone.chan)
  • hmake $+(clonekick,%clone.chan) 1000
  • timer 1 1 clonestart
  • }
  • else { clonejoin }
  • }
  • }
  • }
  • on *:part:*:{
  • if (%CLONEKICK.State == ON) {
  • if ($chan isin $hget(cloneconf,chan)) {
  • var %address.part = $address($nick,4)
  • hadd $+(clonekick,$chan) %address.part $replace($removecs($hget($+(clonekick,$chan), %address.part), $nick), $chr(32) $+ $chr(32), $chr(32), $chr(32) $+ $null, $null)
  • }
  • }
  • }
  • on *:kick:*:{
  • if (%CLONEKICK.State == ON) {
  • if ($chan isin $hget(cloneconf,chan)) {
  • var %address.part = $address($knick,4)
  • hadd $+(clonekick,$chan) %address.part $replace($removecs($hget($+(clonekick,$chan), %address.part), $knick), $chr(32) $+ $chr(32), $chr(32), $chr(32) $+ $null, $null)
  • }
  • }
  • }
  • on *:quit:{
  • if (%CLONEKICK.State == ON) {
  • tokenize 32 $hget(cloneconf,chan))
  • var %chann = 1
  • var %chane = $($+($,%chann),2)
  • while (%chane) {
  • var %address.part = $address($nick,4)
  • hadd $($+(clonekick,%chane),2) %address.part $replace($removecs($hget($+(clonekick,%chane), %address.part), $nick), $chr(32) $+ $chr(32), $chr(32), $chr(32) $+ $null, $null)
  • inc %chann
  • var %chane = $($+($,%chann),2)
  • }
  • }
  • }
  • on *:nick:{
  • if (%CLONEKICK.State == ON) {
  • var %ncount = 1
  • while ($gettok($hget(cloneconf,chan),%ncount,32)) {
  • if ($newnick ison $gettok($hget(cloneconf,chan),%ncount,32)) {
  • var %address.change = $address($newnick,4)
  • hadd $+(clonekick,$gettok($hget(cloneconf,chan),%ncount,32)) %address.change $replace($hget($+(clonekick,$gettok($hget(cloneconf,chan),%ncount,32)), %address.change), $nick, $newnick)
  • }
  • inc %ncount
  • }
  • }
  • }
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;H;;;A;;;C;;;K;;;M;;;A;;;N;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;YOU ONLY NEED TO LOAD THIS FILE ON A REMOTE WITH mIRC;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
menu * {
  Cl0NeKiCkEr
  .Configuration : /clonekick
}

on *:start:{
  if ($exists(htables) == $false) { mkdir htables }
  hmake cloneconf 100
  if ($exists(htables/cloneconf) == $false) {
    hadd cloneconf Nghost 1
    hadd cloneconf BAN 4
    hadd cloneconf chan $null
    hadd cloneconf nick $null
    hadd cloneconf message $null
    hsave cloneconf htables/cloneconf
  }

  hload cloneconf htables/cloneconf
}


alias clonekick { dialog -m clonekick clonekick }
dialog clonekick {
  title Cl0neKicker : MADE BY HACKMAN[TeTa]
  icon mirc.exe,18
  size -1 -1 200 100
  option dbu
  tab "Channel", 10, 10 12 183 70
  tab "Except", 20
  tab "Message", 30
  tab "Config +", 40

  box "",1,5 0 192 97
  check ": clonekick State ON/OFF",2,68 4 80 10
  ;--------TAB10-------
  text "Channel Used (with #):",11,12 30 80 10, tab 10
  edit "",12,11 40 150 10, tab 10
  list 13,11 50 150 40,sort vsbar tab 10
  button "Add",14,161 50 30 10,push tab 10
  button "Remove",15,161 60 30 10,push tab 10
  ;--------TAB20-------
  text "Exception (type the nick of the exeption :NEED TO BE ONLINE)",21,12 30 180 10, tab 20
  edit "",22,11 40 150 10, tab 20
  list 23,11 50 150 40,sort vsbar tab 20
  button "Add",24,161 50 30 10,push tab 20
  button "Remove",25,161 60 30 10,push tab 20

  ;--------TAB30-------
  text "Kick message",31,12 30 180 10, tab 30
  text "you can type CLONE1 or CLONE2 on the message , those values will be replaced by the nicks of both clones (CLONE1 = kicked one)",32,12 38 180 20, tab 30
  text "If you don't set one, it will use a default one ",34,12 51 180 10, tab 30
  edit "",33,11 60 180 10, tab 30

  ;--------TAB40-------
  text "Max Clone Number Per Channel",41,20 30 170 10, tab 40
  edit "",43,20 40 80 10, tab 40
  text "Number Of Rejoin/Kick Before BAN",44,20 55 170 10, tab 40
  edit "",45,20 65 80 10, tab 40

  ;--------QUIT&SAVE-------
  button "Close&Save",9,80 87 40 10,flat,ok
  icon 4,160 2 20 20,mirc.exe,18,large
}

on *:dialog:clonekick:sclick:14:{
  if ($did(12) isin $hget(cloneconf,chan)) { did -ra clonekick 12 Already on the list ! }
  else {
    hadd -m cloneconf chan $iif($hget(cloneconf,chan), $hget(cloneconf,chan) $+ $chr(32) $+ $did(12), $did(12))
  }
  did -r clonekick 13
  didtok clonekick 13 32 $hget(cloneconf,chan)
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }
}
on *:dialog:clonekick:sclick:15:{
  hadd cloneconf chan $replacex($remove($hget(cloneconf,chan), $did(13).seltext), $chr(32) $+ $chr(32), $chr(32))
  did -r clonekick 13
  didtok clonekick 13 32 $hget(cloneconf,chan)
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }
}
on *:dialog:clonekick:sclick:24:{
  if ($address($did(22),4) isin $hget(cloneconf,nick)) { did -ra clonekick 22 Already on the list ! }
  else {
    hadd -m cloneconf nick $iif($hget(cloneconf,nick), $hget(cloneconf,nick) $+ $chr(32) $+ $address($did(22),4), $address($did(22),4))
  }
  did -r clonekick 23
  didtok clonekick 23 32 $hget(cloneconf,nick)
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }
}
on *:dialog:clonekick:sclick:25:{
  hadd cloneconf nick $replacex($remove($hget(cloneconf,nick), $did(23).seltext), $chr(32) $+ $chr(32), $chr(32))
  did -r clonekick 23
  didtok clonekick 23 32 $hget(cloneconf,nick)
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }
}
on *:dialog:clonekick:sclick:9:{
  hadd cloneconf Nghost $did(43)
  hadd cloneconf BAN $did(45)
  if ($did(33) == $null) { hadd cloneconf message No Clones admitted *( $+(%,clone.nick1) & $+(%,clone.nick2) )* }
  else { hadd cloneconf message $replace($did(33), CLONE1, $+(%,clone.nick1), CLONE2, $+(%,clone.nick2)) }
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }

  hsave cloneconf htables/cloneconf
}
on *:dialog:clonekick:edit:43:{
  hadd cloneconf Nghost $did(43)
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }
}
on *:dialog:clonekick:edit:45:{
  hadd cloneconf BAN $did(45)
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }
}
on *:dialog:clonekick:init:0:{
  did -r clonekick 13
  didtok clonekick 13 32 $hget(cloneconf,chan)
  did -r clonekick 23
  didtok clonekick 23 32 $hget(cloneconf,nick)
  if (%CLONEKICK.State == ON) { did -c clonekick 2 }
  if (!$hget(cloneconf,chan)) || (!$hget(cloneconf,Nghost)) || (!$hget(cloneconf,BAN)) { did -b clonekick 2,9 }
  else { did -e clonekick 2,9 }
  did -r clonekick 43
  didtok clonekick 43 32 $hget(cloneconf,Nghost)
  did -r clonekick 45
  didtok clonekick 45 32 $hget(cloneconf,BAN)
}
on *:dialog:clonekick:sclick:2:{
  if $did(2).state == 1 { set %CLONEKICK.State ON | echo -a %CLONEKICK.Chan 4 clonekick : 2ON 6annoying $hget(cloneconf,chan) }
  else { set %CLONEKICK.State OFF | echo -a %CLONEKICK.Chan 4 clonekick : 2OFF }
}



alias clonestart {
  .who %clone.chan
  var %nnick = 1
  while (%nnick <= $nick(%clone.chan,0)) {
    var %address = $address($nick(%clone.chan,%nnick),4)
    hadd $+(clonekick,%clone.chan) %address $iif($hget($+(clonekick,%clone.chan),%address) == $null, $nick(%clone.chan,%nnick), $hget($+(clonekick,%clone.chan),%address) $+ $chr(32) $+ $nick(%clone.chan,%nnick))
    tokenize 32 $hget($+(clonekick,%clone.chan),%address)
    while ($0 > $hget(cloneconf,Nghost)) {
      var %clone.nick1 = $1
      var %clone.nick2 = $2
      if (%address == $address($me,4)) || (%address isin $hget(cloneconf,nick)) { echo -a %clone.nick excepted | break }
      hadd $+(clonekick,%clone.chan) %address $remove($hget($+(clonekick,%clone.chan),%address), $1)
      $iif(!$($+(%,ban,$1),2),set -u10,inc) $+(%,ban,$1) 1
      if ($($+(%,ban,$1),2) > $hget(cloneconf,BAN)) { ban -u30 %clone.chan $1 }
      kick %clone.chan $1 $($hget(cloneconf,message),2)
      tokenize 32 $hget($+(clonekick,%clone.chan),%address)
    }
    inc %nnick
  }
}
alias clonejoin {
  if (!$address(%clone.nick,4)) { .who %clone.chan }
  var %address.join = $address(%clone.nick,4)
  hadd -m $+(clonekick,%clone.chan) %address.join $iif($hget($+(clonekick,%clone.chan), %address.join) == $null, %clone.nick, $hget($+(clonekick,%clone.chan), %address.join) $+ $chr(32) $+ %clone.nick)
  tokenize 32 $hget($+(clonekick,%clone.chan), %address.join)
  while ($0 > $hget(cloneconf,Nghost)) {
    var %clone.nick1 = $1
    var %clone.nick2 = $2
    if (%address.join == $address($me,4)) || (%address.join isin $hget(cloneconf,nick)) { echo -a %clone.nick excepted | return }
    hadd $+(clonekick,%clone.chan) %address.join $remove($hget($+(clonekick,%clone.chan), %address.join), $1)
    kick %clone.chan $1 $($hget(cloneconf,message),2)
    tokenize 32 $hget($+(clonekick,%clone.chan),%address.join)
  }
}

on *:join:*:{
  if (%CLONEKICK.State == ON) {
    if ($chan isin $hget(cloneconf,chan)) {
      set %clone.nick $nick
      set %clone.chan $chan
      if ($nick == $me) {
        var %nchan = 1
        while ($gettok($hget(cloneconf,chan),%nchan,32)) {
          .who $gettok($hget(cloneconf,chan),%nchan,32)
          inc %nchan
        }
        hfree $+(clonekick,%clone.chan)
        hmake $+(clonekick,%clone.chan) 1000
        timer 1 1 clonestart
      }
      else { clonejoin }
    }
  }
}
on *:part:*:{
  if (%CLONEKICK.State == ON) {
    if ($chan isin $hget(cloneconf,chan)) {
      var %address.part = $address($nick,4)
      hadd $+(clonekick,$chan) %address.part $replace($removecs($hget($+(clonekick,$chan), %address.part), $nick), $chr(32) $+ $chr(32), $chr(32), $chr(32) $+ $null, $null)
    }
  }
}
on *:kick:*:{
  if (%CLONEKICK.State == ON) {
    if ($chan isin $hget(cloneconf,chan)) {
      var %address.part = $address($knick,4)
      hadd $+(clonekick,$chan) %address.part $replace($removecs($hget($+(clonekick,$chan), %address.part), $knick), $chr(32) $+ $chr(32), $chr(32), $chr(32) $+ $null, $null)
    }
  }
}

on *:quit:{
  if (%CLONEKICK.State == ON) {
    tokenize 32 $hget(cloneconf,chan))
    var %chann = 1   
    var %chane = $($+($,%chann),2)
    while (%chane) {
      var %address.part = $address($nick,4)
      hadd $($+(clonekick,%chane),2) %address.part $replace($removecs($hget($+(clonekick,%chane), %address.part), $nick), $chr(32) $+ $chr(32), $chr(32), $chr(32) $+ $null, $null)
      inc %chann
      var %chane = $($+($,%chann),2)

    }
  }
}

on *:nick:{
  if (%CLONEKICK.State == ON) {
    var %ncount = 1
    while ($gettok($hget(cloneconf,chan),%ncount,32)) {
      if ($newnick ison $gettok($hget(cloneconf,chan),%ncount,32)) {
        var %address.change = $address($newnick,4)
        hadd $+(clonekick,$gettok($hget(cloneconf,chan),%ncount,32)) %address.change $replace($hget($+(clonekick,$gettok($hget(cloneconf,chan),%ncount,32)), %address.change), $nick, $newnick)

      }
      inc %ncount
    }
  }
}
27 septembre 2007 02:29:24 :
happy ? lol voila version 2.0beta lol
27 septembre 2007 02:34:36 :
v 2.0beta.
27 novembre 2007 23:19:02 :
Bon, je suis content d'avoir trouvé le temps pour affiner ce script... j'espère que cette V2f sera interressante... et pas trop critiquée =P
27 novembre 2007 23:21:45 :
Je suis content d'avoir trouvé le temps d'affiner ce script ... j'espère que cette v2f sera convenable ... et pas trop critiquée =P
27 novembre 2007 23:58:52 :
j'avais oublié le ON NICK event :/
27 novembre 2007 23:59:35 :
j'avais oublié le ON NICK event :/
28 novembre 2007 00:02:05 :
encore un petit oublie :/ desolé
28 novembre 2007 04:59:48 :
c'est OK, j'ai résolu mon problème avec le $chan dans l'event ON NICK ...
30 novembre 2007 14:26:10 :
Bon... mettre un ON PART event, c'est pratique et utile ! MAIS , si je ne met pas de ON QUIT .... :D voilà c'est fixé ... (j'ai kické une innocente comme ça LOL)
30 novembre 2007 14:50:12 :
encore un autre lag -_- je vais continuer de le mettre a jour pas de problème ...
30 novembre 2007 14:57:55 :
...no comment... une boucle infini de noob ..fixée
30 novembre 2007 20:43:58 :
cette update est l'une des plus grosse... J'ai rajouté un évennement ON KICK ... ET j'ai fixé un sacré lag a cause d'un timer manquant J'ai aussi fixé deux autres lags 'mineurs' mais suffisamment PAS MINEUR pour killer mon script lol
01 décembre 2007 06:52:01 :
un pov' $nick que j'avais oublié de remplacer par $knick ...
01 décembre 2007 22:32:11 :
quelques petit bugs découverts et fixés ... je vais continuer à tester cette source trés durement ... je la veux sans aucun soucis ... en même temps ... c'est le but :P
  • signaler à un administrateur
    Commentaire de uaip le 26/09/2007 15:02:22

    bonjour,
    bon, je ne vais pas tout refaire le code (je connais un certain isoka qui se ferait un plaisir de le faire :p ) mais il y a des erreurs.

    on *:join:#hackman:{
    w $nick
    set %nickt $nick($chan, 0)
    set %n 1
    set %nickclone $nick
    set %chan $chan
    timer 1 3 clonekiller
    }

    la dedans, remplace w par whois (mais sans utilité ici) et puis toutes ces vars, la, sont inutiles.
    un simple -> on *:join:#salon:clonekiller $nick $chan <- suffit.
    ensuite tu peux mettre 2 ou 3 vars dans l'alias, genre... bon, je te refais le code, il peux etre encore + optimisé, mais je reste dans l'esprit de celui que tu as voulu faire :

    alias -l clonekiller {
      var %n 1 | while (%n <= $nick($2,0)) {
        if ($1 != $nick($2,%n)) && ($1 != BitchBoT) && ($1 != hackman) {
          if ($address($1,2) == $address($nick($2,%n),2)) { k $2 $1 No Ghost admitted }
        }
        inc %n
      }
    }
    on *:join:#hackman:clonekiller $nick $chan

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 26/09/2007 15:17:12

    hooooo , hehe je ne savais pas comment passer les variables à l'alias !
    Et puis je tiens a dire que le whois est important !
    car quand quelqu'un join un channel , l'adresse ($address)
    n'est pas connu tant qu'il n'a pas parlé !
    Le whois est juste un moyen d'interagir avec l'utilisateur qui join le channel pour avoir son $address.

    sinon merci pour le passage des variables à l'alias c'est plus court ! ;)

  • signaler à un administrateur
    Commentaire de ISoKa le 26/09/2007 15:22:21

    Bonjour,

    Un anti-clones chouette chouette. Bon j'v encore passer pour un mechant mais bon...
    -code deja vu et revu
    -poster pour un code qui peux tenir en 6 lignes alors qu'il apporte rien de nouveau est-ce vraiment indispensable...
    -aucun parametrage possible (possibilité de ban auto si personne trop tetu, exeption, phrase de kick, etc...)

    ensuite comme le dit UAIP c mal codé de plus kan on poste un code pour la communauté je voi pas ce que :
    if (%nickclone != $nick(%chan, %n)) && (%nickclone != BitchBoT) && (%nickclone != hackman)
    vien faire là dedans les 2 dernieres conditions te sont toutes personnelles.
    fin bref revoi ton code je pense, modifie/devellope le pour en faire kelke chose qui puisse devenir interessant.

    P.S : UAIP dans ce cas whois j'm pas who est suffisant mais il est tout aussi inutil vu ke c fai auto on join :)

    ISoKa

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 26/09/2007 15:24:09

    hum , je me corrige ^^ , quand on join un channel et que des personne y sont deja , on ne peut pas avoir leur $address avant qu'ils ne parlent .... mais si on est deja present et que quelqu'un join , là on connait son $address ... désolé ...
    merci encore UAIP

  • signaler à un administrateur
    Commentaire de Panthouffle le 26/09/2007 15:24:28

    normalement quand tu es sur un chan et que quelqu'un le join tu est en mesure de récupérer son adresse directement avec $address, sinon y'a un autre commande fait exprès pour ça (que j'ai oublié..) cherche dans l'aide de mirc ^^

  • signaler à un administrateur
    Commentaire de ISoKa le 26/09/2007 15:24:48

    pour repondre à hackman_teta non le whois est pas indispensable. tu ne connais pas l'adresse d'une personne seulement si tu joins aprés elle, mais te suffit de faire un who $chan sur ton join et comme ca c réglé d'office. et de toute facon koikil en soit le whois n'a pas d'interet kom j'ai di avant un who suffit.

  • signaler à un administrateur
    Commentaire de uaip le 26/09/2007 15:26:51

    lol t'énerve pas, je voulais juste t'aider ^^.
    sinon pour le whois.. j'avais jamais entendu parler de ca...
    d'ailleurs j'ai fait un petit test :
    [15:20:38] * TwiX rejoint le salon #Scripts.
    {là, j'ai tapé //echo -a $address(TwiX,2) et j'obtiens en echo : *!*@1b53940.lu }
    voila.. ptetre je me trompe, mais dans tous les cas, même si tu fais ton whois, n'oublies pas 2 choses :
    - d'abord remplace w par whois, pask toi tu as peut etre l'alias /w /whois $$1 mais tout le monde ne l'a pas x)
    - mets un point devant, pour cacher l'action (.whois) et d'ailleurs je t'encourage a faire de même avec tes timers (peu importe le code) pour ne pas avoir * Timer 1 activated / * Timer 1 halted a chaque fois.

    voila, donc ca c'était pour l'optimisation, et sinon si tu veux l'améliorer un peu, vire ton #salon et tes noms de bots, et fais un truc configurable.

    Ne jamais oublier que lorsqu'on poste une source, on fait en sorte qu'elle marche pour le monde sans qu'il ait besoin d'y toucher... dans la tienne on doit changer des trucs, c'est pas top
    bonne continuation.

  • signaler à un administrateur
    Commentaire de uaip le 26/09/2007 15:28:24

    arf, j'avais vu tous ces nouveaux comms... j'suis a la masse, maintenant ^^

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 26/09/2007 15:30:11

    ISoKa ,
    si j'ai mis un code aussi simple ici , c'est parce que justement , on ne trouve que des scripts complexes ;
    complets ,c'est sure , mais au cas où quelqu'un chercherait un truc simple c'est pas donné ! ;)

    L'histoire de la condition IF personnel , c'est vrai , mais
    si je l'ai laissé c'est pour que si quelqu'un ne connaissant pas trop voit ça , il puisse l'utiliser aisemment même s'il a un bot sur son channel...il n'aura alors qu'a remplacer les deux nick par les nicks désirés.
    merci pour votre attention et vos conseils :)

  • signaler à un administrateur
    Commentaire de uaip le 26/09/2007 15:31:55

    bah fais un mini dialog pour mettre quelques noms de bots, puis un edit pour mettre le nom du salon :)
    ca prend 2sec ^^

  • signaler à un administrateur
    Commentaire de ISoKa le 26/09/2007 15:35:46

    bin justement on doit faire des codes pour la blonde de base ^^ je m'explik : un truc ou mm si on y connait rien on peu tout paramétrer et là pour param ton code dsl mais j'connai pleins de blondes (kasi toutes :) ) ki en sont imcapable. ensuite pour le truc du code simple pck on ne trouve que des codes complexes c'est pas vrai y a des ptis codes trés simple et super originaux sur ce site. de plus les gens ki viennent chercher un code ici c'est pck ils ont un besoin me semble t'il et dc ils cherchent un truc fonctionel en l'etat et optimal c'ki est pas le cas présentement.

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 26/09/2007 15:38:43

    bon , bah vu que ça plait pas j'ai cherché le bouton supprimer ... pas moins de le trouver ... ça evitera que je vous fasse perdre du temps !
    je demande à un admin de kicker ce script promptement

  • signaler à un administrateur
    Commentaire de uaip le 26/09/2007 15:40:26

    sinon tu aurais du faire comme moi, poster ton code dans le bar, pour demander des avis... mais sinon perso ca me gène pas de voir des ptits codes "faciles" ici, parce-qu'on a tous le droit de débuter, et puis ca montre que tout le monde n'est pas "au top", mais le mieux, c'est que tu t'entraines tout seul, et le jour ou tu as un vrai code originl et complexe, là tu peux le poster.
    (si tu savais le nombres de ptits codes comme le tiens que j'ai en stok, et que j'ai jamais posté ^^, genre des horoscopes, des stats, des news, etc, les trucs classiques, quoi)

  • signaler à un administrateur
    Commentaire de uaip le 26/09/2007 15:41:15

    non ne supprime pas

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 26/09/2007 15:59:08

    bah je voudrais bien ....  -_-  je ne trouve pas comment ...

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 27/09/2007 02:30:59

    alors la V2Beta ? Heureux?
    Bon c'est mieux mais je vais encore le bosser

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 27/09/2007 02:41:20

    haa! oui j'oubliai ...
    j'ai une erreur du type "* /if: close bracket not found"
    avec ce code O_o .
    il fonctionne parfaitement ..mais il m'affiche ça..et pas moyens de trouver un bracket manquant...
    Sinon je vais aussi ajouter le parametrage du timer de unban
    et du nombre de tentative de rejoind..etc mais là je me penche sur le bracket ...
    ===
    pour Bien Plus Tard : Multi-channel supporté à ajouter
    ===

  • signaler à un administrateur
    Commentaire de tofu le 27/09/2007 11:23:23

    personnellement je trouverais ça beaucoup plus judicieux de créer une table de hachage avec comme clé l'userhost, et comme valeur le pseudo correspondant. comme ça, sur le join t'as juste à comparer l'userhost qui entre avec les clés de la table et si il y a une correspondance ça permet de kick/ban plus facilement l'user qui vient d'entrer mais aussi le clone par la même occasion. d'autre part, ça permettrait aussi de pouvoir faire évoluer le script si le besoin s'en faisait ressentir avec une limite plus élevée (du genre je veux autoriser un clone mais pas deux) puisqu'il y aurait juste à scanner le nombre de pseudos présents dans la valeur correspondant à la clé et hop rulez...

    donc oui tu veux faire un truc "simple", mais pour autant je trouve que l'algorithme choisi n'est pas le bon pour la réalisation concrète..

  • signaler à un administrateur
    Commentaire de ISoKa le 27/09/2007 12:55:32

    Bonjour,

    -Tu mets un dialog poste un imp ecran de ton dialog k'on voi un peu à koi ca ressemble
    -Tu mets une edit pour la liste des pseudo en exeption une listbox serai mieu je pense
    -de meme tu devrais donner la possibilitéde gerer aussi bien l'ahout que la supression d'une exeption via ton dialog.
    -Tu devrai donner la possibilité de faire des exeptions par adresse aussi
    -de facon générale que ce soit par adresse ou pseudo tu devrai donné la possibilité de poser des masks avec wildcard pour les exeptions
    -kom l'a di ToFu tu devrais gerer tout ca avec des htables pck tes exeptions par fichier texte si la liste s'allonge ca risk de pas etre optimal.

    pour le code :
    -regroupe tes on dialog ca serai plus propre kan mm

    -var %countnick = $calc($count($did(6), $chr(32)) +1)
    devient
    var %countnick = $numtok($did(6),32)

    -les "/" ne servent à rien

    -.Enable on last( %CLONEKICK.Chan ) : set %CLONEKICK.State ON | /msg %CLONEKICK.Chan 4 clonekick : 2ON 6to %CLONEKICK.Chan
    .Disable : set %CLONEKICK.State OFF | /msg %CLONEKICK.Chan 4 clonekick : 2OFF 6to %CLONEKICK.Chan
    est ce vraiment util pour les user lambda de voir ke le mec mets son anti-clone ? un echo aurai ptete été j'pense.

    -tu mets une liste d'exeption mais quand tu ouvres ton dialog tu ne charge pas cette liste dans le dialog donc mm si on passe genre 3h a rentré toute nos exeptions si la foi d'aprés on en rentre juste une vu que tu fais un write -c on perd tout ce k'on a fai avant. tu devrais remedier à ca.

    -sur le join tu as :
    #  while (%n <= $nick($chan, 0)) {
    #
    # if ($nick != $nick($chan, %n)) && (!$read(CLONEKICK.txt, s, $nick)) {

    la condition du $read ne depend pas de la boucle vu ke les criteres pour selui ci sont figé ($nick) alors pk tu ne le sors pas de la boucle ca te ferai economiser des tests inutils genre
    # if (!$read(CLONEKICK.txt, s, $nick)) {
    #  var %n 1
    #  while (%n <= $nick($chan, 0)) {
    #   if ($nick != $nick($chan, %n)) {

    sinon tu as retravaillé ton code au lieu du "vous m'aimez pas alors je m'en vai" ce qui est kan mm bcp plus constructif dc rien ke pour ca c'est deja un bon debut : )

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 27/09/2007 13:10:04

    je NE veux PAS kicker les deux clones ! je veux juste que dans mon channel il n'y en ai pas deux ....
    Et puis les hashTables je connais pas dutout et ce serai plu si simple ... et peut-etre surtout que ça ne collerai plus du tout avec mon niveau DEBUTANT :)

  • signaler à un administrateur
    Commentaire de tofu le 27/09/2007 15:01:38

    peut-être mais là c'est tellement "simple" que c'est erroné étant donné que tu match sur des userhost pour kicker des clones mais tu match sur des pseudos pour les exceptions...

    et pour le kick des deux clones, c'est une éventualité tout comme le fait de mettre une limite plus haute. j'ai bien précisé par la suite que dans l'éventualité d'une amélioration/modification de la part de la personne qui voudrait prendre ta source comme appuit pour s'en servir dans son script ça lui faciliterait la vie.

    autant prendre de bonnes habitudes de programmation dès le début, sinon quand tu passeras à des projets plus gros tu figeras tout aussi et quand tu devras revenir dessus tu te diras "oh il faut que je refasse tout le noyau de mon appli, dmg je vais devoir y passer 2mois alors que si j'avais réfléchis en amont j'y passerais une demi journée aujourd'hui".

    bref , coder c'est bien, conceptualiser et réfléchir en amont avant de faire des lignes de code c'est mieux ! ;-)

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 27/09/2007 15:23:39

    mais si je bloque les 'pseudos' a ne pas kicker par les userhost et que quelqu'un essaye de se connecter depuis un autre poste que celui habituel , il va être kické ...
    je comprend que le fait de kicker par userhost et de faire des exception par nick n'est pas trés rigoureux ...
    mais nomralement un Bot (car les exceptions sont surtout pour eux) ne change pas de nick ....
    Et pour l'histoire des kick Multi-clones et des possibilités de changer le nombre autorisé ... j'ai compris où tu voulais en venir merci. je gerde ça en tête.
    Pour le moment je ne vais pas avoir le temps de modifier ma source car je suis en train de mettre à jour mon Bot pour Kingsofchaos qui va bientôt changer d'age ... donc je ferai ça plus tard...

  • signaler à un administrateur
    Commentaire de uaip le 27/09/2007 15:59:56

    Désolé, j'ai lu seulement les messages de hackman_teta_, donc peut etre que je vais etre redondant, mais :
    <quote>
    Et puis les hashTables je connais pas dutout et ce serai plu si simple ... et peut-etre surtout que ça ne collerai plus du tout avec mon niveau DEBUTANT :)
    </quote>
    -> euh... les hashtables, ca reste du niveau débutant, hein...
    ----------
    <quote>
    Sinon je vais aussi ajouter le parametrage du timer de unban
    </quote>
    -> pas besoin de timer, suffit que tu précise dans ta commande de ban /ban -uN (N = le temps du ban en secondes).
    ----------
    et sinon, ué, regroupe ton dialog, là...
    mais bon, pour rester positif, franchement j'ai été agréablement surpris en voyant ta v2.0, mine de rien, en 1coup, tu as rajouté plein d'options a ton code... et tu verras que là on est en train de te "faire ch*er" mais tu seras fier dans 2 ou 3 jours que tu sauras gérer un dialog, une hashtable, etc... et là tu nous remercieras ^^ (je ne m'inclue pas dans le "nous", je résume tous ceux qui participent a ce post)

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 27/09/2007 17:15:25

    merci UAIP ,
    et merci pour le ban -uN  , connaissais pas .. super pratique !
    Sinon , à part le help de mIRC , quelqu'un pourrait-il m'indiquer un BON tuto sur les hashtables alors ?
    =P

  • signaler à un administrateur
    Commentaire de uaip le 27/09/2007 17:24:57

    euh.. j'explique très mal, mais j'ai tenté de faire un petit tuto sur www.uaipcreations.ovh.org
    vas voir par la, sinon ici je crois qu'il n'y a pas de tuto...

  • signaler à un administrateur
    Commentaire de tofu le 27/09/2007 17:26:45

    Alors au niveau des tables de hachage, celles implémentées dans mIRC sont plus restrictives que les "vraies" tables donc ça sera pas forcément top d'aller chercher des infos sur google ou autre sites généralistes (ça peut donner le concept et une vision globale mais si tu veux rentrer dans des particularités tu risques de tomber sur des cas non implémentés dans mIRC...)

    personnellement à l'époque où je scriptais dans mIRC j'ai appris avec ce tutoriel: http://scriptsdb.org/tutar.php?id=136

    puis bah après si tu veux quelques exemples concrets, j'ai déposé quelques sources ici utilisant des tables de hachages de manière assez simple, et sur des sites comme scriptsdb il me semble que dans les snippets ou certains addons il y a des tables de ce genre pas trop compliquées à aborder (juste en faisant une recherche sur le mot "hashtable" sur le site ça devrait te sortir des résultats pertinents)

    puis après si t'as des questions sur des points précis, hésites pas à utiliser le forum ;-)

  • signaler à un administrateur
    Commentaire de uaip le 27/09/2007 17:29:44

    ué, suis plutot les conseils de TOFU parce que je viens de relire mon tuto, et il est plutot a chier  >_<
    (c'est plutot un exemple qu'autre chose)

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 27/09/2007 17:32:37

    ok merci je regarderai tout ça , c'est sympa... :P

  • signaler à un administrateur
    Commentaire de wims le 27/09/2007 19:55:36

    Pour les $did().state, pas besoin de vérifié si ça vaut 1 ou 0, seulement si ça existe : if ($did(id).state) { command }

    var %countnick = $calc($count($did(6), $chr(32)) +1)

    quand tu veux setté une variable qui contient uniquement une seul opérande, le $calc n'est pas nécéssaire, et ici, ton $count est vraiment mauvais car si on rentre 6 espace, il va faire si boucle alors qu'il n'y aura pas de nick, utilise plutot $numtok($did(6),$chr(32)) : var %countnick = $numtok($did(6),$chr(32)) + 1
    Dailleur, cette 3e partie peux s'optimiser en une ligne :

    tokenize 32 $did(6) | write clonenick.txt $* 1

    Bien sur ceci n'est vrai que pour ton code actuel, si tu prend en comte la remarque de Isoka (concernant la suppression des config) je ne sais pas si tu pourra utilisé ça.

    le switch -u dispo pour /ban est aussi valable pour /set, donc ton timer est inutile :)



  • signaler à un administrateur
    Commentaire de Maxou1012 le 24/10/2007 14:54:38 4/10

    - un simple $address($nick,2) aurait suffit
    - on ban mais on ne kick pas .. (kick $chan $nick)
    - if ($nick != $nick($chan, %n)) && (!$read(CLONEKICK.txt, s, $nick))
      Là je comprend pas ?? un if ( $address($nick($chan, %n)),2) == $address($nick,2)
      aurait été mieu !

    Pour le reste Niveau dialog tout ça c'est correct !

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 27/11/2007 23:38:33

    Bon et bien voici la dernière modif ....
    c'est vraiment plus le même script .. j'ai tout repris depuis le début...
    j'attend vos appréciations maintenant :P

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 28/11/2007 00:13:31

    j'ai un petit problème avec le dernier évenement ...
    IL EST FAUX ... à cause du fait que $chan ne veut rien dire ici ... mais comment puis-je faire ?

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 28/11/2007 05:01:23

    Non , c'est bon .... j'ai trouvé un moyen de contourner mon problème :P

  • signaler à un administrateur
    Commentaire de hackman_teta_ le 01/12/2007 00:23:21

    bon je vais donc essayer de changer un petit ON JOIN event sur moi ($me)
    par un Raw event alors on verra par la suite ... sinon je continu d'attendre avec inpatience vos critiques !
    MERCI <3

Ajouter un commentaire

Discussions en rapport avec ce code source

Bot Anti-clone par shadowsexpect

anti kick ? par morgandetoi06

recherche anti-ban anti-kick.... par TaitsuO

Aidez moi par reva94

Anti Kick par DetaX

Protection sur quakenet par recover512

cherche script ou addon anti-kick special par pipou30

Anti flood par Zqokmi

Anti mass kick par Milk0z

anti clone par sylveur

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS