aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/1ring technical docs.txt
blob: cdd4b90307f53dbe9c625bd9a5deb21d5abac0cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
This is basic technical docs for how to customize things in 1ring.

Construction and prim contents.
-----------------------------------------------

Any 1ring object needs at least three prims.  The main prim has most
things in it.  Linked to that main prim is a prim that should have the
OhSillyThreatDetector script in it, coz it listens to the DEBUG channel
for errors from the other scripts, and LSL scripts can't listen for
things sent from their own prims.  The other prim is the one that becomes
the "big yellow heart" vehicle prim, and is called "1AOor2 prim"  The
script inside it is really simple, and allows the main 1ring to send
stuff to it after rezzing it.  This prim just sits in the contents of the
main prim until needed.

There is a "onefang's leash holder and 1ring  support" script that you
can put into any leash holder object.  Put it into the prim the leash
should attach to.

The main prim should have at least these things in it -
    objects - 1AOor2 prim
    scripts - 1chatter, 1ring, 1AOor2
    notecards -  
        .1AOor2.settings
        .1AOor2.theme
        .1ring.settings
        .1ring.theme
        .POSITIONS
        ZHAO II
        ~1AOor2.alias.data
        ~1AOor2.command.data
        ~1AOor2.settings.data
        ~1ring.alias.data
        ~1ring.command.data
        ~1ring.settings.data
        ~animations.data
        ~flystates.data
        ~states.data
    textures - soap-bubble, leash_chain, others beginning with "leash_" for optional leash textures.
    animations - loooots.

The various .data notecards are used to store data that may or may not
fit into scripts, coz various viewers have various limits on the length
of scripts.  So we just read those into memory.  ~animations.data lists
the viewer built in animations.

The ZHAO II card is a standard ZHAO II compatible AO definition card.  It
can be replaced by any other ZHAO II compatible AO note card.  Make sure
the animations listed in it are actually in 1rings contents.

.POSITIONS stores couples positions data, exactly like the ones used for MLP scripts.  The format is -
{pose name} followed by four vectors of position and rotation for both animations in the pose.

The .settings notecards store the various settings that are configurable
by the user.  They are name=value pairs, one per line.

The .theme note cards are where the menus are defined, and are the bits
you might want to customize.

// and # can be used for comments in these cards.

They start with a "FOR x" line, where X is one of the script names.  This
means that by default the commands in the rest of the note card are
commands from that particular script.

Next might be an "ALIAS x | y" command.  Mostly used so that "boss" can
be replaced by something like "Owner" or "Parent" or whatever.

The rest are commands for defining the menus.  If you are familiar with
MLP menus, this part is similar.  There is no need for adding Exit
commands, nor for breaking the menus up to fit the silly LSL menu system
limitations.

MENU name | title text | permissions.
-----------------------------------------------------
Start defining a menu.  "name" becomes the button text, "title text"
becomes the title of the menu as displayed.  "permissions" is a code word
that defines who can use this menu.  This line is followed by lines
defining the menu items.

Permission codes.
--------------------------
NONE        No one.
BOSS        Anyone that is a BOSS.
TRUST       Anyone that is aTRUSTEE.
GROUP     The group the wearer has currently activated.
BOSSES  Anyone that is a BOSS or TRUSTEE.
WEARER   The actual wearer.
PRIV          Anyone that is a BOSS, or WEARER.
MORE        Anyone that is a BOSS, TRUSTEE, or WEARER.
MOST       Anyone that is a BOSS, TRUSTEE,  WEARER, or matching group member.
PUBLIC    Anyone.
ALL           Everyone.

Note that GROUP and PUBLIC are controlled by the group and public toggles
in the access... menu.

BUTTON name | command
---------------------------------------
A menu button with the label "name" that does "command" when clicked.

TOGGLE name | setting
----------------------------------
A menu button with the label "☐ name" or "▣ name" that toggles boolean
setting "setting" when clicked.

TOMENU name
----------------------------------------
A menu button with the label "name..." that shows the named menu when
clicked.

TOMENU name | command
----------------------------------------
A menu button with the label "name..." that runs the command when
clicked.  The command likely shows another menu.

POSE name | animation0 | animation1
---------------------------------------------------------

A menu button with the label "name" that animates the couple that are
sitting  on the 1AOor2 prim.

Unless swapped, animation0 is for the tallest person, animation1 for the
shortest.

The .POSITIONS note card stores the actual positions and rotations for
the poses.

SINGLE_POSE name | animation
------------------------------------------------
A menu button with the label "name" that animates the wearer.

command
---------------
Commands are in the form "script.command arguments".

"script" is optional, as is the . if script is left off.  It's the script
the command is for.  If a FOR command is at the top of the script, that's
the default script.

"command" is the name of the actual command.

"arguments" are any arguments the command needs.

setting
----------
Like commands, settings have an optional "script." bit at the beginning,
which works the same.

animation
----------------
This can be just the animation name, either a viewer built in one, or one
that is included in the 1ring contents.

It can include a :: followed by another animation name, typically the
built in emote_* viewer animations.  Used for things like puckering up
your lips for a kiss, or poking your tongue out while licking.