Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Bytewave

Pages: [1] 2
Post link
Gaben's user page (Follow his replies to questions here)

They're trying to keep HL3 spam to a minimum, so please respect their rules. But, feel free to browse around, ask questions, whatever!

edit: Well, I suppose I was a little late, but Gabe had to go. Still, the questions are there, and so are the answers.

Off-Topic / $35 worth of SEGA games, free (at least for today)
« on: February 16, 2016, 01:54:03 PM »
Hash: SHA512

Just thought y'all would want to know: SEGA seems to be giving away ~$35's worth of their games for free today. You can find instructions on how to get them in the link below.
It doesn't seem to be any sort of trial or demo, either. Seems permanent.

Signing this message to prove it's not spam - verify at .
Version: Keybase OpenPGP v2.0.51


Releases / [Code Dump] Two addons from my now defunct TTT server
« on: February 15, 2016, 01:01:59 PM »
So, my TTT server had a long run, but ultimately I was forced to close it down due to a major security hole that had slipped under my nose that allowed for an attacker with some know-how to grab a list of the current online players' IP addresses. For those who are curious, it's a known exploit in PAC3, and if possible you should use some sort of http redirect to prevent serving content from unknown sources.

Anyway. I have two addons lying around that I had put together (probably from some other people's code, but at this point it's been too long to tell) for the server that I would rather not go to waste. They're small and mundane, but I know at least someone will get some use out of them.

I tried reformatting and refactoring these so they were at least a tiny bit sensible, but I can't say for sure if they work now. If they don't, I can release the original, untouched, working versions... you'll just have to edit out the pony stuff.

TTT Killer Stats
All this does is print out some information about who killed a player to chat in a nice format. Useful for raging at yourself for getting someone down to 1 HP but not killing them, or for more serious things like determining RDM.
TO DOWNLOAD: See the attached files in small font below this post.

TTT Role Counter
LIke the last one, this is pretty simple. This just counts the number of players with each role on the start of a round, and prints it to chat and to server console. Useful for knowing how at-risk you are. :p
TO DOWNLOAD: See the attached files in small font below this post.

NOTE: You MUST be registered and logged in to see attached files!

Update: I've signed the zip files with my PGP key, so if you want to verify your download, you can use their signatures:
(yes, it's kind of complicated -- run gpg --verify <filename>.zip.asc <filename>.zip and see if that works. ;P)

Off-Topic / So this just happened...
« on: March 24, 2015, 06:05:50 PM »
[19:29:28] Client "[REDACTED]" connected.
[19:30:31] Client "[REDACTED]" spawned in server <[REDACTED]> (took 63 seconds).
[19:30:32] Client "supermarioraymond1" connected.
[19:30:38] total takedown killed Master of Golfcarts™ using player
[19:31:07] Client "supermarioraymond1" spawned in server <STEAM_0:1:43094330> (took 35 seconds).
[19:31:21] (TEAM) [REDACTED]: Is the owner of this server online?
[19:31:29] (TEAM) [REDACTED]: D*mn.
[19:31:32] (TEAM) [REDACTED]: I'll wait until later.

19:40:10] [REDACTED] to admins: Are you the owner?
[19:40:31] (Console) to [REDACTED]: Indeed I am.
[19:40:39] [REDACTED] to admins: I would like to buy the server.
[19:40:59] Dropped "[AG]Ninja_Assassin101" from server<STEAM_0:1:86001122>
[19:41:02] [REDACTED] to admins: All that matters is the price you want for it.
[19:41:03] Conker killed supermarioraymond1
[19:41:08] (Console) to [REDACTED]: ... Yeeeeeeeeeeeeeeeah, not happening, mate.
[19:41:15] [REDACTED] to admins: 100 dollars?
[19:41:20] [REDACTED] to admins: 100 even.
[19:41:38] (Console) to [REDACTED]: PonyPwnage is my heart and soul. It ain't for sale.
[19:41:49] [REDACTED] to admins: What if I were offering... One thousand?
[19:42:25] (TEAM) total takedown: !relaod
[19:42:26] Conker: alive
[19:42:38] Princess Luna FaZePoN was killed by trigger_hurt
[19:42:38] [REDACTED] to admins: One THOUSAND dollars, for this server
[19:42:48] [REDACTED] to admins: Think about what you could do with that money.
[19:42:58] [REDACTED] to admins: If you wanted, you could open another server.
[19:43:06] [REDACTED] to admins: Multiple.
[19:43:06] Dropped "Princess Luna FaZePoN" from server<STEAM_0:1:61266759>
[19:43:10] (Console) to [REDACTED]: If you want a server, kid, just rent one. You could give me a million dollars, and I still wouldn't sell this server.
[19:43:25] [REDACTED] to admins: Hmm, I could arrange a million...
[19:43:30] Master of Golfcarts™ killed Conker using weapon_ttt_knife
[19:43:52] [REDACTED] to admins: And I want to own a server that already HAS its own community.
[19:43:55] Master of Golfcarts™ killed total takedown using player
[19:44:12] (Console) to [REDACTED]: K, quit trolling. Rcon isn't that hard to close. You gonna play the game, or do I have to shut ya up myself?

