[Résolu] Trivia.tcl - Points variables
#16
Oui je sais et dedans y a ça:
TCL
[expr $_score+$tgpointsperanswer-$tghintnum]


Pour moi le nombre total de points attribué par réponse est déjà variable ...

Sauf si tu veux faire comme CrazyCat et la il faut modifier aussi le proc tgincrscore, sinon ça ne peut pas fonctionner.
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#17
Justement j'utilise ce code de cette façon :

TCL
#incrément les points de la personne points.
proc tgincrscore {who} {
    global tgscores tgscf tgpointsperanswer tgscorestotal tgscoresbyname tghintnum
    tggetscores
    if {$tgscorestotal>0} {
        set i 0
        if {![info exists tgscoresbyname([strlwr $who])]} {
	        #append _newscores "[expr $tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who] "
            append _newscores "1,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who] "
        }
        while {$i<[llength $tgscores]} {
            set _item [lindex $tgscores $i]
            set _nick [lindex [split $_item ,] 2]
            set _time [lindex [split $_item ,] 1]
            set _score [lindex [split $_item ,] 0]
            if {[strlwr $who]==[strlwr $_nick]} {
	            #append _newscores "[expr $_score+$tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who][expr [expr [llength $tgscores]-$i]==1?"":"\ "]"
                append _newscores "[expr $_score+$tgpointsperanswer],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who][expr [expr [llength $tgscores]-$i]==1?"":"\ "]"
            } else {
                append _newscores "$_score,$_time,$_nick,[strlwr $_nick][expr [expr [llength $tgscores]-$i]==1?"":"\ "]"
            }
            incr i
        }
    } else {
	    #append _newscores "[expr $tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who]"
        append _newscores "1,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who]"
    }
    set _sfile [open $tgscf w]
    puts $_sfile "$_newscores"
    close $_sfile
    return
}



car cela pose problème avec mon fichier de scores vue qu'il date des année..... première version du trivia xD
Répondre Avertir
#18
Si tu utilises la méthode de CrazyCat le proc tgincrscore doit ressembler à ça:
TCL
#incrément les points de la personne points.
proc tgincrscore {who tgpoints} {
    global tgscores tgscf tgpointsperanswer tgscorestotal tgscoresbyname tghintnum
    tggetscores
    if {$tgscorestotal>0} {
        set i 0
        if {![info exists tgscoresbyname([strlwr $who])]} {
           #append _newscores "[expr $tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who] "
            append _newscores "$tgpoints,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who] "
        }
        while {$i<[llength $tgscores]} {
            set _item [lindex $tgscores $i]
            set _nick [lindex [split $_item ,] 2]
            set _time [lindex [split $_item ,] 1]
            set _score [lindex [split $_item ,] 0]
            if {[strlwr $who]==[strlwr $_nick]} {
               #append _newscores "[expr $_score+$tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who][expr [expr [llength $tgscores]-$i]==1?"":"\ "]"
                append _newscores "[expr $_score+$tgpoints],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who][expr [expr [llength $tgscores]-$i]==1?"":"&#92; "]"
            } else {
                append _newscores "$_score,$_time,$_nick,[strlwr $_nick][expr [expr [llength $tgscores]-$i]==1?"":"&#92; "]"
            }
            incr i
        }
    } else {
       #append _newscores "[expr $tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who]"
        append _newscores "$tgpoints,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who]"
    }
    set _sfile [open $tgscf w]
    puts $_sfile "$_newscores"
    close $_sfile
    return
}



J'ai pas testé.
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#19
ca donne cela : [18:36] Tcl error [tgcheckanswer]: missing close-bracket :p
Répondre Avertir
#20
Récapitulatif et solution

On commence par la solution de CrazyCat donné ici : http://forum.eggdrop.fr/Triviatcl-Points...ml#pid2860

Ce qui donne dans le script les modifications suivante :

Début de script ajouter :

TCL
# Réglages des points variables ici 5 Points sans indice 3 avec 1 indice 2 avec 2 indices puis 1 avec 3 indices.
set tganswscore {5 3 2 1}



Puis une modification de la proc tgcorrectanswer de cette façon :

TCL
#déclenché quand quelqu'un dit la réponse correcte.
proc tgcorrectanswer {nick} {
    global tgcurrentanswer tghinttimer tgtimenext tgchan tgnextqtimer tgstreak tgstreakmin
    global tgscoresbyname tgranksbyname tgranksbynum tgcongrats tgscorestotal tgmissed
    global tgtimestart tgshowallscores tgrealnames tgscoresbyrank tgtimeanswer tgmulti
    tggetscores
    if {![info exists tgranksbyname([strlwr $nick])]} {
        set _oldrank 0
    } else {
        set _oldrank $tgranksbyname([strlwr $nick])
    }
    tgincrscore $nick [lindex $::tganswscore $::tghintnum]
    tggetscores
    set _newrank $tgranksbyname([strlwr $nick])
    set _timetoanswer ""
    if {$tgtimeanswer==1} {
        set _timetoanswer [expr [expr [clock clicks -milliseconds]-$tgtimestart]/1000.00]
    }



Puis la modification donné par BdS ici : http://forum.eggdrop.fr/Triviatcl-Points...ml#pid9378

Ce qui donne pour l'incrément des points de la personne

TCL
#incrément les points de la personne points.
proc tgincrscore {who tgpoints} {
    global tgscores tgscf tgpointsperanswer tgscorestotal tgscoresbyname tghintnum
    tggetscores
    if {$tgscorestotal>0} {
        set i 0
        if {![info exists tgscoresbyname([strlwr $who])]} {
           #append _newscores "[expr $tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who] "
            append _newscores "$tgpoints,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who] "
        }
        while {$i<[llength $tgscores]} {
            set _item [lindex $tgscores $i]
            set _nick [lindex [split $_item ,] 2]
            set _time [lindex [split $_item ,] 1]
            set _score [lindex [split $_item ,] 0]
            if {[strlwr $who]==[strlwr $_nick]} {
               #append _newscores "[expr $_score+$tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who][expr [expr [llength $tgscores]-$i]==1?"":"\ "]"
                append _newscores "[expr $_score+$tgpoints],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who][expr [expr [llength $tgscores]-$i]==1?"":"\ "]"
            } else {
                append _newscores "$_score,$_time,$_nick,[strlwr $_nick][expr [expr [llength $tgscores]-$i]==1?"":"\ "]"
            }
            incr i
        }
    } else {
       #append _newscores "[expr $tgpointsperanswer-$tghintnum],[expr 1000000000000.0/[unixtime]],$who,[strlwr $who]"
        append _newscores "$tgpoints,[expr 1000000000000.0/[unixtime]],$who,[strlwr $who]"
    }
    set _sfile [open $tgscf w]
    puts $_sfile "$_newscores"
    close $_sfile
    return
}



Voilà les modifications a apporter pour avoir les points variable sur le Trivia.tcl

Solution testé sans aucun problème donc le sujet peux être mis sur résolu je pense par un admin Smile
( Merci CrazyCat et BdS )
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté