Date: October 26, 2023 Subject: Modding Mechanics, File Structures, and Memory Management in Second Edition (v2.00)
In the context of GTA San Andreas modding, FLA stands for Function Library for Additions, or more commonly, FLA - a scripting plugin format created by Russian modders (particularly "FYP" and the community at libertycity.ru) in the late 2000s.
An .fla file is a compiled dynamic library that works similarly to a CLEO script but is loaded by a specialized ASI loader plugin called FLA.asi or FlaLoader.asi. Think of FLA as a bridge for v2.00 before CLEO fully supported it. gta sa v2.00 cleo fla files
This paper explores the technical intricacies of modifying Grand Theft Auto: San Andreas (GTA SA) version 2.00 using the CLEO library and the Fastman92 Limit Adjuster (FLA). Unlike the widely documented version 1.0, version 2.00 presents significant architectural differences, including an altered memory layout and the removal of debugging symbols. This document details how CLEO scripts (.cs) interact with the game’s memory and how FLA configuration files (.fla) circumvent hardcoded engine limits to expand game capabilities, providing a guide for stability and compatibility.
.flaCLEO folder (or sometimes FLA folder, depending on loader).weaponmod.fla – Modify weapon properties.carspawn.fla – Spawn vehicles via hotkey.nobuildinglimits.fla – Remove map object limits.A "long feature" in CLEO means a script that runs continuously in the background using loops with wait commands. Example structure: Anatomy of an FLA File
// FLA/CLEO script - Long-running feature $CLEO .cs 0000:while true wait 0 // prevents crash, allows other scripts to run
if Player.Defined(0) then // Your long feature code here // Example: Auto-refill health when below 50 0223: set_actor_health $PLAYER_ACTOR to 100 end
end
Early CLEO versions (1.x, 2.x, 3.x) were hardcoded to look for memory addresses specific to gta_sa.exe v1.0. When you tried to install CLEO 3.0 on v2.00, the game would: File extension:
.cs scripts.Why? Because v2.00 shifted thousands of memory addresses. The function that CLEO uses to hook into the game loop (the CTheScripts::Process method) lives at a different location in v2.00 than in v1.0.