19:45:49] [REDACTED] to admins: Well, I can see that you care about this server. I shall make no more offers.
[19:46:18] Client "Vinyl Scratch" connected.
[19:46:51] [REDACTED] to admins: I appreciate your time.
[19:46:53] (Console) to [REDACTED]: Appreciated.
[19:46:59] (TEAM) [REDACTED]: !stop
[19:47:00] total takedown killed Conker using player
[19:47:03] (Console) to [REDACTED]: heh

I smell trollin'.
I'd reveal the name, but for the sake of anonymity I'll leave it hidden.

Off-Topic / Today I learned...
« on: January 04, 2015, 11:28:47 AM »
Today I learned that _G, the global table that stores all global data in Lua, can reference itself...
That means, a script like this:
Code: Lua
  1. print( _G['_G'] == _G )
... prints "true".

That also means that a script like this...
Code: Lua
  1. print(
  2.                 _G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G._G == _G
  3.         )
... also prints "true".

Funny how programming can work, eh?

I've seen a few posts about third-party ULX/ULib downloads, and had a simple question for any Team Ulysses or anyone more knowledgeable than I am:
How exactly do the Team Ulysses projects' licenses work? Do you allow for these third-party distributions, or not?

The reason I ask is because I've stumbled upon a few of these third-party distributions myself, and always redirect users to the proper Github repository wherever I can (e.g. this addon on the Workshop).

My assumption is that this third-party distribution is not allowed under your licensing and/or terms, but I wanted to make sure so I can confirm with some firepower that these are are wrong or refrain from redirecting people to the Github repo.

Thank you for your time.

Developers Corner / ULX command template
« on: December 26, 2014, 05:10:41 PM »
Wasn't quite sure where to toss this, so I'll put it here. Feel free to move.

Hi, everyone!

So, I've noticed there's not much by way of a ULX command documentation out there—the way I've had to find out how to use ULX's internal functions was to search around premade plugins and build my own.
I decided to scrap together a reference template for making ULX commands as a result of that—the hunt and build method got a little tiring after a while.

So, here y'all go:
Code: Lua
  1. if SERVER then
  2.         -- serverside things
  3. end
  5. if CLIENT then
  6.         -- clientside things
  7. end
  9. function ulx.something( calling_ply, target_ply )
  10.         -- do command things
  11. end
  13. -- Auto completes, for a list of predefined values for an argument
  14. auto_complete_table = {
  15.         "one",
  16.         "two",
  17.         "three"
  18. }
  20. local uniquename = ulx.command( "category", "ulx something", ulx.something, "!something" )
  21. uniquename:addParam( type = type, hint = "hint", completes = auto_complete_table, ULib.cmds.restrictToCompletes )
  22. uniquename:defaultAccess( ULib.ACCESS_ALL )
  23. uniquename:help( "Something about your command." )

