上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ダイアログメニューはこれになります^^




■ブログリンクとアドレスは、/1
string blog_email;
string blog_url = "http://blogger.com";
string blog_msg = "Visit my Blog";
string blog_subj = "Post from SecondLife";
integer isadmin;
integer on = FALSE;

string  dcapt;
list    dbutt;
integer dchan;
key     duser = NULL_KEY;

integer i;

integer dlistener;
bluemenu(){
    llDialog(duser,dcapt,dbutt,dchan);
    dlistener = llListen(dchan,"",duser,"");
    llSetTimerEvent(60);
}

integer clistener;
string listenfor;

unlisten(){
    llListenRemove(dlistener);
    llListenRemove(clistener);
    listenfor = "";
    llAllowInventoryDrop(FALSE);
    duser = NULL_KEY;
}



default{
    touch_start(integer num_detected){
        if ( ( duser == NULL_KEY ) || ( duser == llDetectedKey(0) ) ){
            duser = llDetectedKey(0);
            dchan = (integer)llRound(llFrand(1)*5000000);
            if ( llDetectedKey(0) == llGetOwner() ){
                isadmin = TRUE;
                dcapt = "Admin Menu
               
Blogger Address: "+blog_url+"
Blogger Email: "+blog_email+"
Blogger Subject: "+blog_subj;
                dbutt = ["Chat Blog", "Blog Note", "Goto Blog", "Subject", "Set Email", "Set URL"];
                bluemenu();                    
            }
            else{
                isadmin = FALSE;
                dcapt = "User Menu";
                dbutt = ["Chat Blog", "Blog Note", "Goto Blog"];
                bluemenu();
            }
           
        }
        else{
            llInstantMessage(llDetectedKey(0),"In Use, please try again in a minute.");
        }
    }
   
    listen(integer channel, string name, key id, string message){
        if ( channel == dchan ){
            if ( isadmin ){
                if ( message == "Subject" ){
                    unlisten();
                    llInstantMessage(id,"Say /1 followed by the subject you wish for each blog post");
                    listenfor = "subject";
                    clistener = llListen(1,"",id,"");
                    llSetTimerEvent(60);
                }
                if ( message == "Set Email" ){
                    unlisten();
                    llInstantMessage(id,"Say /1 followed by the email address that accepts blogger posts.");
                    listenfor = "setemail";
                    clistener = llListen(1,"",id,"");
                    llSetTimerEvent(60);
                }
                if ( message == "Set URL" ){
                    unlisten();
                    llInstantMessage(id,"Say /1 followed by the blogger web addres to your blog.");
                    listenfor = "seturl";
                    clistener = llListen(1,"",id,"");
                    llSetTimerEvent(60);
                }
            }
            if ( message == "Chat Blog" ){
                unlisten();
                llMessageLinked(LINK_THIS,0,"chatblog",id);
                llInstantMessage(id,"Say your blog post in chat within 60 seconds.");

            }
            if ( message == "Blog Note" ){
                unlisten();
                llAllowInventoryDrop(TRUE);
                llSetTimerEvent(60);
                llInstantMessage(id,"Drop your notecard into this object within 60 seconds.");
            }
            if ( message == "Goto Blog" ){
                llLoadURL(id,blog_msg,blog_url);    
                unlisten();  
            }
           
        }
        else if ( channel == 1 ){
            if ( isadmin ){
                if ( listenfor == "setemail" ){
                    blog_email = message;
                    llInstantMessage(id,"Blogger email address set");
                    llMessageLinked(LINK_THIS,0,"setemail",blog_email);
                    unlisten();
                }
                else if ( listenfor == "subject" ){
                    blog_subj = message;
                    llInstantMessage(id,"Subject is set");
                    llMessageLinked(LINK_THIS,0,"subject",blog_subj);
                    unlisten();
                }
                else if ( listenfor == "seturl" ){
                    blog_url = message;
                    llInstantMessage(id,"Blogger url set");
                    unlisten();
                }
            }


        }
    }
   
    timer(){
        unlisten();
    }
}

■メール
string blog_email;
string blog_subject = "Post from SecondLife";
string post;
integer listener;

string qName;
integer qLine = 0;
key qID;


mailit(){
    llEmail(blog_email, blog_subject, post);
    post = "";
}

clean(){
    list types = [INVENTORY_TEXTURE, INVENTORY_SOUND, INVENTORY_LANDMARK, INVENTORY_CLOTHING, INVENTORY_OBJECT, INVENTORY_NOTECARD, INVENTORY_BODYPART, INVENTORY_ANIMATION, INVENTORY_GESTURE];
    integer i;
    integer ii;
    string iname;
    for ( i = 0; i < llGetListLength(types); i++ ){
        for ( ii = 0; ii < llGetInventoryNumber(llList2Integer(types,i)); ii++ ){
            if ( iname = llGetInventoryName(llList2Integer(types,i), ii) ){
                llRemoveInventory(iname);
            }
        }
    }
}

   
   
default{
    state_entry(){
       // llAllowInventoryDrop(TRUE);
    }
   
    link_message(integer sender_num, integer num, string str, key id){
        if ( str == "setemail" ){
            blog_email = id;
        }
        else if ( str == "subject" ){
            blog_subject = id;
        }
        else if ( str == "chatblog" ){
            listener = llListen(0,"",id,"");
            llSetTimerEvent(60);
        }
    }
   
    timer(){
        llListenRemove(listener);
        llSetTimerEvent(0);
    }
   
    listen(integer channel, string name, key id, string message){
        llListenRemove(listener);
        post = message + "\n\n" + llKey2Name(id);
        llSetTimerEvent(0);
        mailit();
    }
   
    changed(integer change){
        if(change & (CHANGED_ALLOWED_DROP | CHANGED_INVENTORY)){
            qName = llGetInventoryName(INVENTORY_NOTECARD, 0);
            if ( llStringLength(qName) > 0 ){
                qID = llGetNotecardLine(qName, qLine);
            }
            else{
                clean();
            }
           
        }
    }
   
   
    dataserver(key query_id, string data){
        if (query_id == qID){
            if (data != EOF){
                post = post + "\n" + data;
                ++qLine;
                qID = llGetNotecardLine(qName, qLine);
            }
            else{
                mailit();
                clean();
                qLine = 0;
            }
        }
    }
   
}
スポンサーサイト

コメント

コメントの投稿

トラックバック

トラックバック URL
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。