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 !

THE CHANNEL SIMULATOR


Information sur la source

Catégorie :AddOns Niveau : Initié Date de création : 28/07/2004 Date de mise à jour : 28/07/2004 14:09:18 Vu : 2 432

Note :
7 / 10 - par 3 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

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

  • ;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 ;)
  • }
  • }
;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×××
 

Historique

28 juillet 2004 14:09:18 :
J'ai amélioré quelques défauts du code.

Commentaires et avis

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 07:12:06

Mal codé, il fait carrément foirer les autres serveurs apres (raws ...) ,Il est original mais n'est pas d'une grande utilité... tu devrais plutot éssayer de créer un serveur complet!

Bonne Continuation.

signaler à un administrateur
Commentaire de PaDa le 28/07/2004 08:40:29

moué
j'ai pas trop trop pigé a quoi ca servait ...
j'obtiens ca en status quand je l'utilise sur la connexion locale

* Connecting to 127.0.0.1 (562)
-
socklisten !
-
-#- *** You are connecting to Channel Simulation 1.0
-
-#- *** This program was made by G-FACTION
-
-#- *** Let's simulate #!lyon! !
-
Welcome to the chan_simulation IRC Network heine!user@channel_simulation
#g-faction End of /NAMES list.
-
#!lyon! End of /WHO list.
-
et pi tes 4 lignes de fin sur la fenêtre du "salon"
si tu veux je vois pas bien comment m'en servir ni ce que vient faire #g-faction la dedans... j'veux bien un éclaircissement héhé

signaler à un administrateur
Commentaire de GFACTION le 28/07/2004 12:22:06

winwarrior, t'inquiètes pas pour le serveur complet, j'en suis en train d'en créer un, il en est bientot à 7000 lignes de prog et il fera beaucoup de bruit...
Pour le fait de faire foirer les autres raws, non, ça ne fait rien foirer, car il ne fait que de set des variables, et pour la 333 il vérifie que %simulation est $true, mais tu peux faire cette vérification à toutes les raws de toute façon.
PaDa, pour ton problème, c'est pas normal, ça marchait pour toutes les personnes qui ont testé.

signaler à un administrateur
Commentaire de GFACTION le 28/07/2004 12:23:59

Aussi winwarrior, pourquoi est-il mal codé d'après toi ?
Développe, donne des arguments.

signaler à un administrateur
Commentaire de PaDa le 28/07/2004 12:39:57

oué je vois toujours pas trop comment m'en servir .
et puis ma dernière remarque c'était pour que tu corriges une erreur d'innatention :
sockwrite -tn $1 : $+ %s 366 %n #g-faction :End of /NAMES list
en
sockwrite -tn $1 : $+ %s 366 %n %c :End of /NAMES list ...
enfin j'me trompe ptet

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 13:04:10

Alors, il est mal codé car:
1) Des /set partout (Essait peut-être de le faire en hash table)
2) Je rentre sur un salon (sur un autre serveur) et j'ai le regret de voir que le topic n'est plus affiché (que ton serveur soit allumé ou pas) et que ça me connecte à ton serveur
3) Le port d'écoute est pas configurable (comme le reste de l'addon) et donc ça me marque * /socklisten: erreur liaison (mon port est déja utilisé)
4) Quand je ferme le serveur, les variables restent (script surchargé de varibles)
5) Inutile

Et voila je pense que j'ai tout dit!

signaler à un administrateur
Commentaire de GFACTION le 28/07/2004 14:05:23

Très juste PaDa.

"2) Je rentre sur un salon (sur un autre serveur)"
Ben ouais, tu veux faire comment autrement pour reproduire un /join ? lol
"j'ai le regret de voir que le topic n'est plus affiché", si il l'est arrête de fûmer :')
"(que ton serveur soit allumé ou pas)" > ça je comprends pas
"3) Le port d'écoute est pas configurable"
Oui, j'ai oublié de changer ça, j'ai fait ça cette nuit.. ben c'est facilement rajoutable dans le /simulate
Je suis désolé pour cette erreur
Pour le 4), il aurait fallut rajouter un unset %who* et unset %names*
"5) Inutile" Non, tu as peut être pas réalisé que ça sert à simuler des canaux sur lequels tu n'es pas monsieur winwarrior :)

