Join us in Outworldz at www.outworldz.com:9000 or follow us:

Search dozens of selected web sites for OpenSim and LSL script

New! Script Meta-Search will search thousands of scripts here and at other sites for LSL or Opensim scripts.
Loading

Want to add a script or a project? Upload it and a half million people will see it and your name here this year.

Home   Show All
Category: Contributor: Creator
Tour Guide Valentines_Day_tour_bird  

Valentines_Day_tour_bird

The main tour script. Put this in the seat of the tour guide.

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life

the Zip file

Download all files for Valentines_Day_tour_bird
Contents are in zip format, with .LSL (text) source code and LSLEdit (text + Solution) formats.
Get file # 1. ReadME.txt
Get file # 2. Valentines_Day_tour_bird_main.lsl
Get file # 3. Valentines_Day_tour_bird_poseball.lsl
Get file # 4. Valentines_Day_tour_bird_recorder.lsl
Get file # 5. Valentines_Day_tour_bird_rezzer.lsl
Get file # 6. Valentines_Day_tour_bird_ten prim.lsl
Get file # 7. Valentines_Day_tour_bird_wings.lsl

This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1 // Author: Ferd Frederix
2 integer _debug = 0;
3 integer REZ = 3454;
4 list Line = [];
5 list lCoordinate = [];
6 list lDescriptions = [];
7 list lSounds = [];
8 list lCommands = [];
9 list lLinks = [];
10
11
12 // notecard reading
13 integer iIndexLines;
14 string NOTECARD = "Route"; // the notecard for configuring
15
16 key kNoteCardLines; // the key of the notecard
17 key kGetIndexLines; // the key of the current line
18 integer i = 0;
19 integer count = 0;
20 integer timeout = 0;
21
22
23 float DAMPING = .2; // .3
24
25 vector TargetLocation;
26
27
28 float INTERVAL = .050; // seconds to move
29
30 string SpeakThis; // what is to be said
31 string PlayThis; // what is to be Played
32
33 string strip( string str)
34 {
35 string out;
36 integer i;
37
38 for ( ; i < llStringLength(str); i++)
39 {
40 out += llGetSubString(str,i,i);
41 out = llStringTrim(out, STRING_TRIM);
42 }
43 return out;
44
45 }
46
47 string Getline(list Input, integer line)
48 {
49 return strip(llList2String(Input, line));
50 }
51
52
53 default
54 {
55 on_rez(integer param)
56 {
58 }
59
60
62 {
65 kNoteCardLines = llGetNumberOfNotecardLines(NOTECARD);
66 kGetIndexLines = llGetNotecardLine(NOTECARD,0);
67
68 llSay(0, "Tour guide initialising. Please wait.");
69 }
70
71 // read notecard on bootup
72 dataserver(key queryid, string data)
73 {
74
75 vector TempLocation;
76 if(queryid == kNoteCardLines)
77 {
78 iIndexLines = (integer) data;
79 }
80
81 if(queryid == kGetIndexLines)
82 {
83 if(data != EOF)
84 {
85 queryid = llGetNotecardLine(NOTECARD, i);
86 list lLine = (llParseString2List(data, ["|"], []));
87
88 float X = (float) Getline(lLine,1);
89 if(X > 0)
90 {
91 float Y = (float)Getline(lLine,2);
92 float Z = (float)Getline(lLine,3);
93 string Msg = llList2String(lLine,4);
94 string sUUID = Getline(lLine,5);
95 string sCommand = Getline(lLine,6);
96 string sLink = Getline(lLine,7);
97
98 TempLocation.x = X;
99 TempLocation.y = Y;
100 TempLocation.z = Z;
101
102 if(_debug) llOwnerSay((string)TempLocation);
103
104 lCoordinate = lCoordinate + [TempLocation];
105 lDescriptions = lDescriptions + [Msg];
106 lSounds += [sUUID];
107 lCommands += [sCommand];
108 lLinks += [sLink];
109
110 integer locationLength = (llGetListLength(lCoordinate));
111 integer InitPerCent = (integer) llRound(((float) locationLength / (float) iIndexLines) * 100);
112 llSetText("Initialising... \n" + (string) InitPerCent + "%" , <1,1,1>, 1.0);
113 if(InitPerCent == 100)
114 {
115 state Paused;
116 }
117
118 }
119 else
120 {
121 state Paused;
122 }
123 i++;
124 }
125 kGetIndexLines = llGetNotecardLine(NOTECARD,i);
126
127 }
128 }
129
130
131 touch_start(integer total_number)
132 {
133 integer check = llGetListLength(lCoordinate);
134
135 if(_debug)
136 llOwnerSay("List is " + (string) check + " destinations long");
137
138 if(check >= iIndexLines)
139 {
140 state Paused;
141 }
142
143 if(check < iIndexLines)
144 {
145 llSay(0, "Hang on a sec, still initialising...");
146 }
147 }
148
150 {
151 llSetText("", <1,1,1>, 1.0);
152 TargetLocation = (vector) llList2String(lCoordinate, 0); // Look at 0th
153
154 if(_debug)
155 llOwnerSay("Looking at Target Location = " + (string) TargetLocation);
156
157 }
158 }
159
160
161 state Paused
162 {
164 {
165 llSay(0,"Ready");
166 }
167
168 link_message(integer sender,integer num,string msg, key id)
169 {
170 if(msg =="sit")
171 {
172 llWhisper(0,"Please stay seated. Waiting 10 seconds for a passenger");
173 llSleep(10.0);
174 state moving;
175 }
176 }
177
178 changed(integer change)
179 {
180 if(change & CHANGED_INVENTORY)
181 {
183 }
184 }
185
186
187
188
189 }
190
191 state moving
192 {
193
195 {
197
198
199 llLookAt(TargetLocation, 2, 1);
200
201 SpeakThis = llList2String(lDescriptions, count);
202 if(_debug) llOwnerSay("Speaking:" + SpeakThis);
203
204 if(llStringLength(SpeakThis) > 1)
205 llSay(0,SpeakThis);
206
207 PlayThis = llList2String(lSounds, count);
208 if(_debug) llOwnerSay("Playing:" + PlayThis);
209 if(llStringLength(PlayThis) > 1)
210 llPlaySound(PlayThis,1.0);
211
212 llSetTimerEvent(INTERVAL);
213 }
214
215 changed(integer change)
216 {
217 if(change & CHANGED_LINK)
218 {
220 if(av) //evaluated as true if not NULL_KEY or invalid
221 {
222 state moving;
223 }
224 else
225 {
226
227 state end;
228 }
229 }
230
231 }
232
233
234 on_rez(integer param)
235 {
237 }
238
239
240 timer()
241 {
242 timeout ++;
243
244 if(llVecMag(llGetPos() - TargetLocation) > .49999)
245 {
246 if(timeout > 30/INTERVAL) // Time Out to contingency
247 {
248 if(_debug) llOwnerSay("Timeout!");
249 state setposition;
250 }
251 llMoveToTarget((llVecNorm(TargetLocation - llGetPos()) * 1) + llGetPos(), DAMPING);
252 }
253
254 if(llVecMag(llGetPos() - TargetLocation) < .49999)
255 {
256 if(_debug) llOwnerSay("At location: " + (string) llGetPos());
257 state speaking;
258 }
259
260
261 }
262
264 {
266 timeout = 0;
267 i = 0;
268 }
269
270 }
271
272 state setposition //contingency
273 {
275 {
277
278 llSetTimerEvent(INTERVAL);
279 }
280
281 changed(integer change)
282 {
283 if(change & CHANGED_LINK)
284 {
286 //llWhisper(0,"Sit by " + (string) av);
287 if(av) //evaluated as true if not NULL_KEY or invalid
288 {
289 llWhisper(0,"Please stay seated");
290 }
291 else
292 {
293 state end;
294 }
295 }
296 if(change & CHANGED_INVENTORY)
297 {
298 // llResetScript();
299 }
300 }
301
302
303 timer()
304 {
305 if(llVecMag(llGetPos() - TargetLocation) > .49999)
306 {
307 llSetPos((llVecNorm(TargetLocation - llGetPos()) * 0.5) + llGetPos());
308 llLookAt(TargetLocation, 10, 10);
309 }
310
311 if(llVecMag(llGetPos() - TargetLocation) < .49999)
312 {
313 if(_debug)
314 llOwnerSay("At location: " + (string) llGetPos());
315 state speaking;
316 }
317
318 }
320 {
322 }
323
324 }
325
326 state speaking
327 {
328
330 {
331 count ++;
332
333 if(count > (iIndexLines - 1))
334 state end;
335
336 if(count <= (iIndexLines - 1))
337 {
338 TargetLocation = (vector) llList2String(lCoordinate, count);
339 if(_debug) llOwnerSay("New Target: " + (string) TargetLocation);
340 state moving;
341 }
342 }
343
344
346 {
348 }
349
350 }
351
352 state end
353 {
355 {
356 llMessageLinked(LINK_SET,0,"SIT","");
361 if(av) {//evaluated as true if not NULL_KEY or invalid
362 llWhisper(0, llKey2Name(av) +" thank you for taking the tour");
363 llStopAnimation("sit knees up2");
364 llUnSit(av);
365 }
366
367
368 llSay(0, "Tour stopped. It will disappear in one minute");
370
371 }
372
373 changed(integer change)
374 {
375 if(change & CHANGED_LINK)
376 {
378 //llWhisper(0,"Sit by " + (string) av);
379 if(av) //evaluated as true if not NULL_KEY or invalid
380 {
381 llWhisper(0,"Please stay seated");
382 state moving;
383 }
384
385 }
386 if(change & CHANGED_INVENTORY)
387 {
388 // llResetScript();
389 }
390
391 }
392 on_rez(integer param)
393 {
395 }
396
397
398 timer()
399 {
400 llDie();
401 }
402
403 }

