Full stack web developer with over 15 years of experience. Started with PHP, now delving into go and rust.
- Leverkusen, Germany
- https://pakl.dev/
Pinned Loading
-
ProcessAffinityWatcher
ProcessAffinityWatcher PublicWatch processes and automatically set processor affinity.
C# 1
-
Nightbot command to roll dice
Nightbot command to roll dice 1Simple Nightbot command to roll any number of any kind of dice
23```4$(eval var i=parseInt,d=[],e='$(provider)'=='twitch'?'melziiD20':'🎲20',j=0,l,m='$(query)'.match(/^(([0-9]+)\s+)?(([0-9]+)?d([0-9]+)|([0-9]+))$/)??{},c=i(m[2]??1),n=i(m[4]??1),s=i(m[5]??m[6]??20);c=c>20?20:(c<1||!c?1:c);n=(n<1?1:n);s=(s<1?1:s);for(;j<c;j+=1){d.push(Math.round(n*(s-1)*Math.random())+n)}r=`$(user) rolled ${d.join(', ')} with ${n<2?'a ':n+'×'}🎲`+s;l=r.lastIndexOf(',');(l<0?r:r.substr(0,l)+' and'+r.substr(l+1)).replace(/( |🎲)20(,| |$)/g,` ${ e } $2`))5``` -
[Firebot] Raid Message Generator: Qu...
[Firebot] Raid Message Generator: Quickly generate a raid message for both your subscribers and non-subscribers 1{"name":"Raid Message Generator","description":"Quickly generate a raid message for both your subscribers and non-subscribers.\n\nTo make everything work you need to edit the created Raidgen preset effect list.\nYou will find two custom variables:\n* `emoteMap`<br>This maps your subscriber emotes to a global emotes. You don't have to map every emote, but any emote that isn't mapped will be replaced by the TombRaid emote. To map an emote enter the name of *your* emote and the emote it should be replaced with right after, seperated by a white-space character (e.g. space, new line, tab). I like to put spaces between the map emotes and new lines between each pair for best readability. When you go to edit it you'll see an example configuration with some Melzii emotes. It looks like this:\n ```\n melziiSpicyLove VirtualHug\n melziiFeelsWowzii BegWan\n ```\n* `emotePrefix`<br>This is your emote prefix. Any emote that is not in the emote map and does not start with your emote prefix will be assumed globally accessible and not be changed for the non-sub raid message. In case of Melzii this would be `melzii`.\n\nFind me here: [pakl.dev](https://pakl.dev) or [lechepicante.rocks](https://lechepicante.rocks)","version":1,"author":"PakL","website":"https://pakl.dev","components":{"commands":[{"active":true,"simple":false,"sendCooldownMessage":true,"cooldownMessage":"This command is still on cooldown for: {timeLeft}","cooldown":{},"effects":{"id":"239aa0be-69c9-4a86-a595-654fa4e9ed40","list":[{"id":"1b7fdac4-63e4-43c0-a224-719727e57a56","type":"firebot:run-effect-list","active":true,"listType":"preset","presetListArgs":{"messageWOEmotes":"$chatMessageTextOnly[true]","messageEmotes":"$chatMessageEmoteNames"},"effectList":{"list":[],"id":"1816beaf-4cf0-4c2e-be84-aa8f4d5f1c66"},"presetListId":"ead2c173-8750-4dd3-81bb-2690a5497179","percentWeight":null}]},"restrictionData":{"restrictions":[{"id":"d7c051e8-49b5-4f9e-a450-82fd08e059ed","type":"firebot:permissions","mode":"roles","roleIds":["broadcaster"],"ranks":[]}],"mode":"all","sendFailMessage":true,"failMessage":"Sorry @{user}, you cannot use this command because: {reason}","sendAsReply":false},"aliases":[],"sortTags":[],"treatQuotedTextAsSingleArg":false,"allowTriggerBySharedChat":"inherit","trigger":"!raidgen","id":"eab9d332-7c56-4650-8ebb-24816469b974","createdBy":"pakl","createdAt":"2025-12-03T18:06:28.525+01:00","type":"custom","lastEditBy":"pakl","lastEditAt":"2025-12-03T19:21:53.815+01:00","hidden":true}],"counters":[],"currencies":[],"effectQueues":[],"events":[],"eventGroups":[],"hotkeys":[],"presetEffectLists":[{"name":"Raidgen","effects":{"list":[{"id":"53158cbd-7c33-4cf5-9ec5-76b85e412fc2","type":"firebot:customvariable","active":true,"ttl":0,"name":"emoteMap","variableData":"melziiSpicyLove VirtualHug\nmelziiFeelsWowzii BegWan","percentWeight":null},{"id":"e8286929-ea50-449a-9c18-a7ba1ddd7568","type":"firebot:customvariable","active":true,"ttl":0,"name":"emotePrefix","variableData":"melzii","percentWeight":null},{"id":"c56cc255-fbf2-48c6-8a18-2d48e09bd577","type":"firebot:eval-js","active":true,"parameters":["$#messageWOEmotes","$#messageEmotes","$customVariable[emoteMap]","$customVariable[emotePrefix]"],"code":"const splits = parameters[0].match(/\"(.*?)\"|(\\S+)/g);\n\nconst m = [];\nconst e = typeof(parameters[1]) === \"string\" ? JSON.parse(parameters[1]) : parameters[1];\n\nif (splits) {\n for (let i = 0; i < splits.length; i++) {\n splits[i] = splits[i].replace(/^\"(.*)\"$/, '$1')\n }\n m.push(...splits);\n}\n\nconst emoteMap = {};\nconst emSplits = parameters[2].match(/(\\S+)/g);\nif (emSplits && emSplits.length % 2 === 0) {\n for (let i = 0; i < emSplits.length; i = i+2) {\n emoteMap[emSplits[i]] = emSplits[i+1];\n }\n}\n\nif (Object.keys(emoteMap).length <= 0) {\n return [\"Invalid emote map\", null, null];\n}\n\nif (m.length <= 0) {\n return [\"Empty message\", null, null];\n}\n\nif (e.length <= 0) {\n let emotes = Object.keys(emoteMap);\n for (let i = 0; i < 3; i++)\n e.push(emotes[Math.floor(Math.random() * emotes.length)]);\n}\n\nfunction exchangeEmote(e) {\n if (typeof (emoteMap[e]) === 'string') {\n return emoteMap[e];\n } else if (!e.startsWith(parameters[3])) {\n return e;\n }\n return \"TombRaid\";\n}\n\nlet rmsg = '', rmsgsub = '';\nrmsg += exchangeEmote(e[0]);\nrmsgsub += e[0];\n\nlet emoterotation = 1;\nfor (let i = 0; i < 5; i++) {\n let hypeparts = [], hypesubparts = [];\n for (let j = 0; j < m.length; j++) {\n let text = m[j];\n if (text.length < 4 && (j + 1) < m.length) {\n j++;\n text += ' ' + m[j];\n }\n hypeparts.push(...[text, exchangeEmote(e[emoterotation])]);\n hypesubparts.push(...[text, e[emoterotation]]);\n emoterotation++;\n if (emoterotation >= e.length) emoterotation = 0;\n }\n if ((rmsg + ' ' + hypeparts.join(' ')).length > 400 || (rmsgsub + ' ' + hypesubparts.join(' ')).length > 400) {\n break;\n } else {\n rmsg = rmsg + ' ' + hypeparts.join(' ');\n rmsgsub = rmsgsub + ' ' + hypesubparts.join(' ');\n }\n}\n\nreturn [\"\", rmsg, rmsgsub];","percentWeight":null,"outputNames":{"jsResult":"genResult"}},{"id":"2416a7f2-a0ed-447f-8fd7-89f97629063a","type":"firebot:conditional-effects","active":true,"ifs":[{"conditionData":{"mode":"exclusive","conditions":[{"type":"firebot:custom","comparisonType":"is not","value":null,"leftSideValue":"$arrayElement[$effectOutput[genResult], 0]","rightSideValue":""}]},"effectData":{"list":[{"id":"9603df23-f883-466c-9ff8-7733ea8b4539","type":"firebot:chat","active":true,"chatter":"Streamer","sendAsReply":false,"message":"Raid message generation failed: $arrayElement[$effectOutput[genResult], 0]","percentWeight":null}],"id":"4938bd8d-8dd4-4231-bd3b-d927b4d88354"}}],"otherwiseEffectData":{"list":[{"id":"0a87506b-8647-48c0-be2e-b2b140abfb60","type":"firebot:chat","active":true,"chatter":"Streamer","message":"Subscribers, copy this:","percentWeight":null,"effectLabel":"Subscribers, copy this:"},{"id":"4a41386b-4b6c-4fcc-b569-e7268dde4fe9","type":"firebot:chat","active":true,"chatter":"Streamer","message":"$arrayElement[$effectOutput[genResult], 2]","percentWeight":null},{"id":"8f035d21-ec6d-4896-b529-6f05a1d822f0","type":"firebot:chat","active":true,"chatter":"Streamer","message":"Non-subs, copy this:","percentWeight":null,"effectLabel":"Non-subs, copy this:"},{"id":"a02f2982-9717-4d87-b938-5009aab73990","type":"firebot:chat","active":true,"chatter":"Streamer","message":"$arrayElement[$effectOutput[genResult], 1]","percentWeight":null}],"id":"7b415647-de46-420c-92c0-50e8d189f37b"},"percentWeight":null}],"id":"2f81cbcd-4634-433b-ad26-89bad2748de2"},"args":[{"name":"messageWOEmotes"},{"name":"messageEmotes"}],"sortTags":[],"id":"ead2c173-8750-4dd3-81bb-2690a5497179"}],"timers":[],"scheduledTasks":[],"variableMacros":[],"viewerRoles":[],"viewerRankLadders":[],"quickActions":[]},"requireCurrency":false,"importQuestions":[]} -
SkyrimIntegrationBridge
SkyrimIntegrationBridge PublicCommand line application accompanying my Integration Bridge mode for Skyrim
Rust 2
-
-
Installer batch for Star Wars: Behin...
Installer batch for Star Wars: Behind The Magic 1# Star Wars: Behind The Magic - Installer Batch23Star Wars: Behind The Magic is a multimedia CD-ROM released in 1998 for Windows 95/98. Due to the nature of the installer, the software cannot be installed on a modern Windows even though the rest of the software itself runs fine.
45The batch below will copy all necessary files and create all necessary registry entries for the software to function. It will also create two DXWnd profiles you can import to run it in a borderless window.
Something went wrong, please refresh the page to try again.
If the problem persists, check the GitHub status page or contact support.
If the problem persists, check the GitHub status page or contact support.



