FlawlessHappiness
Posting Freak
Posts: 3,980
Threads: 145
Joined: Mar 2012
Reputation:
171
Flawless' thread of inspiration
Hi.
Sometimes I get a rush of inspiration, but never really finish anything.
Then I have a prototype going to waste.
I figured I'd like to share whatever I come up with.
You're allowed to use my concepts in any mod you make as long as you credit me
Parkour
Preview
Wallrunning and high jumping
Frictional Science
Preview
Inspired by the Portal series.
Confusion
Preview
Things change when the magic door closes.
Moving an entity with scripting [Animated] VERY EXPERIMENTAL
Here, I made a script on how to move a static entity with the SetEntityPos scriptline.
WARNING: Move only 1 object at a time. Can cause lag.
Spoiler below!
This has to be in your scriptfile:
void MoveEntityToEntity ( string & in asEntity , string & in asDestEntity , float afSpace , float afFreq ) { if( GetLocalVarInt ( "Moving" + asEntity ) == 1 ) { AddDebugMessage ( "Object already moving" , false ); return; } SetLocalVarFloat ( "MoveFreq_" + asEntity , afFreq ); SetLocalVarFloat ( "MoveSpace_" + asEntity , afSpace ); float afAmountX = GetEntityPosX ( asDestEntity )- GetEntityPosX ( asEntity ); SetLocalVarFloat ( "MoveAmountX_" + asEntity , MathSqrt ( MathPow ( afAmountX , 2 ))); SetLocalVarFloat ( "MoveSpaceX_" + asEntity , afSpace ); if( afAmountX < 0 ) { SetLocalVarFloat ( "MoveSpaceX_" + asEntity , - afSpace ); } float afAmountY = GetEntityPosY ( asDestEntity )- GetEntityPosY ( asEntity ); SetLocalVarFloat ( "MoveAmountY_" + asEntity , MathSqrt ( MathPow ( afAmountY , 2 ))); SetLocalVarFloat ( "MoveSpaceY_" + asEntity , afSpace ); if( afAmountY < 0 ) { SetLocalVarFloat ( "MoveSpaceY_" + asEntity , - afSpace ); } float afAmountZ = GetEntityPosZ ( asDestEntity )- GetEntityPosZ ( asEntity ); SetLocalVarFloat ( "MoveAmountZ_" + asEntity , MathSqrt ( MathPow ( afAmountZ , 2 ))); SetLocalVarFloat ( "MoveSpaceZ_" + asEntity , afSpace ); if( afAmountZ < 0 ) { SetLocalVarFloat ( "MoveSpaceZ_" + asEntity , - afSpace ); } AddTimer ( asEntity , 0.0f , "MoveObjectTimer" ); } void MoveEntityOnAxis ( string & in asEntity , float afAmountX , float afAmountY , float afAmountZ , float afTime ) { if( GetLocalVarInt ( "Moving" + asEntity ) == 1 ) { AddDebugMessage ( "Object already moving" , false ); return; } SetLocalVarFloat ( "MoveSpace_" + asEntity , 0.01 ); if( afAmountX != 0 ) SetLocalVarFloat ( "MoveFreqX_" + asEntity , ( afTime / afAmountX )* GetLocalVarFloat ( "MoveSpace_" + asEntity )); if( afAmountY != 0 ) SetLocalVarFloat ( "MoveFreqY_" + asEntity , ( afTime / afAmountY )* GetLocalVarFloat ( "MoveSpace_" + asEntity )); if( afAmountZ != 0 ) SetLocalVarFloat ( "MoveFreqZ_" + asEntity , ( afTime / afAmountZ )* GetLocalVarFloat ( "MoveSpace_" + asEntity )); AddDebugMessage ( "X = " + GetLocalVarFloat ( "MoveFreqX_" + asEntity ), false ); AddDebugMessage ( "Y = " + GetLocalVarFloat ( "MoveFreqY_" + asEntity ), false ); AddDebugMessage ( "Z = " + GetLocalVarFloat ( "MoveFreqZ_" + asEntity ), false ); if( afAmountX != 0 ) { SetLocalVarFloat ( "MoveAmountX_" + asEntity , MathSqrt ( MathPow ( afAmountX , 2 ))); SetLocalVarFloat ( "MoveSpaceX_" + asEntity , 0.01 ); if( afAmountX < 0 ) { SetLocalVarFloat ( "MoveSpaceX_" + asEntity , - 0.01 ); AddDebugMessage ( "MoveX = " + GetLocalVarFloat ( "MoveSpace_" + asEntity ), false ); } } if( afAmountY != 0 ) { SetLocalVarFloat ( "MoveAmountY_" + asEntity , MathSqrt ( MathPow ( afAmountY , 2 ))); SetLocalVarFloat ( "MoveSpaceY_" + asEntity , 0.01 ); if( afAmountY < 0 ) { SetLocalVarFloat ( "MoveSpaceY_" + asEntity , - 0.01 ); } } if( afAmountZ != 0 ) { SetLocalVarFloat ( "MoveAmountZ_" + asEntity , MathSqrt ( MathPow ( afAmountZ , 2 ))); SetLocalVarFloat ( "MoveSpaceZ_" + asEntity , 0.01 ); if( afAmountZ < 0 ) { SetLocalVarFloat ( "MoveSpaceZ_" + asEntity , - 0.01 ); } } AddTimer ( asEntity , 0.0f , "MoveObjectTimerX" ); AddTimer ( asEntity , 0.0f , "MoveObjectTimerY" ); AddTimer ( asEntity , 0.0f , "MoveObjectTimerZ" ); } void MoveObjectTimerX ( string & in asTimer ) { SetLocalVarInt ( "Moving" + asTimer , 1 ); if( GetLocalVarFloat ( "MoveAmountX_" + asTimer ) != 0 ) { SetEntityPos ( asTimer , GetEntityPosX ( asTimer )+ GetLocalVarFloat ( "MoveSpaceX_" + asTimer ), GetEntityPosY ( asTimer ), GetEntityPosZ ( asTimer )); AddLocalVarFloat ( "MoveAmountX_" + asTimer , - GetLocalVarFloat ( "MoveSpace_" + asTimer )); if( GetLocalVarFloat ( "MoveAmountX_" + asTimer ) < 0 ) { SetLocalVarFloat ( "MoveAmountX_" + asTimer , 0 ); return; } } AddTimer ( asTimer , GetLocalVarFloat ( "MoveFreqX_" + asTimer ), "MoveObjectTimerX" ); } void MoveObjectTimerY ( string & in asTimer ) { SetLocalVarInt ( "Moving" + asTimer , 1 ); if( GetLocalVarFloat ( "MoveAmountY_" + asTimer ) != 0 ) { SetEntityPos ( asTimer , GetEntityPosX ( asTimer ), GetEntityPosY ( asTimer )+ GetLocalVarFloat ( "MoveSpaceY_" + asTimer ), GetEntityPosZ ( asTimer )); AddLocalVarFloat ( "MoveAmountY_" + asTimer , - GetLocalVarFloat ( "MoveSpace_" + asTimer )); if( GetLocalVarFloat ( "MoveAmountY_" + asTimer ) < 0 ) { SetLocalVarFloat ( "MoveAmountY_" + asTimer , 0 ); return; } } AddTimer ( asTimer , GetLocalVarFloat ( "MoveFreqY_" + asTimer ), "MoveObjectTimerY" ); } void MoveObjectTimerZ ( string & in asTimer ) { SetLocalVarInt ( "Moving" + asTimer , 1 ); if( GetLocalVarFloat ( "MoveAmountZ_" + asTimer ) != 0 ) { SetEntityPos ( asTimer , GetEntityPosX ( asTimer ), GetEntityPosY ( asTimer ), GetEntityPosZ ( asTimer )+ GetLocalVarFloat ( "MoveSpaceZ_" + asTimer )); AddLocalVarFloat ( "MoveAmountZ_" + asTimer , - GetLocalVarFloat ( "MoveSpace_" + asTimer )); if( GetLocalVarFloat ( "MoveAmountZ_" + asTimer ) < 0 ) { SetLocalVarFloat ( "MoveAmountZ_" + asTimer , 0 ); return; } } AddTimer ( asTimer , GetLocalVarFloat ( "MoveFreqZ_" + asTimer ), "MoveObjectTimerZ" ); MoveObjectCheck ( asTimer ); } void MoveObjectCheck ( string & in asEntity ) { if( GetLocalVarFloat ( "MoveAmountX_" + asEntity ) == 0 && GetLocalVarFloat ( "MoveAmountY_" + asEntity ) == 0 && GetLocalVarFloat ( "MoveAmountZ_" + asEntity ) == 0 ) { SetLocalVarInt ( "Moving" + asEntity , 0 ); OnArrival ( asEntity ); return; } } void OnArrival ( string & in asEntity ) { }
To make an entity move to a specific entity, write:
MoveEntityToEntity ( string & in asEntity , string & in asDestEntity , float afSpace , float afFreq )
asEntity = The entity to move.
asDestEntity = The entity to move towards.
afAmountX = The amount to move on the X-axis
Can be both positive and negative.
afAmountY = The amount to move on the Y-axis
Can be both positive and negative.
afAmountZ = The amount to move on the Z-axis
Can be both positive and negative.
afSpace = The amount of space the object moves with, per frequence.
Must be above 0.
If used with a frequence at 0.01f:
0.01f is kinda slow.
0.02f is quicker.
afFreq = How often the object moves.
Must be above 0.
0.01f looks really smooth.
To make an entity move a specific amount, write:
MoveEntityOnAxis ( string & in asEntity , float afAmountX , float afAmountY , float afAmountZ , float afTime );
asEntity = The entity to move.
afAmountX = The amount to move on the X-axis
Can be both positive and negative.
afAmountY = The amount to move on the Y-axis
Can be both positive and negative.
afAmountZ = The amount to move on the Z-axis
Can be both positive and negative.
afTime = Duration of animation in seconds.
When the entity has moved, the function OnArrival(string &in asEntity) calls.
void OnArrival ( string & in asEntity )
asEntity = The entity that moved.
Variables used in this script:
float "MoveFreq_"+asObject
float "MoveAmountX_"+asObject
float "MoveAmountY_"+asObject
float "MoveAmountZ_"+asObject
float "MoveSpaceX_"+asObject
float "MoveSpaceY_"+asObject
float "MoveSpaceZ_"+asObject
int "Moving"+asObject
Scary heartbeat screen effects
A heartbeat script, that uses both screen effects and the heartbeat sound.
Spoiler below!
////////////// //HEART BEAT// //To start heartbeat effect, add both of these lines //SetLocalVarInt("Heartbeat", 1); //AddTimer("HeartBeat_1", 2, "HeartBeat"); // //To stop hearbeat use the following line //SetLocalVarInt("Heartbeat", 0); void HeartBeat ( string & in asTimer ) { if( GetLocalVarInt ( "Heartbeat" ) == 1 ) { if( asTimer == "HeartBeat_1" ) { PlaySoundAtEntity ( "heartbeat" , "sanity_heartbeat.snt" , "Player" , 0.0f , false ); AddTimer ( "Beat" , 0.05f , "HeartBeat" ); AddTimer ( "Beat" , 0.35f , "HeartBeat" ); AddDebugMessage ( "EXECUTE TIMER" , false ); AddTimer ( "HeartBeat_1" , 2 , "HeartBeat" ); } if( asTimer == "Beat" ) { FadePlayerAspectMulTo ( 1.25f , 20 ); FadeRadialBlurTo ( 0.05f , 20 ); FadePlayerFOVMulTo ( 0.8f , 30 ); AddTimer ( "Beat_end" , 0.05f , "HeartBeat" ); } if( asTimer == "Beat_end" ) { FadePlayerAspectMulTo ( 1.0f , 1 ); FadePlayerFOVMulTo ( 1.0f , 0.75f ); FadeRadialBlurTo ( 0.0f , 1 ); } } } //HEART BEAT END// //////////////////
Trying is the first step to success.