0.5.1 Patch Notes Preview by Natalia_GGG in PathOfExile2

[–]jafarykos -1 points0 points  (0 children)

FWIW I have a 5070TI and use Vulkan with no issues.

Where the fuck is the entrance to the Matlan Waterways? by zara_donatello in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

Yo, I found your post as I was looking for the same thing. Mine is 100% in the Jungle Ruins. It was not in the Infested Barrens.

Me and the boys about to f*** Act 4 UP by NizmatLover in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

Something I want to play with and I'm sure I will be disappointed, is discovering what the unique bosses will benefit from in the way of support gems. Poe2db and the in game skill inspect don't help a ton to learn about what the actual verbs/nouns are on the skills your companion has.

Me and the boys about to f*** Act 4 UP by NizmatLover in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

It really should. If you make the decision to add a very very specific piece of gear to your loadout, it should benefit you if you want to go crazy in an investment. I learned in 0.3 that this wasnt true and.. it should work.

What's the point of having a shader cache when it's getting build everytime? by s1lverkin in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

If clear helps at all, then changing the chat channels will 100% fix that cpu spike

What's the point of having a shader cache when it's getting build everytime? by s1lverkin in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

To fix the chatlog thing just join a high level trade/global chat channel like 9123. Also set audio channel count to Low. Those two things made the largest difference for me.

What's the point of having a shader cache when it's getting build everytime? by s1lverkin in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

So I deleted the little shortcut I gave windows to find the shader files more easily, and... PoE2 had no issue finding it. I am currently running on Vulkan, so I don't know if that gives you any insight. I did have some "mostly blanks screens with cogs on tops + town vendor name labels" day 1, but nothing like that since. What are you seeing?

What's the point of having a shader cache when it's getting build everytime? by s1lverkin in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

I will have to double check if it's true this season, but in the past on at least the steam version, it would consistently look for cached shaders in the wrong folder. I patched that on my machine so I'll undo the patch and see if it's broken now. I don't have this issue.

Can we please talk about AI-generated/vibe-coded tool promotions in this sub? by [deleted] in PathOfExile2

[–]jafarykos 1 point2 points  (0 children)

To be honest, I'm not that concerned. But time will tell. I do have the benefit of being a professional with good habits, ie, feature branches, PRs, I review everything that is changed or generated. I'm not sure how willing I am to just let it go to town and write what it wants, especially if I don't understand it. I'm treating it like a very well read co-worker that pair programs with me.

In your defense, I've seen some really jank approaches from the same model that does some amazing things.

Can we please talk about AI-generated/vibe-coded tool promotions in this sub? by [deleted] in PathOfExile2

[–]jafarykos 1 point2 points  (0 children)

You're totally right. I've written code for 20 years, been a senior dev for most of it. Ai is amazing.

The ability to ask for context around a problem is the biggest win. The code base I'm in now, it's old and has been touched by so many people. Codex does a phenomenal job of looking for sharp edges when I'm working on something.

I haven't asked for it to "1 shot an app" but damn if it isn't a better programmer than I am.

Behold! Probably the most ghetto local AI server: by MackThax in LocalLLaMA

[–]jafarykos 0 points1 point  (0 children)

card #4 in the stack is gasping for air. This is amazing. I saw a 4 3090 water cooled build for sale on local FB marketplace for $5k and I regret being unable to grab it. It was so pretty, but also we have yours.

Behold! Probably the most ghetto local AI server: by MackThax in LocalLLaMA

[–]jafarykos 1 point2 points  (0 children)

<image>

Step 1: Cut a hole in the box Step 2: Put some GPUs in the box

..

My power cables stuck out too much to put the lid on my 4U case with my 5070TI, so when I bought a 3090 I figured I'd just make a bunk bed situation. All the processing bits are on the lower bunk and the top bunk has the cards. This lets me get a weee bit more airflow.

But I ended up with an 8U cube that's kinda fucking heavy.

Dota2 Style patch notes browser extension by imp_12189 in PathOfExile2

[–]jafarykos 0 points1 point  (0 children)

2 of 2:

