We have a Steam curator now. You should be following it. https://store.steampowered.com/curator/44994899-RPGHQ/
RPGHQ HAS BEEN TARGETED BY GLOBALISTS! WE'VE BEEN DEPLATFORMED! DON'T LET THEM TURN THE FROGS GAY!!

HQ doesn't use ads or trackers; we rely entirely on donations from the community to fund operations and development. This independence ensures we can continue without any outside interference.

Click here to see donation options.

We have a new chat service

HQ-related news you should probably read.
User avatar
rusty_shackleford
Site Admin
Posts: 12224
Joined: Feb 2, '23
Gender: Watermelon

We have a new chat service

Post by rusty_shackleford »

https://chat.rpghq.org/

It directly bridges with our IRC room, so there is no pressure to switch over if you're fine using IRC.
Last edited by rusty_shackleford on May 25th, 2024, 07:27, edited 1 time in total.
Steam friend code: 40552640
https://steamcommunity.com/friends/add
User avatar
dolor
Posts: 68
Joined: Apr 28, '24

Post by dolor »

is there an ignore feature?
User avatar
rusty_shackleford
Site Admin
Posts: 12224
Joined: Feb 2, '23
Gender: Watermelon

Post by rusty_shackleford »

For those that prefer it, Lounge can still be accessed at https://rpghq.org/chat it won't be going away.
Steam friend code: 40552640
https://steamcommunity.com/friends/add
User avatar
Slavic Sorcerer
Posts: 930
Joined: Sep 9, '23
Location: Poland

Post by Slavic Sorcerer »

"How to connect using desktop version" guide for dummies would be kino
It's just my opinion, not the absolute truth
___________________________________

"Why don't you put that in your signature instead of having to type it every week?"
~Dead about me being gay

"Read his signature, he's gay"
~Dead
User avatar
WhiteShark
Turtle
Turtle
Posts: 2560
Joined: Feb 2, '23

Post by WhiteShark »

[m]  
User avatar
StudiedAsleep
Posts: 268
Joined: Apr 6, '24
Location: United Kingdom

Post by StudiedAsleep »

Hi, where is chat? I can't find it anywhere.
User avatar
SpellSword
Posts: 222
Joined: Jun 15, '23

Post by SpellSword »

I noticed that I got two invites when I tried joining the chat.
Image
Do I need to accept them for the IRC bridging to work?
The three evils that humanity faces:
Censorship
Telemetry
DRM
User avatar
rusty_shackleford
Site Admin
Posts: 12224
Joined: Feb 2, '23
Gender: Watermelon

Post by rusty_shackleford »

SpellSword wrote: May 25th, 2024, 22:41
I noticed that I got two invites when I tried joining the chat.
Image
Do I need to accept them for the IRC bridging to work?
nope, you can if you want to
Steam friend code: 40552640
https://steamcommunity.com/friends/add
User avatar
SpellSword
Posts: 222
Joined: Jun 15, '23

Post by SpellSword »

rusty_shackleford wrote: May 25th, 2024, 22:42
SpellSword wrote: May 25th, 2024, 22:41
I noticed that I got two invites when I tried joining the chat.
Image
Do I need to accept them for the IRC bridging to work?
nope, you can if you want to
I'm unfamiliar with Cinny what am I accepting?
The three evils that humanity faces:
Censorship
Telemetry
DRM
User avatar
Vergil
Posts: 4908
Joined: Sep 6, '23

Post by Vergil »

I declined them but we warned it'll invite you every time you log in if you log out.
Sweet as a sugar plum
User avatar
rusty_shackleford
Site Admin
Posts: 12224
Joined: Feb 2, '23
Gender: Watermelon

Post by rusty_shackleford »

SpellSword wrote: May 25th, 2024, 22:45
rusty_shackleford wrote: May 25th, 2024, 22:42
SpellSword wrote: May 25th, 2024, 22:41
I noticed that I got two invites when I tried joining the chat.
Image
Do I need to accept them for the IRC bridging to work?
nope, you can if you want to
I'm unfamiliar with Cinny what am I accepting?
one is a PM from the IRC bridge bot, the other is a PM from the IRC network itself
Steam friend code: 40552640
https://steamcommunity.com/friends/add
User avatar
asf
Turtle
Turtle
Posts: 750
Joined: Feb 2, '23
Gender: Helicopter

