Outils pour utilisateurs

Outils du site


brouillon21

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
brouillon21 [2026/05/05 21:08] nanakibrouillon21 [2026/05/06 09:47] (Version actuelle) nanaki
Ligne 86: Ligne 86:
  
 <button onclick="resetAll()">Reset</button> <button onclick="resetAll()">Reset</button>
 +
 +<button onclick="exportBuild()">📤 Export</button>
 +<button onclick="importBuild()">📥 Import</button>
 +<button onclick="copyLink()">🔗 Lien</button>
  
 <pre id="result" class="result"></pre> <pre id="result" class="result"></pre>
Ligne 555: Ligne 559:
  
 result.textContent = result.textContent =
-"===== STATS =====\n"++ 
 +"===== PERSONNAGE =====\n"
 +"Race : "+raceSelect.value+ 
 + 
 +"\n\n===== STATS =====\n"+
 JSON.stringify(char,null,2)+ JSON.stringify(char,null,2)+
  
Ligne 578: Ligne 586:
 "Jet FM : "+jetFM+"\n\n"+ "Jet FM : "+jetFM+"\n\n"+
 sorts; sorts;
- 
- 
 } }
  
Ligne 661: Ligne 667:
 updateCost(); calculate(); calculatePush(); updateCost(); calculate(); calculatePush();
 })); }));
 +
  
 // ===== INIT ===== // ===== INIT =====
Ligne 666: Ligne 673:
 calculate(); calculate();
 calculatePush(); calculatePush();
 +
 +
 +// ===== ENCODE / DECODE ULTRA SIMPLE =====
 +function encodeBuild(data){
 +    return JSON.stringify(data);
 +}
 +
 +function decodeBuild(code){
 +    return JSON.parse(code);
 +}
 +
 +// ===== EXPORT =====
 +function exportBuild(){
 +
 +let data = {
 +race: raceSelect.value,
 +stats: {},
 +equip: {},
 +skills: [],
 +spells: []
 +};
 +
 +for(let s in costTable){
 +data.stats[s] = +document.getElementById(s).value || 0;
 +}
 +
 +Object.entries(slots).forEach(([k,s])=>{
 +data.equip[k] = s.value;
 +});
 +
 +document.querySelectorAll(".skill:checked").forEach(s=>{
 +data.skills.push(s.dataset.name);
 +});
 +
 +document.querySelectorAll(".spell:checked").forEach(s=>{
 +data.spells.push({
 +dex: +s.dataset.dex,
 +prot: +s.dataset.prot
 +});
 +});
 +
 +let code = encodeBuild(data);
 +
 +// 🔥 important → stringify lisible
 +prompt("Copie ton build :", code);
 +}
 +
 +// ===== IMPORT =====
 +function importBuild(codeInput){
 +
 +let code = codeInput || prompt("Colle le code du build :");
 +if(!code) return;
 +
 +try{
 +
 +code = code.trim();
 +
 +let data = decodeBuild(code);
 +
 +raceSelect.value = data.race;
 +
 +for(let s in costTable){
 +document.getElementById(s).value = data.stats[s] || 0;
 +}
 +
 +Object.entries(slots).forEach(([k,s])=>{
 +s.value = data.equip[k] || "";
 +});
 +
 +document.querySelectorAll(".skill").forEach(s=>{
 +s.checked = data.skills.includes(s.dataset.name);
 +});
 +
 +document.querySelectorAll(".spell").forEach(s=>{
 +s.checked = data.spells.some(sp =>
 +sp.dex == +s.dataset.dex && sp.prot == +s.dataset.prot
 +);
 +});
 +
 +displayBase();
 +checkLimit();
 +autoCalculate();
 +
 +}catch(e){
 +alert("❌ Code invalide");
 +console.log(e);
 +}
 +}
 +
 +// ===== LIEN PARTAGE =====
 +function copyLink(){
 +
 +let data = {
 +race: raceSelect.value,
 +stats: {},
 +equip: {},
 +skills: [],
 +spells: []
 +};
 +
 +for(let s in costTable){
 +data.stats[s] = +document.getElementById(s).value || 0;
 +}
 +
 +Object.entries(slots).forEach(([k,s])=>{
 +data.equip[k] = s.value;
 +});
 +
 +document.querySelectorAll(".skill:checked").forEach(s=>{
 +data.skills.push(s.dataset.name);
 +});
 +
 +document.querySelectorAll(".spell:checked").forEach(s=>{
 +data.spells.push({
 +dex: +s.dataset.dex,
 +prot: +s.dataset.prot
 +});
 +});
 +
 +let code = encodeBuild(data);
 +
 +// 🔥 ENCODAGE URL OBLIGATOIRE
 +let url = window.location.origin + window.location.pathname + "?build=" + encodeURIComponent(code);
 +
 +navigator.clipboard.writeText(url).catch(()=>{
 +    prompt("Copie ce lien :", url);
 +});
 +
 +alert("🔗 Lien copié !");
 +}
 +
 +// ===== AUTO LOAD URL =====
 +(function(){
 +
 +let params = new URLSearchParams(window.location.search);
 +let code = params.get("build");
 +
 +if(!code) return;
 +
 +try{
 +code = decodeURIComponent(code);
 +importBuild(code);
 +}catch(e){
 +console.log("Erreur chargement URL");
 +}
 +
 +})();
  
 </script> </script>
 </body> </body>
 </html> </html>
brouillon21.1778008135.txt.gz · Dernière modification : 2026/05/05 21:08 de nanaki