Messages : 248
Sujets : 6
Inscription : Jun 2005
Niveau d’avertissement :
0%
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.
Messages : 52
Sujets : 6
Inscription : Dec 2007
Niveau d’avertissement :
0%
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
Messages : 248
Sujets : 6
Inscription : Jun 2005
Niveau d’avertissement :
0%
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?"":"\ "]"
} 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
}
J'ai pas testé.
Messages : 52
Sujets : 6
Inscription : Dec 2007
Niveau d’avertissement :
0%
ca donne cela : [18:36] Tcl error [tgcheckanswer]: missing close-bracket :p
Messages : 52
Sujets : 6
Inscription : Dec 2007
Niveau d’avertissement :
0%
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 :)
( Merci CrazyCat et BdS )
|