D/Sエントリー箱

すすきのBDSM CLub Japanで使用しているD/Sエントリー箱の中身です。
売り物にするほどでもなく種も仕掛けもありませんということで公開。(通信チャンネルは変えています)

要点は
・グループのみ操作可能であること
・ドラッグ&ドロップで操作してるアバターからノートカードを受け入れること

これぐらいですがドロップインベントリーで「なにが増えたか?」は分からないようなので
インベントリーのチェンジ毎に入っている物をチェックする感じにしてあります。
正確にインベントリーの中身とドロップされた物を検出するには
常にLISTなどでインベントリーにある物の一覧を保持して比較するのがいいと思いますが
そこまでしなくてもいいかなぁと^^

ま、手抜きですね。

つまり穴があって~操作しているアバター名と全く違う名称の物をドロップされると
検出不能だったりします。

そーいう事態が頻繁に起こるようだと対処って事で いいかなぁ。
まずは「確実に動作する物」でないと始まりませんからねぇ。

string G_List_Name = "submissive entry box";
integer G_CHANNEL = -11111;
integer G_Handle = 0;
key G_avator;

integer Title_SET(){
string tmp_Title;
tmp_Title = "*** " + G_List_Name + " ***";
tmp_Title += "\ni am Sub/Slave\nlooking for Dom/Master/Mistress\n";
tmp_Title += "\n" + (string)llGetInventoryNumber(INVENTORY_NOTECARD) + "Messages";
tmp_Title += "\n(use for Group only)";
llSetText(tmp_Title, <0,1,1>, 1.5);
return TRUE;
}

integer Note_Card_Dupe_CHK(string notename,integer num){
if (llGetInventoryType(notename + " " + (string)num) != INVENTORY_NONE){
llRemoveInventory(notename + " " + (string)num);
llWhisper(0,"'" + notename + "' already exists.Please delete your old NoteCard!");
return TRUE;
}else{
return FALSE;
}
}

default
{
state_entry()
{
llAllowInventoryDrop(FALSE);
Title_SET();
}

touch_start(integer total_number)
{
if (!llSameGroup(llDetectedKey(0))){
llWhisper(0,"Use for Group Members!");
return;
}

integer item_cnt = llGetInventoryNumber(INVENTORY_NOTECARD);

integer i;
list note_list = [];
string notecard;

// for (i=0; i< item_cnt; i++){
// notecard = llGetInventoryName(INVENTORY_NOTECARD,i);
// note_list = llListInsertList(note_list, [notecard],llGetListLength(note_list));
// llOwnerSay(notecard);
// }
// if(G_Handle){
// llListenRemove(G_Handle);
// G_Handle = 0;
// }
// list Dlg_Menu = note_list;
// integer m = item_cnt % 3;
// if (m > 0){
// m = 3 - m;
// for (i=0;i< m;i++){
// Dlg_Menu += [""];
// }
// }

string Dlg_text = "Now entry list\n";
list Dlg_Menu = ["Get ALL","Add Me","Delete Me"];

for (i=0; i< item_cnt; i++){
notecard = llGetInventoryName(INVENTORY_NOTECARD,i);
Dlg_text += "\n" + (string)(i+1) + "." + notecard;
}

if(G_Handle){
llListenRemove(G_Handle);
G_Handle = 0;
}
G_avator = llDetectedKey(0);
G_Handle = llListen(G_CHANNEL, "", NULL_KEY, "");

llDialog(llDetectedKey(0), Dlg_text, Dlg_Menu, G_CHANNEL);
llSetTimerEvent(30.0);
}
changed(integer mask){
if(mask & (CHANGED_INVENTORY | CHANGED_ALLOWED_DROP)){
integer item_cnt;
string notecard;
integer i;
integer j;

llAllowInventoryDrop(FALSE);

//Length CHK
item_cnt = llGetInventoryNumber(INVENTORY_NOTECARD);
for (i=0; i< item_cnt; i++){
notecard = llGetInventoryName(INVENTORY_NOTECARD,i);
if (llStringLength(notecard) > 24){
llRemoveInventory(notecard);
llWhisper(0,"NoteCard Names too long! (max 24 character)");
}
}
//Dupe CHK
item_cnt = llGetInventoryNumber(INVENTORY_NOTECARD);
for (i=0; i< item_cnt; i++){
notecard = llGetInventoryName(INVENTORY_NOTECARD,i);
j = 1;
while (Note_Card_Dupe_CHK(notecard,j)){
j++;
}
}

Title_SET();
}
}
listen(integer channel, string name, key id, string message){
if (channel != G_CHANNEL || id != G_avator) return;
if (message == "Add Me"){
llAllowInventoryDrop(TRUE);
llWhisper(0,"Your NoteCard Drag and Drop!! (waiting 30 sec)");
llWhisper(0,"NoteCard named your 'Firstname Lastname'");
llSetTimerEvent(30.0);
}else if (message == "Delete Me"){
llRemoveInventory(name);
Title_SET();
}else if (message == "Get ALL"){
integer item_cnt = llGetInventoryNumber(INVENTORY_NOTECARD);
list note_list = [];
integer i;
string notecard;

if(item_cnt > 0){
for (i=0; i< item_cnt; i++){
notecard = llGetInventoryName(INVENTORY_NOTECARD,i);
note_list = llListInsertList(note_list, [notecard],llGetListLength(note_list));
}
llGiveInventoryList(id, "BDSM Club Japan / " + G_List_Name, note_list);
}else{
llWhisper(0,"NoteCard is Empty");
}
}
}
timer() {
if(G_Handle){
llListenRemove(G_Handle);
G_Handle = 0;
}
llSetTimerEvent(0.0);
llAllowInventoryDrop(FALSE);
}
}

2008/01/03

Posted by まゆみ.H
X f B! P L

Search (in blogs)

Featured

今も続くアバターの身長問題。身長=158cmは子供ですか、そーですか。

もともとリアルサイズなアバター故にアジア圏以外が主催のSIMなどでは低身長として扱われることも少なくなかったのですが、さほど気にせず自分の好みの見た目として楽しんでいました。ところが、先日、とあるSIMを訪問した時に「身長が5フィート以下だから子供は帰りなさい」というメッ...

Picks

クリエイティブ・コモンズ・ライセンス

template by QooQ