Varulv [BH II] - R1

BiobunkerVII

Kaoskardinal
Joined
19 Sep 2013
Messages
2,114
@StradhLestat släpp hörnflaggan och kom in i matchen.
Jag har inget mer rödpingande på Stratten än den knepiga frånvaron i tråden. Fjodde ligger redan med en röst där för att få igång StratteSlatte - blir det inte bättring flyttar jag rösten dit.
Impetigos deltagande lämnar väl också en del övrigt att önska så kom igen nu
Röst @Impetigo
 

damogn

Hero
Joined
4 Feb 2018
Messages
958
Okej, är det någon som är villig att testa detta?
1) Skapa ett bokmärke i webbläsaren. Det får heta var som helst, så t.ex. kan ni bokmärka denna sida.
2) Högerklicka och editera bokmärket. Döp det till vad som helst (typ Rösträknare). I URL byter ni ut allt text mot detta (var noga med att få med allt):
Code:
javascript:(async function(){const threadUrl='https://www.rollspel.nu/threads/bh-ii-r1.85315/';const voteRegex=/Röst:\s*@?([\wåäöÅÄÖ\- ]+)/i;const votes=[];for(let page=1;page<=50;page++){const url=page===1?threadUrl:`${threadUrl}page-${page}`;console.log(`Hämtar: ${url}`);try{const response=await fetch(url);if(!response.ok)throw new Error(`Misslyckades att hämta sida ${page}`);const html=await response.text();const parser=new DOMParser();const doc=parser.parseFromString(html,'text/html');const posts=doc.querySelectorAll('article[data-author]');posts.forEach(post=>{const username=post.getAttribute('data-author');post.querySelectorAll('blockquote').forEach(bq=>bq.remove());const content=post.querySelector('.message-content')?.textContent;if(content){const match=content.match(voteRegex);if(match)votes.push({from:username,to:match[1].trim()});}});if(!doc.querySelector('.pageNav-jump--next'))break;}catch(e){console.error(e);break;}}const latestVotes={};votes.forEach(v=>latestVotes[v.from]=v.to);const existing=document.getElementById('votes-result');if(existing)existing.remove();const container=document.createElement('div');container.id='votes-result';container.style='background:#fff;color:#000;border:2px solid #000;padding:1em;margin:2em;font-family:sans-serif;max-width:600px;';container.innerHTML='<h2>Röster</h2>';const table=document.createElement('table');table.style='border-collapse:collapse;width:100%;';table.innerHTML='<thead><tr><th style="text-align:left;border-bottom:1px solid #000;">Röstare</th><th style="text-align:left;border-bottom:1px solid #000;">Röstar på</th></tr></thead>';const tbody=document.createElement('tbody');Object.entries(latestVotes).forEach(([from,to])=>{const row=document.createElement('tr');row.innerHTML=`<td style="padding:4px 8px;">${from}</td><td style="padding:4px 8px;">${to}</td>`;tbody.appendChild(row);});table.appendChild(tbody);container.appendChild(table);document.body.appendChild(container);})();
3) Om ni är på rollspel.nu (vilken tråd som helst) och trycker på bokmärket så ska den efter en stund lägga en röstningstabell längst ner på sidan.

Anledningen att det är på detta viset är för att jag inte har tillgång till rollspel.nus API, så vi behöver något som körs i webbläsaren direkt, men då måste man vara på sidan när man kör (man behöver inte vara inloggad, men köra koden på en sida som är öppen på rätt domän)
 

Anthrox

