ACME_INC submitted a new resource:

Daat99's World Omniporter 2.4 - Remake of the old omniporter system to handle TerMur

For those not familiar with this system, this is a customizable replacement for the default public moongates. It expands upon the default locations and allows you to add many more.

I take no credit for writing this script. I just updated and cleaned it up a little to support TerMur map locations. I also added some of the ML dungeons.

The gump has also been resized to handle more locations. And I have documented where to make changes to the gump validations if you want to add more pages. This might come in handy if you are using UltimaLive Map Streamer and have custom maps.

This is a great script and I hope you enjoy.

Read more about this resource...
 
Last edited:
Awesome! An absolute drag & drop script. Good instructions. And even I could figure out how to add custom spots.
 
I am finishing up some major changes to this script. Complete with new gumps. I am glad to see people are using it.
 
I am finishing up some major changes to this script. Complete with new gumps. I am glad to see people are using it.

I always thought more could be added to it. When I originally added the payment system, I had many people asking about various modifications that might be done to improve it. Unfortunately, I haven't really messed with it in years.
 
First of all, thank you for updating this.

Secondly, was wondering if you might have some idea about how to add a "party gate" button. I've been able to add the button and get it to work but then teleporting normally doesn't work.
The problem is in the (i+offset) of a ButtonID, I can't figure out how to differentiate between a teleport button and a gate button in OnResponse

any ideas?
 
ACME_INC updated Daat99's World Omniporter 2.4 with a new update entry:

DAAT99’s World Omniporter 2.5 – New Gumps, etc...

There are lots of changes in this version. New gump system and more. I need to do a lot more though, this version was designed for people with a lot of maps so if you are just using the regular maps it may need to be resized a little.

If you look at the script I have also included a couple of the Darkshard (Thanimur and Sosaria) moongate locations for those of you who have those maps. Darkshard maps are great for those who are curious and have not used them. I have nothing to do with that...

Read the rest of this update entry...
 
I can say that there is nothing more nerve racking than hearing the guy who originally wrote this script want to check out the changes I made... Thank you for taking the time to look at it and even more so for originally creating it.
 
I hate to say this, but again... this release has no description of what exactly it is.
An update for "Omniporter" -> that's great and all, but wtf is Omniporter?!

I see this so many times where people just give you the name of the release with no description.

