How to install Sestze's Hip Biased Walking Chip . (<---although I'm not sure if that's the name)

I watched a few vids in YouTube on how to make a walker and I found Sestze’s (did I spell that right?)chip walker. I saw they built bots out of props and I wanted to make it too. but when I downloaded it. it’s only a text file(.txt) and I don’t know where to put it? some said it should be put in addons folder but some said that it should be put in adv_dupe. please help

PS: sorry for any mistake in where I posted this thread. I’m very new to this site.
PPS: What are the REAL requirements? Because some said it needs some addons before it will take effect. If anyone knows. please help
PPPS:If I posted this on the wrong forums, please direct me to the correct one.

thanks for your attention :smiley:

I believe it’s an Expression2 file, which means you need to have Wiremod in order to use it.

yes, I do have the wiremod. but where do I put the .txt file? I opened it and it looks like some programming/code. I dont understand what it says. I never had knowledge of it. :frowning:

This thread has BFW_V5, which is a system that doesn’t use keepupright and is a lot easier to set up.

Alternatively you could use this chip, which doesn’t require a torso or eyepod. It uses a camera controller instead.



@name Harpy Quickmech
@inputs [ADV CAM]:wirelink
@outputs 
# Inputs
@persist W A S D Space Alt Pod:entity X Y
# NEYEpod
@persist [NEYEDriverEye NEYEFlat NEYEUpper]:vector
# vectors
@persist [For Rig Up CamD Delta HROffset HRForce HipMirror OUTCAMP OUTCAMD]:vector
@persist [CurPos CurVel Adjusted WalkVec CurWalk Step Side]:vector
# Flags, etc.
@persist Run N CAMNUM Hip:entity Dran:ranger Dranb:ranger
@persist Accm Perc Throttle Time Inputs ThrInput AcPerc Active
# Arrays
@persist [Total Feet Guns Held Last Current]:array
# Held quats
@persist [HipHeld HipCurrent]:quaternion
# Tweakables
@persist [HIPSTR FEETSTR GUNSTR]:string
@persist HRFRC FHFRC HHFRC GRFRC LOCALOFFSET:array
@persist THRESHOLD THROTMAX ACCEL STEPS UM MAXACC CROUCHLEN
@trigger none

#pros: torsoless; low op; built in ACF functionality
#cons: built for ACF, only does weapon handling for ACF weapons as gunpods

interval(50)

if(dupefinished())
{
    reset()
}

#f'ns
if(first())
{
    function vector tol (Intol:vector, Ftol:vector, Rtol:vector, Utol:vector)
    {
        TempV = vec(Intol:dot(Ftol), Intol:dot(Rtol), Intol:dot(Utol))
        return TempV
    }
    
    function vector tow (Intow:vector, Ftow:vector, Rtow:vector, Utow:vector)
    {
        TempV = Intow:x() * Ftow + Intow:y() * Rtow + Intow:z() * Utow
        return TempV
    }
}

#defs
if(first())
{
    #Tweakable values
    HIPSTR = "models/props_borealis/bluebarrel001.mdl" #Place model of hip here
    FEETSTR = "models/props_junk/MetalBucket02a.mdl" #Place model of foot here
    GUNSTR = "" #place a gun model here. It also automatically picks up all ACF guns
    
    HRFRC = 400 #Hip rotation force.
    HHFRC = 8 #Hip holding force
    
    FHFRC = 8 #Foot holding force
    
    GRFRC = 300 #Gun rotational force
    STEPS = 30 #Step size
    
    MAXACC = 1.0 #Maximum acceleration modifier.
    
    #LOCALOFFSET sets the camera offsets that can be cycled through with Alt
    
    LOCALOFFSET[1, vector] = vec(-100, 0, 100)
    LOCALOFFSET[2, vector] = vec(-100, 100, 50)
    LOCALOFFSET[3, vector] = vec(-100, -100, 50)
    
    THRESHOLD = 3 #Minimum "speed" the mech must attain to make the legs start moving
    THROTMAX = 36 #Maximum angle deviation per frame possible for cyclical movement. Too high, and you'll slip at high speeds
    ACCEL = 14 #How much impulse W/A/S/D imparts. Higher makes it accelerate faster.
    
    UM = 1 #Multiplier for stepsize for step height. 1 is 1x the stepsize, 0.5 is 0.5x the stepsize, etc.
    
    CROUCHLEN = 40 #When you get out, how far the contraption crouches. Helpful for servers without noclip.
    
    #set stuff
    For = vec(0, 1, 0)
    Up = vec(0, 0, 1)
    WalkVec = For
    CurWalk = For
    Rig = For:cross(Up)
    Total = entity():getConstraints()
    
    rangerPersist(1)
    rangerFilter(Total)
    
    CAMNUM = 1
    N = 1
    timer("objfilter", 10)
}

