Jump to content
You are about to reply to a thread that has been inactive for 69 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 post
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 post
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 post
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 post
Share on other sites
You are about to reply to a thread that has been inactive for 69 days.

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...