Jump to content

=VG= SemlerPDX

  • Content count

  • Joined

  • Last visited

Community Reputation

3,822 Invaluable

About =VG= SemlerPDX

  • Rank
  • Birthday 06/05/1979

Profile Information

  • Gender
  • Location
    Portland, OR
  • Interests
    Camping, hiking, shooting, and fast gaming computers
  • Occupation
    Scruffy looking Nerf Herder

Contact Methods

  • YouTube

Recent Profile Visitors

33,264 profile views
  1. DIY - Custom Game Controller - 2 Dial HSI Course and Heading Knobs

    @Hesynergy I never made a wiring diagram, it's just two rotary encoders after all, but the pins are labeled in the Arduino sketch at the top - I believe the resistors are 10k Ohms.
  2. Thanks for updating the server, Melon!
  3. VG Branding Material And Ressources

    Here is everything I have -- the zip contents are not sorted, sorry don't have time to organize them, and though there are some folders these were dropped in as I found them.. There will be duplicates, but in those cases, there also may be slight differences between them (text orientation in the image, file size, image size/resolution, image format, alpha/transparency layers) - so if it's something that is in use today (like on the website) just download it from there for the most recent "official" version of a graphic. Everything I had is in this zip, including many TS3 icons, ranks and ribbons from this website and older ones, and even some .PSD files that can be opened in photoshop. Any questions, specific requests, feel free to ask: https://www.dropbox.com/s/7n4uq8d51ylckq4/VG Graphics Master.zip?dl=1
  4. =VG= Social Meeting

    Thought Discord had something along the lines of video conferencing, but upon googling, seems there may be some limiting factors... Haven't 'video called' anyone since my kid was... a kid. The grown up ones only text, sign of the times.... don't even properly 'phone call' these days. No idea what software is the 'good one', that isn't gonna cost money, or isn't literal spyware. Personally, I prefer the anonymity of VOIP like TS3, I mean, why should I have to put clothes on to chat on the computer? Counting on you all to figure that out and decide on a 'standard' for us all.
  5. VG Branding Material And Ressources

    Things are kinda all over.... I'll try to assemble an all inclusive VG GFX zip file before the end of the week. A bit out of sorts this morning, woke up late to dizzy spells ... must be getting old.. or maybe just dehydrated. Also need a day or so since this is something I had planned since I built this new PC, to consolidate and organize the images on my PC - got VG graphics scattered around in more than one VG labeled folder, half the time I can barely find what I'm looking for with keyword searches and it's getting frustrating. So, like I said, been meaning to do this for some time, good enough excuse to get it cracked out in a few days. edit: if there is something specific you might need faster than anything else, I can prioritize that and get a small package to you sooner, otherwise, I'll assemble every VG graphics (even the retired ones) by this weekend.
  6. Music in trans

    The key problem being that users have no way of quickly/easily turning down the volume of someone's direct chat (music spam) and also not everyone enjoys it, to be fair. If a Squad Leader needs to communicate with other Squad Leaders during transport, they have to fight to hear what is being said, or maybe they want to brief their Squad for landing, etc. etc. etc. You're not the first, you won't be the last, but take it to heart that it's not always as enjoyable for those getting a ride as you might hope. If you had some way of ensuring that it was at a low, ambient volume, I doubt anyone would mind quite so much -- but that's not the case at all, and you can't know the volume at which what your spam is heard, how much (or how little) it drowns out other essential in-game communication. Obviously your intent is for fun and not to annoy, but it's a fine line there, brother. Hate to be a wet blanket. Same with Kav, I'm sure.
  7. shutdown on timer

    I'd rather be called a geek than a nerd any day.
  8. Need help deciding....

    We definitely are working on adding new life to the Arma 3 sector at VG, it's hard when a lot of the tech guys are scattered - but it's just a matter of time. We plan to run Vanilla as well as Modded server(s), and hopefully get in some regular events, if only monthly to start. The game takes patience, on the part of players, and those who get technical designing missions. Attention to detail is key, and mistakes are compounded when a whole server of players is standing around scratching their asses while the mission host tries to jostle things into a working position as designed. ZEUS helps - like a Dungeon Master, they can on-the-fly add elements/enemies/gear to a map in action, and help keep things fresh if the original mission they designed doesn't play out exactly as planned. Takes time and effort to build something like this up, and a few good men willing to populate the server(s) and get them going.
  9. shutdown on timer

    Here's something you might like - a batch script I wrote long ago when I needed to be able to restart VoiceAttack using a voice command -- worked with a windows scheduled task I created to launch the VoiceAttack program as administrator, but bypass that annoying UAC pop-up to allow it. Found long ago that killing a task is no exact science, and need to be able to handle the case that it doesn't happen, and to try again until successful: @echo off title startVAwInput1.bat REM by SemlerPDX Jan2019 REM VETERANS-GAMING.COM :kill_VA taskkill /f /im VoiceAttack /fi "windowtitle eq VoiceAttack.exe" tasklist | find /i "*VoiceAttack*" >nul 2>&1 if errorlevel 1 ( ping -n 3>nul schtasks /run /TN "VAnoUACwINPUT1" exit ) else ( ping -n 2>nul goto kill_VA ) ↑ ping is the preferred "pause" or "sleep" method for Batch -- timeout is depreciated, where a ping such as that has a finite execution time, so increasing the number of times to ping effectively increases the 'pause' or 'sleep' time. Ya pick these things up over the years, again, self taught amateur just poking around trying to make things that work, then trying to make them work well/better in time.
  10. shutdown on timer

    Pretty much. Like I said, there are plenty of functions elsewhere that do tons of stuff to make this all work. The goal for me is optimization - I don't mind the initial program load time being a little longer if it means when someone actually says something that gets recognized, that it enacts the actions (and/or keypress(es)) within a tenth of a second. Issues I had in the past included accurate recognition, but a good 1 to 2 seconds before anything happened, which is far too long for interactivity in video games of most any kind. This new system lets me set some variables to RAM after loading from the save file, and those speed everything up... there are a lot of them, 'Open [the;] Cargo Bay [Door;Doors]' for example has 4 different ways to say that phrase, so each one gets parsed out to be a variable set to RAM that contains that command's data array (the VPB#,COM#, keys (if any), and options list) On file, it's just 2 variables for each command, but once loaded by the program, all get expanded into their multiple phrase variations, ending up with easy to reach data just based on what the user said, AVCS_VPB_COMMAND_open cargo bay door=VPB#1,COM#1,VPBKEY/e AVCS_VPB_COMMAND_open cargo bay doors=VPB#1,COM#1,VPBKEY/e AVCS_VPB_COMMAND_open the cargo bay door=VPB#1,COM#1,VPBKEY/e AVCS_VPB_COMMAND_open the cargo bay doors=VPB#1,COM#1,VPBKEY/e So, when they say something like, 'open cargo bay doors', it will toss the known variable name before it to get the data, "AVCS_VPB_COMMAND_{CMDSPOKEN}" which resolves to that command's data FYSA, this is all WIP alpha build, still evolving even as we chat it up here, having fun talking about these things for sure... but will have more fun when I release it as a working program. Tons of fun!!
  11. shutdown on timer

    VPB# always appears before COM# in the commandArray... First time through, it sets the VPBindex - does not disappear before iterating to next 'commFunc' in the commadArray of data - second time through it finds the COM# and sets VPBexe, compares them, if not equal, GoTo the above special function handler. VPBindex is always initialized before it gets to any 'commFunc' containing COM#, and the exception handling that VPBindex is not set is well enough if VPBexe doesn't equal it.... One is the index number of the command, the other is the command index (if different, the action is to find the command data from a different index numbered command) Sometimes, it is needed for the action of one command to simply be calling another command. It is a very edge case, but needed to factor in. AVCS_VPB_DATA_COMMAND_1=VPB#1,COM#1,VPBKEY/e AVCS_VPB_COMMAND_1=[Engage;Begin;Turn On;Start] [Hyperspace;Frame Shift;Warp] [Drive;Engines] ↑ that could be VPB index 1, command 1 -- it presses the 'e' key when recognized AVCS_VPB_DATA_COMMAND_2=VPB#2,COM#1 AVCS_VPB_COMMAND_2=punch it chewy ↑ that could be some other command like a single alternate phrase, or wildcard with no special dynamics, or etc., and it doesn't do anything except execute COM#1 That's the reason for that GoTo, and why I need to handle so many exceptions on that one. *edit: Also, there are functions not shown from elsewhere in the program, that's not a one-off.... this is a bit from inside another command, again, parts not show, but this is where data is extracted from that bit above into all the various phrases, so any one of the combinations is equal to the array of data for simple retrieval (following the above example, one would be: AVCS_VPB_COMMAND_start warp drive=VBP#1,COM#1,VPBKEY/e ) ←this is the stuff that gets loaded into RAM, the ones above are in a save file phrases = (VA.GetText("AVCS_VPB_COMMAND_" + cmdIndex.ToString())) phraseData = (VA.GetText("AVCS_VPB_DATA_COMMAND_" + cmdIndex.ToString())) phraseArray = vaProxy.Utility.ExtractPhrases(phrases, true, true) for each phrase in phraseArray if ((not(phrase = "")) and (not(phrasesFinal.Contains(phrase)))) phrasesFinal.Add(phrase) phrasesUnique = phrasesUnique + phrase + ";" VA.SetText("AVCS_VPB_COMMAND_" + phrase, phraseData) end if next
  12. shutdown on timer

    Normally for VB.net/C# I use VisualStudio, but this is an in-line function inside the VoiceAttack program itself, which makes use of a bunch of embedded proxy functions provided by VoiceAttack. That particular function is getting and setting variables for the VoiceAttack program to use in other functions and/or voice commands (much faster than VoiceAttack could do so with it's code-block style actions). The code above is VB.net, which is a C style language edit: Use LUA for batch highlighting, it's closest, doesn't break, and provides some basic highlighting -- I already edited your post
  13. shutdown on timer

    Funny thing, I actually just had to use a GoTo in a VB.net function I've been working on for my AVCS4 thing ... part of the new systems that let users create new voice commands using voice commands... I have to check if something is not right in geek town, and GoTo a section to handle the exception if so... thinking of any possible ways something can break, or any other ways it can receive data is the best way to make sure shit works right the first time, every time. Trial and error, testing and more testing... when you're chicken plucking your way along the self-taught route like I do, it takes years to get any sense of confidence Yea... cool spoiler tag thingy will look and work like this whenever I get it integrated into the website proper - this is me doing website admin stuff to put it in here, fysa Public Class VAInline dim VPBexe as integer dim VPBindex as integer dim VASnum as string dim commandCheck as string dim commandBase as string dim commandFull as string dim commandArray() as string dim entry() as string Public Sub Main() VPBexe = 0 if VA.GetText("~avcs_vpb_command_array") IsNot nothing 'Get voice command actions array and eval for actions' commandArray = VA.GetText("~avcs_vpb_command_array").Split(",") 'Handle voice command that only executes another voice command' VPBarray: if(VPBexe > 0) commandCheck = "AVCS_VPB_COMMAND_" + VPBexe.ToString() if (VA.GetText(commandCheck)) IsNot nothing commandArray = nothing commandBase = VA.GetText(commandCheck) commandFull = "AVCS_VPB_COMMAND_" + commandBase if (VA.GetText(commandFull)) IsNot nothing commandArray = VA.GetText(commandFull).Split(",") end if end if end if if(commandArray) IsNot nothing for each commFunc as string in commandArray if not(commFunc = "") 'Check if this command only calls other commands' if(commFunc.StartsWith("VPB#")) entry = commFunc.Split("#") VPBindex = Convert.ToInt32(entry(1)) else if(commFunc.StartsWith("COM#")) entry = commFunc.Split("#") VPBexe = Convert.ToInt32(entry(1)) if(not(VPBindex = VPBexe)) GoTo VPBarray end if 'Get the Keypress Action for this command' else if(commFunc.StartsWith("VPBKEY")) entry = commFunc.Split("/") VA.SetText("~VPBKEY", entry(1)) 'Get additional options for this command (if any)' else if(commFunc.Contains("PTTON")) VA.SetBoolean("~PTTON", true) else if(commFunc.Contains("AFMON")) VA.SetBoolean("~AFMON", true) else if(commFunc.Contains("VAASC")) VA.SetBoolean("~VAASC", true) VA.SetBoolean("~VASON", true) else if(commFunc.StartsWith("VAS")) VASnum = commFunc.Substring(3,1) VA.SetInt("~VAS", VASnum) VA.SetBoolean("~VASON", true) else if(commFunc.Contains("SFSON")) VA.SetBoolean("~SFSON", true) else if(commFunc.Contains("SFSYES")) VA.SetBoolean("~SFSYES", true) else if(commFunc.Contains("SFStrue")) VA.SetBoolean("~SFS", true) else if(commFunc.Contains("SFSfalse")) VA.SetBoolean("~SFS", false) end if end if next end if end if End Sub End Class ↑ basically, example of me checking at every step if something is not right, if something is nothing, if something is > 0 (hence, not nothing)... ya gotta check everything if ya don't want headaches later, scratching your head until it bleeds trying to figure out why something didn't work right, or as expected
  14. shutdown on timer

    I used to use GOTO a bit in batch -- so you do your comparison and if it's not numeric (checking for symbols, too), jump back up to the 'get input' section
  15. shutdown on timer

    Oh, yea, that's actually specifically for discerning A-Za-z from 0-9 -- per notes in that thread at StackOverflow, entering symbols or something like 0ABC (staring with zero) also would not be handled correctly. Thing is, with small user utilities, there is no real need to catch every exception, but when you do want to, you go for function over looks every time. If anyone uses this knowing what it is, and enters anything but a number when prompted to do so, deserves whatever errors or chaos ensues forth.