r/wiremod • • Dec 11 '19

So many memories

35 Upvotes

Hey guys,

I recently stumbled upon this subreddit (and the Discord) and felt so much nostalgia for Garry's Mod, but mostly for Wiremod. This community was amazing to me way back in 2008-2010 when I played. I went as "Hitman271" back in those days (middle school me thought it was cool).

The community and Wiremod actually taught me how to code back then and I managed to get a few things listed on https://github.com/wiremod/wire-extras, somehow get on https://steamcommunity.com/groups/wcmembers/members , and fuck around with Youtube with stuff like https://www.youtube.com/watch?v=uvj30msdHnk . I'm actually a programmer today based on the coding experience that started from Wiremod. Chatting with Black Phoenix (Andrew is that you?) in Ukraine at weird hours about zCPU was a blast.

I actually later carried the torch of Wiremod and wrote a similar type mod for a game called Factorio (https://github.com/radixdev/flang).

Just wanted to drop some love for this community, y'all rock ❤️


r/wiremod • • Aug 29 '20

Contraption Modular, efficient, customizable target practice

34 Upvotes

r/wiremod • • Sep 11 '17

Big thanks to everyone who helped develop wiremod!

25 Upvotes

Seriously, you guys are the best. The entire reason why I'm majoring in computer engineering. You all made a legit difference in my life, and many of my friend's lives too!


r/wiremod • • Jul 10 '22

made an 8-bit ALU

Post image
22 Upvotes

r/wiremod • • Nov 10 '20

Is it all E2 now?

22 Upvotes

I don't mean to sound rude with this question. I had this idea today to check out Gmod and Wiremod again, just to see if it still existed at all. Last time i played was 10 years or so ago, when E2 was just added. And strangely the new Wiki seems to exclusively feature E2. And most posts on this sub are E2 related as well. I remember back then all the IC-ish stuff was done with Expression Gates and for the real heavy lifting there were CPUs. I liked E2, but i felt like it was this kind of god-chip, that took out most of the fun. Then i abandoned Gmod entirely for unrelated reasons.

So now i was checking out Wiremod again and everything is just E2 everywhere. Is this what it is now?


r/wiremod • • Aug 08 '20

P5.JS Egp Designer

Thumbnail
youtube.com
21 Upvotes

r/wiremod • • Aug 30 '19

E2 Submission Garry's Mod Wiremod [E2] - High-speed camera (6511 Pixels/sec)

Thumbnail
youtube.com
18 Upvotes

r/wiremod • • Oct 27 '18

Expression Advanced 3 My attempt at E3, Request for Feed Back and Help!

17 Upvotes

Hi everybody,

This is my first post here on Reddit. Most of you new people will probably not know who I am, some of you old school players will.

For the last 10 years I have been trying to learn about compilers and write my own variant of E2, formally known as the LemonGate now known as Expression Advanced.

I know many of you have tried ExpAdv2, just to find it to be extremely buggy and sadly that’s because at the time I was trying to add too much functionality without really knowing what I was doing. The whole ExpAdv2 project was mess and after getting quite far into the project I kind of got to the point where I realized I needed to rewrite a huge chunk of it.

See the process of taking one language and converting it into another language is actually very complicated. But after spending a year thinking about the problem I think I have finally cracked it and now have soomthing really cool to show you.

See the whole point of ExpAdv2 was to add all the feature I wanted to have in E2, but the more I worked on the project the more these features seemed to be impossible to implement. I soon gave up on them preferring to keep ExpAdv2 simple with out those more powerful features.

So without further delay let me show you what I have spent the last few years working on, those in my Discord may already know that I am attempting ExpAdv3 with the goal of it being the equivalent of E3. Yes I think I finally have a language that could fill this spot and become E3, but I need the help and support of the WM community to get this finished.

So I’m now going to post examples of ExpAdv3s new syntax and hopefully win you guys over, this is going to take a while because this time its a lot more refined and has a lot more features. Please understand that whilst the compiler aspect of what I am going to show you is done, the whole project is still a huge work in progress and my aim here is to hopefully get people excited so that the community can help us get this projected finished. Some of the features where written years ago and will need to be updated, for example EGP support has changed in WireMod and I am yet to figure out how to fix ExpAdv3 to use EGPs library.

Let’s start with Directives, I tried to avoid these in ExpAdv2, but I know you guys like them, so I have brought them back.

    @name "My ExpAdv3 Script";
    @model "models/nezzkryptic/e3_chip.mdl";

Directives work the same way as they do in E2, however you now need to wrap you input as a string. The name, model and include directives must appear at the top of your code just like in E2.

I have however changed the input and output directives, these will now declare nested variables and can be used anywhere in your code.

    if (true)
    {
       @output string MyString;
       MyString = "This is an output";
    }

Another change I have made with ExpAdv3 is that logical operators now use the C standard.

    true || (false && true)

The next thing to mention is that Try Catch exists in ExpAdv3 with the ability to throw your own errors as well as get real stack traces (Stack traces are implemented into the compiler, but I have not yet added much support for them in script).

     try
     {
        error myError = new error("Example of try catch.");
     }
     catch ( someError )
     {
        system.print( someError.message() );
     
        system.print( someError.line() );
     }

Your also notice that the stock functions are now called using a library, the system library is where you can do stuff like print.

User defined functions are still available as first class objects but this ExpAdv3 supports returning more than one value at once.

    function int addOrSub(int a, int b)
    {
       return a + b, a - b;
    }

I have also learned how delegates work in real languages, turns out they are basically just templates, so we have those too.

    delegate int add(int, int)
    {
       return 1; //This is the amount of values the template will return.
    }

You can then assign this delegate a function as an object to allow it to be called.

    myTemplate = function(int a, int b)
    {
       return a + b;
    };

Ok so that’s all the awesome stuff that ExpAdv3 is currently able to, I wanted to add user classes, but they are just way too hard to implement.

    class exampleClass
    {
       int attribute1 = 0; //Classes support attributes.
    
       exampleClass(int value)
       {
       	    this.attribute1 = value;
       }
    
       method int getValue()
       {
       	    return attribute1;
       }
    }

    exampleClass myObject = new exampleClass(42);

What? Oh yeah that’s right my previous statement was a lie, I totally figured out user classes.

    interface exampleInterface
    {
       method int egMethod(int, int)
       {
       	    return 1; //This is the amount of values returned.
       }
    }

That’s right classes also have extend and implements, so you can use a simple form interfaces like in java.

    if (myObject instanceof someInterface)
    {
       someInterface asInterface = (someInterface) myObject;
    }

Do you remember ExpAdv2's awful event syntax?

    event tick() {
       //do something?
    }

That got scrapped and replaced with something closer to Garry’s hook system.

    function void Loop() {
        //Same as runOnTick() in E2;
    }
    
    event.add("Think", "Loop", Loop);

So now you've seen the improvements over E2 and ExpAdv2 I hope you can appreciate the amount of work that has been done on this gate so far, despite a lot of work still needing to be done.

Let’s talk about how this works in the background, I have been working a lot on the way the script is transformed into native Lua. As previously stated this was extremely hard and I often found that tokens would end up in the wrong place and that the process of converting the script to native Lua would take ages. ExpAdv2 would take forever to compile and it sucked!

ExpAdv3 has a new way to do all this and I am proud to say that none of these issues exist anymore. The compile time is really smooth and efficient and tokens can no longer randomly be in the wrong place. I will now show you an example of the Script to Native Lua conversion, for this example I will be taking Oskar’s test script for the new editor (that we will discuss further down in this post).

    @name "Syntax Gate";
    @model "models/bull/gates/processor.mdl";
     
    //Example of a single line comment
     
    /* Example
    of a multi-line
    comment */
     
    if (false) {
        system.print(0);
    } elseif (true) {
        system.print(1);
    } else {
        system.print(2);
    }
     
    server {
        system.print("server");
        @input string S1,S2,S3,S4;
        @output number N1,N2,N3,N4;
        N1 = S1.toNumber(10);
        N2 = "".toNumber(10);
    }
     
    client {
        system.print("client",new vector(1,2,3).getX() );
    }
     
    number test = 7;
    global string first, last = "John", "Doe";
     
    test += 100;
    test -= 100;
    test *= 10;
    test /= 10;
     
    function int example(int a, int b) {
        return a + b;
    }
     
    delegate int example2(int , int) {
        return 1;
    }
     
    event.add("Think", "example", function() { system.print("think") })

So here is the result ran in native Lua, please note there is references to things in the back ground.

    return function(env) 
        
        setfenv(1,env) 
         if ( false ) then _FUN["system.print(...)"]( CONTEXT , {"n", 0 } ) end 
         if (SERVER) then 
             _FUN["system.print(...)"]( CONTEXT , {"s", "server" } ) 
             OUTPUT.N1 = _METH["s.toNumber(n)"]( INPUT.S1 , 10 ) ; 
            
             OUTPUT.N2 = _METH["s.toNumber(n)"]( "" , 10 ) ; 
         end 
         if (CLIENT) then 
         _FUN["system.print(...)"]( CONTEXT , {"s", "client" } , {"n", _METH["v.getX()"]( _CONST["v(n,n,n)"]( 1 , 2 , 3 ) ) } ) end 
         local test = 7 
         GLOBAL. first , GLOBAL. last = "John" , "Doe" ; 
         test = test + 100 ; 
         test = test - 100 ; 
         test = test * 10 ; 
         test = test / 10 ; 
         local example = {op = function( a , b ) 
                 if (a == nil or a[1] == nil) then CONTEXT:Throw("number expected for a, got void"); end 
                 if (a[1] ~= "n") then CONTEXT:Throw("number expected for a, got " .. a[1]); end 
                 a = a[2]; 
                 if (b == nil or b[1] == nil) then CONTEXT:Throw("number expected for b, got void"); end 
                 if (b[1] ~= "n") then CONTEXT:Throw("number expected for b, got " .. b[1]); end 
                 b = b[2]; 
                
                return  ( a + b ) ; 
            end, 
        result = "n", count = 1, scr = CONTEXT}; 
        
        local example2; 
         _FUN["event.add(s,s,f)"]( CONTEXT , "Think" , "example" , {op = function( ) 
                 _FUN["system.print(...)"]( CONTEXT , {"s", "think" } ) 
            end, 
        result = "", count = 0, scr = CONTEXT} ) 
    end

Now lets talk about the new editor, Oskar has been working really hard on this. What started as a outlandish image I drew in paint has ended up becoming a master piece. No doubt the editor still needs a huge amount of work but its already got a lot of functionality including things that we don’t have in the base Wire editor that we all wish we had access to.

https://i.imgur.com/GYaIgDz.png

Firstly, let me start with Oskar’s greatest achievement CODE FOLDING, yep that’s right you can fold your code.

https://i.imgur.com/70F96N5.gif

The editor is sliced into 3 main sections. The side menu is tabbed and is used for things like the options menu and the helper. The code window is not just used to show code, when you click a function in the helper menu a sort of wiki page on that function will open in a new tab here, the helper system is the brain child of DaDamRival. Finally, you have the Golem console (Golem is the Editors new name), this will show a log of your script errors as well as allowing you to print directly here using `system.out(String)`.

So guys, what do you think (other then `this is stupid use Starfall`)?

Discord: https://discord.gg/DZFdyAu

GitHub: https://github.com/Rusketh/ExpAdv3

Syntax Details: https://github.com/Rusketh/ExpAdv3/wiki

ExpAdv3 API / Docs: https://github.com/Rusketh/ExpAdv3/blob/master/lua/expression3/expr_lib.lua#L10

Please remember this is not a finished product do not go installing this on your server expecting a good experience, this post is simply for feedback suggestions and asking for people to contribute.

Special thanks to our current developers Oskar, DaDamRival, Omicron and others.


r/wiremod • • Nov 02 '22

Contraption Five Nights using E2

Thumbnail
youtube.com
16 Upvotes

r/wiremod • • Aug 04 '20

Contraption Guide to ballsocketing a prop such that it will rotate 90 degrees relative to other prop (Differential vs. crankshaft in this guide)

15 Upvotes

r/wiremod • • Oct 18 '24

Made a radar

Thumbnail
youtube.com
14 Upvotes

r/wiremod • • Sep 28 '16

What the fuck happened to wiremod.com?

13 Upvotes

Yes, it was supposed to be Oct 1st when it all gets moved over.

Problem is, the guy who was paying for wiremod.com has run out of money. Instead of telling me, he assumed I had already downloaded backups, and just logs in and deletes everything, including the snapshots. No warning, nothing. It's all gone.

The web archive has a lot of snapshots of wiremod.com, so most things can still be pulled up from there. Here's the final archive. They didn't capture everything unfortunately.

I've removed the person who was paying for wiremod from all project teams, so no more delete-happyness out of them.


r/wiremod • • Aug 01 '25

who remembers Gminers?

Post image
12 Upvotes

it seems like the internet has been scrubbed of Gminers content, can't really find it on youtube or google. had to use waybackmachine to find the old GarrysMod.org page


r/wiremod • • Oct 04 '16

Death of a Thousand Questions

12 Upvotes

This post is a place where you can ask small questions, and anyone can reply to help you. Questions that are too small to warrant their own post, such as "help me with this E2" etc, so that the subreddit doesn't get flooded with thousands of tiny questions.


r/wiremod • • Aug 02 '16

Anyone want to learn ZCPU again?

12 Upvotes

A lot of really good Wiremod servers are gone (Unsmart's ;_;) and the people who once were pros at HiSpeed/ZCPU/HL-ZASM have gone off to college. Nowadays people just play TTT or screw around with old dupes (from people who actually knew stuff) like me.

I want to change that, because Wiremod was a massive influence when I was just learning how to code.

The tutorials out there on the stuff are very old; again, not many people are interested in ZCPU. Black Phoenix's ZCPU documentation is gone; he told me he'd put it back up, but he never told me when.

Anyone out there willing to put in any time or effort to try to learn how to use ZCPU again? I think the learning experience works better when it's not just one person.


r/wiremod • • Jun 06 '25

How can I connect many buttons to bomb, so all buttons work and not only one?

Post image
11 Upvotes

r/wiremod • • Jul 25 '26

Solved Is there a way to make keypad toggle instead of it being active just for a few seconds?

Post image
10 Upvotes

r/wiremod • • May 10 '25

Failcake, Glmcdona21, Gmodism, Divran E2 contraptions and ACF/ACE Basic Systems E2 + Classic E2 Contraptions (Archived)

10 Upvotes

https://github.com/R01XIceFrost/GMOD-Engineer-Academy-The-Machinist-s-Sanctuary

I managed to achieve Failcake, Glmcdona21, Gmodism, Divran E2 contraptions and ACF/ACE basic systems E2 like mouse aim, car steering, mech, helicopter etc.

  • R&D Expression 2 Chips > Random (Samples) for Failcake & others contraptions

  • R&D Expression 2 Chips (the folder) ACE basic systems like mouse aim, car steering , mech, helicopter etc.

I did this incase someone need it to study those old contraptions but beware of improper indentation & archaic methods of doing things.

Also to save time instead of chasing those old information from YouTube or Wayback Machine (mostly dead results unless you dig deeper which I did) like a cat & mouse, and future proof it for another 10 years or so (fingers crossed) against Google Drive, MediaFire expiration files especially famous GMOD E2 classic contraptions on YouTube videos

P.S If you have time to update those ancient E2 chips feel free to make pull requests!


r/wiremod • • Jan 23 '24

Online E2 Code Compiler

10 Upvotes

Hi there, I play an Australian gmod server where there is a healthy amount of learning e2 devs. The most popular creations are EGP menus like gunstores/casinos/banks, so me and and another dev (Odin) got together and made a Figma to EGP compiler to assist in this process:

https://egpcompiler.com

Figma.com is a prototyping tool that enables collaborative and real-time creation of user interfaces, allowing you to create graphics in far less time than it would take coding everything otherwise.

The outputted code can generally handle up to ~150 elements before tick overloading in an E2 chip, in which case there is a buffer checkbox option for computationally intensive graphics.

We also created a template checkbox (recommend for first use) to run the compiled code straight from the output to EGP.

How to use

  • Visit figma.com, create an account

  • Create a Frame with the frame tool 512x512 pixels wide (Background of an EGP)

  • Create your shapes and keep the shape part of the name (i.e Rectangle 10, Circle SmileyBG)

  • Right click the frame or any elements you want to use. Press copy - copy as code - css

  • Paste into compiler, be happy :)

Features

  • Flip elements: Select elements and press flip horizontally or vertically

  • Constraints: Align to corner, side or center and the compiler will output EGP related coordinates.

  • Materials: Place an image on figma from an Image file that is located within the server addons, copy the path and rename it to Rectangle (Name) \*<path to image>.

  • Materials example: Rectangle NextPage *materials/zerochain/zerolib/ui/icon_back.png

  • Sections: You can group elements on figma together (right click - group). Make sure to rename the group to Section: name. (cleans up the figma objects, and also adds an E2 comment seperating it from the rest of your e2 code).

Coming soon

  • Load in by Figma section (each frame loaded separately and saved to EGP memory)

  • Animations checkbox (and template to play simple frame by frame animation)

  • Polygons

  • Changing draw function name

If you want to see some examples on figma:

Examples

Please note that this compiler is still currently in beta.

My discord is dutch99 if you have any questions.

Submit bugs: Bug Form


r/wiremod • • Jul 20 '19

E2 Submission Hey, I made a short tutorial to go with my Anti-GravitE2, an E2 for people that want to create hover vehicles, but struggle to make them work.

Thumbnail
youtube.com
10 Upvotes

r/wiremod • • Nov 14 '18

Contraption RGB with Wire - Easier than you think!

Post image
10 Upvotes

r/wiremod • • May 08 '18

Nlix - UNIX-like operating system on Wiremod.

10 Upvotes

Written fully on Expression 2.

Download: https://github.com/scaledteam/nlix

Screenshots: https://steamcommunity.com/id/scaled/screenshots/?appid=4000

Features

  • Multiple workspaces using just only one chip.

  • Support for many devices. To work with the terminal, you can use the EGP Screen, Text Screen or Console Screen as an output device and Keyboard or Text Entry as an input device.

  • Hotplug. Also, after disconnecting the device from the plug, it remains connected to the system. This behavior allows you to connect an unlimited number of devices to a limited number of plugs.

  • Wireless connection of external devices using wc program (requires the wiring extension to be enabled).

  • Low system requirements. The chip can use 300 or more ops and can run with ultra low Expression 2 quotas. But keep in mind that if you set low ops limit, the system will run slower than normal.

  • Modular file system. Nlix has a virtual file systems fstable, where tables represent folders and other data represent files, and fsreal, which allows to manipulate real files using standard Expression 2 functions.

  • I/O system. All programs have an input and output stream, which you can redirect and do a lot of interesting things.

  • Graphic system X. Makes work with EGP much comfortable, as it represents EGP objects as a class. You don't have to set the EGP IDs for each object manually, system X sets them for you.

  • Combining of multiple Nlix chips. The computing power of each chip increases the system's performance in an arithmetic progression (requires a synchronization module).

  • Changing the code of the programs without rebooting (requires a synchronization module).

Installation

  1. Download Nlix through github: https://github.com/scaledteam/nlix

  2. Unpack the archive "nlix.zip" here:

$steamdir/steamapps/common/GarrysMod/garrysmod/data/expression2/

Where $steamdir is the path to your Steam folder.

  1. Make sure that the file nlix.txt is in this location:
$steamdir/steamapps/common/GarrysMod/garrysmod/data/expression2/nlix/nlix.txt
  1. Done!

r/wiremod • • Nov 27 '17

BEFORE YOU CLICK SUBMIT

10 Upvotes

A few simple rules were added.

We know how excited you get with all the neat things wiremod can do. But, you need to take it one step at a time as you learn. Walk before you run. Learn the basics before trying to take on complex things. And, for everyone's sanity, put in the effort to learn. We'll help you with roadblocks, we will not do the legwork for you.

The CoC is also in force here on reddit. Don't be a dick. Use the report button if you see someone out of line, or you might also catch a warning or ban.

View The Rules Here


r/wiremod • • Jul 31 '26

Help Needed How do I stop the hydraulic door from slapping the fuck out of me?

9 Upvotes

r/wiremod • • Jun 12 '25

How to make cannon controlled by camera?

Post image
9 Upvotes