Valentines_Day_tour_bird

You must also add a note card called "Ro...

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life


This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1 // sample notecard. Get your data from the Recorder prim
2 //[19:28] Tour recorder: 10|24.088040|48.962760|54.082320|
3 //[19:28] Tour recorder: 20|18.274350|53.096180|56.138620|
4 //[19:28] Tour recorder: 30|19.203230|77.231740|38.415370|
5 //[19:28] Tour recorder: 40|18.877440|77.295090|39.746290|
6 //[19:28] Tour recorder: 50|37.810330|78.505890|40.247760|
7 //[19:28] Tour recorder: 60|49.180880|156.787400|20.250000|There be dragons! (free dragons)
8 //[19:28] Tour recorder: Copy the above lines to the notecard in the tour guide and reset it

Valentines_Day_tour_bird

Poseball script. Put this into as many pose balls as you need.

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life


This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1 // Poseball script for both pose balls
2 // Author: Ferd Frederix
3
4
5 vector TARGET = <-.5,0,-0.1>; // 1/2 meter up, back a tenth.
6 vector ROT = <0, -90, 0>; //rotated 90 degrees
7
8 default
9 {
11 {
13 llSetCameraEyeOffset(<-3, 0, -5> ); // move camera back
14 llSetCameraAtOffset(<-2, 0, 1>);
15 rotation rot = llEuler2Rot(ROT * DEG_TO_RAD); // convert the degrees to radians
16 llSitTarget(TARGET, rot); // where they sit
17 }
18
19 changed(integer change)
20 {
21 if(change & CHANGED_LINK)
22 {
24 if(av) //evaluated as true if not NULL_KEY or invalid
25 {
27 }
28 else
29 {
30 llSetAlpha(1.0,ALL_SIDES); // make visible when they stand
31 }
32 }
33 }
34
36 {
38 {
39 llStopAnimation("sit");
40 llStartAnimation("sit"); // you can choose a different animation for sitting
42 llMessageLinked(LINK_SET,0,"sit",""); // tell the main script we are ready.
43 }
44 }
46 {
48 }
49 }

