sábado, 13 de octubre de 2012

un script para wolfcam

uno de los primeros (y pocos) que hice, por si alguien quiere usarlo, eso si, denme el credito hijos de puta :P está basado en el script de jones


////****   ROCKET-3   ***   BFG-120   ***   GRANNY-234   ***   PLASMA-328   ***   RAIL-380  ***   LG-450   ***   SG,MG,GAUNTLET-510   ///////////

weapon/rocket/flash {
color 1 0.20 0
size 400 + rand*32
light
}

weapon/rocket/projectile {
// wolfcam need to do model rotation yourself
// wolfcam add size option when adding models
model "models/ammo/rocket/rocket.md3"
rotate time * 1000 / 4
size 1
dirModel
loopSound "sound/weapons/rocket/rockfly.wav"
}

weapon/rocket/trail {

// world glow
color 1 0 0
size 500
Light

// flame trail
color 1 0.10 0
alpha 0.80
shader flareShader
interval 0.003 {
normalize dir v0
inverse v0
wobble v0 velocity 5 + rand*10
scale velocity velocity 75 + rand*50
emitter 0.6 + rand*0.5 {
size 13 * ( 1 - 0.5 * lerp * 1.5 )
colorFade 0.005
moveGravity 0
Sprite
}
}
}

weapon/rocket/impact {
vibrate 70
sound sound/weapons/rocket/rocklx1a.wav
shader gfx/damage/burn_med_mrk
size 64
Decal

// animating sprite of the explosion

shader rocketExplosion
size 40
color 1 0 0
emitter 1 {
// size will goto zero after 0.5 of the time
Sprite
size 300 * clip(2 - 2*lerp)
Light
}

// Particles

color 1 1 0
alpha 0.8
shader flareShader
repeat 20 {
random velocity
scale velocity velocity 250 + rand*50
size 1 + rand*2.5
emitter 1 + rand*0.5 {
colorFade 0.75
Sprite
moveBounce 400 0.75
}
}

color 1 0.20 0
alpha 0.90
shader flareShader
repeat 20 {
random velocity
scale velocity velocity 250 + rand*50
size 1 + rand*2.5
emitter 1 + rand*0.5 {
colorFade 0.75
Sprite
moveBounce 400 0.75
}
}

color 1 0.25 0
alpha 0.8
shader flareShader
repeat 20 {
random velocity
scale velocity velocity 250 + rand*50
size 1 + rand*2.5
emitter 1 + rand*0.5 {
colorFade 0.75
Sprite
moveBounce 400 0.75
}
}

}



////****   ROCKET-3   ***   BFG-120   ***   GRANNY-234   ***   PLASMA-330   ***   RAIL-380  ***   LG-450   ***   SG,MG,GAUNTLET-510   ///////////

// --------------------------------------------------------------------------------------
// ----- PLASMA -------------------------------------------------------------------------
// --------------------------------------------------------------------------------------

// input: origin, team, clientnum, enemy, teammate, ineyes
weapon/plasma/flash {
 
        color 1 0 0
        size 200 + rand * 25
        Light
        }
 