Kulturvetaringenjör
Joined
8 Jun 2017
Messages
5,460
Okej, är det någon som är villig att testa detta?
1) Skapa ett bokmärke i webbläsaren. Det får heta var som helst, så t.ex. kan ni bokmärka denna sida.
2) Högerklicka och editera bokmärket. Döp det till vad som helst (typ Rösträknare). I URL byter ni ut allt text mot detta (var noga med att få med allt):
Code:
javascript:(async function(){const threadUrl='https://www.rollspel.nu/threads/bh-ii-r1.85315/';const voteRegex=/Röst:\s*@?([\wåäöÅÄÖ\- ]+)/i;const votes=[];for(let page=1;page<=50;page++){const url=page===1?threadUrl:`${threadUrl}page-${page}`;console.log(`Hämtar: ${url}`);try{const response=await fetch(url);if(!response.ok)throw new Error(`Misslyckades att hämta sida ${page}`);const html=await response.text();const parser=new DOMParser();const doc=parser.parseFromString(html,'text/html');const posts=doc.querySelectorAll('article[data-author]');posts.forEach(post=>{const username=post.getAttribute('data-author');post.querySelectorAll('blockquote').forEach(bq=>bq.remove());const content=post.querySelector('.message-content')?.textContent;if(content){const match=content.match(voteRegex);if(match)votes.push({from:username,to:match[1].trim()});}});if(!doc.querySelector('.pageNav-jump--next'))break;}catch(e){console.error(e);break;}}const latestVotes={};votes.forEach(v=>latestVotes[v.from]=v.to);const existing=document.getElementById('votes-result');if(existing)existing.remove();const container=document.createElement('div');container.id='votes-result';container.style='background:#fff;color:#000;border:2px solid #000;padding:1em;margin:2em;font-family:sans-serif;max-width:600px;';container.innerHTML='<h2>Röster</h2>';const table=document.createElement('table');table.style='border-collapse:collapse;width:100%;';table.innerHTML='<thead><tr><th style="text-align:left;border-bottom:1px solid #000;">Röstare</th><th style="text-align:left;border-bottom:1px solid #000;">Röstar på</th></tr></thead>';const tbody=document.createElement('tbody');Object.entries(latestVotes).forEach(([from,to])=>{const row=document.createElement('tr');row.innerHTML=`<td style="padding:4px 8px;">${from}</td><td style="padding:4px 8px;">${to}</td>`;tbody.appendChild(row);});table.appendChild(tbody);container.appendChild(table);document.body.appendChild(container);})();
3) Om ni är på rollspel.nu (vilken tråd som helst) och trycker på bokmärket så ska den efter en stund lägga en röstningstabell längst ner på sidan.

Anledningen att det är på detta viset är för att jag inte har tillgång till rollspel.nus API, så vi behöver något som körs i webbläsaren direkt, men då måste man vara på sidan när man kör (man behöver inte vara inloggad, men köra koden på en sida som är öppen på rätt domän)
Händer ingenting för mig?
 

damogn

Hero
Joined
4 Feb 2018
Messages
958
Jag uppdaterade koden till att visa vem som riskerar att åka ut:
Code:
javascript:(async function(){const threadUrl='https://www.rollspel.nu/threads/bh-ii-r1.85315/';const voteRegex=/Röst:\s*@?([\wåäöÅÄÖ\- ]+)/i;const votes=[];for(let page=1;page<=50;page++){const url=page===1?threadUrl:`${threadUrl}page-${page}`;console.log(`Hämtar: ${url}`);try{const response=await fetch(url);if(!response.ok)throw new Error(`Misslyckades att hämta sida ${page}`);const html=await response.text();const parser=new DOMParser();const doc=parser.parseFromString(html,'text/html');const posts=doc.querySelectorAll('article[data-author]');posts.forEach(post=>{const username=post.getAttribute('data-author');post.querySelectorAll('blockquote').forEach(bq=>bq.remove());const content=post.querySelector('.message-content')?.textContent;if(content){const match=content.match(voteRegex);if(match)votes.push({from:username,to:match[1].trim()});}});if(!doc.querySelector('.pageNav-jump--next'))break;}catch(e){console.error(e);break;}}const latestVotes={};votes.forEach(v=>latestVotes[v.from]=v.to);const voteCount={};Object.values(latestVotes).forEach(name=>{voteCount[name]=(voteCount[name]||0)+1;});const maxVotes=Math.max(...Object.values(voteCount));const mostVoted=Object.keys(voteCount).filter(name=>voteCount[name]===maxVotes);const existing=document.getElementById('votes-result');if(existing)existing.remove();const container=document.createElement('div');container.id='votes-result';container.style='background:#fff;color:#000;border:2px solid #000;padding:1em;margin:2em;font-family:sans-serif;max-width:600px;';container.innerHTML='<h2>Röster</h2>';const table=document.createElement('table');table.style='border-collapse:collapse;width:100%;';table.innerHTML='<thead><tr><th style="text-align:left;border-bottom:1px solid #000;">Röstare</th><th style="text-align:left;border-bottom:1px solid #000;">Röstar på</th></tr></thead>';const tbody=document.createElement('tbody');Object.entries(latestVotes).forEach(([from,to])=>{const row=document.createElement('tr');row.innerHTML=`<td style="padding:4px 8px;">${from}</td><td style="padding:4px 8px;">${to}</td>`;tbody.appendChild(row);});table.appendChild(tbody);container.appendChild(table);const hr=document.createElement('hr');hr.style='border: 2px solid black; margin-top: 16px;';container.appendChild(hr);const riskPara=document.createElement('p');riskPara.style='font-weight:bold;font-size:1.1em;margin-top:0;';riskPara.textContent='Risk för utröstning: ' + mostVoted.join(', ');container.appendChild(riskPara);document.body.appendChild(container);})();
 