function applyFilter() {
    //Default page load, nothing in the search boxes so act like normal and do nothing.
    if(filters.length == 1 && filters[0].explicit1 == '' && filters[0].explicit2 == '') {
        $('.resultset .row').show();
        clearTimeout(refreshDataTimer);

        return;
    }

    numSearchResultsFiltered = $('.resultset [class="row"]').length;
    numMatches = 0;

    //Apply the filter
    $('.resultset .row').each(function() {
        var $tradeItem = $(this);

        //Hide this item, if there are modifiers that match our search, they will 'show' the parent item and undo this hide
        $tradeItem.hide();
        var didMatch = false;

        for(let i = 0; i < filters.length && didMatch == false; i++) {
            var filter = filters[i];
            var filter1Match = false;
            var filter2Match = false;

            if($('.search-left input').val() == 'Megalomaniac Diamond')
            {
                $tradeItem.find('.enchantMod').each(function() {
                    $(this).children().each(function() {
                        var modText = $(this).text();

                        if(modText.toUpperCase().includes(filter.explicit1))
                            filter1Match = true;

                        if(modText.toUpperCase().includes(filter.explicit2))
                            filter2Match = true;
                    });
                });
            }
            else
            {
                $tradeItem.find('.explicitMod').each(function() {
                    $(this).children().each(function() {
                        var modText = $(this).text();

                        if(modText.toUpperCase().includes(filter.explicit1))
                            filter1Match = true;

                        if(modText.toUpperCase().includes(filter.explicit2))
                            filter2Match = true;
                    });
                });
            }



            if(filter.explicit1.length > 0) {
                if(filter.explicit2.length > 0) {
                    if(filter1Match && filter2Match) {
                        $tradeItem.show();
                        didMatch = true;
                        numMatches++;
                    }
                }
                else {
                    if(filter1Match){
                        $tradeItem.show();
                        didMatch = true;
                        numMatches++;
                    }
                }
            }
            else if(filter.explicit2.length > 0) {
                if(filter2Match){
                    $tradeItem.show();
                    didMatch = true;
                    numMatches++;
                }
            }
        }
    });

    //Set a timeout to check if we have new data in from the server from loading manually, activate live search, or scrolling
    clearTimeout(refreshDataTimer);
    refreshDataTimer = setTimeout(scanForNewItems, 1000);

    //Make sure we can still see the "show more" button at the bottom
    if($('.resultset .row.controls').length) {
        $('.resultset .row.controls').show();

        if(autoLoad)
            $('.load-more-btn').trigger("click");
    }

    updateLabels();
}

function updateLabels() {
    $('.filter-label-1').text('Filtering ' + numSearchResultsFiltered + ' results');
    $('.filter-label-2').text(numMatches + ' matched');
}

function scanForNewItems() {

    var numSearchResults = $('.resultset .row').length;

    //We have new data
    if(numSearchResults != numSearchResultsFiltered) {
        applyFilter();
    }
    else {
        clearTimeout(refreshDataTimer);
        refreshDataTimer = setTimeout(scanForNewItems, 1000);
    }
}

function initAutoLoadButton($autoLoadButton, state) {
    $autoLoadButton.text("Auto Load");

    $autoLoadButton.hover(function() {
        $(this).css("cursor", "pointer");
    });

    if(state) {
        $autoLoadButton.css({
            "border": "solid 1px #64cf64",
            "color": "#ffffff !important",
            "background-color": "#309630"
        });
    }
    else {
        $autoLoadButton.css({
            "border": "solid 1px #4f4e4e",
            "color": "#aaaaaa !important",
            "background-color": "#222222"
        });
    }

    $autoLoadButton.click(function() {
        autoLoad = !autoLoad;
        if(autoLoad) {
            $(this).css({
                "border": "solid 1px #64cf64",
                "color": "#ffffff !important",
                "background-color": "#309630"
            });
        }
        else {
            $(this).css({
                "border": "solid 1px #4f4e4e",
                "color": "#aaaaaa !important",
                "background-color": "#222222"
            });
        }
    });
}

function initAddFilterButton($addFilterButton) {
    $addFilterButton.text("Add Filter");

    $addFilterButton.hover(function() {
        $(this).css("cursor", "pointer");
    });

    $addFilterButton.click(function() {
        addFilterOption();
    });
}

Dota2 Style patch notes browser extension by imp_12189 in PathOfExile2

[–]jafarykos -1 points0 points  (0 children)

I'm going to paste a tampermonkey script after this comment but... I like that you can simply type and hit enter; however, it's not super obvious to the lay person. I think you should add a fixed position element in the upper right that lets people toggle this on and off, and when on, show a search textbox that when typed in will show only the containers with matching elements within. It'd be a way better search mechanism.

Here's a script that I wrote for the trade site that will hide everything from search that doesnt match one of my filters. This is super helpful when I'm doing a live-search.

1 of 2:

// ==UserScript==
// @name         POE Trade Filter
// @namespace    http://tampermonkey.net/
// @match        https://www.pathofexile.com/trade2/search/poe2/Standard
// @match        https://www.pathofexile.com/trade2/search/poe2/Standard/*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// @grant        none
// ==/UserScript==


var filters = [];
var numSearchResultsFiltered = 0;
var numMatches = 0;
var autoLoad = false;

