· 6 years ago · Nov 12, 2019, 11:16 PM
1This is a comprehensive list of all commands which can be run by an add-on.
2
3Parameters passed along with actions will be explained, as well as how to handle the response for each.
4
5v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v
6This guide assumes that you have a copy of the Example Add-On script for reference.
7^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
8
9Don't forget how to generate a user's add-on channel! Never leave home without it!
10
11#define DIAPER_KEY 121111
12#define ADD_ON_OFFSET 8
13#define ADD_ON_NAME "Example Add-On"
14#define ADD_ON_UUID "UUID HERE"
15
16ADD_ON_UUID is provided to you after you register your add-on with the raincloud server.
17
18/*
19* Used to generate unique channel for diaper to communicate on.
20*/
21integer generateChan(key id) {
22 return 0x80000000 | ((integer)("0x"+(string)id) ^ DIAPER_KEY);
23}
24
25// Tiny convenience function to get the add on channel for a user from their SL key.
26integer generateAddOnChan(key id) {
27 return generateChan(id) + ADD_ON_OFFSET;
28}
29
30===================
31= M A I N C O M M A N D S =
32===================
33
34Main, as in DrizzleMain. These aren't any more important than any other commands. These are called to
35get some baseline pieces of information, like nickname, gender, and whether or not the diaper is locked.
36
37"Lock"
38-> Sending this command locks the diaper of the targeted user. The second value passed is the SL key of the locker.
39Ex: sendMainCommand(addOnChannel, "Lock", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
40
41"Unlock"
42-> Sending this command unlocks the diaper of the targeted user. The second value passed is the SL key of the unlocker.
43Ex: sendMainCommand(addOnChannel, "Unlock", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
44
45"Toggle Lock"
46-> Convenience command for flipping the lock on a targeted user on and off. The second value passed is the SL key of the toggler.
47Ex: sendMainCommand(addOnChannel, "Toggle Lock", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
48
49"Suppress"
50-> Sending this command causes the targeted user's diaper to IGNORE left click/touch events. Only the "Diaper Clicked" event broadcasts in response.
51-> The second value passed is the SL key of the suppressor.
52Ex: sendMainCommand(addOnChannel, "Suppress", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
53
54"Unsuppress"
55-> Sending this command causes the targeted user's diaper to ACCEPT left click/touch events again.
56-> ALWAYS call this after invoking "Suppress" -- Treat it just like the "Mute" and "Unmute" print commands mentioned below.
57-> The second value passed is the SL key of the unsuppressor.
58Ex: sendMainCommand(addOnChannel, "Unsuppress", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
59
60> > > G E T T E R S < < <
61Use these to request a value from the diaper.
62
63getNickname
64getGender
65getAccessMode
66getChatter
67getCarers
68isOpenCaretaker
69isTattleTale
70isLocked
71isSuppressed
72
73Ex:
74sendMainCommand(addOnChannel, "getNickname", "");
75
76and handle the response with this code inside a listen:
77
78string nickname;
79if(~llListFindList(SETTINGS_LIST, [msg])) {
80 list getterInfo = llCSV2List(msg); // Convert to list for ease of processing.
81
82 // Update a local variable
83 nickname = llList2String(getterInfo, 1); // Get nickname
84}
85
86> > > S E T T E R S < < <
87Calling these will directly set a value within a target user's diaper.
88A side-effect of calling a setter is that the diaper will rebroadcast the value openly to all listening add-ons.
89
90setNickname
91
92Ex:
93sendMainCommand(addOnChannel, "setNickname", "Puddlebrat");
94
95=====================
96= P R I N T C O M M A N D S =
97=====================
98
99If you want custom printouts for actions that already have built-in prints, these commands are EXTREMELY important.
100Simply call mute before sending an action which triggers a printout, then unmute when you're done.
101
102# # # DO NOT FORGET TO UNMUTE AFTERWARDS # # #
103
104"Mute"
105-> Sending this command disables all default printouts within the diaper of the targeted user.
106Ex: sendPrintCommand(addOnChannel, "Mute", "");
107
108"Unmute"
109-> Sending this command re-enables all default printouts within the diaper of the targeted user.
110Ex: sendPrintCommand(addOnChannel, "Unmute", "");
111
112======================
113= P O T T Y C O M M A N D S =
114======================
115
116If you simply want to run these commands and supply your own printouts, see the above section on muting.
117
118These commands simulate a user clicking a menu option in the diaper.
119
120"Wet"
121-> Sending this command makes the user you target wet.
122Ex: sendPottyCommand(addOnChannel, "Wet", "");
123
124"Mess"
125-> Sending this command makes the user you target mess.
126Ex: sendPottyCommand(addOnChannel, "Mess", "");
127
128"Check"
129-> Check the targeted user's diaper. The second value passed is the SL key of the checker.
130Ex: sendPottyCommand(addOnChannel, "Check", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
131
132"Change"
133-> Change the targeted user's diaper. The second value passed is the SL key of the changer.
134Ex: sendPottyCommand(addOnChannel, "Change", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
135
136"Start Enema"
137-> Start an enema for the targeted user. The second value passed is the SL key of the enema starter.
138Ex: sendPottyCommand(addOnChannel, "Start Enema", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
139
140"Squeeze"
141-> Squeeze the targeted user. The second value passed is the SL key of the squeezer.
142Ex: sendPottyCommand(addOnChannel, "Squeeze", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
143
144"Tickle"
145-> Tickle the targeted user. The second value passed is the SL key of the tickler.
146Ex: sendPottyCommand(addOnChannel, "Tickle", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
147
148"Spank"
149-> Spank the targeted user. The second value passed is the SL key of the spanker.
150Ex: sendPottyCommand(addOnChannel, "Spank", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
151
152"Wedgie"
153-> Wedgie the targeted user. The second value passed is the SL key of the wedgier.
154Ex: sendPottyCommand(addOnChannel, "Wedgie", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
155
156"Raspberry"
157-> Raspberry the targeted user. The second value passed is the SL key of the raspberrier.
158Ex: sendPottyCommand(addOnChannel, "Raspberry", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
159
160"Diuretic"
161-> Give the targeted user a diuretic. The second value is the SL key of the user which gave the diuretic.
162Ex: sendPottyCommand(addOnChannel, "Diuretic", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
163
164"Laxative"
165-> Give the targeted user a laxative. The second value is the SL key of the user which gave the laxative.
166Ex: sendPottyCommand(addOnChannel, "Laxative", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
167
168"Toggle Plug"
169-> Insert/Remove a plug for the targeted user. The second value is the SL key of the toggler.
170Ex: sendPottyCommand(addOnChannel, "Toggle Plug", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
171
172> > > G E T T E R S < < <
173Use these to request a value from the diaper.
174
175"getWetness"
176"getMessiness"
177"getTraining"
178"getWetTimer"
179"getMessTimer"
180"getWetInterval"
181"getMessInterval"
182"getEnemaTimer"
183"getMudpies"
184"getPuddles"
185"isEnemaActive"
186"getEnemaPhase"
187"getPhasePlugged"
188"isPlugged"
189"getWetTraining"
190"getMessTraining"
191"getWetHoldAttempts"
192"getMessHoldAttempts"
193
194You call them like so:
195
196sendPottyCommand(addOnChannel, "getWetTimer", ""); // Request the current user's wet timer.
197
198and handle the response with this code inside a listen:
199
200integer wetTimer;
201if(~llListFindList(SETTINGS_LIST, [msg])) {
202 list getterInfo = llCSV2List(msg); // Convert to list for ease of processing.
203
204 // Update a local variable
205 wetTimer = llList2Integer(getterInfo, 1); // Get wetTimer
206}
207
208Ex:
209sendMainCommand(addOnChannel, "getNickname", "");
210
211> > > S E T T E R S < < <
212Calling these will directly set a value within a target user's diaper.
213A side-effect of calling a setter is that the diaper will rebroadcast the value openly to all listening add-ons.
214
215"setWetness"
216"setMessiness"
217"setTraining"
218"setWetTimer"
219"setMessTimer"
220"setWetInterval"
221"setMessInterval"
222"setEnemaTimer"
223"setMudpies"
224"setPuddles"
225"setEnemaActive"
226"setEnemaPhase"
227"setPhasePlugged"
228"setPlugged"
229"setWetTraining"
230"setMessTraining"
231"setWetHoldAttempts"
232"setMessHoldAttempts"
233
234Ex:
235sendPottyCommand(addOnChannel, "setWetTimer", "10"); // Directly set the user's wet timer to 10 minutes.
236
237======================
238= R E N D E R C O M M A N D S =
239======================
240
241These commands speak directly to the script responsible for texturing, hiding, and showing the diaper.
242
243"Hide"
244-> Hides the targeted user's diaper.
245Ex: sendRenderCommand(addOnChannel, "Hide", "");
246
247"Show"
248-> Shows the targeted user's diaper.
249Ex: sendRenderCommand(addOnChannel, "Show", "");
250
251"Apply Pack"
252-> Applies a specified texture pack to the targeted user's diaper.
253Ex: sendRenderCommand(addOnChannel, "Apply Pack", "3b52d7cb-c232-11e5-9454-bc764e059fde"); // Applies Cloud White texture.
254
255"Apply Random Pack"
256-> Applies a random texture pack owned by the targeted user to their diaper.
257Ex: sendRenderCommand(addOnChannel, "Apply Random Pack", "");
258
259"Textures"
260-> Displays the targeted user's texture pack menu to the specified user.
261-> Must NOT be the UUID of the diaper wearer. That'll trigger their texture REMOVAL menu instead.
262Ex; sendRenderCommand(addOnChannel, "Textures", "1d9801d0-84eb-4f23-8b85-3430e3d2ac98");
263
264> > > G E T T E R S < < <
265"isHidden"
266
267integer isHidden;
268if(~llListFindList(SETTINGS_LIST, [msg])) {
269 list getterInfo = llCSV2List(msg); // Convert to list for ease of processing.
270
271 // Update a local variable
272 isHidden = llList2Integer(getterInfo, 1); // Get whether or not the diaper is hidden
273}
274
275=======================
276= A D J U S T C O M M A N D S =
277=======================
278
279These are special helper commands! They are designed to be quick and convenient compared to getter/setter cycles.
280All you do is specify the adjuster command, and then the amount you'd like to augment the value!
281
282These commands will keep you safely within normal bounds for these settings, and protect you against accidentally setting
283nonsensical values.
284
285The commands are as follows:
286
287"Adjust Wet Training"
288"Adjust Mess Training"
289"Adjust Wet Interval"
290"Adjust Mess Interval"
291"Adjust Wet Timer"
292"Adjust Mess Timer"
293"Adjust Wet Hold Attempts"
294"Adjust Mess Hold Attempts"
295
296They are invoked like:
297
298callAdjuster(addOnChannel, "Adjust Wet Training", "10"); // Raise wet training by 10%
299callAdjuster(addOnChannel, "Adjust Wet Training", "-10"); // Lower wet training by 10%
300
301==============================
302= P A I R E D G E T T E R C O M M A N D S =
303==============================
304
305For convenience, these getters return two values in the response instead of just one.
306
307"Wet/Mess Levels"
308"Wet/Mess Intervals"
309"Wet/Mess Training"
310"Wet/Mess Hold Attempts"
311
312callPairedGetter(addOnChannel, "Wet/Mess Levels"); // Acquire the values for both wetness and messiness.
313
314Then, inside your listen:
315
316integer wetness;
317integer messiness;
318
319list pairedInfo = llCSV2List(msg);
320
321string pair = llList2String(pairedInfo, 0); // "Wet/Mess Levels"
322
323if(~llListFindList(PAIRED_COMMANDS, [pair])) {
324 if(pair == "Wet/Mess Levels") {
325 wetness = llList2Integer(pairedInfo, 1);
326 messiness = llList2Integer(pairedInfo, 2);
327 }
328}
329
330===========
331= D E F I N E S =
332===========
333
334These are useful defines to put at the very top of your script. They represent an exhaustive list of all valid API commands.
335
336// List of settings freely broadcast on a user's channel.
337#define SETTINGS_LIST ["gender", "training", "wetness", "messiness", "wetInterval", "messInterval", "puddles", "mudpies", "isLocked", "accessMode", "chatter", "isPlugged", "nickname", "carers", "openCaretaker", "isTattleTale", "wetTraining", "messTraining", "wetHoldAttempts", "messHoldAttempts", "wetTimer", "messTimer"]
338
339// List of events that can happen within the diaper. Events need to be broadcast for the benefit of add-ons! (Enema Unplugged, Plugged, "Tickle Fail", etc...)
340#define EVENT_LIST ["Plugged", "Self Unplugged", "Self Plugged", "Self Enema Plugged", "Self Enema Unplugged", "Enema Plugged", "Unplugged", "Tickle Fail", "Rub Fail", "Diuretic Given", "Laxative Given", "Enema Started", "Diaper Wet", "Tickle Success", "Plugged Mess", "Diaper Messed", "Rub Success", "Checked", "Changed", "Enema Release", "Enema Unplugged Release", "Enema Phase", "Locked", "Unlocked", "Spanked", "Raspberried", "Wedgied", "Diaper Clicked", "Texture Changed"]
341
342#define MAIN_COMMANDS ["Lock", "Unlock", "Toggle Lock", "Suppress", "Unsuppress", "getGender", "getAccessMode", "getChatter", "getNickname", "getCarers", "isOpenCaretaker", "isTattleTale", "isLocked", "isSuppressed", "setNickname"]
343
344// One-off commands which cause the diaper to immediately perform an action.
345#define POTTY_COMMANDS ["Wet", "Mess", "Check", "Change", "Start Enema", "Squeeze", "Tickle", "Spank", "Wedgie", "Raspberry", "Diuretic", "Laxative", "getWetness", "getMessiness", "getTraining", "getWetTimer", "getMessTimer", "getWetInterval", "getMessInterval", "getEnemaTimer", "getMudpies", "getPuddles", "isEnemaActive", "getEnemaPhase", "getPhasePlugged", "isPlugged", "getWetTraining", "getMessTraining", "getWetHoldAttempts", "getMessHoldAttempts", "setWetness", "setMessiness", "setTraining", "setWetTimer", "setMessTimer", "setWetInterval", "setMessInterval", "setEnemaTimer", "setMudpies", "setPuddles", "setEnemaActive", "setEnemaPhase", "setPhasePlugged", "setPlugged", "setWetTraining", "setMessTraining", "setWetHoldAttempts", "setMessHoldAttempts"]
346
347// One-off commands which adjust whether the diaper is hidden or shown
348#define RENDER_COMMANDS ["Hide", "Show", "Apply Pack", "Apply Random Pack"]
349
350// One-off commands which can mute/unmute the printout system inside the diaper.
351#define PRINT_COMMANDS ["Mute", "Unmute"]
352
353// Special getters which return both the wet & mess values for a specific setting.
354#define PAIRED_COMMANDS ["Wet/Mess Levels", "Wet/Mess Intervals", "Wet/Mess Training", "Wet/Mess Hold Attempts"]
355
356// Like setters, but do not require the user to know the original values. They just pass along the delta (+ or -) they wish to apply to these settings.
357#define ADJUST_COMMANDS ["Adjust Wet Training", "Adjust Mess Training", "Adjust Wet Interval", "Adjust Mess Interval", "Adjust Mess Timer", "Adjust Wet Timer", "Adjust Wet Hold Attempts", "Adjust Mess Hold Attempts"]