damogn

Hero
Joined
4 Feb 2018
Messages
958
Vill ni att tabellen hamnar någon annan stans? Högre upp? Byter ut allt på sidan till en tabell? Längst ner är väl bra eftersom man skriver poster där?
 

StradhLestat

Swashbuckler
Joined
8 Sep 2020
Messages
1,863
Location
Fruängen
Kontorsdagat här som wlöar ner mitt deltagande en del...
Kånner att jag inte har mycket att gå på...
Planen med att inte röstA på någon känns tråkig...eå blir det väl i princip inget spel alls?...men ör det så ni vill ha det så...
 

Big Mama

Hur länge kan man kalla sig ny
Joined
9 Jun 2024
Messages
521
När jag först var Julle i förra BH (innan jag fick bryta) så ifrågasatte jag upplägget. Jag påpekade alternativ som var för starka till ulvarnas fördel och @damogn justerade bort dem. Så upplägget kan ifrågasättas, men jag tror det är troligare att man gör det i den sitsen jag hade än om det är en tuff meny för Jularbo-Kalle.

Men: JÄTTEMÅNGA GREJER passar i mitt huvud om det är @Big Mama som Julle och @Octagonal och @Sidd som ulvar.
(0: Sidd och BM spelar på ett sätt som får mig att misstänka dem generellt. Punkt 0 då den inte har med konspirationen som helhet att göra)
1: Den familjen verkar umgås tätt. I parisspelet fick BM panik över att Sidd skulle sett något på hennes dator när han plötsligt dök upp hos henne. Om man får välja ulvar kan man välja varandra för att slippa det scenariot.
2: Sidds första handling är en distanseringsröst på BM
3: Octagonals konstlade försvar av BM
4: Den här diskussionen som jag hittade när jag hackade wrnu's servrar fritt hallucinerade innan jag druckit mitt morgonkaffe
BM: "Hej pojkar, nu ska vi ulva tillsammans, kul va?"
Octagonal: "Hej, men shit, har vi bara ett halvt nattmord på ett i övrigt helt konventionellt balanserat varulvsupplägg? Protesterade du inte när du fick den menyn?"
BM: "Kan man göra det?"
Sidd: "Man kan ju alltid prova:alien::devilish::poop:🧙‍♂️"
BM: "Åh, men tror ni vi kan få Isaac misstänkt på att Julius Caesar är en spelare som INTE skulle ha protesterat?"

Liksom... Guys? Allting passar?

Men jag vet, när allting passar så har man stirrat för långt ner i avgrunden och drabbats av vansinnig hybris.
Du är för rolig du Hägern!
 

damogn

Hero
Joined
4 Feb 2018
Messages
958
Ok, en sista version (om ni inte säger att den är fel på något vis):