signaler à un administrateur
Commentaire de GFACTION le 28/07/2004 14:10:12

Voilà j'ai modifié le code

signaler à un administrateur
Commentaire de tofu le 28/07/2004 14:36:12

j'ai beau taper /simulate #chan , rien s'ouvre, rien s'affiche, ça lance rien -_-`

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 15:07:02

Je rentre sur un salon (sur un autre serveur) et j'ai le regret de voir que le topic n'est plus affiché (que ton serveur soit allumé ou pas) et que ça me connecte à ton serveur <= ça fait parti de la meme phrase!

Comme tu as dit dans ton commentaire précedent "et pour la 333 il vérifie que %simulation est $true",
pas sur les raw 324,329,352,353

Apres mon topic ne s'affiche pas, non j'ai pas fumé, le raw 332 est bloqué par un "halt" et donc mon topic est pas affiché lorsque je join un salon

Et oui ton addon est inutile, simuler un salon ? tiens un simuleur de kick alias kick { echo 4 $1 $2 Vient de se faire kicker ( $+ $3- $+) | halt }

signaler à un administrateur
Commentaire de tofu le 28/07/2004 15:25:21

tfaçon tu le simule pas vrment le salon, vu que t'as une connexion en socket qui join làbas, autant y aller ns même ..

signaler à un administrateur
Commentaire de GFACTION le 28/07/2004 20:04:55

Vous n'avez pas compris.
tofu : justement c'est ce genre de gens qui me font chier à venir  et se casser d'un canal comme ça, je trouve ça impoli.
"Comme tu as dit dans ton commentaire précedent "et pour la 333 il vérifie que %simulation est $true",
pas sur les raw 324,329,352,353" > ben ouais, car là ça ne fait que de définir des variables, ça ne dérange pas, et puis si t'aimes pas tu rajoutes :)
Pour l'affichage de topic, chez moi ça marche, et en plus, j'ai fait ça dans un script, pas dans un mIRC vierge alors si ça marche pas...

De toute façon essayez de voir ça comme quelque chose qui pourrait aider les débutants, j'ai tout à fait conscience que c'est simple, c'est pas pour rien que je l'ai fait en 30m à la va vite.
C'est vraiment pas compliqué, et le but n'était pas de montrer ô combien je suis fort, vous n'auriez pas critiqué si je l'avais fait. Une source, si tu la postes c'est pas pour te faire admirer, mais pour aider les autres, apporter quelque chose d'innovant etc...
Alors arrêtez de critiquer pour rien, évoluez un peu, adoptez un esprit de communauté, et signalez plutôt des bugs, problèmes etc... ou améliorations.
C'est de pire en pire ircfr

signaler à un administrateur
Commentaire de Evrae le 28/07/2004 20:10:44

j'vais dire 2 choses:
- ok il est pas trop optimisé, mais winwarrior ptite info: hash tables ds ce cas la = double de ticks (testé et prouvé). alors les sets mets les toi ou j'pense
- tous ceux qui OSENT critiquer une source comme ca ne sont vraiment que des boulets, car franchement c'est pas mal...ya amélioration, comme partout, mais c'est bien...winwarrior j'tattend au tournant vas y montre moi une de tes sources meilleure que celle la?

(non) cordialement,
anima

signaler à un administrateur
Commentaire de PaDa le 28/07/2004 20:13:30

Ouép je vois ce que tu veux dire , chez moi ca marche pas trop , ou alors j'ai pas compris comment on s'en servait huhu ... après j'trouve que c'est un exemple simple de socket Irc et ca c'est bien pour débuter =)
cela dit une source simple c top quand elle est commentée éhéh

signaler à un administrateur
Commentaire de Evrae le 28/07/2004 20:23:08

PUTIN mais les commentaires, vous pouvez les faire vous meme, le but du code c'est (quand meme) de tenir sur le - d'espace, et la son code est simple et clair....

signaler à un administrateur
Commentaire de PaDa le 28/07/2004 20:25:02

c'est une proposition , t'as le droit de rester poli mon gros chu pas ton pote :)

signaler à un administrateur
Commentaire de PaDa le 28/07/2004 20:38:59