// input: velocity, dir, rotate, origin, angles, axis, size
weapon/plasma/projectile {
 
        loopSound       "sound/weapons/plasma/lasfly.wav"
 
        // world glow
 
        size 125
        color 0.35 0.35 1
        Light
 
        // 4x twisting flame
 
        t0 360 / pi
        t1 cos( t0 * time * pi * 2 )
        t2 sin( t0 * time * pi * 2 )
 
        normalize dir v2
        inverse v2
        perpendicular dir v0
        cross v2 v0 v1
 
        shader flareShader
        distance 6 + 1 * rand {
 
                scale v2 v2 0.6 + 0.6 * rand
 
                repeat 4 {
 
                        if loopcount = 0 {
                        scale v0 v3 t2
                        scale v1 v4 t2
                        subScale v4 v0 v5 t1
                        addScale v3 v1 v5 t1
                        }
 
                        if loopcount = 1 {
                        scale v0 v3 -t2
                        scale v1 v4 -t2
                        addScale v4 v0 v5 t1
                        subScale v3 v1 v5 t1
                        }
 
                        if loopcount = 2 {
                        scale v0 v3 t1
                        scale v1 v4 t1
                        subScale v4 v0 v5 t2
                        addScale v3 v1 v5 -t2
                        }
 
                        if loopcount = 3 {
                        scale v0 v3 -t1
                        scale v1 v4 -t1
                        subScale v4 v0 v5 -t2
                        addScale v3 v1 v5 t2
                        }
 
                        add v2 v5 v6
                        addScale parentVelocity v6 velocity 75 + 50 * rand
 
                        emitter 0.3 * rand * rand {
 
                                t3 5 + 0.5 * crand
                                size t3 - t3 * ( 0.5 * lerp )
 
                                red 0.2 - lerp * 0.1
                                green 0.2 - lerp * 0.1
                                blue 0.9 + lerp * 0.1
 
                                colorFade 0
                                moveGravity 0
                                moveBounce 0.1 0.1
                                Sprite cullNear
                                }
                        }
 
                // random flares
 
                t4 3 + 0.5 * crand
 
                random v7
                addScale parentVelocity v7 velocity 75 + rand * 50
 
                emitter 0.3 * rand * rand {
 
                        size t4 - t4 * lerp
 
                        red 0.2 - lerp * 0.1
                        green 0.2 + lerp * 0.2
                        blue 0.9 + lerp * 0.1
 
                        colorFade 0
                        moveGravity 0
                        moveBounce 0.1 0.1
                        Sprite cullNear
                        }
                }
        }
 
// input: origin, angles, velocity, dir, axis
weapon/plasma/trail {
 
        // inverse flame
 
        shader flareShader
        distance 6 + 2 * rand {
 
                normalize dir v0
                inverse v0
                addScale parentVelocity v0 velocity 200 + rand * 75
       
                emitter 0.35 * rand * rand {
 
                        t0 20 - 2 * rand
                        size t0 - t0 * ( 0.5 * lerp )
                        width size - size * lerp
 
                        red 0.2 - lerp * 0.1
                        green 0.2 - lerp * 0.1
                        blue 0.9 + lerp * 0.1
 
                        colorFade 0
                        moveGravity 0
                        Spark cullNear
                        }
 
                // inverse flares
 
                normalize dir v1
                inverse v1
                addScale parentVelocity v1 velocity 250 + rand * 75
 
                emitter 0.3 * rand * rand {
 
                        t1 8 - 2 * rand
                        size t1 - t1 * ( 0.5 * lerp )
                        width size - size * lerp
 
                        red 0.2 - lerp * 0.1
                        green 0.2 + lerp * 0.2
                        blue 0.9 + lerp * 0.1
 
                        colorFade 0
                        moveGravity 0
                        Spark cullNear
                        }
                }
        }
 