Valentines_Day_tour_bird

Recorder prim script. After you set out the waypoint prims, click this to get the notecard contents for the tour guide

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life


This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1 // Version 1.1 09-06-2012
2 // Changed lines 54 and 55 to this:
3 // integer aname = (integer) llList2String(msg,0);
4 // vector dest = (vector) llList2String(msg,1);
5
6
7 integer wanted = 0;
8 integer debugger = FALSE ;
9 list prims;
10
11
12 debug(string message)
13 {
14 if(debugger)
15 llOwnerSay(message);
16 }
17
18
19
20 string left(string src, string divider) {
21 integer index = llSubStringIndex( src, divider );
22 if(~index)
23 return llDeleteSubString( src, index , -1);
24 return src;
25 }
26
27 string right(string src, string divider) {
28 integer index = llSubStringIndex( src, divider );
29 if(~index)
30 return llDeleteSubString( src, 0, index + llStringLength(divider) - 1);
31 return src;
32 }
33
34
35
36 default
37 {
39 {
40 llSetText("Click after setting up all tour prims.", <1.0, 1.0, 1.0>, 2.0);
41 llListen(300,"","","");
42 }
43
45 {
46 llOwnerSay("Please wait");
47 prims = [];
48 wanted ++;
49 llRegionSay(300,"where");
50 }
51
52 listen(integer channel,string name, key id, string message)
53 {
54 debug(llGetObjectName() + " heard " + message);
55 if(wanted)
56 {
57 list msg = llParseString2List(message,["|"],[""]);
58 integer aname = (integer) llList2String(msg,0); // changed V 1.1
59 vector dest = (vector) llList2String(msg,1); // changed V 1.1
60 string text = llList2String(msg,2);
61 integer isthere = llListFindList(prims,[aname]);
62
63
64 if(isthere > -1)
65 {
66 llOwnerSay("Error, there are two prims named " + (string) aname + ". Please make sure each prim is uniquely numbered from - to N in sequence from the start prim to the finish prim. Gaps in the sequence are allowed.");
67 }
68
69 if(wanted)
70 {
71 prims += (integer) aname;
72 prims += dest;
73 prims += text;
74
75 }
76 llSetTimerEvent(10.0);
77 }
78 }
79
80 timer()
81 {
82 wanted = 0;
84 integer i = 0;
85
86 prims = llListSort(prims,3,1);
87
88
89 for (i = 0; i < llGetListLength(prims); i+=3)
90 {
91 integer primnum = llList2Integer(prims,i);
92 vector loc = llList2Vector(prims,i+1);
93 string text = llList2String(prims,i+2);
94 // It is correct to have a | at the beginning so the object name does not have to be removed
95 llOwnerSay("|" + (string) primnum + "|" + (string) loc.x + "|" + (string) loc.y + "|" + (string) loc.z + "|" + text);
96
97 }
98 llOwnerSay("Copy the above lines to the notecard in the tour guide and reset it");
99
100
101 }
102
104 {
106 }
107 }