non sérieusement , je pense que cette source peut etre très intéressante , elle marchait po chez moi au début , après faut apprendre a relativiser les commentaires ... je crois que la ayé elle marche et bon moi qui suit pas a l'aise en sockets (j'en fais mais j'rame un peu ...) j'aime bien les exemples comme ca .. après chacun pense ce qu'il veut :p

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 20:41:27

GFACTION > Le but de mes critiques c'est d'améliorer ton script et pas te casser (si c'est ce que tu penses), ok mes critiques sont peut-être pertinentes mais c'est pas méchant!
Et ta remarque "Oui mais chez moi ça marche tres bien", si tu postes un script sur ircfr, assure toi qu'il fonctionne chez les autre...

Evrae > tu te prend pour qui pour me parler comme ça ? et c'est quoi ces menaces ? En plus tu dit des bêtises , les hash table sont plus rapide que les set ,et j'ai dit quelque part que j'était plus fort que quelqu'un ? non. et j'ai rien à te prouver.

@+ (ps: (Evrae) T'as le droit de rester respectueux)

signaler à un administrateur
Commentaire de tofu le 28/07/2004 20:58:50

"Alors arrêtez de critiquer pour rien, évoluez un peu, adoptez un esprit de communauté, et signalez plutôt des bugs, problèmes etc... ou améliorations."

moi je demande qu'on m'aide à le faire marcher, ça marche pas sur mon mIRC  et personne reply à ça,  c'est invisible mon post.

signaler à un administrateur
Commentaire de GFACTION le 28/07/2004 21:09:37

"Et ta remarque "Oui mais chez moi ça marche tres bien", si tu postes un script sur ircfr, assure toi qu'il fonctionne chez les autre..."

Et bien pourtant je l'ai fait tester par plusieurs personnes.

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 21:10:41

"winwarrior j'tattend au tournant" ... oui j'appelle ça une menace. apres je dit que cette source est inutile de mon point de vue ! chaqun son avis, vive la libertée d'expression !

@+

signaler à un administrateur
Commentaire de PaDa le 28/07/2004 21:13:25

tofu lol certaines trucs bugguent chez moi aussi ... on s'fait une partie de cartes ? :'( bref je survivrai bonne continuation tous =)

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 21:21:56

GFaction, Avec ton script:

[21:14] *** Now talking in #test
[21:14] ••• ········································
[21:14] ••• [#test] users- 9 total user(s)
[21:14] ••• [#test] users- 4 op(s) 44.44% - 5 other(s) 55.56%
[21:14] ••• ········································
Sans:
[21:16] *** Now talking in #test
[21:16] ••• ········································
[21:16] ••• [#test] topic- 'test'
[21:16] ••• [#test] topic- set by win (Thu 28nd Jul 2004 21:12)
[21:16] ••• [#test] users- 9 total user(s)
[21:16] ••• [#test] users- 4 op(s) 44.44% - 5 other(s) 55.56%
[21:16] ••• ········································

J'invente pas ... il y a un bug

@+

signaler à un administrateur
Commentaire de tofu le 28/07/2004 21:24:07

c'est même pas que ça bug, c'est que ça se lance pas du tout mais bon  ILS SONT TOP OQP  A SENGUEULER AU LIEU DE NS AIDER.
p-ê tu l'as fais tester  chez des mecs  et que ça marche, bah sur mon pc ça se lance pas du tout.

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 21:30:07

Désoler tofu, t'as bien tapé /simulate #channel <port> ?

Bon Scripting

signaler à un administrateur
Commentaire de tofu le 28/07/2004 21:34:57

oui, et ça m'affiche rien, rien se lance ni rien -_-`

signaler à un administrateur
Commentaire de winwarrior le 28/07/2004 21:39:47

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)

signaler à un administrateur
Commentaire de tempusus le 29/07/2004 08:14:43 administrateur CS

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

signaler à un administrateur
Commentaire de Greg3405 le 29/07/2004 13:01:46

ç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)

signaler à un administrateur
Commentaire de VestaX le 29/07/2004 19:40:24

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

signaler à un administrateur
Commentaire de Kerrigan le 30/07/2004 17:45:16

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 ?

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.