Post by asf »

chat is now all gayed up
User avatar
Vergil
Posts: 4908
Joined: Sep 6, '23

Post by Vergil »

asf wrote: May 25th, 2024, 22:52
chat is now all gayed up
You don't have to announce your arrival everytime like this.
Sweet as a sugar plum
User avatar
Decline
Posts: 699
Joined: Mar 29, '23

Post by Decline »

Vergil wrote: May 25th, 2024, 23:07
asf wrote: May 25th, 2024, 22:52
chat is now all gayed up
You don't have to announce your arrival everytime like this.
User avatar
loregamer
Posts: 460
Joined: Dec 3, '23

Post by loregamer »

Userscript to add profile pics and "[irc]" to irc users
Image

Code: Select all

// ==UserScript==
// @name         Add User Pictures and Add [irc] to Names
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  Add pictures to users in Cinny Matrix client by user ID and add [irc] to their display names
// @author       loregamer
// @match        https://chat.rpghq.org/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=rpghq.org
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const userPictures = [
        {
            userId: '@irc_Gregz:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=87'
        },
        {
            userId: '@irc_Kalarion:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=71'
        },
        {
            userId: '@irc_Kalarion1:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=71'
        },
        {
            userId: '@irc_Kalarion7:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=71'
        },
        {
            userId: '@irc_Kalarionis:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=71'
        },
        {
            userId: '@irc_Tweed:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=68'
        },
        {
            userId: '@irc_Tweedagain:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=68'
        },
        {
            userId: '@irc_WhiteShark:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=63'
        },
        {
            userId: '@irc_decline:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=225'
        },
        {
            userId: '@irc_Norfleet:rpghq.org',
            baseImageUrl: 'https://i.postimg.cc/T2z1mDLK/image'
        },
        {
            userId: '@irc_Sex_Cult_Leader:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=65'
        },
        {
            userId: '@irc_stackofturtles:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=3301'
        },
        {
            userId: '@irc_twig:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=2'
        },
        {
            userId: '@irc_Roguey:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=86'
        },
        {
            userId: '@irc_Chonkem:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=69'
        },
        {
            userId: '@irc_Chonkem:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=69'
        },
        {
            userId: '@irc_herkzter:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=289'
        },
        {
            userId: '@irc_The_Mask:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=113'
        },
        {
            userId: '@irc_Eyestabber:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=85'
        },
        {
            userId: '@irc_wraith:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=62'
        },
        {
            userId: '@irc_rusty_mobile:rpghq.org',
            baseImageUrl: 'https://rpghq.org/forums/download/file.php?avatar=58'
        }
    ];

    function setImageSource(img, baseImageUrl) {
        const extensions = ['jpg', 'jpeg', 'png', 'gif'];
        let imageSet = false;

        extensions.forEach(ext => {
            if (!imageSet) {
                const imgSrc = `${baseImageUrl}.${ext}`;
                const testerImg = new Image();
                testerImg.src = imgSrc;

                testerImg.onload = () => {
                    if (testerImg.complete && testerImg.naturalHeight !== 0) {
                        img.src = imgSrc;
                        imageSet = true;
                    }
                };

                testerImg.onerror = () => {
                    if (!imageSet) {
                        img.src = `${baseImageUrl}.jpg`; // Fallback
                    }
                };
            }
        });
    }

    function addUserPictures() {
        const allUserElements = document.querySelectorAll('[data-user-id], .profile-viewer__user__info, .prxiv40, ._13tt0gb6');

        allUserElements.forEach(function(element) {
            const userId = element.getAttribute('data-user-id') || element.querySelector('p.text.text-b2.text-normal, p._1xny9xlc')?.textContent;
            const avatarContainer = element.querySelector('span._1684mq5d, .avatar__border, span._1684mq51');
            const displayNameElement = element.querySelector('span._1xny9xl0 b, h4.text.text-s1.text-medium, p._1xny9xl0, span._1xny9xl1');

            const user = userPictures.find(user => user.userId === userId);

            if (user && avatarContainer) {
                if (!avatarContainer.querySelector('img')) {
                    const img = document.createElement('img');
                    img.alt = user.userId;
                    img.classList.add('_1684mq5c', '_1mqalmd1', '_1mqalmd0', 'awo2r00');
                    img.style.width = '100%';
                    img.style.height = '100%';
                    setImageSource(img, user.baseImageUrl);

                    avatarContainer.innerHTML = '';
                    avatarContainer.appendChild(img);
                }
            }

            if (userId && userId.includes('@irc') && displayNameElement && !displayNameElement.textContent.includes('[irc]') && !element.classList.contains('_13tt0gb6')) {
                displayNameElement.textContent += ' [irc]';
            }
        });
    }

    function addSidebarNames() {
        const sidebarElements = document.querySelectorAll('[data-user-id], .prxiv40, ._13tt0gb6');

        sidebarElements.forEach(function(element) {
            const userId = element.getAttribute('data-user-id') || element.querySelector('p._1xny9xlc')?.textContent;
            const sidebarNameElement = element.querySelector('div.prxiv40._1mqalmd1._1mqalmd0.prxiv41.prxiv41s p._1xny9xl0._1mqalmd1._1mqalmd0._1xny9xla._1xny9xlr._1xny9xln, span._1xny9xl1');

            if (userId && userId.includes('@irc') && sidebarNameElement && !sidebarNameElement.textContent.includes('[irc]')) {
                sidebarNameElement.textContent += ' [irc]';
            }
        });
    }

    function updateProfileViewer() {
        const profileViewerElements = document.querySelectorAll('.ReactModal__Content .profile-viewer__user__info');

        profileViewerElements.forEach(function(element) {
            const userIdElement = element.querySelector('p.text.text-b2.text-normal');
            if (userIdElement) {
                const userId = userIdElement.textContent;
                const user = userPictures.find(user => user.userId === userId);
                const avatarContainer = element.closest('.profile-viewer__user').querySelector('.avatar-container');

                if (user && avatarContainer) {
                    if (!avatarContainer.querySelector('img')) {
                        const img = document.createElement('img');
                        img.draggable = false;
                        img.alt = user.userId;
                        img.style.backgroundColor = 'transparent';
                        setImageSource(img, user.baseImageUrl);
                        avatarContainer.innerHTML = '';
                        avatarContainer.appendChild(img);
                    }
                }
            }
        });
    }

    function updatePingUserBox() {
        const pingUserBoxElements = document.querySelectorAll('._13tt0gb6');

        pingUserBoxElements.forEach(function(element) {
            const userIdElement = element.querySelector('p._1xny9xlc');
            if (userIdElement) {
                const userId = userIdElement.textContent;
                const user = userPictures.find(user => user.userId === userId);
                const avatarContainer = element.querySelector('span._1684mq5d, span._1684mq51');

                if (user && avatarContainer) {
                    if (!avatarContainer.querySelector('img')) {
                        const img = document.createElement('img');
                        img.draggable = false;
                        img.alt = user.userId;
                        img.classList.add('_1684mq5c', '_1mqalmd1', '_1mqalmd0', 'awo2r00');
                        img.style.width = '32px';
                        img.style.height = '32px';
                        setImageSource(img, user.baseImageUrl);
                        avatarContainer.innerHTML = '';
                        avatarContainer.appendChild(img);
                    }
                }
            }
        });
    }

    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            if (mutation.addedNodes.length > 0) {
                addUserPictures();
                addSidebarNames();
                updateProfileViewer();
                updatePingUserBox();
            }
        });
    });

    observer.observe(document.body, { childList: true, subtree: true });

    window.addEventListener('load', function() {
        addUserPictures();
        addSidebarNames();
        updateProfileViewer();
        updatePingUserBox();
    });

    function handleDynamicElements() {
        document.body.addEventListener('DOMNodeInserted', function(event) {
            if (event.target && event.target.classList && event.target.classList.contains('ReactModal__Content')) {
                addUserPictures();
                addSidebarNames();
                updateProfileViewer();
                updatePingUserBox();
            }
        });
    }

    handleDynamicElements();
})();
Last edited by loregamer on June 19th, 2024, 05:23, edited 6 times in total.
User avatar
rusty_shackleford
Site Admin
Posts: 12224
Joined: Feb 2, '23
Gender: Watermelon

