io proverei con una cosa del tipo
codice:
<script>
function CalcoloPunti(myOne){
var utilizzati = document.getElementById(myOne).value;
var totale = document.getElementById('PuntiTot').value;
var rimanenti = (totale*1)-(utilizzati*1);
if(myOne=='Valore1'){
aggiornaCampo('Valore2', rimanenti);
aggiornaCampo('Valore3', rimanenti);
}else if(myOne=='Valore2'){
aggiornaCampo('Valore1', rimanenti);
aggiornaCampo('Valore3', rimanenti);
}else if(myOne=="Valore3"){
aggiornaCampo('Valore1', rimanenti);
aggiornaCampo('Valore2', rimanenti);
}
}
function aggiornaCampo(quale, quanti){
//e qui ripopoli le select, hai l'id del select e i punti rimanenti da assegnare
}
</script>
<select name="Valore1" border=0 onChange="CalcoloPunti('Valore1')" >
<option value="5">+5</option>
<option value="4">+4</option>
<option value="3">+3</option>
<option value="2">+2</option>
<option value="1">+1</option>
<option value="0">0</option>
...
...
</select>
<select name="Valore2" border=0 onChange="CalcoloPunti('Valore2')" >
<option value="5">+5</option>
<option value="4">+4</option>
<option value="3">+3</option>
<option value="2">+2</option>
<option value="1">+1</option>
<option value="0">0</option>
...
...
</select>
<select name="Valore3" border=0 onChange="CalcoloPunti('Valore3')" >
<option value="5">+5</option>
<option value="4">+4</option>
<option value="3">+3</option>
<option value="2">+2</option>
<option value="1">+1</option>
<option value="0">0</option>
...
...
</select>
ma in questo modo ogni volta che cambi valore ti azzera gli altri 2 select..tramite degli hidden field dovresti controllare che una volta settato un valore, non venga resettato dalla selezione dopo..