I wish people would not assume that everyone has been here from the beginning of time, and automatically know what everything is.
"aaah yes, I know this system, it was made by Moses, in 98' on his 486" :(
 
I hate to say this, but again... this release has no description of what exactly it is.
An update for "Omniporter" -> that's great and all, but wtf is Omniporter?!

I see this so many times where people just give you the name of the release with no description.

I wish people would not assume that everyone has been here from the beginning of time, and automatically know what everything is.
"aaah yes, I know this system, it was made by Moses, in 98' on his 486" :(

Here is a link to the original release on RunUO:

http://www.runuo.com/community/thre...orter-revised-daat99s-world-teleporter.72336/

That should answer your questions about where the system came from, and what it does.
 
I was not aware Lokai originally wrote this on a 486... Sorry, couldn't resist Lokai. I have updated the description to include Lokai's link.
 
I was not aware Lokai originally wrote this on a 486... Sorry, couldn't resist Lokai. I have updated the description to include Lokai's link.

Yes, I wrote it on my IBM 486dx 40Mhz, right after I parted the Red Sea, evidently...
 
I was not aware Lokai originally wrote this on a 486... Sorry, couldn't resist Lokai. I have updated the description to include Lokai's link.

Well that's all I could get from my magical powers, due to the lack of supplied information in the description.
Evidently, I am no psychic.
 
There is no need to be psychic or have magical powers. Most people on these forums just want to help. For example, I put a lot of time in cleaning this script up so that I could share it with the community. Just like Lokai did many years ago when he wrote it. Although I think it is more accurate to say that he completely revamped it. Anyway, the moral of the story is that we put this stuff out here because we want to see other people use it. So we look for your input to better the product.

The point I am making is if you have questions that is great and I updated the description as you suggested. I would suggest next time to be a little less sarcastic about it and perhaps just PM someone if you do not understand something. Like I said most everyone here just wants to help.

Forgive my previous response, I just wanted to tell Lokai he was old. Because when I originally read the post I nearly spit my coffee out. There is a lot of history here and we do forget to put great descriptions on some of our stuff like this for example. Anyway, please feel free to PM us on these matters. I think you will find we are all here to help.
 
Great stuff, thanks for your time and effort!

I suggest copying and pasting the description, rather than just adding the URL.
I have seen many URLs from runuo.com that no longer work.
runuo.com might go down any day as many many many UO resource sites have, no one can know for sure.

After reading the description from the original post, I still don't know exactly what this system does.
If I have missed the explanation, please could you point it out - otherwise, can you tell me what this system does?
 
Once you generate it- for the towns or places which you have added- you will have a sort of "custom moongate" where the destination can be picked and go there

Description:
A moongate that hold all the locations and can be easily customized in the script.
Added a UseGlobal bool value for each teleporter, when set to false that particular teleporter will have independent settings then the rest.
Admin can turn on\off each map in the teleporter (effect all the teleporters in the world by default) via [props.
Can be set to allow reds in tram\ilsh\malas\tokuno or not via [props (AllowAllMurdr will allow reds in all maps otherwise only in fel).
The teleporter come with example custom map which is turned off by default, enable it with [props and set the locations inside the script.
Use [worldtelegen to generate world teleporters in all the active connections (if trammel is active it'll add teleporters to all the locatios in trammel).
 
How can I just add it?
For some custom locations I have, I want to place the world omniporter and add the location in script.

I went into the worldomniporter.cs and around line 500'ish... I used the same format they did and created a "Custom" section. Here is a section of the script - I just inserted my section in between two of theirs. Then when you load the omniporter they are included. I have used it for over a year and love it. I just started using the Enhanced Client and it works great there, too.

The casino and workshop go to some islands I added - I am not antisocial, but I do appreciate my privacy :)

Code:
      GlobalEntries.Add("TerMur", new OmniEntry[]
       {
         new OmniEntry("Royal City", new Point3D(852, 3526, -43), Map.TerMur),
         new OmniEntry("Holy City", new Point3D(926, 3989, -36), Map.TerMur),
         new OmniEntry("Fisherman's Reach", new Point3D(612, 3038, 35), Map.TerMur),
         new OmniEntry("Tomb of Kings", new Point3D(997, 3843, -41), Map.TerMur),
         new OmniEntry("Underworld", new Point3D(4194, 3268, 0), Map.Trammel)
       });


       GlobalEntries.Add("Custom", new OmniEntry[] //add locations to the custom map here
       {
         new OmniEntry("Tito Tim's House", new Point3D(1991, 1564, 0), Map.Trammel ),
         new OmniEntry("Tito Tim's Casino", new Point3D(2032, 1702, 19), Map.Trammel ),
         new OmniEntry("Santa Workshop", new Point3D(1932, 1708, 18), Map.Trammel ),
       });
       
       GlobalEntries.Add("Staff", new OmniEntry[]//add locations to the staff map here
       {
         new OmniEntry("Green Acres tram", new Point3D(5445, 1153, 0), Map.Trammel ),
         new OmniEntry("Green Acres fel", new Point3D(5445, 1153, 0), Map.Felucca ),
         new OmniEntry("Jail tram", new Point3D(5296, 1173, 0), Map.Trammel ),
         new OmniEntry("Jail fel", new Point3D(5296, 1173, 0), Map.Felucca ),
         new OmniEntry("Star Room tram", new Point3D(5146, 1774, 0), Map.Trammel ),
         new OmniEntry("Star Room fel", new Point3D(5146, 1774, 0), Map.Felucca )
       });
[\code]
 
I get how to do that, but when I do "[add worldomniporter" it says something about boolean. I want to manually add the teleporter without using the generate command.

Its just me. I like control.
 
I get how to do that, but when I do "[add worldomniporter" it says something about boolean. I want to manually add the teleporter without using the generate command.

Its just me. I like control.
It does not work that way. You will have to use [worldomnigen.
 
Do you mean you want to manually add locations on the fly? Or have a system just for custom locations?



I have seen, on a couple free shards, a teleport/gate system that is separate from the main moongates ( very cool looking rolling globe graphic - no idea what it is). It was setup for just their custom locations. I don't what script they used, though. I would imagine you could change the omniporter script to just your chosen locations, and even change the graphic for it...
 
It is very easy to add locations as well as change the graphic. There are comments that I added in the script to do both. I am not sure what all is out there. There is another gate system based off of xml. But I don't remember the name.
 
So removing one from its location and using it say in my backpack as staff, crashes the server.

Edit: Fixed the issue. Disregard.
 
Last edited:
In using the [props to turn off certain menus, such as Trammel Dungeons or Felucca Dungeons, it also turns off the Trammel and Felucca towns respectively. Turning off Public Moongates turns off Tokuno as well and there are several other options that when you turn them off or on will affect other options as well. Anyone else having this issue? I am using the latest Repo and current client.
 
Don't use [props to modify the omni porter locations, it needs to be edited from within the file. If you want to remove a specific location, you can comment out the line in the script and then run the following commands:


1. [WorldOmniDel - removes all gates
2. [Worldomnigen - adds all the gates back plus/minus whatever you changed


If you want to remove a facet it gets more complicated.

1. You can comment out the facet as shown below for my custom dungeons map "Sosaria Dungeons", inside "public static int GenerateWorldOmniporters"


public static int GenerateWorldOmniporters()
{
int gen = 0;

if (GetOptFlag( m_GlobalFlags, OptFlags.Trammel )) gen += GenerateEntry( "Trammel" );
if (GetOptFlag( m_GlobalFlags, OptFlags.TramDungeons )) gen += GenerateEntry( "Trammel Dungeons" );
if (GetOptFlag( m_GlobalFlags, OptFlags.Felucca )) gen += GenerateEntry( "Felucca" );
if (GetOptFlag( m_GlobalFlags, OptFlags.FelDungeons )) gen += GenerateEntry( "Felucca Dungeons" );
if (GetOptFlag( m_GlobalFlags, OptFlags.PublicMoongates)) gen += GenerateEntry( "Public Moongates" );
if (GetOptFlag( m_GlobalFlags, OptFlags.Ilshenar)) gen += GenerateEntry( "Ilshenar" );
if (GetOptFlag( m_GlobalFlags, OptFlags.IlshenarShrines)) gen += GenerateEntry( "Ilshenar Shrines" );
if (GetOptFlag( m_GlobalFlags, OptFlags.Malas) && Core.AOS) gen += GenerateEntry( "Malas" );
if (GetOptFlag( m_GlobalFlags, OptFlags.Tokuno) && Core.SE) gen += GenerateEntry( "Tokuno" );
if (GetOptFlag( m_GlobalFlags, OptFlags.TerMur) && Core.SA) gen += GenerateEntry( "TerMur" );
gen += GenerateEntry( "Thanimur" );
gen += GenerateEntry( "Sosaria" );
//gen += GenerateEntry( "Sosaria Dungeons" );
if (GetOptFlag( m_GlobalFlags, OptFlags.Custom)) gen += GenerateEntry( "Custom" );

return gen;
}

2. Comment out the entire listing where it calls for the GenerateMapListing for the facet you do not want. Then be sure to change the "GenerateMapListing" number and "addpagebutton" number for of all the maps following after whatever you turn off. So for example, if "Sosaria Dungeons" GenerateMapListing is 13 and you turn it off, change the next entry(s) from 14 to 13 for both GenerateMapListing and AddPageButton.

// if ( WO.SosDungeons && m_Reds )
// {
// GenerateMapListing( 13 );
// AddPageButton( "Sosaria Dungeons", Map.Sosaria, p++, 13 );
// }

if ( WO.Custom )
{
GenerateMapListing( 13 );
AddPageButton( "<basefont color=#FFFFFF>Custom Locations</basefont>", null, p++, 13 );
}

There is a lot more cleanup you can do, but that will disable a facet.
 
Thanks for the reply, I was going by the comments in the beginning of the script for the settings. Could I also just change the settings below from true to false to disable them?

//Global Default Flags for WorldOmniGen: 0x1FF
if ( m_GlobalFlags == OptFlags.None )
{
SetOptFlag( ref m_GlobalFlags, OptFlags.Trammel, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.TramDungeons, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.Felucca, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.FelDungeons, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.PublicMoongates, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.Ilshenar, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.IlshenarShrines, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.Malas, Core.AOS );
SetOptFlag( ref m_GlobalFlags, OptFlags.Tokuno, Core.SE );
SetOptFlag( ref m_GlobalFlags, OptFlags.TerMur, Core.SA );
//SetOptFlag( ref m_GlobalFlags, OptFlags.Thanimur, true );
//SetOptFlag( ref m_GlobalFlags, OptFlags.Sosaria, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.Custom, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.UseGlobal, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_OnlyAllowYoung, false );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_FeluccaNoYoung, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_DungeonsNoYoung, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_AllPayToUse, false );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_SkillsCost, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_KarmaDiscount, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_DelayAfterUse, false );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_PayBeforeDelay, false );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_PetsMayTravel, true );
SetOptFlag( ref m_GlobalFlags, OptFlags.WO_PetsMustPay, false );
 
I don't think so, but you can set one to false and see what happens. I am at work and do not have access to my servuo scripts from here to verify. If I remember correctly those enable options on the gates like pets must pay, karma, no young etc.. I don't think they disable pages in the gump, but I could be wrong on that. Last night was the first time in ages that I have looked at this script so if daat99 made it easy with a true/false flag that wouldn't suprise me...
 
In using the [props to turn off certain menus, such as Trammel Dungeons or Felucca Dungeons, it also turns off the Trammel and Felucca towns respectively. Turning off Public Moongates turns off Tokuno as well and there are several other options that when you turn them off or on will affect other options as well. Anyone else having this issue? I am using the latest Repo and current client.

I have seen this happen when a script goes through many changes, where the behavior will change in unexpected ways. Part of this might have to do with the bitwise operations we use to get and set flags. The flags all have to provide unique values which is why they were set up the way they were originally. I am not sure who may have added or changed flag values in the last couple years, but I have a working version that does not remove Tokuno when you disable Public Moongates. I also have no problem using the [props method of changing things on the fly.

What happens (or should happen) is this: I set the Tokuno option to false. It immediately removes that option from the menu on ALL omniporters, no matter which omniporter I edit. If I [props one of them, and set the "UseGlobal" value to false, now any edits I make to that one ONLY affect that one, not all of them. The fun or interesting thing about setting the "UseGlobal" value is that setting one of them to false will not set all of them to false, just that one.
 
Any way to set these up as items the players can carry and use as well? We have the World Teleporter book as well, but for some reason all the custom entries send players to Trammel town entries instead.
 
Any way to set these up as items the players can carry and use as well? We have the World Teleporter book as well, but for some reason all the custom entries send players to Trammel town entries instead.

Sure - add a "do nothing" zero parameter constructor to the script, dupe it, make it movable.
 
Last edited:
We tried that. All that managed to do was crash the server any time we tried to use the teleporter from the backpack.

There are plenty of Travel Maps, Master Runebooks, etc. already coded. Let me know if you have trouble finding one. I think someone on these forums has posted some. :D
 
We tried that. All that managed to do was crash the server any time we tried to use the teleporter from the backpack.

After you wrote this, I tried it myself and crashed my server also. The crash report shows "Index was outside the bounds of the array". It's late for me to play with this but after looking into the WorldOmniporter.cs it seems to me that the script not only reads your destination point but also the point of entry, and since the duped WO in your backpack is not a listed point of entry or exit it crashes the server.
 
There are plenty of Travel Maps, Master Runebooks, etc. already coded. Let me know if you have trouble finding one. I think someone on these forums has posted some. :D

We ended up using a seperate world travel book. I was just hoping we could use the omniporter so we wouldn't have to update two different scripts. It's not that big of a deal, but it's the extra work involved. I'm always trying to find ways to lower the maintenance work involved. :p
 
Hi all anyone ever got this?
Server Crash Report
===================

ServUO Version 0.5, Build 6613.20291
Operating System: Unix 4.9.0.5
.NET Framework: 4.0.30319.42000
Time: 2/8/2018 6:54:53 PM
Mobiles: 199152
Items: 2075944
Exception:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Server.Items.WorldOmniporterGump.SourceEntry (Server.Mobile from) [0x00007] in <1fc22363cd364c6aa9c5577777b4a876>:0
at Server.Items.WorldOmniporterGump.DoTravel (Server.Mobile from) [0x00000] in <1fc22363cd364c6aa9c5577777b4a876>:0
at Server.Items.WorldOmniporterGump.OnResponse (Server.Network.NetState state, Server.Gumps.RelayInfo info) [0x0048b] in <1fc22363cd364c6aa9c5577777b4a876>:0
at Server.Network.PacketHandlers.DisplayGumpResponse (Server.Network.NetState state, Server.Network.PacketReader pvSrc) [0x00250] in <186d2c531ee2482f8471a476b457e0a7>:0
at Server.Network.MessagePump.HandleReceive (Server.Network.NetState ns) [0x001e6] in <186d2c531ee2482f8471a476b457e0a7>:0
at Server.Network.MessagePump.Slice () [0x00057] in <186d2c531ee2482f8471a476b457e0a7>:0
at Server.Core.Main (System.String[] args) [0x00571] in <186d2c531ee2482f8471a476b457e0a7>:0
 
Hi all anyone ever got this?
Server Crash Report
===================

ServUO Version 0.5, Build 6613.20291
Operating System: Unix 4.9.0.5
.NET Framework: 4.0.30319.42000
Time: 2/8/2018 6:54:53 PM
Mobiles: 199152
Items: 2075944
Exception:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Server.Items.WorldOmniporterGump.SourceEntry (Server.Mobile from) [0x00007] in <1fc22363cd364c6aa9c5577777b4a876>:0
at Server.Items.WorldOmniporterGump.DoTravel (Server.Mobile from) [0x00000] in <1fc22363cd364c6aa9c5577777b4a876>:0
at Server.Items.WorldOmniporterGump.OnResponse (Server.Network.NetState state, Server.Gumps.RelayInfo info) [0x0048b] in <1fc22363cd364c6aa9c5577777b4a876>:0
at Server.Network.PacketHandlers.DisplayGumpResponse (Server.Network.NetState state, Server.Network.PacketReader pvSrc) [0x00250] in <186d2c531ee2482f8471a476b457e0a7>:0
at Server.Network.MessagePump.HandleReceive (Server.Network.NetState ns) [0x001e6] in <186d2c531ee2482f8471a476b457e0a7>:0
at Server.Network.MessagePump.Slice () [0x00057] in <186d2c531ee2482f8471a476b457e0a7>:0
at Server.Core.Main (System.String[] args) [0x00571] in <186d2c531ee2482f8471a476b457e0a7>:0

Yes. Depending on which server you are using, there may be more or fewer possible maps, skills, etc. Running this in Debug mode would give us the exact line of code causing the problem.
 
Yes. Depending on which server you are using, there may be more or fewer possible maps, skills, etc. Running this in Debug mode would give us the exact line of code causing the problem.
Cool how to run debug mode on Linux? :)
 
Back