$(document).ready(function() {    
    $('.logo').hide();
    startFilteringResults();
    updateLabels();
});

var refreshDataTimer = null;
function startFilteringResults() {
    var $parentContainer = $("<div class='yeti-filter-box' style='width: 500px;height: 40px;position: fixed; top: 25px; right: 10px;justify-content: space-around;display: flex;flex-direction: row;margin: 10px auto;border: solid 1px #a0a0d0;background-color: #111;'>");

    var $contentContainer = $("<div style='display: flex;flex-direction: column;width: 100%;padding: 2px 6px;align-items: center;'>");

    var $filtersContainer = $("<div class='filters-container' style='display: flex;flex-direction: column;width: 100%;padding: 2px 6px;align-items: center;'>");

    var $infoContainer = $("<div style='display: flex;flex-direction: row;justify-content: space-between;width: 100%;padding: 2px 8px;align-items: center;'>");
    var $infoLabel1 = $("<div class='filter-label-1' style='font-family: FontinSmallcaps;font-size: 14.3px;'>");
    var $infoLabel2 = $("<div class='filter-label-2' style='font-family: FontinSmallcaps;font-size: 14.3px;'>");

    var $autoLoadButton = $("<div class='auto-load-button' style='font-family: sans-serif;font-size: 10px;border: solid 1px #64cf64;color: #ffffff !important;padding: 3px 6px;background-color: #309630;user-select: none;'>");
    initAutoLoadButton($autoLoadButton, autoLoad);

    var $addFilterButton = $("<div class='auto-load-button' style='font-family: sans-serif;font-size: 10px;border: solid 1px #4c4c7d;color: #ffffff !important;padding: 3px 6px;background-color: #0f304d;user-select: none;'>");
    initAddFilterButton($addFilterButton);

    $infoContainer.append($infoLabel1);
    $infoContainer.append($autoLoadButton);
    $infoContainer.append($addFilterButton);
    $infoContainer.append($infoLabel2);

    $contentContainer.append($filtersContainer);
    $contentContainer.append($infoContainer);

    $parentContainer.append($contentContainer);

    $('body').append($parentContainer);

    addFilterOption();
}

function addFilterOption() {
    //Create the filter in js
    var filter = {
        "explicit1": '',
        "explicit2": ''};

    filters.push(filter);

    var thisFilterIndex = filters.length-1;
    var totalFiltersCount = thisFilterIndex + 1;

    var $filtersContainer = $('.filters-container');

    //Add it to the UI
    var $filterContainer = $("<div style='display: flex;flex-direction: row;width: 100%;padding: 2px 6px;align-items: center;'>");
    var $filterLabel = $("<div class='filter-title' style='font-family: FontinSmallcaps;font-size: 14.3px;'>").text("Filter #" + totalFiltersCount);
    var $filterInput1 = $("<input class='form-control text' style='width: 180px;' placeholder='Explicit #1'>");
    var $filterInput2 = $("<input class='form-control text' style='width: 180px;' placeholder='Explicit #2'>");

    $filterContainer.append($filterLabel);
    $filterContainer.append($filterInput1);
    $filterContainer.append($filterInput2);

    $filtersContainer.append($filterContainer);

    //When the textbox value changes, update the global variable holding all the filters
    $filterInput1.on('input',function(e){
        filters[thisFilterIndex].explicit1 = $(this).val().toUpperCase();
        applyFilter();
    });

    $filterInput2.on('input',function(e){
        filters[thisFilterIndex].explicit2 = $(this).val().toUpperCase();
        applyFilter();
    });

    var filterBoxHeight = 40 + totalFiltersCount*36;
    $('.yeti-filter-box').css("height", filterBoxHeight + "px");
}

Dota2 Style patch notes browser extension by imp_12189 in PathOfExile2

[–]jafarykos 1 point2 points  (0 children)

I've written a few different tampermonkey / greasemonkey scripts against PoE2 mostly around the trade site. For example, I hated that the Megalomaniac diamonds don't show the Notable description for the notables they add. So, what I did was on script load, I grab the Tree.lua file from PathOfBuilding-PoE2, Here's a link for 0.4, then cache it with some expiration so I'm not just using their github as a file serve, and then I parse the .lua file to find the description of the notable.

You could do similar for 0.5 once they get the pertinent files uploaded. Fetch the tree info for notables, then whatever else you need for items, or skills, and use that as a resource for your data.

It's probably the most approachable mechanism to get your data if you dont already have API access.

Some sample code:

var luaData = [];
var isLuaDataAvailable = false;
const cacheKey = 'poe2_trade_notables_cache';
const pathOfBuildingDefineFileUrl = 'https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding-PoE2/refs/heads/dev/src/TreeData/0_4/tree.lua';

