Editing Server:Boats

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 54: Line 54:
These are the opcodes used by the TAKP client, but actual opcode values changed many times over the years.  Several versions of these opcodes can be found in the TAKP source repository.
These are the opcodes used by the TAKP client, but actual opcode values changed many times over the years.  Several versions of these opcodes can be found in the TAKP source repository.


=== Boat Debugging ===
=== Logsys Categories ===
GM characters can observe player profile packets showing boats being boarded/departed by setting debug logging for Boats database, and they can also observe numerous other data about the boat's arrivals and departures, positions, grids, etc... via quest scripts associated with those Boats.  To enable this information, see [[#Database_Settings]] below.
GM characters can observe player profile packets showing boats being boarded/departed by setting debug logging in the database:


==== Database Settings ====
==== Database ====
<pre>
<pre>
UPDATE logsys_categories SET log_to_gmsay = '3' WHERE log_category_description = 'Boats';
UPDATE logsys_categories SET log_to_gmsay = '3' WHERE log_category_description = 'Boats';
Line 104: Line 104:
zone/npc.h and zone/npc.cpp:
zone/npc.h and zone/npc.cpp:


The following is found in the NPC:: namespace:
<pre>
<pre>
bool NPC::IsBoat()
bool NPC::IsBoat()
Line 110: Line 111:
}
}
</pre>
</pre>
From the context of NPC namespace, you can check if an NPC is a boat both in C++ server source and via LUA quest scripting.


zone/mob.h and zone/mob.cpp:
zone/mob.h and zone/mob.cpp:
Line 119: Line 119:
}
}
</pre>
</pre>
From the context of MOB namespace, you can check if an NPC is a boat both in C++ server source and via LUA quest scripting.
 
 


zone/client.h
zone/client.h
Line 134: Line 135:
                              // the boat timeout period.
                              // the boat timeout period.
</pre>
</pre>
These functions are also exposed via LUA quest scripting.


zone/client_packet.h
zone/client_packet.h
Line 142: Line 142:
void Handle_OP_LeaveBoat(const EQApplicationPacket *app);
void Handle_OP_LeaveBoat(const EQApplicationPacket *app);
</pre>
</pre>
If you need to customize behavior when clients send packets indicating interaction with boats.


zone/command.h:
zone/command.h:
Line 151: Line 150:
</pre>
</pre>


zone/entity.h:
<pre>
void GetBoatInfo(Client* client);
uint8 GetClientCountByBoatNPCID(uint32 boatid);
uint8 GetClientCountByBoatID(uint32 entityid);
</pre>
zone/lua_parser_events.h
zone/lua_parser_events.h
<pre>
<pre>
Line 242: Line 235:
INSERT INTO `grid_entries` (`gridid`, `zoneid`, `number`, `x`, `y`, `z`, `heading`, `pause`, `centerpoint`) VALUES (16, 68, 11, 3595, 491, -11.9, 0, 0, 0);
INSERT INTO `grid_entries` (`gridid`, `zoneid`, `number`, `x`, `y`, `z`, `heading`, `pause`, `centerpoint`) VALUES (16, 68, 11, 3595, 491, -11.9, 0, 0, 0);
</pre>
</pre>
==== Complete Example ====
The following is a complete example of database changes that were needed to implement the four shuttles leaving BB docks to the Maiden's Voyage in Timorous Deep:
* https://github.com/EQMacEmu/Server/blob/main/utils/sql/git/required/2023_12_29_BB_to_TD_Shuttles.sql


=== LUA Scripting ===
=== LUA Scripting ===
Line 253: Line 242:
* event_waypoint_arrive
* event_waypoint_arrive
* event_waypoint_depart
* event_waypoint_depart
* event_enter_zone
* event_board_boat
* event_leave_boat
=== Functions ===
* GetBoatNPCID()
* e.self:GetBoatName()
* e.self:SetBoatID(uint32 boatid);
* e.self:SetBoatName(const char* boatname);
void SendToBoat(bool messageonly)
* ent:GetBoatID() or e.self:GetBoatID()
This function can be used from the entity or player namespace, and usually to compare to an integer boatid value.


==== Example Scripts ====
==== Example Scripts ====
Line 279: Line 254:
* https://github.com/EQMacEmu/quests/blob/main/timorous/Maidens_Voyage.lua  
* https://github.com/EQMacEmu/quests/blob/main/timorous/Maidens_Voyage.lua  
* https://github.com/EQMacEmu/quests/blob/main/timorous/Muckskimmer.lua
* https://github.com/EQMacEmu/quests/blob/main/timorous/Muckskimmer.lua
* https://github.com/EQMacEmu/quests/blob/main/timorous/player.lua
* https://github.com/EQMacEmu/quests/blob/main/firiona/player.lua
* https://github.com/EQMacEmu/quests/blob/main/oasis/player.lua
* https://github.com/EQMacEmu/quests/blob/main/butcher/player.lua
* https://github.com/EQMacEmu/quests/blob/main/freporte/player.lua
* https://github.com/EQMacEmu/quests/blob/main/qeynos/player.lua
* https://github.com/EQMacEmu/quests/blob/main/erudnext/player.lua

Please note that all contributions to The Al`Kabor Project Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see The Al'Kabor Project Wiki:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)