Post by rusty_shackleford »

Those avatar URLs aren't stable, you can use the URL with just the user ID to get a stable one e.g.,
download/file.php?avatar=87.jpg
Steam friend code: 40552640
https://steamcommunity.com/friends/add
User avatar
loregamer
Posts: 460
Joined: Dec 3, '23

Post by loregamer »

rusty_shackleford wrote: June 16th, 2024, 19:37
Those avatar URLs aren't stable, you can use the URL with just the user ID to get a stable one e.g.,
download/file.php?avatar=87.jpg
Cool cool. Any chance you could make it so I could fetch avatars with a username? Then I think I could make it so we don't have to just add to the array manually.
User avatar
rusty_shackleford
Site Admin
Posts: 12224
Joined: Feb 2, '23
Gender: Watermelon

Post by rusty_shackleford »

loregamer wrote: June 16th, 2024, 19:40
rusty_shackleford wrote: June 16th, 2024, 19:37
Those avatar URLs aren't stable, you can use the URL with just the user ID to get a stable one e.g.,
download/file.php?avatar=87.jpg
Cool cool. Any chance you could make it so I could fetch avatars with a username? Then I think I could make it so we don't have to just add to the array manually.
Don't think there's any way to fetch usernames by user ID, off the top of my head anyways
Steam friend code: 40552640
https://steamcommunity.com/friends/add
User avatar
asf
Turtle
Turtle
Posts: 750
Joined: Feb 2, '23
Gender: Helicopter

