|
|
Line 19: |
Line 19: |
| Here is a nonphysical train script | | Here is a nonphysical train script |
| <lsl> | | <lsl> |
| //Copyright (C) 2011 Dantia Gothly
| | http://www.youtube.com/watch?v=UiInBOVHpO8&feature=relmfu |
| //This program is free software; you can redistribute it and/or
| |
| //modify it under the terms of the GNU General Public License
| |
| //as published by the Free Software Foundation; either version 2
| |
| //of the License, or (at your option) any later version.
| |
| //This program is distributed in the hope that it will be useful,
| |
| //but WITHOUT ANY WARRANTY; without even the implied warranty of
| |
| //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
| |
| //GNU General Public License for more details.
| |
| ////////////////////////////////////////////////////////////////////////////////////////
| |
| // (Global Settings)
| |
| | |
| // Door movment:
| |
| float T_S2 = 2.0;//timer stopped before opening door.
| |
| float Train_leave = 0.8;//how long the train sits after closing the doors and takes off
| |
| float Door_open = 10.0;//How long the doors are Open.
| |
| integer door1 = 2;//find the link number for the door you want to move.
| |
| integer door2 = 3;
| |
| float Door_Slid_dist = 3.3;//sets the slide forward distance of the door on the X axis
| |
| | |
| //Math:
| |
| integer num = 1;//do math 1+1=__
| |
| integer num2 = 1;
| |
| | |
| //Predefined integers etc:
| |
| integer i;
| |
| integer t;
| |
| | |
| //Train turn timming:
| |
| float M_1 = 255;// first turn
| |
| float M_2 = 735;//second turn
| |
| float M_3 = 1215;//third turn
| |
| float M_4 = 1695;//forth turn
| |
| | |
| //Station stop timing:
| |
| float W_S = 1920;//start train at west station.
| |
| float E_S = 985;//stop at east station.
| |
| | |
| //Speed:(note:If this number changes the turn timming and stops must be changed)
| |
| float speed = .20;// Speed controls the PRIM_POSITION
| |
| | |
| //Timers:
| |
| float T_S1 = 0.001;//Timer controls the default timer
| |
| float Horn_timing = 1.0;//horn sound then door opens/closes.
| |
| float door_Open_timing = 1.7;
| |
| float door_Close_timing = 2.6;
| |
| | |
| //Sounds:
| |
| string Eng = "UUID";//train_motor
| |
| string movment = "UUID";//train-going
| |
| string Stops = "UUID";//train-breaks
| |
| string Horn = "UUID";//train-stand-clear
| |
| string DoorOpen = "UUID";//train-door-open
| |
| string DoorClose = "UUID";//train-door-close
| |
| | |
| | |
| //Volume:
| |
| float Vol3 = 1.0;// Volume high.
| |
| float Vol2 = 0.5;// Volume mid.
| |
| float Vol1 = 0.2;// Volume low.
| |
| float Vol0 = 0.0;// Volume mute.
| |
| | |
| // default location = <67.797,124.500,33.107>
| |
| ////////////////////////////////////////////////////////////////////////////////////////
| |
| //User defined functions are wonderful
| |
| SetLinkPosLocal2Root(integer linknum,vector offset)
| |
| {
| |
| llSetLinkPrimitiveParamsFast(linknum, [PRIM_POSITION, ((llList2Vector(
| |
| llGetLinkPrimitiveParams(linknum, [PRIM_POSITION]),0) - llGetPos())/llGetRot())+offset]);
| |
| }
| |
| /////////////////////////////////////////////////////////////////////////////////////////
| |
| default
| |
| {
| |
| ////////////////////////////////////////////////////////////////////////////////////////
| |
| state_entry()
| |
| {
| |
| llSetTimerEvent(T_S1);
| |
| llLoopSound(Eng,Vol3);
| |
| llLoopSound(movment,Vol3);
| |
| }
| |
| /////////////////////////////////////////////////////////////////////////////////////////
| |
| timer()
| |
| {
| |
| integer t;
| |
| rotation rot=llGetRot();
| |
|
| |
| num += num2;
| |
| llSetLinkPrimitiveParamsFast(LINK_THIS,
| |
| [PRIM_POSITION, llGetPos()+(< speed,0.0,0.0>*llGetRot())]);
| |
|
| |
| if(num == M_1)
| |
| {
| |
| llSay(0,"in check M_2");
| |
| for(t=0;t<=90;t++)
| |
| {
| |
| llSetLinkPrimitiveParamsFast(LINK_THIS,
| |
| [PRIM_POSITION, llGetPos()+(< speed,0.0,0.0>*llGetRot()),
| |
| PRIM_ROTATION,(rot/llEuler2Rot(<0,0,t>*DEG_TO_RAD))]);
| |
| llSleep(0.04);
| |
| }
| |
| }
| |
| else if (num == M_2)
| |
| {
| |
| llSay(0,"in check M_3");
| |
| for(t=0;t<=90;t++)
| |
| {
| |
| llSetLinkPrimitiveParamsFast(LINK_THIS,
| |
| [PRIM_POSITION, llGetPos()+(< speed,0.0,0.0>*llGetRot()),
| |
| PRIM_ROTATION,(rot/llEuler2Rot(<0,0,t>*DEG_TO_RAD))]);
| |
| llSleep(0.04);
| |
| }
| |
| }
| |
| else if (num == M_3)
| |
| {
| |
| llSay(0,"in check M_4");
| |
| for(t=0;t<=90;t++)
| |
| {
| |
| llSetLinkPrimitiveParamsFast(LINK_THIS,
| |
| [PRIM_POSITION, llGetPos()+(< speed,0.0,0.0>*llGetRot()),
| |
| PRIM_ROTATION,(rot/llEuler2Rot(<0,0,t>*DEG_TO_RAD))]);
| |
| llSleep(0.04);
| |
| }
| |
| }
| |
| else if (num == M_4)
| |
| {
| |
| llSay(0,"in check M_1");
| |
| for(t=0;t<=90;t++)
| |
| {
| |
| llSetLinkPrimitiveParamsFast(LINK_THIS,
| |
| [PRIM_POSITION, llGetPos()+(< speed,0.0,0.0>*llGetRot()),
| |
| PRIM_ROTATION,(rot/llEuler2Rot(<0,0,t>*DEG_TO_RAD))]);
| |
| llSleep(0.04);
| |
| }
| |
| }
| |
| else if(num == W_S)
| |
| {
| |
| num = 0;
| |
| llTriggerSound(Stops,Vol3);
| |
| llLoopSound(movment,Vol0);
| |
| llLoopSound(Eng,Vol1);
| |
| llSetTimerEvent(0.0);
| |
| llSay(0,"At West station");
| |
| state two;
| |
| }
| |
| else if(num == E_S)
| |
| {
| |
| llTriggerSound(Stops,Vol3);
| |
| llLoopSound(movment,Vol0);
| |
| llLoopSound(Eng,Vol1);
| |
| llSetTimerEvent(0.0);
| |
| llSay(0,"At East station");
| |
| state two;
| |
| }
| |
| llSetText((string)num,<1,1,1>,1.0);
| |
| }
| |
| }
| |
| ///////////////////////////////////////////////////////////////////////////////////////
| |
| state two
| |
| {
| |
| state_entry()
| |
| {
| |
| llSetTimerEvent(T_S2);
| |
| }
| |
| timer()
| |
| {
| |
| llTriggerSound(Horn,Vol3);
| |
| llSleep(Horn_timing);
| |
| llTriggerSound(DoorOpen,Vol3);
| |
| llSleep(door_Open_timing);
| |
| SetLinkPosLocal2Root(door1,<Door_Slid_dist,0.0,0.0>);
| |
| SetLinkPosLocal2Root(door2,<Door_Slid_dist,0.0,0.0>);
| |
| llSleep(Door_open);
| |
| llTriggerSound(Horn,Vol3);
| |
| llSleep(Horn_timing);
| |
| llTriggerSound(DoorClose,Vol3);
| |
| llSleep(door_Close_timing);
| |
| SetLinkPosLocal2Root(door1,<-Door_Slid_dist,0.0,0.0>);
| |
| SetLinkPosLocal2Root(door2,<-Door_Slid_dist,0.0,0.0>);
| |
| llSleep(Train_leave);
| |
| | |
| state default;
| |
| }
| |
| }
| |
| </lsl> | | </lsl> |
|
| |
|
Dans open source scripts
Hello there! I'm Dantia Gothly
Scripter,Sculpter,Texture artist.
creater of TopHat Viewer link->(http://terminalproxy.com/)
I believe you can do just about everything in 1 script
but that also depends on what it is your doing. For the most part it can be.
quote:"dose it work? Yes it do."
..........................................................................................................................
Here is a nonphysical train script
<lsl>
http://www.youtube.com/watch?v=UiInBOVHpO8&feature=relmfu
</lsl>
This is a good way to do Random llRezObject.
<lsl>
integer i;
DGRandomRez(float number)
{
for(i=(integer)llFrand(number);i>0;i--)
{
llRezObject("Object", llGetPos() + <0.0,0.0,1.0>, <llFrand(3.0),llFrand(3.0),llFrand(3.0)>, <0.0,0.0,llFrand(360),1.0>, 0);
}
}
default
{
state_entry()
{
DGRandomRez(5);//This will rez an object at random 1-5.
}
}
</lsl>
Sound looper for when your walking.
<lsl>
float Timer = 1;
integer Sound = 1;//what sound to play.
float Vol = 0.8;
integer GLL;
list Sounds = ["","","","",""];//List of sounds.
default
{
state_entry()
{
GLL = llGetListLength(Sounds);
llSetTimerEvent(Timer);
integer Q;
for(Q=0;Q<GLL;Q++)//Preload sounds!
{
llPreloadSound((string)llList2Key(Sounds,Q));
}
}
timer()
{
if((llGetAgentInfo(llGetOwner()) & AGENT_WALKING))
{
llLoopSound((string)llList2Key(Sounds,Sound),Vol);//single sound;
//or you can use this for random sounds.
llLoopSound((string)llList2Key(Sounds,(integer)llFrand(GLL)),Vol);//Random sound.
}
else
{
llStopSound();
}
}
}
</lsl>