// input: origin, dir, surfacetype
weapon/plasma/impact {
 
        vibrate 5
        sound sound/weapons/plasma/plasmx1a.wav
 
        shader plasmaExplosion
        model models/weaphits/ring02.md3
        rotate rand * 360
        emitter 0.5 {
                dirModel
                }
 
        copy origin parentOrigin
        copy velocity parentVelocity
 
        normalize dir v2
        perpendicular dir v0
        cross v0 v2 v1
 
        t0 180 / pi
        t1 pi * 2
        t2 25 - 5 * rand
 
        shader flareShader   
        repeat 30 + rand * 40 {
 
                random dir
                addScale parentVelocity dir velocity 350 * rand
                width 2 + 1 * rand
 
                emitter 0.7 * rand + rand * 0.4 {
 
                        size 20 - lerp * 20
 
                        color 1 0 0
 
                        colorFade 0.8
                        moveBounce 150 0.8
                        Spark
                        }
                }
 
        repeat 20 + 10 * rand {
 
                t3 cos( t0 * loop * t1 )
                t4 sin( t0 * loop * t1 )
 
                scale v0 v3 10 * t3
                addScale v3 v1 v4 10 * t4
 
                add parentOrigin v4 origin
 
                t5 5 * -sin( t0 * loop * t1 )
                t6 5 * cos( t0 * loop * t1 )
 
                scale v0 v5 t5
                addScale v5 v1 v6 t6
 
                scale v2 v7 5 * rand
                add v6 v7 v8
                addScale parentVelocity v8 velocity 25
 
                emitter 0.2 + 0.1 * rand {
 
                        size t2 - t2 * ( 0.5 * lerp * 1.5 )
                        width size - size * ( 0.5 * lerp * 1.5 )
 
                        red 0.2 - lerp * 0.1
                        green 0.2 - lerp * 0.1
                        blue 0.9 + lerp * 0.1
 
                        colorFade 0
                        moveBounce 1 1
                        moveGravity 0
                        Spark cullNear
                        }
                }
 
        repeat 20 + 10 * rand {
 
                t3 cos( t0 * loop * t1 )
                t4 sin( t0 * loop * t1 )
 
                scale v0 v3 10 * t3
                addScale v3 v1 v4 10 * t4
 
                add parentOrigin v4 origin
 
                t5 5 * -sin( t0 * loop * t1 )
                t6 5 * cos( t0 * loop * t1 )
 
                scale v0 v5 t5
                addScale v5 v1 v6 t6
 
                scale v2 v7 5 * rand
                add v6 v7 v8
                addScale parentVelocity v8 velocity 25
 
                emitter 0.2 + 0.2 * rand {
 
                        size t2 - t2 * ( 0.5 * lerp * 1.5 )
                        width size - size * ( 0.5 * lerp * 1.5 )
 
                        red 0.2 - lerp * 0.1
                        green 0.2 - lerp * 0.1
                        blue 0.9 + lerp * 0.1
 
                        colorFade 0
                        moveBounce 1 1
                        moveGravity 0
                        Spark cullNear
                        }
                }
        }
 
// input: origin, dir, team, clientnum, enemy, teammate, ineyes
weapon/plasma/impactflesh {
 
        shader flareShader   
        repeat 30 + rand * 40 {
 
                random dir
                addScale parentVelocity dir velocity 350 * rand
                width 2 + 1 * rand
 
                emitter 0.2 * rand + rand * 0.4 {
 
                        size 20 - lerp * 20
 
                        color 1 0 0
 
                        colorFade 0.8
                        moveBounce 150 0.8
                        Spark
                        }
                }
        }


// --------------------------------------------------------------------------------------
// ----- LG -----------------------------------------------------------------------------
// --------------------------------------------------------------------------------------

weapon/lightning/flash {
    color 1 0 0
    size 300 + rand*32
    light
}

weapon/lightning/impact {
    vibrate 5
    soundList {
        sound/weapons/lightning/lg_hit.wav
        sound/weapons/lightning/lg_hit2.wav
        sound/weapons/lightning/lg_hit3.wav
        }

    // sparks - controla la marca
    shader flareShader
    alpha 0
    color 1 0.1 0
    repeat 1 {
        wobble dir velocity 5 + rand*25
        scale velocity velocity 250 + rand*50
        size 1 + rand*4
        emitter 1 + rand*0.25 {
            colorFade 0.75
            Sprite
            moveBounce 400 0.75
            }
        }

        // controla las chispas q salen
    shader flareShader
    alpha 0.8
    color 1 0 0
    repeat 1 {
        wobble dir velocity 5 + rand*25
        scale velocity velocity 100 + rand*50
        size 1 + rand*2
        emitter 1 + rand*0.25 {
            colorFade 0.75
            Sprite
            moveBounce 400 0.75
            }
        }

    // hole mark shader decal
    shader gfx/damage/hole_lg_mrk
    size 10
    decal
}