The values "uniquename", "something", "category", etc can all be modified, as well as the parameters to the addParam, ulx.command, defaultAcces, and help functions and autocompletes table.

This is just to help out people who know Lua (ish) but want to get started on making ULX commands.

I hope y'all appreciate it. :P

Hello, everyone!

I'd recently made a geo-IP location tool for ULX, and thought I'd release it for public use.

So, without further adieu, I present ULX GeoIP.

This tool allows you to query a GeoIP database (the script uses this one) to get semi-detailed geographical location on a user.

The applications? Lag testing, debugging, et cetera.

BIG SCARY NOTE: Please provide some kind of easily visible disclaimer to your server's MOTD or similar to prevent potential legal issues. I take no responsibility for misuse of this addon.

This script is provided free of charge, under the note that- if used maliciously, it could result in legal action against you. Again, I take no responsibility for the misuse of this script.

Some information this script provides (results may vary depending on ISP and country, also not 100% accurate):
  • Country
  • State/Region
  • City
  • Postal code
  • Latitude
  • Longitude
  • Area code

ulx geoip <player>/!geoip <player> - Print the GeoIP data of a user to your console.

This script works for both client and server. Default access is for superadmins only.


I will reiterate once more: I do not take any responsibility whatsoever for the misuse of this addon. Any and all misuse is the fault of the end-user.

Off-Topic / The OCD<something> series of code projects strikes again!
« on: March 22, 2014, 02:51:19 PM »


So, yeah- I wrote an MS-DOS based operating system in Lua.

It actually uses the most recent version of my script OCDLib (which is now on Pastebin).
So, yeah. Mhm.

I coded this in my spare time- mainly to test my coding skills.
At the moment it contains one command: hello, which is like a "hello world" command. :D

So i did some edits to users.txt and groups.txt earlier (yes, i know it's a bad idea...), and I rebooted my server to make the changes take effect...
...and my server just stopped booting.
After viewing my console log, I found nothing but a cutoff after a few of the ULX "I loaded myself and these modules" messages.
After I removed ULX and ULib as per request by my GSP, my server booted fine.
I have my ULX and ULib data files on a read-only anonymous FTP server with this login:
If anyone cam check those files out for me, that would be nice. :)
If you guys need any other files, just tell me.

Much like syn, I am myself learning Lua at the moment... slowly but steadily. :P

