• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Need Help Is it possible to add famous ships sail arround the specific islands with accurate captains??

Barbossa gave a fucking fight
Both at sea and on the deck
It was the most epic battle I ever had in the game
In the captain's cabin I and will ended up against the barbossa and the guy almost kills me and will
But it was fucking epic.
I doubt that davy jones and the black beard will give half the fight he gave
 
Hello Guys I am new here ... and i want to ask Is it possible to add famous ships sail arround the specific islands with accurate captains?? For example Jack Sparrow and his Black Pearl.
 
Very possible. Not too difficult either.

Wasn't someone already doing that for himself not too long ago?
@Grey Roger, do you remember?
 
is it this???
//Tutorial

ch.old.name = "Blackbeard";
ch.old.lastname = "";
ch.name = TranslateString("","Blackbeard");
ch.lastname = TranslateString("","");
ch.id = "Blackbeard";
ch.model = "Blackbeard";
ch.sex = "man";
ch.location = "IslaDeMuerte_shore_03";
ch.location.group = "goto";
ch.location.locator = "goto2";
ch.Dialog.Filename = "Blackbeard_dialog.c";
ch.nation = PIRATE;
ch.Ship.Name = "Queen Anne's Revenge";
ch.Ship.Type = "QueenAnnesRevenge";
ch.Ship.Stopped = true;
ch.Flags.Pirate = 5;
ch.Flags.Pirate.texture = 0;
ch.Flags.Personal = 2;
ch.Flags.Personal.texture = 0;
ch.Dialog.Filename = "Blackbeard_dialog.c";
ch.nation = PIRATE;
GiveItem2Character(ch, "Blade_Triton");
ch.equip.blade = "Blade_Triton";
ch.rank = 100;
ch.HPBonus = 500;
ch.reputation = "10";
ch.experience = "0";
ch.skill.Leadership = "10";
ch.skill.Fencing = "10";
ch.skill.Sailing = "10";
ch.skill.Accuracy = "10";
ch.skill.Cannons = "10";
ch.skill.Grappling = "10";
ch.skill.Repair = "10";
ch.skill.Defence = "10";
ch.skill.Commerce = "10";
ch.skill.Sneak = "10";
ch.perks.list.BasicDefence = true;
ch.perks.list.AdvancedDefence = true;
ch.perks.list.SwordplayProfessional = true;
ch.perks.list.CriticalHit = true;
ch.perks.list.Rush = true;
ch.money = "1";
ch.quest.meeting = "0";
LAi_SetImmortal(ch, true); // PB
LAi_SetCivilianPatrolType(ch); // KK
LAi_NoRebirthEnable(ch);
LAi_SetLoginTime(ch, 0.0, 24.0);
AddGameCharacter(n, ch);

and then??
 
Last edited:
That's indeed very close.
I think you just need to add some "location" attributes for the ship as well.
See if you can figure that out; if not, hopefully @Grey Roger can find some time tomorrow to explain it in more detail.
 
I don't know how to add a ship so that it always appears. Normally I set up encounters for specific quests at the time that the ship is needed.

Presumably you'd add some attributes in the character's definition to give the ship's location. You'll need to familiarise yourself with TOOL so you can find a valid sea location for the ship.
 
I don't know how to add a ship so that it always appears. Normally I set up encounters for specific quests at the time that the ship is needed.
I think if you set ch.location = "[*INSERT ISLAND ID*]"; , that may be enough.
If it isn't that, then it is something very similar.
 
Would you not need a specific locator at the island? Especially if you want to have to look for the ship, rather than have it automatically spawn next to you as soon as you approach the island.
 
I use
SetCharacterShipLocation(characterFromID("gm_crew15"), "Kristiania_port");
in StartStoryline.c
The ship ends up on the first free loctor of the "ships_other" type. Not sure how to get it on a specific loctor though.
 
