brouillon21
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| brouillon21 [2026/05/06 07:41] – nanaki | brouillon21 [2026/05/06 09:47] (Version actuelle) – nanaki | ||
|---|---|---|---|
| Ligne 559: | Ligne 559: | ||
| result.textContent = | result.textContent = | ||
| - | "===== STATS =====\n" | + | |
| + | "===== PERSONNAGE =====\n" | ||
| + | "Race : " | ||
| + | |||
| + | "\n\n===== STATS =====\n" | ||
| JSON.stringify(char, | JSON.stringify(char, | ||
| Ligne 582: | Ligne 586: | ||
| "Jet FM : " | "Jet FM : " | ||
| sorts; | sorts; | ||
| - | |||
| - | |||
| } | } | ||
| Ligne 673: | Ligne 675: | ||
| - | // ===== ENCODE / DECODE ULTRA SAFE ===== | + | // ===== ENCODE / DECODE ULTRA SIMPLE |
| function encodeBuild(data){ | function encodeBuild(data){ | ||
| - | return | + | return JSON.stringify(data); |
| - | String.fromCharCode(...new TextEncoder().encode(JSON.stringify(data))) | + | |
| - | | + | |
| } | } | ||
| function decodeBuild(code){ | function decodeBuild(code){ | ||
| - | return JSON.parse( | + | return JSON.parse(code); |
| - | new TextDecoder().decode( | + | |
| - | Uint8Array.from(atob(code), c => c.charCodeAt(0)) | + | |
| - | ) | + | |
| - | | + | |
| } | } | ||
| - | |||
| // ===== EXPORT ===== | // ===== EXPORT ===== | ||
| Ligne 700: | Ligne 695: | ||
| }; | }; | ||
| - | // stats | ||
| for(let s in costTable){ | for(let s in costTable){ | ||
| data.stats[s] = +document.getElementById(s).value || 0; | data.stats[s] = +document.getElementById(s).value || 0; | ||
| } | } | ||
| - | // équipements | ||
| Object.entries(slots).forEach(([k, | Object.entries(slots).forEach(([k, | ||
| data.equip[k] = s.value; | data.equip[k] = s.value; | ||
| }); | }); | ||
| - | // passifs | ||
| document.querySelectorAll(" | document.querySelectorAll(" | ||
| data.skills.push(s.dataset.name); | data.skills.push(s.dataset.name); | ||
| }); | }); | ||
| - | // sorts | ||
| document.querySelectorAll(" | document.querySelectorAll(" | ||
| data.spells.push({ | data.spells.push({ | ||
| Ligne 725: | Ligne 716: | ||
| let code = encodeBuild(data); | let code = encodeBuild(data); | ||
| + | // 🔥 important → stringify lisible | ||
| prompt(" | prompt(" | ||
| } | } | ||
| - | |||
| - | |||
| // ===== IMPORT ===== | // ===== IMPORT ===== | ||
| Ligne 737: | Ligne 727: | ||
| try{ | try{ | ||
| + | |||
| + | code = code.trim(); | ||
| let data = decodeBuild(code); | let data = decodeBuild(code); | ||
| - | // race | ||
| raceSelect.value = data.race; | raceSelect.value = data.race; | ||
| - | // stats | ||
| for(let s in costTable){ | for(let s in costTable){ | ||
| document.getElementById(s).value = data.stats[s] || 0; | document.getElementById(s).value = data.stats[s] || 0; | ||
| } | } | ||
| - | // équipements | ||
| Object.entries(slots).forEach(([k, | Object.entries(slots).forEach(([k, | ||
| s.value = data.equip[k] || ""; | s.value = data.equip[k] || ""; | ||
| }); | }); | ||
| - | // passifs | ||
| document.querySelectorAll(" | document.querySelectorAll(" | ||
| s.checked = data.skills.includes(s.dataset.name); | s.checked = data.skills.includes(s.dataset.name); | ||
| }); | }); | ||
| - | // sorts | ||
| document.querySelectorAll(" | document.querySelectorAll(" | ||
| s.checked = data.spells.some(sp => | s.checked = data.spells.some(sp => | ||
| Ligne 768: | Ligne 755: | ||
| checkLimit(); | checkLimit(); | ||
| autoCalculate(); | autoCalculate(); | ||
| - | |||
| - | console.log(code); | ||
| - | console.log(decodeBuild(code)); | ||
| }catch(e){ | }catch(e){ | ||
| alert(" | alert(" | ||
| + | console.log(e); | ||
| } | } | ||
| } | } | ||
| Ligne 788: | Ligne 773: | ||
| }; | }; | ||
| - | // stats | ||
| for(let s in costTable){ | for(let s in costTable){ | ||
| data.stats[s] = +document.getElementById(s).value || 0; | data.stats[s] = +document.getElementById(s).value || 0; | ||
| } | } | ||
| - | // équipements | ||
| Object.entries(slots).forEach(([k, | Object.entries(slots).forEach(([k, | ||
| data.equip[k] = s.value; | data.equip[k] = s.value; | ||
| }); | }); | ||
| - | // passifs | ||
| document.querySelectorAll(" | document.querySelectorAll(" | ||
| data.skills.push(s.dataset.name); | data.skills.push(s.dataset.name); | ||
| }); | }); | ||
| - | // sorts | ||
| document.querySelectorAll(" | document.querySelectorAll(" | ||
| data.spells.push({ | data.spells.push({ | ||
| Ligne 813: | Ligne 794: | ||
| let code = encodeBuild(data); | let code = encodeBuild(data); | ||
| + | // 🔥 ENCODAGE URL OBLIGATOIRE | ||
| let url = window.location.origin + window.location.pathname + "? | let url = window.location.origin + window.location.pathname + "? | ||
| - | // copie sécurisée | ||
| navigator.clipboard.writeText(url).catch(()=> | navigator.clipboard.writeText(url).catch(()=> | ||
| prompt(" | prompt(" | ||
| Ligne 827: | Ligne 808: | ||
| let params = new URLSearchParams(window.location.search); | let params = new URLSearchParams(window.location.search); | ||
| - | let code = decodeURIComponent(params.get(" | + | let code = params.get(" |
| if(!code) return; | if(!code) return; | ||
| + | try{ | ||
| + | code = decodeURIComponent(code); | ||
| importBuild(code); | importBuild(code); | ||
| + | }catch(e){ | ||
| + | console.log(" | ||
| + | } | ||
| })(); | })(); | ||
brouillon21.1778046104.txt.gz · Dernière modification : 2026/05/06 07:41 de nanaki
