Jump to content
You are about to reply to a thread that has been inactive for 1105 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I am looking to hire someone to make me a custom script for a tp board.

1. Multi-Location

2. Same Sim

3. Can add a location without redoing the entire tp system

I need this to use a set position marker not coordinates, the map or anything that someone sits on. It should be an experience.

 

Yes, yes, I know there are some on the MP like I am describing but every last one requires me to re-do the entire system when I make a new venue. I am looking to make my life easier not have to re-do something all the time.

Karlee Heartsong

 

 

Edited by Karlee Heartsong
Link to comment
Share on other sites

Seems pretty straight forward.

gChannelAnnounce = -47;
gChannelTeleport = -48;
gChannelDialog   = -49;
list gDestinations;
list gDestinationNames;
default
{
    state_entry()
    {
        llListen(gChannelAnnounce,"",NULL_KEY,"");
        llListen(gChannelTeleport,"",NULL_KEY,"");
        llListen(gChannelDialog  ,"",NULL_KEY,"");
        llRegonSay(gChannelAnnounce,(string)llGetKey());
    }
    touch_start(integer n)
    {
        llDialog(llDetectedKey(0),"Select a teleport destination:",gDestinationNames,gChannelDialog);
    }
    listen(integer Channel,string Name,key ID,string Text)
    {
        if(Channel==gChannelAnnounce)
        {
            gDestinations+=[ID];
            gDestinationNames+=[Name];
            llRegionSayTo(ID,gChannelAnnounce,(string)llGetKey());
        }
        else if(Channel==gChannelTeleport)
        {
            llRequestExperiencePermissions(ID, "");
        }
        else if(Channel==gChannelDialog)
        {
            integer index = llListFindList(gDestinationNames,Text);
            if(index==-1)
                llRegionSayTo(ID,0,"ERROR, destination not found!");
            else
                llRegionSayTo(llList2Key(gDestinations,index),gChannelTeleport,(string)ID);
        }
    }
    experience_permissions(key av)
    {
        vector pos = llGetPos();
        llTeleportAgent(av, "", pos+<1,0,0>*llGetRot(), pos);
    }
}

It's a bit brittle, and I haven't tested it so it might have a few bugs. All of your teleporters with this script should be named something less than 12 letters long to fit into a dialog button, and it doesn't have any way of removing a teleport destination, unless you reset scripts in all of the teleporters. Also only supports up to 13 teleporters, again due to dialog limitations, and will throw an error (due to trying to give a dialog menu with empty button list) if there's only one teleporter.

Edited by Quistessa
obvious typo in script *2
Link to comment
Share on other sites

3 hours ago, Quistessa said:

Seems pretty straight forward.


gChannelAnnounce = -47;
gChannelTeleport = -48;
gChannelDialog   = -49;
list gDestinations;
list gDestinationNames;
default
{
    state_entry()
    {
        llListen(gChannelAnnounce,"",NULL_KEY,"");
        llListen(gChannelTeleport,"",NULL_KEY,"");
        llListen(gChannelDialog  ,"",NULL_KEY,"");
        llRegonSay(gChannelAnnounce,(string)llGetKey());
    }
    touch_start(integer n)
    {
        llDialog(llDetectedKey(0),"Select a teleport destination:",gDestinationNames,gChannelDialog);
    }
    listen(integer Channel,string Name,key ID,string Text)
    {
        if(Channel==gChannelAnnounce)
        {
            gDestinations+=[ID];
            gDestinationNames+=[Name];
            llRegionSayTo(ID,gChannelAnnounce,(string)llGetKey());
        }
        else if(Channel==gChannelTeleport)
        {
            llRequestExperiencePermissions(ID, "");
        }
        else if(Channel==gChannelDialog)
        {
            integer index = llListFindList(gDestinationNames,Text);
            if(index==-1)
                llRegionSayTo(ID,0,"ERROR, destination not found!");
            else
                llRegionSayTo(llList2Key(gDestinations,index),gChannelTeleport,(string)ID);
        }
    }
    experience_permissions(key av)
    {
        vector pos = llGetPos();
        llTeleportAgent(av, "", pos+<1,0,0>*llGetRot(), pos);
    }
}

It's a bit brittle, and I haven't tested it so it might have a few bugs. All of your teleporters with this script should be named something less than 12 letters long to fit into a dialog button, and it doesn't have any way of removing a teleport destination, unless you reset scripts in all of the teleporters. Also only supports up to 13 teleporters, again due to dialog limitations, and will throw an error (due to trying to give a dialog menu with empty button list) if there's only one teleporter.

Thank you so much. I can't script at all.

Link to comment
Share on other sites

35 minutes ago, Karlee Heartsong said:

Thank you so much. I can't script at all.

Any time :). I also do scripts on commission, but I don't really like charging for anything simple enough to fit into a forum post, and that (hopefully) works well enough without a lot of inworld testing and debugging. Hopefully you can get it compiled with an experience key, and get it set up for needs .

Edited by Quistessa
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 1105 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...