Difference between revisions of "Server:Boats"

From The Al`Kabor Project Wiki
Jump to navigation Jump to search
Line 1: Line 1:
For TAKP server, the boats use spawn conditions and are timed with grids.  If a grid is timed too short or too long, players will either get dropped off in the water or players will end up at the safe spot in the destination zone.  Boat zones need to be static.
For TAKP server, the boats use spawn conditions and are timed with grids.  If a grid is timed too short or too long, players will either get dropped off in the water or players will end up at the safe spot in the destination zone.  Boat zones need to be static.


== Server Source ==
== Server-Side Source ==
The following boats and their ID's are described in the server source code:
The following boats and their ID's are described in the server source code:
https://github.com/EQMacEmu/Server/blob/main/common/eq_constants.h#L685
https://github.com/EQMacEmu/Server/blob/main/common/eq_constants.h#L685
Line 24: Line 24:
</pre>
</pre>


Implementing a boat is achieved via entries to the database and the LUA scripting engineBoat ID's are stored in the player profile packet (pp.boatname and pp.boatid).
Each time a client enters a zone, the server checks the client packet's player profile struct for a boatid > 0 and whether the client is currently in Timorous Deep or Firionia VieIf this is true, the boatid in the player profile struct is set back to 0.
<pre>void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app)</pre>
* See https://github.com/SecretsOTheP/EQMacEmu/blob/19d8a526e4f5e5f3900abe1b6e2d51c4b8ecff8c/zone/client_packet.cpp#L1693


== Database Settings ==
Boat ID's are stored in the player profile packet (pp.boatname and pp.boatid).
 
 
== Boat Route Implementations ==
Implementing a boat is achieved via entries to the database and the LUA scripting engine.
 
=== Database Settings ===
The following database tables are used:
The following database tables are used:
* spawn2
* spawn2
Line 35: Line 43:
* npc_types.boatid
* npc_types.boatid


== LUA Scripting ==
=== LUA Scripting ===


=== Events ===
==== Events ====
* event_spawn
* event_spawn
* event_waypoint_arrive
* event_waypoint_arrive


=== Example Scripts ===
==== Example Scripts ====
* https://github.com/EQMacEmu/quests/blob/main/oasis/Barrel_Barge.lua
* https://github.com/EQMacEmu/quests/blob/main/oasis/Barrel_Barge.lua
* https://github.com/EQMacEmu/quests/blob/main/oasis/Muckskimmer.lua
* https://github.com/EQMacEmu/quests/blob/main/oasis/Muckskimmer.lua

Revision as of 19:47, 29 December 2023

For TAKP server, the boats use spawn conditions and are timed with grids. If a grid is timed too short or too long, players will either get dropped off in the water or players will end up at the safe spot in the destination zone. Boat zones need to be static.

Server-Side Source

The following boats and their ID's are described in the server source code: https://github.com/EQMacEmu/Server/blob/main/common/eq_constants.h#L685

//These are NPCIDs in the database. All of these boats send a BoardBoat opcode when boarded.
enum Boats
{
    Stormbreaker = 770, //freporte-oot-butcherblock
    SirensBane  = 771,
    Sea_King = 772, //erudext-erudsxing-qeynos
    Golden_Maiden  = 773,
    Maidens_Voyage  = 838, //timorous-firiona
    Bloated_Belly = 839, //timorous-overthere
    Barrel_Barge = 840, //Shuttle timorous-oasis
    Muckskimmer = 841,
    Sabrina = 24056, //Shuttle in Erud
    Island_Shuttle = 96075, //Shuttle to Elf docks in timorous
    Captains_Skiff = 842, //Shuttle timorous-butcherblock
    Icebreaker = 110083, //iceclad
    pirate_runners_skiff = 843 //Shuttle iceclad-nro
}; 

Each time a client enters a zone, the server checks the client packet's player profile struct for a boatid > 0 and whether the client is currently in Timorous Deep or Firionia Vie. If this is true, the boatid in the player profile struct is set back to 0.

void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app)

Boat ID's are stored in the player profile packet (pp.boatname and pp.boatid).


Boat Route Implementations

Implementing a boat is achieved via entries to the database and the LUA scripting engine.

Database Settings

The following database tables are used:

  • spawn2
  • spawngroup
  • spawn_conditions
  • grid_entries
  • grid
  • npc_types.boatid

LUA Scripting

Events

  • event_spawn
  • event_waypoint_arrive

Example Scripts