Valentines_Day_tour_bird

Rezzer script. Put a copy of your finished tour into a prim with this script and then touch it.

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life


This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1 integer counter = 0;
2 string aname = "Name of your tour prim"; // fill this in, and add the tour bird to the objects inventory.
3
4 default
5 {
7 {
8 llListen(3454,"","","");
9 }
10
11
12 listen(integer channel, string name,key id, string msg)
13 {
14
15 llSleep(10);
16 llSensor(aname,"",PASSIVE|SCRIPTED,5,PI);
17 }
18
20 {
22 llOwnerSay((string) counter + " tours given");
23
24 llSleep(10);
25 llSensor(aname,"",PASSIVE|SCRIPTED,5,PI);
26 }
27
28 sensor(integer num)
29 {
30
32 }
33
34 no_sensor()
35 {
36 llOwnerSay("Rezzing " + aname);
37 counter++;
39 rotation rezrot = llEuler2Rot(<0.0,0.0,0.0>) * llGetRot();
40 llRezObject(aname, llGetPos() + <0.0,0.0,0.5>, <0.0,0.0,0.0>, rezrot, 0);
41 }
42 }

Valentines_Day_tour_bird

Optional flexi wing script. add a wing texture to a flat prim. This script will flap the wings. Note: does not work on sculpted wings.

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life


