User:Dantia Gothly
Dans open source scripts
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials | [1] |
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> //Copyright (C) 2011 Dantia Gothly //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>
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! { llTriggerSound((string)llList2Key(Sounds,Q),0.0); } } 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>