////****   ROCKET-3   ***   BFG-120   ***   GRANNY-234   ***   PLASMA-328   ***   RAIL-380  ***   LG-450   ***   SG,MG,GAUNTLET-510   ///////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////                                            ///////////////////////////////////////////////////////////
////////////////////                 STUFF                      ///////////////////////////////////////////////////////////
////////////////////                                            ///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// q3mme example scripts combined into one file with example changes to make
// it compatible with wolfcam

// wolfcam additional inputs to some scripts are:
//    team         0 free, 1 red, 2 blue, 3 spectator
//    clientnum
//    enemy        1 if enemy of whoever is being specced in demo
//    teammate
//    ineyes       1 if first person view is with this player
//    surfacetype  for impact scripts:  0 not specified, 1 metal, 2 wood,
//                   3 dust
//

/////////////////////////////////////////////////////


// Some general fx script you could use in the effects editor when really bored
mme/decal {
    Trace
    decalTemp
}

mme/quad {
    quad
}


mme/model {
    anglesModel
}

// Talk sprite
// input: origin, team, clientnum, enemy, teammate, ineyes
player/talk {
        if ineyes != 1 {
            size        10
            shader        sprites/balloon3
                Sprite
        }
}

// Impressive sprite
// input: origin, team, clientnum, enemy, teammate, ineyes
player/impressive {
        if ineyes != 1 {
            size        10
            shader        medal_impressive
                Sprite
        }
}

// Excellent sprite
// input: origin, team, clientnum, enemy, teammate, ineyes
player/excellent {
        if ineyes != 1 {
            size        10
                shader        medal_excellent
                Sprite
        }
}

// Holy shit medal from ra3
// input: origin, team, clientnum, enemy, teammate, ineyes
player/holyshit {
        if ineyes != 1 {
            size        10
                shader        medal_holyshit
                Sprite
        }
}

// Accuracy medal
// input: origin, team, clientnum, enemy, teammate, ineyes
player/accuracy {
        if ineyes != 1 {
            size        10
                shader        medal_accuracy
                Sprite
        }
}

// Gauntlet sprite
// input: origin, team, clientnum, enemy, teammate, ineyes
player/gauntlet {
        if ineyes != 1 {
            size        10
            shader        medal_gauntlet
                Sprite
        }
}

// connection sprite
// input: origin, team, clientnum, enemy, teammate, ineyes
player/connection {
        if ineyes != 1 {
            size        10
            shader        disconnected
                Sprite
        }
}

// haste/speed trail
// input: origin, angles, velocity, dir (normalized), team, clientnum,
//        enemy, teammate, ineyes
player/haste {
    interval 0.1 {
        shader        hasteSmokePuff
        emitter 0.5 {
            size    6 + 10 * wave( 0.5  * lerp )
            alphaFade    0
            sprite    cullNear
        }
    }
}

// flight trail -- wolfcam addition, not in q3mme
// input: origin, angles, velocity, dir (normalized), team, clientnum,
//        enemy, teammate, ineyes
player/flight {
    interval 0.1 {
        shader        hasteSmokePuff
        emitter 0.5 {
            size    6 + 10 * wave( 0.5  * lerp )
            alphaFade    0
            sprite    cullNear
        }
    }
}

// wolfcam addition, not in q3mme:
//
// player/head/trail
// player/torso/trail
// player/legs/trail
//
// input: origin, angles, velocity, dir (normalized), team, clientnum,
//        enemy, teammate, ineyes

//player/legs/trail {
//    interval 0.1 {
//        shader        sprites/balloon3
//        emitter 0.5 {
//            size    6 + 10 * wave( 0.5  * lerp )
//            alphaFade    0
//            sprite    cullNear
//        }
//    }
//}