This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1 float on = 0.0;
2 float off = 1.0;
3 list params_on ;
4 list params_off ;
5 list params_up ;
6 list params_out ;
7
8 float ona = 0.0;
9 float offa = 1.0;
10
11 integer softness = 2;
12 float gravity = 2;
13 float friction =3.0;
14 float wind = 0.0;
15 float tension = 1.5;
16 vector force =<0,0,0>;
17 default
18 {
20 {
21 params_on = [ PRIM_FLEXIBLE, TRUE, softness, -2, friction, wind, tension, force];
22 params_off = [ PRIM_FLEXIBLE, TRUE, softness, -gravity, friction, wind, tension, force];
23 params_up = [ PRIM_FLEXIBLE, TRUE, softness, 3, friction, wind, tension, force];
24 params_out = [ PRIM_FLEXIBLE, TRUE, softness, 0, friction, wind, tension, force];
25
26 llSetPrimitiveParams(params_out);
28 }
29
30
31 link_message(integer sender_num, integer num, string msg , key id)
32 {
33 if(num == 0 && msg == "FLY")
34 {
35 llSetPrimitiveParams(params_off);
36 }
37 else if(num == 0 && msg == "SIT")
38 {
39 llSetPrimitiveParams(params_on);
40 }
41 else if(num == 0 && msg == "FLAP")
42 {
43 llSetPrimitiveParams(params_up);
44 llSleep(1.0);
45 llSetPrimitiveParams(params_on);
46 }
47 }
48
49 on_rez(integer param)
50 {
52 }
53 }

Valentines_Day_tour_bird

Waypoint script. This is a cube that you name '10'. Rez them to set up a route.

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life


This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1
2 integer wanted = 0;
3 integer debugger = 1;
4
5 list prims;
6
7
8 debug(string message)
9 {
10 if(debugger)
11 llOwnerSay(message);
12 }
13
14 default
15 {
17 {
18 llListen(300,"","","");
19 wanted++;
20 llRegionSay(300,"number");
21 llSetTimerEvent(5.0); // 5 seconds to hear from all prims
22 llOwnerSay("Setting coordinates");
23 }
24
25 listen(integer channel,string name, key id, string message)
26 {
27 if(message == "die")
28 llDie();
29
30 else if(message =="where")
31 llRegionSay(300,llGetObjectName() + "|" + (string) llGetPos() + "|" + llGetObjectDesc());
32
33 else if(message =="number")
35
36 else if(wanted)
37 {
38 prims += (integer) message; // add to memory list
39 }
40
41
42 }
43
44 timer()
45 {
46 wanted = 0;
47 prims = llListSort(prims,1,0); // sort descending
48 integer num = (integer) llList2Integer(prims,0); // get highest number
49 llSetObjectName((string) (num + 10)); // leave room for more prims to be added
50 llOwnerSay("Name set to " + llGetObjectName() + ". You can add text to be spoken when the tour reaches this location by adding some text to the description of this object.");
51
53 }
54
56 {
58 }
59 }

Valentines_Day_tour_bird

The scripts for this tour were made by Ferd Frederix he is a great scripter who believes in opensource wich is great for us poor sobs, You can download the scripts
here. There is a post about how to make a pretty tour swan ride at this spot.

Category: Tour Guide
By : Ferd Frederix
Created: 2011-02-04 Edited: 2014-03-10
Worlds: Second Life


