aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/README.md
diff options
context:
space:
mode:
authorDave Seikel2018-05-20 23:17:24 +1000
committerDave Seikel2018-05-20 23:17:24 +1000
commit9dd74045373c39d8a35a59f3c2801b0348a44a9b (patch)
treeb3cdc4ba800ffa44b98291ce12a0eb1c9ad809e4 /README.md
parentInitial commit (diff)
downloadMLP-lite-9dd74045373c39d8a35a59f3c2801b0348a44a9b.zip
MLP-lite-9dd74045373c39d8a35a59f3c2801b0348a44a9b.tar.gz
MLP-lite-9dd74045373c39d8a35a59f3c2801b0348a44a9b.tar.bz2
MLP-lite-9dd74045373c39d8a35a59f3c2801b0348a44a9b.tar.xz
Initial commit.
This is the current alpha version, it was time to put it somewhere.
Diffstat (limited to 'README.md')
-rw-r--r--README.md532
1 files changed, 532 insertions, 0 deletions
diff --git a/README.md b/README.md
index 992f454..8c9ab96 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,534 @@
1# MLP-lite 1# MLP-lite
2A lighter version of the MLP scripts, built for OpenSim. 2A lighter version of the MLP scripts, built for OpenSim.
3
4MLP lite v3.0 for OpenSim is almost a complete rewrite by onefang
5rejected, of the venerable MLP scripts. It uses OpenSim specific
6functions, so wont work in Second Life. It might not work on some
7OpenSim grids or sims, due to the use of OpenSim specific "high threat
8level" functions. Test it first before putting it in anything important.
9
10The main justification for this rewrite is that I have about a dozen
11OpenSim sims, some with dozens of copies of MLP running. So this
12variation uses some OpenSim specific LSL functions, tries to use less
13resources, be quicker, and automatically shuts down when no one is
14around. Some functions where removed, hence the "lite" in the name, most
15of these seem to not be used, or useful, or just don't get used in my
16sims. Note that I've not extensively tested any of this stuff yet. It's
17not a huge improvement, but when you have dozens of the things, every
18little bit helps. And then I added more features. lol
19
20Note that some of the OpenSim functions used are what OpenSim classes as
21"high threat level". More about that below. This means that these
22scripts wont work without some tweaking of your grid / sims
23configuration. This has only been tested in my hacked up version of
24OpenSim 0.8.2, which removes a lot of the insane threat levels and script
25delays, so anything I say about speed improvements might not apply. I
26did at least remove script delays in both LL and OS functions. If
27nothing works for you, this is likely why, and you should go back to the
28old scripts. Test it first before upgrading anything that's not full
29perm.
30
31Based on the original MLP - MULTI-LOVE-POSE V1.2 - Copyright (c) 2006, by
32Miffy Fluffy (BSD License). This code has bounced around Second Life and
33OpenSim for over a decade, with various people working on it. I can't
34compile a complete list, as I have no idea of the complete history of the
35versions I have received. The names I do know coz they where in the
36source code (in no particular order) - Miffy Fluffy, Learjeff Innis, Jez
37Ember, Liz Silverstein, Zonax Delorean, Purrcat Miranda, and Kokoro
38Fasching. Apologies to anyone who's code is in this variation and I
39haven't mentioned you. It's likely that some or all of the code written
40by these people is no longer in this variation. Thanks to you all.
41
42This variation is still BSD licensed. The text of the BSD license wasn't
43included in any of the versions I have, but it's a simple and standard
44license, you should easily find copies all over the Internet, or a
45simple search. The versions I have seen don't specify which variation of
46the BSD license, so I wont either. GitHub insists on a license file, so
47I went with 3 clause BSD.
48
49The next two sections of this document is mostly copied from the .readme
50file I got with the latest MLP versions I had laying around.
51
52================================================
53
54FEATURES:
55- Put all your poseball animations into one object (110 pairs or even more
56should be no problem).
57- Create submenus for each category of poses, for instance: "Solo,
58Boy-Girl, Girl-Girl, Dance, 3some, 4some"
59- Shows up to nine poseballs depending on the submenu you select
60- Positions can be adjusted and saved into memory or notecard.
61- Portable, can be worn and used everywhere
62- Option to adjust height offset (Z) of all poses at once (for different
63persons/locations).
64- 15 poseball colours:
65 PINK, BLUE, PINK2, BLUE2, GREEN, MAGENTA, RED, ORANGE, WHITE, BLACK,
66 YELLOW, CYAN, RED2, TEAL, GREEN2
67
68OPERATION:
69- Click the MLP object to switch it on.
70- When everything has loaded the main menu will appear.
71- Select a submenu containing poses, and select a pose. Pose balls will
72appear.
73- Sit on your pose ball (Right-click - LOVE).
74- To remove the balls, select 'EXTRAS>>' then 'STOP', or just walk away,
75it will shut down automatically when no one is around.
76
77TO ADJUST POSITIONS:
78You can adjust the poses to fit your own avatar and those you share MLP
79with.
80- Select a pose you want to adjust and sit on the balls.
81- Select 'EXTRAS>> ' then 'ADJUST'. This changes the balls into
82translucent beams.
83- Right-click a beam, select Edit and adjust the position (Shift-click to
84select more than one).
85- Position the balls anywhere within the sim.
86- 'EXTRAS>>', 'OPTIONS>>', then 'Save Pos' stores the positions into a
87new notecard.
88
89TO MAKE A BACKUP:
90Saved positions are stored in memory but are not permanent. They are
91lost on script error (See "Script run-time error / Stack-Heap Collision"
92below). They are also lost on shutdown/startup, or "Pos Reset". To
93back the positions up more permanently you have to copy them into a
94new .POSITIONS notecard:
95- Select 'EXTRAS>>', 'OPTIONS>>', then 'Save Pos' .
96All original .POSITIONS* cards are copied to .backup.POSITIONS* cards.
97Prop positions are saved to .PROPS, so the same applies.
98
99Note: After changing any *.POSITIONS* files, use the 'Pos Reset' command
100to verify your changes, if desired. This also helps to avoid losing
101changes due to Stack-Heap collisions.
102
103TO ADJUST HEIGHT OFFSET (Z):
104Select 'EXTRAS>>', 'OPTIONS>>', then'Height>>' and click the 'Z'-buttons,
105this will adjust the height for all poses. Note: the offset height is
106stored in the objects Description, so any descriptions will be replaced.
107
108TO ADD POSES:
109Copy all animations into the MLP object (if you want to use existing pose
110balls, open them to rip their animations). Note: you can use any object
111as MLP, just copy the MLP contents in the object of your choice. Open the
112.MENUITEMS and add the animations:
113
114POSE name | animation1 | animation2 ...
115
116The changes will become active after MLP is (re)started. Use the 'Menu
117Reset' command after changing
118*.MENUITEMS* files.
119
120To give an expression to an animation, add one of the following suffixes
121to the anim name in the POSE line. (Just add it to the POSE config line,
122don't change the anim name.)
123
124 Suffix / expression
125 * open mouth
126 ::1 open mouth
127 ::2 surprise
128 ::3 tongue out
129 ::4 smile
130 ::5 toothsmile
131 ::6 wink
132 ::7 cry
133 ::8 kiss
134 ::9 laugh
135 ::10 disdain
136 ::11 repulsed
137 ::12 anger
138 ::13 bored
139 ::14 sad
140 ::15 embarrassed
141 ::16 frown
142 ::17 shrug
143 ::18 afraid
144 ::19 worry
145 ::20 sleeping (combination of disdain and smile, closest I could find)
146
147To make the expression happen periodically rather than constantly, add
148another extension and the period (in seconds). This is mostly needed for
149those expressions that only last a short time. For example, to use MyAnim
150with open mouth every 5.5 seconds:
151
152 POSE Mypose | MyAnim::1::5.5
153
154TO ADD SOUNDS (buttons to play sounds), in a menu (just like a POSE
155button), add a line like this:
156
157 SOUND She moans | female-moan
158
159where "She moans" will be the button label, and "female-moan" is the
160sound to play, which must be in object inventory. For sounds in menus
161with poses (rather than in a menu specifically for sounds) I recommend
162you begin the pose name with "☊" (which looks a bit like headphones, the
163best I could find for the purpose). This serves as a clue to the user
164that the button plays a sound.
165
166TO CREATE ANIMATION SETS (menus):
167Create .MENUITEMS.xxx and .POSITIONS.xxx files (where xxx is whatever you
168want) and put the corresponding menu configs and poses in them. This
169way you can deliver a bed with folders of add-on menus so the customer
170can choose what types of anims they want to add to the menu. Note that
171you get at most 12 top menu choices. The scripts read the .POSITIONS
172files in alphabetical order (and
173.POSITIONS must be first).
174
175This also allows you to sell furniture with "enhancement packs", which
176are simply collections of .MENUITEMS.xxx, .POSITIONS.xxx, and the
177associated animations for the customer to drop into the furniture.
178Customers can easily select furniture appearance and pose bundles
179independently!
180
181SWAPPING POSES:
182Each menu can have a swap command:
183
184 SWAP | 21
185
186Would be the default. Note that this means before you hit the SWAP
187button, the balls will be in the same order as listed in the MENU and
188POSE commands, after they would be reversed. SWAP always assumes
189the unswapped condition is the order things are listed. So 21 in the
190above command means swap the first two balls.
191
192The default for more than two balls is to just fill out both strings with
193the remaining integers:
194
195 SWAP | 213456789
196
197This might be used to swap the last two balls only:
198
199 SWAP | 132
200
201Any number of swap patterns can be used:
202
203 SWAP | 132 | 321 | 312
204
205You can also use a different name for the button:
206
207 SWAP switch men | 213
208
209Also, the original one should be supported, that uses the default:
210
211 SWAP
212
213ACCESS TO THE MAIN MENU:
214The owner is the only one who can shutdown, in all cases. Anyone
215can start it.
216- if 'MenuUser' is set to OWNER: the owner is the only one who can access
217the menus
218- if 'MenuUser' is set to ALL: anyone can access the MAIN MENU
219- if 'MenuUser' is set to GROUP: members of the same Group as the MLP
220object can access the
221MAIN MENU (the MLP Group can set by right-clicking MLP and selecting
222Edit, More >> General tab - Group: Set) Note: even if "MenuUser" is set
223to ALL or GROUP, individual SUBMENUS can still be blocked (you can
224define access for each submenu in .MENUITEMS, see examples in
225.MENUITEMS).
226
227PORTABLE USE:
228Attach the object to the HUD, you can use it's default shape and colour
229for clickable bar on one of the edges of your screen (to move HUD
230position: Right-click - Edit), you can edit
231colour/transparency/size/position. Adjust the height offset (Z). Note:
232the balls will appear relative to the initial MLP position (to reset
233where the balls appear, press STOP to remove the balls, and reselect a
234submenu to rez them again).
235
236================================================
237
238FAQ for END USERS:
239
240- Will my animations be lost if I lose a poseball?
241
242No. The animations are not placed the balls, they remain in the main MLP
243object. Don't worry about the poseballs, they are copies of the one in
244the MLP object. A balls will commit suicide if left behind somewhere
245(the MLP object needs to be within the same sim).
246
247- Sometimes notecards or scripts won't open for editing, why?
248
249If the MLP object contains many things, access to it's contents can be
250slow, just keep waiting until it's all loaded. Can take over a minute
251sometimes.
252
253- "Script run-time error / Stack-Heap Collision"?
254
255Right-click/Edit the object, and use SL menu: "Tools -> Reset Scripts in
256Selection" to reset. Any saved positions that were not backed up in
257.POSITIONS files are lost, so if your furniture has lots of poses (over
25850) and you save positions, be sure to back up regularly. Use OPTIONS ->
259Pos Reset after changing .POSITIONS* files.
260
261FAQ for those who edit *.MENUITEMS files:
262
263- "Script run-time error / Stack-Heap Collision"?
264
265After a restart, this is a clue that there are too many items in
266*.MENUITEMS* or *.POSITIONS* files. Trim the menu.
267
268- My new menu appears on the main page, rather than as a submenu where I
269configured it. Why?
270
271Most likely, you named it differently in the MENU line versus the TOMENU
272line. When MPL sees a MENU line, it looks for the same name in a TOMENU
273line.
274
275================================================
276
277UPGRADE GUIDE:
278
279For the sake of these instructions, let's say you want to upgrade the
280scripts in an object called "My Old Bed", this is what you would do.
281These instructions assume that everything has copy permission.
282
283First rez My Old Bed in world somewhere. If it is already in world, take
284a copy, in case things don't work out and you want to revert to the old
285scripts. You could also move the scripts and things you are about to
286replace to a new folder, so you can put things back the way they where
287before. Or just ignore any backups and cross your fingers.
288
289Remove the old MLP scripts, they will be named ~memory, ~menu, ~menucfg,
290~pos, ~pose, ~poser, ~poser 1, ~poser 2, ~poser 3, ~poser 4, ~poser 5,
291~run, and you might also have optional scripts ~props, ~sequencer, and
292~timer. Also remove the ~ball object. There may be another script, I
293have never seen one, that deals with PRIMTOUCH, my guess is it might be
294called ~primtouch. Leave it alone, this new script should be compatible
295with it. Since I have never seen that script, nor needed it, I dunno
296for sure.
297
298Drag the "~MLP lite for OpenSim" script into My Old Bed, and the new
299~ball object. You should see "My Old Bed: OFF (touch to switch on)" in
300chat.
301
302My Old Bed might have some props in it, they will be objects other than
303~ball. In typical examples I have seen there is a pillow, so lets use
304that as an example. Drag pillow out of My Old Bed and into your
305inventory, into the same folder you are backing up everything else.
306Remove pillow from My Old Bed. Drag pillow onto the ground, edit it, and
307remove the ~prop script. Replace that script with the new ~ball script.
308Take pillow, then drag it into My Old Bed. Add the "~MLP lite props"
309script to My Old Bed.
310
311You may want to update your .MENUITEMS, or just leave them as is. Look
312at the examples for how it is now recommended to have them setup. If you
313do this take care of the OPTIONS menu, which is now called OPTIONS>> in
314this new .MENUITEMS.
315
316If you still want to edit the poses / props, or do any of the other
317tweaking, then you might want to add the "~MLP lite tools" script to My
318Old Bed. Leave it out, or remove it, once My Old Bed is fully set up.
319
320================================================
321
322DIFFERENCES FOR THE MLP lite v3.0 for OpenSim VARIATION:
323
324As mentioned above, this variation drops a few rarely used features, and
325tries to make things a bit better for OpenSim users. Note that some of
326the dropped features may be added back again in later versions, I dunno
327yet.
328
329- Up to nine avatars can be animated at once.
330
331- Menus no longer lock out other users when someone else is using it.
332
333- The SWAP command has been changed to something like the XPOSE SWAP
334command. It's documented above. The original MLP SWAP command works as
335it used to.
336
337- Changing menus no longer reverts any SWAP commands. Though if the swap
338command is different between menus, it wont let you swap again in the
339different menu.
340
341- Anyone can start up an MLP lite object, and they automatically shutdown
342if no one is around for a couple of minutes. This makes it easy to setup
343public areas with publicly usable objects that don't soak up resources
344when people forget to turn them off after using them. The startup also
345prints the startup time.
346
347- After turning on an MLP object by touching it while it is turned off,
348the MAIN MENU is shown automatically to the person that started it. I
349assume that the person that turned it on is just waiting for it to finish
350starting up so they can actually use it. Actually the menu shows after
351loading menus, but before loading positions, but you can start to use it
352straight away.
353
354- The CHECK command no longer reloads things. It also checks for
355permissions and animations that are not used, as well as a few other
356things. It's in the ~MLP lite tools script.
357
358- Less scripts. There are only two scripts now, "~MLP lite for OpenSim"
359is the main script, and ~ball in the ~ball and prop objects. OpenSim
360doesn't seem to have any memory limits per script (usually the main
361reason to split scripts like that), and it simplifies the code a lot if
362there is just one main script. The ~ball script is much simpler. Props
363use the ~ball script instead of ~prop. There are two optional scripts,
364"~MLP lite props" is used in the main MLP object if you have any props,
365and "~MLP lite tools" is used by creators and editors if needed.
366
367- It may use a bit more CPU time when expressions are being used. You
368may not notice. A lag tester was added to help with this, expressions
369may slow down when it gets laggy.
370
371- Since we use some OpenSim functions that are considered high threat,
372you might need to tweak your OpenSim settings. See below for details.
373
374- The default .MENUITEMS note card now includes an EXTRAS menu, for all
375those functions that usually go at the bottom of each menu, so you can
376fit more poses on each menu. I suggest that "TOMENU EXTRAS>>" be added
377to the end of menus, along with "BACK" and maybe "SWAP"
378
379- Various creator and editing functions have been moved to the TOOLS>>
380menu, and the "~MLP lite tools" script. You can leave this out if
381the MLP object is fully set up.
382
383- You no longer need to have the first two lines of .MENUITEMS as the
384"stand" and "default" POSE commands. It wont hurt to include them.
385
386- MENUORDER is no longer supported, menu buttons appear in the same order
387they are on the .MENUITEMS* cards, coz that's the only sane way of doing
388it.
389
390- The MAIN MENU, first menu in .MENUITEMS, no longer needs a bunch of
391"TOMENU -" commands.
392
393- While the DUMP command still prints the positions in chat, SAVE now
394saves that to a fresh .POSITIONS notecard, so you no longer have
395to cut and paste to your old .POSITIONS cards. The old cards are
396backed up, and the same applies to .PROPS cards that store props.
397
398- MLP lite remembers all editing of the pose balls, not just those done
399while in ADJUST mode, ADJUST now just makes the pose balls easier to
400edit. This makes editing of lots of poses a lot quicker, and means you
401can make quick fixes on the fly, and save them at the end if you want to.
402
403- The BALLUSERS, OFF, REDO, INVISIBLE, STAND, SHOW, HIDE, and AGAIN
404commands no longer exist. They are rarely used, or just not needed.
405
406- The code that slices up long menus into shorter ones with "BACK" and
407"MORE", to fit in the Second Life 12 button menu limit has all been
408removed. I was gonna rewrite that, but for various reasons decided to
409just drop it completely. People can chop up their own submenus if they
410need this, and that's exactly what I have seen other furniture makers do.
411As a bonus, there are no hard coded English menu or button names left in
412the code, so you can easily use MLP lite for other languages. On the
413other hand, all the messages are in English. CHECK will let you know if
414your menus are too long.
415
416- Old ~prop scripts are not supported, use the new ~ball script instead,
417which means a bit of surgery needed on old props.
418
419- Sequences are not currently supported.
420
421- The REORIENT command, and various link messages, are not currently
422supported. Some or all of these may come back. Some of the existing
423link messages changed as well. Combining the scripts meant that a lot
424of these link messages are no longer needed, but some external scripts
425may depend on them.
426
427- ZHAO support is gone. None of the ZHAO based AOs I have seen in
428OpenSim support that. Note that the ~MLPT-AutoZhao script says "This
429one supports AutoZhao, which is a ZHAO variant that turns of
430automatically when you sit." Which seems pointless, it's already doing
431the correct thing. My own AO / swimmer does the correct thing to.
432
433- No Xcite support. Xcite doesn't exist in OpenSim.
434
435- The STOP command now just stops all animations and puts away the balls,
436instead of switching to the "stand" animation.
437
438- Strided lists are used internally, in theory should use a little less
439memory than having separate lists for everything.
440
441- osMessageObject() is used instead of llSay() to communicate with the
442pose balls. This will stop any cross talk issues, and save some script
443running time. As a bonus, balls can be anywhere in the sim.
444
445- The OpenSim notecard reading functions are used instead of the clunky
446Second Life dataserver() functions. Faster and cleaner code.
447
448- While the PRIMTOUCH command is still supported, it's script isn't here.
449I never did have a copy of that script, and haven't needed to use it
450anyway.
451
452- There may be a thing or two I forgot to mention here.
453
454================================================
455
456OPENSIM THREAT LEVELS:
457
458OpenSim developers introduced a concept of "threat levels" for their new
459os* LSL functions. In my not so humble opinion, they where very
460paranoid in assigning threat levels. For this reason, these scripts may
461or may not work in any given grid or sim. In my version of OpenSim I
462have removed or reduced the more insane threat levels, so YMMV.
463
464Refer to the OpenSim documentation for how to deal with this, or ask the
465person that runs your OpenSim grid / sim.
466
467- osAvatarPlayAnimation() and osAvatarStopAnimation()
468Threat level: VeryHigh, disabled by default.
469
470These two functions can animate any avatar with any animation in the
471objects inventory, without asking permission. So I guess this threat
472level is warranted. Also means one script can manage animations for more
473than one avatar, a limitation of the LL variety.
474
475Used to get rid of one of the annoying aspects of how MLP works, which
476often confuses newbies. Also allowed me to reduce the code complexity
477and get rid of all those ~poser X scripts.
478
479- osGetRezzingObject()
480Threat level: none, enabled by default.
481
482Wow, no threat level, the only one. lol
483
484Used to reduce the complexity of the communication between the MLP object
485and the balls.
486
487- osGetNumberOfNotecardLines(), osGetNotecard(), and osGetNotecardLine()
488Threat level: VeryHigh, only enabled for estate owners and managers by
489default.
490
491A faster and less complex way of being able to do what you could always
492do, gets a VeryHigh threat level? WTF are the OpenSim developers
493smoking?
494
495Used to speed things up and reduce code complexity, exactly what they
496where designed for.
497
498- osMakeNotecard()
499Threat level: High, only enabled for estate owners and managers by
500default.
501
502Slightly less WTF than the other notecard functions, but still. Allows
503to script what the object owner can do manually, why is that a high
504threat?
505
506Saves having to cut and paste to notecards after editing ball and prop
507positions.
508
509-osMessageObject()
510Threat level: Low, only enabled for estate owners and managers by
511default.
512
513More WTF, allows to send messages between objects better. Nothing you
514couldn't do before.
515
516Used to reduce the complexity and increase the reliability of messages
517between the MLP object and balls / props.
518
519-osReplaceString()
520Threat level: VeryLow , enabled by default.
521
522Why isn't this threat level none?
523
524Used to reduce script complexity.
525
526-osSetPrimitiveParams()
527Threat level: High, disabled by default.
528
529Once again, allows scripting of something that can be done manually, and
530only works on objects the script owner actually owns. With that later
531restriction, total WTF.
532
533Used to reduce complexity and speed things up.
534