// teleport in effect and sound effect
// input: origin
player/teleportIn {
    sound    sound/world/telein.wav
        // Show the fading spawn tube for 0.5 seconds
    //model models/misc/telep.md3
        // wolfcam ql uses different model
        model models/powerups/pop.md3
    //shader teleportEffect  // wolfcam for ql don't add shader
    emitter 0.5 {
        colorFade 0
        anglesModel
    }
}

// teleport out effect and sound effect
// input: origin
player/teleportOut {
    sound    sound/world/teleout.wav
        //Show the fading spawn tube for 0.5 seconds
    //model    models/misc/telep.md3
        // wolfcam ql uses different model
        model models/powerups/pop.md3
    //shader    teleportEffect  // wolfcam for ql don't add shader
    emitter 0.5 {
        colorFade 0
        anglesModel
    }
}


// Explode the body into gibs
// input: origin, velocity, team, clientnum, enemy, teammate, ineyes
//
// wolfcam: guessing that velocity corresponds to player
player/gibbed {
  if cl_useq3gibs {
        sound sound/player/gibsplt1.wav
    repeat 11 {
        //Huge list of different body parts that get thrown away
        modellist loop {
                        // wolfcam gibs located in different directory
            //models/gibs/abdomen.md3
            //models/gibs/arm.md3
            //models/gibs/chest.md3
            //models/gibs/fist.md3
            //models/gibs/foot.md3
            //models/gibs/forearm.md3
            //models/gibs/intestine.md3
            //models/gibs/leg.md3
            //models/gibs/leg.md3
            //models/gibs/skull.md3
            //models/gibs/brain.md3

            models/gibsq3/abdomen.md3
            models/gibsq3/arm.md3
            models/gibsq3/chest.md3
            models/gibsq3/fist.md3
            models/gibsq3/foot.md3
            models/gibsq3/forearm.md3
            models/gibsq3/intestine.md3
            models/gibsq3/leg.md3
            models/gibsq3/leg.md3
            models/gibsq3/skull.md3
            models/gibsq3/brain.md3
        }

        // aim v0 in random direction, giving more height to upwards vector and scale add to velocity
        random        v0
        v02            v02+1
        addScale    parentVelocity v0 velocity 350
        yaw            360*rand
        pitch        360*rand
        roll        360*rand
        emitter 5 + rand*3 {
            sink 0.9 50
            moveBounce 800 0.6
            anglesModel
            impact 50 {
                                // wolfcam  need to add gib splat sounds yourself
                                if rand < 0.5 {
                                    t0 rand * 3
                                    if t0 < 3 {
                                        sound sound/player/gibimp3.wav
                                    } else if t0 < 2 {
                                        sound sound/player/gibimp2.wav
                                    } else {
                                        sound sound/player/gibimp1.wav
                                    }
                                }
                size 16 + rand*32
                //shader bloodMark
                                // wolfcam
                                shader q3bloodMark
                decal alpha
            }
            distance 20 {
                // Slowly sink downwards
                clear velocity
                velocity2 -10
                rotate rand*360
                //shader bloodTrail
                                // wolfcam
                                shader q3bloodTrail
                emitter 2 {
                    moveGravity 0
                    alphaFade 0
                    rotate rotate + 10*lerp
                    size  8 + 10*lerp
                    sprite
                }
            }
        }
    }
    } else {
           t0 rand * 4
           if t0 < 4 {
               sound sound/misc/electrogib_04.ogg
       } else if t0 < 3 {
           sound sound/misc/electrogib_03.ogg
       } else if t0 < 2 {
               sound sound/misc/electrogib_02.ogg
       } else {
               sound sound/misc/electrogib_01.ogg
       }
           // death effect
           shader deathEffect
           size 100
           copy velocity v3
           clear velocity
           emitter 0.5 {
                   sprite
           }
           copy v3 velocity
           shaderClear

           repeat 15 {
                // aim v0 in random direction, giving more height to upwards vector and scale add to velocity
        random        v0
        v02            v02+1
        addScale    parentVelocity v0 velocity 350
        yaw            360*rand
        pitch        360*rand
        roll        360*rand
                model models/gibs/sphere.md3
                size 1
        emitter 1 + rand*0.5 {
            sink 0.9 50
            moveBounce 800 0.6
            anglesModel
            impact 50 {
                                if rand < 0.5 {
                                    t0 rand * 4
                                    if t0 < 4 {
                                        sound sound/misc/electrogib_bounce_04.ogg
                                    } else if t0 < 3 {
                                        sound sound/misc/electrogib_bounce_03.ogg
                                    } else if t0 < 2 {
                                        sound sound/misc/electrogib_bounce_02.ogg
                                    } else {
                                        sound sound/misc/electrogib_bounce_01.ogg
                                    }
                                }
                //size 16 + rand*32
                //shader bloodMark
                //decal alpha
            }
            distance 20 {
                clear velocity
                                shader wc/tracer
                                size 2.5 + rand * 1
                                color 0 1 0
                emitter 0.5 {
                                        red lerp
                    rotate rotate + 10*lerp
                    //size  8 + 10*lerp
                    sprite
                }
            }
        }
      }
  }
}