This script by Ferd Frederix may be used in any manner, modified, and republished.  Unless specified otherwise, my scripts are always free and open source.  Objects made with these scripts may be sold with no restrictions.  All I ask is that you point others to this location should they ask you about it and to not sell this script, unless it is for $0 L. Please help improve my work by reporting bugs and improvements.

1
2 There are a few scripts:
3
4 file # 1. Valentines_Day_tour_bird_main.lsl
5
6 Is the main script, you put this in a prim with face 0 facing forward, this should be the root prim for your build.
7 You make a prim root by selecting it last before you link your build.
8 You also make a notecard and put it in the contents of the root, the notecard should be named Route
9
10 file # 3. Valentines_Day_tour_bird_poseball.lsl
11
12 The poseball script, you make as many poseballs you wish and put this script in each together with a pose named sit
13 Edit your poseballs so they look nice on your build before adding the main script ( or set the script to not running) becouse the build will start to move after 10 seconds witch makes the editing of your poseballs impossible to do.
14 !!!!!
15 IMPORTANT! when you tried your seats with the main script running and stand up again your build will poof after a minute, so before doing this i suggest you take a copy to inventory, Do this whenever you made changes minor or major!
16 !!!!!
17
18 file # 4. Valentines_Day_tour_bird_recorder.lsl
19
20 This script you put in a prim, when you touch this prim it will tell the waypoints ( we come to those later )
21
22 The cube gives you the waypoints in chat, and you need to copy those and paste them into the notecard we made earlier in the root prim called Route.
23
24 Example of how your note should look:
25
26 [19:28] Tour recorder: |10|24.088040|48.962760|54.082320|
27 [19:28] Tour recorder: |20|18.274350|53.096180|56.138620|
28 [19:28] Tour recorder: |30|19.203230|77.231740|38.415370|
29 [19:28] Tour recorder: |40|18.877440|77.295090|39.746290|
30 [19:28] Tour recorder: |50|37.810330|78.505890|40.247760|
31
32
33 file # 5. Valentines_Day_tour_bird_rezzer.lsl
34
35 This is a rezzer for your build,
36 You make a prim and put your build in and this script.
37 in line 13 of the script you change the name to your builds name:
38 string aname = "tourboat"; ( mine is called tourboat )
39 i suggest you rez a build once and see there it goes. then rotate the prim with the rez script in it so the build is rezzed with the right rotation.
40 Trail and error here.
41 in line 51 you can set the position of the build when it rezzes.
42 llRezObject(aname, llGetPos() + <0.0,0.0,0.0>, <0.0,0.0,0.0>, rezrot, 0);
43
44 Play with the numbers in the first <0.0,0.0,0.0> you can do a - before a number too to make it go the other way.
45 Trial and error, just play and rez a few times.
46
47 file # 6. Valentines_Day_tour_bird_wings.lsl
48
49 Is a script to make prims flexi ( the wings) , i did not use that.
50
51 file # 7. Valentines_Day_tour_bird_ten prim.lsl
52
53 This is an interesting one.
54 Put this script in a prim and name the prim 10
55 you will use this prim to mark your route.
56 Rez the prims along the way, when you make a sharp turn rez a few there to make the ride look better.
57 These prims will rename them selves when you rez them the first will stay 10 the second will name itself 20 etc.
58 A handy feature is you can make your build say stuff in chat when it reaches a certain waypoint.
59 To do this you write your text in the description of the prim on that waypoint.
60 By default the description has the text ( no description) remove that from your number 10 prim before you start rezzing your waypoints or all points will chat ( no description)
61 Handy tip: also set your prim named 10 phantom, this way you can test your tour and leave the prims in the route and edit them a bit and re record.
62
63 Ferd also build in a handy feature to make the waypoint prims go away, shout " /300 die" without the quotes of course... i think shout reaches 96 meter so you might have to repeat on a few places.
64
65 Good luck making your tour! i had a lot of fun doing it.
66
67 Greetings,
68 burt Artis

Back to the Best Free Tools in Second Life and OpenSim.