Welcome.
For several days we are working on our server over Docktown aka Sea Market (HS). However, we have some doubt - that's why I turn to you for advice. We have created a separate region for the purposes of this location, set the NPCs, blocked the mark, gate travel, recall and sacred journey to get to this point was only possible by boat journey. We would like, however, that all ships which will be located in the Sea Market - as is the official servers - after some time (on the official servers, it is 10 minutes) were moved outside the region (so they do not block the possibility of reaching the Sea Market to other players ).

Does anyone of you may already remade something similar in the scripts (the displacement of the ship after a certain time to a different area or out of the area)?
Thanks for each advice.
 
Just a thought off the top of my head, but I would try something with 'DateTime.UtcNow + TimeSpan.FromMinutes(10.0)' or something.
Then when it becomes time, possibly move the player and put the dry docked boat in the players bank.
If there are more than one boat and players to move, then the boats could get crowded and messed up.
So that's why I would move the player and dry dock the boat
 
Thanks for your post JBob
Also, I was thinking about a dry dock after a certain time but I came to the conclusion that it could be a problem with players who have the items in the cargohold of his ship. Probably for this reason (and bankbox items limit), EA resigned from the dry dock for the vessel's movements outside the Sea Market region.
 
An interesting problem to be figured out for sure.. Seems you would really need a massive area selected for the re location area. It would seem you would also need this system ability to check any new location area to the size of the said ship, too, so not to plop it somewhere that is partly over land tile OR even half across another ship!.

If you defined a large region in open ocean around that Sea Market, and had the Re Locator method compare the ship's size for a tile Rect, and had it check its re located area in the re location zones, it would prevent ships from getting overlap at least, and you wouldnt HAVE to have a pure ocean area defined.. It could have bits of land within the region rect, I mean.

I think that would bee needed to be done correctly, and I am pretty certain the checks are already in place like IsValid something or another. Just a matter of calling them in the new relocation method.

I could see this actually being used around most all Docks around the world really.. and easy to implement to other spots, once the relocation method is ironed out :) Could just define a near by open area of ocean to any Dock, and have it toss out ships that park more than X amount of time :)
 
This is just a way I'd do it, Once you enter the region I'd present a gump to the person saying that you are storing the ship, and give them a "receipt", then relocate the boat to something the players don't use (GA for example). Tie the boat to the receipt, then let that work like the dry dock kind of thing.
 
Below, I've included the lines of the region Sea Market in my file regions.xml and modification in the mark.cs file (blocking access via spells to this location). A simple fix but perhaps it useful to you at work on the sea market on your servers.

regions.cs (felucca regions)
<region priority="50" name="Huntsman's Forest">
<rect x="1595" y="550" width="120" height="120" />
</region>
<!--End-->
// Sea market Region addon
<region name="SeaMarket">
<rect x="4510" y="2290" width="101" height="152" />
<music name="tavern04" />
</region>
// End of Sea Market region

<region type="TownRegion" priority="50" name="Cove">
<rect x="2200" y="1110" width="50" height="50" />
<rect x="2200" y="1160" width="86" height="86" />
<go x="2275" y="1210" z="0" />
<music name="Cove" />
</region>

Mark.cs (recall rune target)
public void Target(RecallRune rune)
{
if (!this.Caster.CanSee(rune))
{
this.Caster.SendLocalizedMessage(500237); // Target can not be seen.
}
else if (this.Caster.Region.Name == "SeaMarket")
{
this.Caster.SendMessage("You cannot mark rune in Sea Market area.");
}

else if (this.Caster.Region.Name == "Underworld Entrance")
{
this.Caster.SendMessage("You cannot mark rune in Underworld Entrance area.");
}
else if (!SpellHelper.CheckTravel(this.Caster, TravelCheckType.Mark))
{
}
else if (SpellHelper.CheckMulti(this.Caster.Location, this.Caster.Map, !Core.AOS))
{
this.Caster.SendLocalizedMessage(501942); // That location is blocked.
}
else if (!rune.IsChildOf(this.Caster.Backpack))
{
this.Caster.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1062422); // You must have this rune in your backpack in order to mark it.
}
else if (this.CheckSequence())
{
rune.Mark(this.Caster);

this.Caster.PlaySound(0x1FA);
Effects.SendLocationEffect(this.Caster, this.Caster.Map, 14201, 16);
}

this.FinishSequence();
}

I'm afraid that due to the possibility of having stuff by the players in his ship cargo holds (which would be problematic at dry dock), the movement of the ship would be the most secure solution. Even if this would be moving only to the border of Sea Market region (specially for this purpose, I enlarged it a bit)
 
Last edited:
Our players sailed on board all four galleons and at the moment I have not noticed any major problems. Except maybe a little slow - in my opinion - change the position of the vessel relative to the nearby mainland in 2D, but in 3D it looks better now. I do not know, however, whether the cannon installed on board ships operate in a completely full range in a correct way. Naval guns, components and files responsible for the fight (created by Regnak), we have also implemented in scripts but we checked them in the coming days. .

I noticed only one thing to correction. Perhaps the problem occurred because the vessel to which it relates, belonged to GM. After a standard period of decay galleon remained in port Sea Market, and began to sink when our GM came on his board.
 
Last edited:
Back