1) Skapa bokmärke
2) Editera det. Sätt namn till vad som helst
3) I URL tar du bort allt som står och klistrar in allt detta:
Code:
javascript:(async function(){const threadUrl='https://www.rollspel.nu/threads/bh-ii-r1.85315/';const voteRegex=/Röst:\s*@?([A-Za-z0-9_åäöÅÄÖ\- ]+)/i;const votes=[];for(let page=1;page<=50;page++){const url=page===1?threadUrl:`${threadUrl}page-${page}`;try{const response=await fetch(url);if(!response.ok)throw new Error(`Misslyckades att hämta sida ${page}`);const html=await response.text();const parser=new DOMParser();const doc=parser.parseFromString(html,'text/html');const posts=doc.querySelectorAll('article[data-author]');posts.forEach(post=>{const username=post.getAttribute('data-author');post.querySelectorAll('blockquote').forEach(bq=>bq.remove());const content=post.querySelector('.message-content')?.textContent;const postId=post.id?.replace('js-post-','');if(content){const match=content.match(voteRegex);if(match&&postId){votes.push({from:username,to:match[1],postId});}}});const nextPage=doc.querySelector('.pageNav-jump--next');if(!nextPage)break;}catch(err){console.error(err);break;}}const latestVotes={};const latestLinks={};votes.forEach(v=>{if(!latestVotes[v.from]){latestVotes[v.from]=[];}latestVotes[v.from].push(v.to);latestLinks[v.from]=v.postId;});const voteCounts={};Object.values(latestVotes).forEach(toList=>{toList.forEach(to=>{voteCounts[to]=(voteCounts[to]||0)+1;});});let mostVoted=null;let mostVotes=-1;for(const[person,count]of Object.entries(voteCounts)){if(count>mostVotes){mostVotes=count;mostVoted=person;}}const table=document.createElement('table');table.style.borderCollapse='collapse';table.style.marginTop='20px';table.style.fontFamily='Arial, sans-serif';table.style.width='100%';table.style.maxWidth='800px';table.style.marginLeft='auto';table.style.marginRight='auto';table.style.border='2px solid #333';table.style.backgroundColor='#f4f4f9';table.innerHTML=`<thead><tr><th style="border: 1px solid #333; background-color: #3c8dbc; color: white; padding: 8px; text-align: center; font-size: 18px;">Röstgivare</th><th style="border: 1px solid #333; background-color: #3c8dbc; color: white; padding: 8px; text-align: center; font-size: 18px;">Röster</th><th style="border: 1px solid #333; background-color: #3c8dbc; color: white; padding: 8px; text-align: center; font-size: 18px;">Länk</th></tr></thead>`;const tbody=document.createElement('tbody');Object.entries(latestVotes).forEach(([from,toList])=>{const postId=latestLinks[from];const link=`https://www.rollspel.nu/threads/bh-ii-r1.85315/post-${postId}`;const tr=document.createElement('tr');tr.style.backgroundColor='#ffffff';tr.style.borderBottom='1px solid #ddd';tr.innerHTML=`<td style="border: 1px solid #333; padding: 8px; text-align: center; font-size: 16px;">${from}</td><td style="border: 1px solid #333; padding: 8px; text-align: center; font-size: 16px;">${toList.join(', ')}</td><td style="border: 1px solid #333; padding: 8px; text-align: center; font-size: 16px;"><a href="${link}" target="_blank" style="color: #007bff;">#${postId}</a></td>`;tbody.appendChild(tr);});table.appendChild(tbody);document.body.appendChild(table);const hr=document.createElement('hr');hr.style.margin='20px 0';hr.style.borderTop='3px solid #333';document.body.appendChild(hr);const dangerText=document.createElement('div');dangerText.textContent=`Risk för utröstning: ${mostVoted}`;dangerText.style.fontSize='22px';dangerText.style.fontWeight='bold';dangerText.style.color='#d9534f';dangerText.style.textAlign='center';document.body.appendChild(dangerText);})();
Nu får du en tabell med alla röster i rad, länk till senaste rösten och en rad med vem som riskerar att åka ut längst ner.

Här är ställningen just nu:
C2.PNG
 

Anthrox

Kulturvetaringenjör
Joined
8 Jun 2017
Messages
5,460
Ok, en sista version (om ni inte säger att den är fel på något vis):