Post by asf »

ban everybody not using irc, problem solved
User avatar
loregamer
Posts: 460
Joined: Dec 3, '23

Post by loregamer »

Added some more user PFPs and used the stable URLs
User avatar
Tweed
Turtle
Turtle
Posts: 1808
Joined: Feb 2, '23

Post by Tweed »

I've called the FBI.
User avatar
Eyestabber
Turtle
Turtle
Posts: 175
Joined: Feb 4, '23

Post by Eyestabber »

rusty_shackleford wrote: May 25th, 2024, 06:31
https://chat.rpghq.org/

It directly bridges with our IRC room, so there is no pressure to switch over if you're fine using IRC.
Where is the "decline" button?
User avatar
loregamer
Posts: 460
Joined: Dec 3, '23

Post by loregamer »

loregamer wrote: June 16th, 2024, 19:35
Userscript to add profile pics and "[irc]" to irc users
Alright script is finalized and should be safe from any avatar updates. Should work on any popups and whatnot as well.

Image

I couldn't get srcset working, though @rusty_shackleford. If it contains links that are invalid in srcset then it breaks for me
User avatar
Shillitron
Turtle
Turtle
Posts: 1904
Joined: Feb 6, '23
Location: ADL Head Office

Post by Shillitron »

loregamer wrote: June 17th, 2024, 01:05
Alright script is finalized and should be safe from any avatar updates.
POAST IT
---
User avatar
rusty_shackleford
Site Admin
Posts: 12224
Joined: Feb 2, '23
Gender: Watermelon

Post by rusty_shackleford »

things IRC losers miss out on
Image
Steam friend code: 40552640
https://steamcommunity.com/friends/add
User avatar
The_Mask
Posts: 1929
Joined: Feb 6, '23
Location: The land of ice and snow

Post by The_Mask »

No such thing.
Just like Yves, I chase tales
User avatar
Segata
Turtle
Turtle
Posts: 1915
Joined: Feb 2, '23
Location: Sega Saturn, Shiro!
Gender: Watermelon

Post by Segata »

Please notice me senpai!!!
User avatar
Kalarion
Turtle
Turtle
Posts: 493
Joined: Feb 2, '23

Post by Kalarion »

loregamer wrote: June 17th, 2024, 01:05
loregamer wrote: June 16th, 2024, 19:35
Userscript to add profile pics and "[irc]" to irc users
Alright script is finalized and should be safe from any avatar updates. Should work on any popups and whatnot as well.

Image

I couldn't get srcset working, though @rusty_shackleford. If it contains links that are invalid in srcset then it breaks for me
This is rape.
User avatar
Watser
Turtle
Turtle
Posts: 333
Joined: Feb 3, '23
Location: Heard & McDonald Islands

Post by Watser »

This is the third worst thing to have happened to RPGHQ.
It's over.
User avatar
Val the Moofia Boss
Turtle
Turtle
Posts: 474
Joined: Jun 3, '23

Post by Val the Moofia Boss »

Watser wrote: June 17th, 2024, 19:29
This is the third worst thing to have happened to RPGHQ.
The first two being?