// Freezetag thaw
// input: origin, velocity, team, clientnum, enemy, teammate, ineyes
//
// wolfcam: guessing that velocity corresponds to player
//
// player/thawed {}


// General weapon effects
// flash is a 0.25 second event after a weapon is fired
// fire is a single event when weapon is fired
// impact is for weapons impact on something or explode like gr enades
// trail is a single event for weapons without projectiles or a
//      constant event when projectile is in motion projectile is for
//      rendering the specific projectile

// wolfcam: the other ql weapons also available as 'nailgun', 'prox',
//   and 'chaingun'
// wolfcam: weapons also have, in addition to /impact scripts, /impactflesh
//   scripts.  ex:  weapon/plasma/impactflesh
//   inputs for 'impactflesh' are: origin and dir
//
//   If a weapon doesn't have an impactflesh script 'weapon/common/impactFlesh'
//   will be checked.  'weapon/common/impactFlesh' would be a good place to
//   place custom hit sparks.


// input: origin, dir, team, clientnum, enemy, teammate, ineyes
//weapon/common/impactFlesh {
//    shader flareShader
//        size 5
//        color 1 0 1
//        emitter 4 {
//               //origin2 origin2 + lerp * 8
//               velocity2 200
//               moveGravity 0
//               Sprite
//        }
//}


//General weapon effects
//flash is a 0.25 second event after a weapon is fired
//fire is a single event when weapon is fired
//impact is for weapons impact on something or explode like gr enades
//trail is a single event for weapons without projectiles or a constant event when projectile is in motion
//projectile is for rendering the specific projectile


//Bubbles in the water
//input origin
weapon/common/bubbles {
    shader waterbubble
    distance 5+rand*10 {
        size 1 + rand * 2
        random    dir
        addScale origin dir origin 10 * rand
        emitter 1+rand*0.25 {
            alphaFade 0
            origin2 origin2 + lerp * 8
            Sprite
        }
    }
}

//////////////////////////////////////////////////////////

weapon/gauntlet/flash {

    color 0.3 0.3 0.5
    size 150 + rand * 32
    Light

    shader flareShader   
    repeat 5 + rand * 10 {

        random dir
        addScale parentVelocity dir velocity 300 * rand
        width 0.5 + 0.4 * rand

        emitter 0.1 * rand + rand * 0.3 {

            size 3 - lerp * 0.2

            color 1 1 0.1

            colorFade 1
            moveBounce 400 0.1
            spark
            }
        }
    }

No hay comentarios:

Publicar un comentario