#filters
if(clk("objfilter"))
{
    while((N <= Total:count()) & perf())
    {
        if(!Total[N, entity]:parent())
        {
            if(!Hip)
            {
                if(Total[N, entity]:model():lower() == HIPSTR:lower())
                {
                    Hip = Total[N, entity]
                    N = 0
                }
            }
            else
            {
                if(Total[N, entity]:model():lower() == FEETSTR:lower())
                {
                    Feet:pushEntity(Total[N, entity])
                }
                elseif((Total[N, entity]:type() == "acf_gun") | (Total[N, entity]:model():lower() == GUNSTR:lower()))
                {
                    Guns:pushEntity(Total[N, entity])
                }
            }
        }
        N++
    }
    if(N <= Total:count())
    {
        timer("objfilter", 100)
    }
    else
    {
        timer("setprops", 10)
    }
}

if(clk("setprops"))
{
    N = 1
    # set feet bit defaults
    while(N <= Feet:count())
    {
        Held[N, vector] = tol((Feet[N, entity]:massCenter() - Hip:massCenter()), For, Rig, Up)
        N++
    }
    # set gun bit defaults
    while(N <= (Feet:count() + Guns:count()))
    {
        Held[N, quaternion] = inv(quat(Guns[N - Feet:count(), entity])) * quat(For, Up)
        N++
    }
    
    HipHeld = inv(quat(Hip)) * quat(For, Up)
    Run = 1
}

#run - inputs
if(clk() & Run)
{
    W = ADV["W", number]
    A = ADV["A", number]
    S = ADV["S", number]
    D = ADV["D", number]
    Space = ADV["Space", number]
    Alt = ADV["Alt", number]
    
    Pod = ADV["Entity", entity]
    Active = ADV["Active", number]
    CAM["Activated", number] = Active
    
    AcPerc = clamp(AcPerc + 0.08 * (Active - !Active), 0, 1)
    
    NEYEDriverEye = Pod:driver():eye()
    NEYEFlat = (NEYEDriverEye - NEYEDriverEye:dot(Pod:up()) * Pod:up()):normalized()
    NEYEUpper = (NEYEDriverEye - NEYEDriverEye:dot(Pod:right()) * Pod:right()):normalized()
    
    X = acos(clamp(NEYEFlat:dot(Pod:forward()), -1, 1)) * sign(Pod:right():dot(NEYEFlat - Pod:forward()))
    Y = acos(clamp(NEYEDriverEye:dot(NEYEFlat), -1, 1)) * sign(Pod:up():dot(NEYEDriverEye-NEYEFlat))
    
    if(Active)
    {
        For = vec(sin(X), cos(X), 0)
        Up = vec(0, 0, 1)
        Rig = For:cross(Up)
        CamD = vec(sin(X)*cos(Y), cos(X)*cos(Y), sin(Y))
    }
    
    Inputs = abs(W - S) | abs(D - A)
    Accm = clamp(Accm + 0.04 * (Inputs - !Inputs), 0, MAXACC)
    
    if(Inputs)
    {
        WalkVec = (For * (W - S) + Rig * (D - A)):normalized()
    }
    
    if(Alt & $Alt)
    {
        CAMNUM = (CAMNUM % LOCALOFFSET:count()) + 1
        Pod:hintDriver("View #" + CAMNUM, 3)
    }
}