1) Skapa bokmärke
2) Editera det. Sätt namn till vad som helst
3) I URL tar du bort allt som står och klistrar in allt detta:
Code:
javascript:(async function(){const threadUrl='https://www.rollspel.nu/threads/bh-ii-r1.85315/';const voteRegex=/Röst:\s*@?([A-Za-z0-9_åäöÅÄÖ\- ]+)/i;const votes=[];for(let page=1;page<=50;page++){const url=page===1?threadUrl:`${threadUrl}page-${page}`;try{const response=await fetch(url);if(!response.ok)throw new Error(`Misslyckades att hämta sida ${page}`);const html=await response.text();const parser=new DOMParser();const doc=parser.parseFromString(html,'text/html');const posts=doc.querySelectorAll('article[data-author]');posts.forEach(post=>{const username=post.getAttribute('data-author');post.querySelectorAll('blockquote').forEach(bq=>bq.remove());const content=post.querySelector('.message-content')?.textContent;const postId=post.id?.replace('js-post-','');if(content){const match=content.match(voteRegex);if(match&&postId){votes.push({from:username,to:match[1],postId});}}});const nextPage=doc.querySelector('.pageNav-jump--next');if(!nextPage)break;}catch(err){console.error(err);break;}}const latestVotes={};const latestLinks={};votes.forEach(v=>{if(!latestVotes[v.from]){latestVotes[v.from]=[];}latestVotes[v.from].push(v.to);latestLinks[v.from]=v.postId;});const voteCounts={};Object.values(latestVotes).forEach(toList=>{toList.forEach(to=>{voteCounts[to]=(voteCounts[to]||0)+1;});});let mostVoted=null;let mostVotes=-1;for(const[person,count]of Object.entries(voteCounts)){if(count>mostVotes){mostVotes=count;mostVoted=person;}}const table=document.createElement('table');table.style.borderCollapse='collapse';table.style.marginTop='20px';table.style.fontFamily='Arial, sans-serif';table.style.width='100%';table.style.maxWidth='800px';table.style.marginLeft='auto';table.style.marginRight='auto';table.style.border='2px solid #333';table.style.backgroundColor='#f4f4f9';table.innerHTML=`<thead><tr><th style="border: 1px solid #333; background-color: #3c8dbc; color: white; padding: 8px; text-align: center; font-size: 18px;">Röstgivare</th><th style="border: 1px solid #333; background-color: #3c8dbc; color: white; padding: 8px; text-align: center; font-size: 18px;">Röster</th><th style="border: 1px solid #333; background-color: #3c8dbc; color: white; padding: 8px; text-align: center; font-size: 18px;">Länk</th></tr></thead>`;const tbody=document.createElement('tbody');Object.entries(latestVotes).forEach(([from,toList])=>{const postId=latestLinks[from];const link=`https://www.rollspel.nu/threads/bh-ii-r1.85315/post-${postId}`;const tr=document.createElement('tr');tr.style.backgroundColor='#ffffff';tr.style.borderBottom='1px solid #ddd';tr.innerHTML=`<td style="border: 1px solid #333; padding: 8px; text-align: center; font-size: 16px;">${from}</td><td style="border: 1px solid #333; padding: 8px; text-align: center; font-size: 16px;">${toList.join(', ')}</td><td style="border: 1px solid #333; padding: 8px; text-align: center; font-size: 16px;"><a href="${link}" target="_blank" style="color: #007bff;">#${postId}</a></td>`;tbody.appendChild(tr);});table.appendChild(tbody);document.body.appendChild(table);const hr=document.createElement('hr');hr.style.margin='20px 0';hr.style.borderTop='3px solid #333';document.body.appendChild(hr);const dangerText=document.createElement('div');dangerText.textContent=`Risk för utröstning: ${mostVoted}`;dangerText.style.fontSize='22px';dangerText.style.fontWeight='bold';dangerText.style.color='#d9534f';dangerText.style.textAlign='center';document.body.appendChild(dangerText);})();
Nu får du en tabell med alla röster i rad, länk till senaste rösten och en rad med vem som riskerar att åka ut längst ner.

Här är ställningen just nu:
View attachment 23765
Hägerstrand röstar roligt
 

Anthrox

Kulturvetaringenjör
Joined
8 Jun 2017
Messages
5,460
Troubadix ställer sig vid Octagonal och börjar stämma sin harpa. Sången sjungs senare ikväll, om inte Troubadix väljer att sjunga för någon annan.
Åh! Kewl! Det här måste ju gå att utnyttja på något sätt? Antar att det betyder att siaren inte får byta mål efter att ha valt ett?
 

Big Mama

Hur länge kan man kalla sig ny
Joined
9 Jun 2024
Messages
521
God förmiddag! Jag har varit och simmat. Luther jobbar nu 9.30-18. Sedan middag hos kompis. Sedan umgås med pojkvän. Men jag hinner in och ändra röstning innan 21.

Tills vidare,
Röst: @Vimes

Ditt låtsasgräv på mig går väl ingen på!
 

Hägerstrand

Ballofix
Joined
2 Dec 2022
Messages
2,057
Åh! Kewl! Det här måste ju gå att utnyttja på något sätt? Antar att det betyder att siaren inte får byta mål efter att ha valt ett?
”om inte Troubadix väljer att sjunga för någon annan.”

@damogn : betyder det här att resultatet av siandet också postas i speltråden?
 
Top