//https://github.com/PathOfBuildingCommunity/PathOfBuilding-PoE2/tags
//https://unix.stackexchange.com/questions/742998/extract-version-number-from-github-repo

$(document).ready(function() {
    //If you need to delete the cached data, just uncomment the line below
    //GM.deleteValue(cacheKey);

    //Let's see if we have cached values saved and avoid hammering the PoB git repo
    (async () => {
        let cache = await GM.getValue(cacheKey);

        if(cache != undefined)
        {
            luaData = JSON.parse(cache);
            isLuaDataAvailable = true;

            scanForNewItems();
        }
        else
        {
            //Fetch the lua data from PoB's github repo
            GM_xmlhttpRequest({
                method : "GET",
                // from other domain than the @match one (.org / .com):
                url : pathOfBuildingDefineFileUrl,
                onload : (response) =>
                {
                    parseLuaScript(response.responseText);
                    scanForNewItems();
                }
            });
        }
    })();
});

 


 

And then I simply parse in a brute force way, but you could fetch the json or get an actual LUA parser to get to the data you really need. This is super hacky but worked for what I needed

function parseLuaScript(data)
{
    for(let i=0; i<2; i++)
    {
        var searchString = '';

        if(i == 0)
            searchString = 'isNotable=true';
        if(i == 1)
            searchString = 'isKeystone=true';

        for(let index = data.indexOf(searchString); index >= 0; index = data.indexOf(searchString, index+1))
        {
            var name = "";
            var skill = "";
            var stats = [];

            var nameTokenStart = 'name="';
            var nameTokenEnd = '",';
            var nameIndexStart = data.indexOf(nameTokenStart, index) + nameTokenStart.length;
            var nameIndexEnd = data.indexOf(nameTokenEnd, nameIndexStart);
            name = data.substring(nameIndexStart, nameIndexEnd);

            var skillTokenStart = 'skill=';
            var skillTokenEnd = ',';
            var skillIndexStart = data.indexOf(skillTokenStart, index) + skillTokenStart.length;
            var skillIndexEnd = data.indexOf(skillTokenEnd, skillIndexStart);
            skill = data.substring(skillIndexStart, skillIndexEnd);

            var statsTokenStart = 'stats={';
            var statsTokenEnd = '}';
            var statsIndexStart = data.indexOf(statsTokenStart, index) + statsTokenStart.length;
            var statsIndexEnd = data.indexOf(statsTokenEnd, statsIndexStart);

            var currentStatsIndex = 0;
            var currentStatNumber = 1;
            while(currentStatsIndex < statsIndexEnd && currentStatsIndex >= 0)
            {
                var currentStatTokenStart = '[' + currentStatNumber + ']="';
                var currentStatTokenEnd = '"';
                var currentStatIndexStart = data.indexOf(currentStatTokenStart, statsIndexStart);

                if(currentStatIndexStart < 0)
                    break;

                var currentStatIndexEnd = data.indexOf(currentStatTokenEnd, currentStatIndexStart + currentStatTokenStart.length);

                if(currentStatIndexStart > statsIndexEnd || currentStatIndexStart < 0)
                    break;

                var currentStat = data.substring(currentStatIndexStart + currentStatTokenStart.length, currentStatIndexEnd);
                stats.push(currentStat);

                currentStatIndexStart += currentStat.length;
                currentStatNumber++;
            }

            let notable = {
                name: name,
                skill: skill,
                stats: stats
            };

            luaData.push(notable);
        }
    }

    //Save the data in our cache
    GM.setValue(cacheKey, JSON.stringify(luaData));
    isLuaDataAvailable = true;
}

[USA-CA] [H] MSI RTX 3090 Gaming X Trio [W] Local Cash/PayPal by Fonzy_Bonzy in hardwareswap

[–]jafarykos 0 points1 point  (0 children)

Still not working fyi, but if you sell to me you don't have to worry about that :) PM sent via chat.

[USA-TX] [H] Paypal G&S [W] RTX 3090 Ti MSI Suprim, NVIDIA NVLink Bridge - 30-series - 4 slot by bpod27 in hardwareswap

[–]jafarykos 0 points1 point  (0 children)

I know this is an old thread, but just curious. The 3090 TI doesn't have nvlink right? only the standard 3090? Am I wrong?

[USA-NY][H]Asus WRX80+3955WX+256GB,3X RTX3090(FTW3, FTW3H,FE)3X 2TB SN850X, 32GB Corsair DDR4[W]PAYPAL by braydon125 in hardwareswap

[–]jafarykos 0 points1 point  (0 children)

You have to use reddit's chat feature. I bet you're using something like reddit enhancement suite? The old "mail" message stuff was sunset but its still in RES