#run - walking
if(clk() & Run)
{
    CurPos = Hip:massCenter()
    CurVel = $CurPos
    
    Adjusted = Accm * ((CurVel - CurVel:dot(Up) * Up) + WalkVec * ACCEL)
    
    ThrInput = Adjusted:length() > THRESHOLD
    
    if(ThrInput)
    {
        CurWalk = Adjusted:normalized()
    }
    
    Perc = clamp(Perc + 0.1 * (ThrInput - !ThrInput), 0, 1)
    
    Throttle = min(Adjusted:length() * 180 / (pi() * STEPS), THROTMAX)
    
    Time = Time + Throttle
    
    Dran = rangerOffset(Hip:massCenter(), Hip:massCenter() + tow(LOCALOFFSET[CAMNUM, vector], CamD, Rig, Rig:cross(CamD)))
    if(Dran:hit())
    {
        OUTCAMP = Dran:position()
    }
    else
    {
        OUTCAMP = Hip:massCenter() + tow(LOCALOFFSET[CAMNUM, vector], CamD, Rig, Rig:cross(CamD))
    }
    Dranb = rangerOffset(64000, OUTCAMP, CamD)
    OUTCAMD = CamD
    TargetPos = Dranb:position()
    
    HipCurrent = quat(Hip) * HipHeld
    HipTarget = quat(For, Up)
    HROffset = rotationVector(HipTarget/HipCurrent)
    HRForce = HROffset + $HROffset
    Hip:applyTorque(Hip:inertia() * HRFRC * Hip:toLocal(Hip:pos() + HRForce))
    
    HipMirror = vec()
    N = 1
    while(N <= (Feet:count() + Guns:count()))
    {
        if(N <= Feet:count())
        {
            Step = STEPS * Perc * (sin(Time + N / Feet:count() * 360) * CurWalk + cos(Time + N / Feet:count() * 360) * Up * UM)
            Side = STEPS * Perc * (1/3) * CurWalk:dot(Rig) * Rig * (-1)^(N % 2)
            Crouch = Up * (1-AcPerc) * CROUCHLEN
            Last[N, vector] = Current[N, vector]
            Current[N, vector] = tow(Held[N, vector] - tol(Feet[N, entity]:massCenter() - Hip:massCenter(), For, Rig, Up), For, Rig, Up) + Step + Side + Crouch
            Delta = Current[N, vector] - Last[N, vector]
            Feet[N, entity]:applyForce(Feet[N, entity]:mass() * FHFRC * (Current[N, vector] + Delta) * Perc * (AcPerc == 1))
            HipMirror -= (Current[N, vector] + Delta)
        }
        else
        {
            CGQ = quat(Guns[N - Feet:count(), entity]) * Held[N, quaternion]
            TempV = (TargetPos - Guns[N-Feet:count(), entity]:massCenter()):normalized()
            TGQ = quat(TempV, (Rig:cross(TempV)):normalized())
            Last[N, vector] = Current[N, vector]
            Current[N, vector] = rotationVector(TGQ/CGQ)
            Delta = Current[N, vector] - Last[N, vector]
            Guns[N-Feet:count(), entity]:applyTorque(AcPerc * Guns[N-Feet:count(), entity]:inertia() * GRFRC * (Guns[N-Feet:count(), entity]:toLocal(Guns[N-Feet:count(), entity]:pos() + (Current[N, vector] + Delta))))
        }
        N++
    }
    Hip:applyForce(Hip:mass() * HHFRC * (HipMirror / Feet:count()))
    CAM["Direction", vector] = OUTCAMD
    CAM["Position", vector] = OUTCAMP
}


As jackpody said, you need wire to make it work. Place the code in a text file and place it in garrysmod/garrysmod/data/expression2/

does expression2 go with wiremod? cause I cant find it in the datas folder. or is it another independent mod or such?

PS: thanks for the help but I dont know how to use that code >.<

If you have never saved an expression 2 chip from within the game, there probably wont be a folder. You will have to make the folder “garrysmod/data/Expression2” and place the text file there.

ok, thanks. Imma update this if it worked

Edit: okay, I made the expression2 folder, but how would I spawn it? I know it’s a chip (like wire Gate). I saw it on a video. but how would I weld it on a prop? I opened up the wire tab in the spawn menu and there’s no expression tool. :frowning: I’m very sad about this.

PS : sorry for being such a n00b and asking a lot of questions cause I just started adding addons and mods recently

[editline]21st May 2012[/editline]

damn, I wonder how these other guys pulled it off T.T

come on, guys. I wont be bothered by a little bump. I just need some little help! -_-

I’m going to be brutally honest - If you can’t figure out how to get this chip in game, you’re not going to be able to figure out how to use it.

well, there’s still youtube. :wink:
I just want to ask how to spawn it. D:
then, youtube will help me set up the mech :smiley:

Go into the Wire tab in-game, and up at the top there will be a listing for Expression 2.

If there isn’t, you either don’t see it, or you installed the game wrong. For the latter, nobody here will be willing to help you correctly install it.