I use
SetCharacterShipLocation(characterFromID("gm_crew15"), "Kristiania_port");
in StartStoryline.c
The ship ends up on the first free loctor of the "ships_other" type. Not sure how to get it on a specific loctor though.
That is indeed the way to do it when you want a ship visible from shore. :onya

I think @Ivanusiker wanted the ship to sail around in 3D Sailing Mode, though.
 
Have a look at "PROGRAM\Storyline\Assassin\quests\quests_reaction.c", specifically at case "rocheship". At this point in the storyline, Roche Brasiliano's ship is placed near a random island and the player's job is to search the whole Caribbean to find it. You'll presumably be placing your ship at a specific island, not a random one, but the various cases for the various islands should give you some valid locators on which to place your ship, as well as the code structure needed to put the ship there.
 
Is it this???

case "rocheship":
switch(rand(15))
{
case 0:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "QuebradasCostillas", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 1:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "FalaiseDeFleur", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 2:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Aruba", "Quest_Ships","Quest_Ship_8");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 3:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Eleuthera", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 4:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Turks", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 5:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Antigua", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 6:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "SaintMartin", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 7:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Guadeloupe", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 8:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Hispaniola", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 9:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Cayman", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 10:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "KhaelRoa", "Quest_Ships","Quest_Ship_8");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 11:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Douwesen", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 12:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Conceicao", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 13:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Oxbay", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 14:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "IslaMuelle", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;

case 15:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "Redmond", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;
}
break;
 
That's the one. You'll note how each case has the 'Group_CreateGroup', 'Group_AddCharacter', 'Group_SetGroupCommander' and 'Group_SetAddress' lines. The difference is that 'Group_SetAddress' line; that's where the ship is placed. If the island where you want your character is not one of these, you'll need to use TOOL to find a suitable locator. For that matter, even if the island you want to use is one of these, you may want to use TOOL to find where the ship is being placed, in case you want your ship to be somewhere else.
 
And where to place for example this lines ??

case "rocheship":
switch(rand(15))
{
case 0:
Group_CreateGroup("Roche_Ship");
Group_AddCharacter("Roche_Ship", "Roche Brasiliano");
Group_SetGroupCommander("Roche_Ship", "Roche Brasiliano");
Group_SetAddress("Roche_Ship", "QuebradasCostillas", "Quest_Ships","Quest_Ship_9");

Pchar.quest.Meet_Rocheship.win_condition.l1 = "NPC_Death";
Pchar.quest.Meet_Rocheship.win_condition.l1.character = "Roche Brasiliano";
Pchar.quest.Meet_Rocheship.win_condition = "capture_roche";
break;
 
For one thing, you won't need the switch unless your ship also is to be placed at a random choice of island. Also, rename everything! The case names, ship group name and character name all refer to Roche Brasiliano, a character in the "Assassin" storyline.

As to where this piece of code goes - I can not answer that as I know nothing of the rest of your code. If you want the ship to be placed right at the start of the game then you could add something like this into "StartStoryline.c":
Code:
Group_CreateGroup("Pearl");
Group_AddCharacter("Pearl", "Jack Sparrow");
Group_SetGroupCommander("Pearl", "Jack Sparrow");
Group_SetAddress("Pearl", "QuebradasCostillas", "Quest_Ships","Quest_Ship_9");
That should put the Black Pearl somewhere near Nevis. If you want something specific to happen after you've sunk or captured the Black Pearl then you can add:
Code:
Pchar.quest.Defeated_Pearl.win_condition.l1 = "NPC_Death";
Pchar.quest.Defeated_Pearl.win_condition.l1.character = "Jack Sparrow";
Pchar.quest.Defeated_Pearl.win_condition = "Defeated_Pearl";
And then, in "quests_reaction.c", or in "PROGRAM\QUESTS\quests_side.c" if this is a sidequest in a FreePlay game, define case "Defeated_Pearl" to do whatever you want to happen as a result.
 
Back
Top