Being OCD, I like to make useless functions that I could easily put inline and save space... but I like to not do that as it makes things look nicer. :P
Anyway, here's my first Lua library/API/thingy that I'll use for most of my scripts, whether they're just for fun or something I'll actually release.
Code: Lua
  1. --[[
  2. OCDLib by Short Circuit
  3. For use by OCD people/ponies who want cool functions for Lua. :P
  4. ]]--
  6. --VERSION: 0.1
  8. OCDLib = {}
  10. --Pre-formatted error handler.
  11. function OCDLib.errorDetection( func )
  12.         error( "OCDLib." .. func .. " experienced an error of some type." )
  13. end
  15. function OCDLib.makeSomeRoom( spaces )
  16.         --Checks if any specific number of spaces is needed.
  17.         --(If not, return 2.)
  18.         if spaces ~= nil then
  19.                 for i = 1, spaces do
  20.                         --\n also works... just don't feel like it. :P
  21.                         print( "" )
  22.                 end
  23.         --Again, if no specific spaces are returned, use 2 as the default.
  24.         elseif spaces == nil then
  25.                 for i = 1, 2 do
  26.                         print( "" )
  27.                 end
  28.         --If something fails somehow... use our errorDetection function! :D
  29.         else
  30.                 OCDLib.errorDetection( "makeSomeRoom" )
  31.         end
  32. end
  34. --DOS/Windows like pause function.
  35. function OCDLib.pauseAndWait( textstr )
  36.         --If you want, define the text to be printed here.
  37.         if textstr ~= nil then
  38.                 print( textstr )
  39.         elseif textstr == nil then
  40.                 --If no text is defined, default to this.
  41.                 print( "Press Enter to continue..." )
  42.         --If something fails somehow... use our errorDetection function! :D
  43.         else
  44.                 OCDLib.errorDetection( "pauseAndWait" )
  45.         end
  46.         --Actually wait for enter. :P
  48. end
  50. --Psuedo true randomness generator.
  51. function OCDLib.trueRandom( min, max )
  52.         --Init the randomseed and throw away the first few numbers as they may not always be random.
  53.         math.randomseed( os.time() )
  54.         --Make a dumping ground for useless numbers.
  55.         uselessDumpingGrounds = {}
  56.         for i = 1,5 do
  57.                 --Insert the useless numbers into our dumping grounds.
  58.                 uselessDumpingGrounds[i] = math.random()
  59.         end
  60.         --Clear up the memory space used by our dumping grounds.
  61.         uselessDumpingGrounds = nil
  62.         if min and max ~= nil then
  63.                 random = math.random( min, max )
  64.         --Check for anything that might cause errors...
  65.         elseif min == nil then
  66.                 random = math.random( max )
  67.         elseif max == nil then
  68.                 random = math.random( min, 10 )
  69.         elseif min and max == nil then
  70.                 random = math.random( 10 )
  71.         --If something fails somehow... use our errorDetection function! :D
  72.         else
  73.                 OCDLib.errorDetection( "trueRandom" )
  74.         end
  75.         return random
  76. end
  78. function OCDLib.credits( scriptname, creator, date, use )
  79.         if scriptname ~= nil then
  80.                 print( "Script name: " .. scriptname )
  81.         elseif scriptname == nil then
  82.                 return
  83.         elseif creator ~= nil then
  84.                 print( "Author: " .. creator )
  85.         elseif creator == nil then
  86.                 return
  87.         elseif date ~= nil then
  88.                 print( "Created on: " .. date )
  89.         elseif date == nil then
  90.                 return
  91.         elseif use ~= nil then
  92.                 print( "Used for: " .. use )
  93.         elseif use == nil then
  94.                 return
  95.         else
  96.                 OCDLib.errorDetection( "credits" )
  97.         end
  98. end

Look at it, and bask in its OCD glory!
Look, there's even OCD functions inside of OCD functions! :D
EDIT: Also, bask in its Ulysses approved spacing style! :D

Off-Topic / I feel kinda weird bringing this up again, but...
« on: January 23, 2014, 02:41:59 PM »
SMF 2.0.7. Yep,

Not demanding an update, but... well, my previous topic on the matter explains why I brought this up. :)

Off-Topic / Random question because I noticed, and... yeah.
« on: January 19, 2014, 10:39:12 PM »
Hay, Ulysses!
I noticed you guys were running SMF 2.0.5, and was just curious as to why you ponies haven't updated to 2.0.6...
I see you only have the GeSHi Syntax Highlighter mod (according to the copyright pane), which is updated to 2.0.6 at the moment...
I understand it's slightly tedious and daunting to upgrade SMF, but 2.0.6 does patch a few exploits.
Anyways, I just wanted to know why you guys haven't updated yet, and if you ever plan to. ;P

Heh, heh... My curiosity got the better of me...

Off-Topic / You guys are smart, right?
« on: December 06, 2013, 08:46:28 AM »
Without looking at the link, tell me what's wrong with this engineer's project report.

I'll reveal the story in a couple of days...

Oh, by the way, there's nothing brony-related about this. It's just a fun little thing I picked up off the internet.

Pages: [1] 2