@name Something_Funny
#defines
@persist ToOwnerBearing:normal Coef:normal HandFromBody:normal
@persist IndexBody IndexHead IndexHand
@persist BodyPos:vector HeadPos:vector HandPos:vector
@persist BodySize:vector HeadSize:vector HandSize:vector
@persist BodyAng:angle HeadAng:angle HandAng:angle
@persist BodyColor:vector HeadColor:vector HandColor:vector
@persist HandTop ChipPos:vector BallIndex
@persist OldVictimPos:vector OldWeaponPos:vector OldWeaponAngles:angle
@persist LenFromBallToTarget CurrentLength Clock Acceleration
#@persist TimeOfChat
#end
function normal createTheBall( VictimPos:vector, WeaponPos:vector )
{
Index = randint( 4, 100 )
BallSize = vec( 0.4, 0.4, 0.4 )
BallColor = vec( 0, 0, 0 )
BallOrigin = WeaponPos
holoCreate( Index, BallOrigin, BallSize, ang( 0, 0, 0 ), BallColor )
holoModel( Index, "sphere", 0 )
return Index
}
interval( 50 )
runOnChat( 1 )
if( first() )
{
ChipPos = entity():pos()
Coef = 6
Acceleration = 3.5
TimeOfChat = 0
HandFromBody = 2*Coef + 0.8*Coef
HandTop = 5*Coef*2 - 3*Coef
BodyPos = ChipPos + vec( 0, 0, 5*Coef )
HeadPos = ChipPos + vec( 0, 0, 2.5*Coef + 5*Coef*2)
HandPos = ChipPos + vec( 0, HandFromBody, HandTop )
HandSize = vec( 0.8, 0.8, 3 )
BodySize = vec( 2, 2, 5 )
HeadSize = vec( 2.5, 2.5, 2.5 )
HandAng = ang( 0, 0, 0 )
BodyAng = ang( 0, 0, 0 )
HeadAng = ang( 0, 0, 0 )
BodyColor = vec( 255, 0, 0 )
HeadColor = vec( 0, 255, 0 )
HandColor = vec( 0, 0, 255 )
IndexBody = 1
IndexHead = 2
IndexHand = 3
holoCreate( IndexHand, HandPos, HandSize, HandAng, BodyColor )
holoCreate( IndexBody, BodyPos, BodySize, BodyAng, HeadColor )
holoCreate( IndexHead, HeadPos, HeadSize, HeadAng, HandColor )
holoModel( IndexHead, "sphere", 0 )
#something about balls
BallIndex = -1
CurrentLength = 0
}
else
{
OwnerOrigin = entity():owner():shootPos()
ToOwnerBearing = entity():bearing( OwnerOrigin )
BodyAng = ang( 0, -ToOwnerBearing, 0 )
HeadAng = ang( 0, -ToOwnerBearing, 0 )
ToOwnerElevation = elevation( HandPos, ang( 0, 0, 0 ), OwnerOrigin )
FromHandToHeadBearing = bearing( HandPos, ang( 0, 0, 0 ), OwnerOrigin )
HandAngles = ang( -(ToOwnerElevation - 90), -ToOwnerBearing, 0 )
holoAng( IndexBody, ang( 0, -ToOwnerBearing, 0 ) )
holoAng( IndexHead, ang( 0, -ToOwnerBearing, 0 ) )
holoAng( IndexHand, HandAngles )
HandNewPos = ChipPos + vec( HandFromBody * sin( FromHandToHeadBearing ), HandFromBody * cos( FromHandToHeadBearing ), HandTop )
holoPos( IndexHand, HandNewPos )
LenFromBallToTarget = (OwnerOrigin - HandNewPos):length()
if( entity():owner():lastSaid() == "!shoot" && chatClk() && BallIndex == -1 && LenFromBallToTarget < 550 )
{
BallIndex = createTheBall( OwnerOrigin, HandNewPos )
LenFromBallToTarget = (OwnerOrigin - HandNewPos):length()
OldWeaponPos = HandNewPos
OldWeaponAngles = HandAngles
OldVictimPos = OwnerOrigin
CurrentLength = 0
}
if( BallIndex >= 4 && CurrentLength < LenFromBallToTarget )
{
holoPos( BallIndex, OldWeaponPos + vec( CurrentLength * cos(OldWeaponAngles:yaw()), CurrentLength * sin(OldWeaponAngles:yaw()), CurrentLength * cos(OldWeaponAngles:pitch())) )
CurrentLength = Clock*Acceleration
Clock += 10
}
else
{
holoDelete( BallIndex )
OldWeraponPos = vec( 0, 0, 0 )
OldWeaponAngles = ang( 0, 0, 0 )
OldVictimPos = vec( 0, 0, 0 )
BallIndex = -1
CurrentLength = 0
Clock = 0
}
}
Comments