-
Notifications
You must be signed in to change notification settings - Fork 0
/
=update.lsl
executable file
·60 lines (56 loc) · 2.04 KB
/
=update.lsl
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
// update.lsl: OpenGate2 update code
// Copyright (C) 2007 Adam Wozniak
//
// 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 3 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.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// Adam Wozniak
// 1352 Fourteenth St, Los Osos, CA 93402
// 3/9/08 changed channel to a OpenRings specific communication channel.
integer listen_channel = -1618033;
integer linkChannel = -1;
default
{
state_entry ()
{
if (llSubStringIndex(llGetObjectName(), "updater") == 0) {
llSetScriptState(llGetScriptName(), FALSE);
return;
}
llSetRemoteScriptAccessPin(listen_channel);
llListen(listen_channel, "", NULL_KEY, "update?");
llAllowInventoryDrop(FALSE);
}
listen(integer channel, string name, key id, string mesg) {
if (mesg == "update?") {
llWhisper(listen_channel, "update!");
if (id == llGetCreator()) {
llAllowInventoryDrop(TRUE);
}
}
}
changed(integer kind) {
if (kind & (CHANGED_INVENTORY|CHANGED_ALLOWED_DROP)) {
integer max = llGetInventoryNumber(INVENTORY_OBJECT);
integer i;
for (i = 0; i < max; i++) {
if (llSubStringIndex(llGetInventoryName(INVENTORY_OBJECT, i), "updater ") == 0) {
llRezObject(llGetInventoryName(INVENTORY_OBJECT, i), llGetPos(), ZERO_VECTOR, ZERO_ROTATION, 0);
llRemoveInventory(llGetInventoryName(INVENTORY_OBJECT, i));
llResetScript();
}
}
}
}
}