The channel simulator

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 034 fois - Téléchargée 27 fois

Contenu du snippet

Ce petit programme permet de simuler le rejoignement d'un canal.
Il stock toutes les informations nécéssaires, puis ouvre un port, se connecte en local sur celui-ci, et simule un petit IRCd, où le /join sera reproduite.

J'ai surtout créé ça pour certaines personnes qui joignent et partent des canaux comme ça, par curiosité... ça saoule -_-

Source / Exemple :


;Simulation de canal :o
;The channel simulation
;by G-FACTION

alias simulate {
  if ($2) {
    set %simulation $true
    set %simulation.chan $1
    ;Recherche des informations avant la connexion en local
    set %names_lists 0
    set %who 0
    set %simulation.port $2
    mode $1
    who $1
    names $1
    topic $1
  }
}

alias simulation {
  if ($1 == close) {
    set %simulation $false
    sockclose chan_simulation
    sockclose %tsn
    unset %who*
    unset %names*
    unset %simulation*
  }
}

raw 324:*: {
  set %simulation.modes $3-
}

raw 329:*: {
  set %simulation.time $3-
}

raw 352:*: {
  inc %who
  set %who $+ %who $2-
}

raw 353:*: {
  inc %names_lists
  set %names $+ %names_lists $4-
}

raw 332:*: {
  set %simulation.topic $3-
  halt
}

raw 333:*: {
  set %simulation.user $3
  set %simulation.time $gettok($1-,4-,32)
  if (%simulation) {
    set %simulation $false
    socklisten chan_simulation %simulation.port
    server -m 127.0.0.1 %simulation.port
  }
  halt
}

raw 403:*: {
  if (%simulation) {
    set %simulation $false
    echo -a 2The channel12 %simulation.chan 2cannot be simulated, it doesn't exists
    halt
  }
}

on *:socklisten:chan_simulation: {
  set %tsn $sockname $+ $ctime
  sockaccept %tsn
  set %s %simulation.chan $+ .channel_simulation
  set %c %simulation.chan
  set %zz channel_simulation!user@channel_simulation
}

on 1:sockread:chan_simulation*: {
  sockread %sr
  tokenize 32 %sr
  if ($1 == NICK) {
    set %n $2
    set %f %n $+ !user@channel_simulation
  }
  elseif ($1 == USER) {
    sockwrite -tn $sockname : $+ %s NOTICE AUTH :*** You are connecting to Channel Simulation 1.0
    sockwrite -tn $sockname : $+ %s NOTICE AUTH :*** This program was made by G-FACTION
    sockwrite -tn $sockname : $+ %s NOTICE AUTH :*** Let's simulate %simulation.chan !
    sockwrite -tn $sockname : $+ %s 001 %n :Welcome to the chan_simulation IRC Network %f
    sockwrite -tn $sockname : $+ %f JOIN : $+ %c
    giveinfos $sockname
  }
}

alias giveinfos {
  if ($1) {
    sockwrite -tn $1 : $+ %s 332 %n %c : $+ %simulation.topic
    sockwrite -tn $1 : $+ %s 333 %n %c %simulation.user %simulation.time
    var %i 1
    while (%i <= %names_lists) {
      sockwrite -tn $1 : $+ %s 353 %n = %c : $+ %names [ $+ [ %names_lists ] ]
      inc %i
    }
    sockwrite -tn $1 : $+ %s 366 %n %c :End of /NAMES list.
    var %o 1
    while (%i <= %who) {
      sockwrite -tn $1 : $+ %s 352 %n %who [ $+ [ %i ] ]
      inc %i
    }
    sockwrite -tn $1 : $+ %s 315 %n %c :End of /WHO list.
    sockwrite -tn $1 : $+ %s 324 %n %c %simulation.modes
    sockwrite -tn $1 : $+ %s 329 %n %c %simulation.time
    sockwrite -tn $1 : $+ %zz PRIVMSG %c :Channel simulation finished
    sockwrite -tn $1 : $+ %zz PRIVMSG %c :This was made by G-FACTION (2qdeme@yahoo.fr)
    sockwrite -tn $1 : $+ %zz PRIVMSG %c :To close the channel simulation, type /simulation close
    sockwrite -tn $1 : $+ %zz PRIVMSG %c :Hope you enjoyed ;)
  }
}

Conclusion :


Tapez /simulate #channel, pour commencer la simulation
Une fois le canal simulé, tapez /simulation close

×××G-FACTION×××

A voir également

Ajouter un commentaire

Commentaires

Kerrigan
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005
-
c'est marant que ce code ne marche pas sur toutes les machines .. bref passons

je suis un peu perdu vis a vis de l'utilité je ne comprend vraiment pas a quoi ça sert.

Est ce que tu pourrais m'expliquer s'il te plait ?
VestaX
Messages postés
376
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
24 avril 2013
-
Mhouais!!! Le principe est bien, mais jpeux faire aussi bien avec moins de %var et avec beaucoup beaucoup moins de lignes de code.

Autrement bonne continuation 7/10
Greg3405
Messages postés
9
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2004
-
ça marche bien, mais effectivement le topic ne s'affiche plus à cause du halt dans raw 332

sinon, sur un chan de 50 personnes, il m'en manque une douzaine dans la simulation (apparemment le /who #chan renvoie pas tous les pseudos)
tempusus
Messages postés
363
Date d'inscription
dimanche 8 février 2004
Statut
Modérateur
Dernière intervention
9 octobre 2017
1 -
Source interressante mais encore trop buggée, enfin chez moi. Cependant, l'idée de la source est vraiment originale. essaye de l'ameliorer afin que cela fonctionne au mieux.

N'oublie pas de commenter ta source...

7/10

Cordialement

Tempusus
Admin CS
winwarrior
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1 -
Ben oui aparemment le script affiche aucun erreur ...
Pour que ça fonctionne faut que le salon existe et que le port soit pas déja pris, sans oublier que si le salon a pas de topic ... ça fonctionne pas (raw 333, raw qui renvoie la date à laquelle le topic à été mis)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.