Custom Train Tracks: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
m (→‎Issues: add possible solution to one issue)
m (→‎Development: add file listing to get a better understanding of the code)
Line 39: Line 39:
bool track:setLength(float length) -- setTrackLength(track, float length)
bool track:setLength(float length) -- setTrackLength(track, float length)
</syntaxhighlight>
</syntaxhighlight>
=== Findings ===
All information related custom train tracks are stored here.
<section name="Files" show="true">
<syntaxhighlight lang="lua">
MTA10/game_sa
** CTrainTrackManagerSA.{cpp,h}
** CTrainTrackSA.{cpp,h}
MTA10/mods/shared_logic
** CClientTrainTrack.{cpp,h}
** luadefs/CLuaTrainTrackDefs.{cpp,h} -- contain definitions for the Lua API
MTA10/sdk/game
** CTrainTrack.h
** CTrainTrackManager.h
MTA10_Server/mods/deathmatch/logic
** CTrainTrackManager.{cpp,h}
** CTrainTrack.{cpp,h}
** luadefs/CLuaTrainTrackDefs.{cpp,h} -- contain definitions for the Lua API
</syntaxhighlight>
</section>


=== Issues ===
=== Issues ===

Revision as of 20:48, 14 July 2016

This branch makes it possible to make your own train tracks.

Status Work in progress
Branch custom-train-tracks
Branch version 1.6

Functions

Media

Development

API

-- trainNode is a Vector3, or table of three coordinates
-- nodes is a table of trainNodes

track = TrainTrack(...nodes) -- createTrack(node1, node2, node3, ...)

-- Default track functions
TrainTrack.removeDefault(int trackID)
TrainTrack.resetDefault(int trackID)

-- These functions already exist, but I'm not sure how these lengths are used or what they are for
float track:getLength() -- getTrainTrack(track)
bool track:setLength(float length) -- setTrackLength(track, float length)

Findings

All information related custom train tracks are stored here.

Click to collapse [-]
Files
MTA10/game_sa
** CTrainTrackManagerSA.{cpp,h}
** CTrainTrackSA.{cpp,h}

MTA10/mods/shared_logic
** CClientTrainTrack.{cpp,h}
** luadefs/CLuaTrainTrackDefs.{cpp,h} -- contain definitions for the Lua API

MTA10/sdk/game
** CTrainTrack.h
** CTrainTrackManager.h

MTA10_Server/mods/deathmatch/logic
** CTrainTrackManager.{cpp,h}
** CTrainTrack.{cpp,h}
** luadefs/CLuaTrainTrackDefs.{cpp,h} -- contain definitions for the Lua API

Issues

  • There may be some issues (relating to infinite loops) if a track runs across another or crosses another
    • Infinite loop occurs at 006f8fda, see call stack. Occurs when a track of two nodes have same x/y, but different z. Only occurs for tracks that ONLY consist of nodes atop each other.
      • Possible solution: when creation tracks, ensure that atleast one of the nodes has a different x/y to any other node.
  • Tracks may not be cleaned up
  • int CWorldSA::FindClosestRailTrackNode needs updating. It needs to use MAX_TOTAL_TRACKS and the train manager. See 09e3ee8f25810c17742

Re-merge

Status Abandoned
Branch custom-train-tracks-old (renamed from custom-train-tracks)
Branch version 1.4

The old custom-train-tracks branch contains commits cherry-picked and other merges from the 1.4 branch. The first task in updating this branch is to distinguish between merge commits and actual branch commits:

This means that there are only four commits that need to be merged into the new branch. There is currently a packet issue introduced by the merge that needs to be fixed.