RECORD AFFLUENCE MULTI-SALON

WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 - 7 mai 2009 à 11:25
extarsik Messages postés 5 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 10 juillet 2020 - 29 mai 2009 à 21:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49978-record-affluence-multi-salon

extarsik Messages postés 5 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 10 juillet 2020
29 mai 2009 à 21:59
Voila, j'ai mis 20 jours, mais au moins c'est fait, la modif est faite.
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
9 mai 2009 à 11:54
et a propos de la mise a jour

je vois tjr

on *:text:*!record*:#:{
if (!record isin $strip($1)) {

c'est plutot

on *:text:*:#:{
if (!record == $strip($1)) {
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
9 mai 2009 à 11:36
moi j'avais rien testé j'avais bien dis voilà une idée donc a lui de voir la suite

d'apres ce que tu m'a dis j'ai testé et le probleme n'est pas sur le "!" mais sur la variable meme

donc %user.record $+ # returne tjr le "#" donc dans les condition il va falloir faire ceci

if ($($+(%,recordoff,#),2) != off) {


if (!$($+(%,user.record,#),2)) set %user.record $+ # %nicks

ect..
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
9 mai 2009 à 10:42
Ok, je n'ai rien dit pour la variable, j'ai confondu courant et record :)
(mais bon, je reste sur le même avis que == $null dans ce cas n'est pas plus mal que !)
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
9 mai 2009 à 10:40
Salut,Non WorldDMT, imagine que tu sois seul dans le chan, la variable sera à 1. Mais avec ton évévenemnt part (qui s'applique à tout le monde), quand tu partiras, elle sera à zéro. Ca c'est un exemple, même minime, il y en a sans doute d'autres. Donc autant mettre $null, surtout que ! n'est pas forcément plus optimisé que $null (c'est pas parce-qu'on économise 7 caractères, que le code sera mieux).
Il y a aussi d'autres erreurs dans ta correction :

else notice $nick Bienvenue $nick ! Avec ton entrée, nous sommes %user.courant $+ #.......
-> le # ne sera pas évalué (à moins que les "..." doivent être remplacés par du texte ^^)

if (!%user.record $+ #)
-> d'après mes tests, retournera toujours $false, car le ! semble être pris en compte avant le $+
j'ai testé avec ceci : //set %a $+ $me 1 | echo -a $iif(!%a $+ $me,non,oui)
ca retourne 'non' à l'inverse de ceci : //set %a $+ $me 1 | echo -a $iif(!$+(%a,$me),non,oui)
Et puis même, tu cherches à optimiser le plus possible, en utilisant par exemple var %nicks $nick(#,0) ce qui est une très bonne ideé, mais alors autant faire pareil avec les autres variables... (%user.record $+ #, %user.courant $+ #, etc)

Yep yep.
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
9 mai 2009 à 10:18
@Uaip "je me suis dit que %user.courant $+ # pouvait être égal à zéro"

non mon ami tu te trompe :)
dans ce cas on peut utiliser "!" parceque le %user.courant $+ # est = a $nick(#,0) donc tant qu'il est present il y aura tjr 1
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
8 mai 2009 à 20:30
Salut,
J'ai regardé en speed le code, sans détail, je trouve ça pas mal pour une première source, et ce que je trouve bien, c'est l'orthographe :)

WorldDMT je ne suis pas d'accord avec toi. D'après mes brefs coups d'oeil, je me suis dit que %user.courant $+ # pouvait être égal à zéro, donc dans son cas il est obligé d'utiliser == $null, et pas !
!%var returne $true (même) si %var = 0, or lui, il cherche à savoir si la variable existe ou non.
extarsik Messages postés 5 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 10 juillet 2020
8 mai 2009 à 11:50
Quand je dis que je débute ^^, merci pour le :

on *:text:*:#:{
if (!record == $strip($1)) {

Je cherchais a faire en sorte qu'il prenait les couleurs, car sur applet il y a les couleurs mais aussi un espace avant, mais merci :), je vais revoir tous mes codes x)
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
7 mai 2009 à 18:34
re

pour ton ON JOIN

utilise une variable globale pour $nick(#,0) pour ne pas effectué des calcules a chaque commande

tu n'a pas d'event ON PART ce qui n'est pas normal tu peux te trouvé avec 3 personne sur le chan et la %user.courant $+ # est de 20

il sont sortis sans qu'une personne n'entre, ça arrive

alors utilise /inc et /dec dans ce cas

et enleve le "!" sur le level et utilise if $nick == $me set %var

pour la notice du nick entrant il faut qu'elle soit apres la condition

si le reccord n'est pas batu le code envoi la notice si non il msg le chan que le reccord a été batu

pour la condition %user.record $+ # == $null ici tu peut utilisé "!" donc !%user.record $+ #

voilà ton code selon mon propre avis (qui explique mon commentaire en haut) tu peux prendre des idées si tu veux

on *:join:#:{
var %nicks $nick(#,0)
if (%recordoff $+ # != off) {
if ($nick == $me) {
if (!%user.record $+ #) set %user.record $+ # %nicks
set %user.courant $+ # %nicks
timer 1 2 msg # Record créé, il est actuellement de %user.record $+ # personnes.
}
else inc %user.courant $+ #
if (%user.courant $+ # > %user.record $+ #) {
set %user.record $+ # $v1
msg # 8,4/!\9,1 RECORD BATTU 8,4/!\1,0 : Le canal # vient de passer à %user.record $+ # user.........
}
else notice $nick Bienvenue $nick ! Avec ton entrée, nous sommes %user.courant $+ #.......
....
}
else notice $nick Bienvenue $nick ! Avec ton entrée, nous sommes %nicks personnes .......
}
on *:part:#:dec %user.courant $+ #



comme j'avais dis dans mon premier commantaire
pour le double emploi
place la condition qui verifie si le record foctionne ou pas pour ne pas faire 2 calcules pour rien
donc selon moi

on *:text:*:#:{
if (%recordoff $+ # != off) {
if (!record == $strip($1)) {
if (!$2) {
if (%user.record $+ #) msg # Le record de ce salon ( $+ # $+ ) est de $v1 personnes !
else msg # Je n'ai trouvé aucun record pour # $+ , .......
}
elseif (%user.record $+ $2) msg # Le record du salon $2 est de $v1 personnes !
else msg # Je n'ai trouvé aucun record pour $2 $+ , ......
}
else notice $nick Les records sont désactivés sur7 #
}
}

comme les autres event ON TEXT ont if isop on les regroupe avec "@" dans le level
et pour le reboot au lieu d'un unset fait plutot set %user.record $+ # $nick(#,0)
et utilisé !recoreboot, !recoreboot #chan, et !recoreboot all et si le $2 est all
tu unset le tout et grace a une loop tu réinitialise tout les chans dont t'es present avec un set %var $nick(#,0)
et puisque tu n'utilise, pour la variable %reccordoff, que le "off" et tu l'unset
utilise plutot 1 dans ce cas au lieu de mettre if (%reccordoff $+ # == off) tu met simplement if (%reccordoff $+ #) retourne positif ou (!%reccordoff $+ #) retourne negatif

selon moi pour le reboot je fais

if (!recoreboot == $strip($1)) {
if (!$2) {
set %user.record $+ # $nick(#,0)
msg # Les records de7 $2 3ont été réinitialisés.
}
elseif ($2 == all) {
unset %user.*
var %x $chan(0)
while %x {
var %c $chan(%x),%n $nick($chan(%x),0)
set %user.record $+ %c %n
set %user.courant $+ %c %n
dec %x
}
msg # Tous les records ont été réinitialisés.
}
elseif (%user.record $+ $2) {
set %user.record $+ $2 $nick(#,0)
msg # Les records de7 $2 3ont été réinitialisés.
}
}


pour le reste

if (!recoroff == $strip($1)) {
set %recordoff $+ # 1
msg # Le compteur d'utilisateur est maintenant OFF sur # (ainsi que le record)
}

dans ce cas au debut au lieu de

if (%recordoff $+ # != off) {

tu met

if (%recordoff $+ #) {

voilà essaye de voir si ces idée pourron t'aider

@+
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
7 mai 2009 à 11:25
salut

j'ai vu vite ton code ce qui m'a attiré c'est

on *:text:*!record*:#:{
if (!record isin $1) {

c'est un double emploi ça

utilise

on *:text:*:#:{
if (!record == $strip($1)) {

je reviendrai pour voir le reste

@+
Rejoignez-nous