amx is a software package that allows the execution of unmodified San Andreas: MultiPlayer 0.2.2 gamemodes, filterscripts and plugins on Multi Theft Auto: San Andreas 1.0 servers. It is open source, and a prebuilt binary for Windows is available.
amx is free and open source. You are allowed to use and modify it free of charge in any way you please.
-
You are allowed to redistribute (modified) versions of amx, provided that you:
-
-
do not charge for them,
-
keep the original credits and licence intact,
-
clearly list any modifications you made, and
-
do not present them as an official version.
-
-
-
Compatibility
-
Compatibility is quite high:
-
-
Almost all SA-MP scripting functions and callbacks are implemented.
-
Database functions (db_*) are implemented.
-
SA-MP server plugins work unmodified.
-
SA-MP style rcon commands are available from the server console and the ingame console.
-
-
See Limitations for a list of features that are currently missing.
-
-
Extra features
-
Apart from being compatible, amx also offers a number of extra features:
-
-
Scriptfiles of a gamemode can not only be placed in a central folder like in SA-MP, they will also be detected when placed in the gamemode's folder. This means that files of different gamemodes are kept apart and can no longer conflict: you can have several gamemodes that use the same file names, and be assured they won't overwrite each other's files.
-
New native scripting functions (include a_amx.inc to use these):
In addition to these new native functions, gamemodes run in amx can also call Lua scripts. Lua scripts can in turn call public Pawn functions.
-
-
Using Lua not only gives you access to the wide range of MTA functions that offer a lot of functionality that SA-MP doesn't have, but also allows you to write code in a much more comfortable and efficient fashion than Pawn. For example, while Pawn is a subset of C and requires you to create a temporary buffer and call one or more functions to concatenate strings, you can simply do str1 = str2 .. str3 in Lua.
-
-
You can load plugins dynamically, while the server is running. Use the loadplugin console command for this.
-
-
-
Installation
-
amx consists of a binary server module (.dll/.so) and a Lua resource. It will only run on MTA:SA 1.0 and later. Installation steps are lined out below.
-
Extracting
-
Extract the "mods" folder into your MTA "server" directory.
-
-
Configuration
-
-
Open server/mods/deathmatch/mtaserver.conf in a text editor. Add the following line within the <config> node:
- <modulesrc="king.dll"/>
-
(Use "king.so" on Linux systems). This will instruct the MTA server to load the module on startup.
-
-
At this point you can add the amx resource to the autostart list if you want. Doing this will allow you to use SA-MP style rcon commands in the server console as soon as the server is started.
- <resourcesrc="amx"startup="1"protected="0"/>
-
Save and close mtaserver.conf.
-
-
Give amx the necessary permissions. Open server/mods/deathmatch/acl.xml and add the following within the root <acl> node:
Migrating gamemodes, filterscripts, plugins from an SA-MP server
-
If you have an SA-MP server with a number of modes and scripts that you would like to host on your MTA server, you can easily migrate these with an automated tool. For Windows, a graphical click-through wizard is provided: amxdeploy.exe (.NET Framework 2.0 required). For Linux there is an interactive Perl script: amxdeploy.pl. Simply run the tool appropriate for your operating system and follow the instructions. The tool will:
-
-
install the selected SA-MP gamemodes and filterscripts as MTA resources,
-
copy the selected plugins to MTA,
-
copy all scriptfiles to MTA,
-
set up the MTA mapcycler resource according to the gamemode cycling configuration in SA-MP's server.cfg, and
-
set up the autostart filterscripts and plugins according to SA-MP's server.cfg.
-
-
-
Special note for Linux users infamiliar with Perl
-
amxdeploy.pl uses some modules that are not part of a standard Perl installation. These are:
-
-
File::Copy::Recursive
-
XML::Twig
-
-
If you don't have these yet, you need to install them before you can run the script. To do this, open a terminal, switch to root and start cpan. If this is the first time you start cpan, it will walk you through some configuration (selection of download mirrors etc.). After it's set up, type install <modname> for each module to download and install it, for example: install XML::Twig.
-
-
Once the modules are installed you should be able to run the script without problems: perl amxdeploy.pl.
-
-
Maintenance of your MTA server
-
The migration tool is mainly meant for moving over files from an SA-MP server to a fresh amx install. To add SA-MP content to your MTA server at a later point, you probably want to take the manual route. Information about this is lined out below.
-
-
In SA-MP, there is one folder that contains all gamemodes and another that contains all filterscripts. In MTA, it is the convention to create a separate resource (i.e. folder) for each gamemode. amx follows the MTA convention for better integration, which means that a resource needs to be created for each gamemode and filterscript. The naming convention for these is amx-name for gamemodes and amx-fs-name for filterscripts.
-
So, to add a new gamemode or filterscript, you create a folder in server/mods/deathmatch/resources/, place one or more .amx files and any external files ("scriptfiles") in it, and add an appropriate meta.xml. Alternatively you can dump all scriptfiles together in server/mods/deathmatch/resources/amx/scriptfiles, SA-MP style.
-
The meta.xml files of gamemodes and filterscripts are slightly different. Two resources, amx-test and amx-fs-test, are included with the amx download as examples. Most times you can simply copy-paste these to a new resource and adjust the names in it.
-
-
To specify what filterscripts to autostart when amx loads, open server/mods/deathmatch/resources/amx/meta.xml and edit the "filterscripts" setting. Its value is a list of filterscript names separated by spaces. For example:
This will start the resources amx-fs-adminspec and amx-fs-vactions.
-
-
-
Plugins go in server/mods/deathmatch/resources/amx/plugins. Additionally you need to specify what plugins to load when amx starts: open server/mods/deathmatch/resources/amx/meta.xml and edit the "plugins" setting. Its value consists of the names of the plugins to start, separated by spaces. For example:
- <settingname="plugins"value="irc sampmysql"/>
-
This will load irc.dll and sampmysql.dll on Windows, or .so on Linux.
-
-
-
jbeta's mapcycler resource (shipped with the MTA server) is used for automatic map cycling. The cycling is configured in server/mods/deathmatch/resources/mapcycler/mapcycle.xml. For each gamemode, add a line like this:
-
- <gamemode="amx"map="amx-name"rounds="1"/>
-
-
By default, the gamemodes are run in the order in which they appear in the list; you can also opt to randomly select the next mode from the list by setting the type attribute of the root <cycle> node to "shuffle".
-
Automatic cycling will only happen when the mapcycler resource is started. You can start it manually (start mapcycler) or add it to the autostart list of your server (mtaserver.conf). If mapcycler is not started, amx will let players vote on the next mode instead.
-
-
-
Finishing up
-
-
If you are planning to compile Pawn scripts that use the new native functions provided by amx, place a_amx.inc in your Pawno "include" directory.
-
You are done!
-
-
-
Running gamemodes and filterscripts
-
Before you can run sa-mp modes or filterscripts, you need to start the amx resource. Type this command in the server console or as admin in the ingame console:
- start amx
-
Alternatively you can add it to the autostart list of your server, in mtaserver.conf. Once amx is started you can use the following commands to start and stop gamemodes and filterscripts:
- start amx-name
-stop amx-name
-start amx-fs-name
-stop amx-fs-name
-
Alternatively, you can use the SA-MP style changemode and (un)loadfs commands. At most one gamemode can be running at any time, the number of running filterscripts is unlimited.
-
-
Go ahead and try starting the example gamemode (amx-test) and filterscript (amx-fs-test).
-
-
New Pawn scripting functions
-
Here follows a quick reference for the new Pawn native functions amx introduces. To use them, #include <a_amx> in Pawno.
-
-
AddPlayerClothes
- native AddPlayerClothes ( playerid, type, index );
-
Applies the specified clothing to a player. See the clothes page for a list of valid type and index ID's. Note: this function only has a visible effect on players with the CJ skin.
-
-
GetPlayerClothes
- native GetPlayerClothes ( playerid, type );
-
Returns the clothes index of the specified type which the player is currently wearing. See the clothes page for a list of valid type and index ID's. Note: the returned value is only relevant for players with the CJ skin.
-
-
RemovePlayerClothes
- native RemovePlayerClothes ( playerid, type );
-
Removes the specified clothing from a player. See the clothes page for a list of valid type ID's. Note: this function only has a visible effect on players with the CJ skin.
Sets the velocity of a vehicle. Make it jump or suddenly come to a halt.
-
-
SetVehicleModel
- native SetVehicleModel ( vehicleid, model )
-
Changes the model of a vehicle; more practical than destroying and recreating it.
-
-
lua
- native lua (const fnName[], {Float,_}:... );
-
Calls a Lua function. The function must be defined in a .lua file in the same resource as the calling .amx, and must have been registered earlier with amxRegisterLuaPrototypes. See also Pawn-Lua interaction.
-
-
Example:
- new playerid = lua("luaTestfn1", 1.3, "Test string");
-
-
Registers prototypes for public functions that can be subsequently called from Lua scripts with pawn. The prototype list must be terminated with an empty string. See also Pawn-Lua interaction.
-
-
This example code registers two functions. The first one takes a float and a string argument and returns a player ID, the second takes a player ID and returns nothing:
Retrieves the amx version as a floating point number, e.g. 1.3.
-
-
amxVersionString
- native amxVersionString ( buffer[], size );
-
Retrieves the complete amx version string.
-
-
-
New Lua scripting functions
-
A number of new Lua functions were also introduced.
-
-
pawn
- variant pawn (string fnName, ... )
-
Calls a Pawn function. The function must be public, must be defined in an .amx file in the same resource as the calling .lua, and must have been registered earlier with amxRegisterPawnPrototypes.
-
-
Example:
- local player = pawn('pawnTestfn1', 0.5, 'Test string')
-
-
amxIsPluginLoaded
- bool amxIsPluginLoaded (string pluginName )
-
Checks if a specific SA-MP server plugin is currently loaded. pluginName is the name of the plugin without a file extension.
Registers prototypes of Lua functions that can subsequently be called from a Pawn script with lua. See also Pawn-Lua interaction.
-
-
The following example code registers two functions - the first one takes a float and a string argument and returns a player element, the second takes a player element and returns nothing:
Returns the amx version as a floating point number, for example 1.3.
-
-
amxVersionString
- string amxVersionString ()
-
Returns the complete amx version string.
-
-
-
New MTA events
-
amx also provides events for detecting when .amx files are loaded and unloaded.
-
-
onAMXStart
- onAMXStart (resource res, string amxName )
-
Triggered when an .amx file has just finished loading and initializing. The source of this event is the root element of the resource containing the .amx file. res is the resource pointer to this resource. amxName is the name of the .amx file minus the extension.
-
-
You should only call pawn after this event has triggered; if you call it in the main body of a Lua script, .amx files won't have registered their functions yet.
-
-
onAMXStop
- onAMXStop (resource res, string amxName )
-
Triggered when an .amx file was unloaded. The source of this event is the root element of the resource containing the .amx file. res is the resource pointer to this resource. amxName is the name of the .amx file minus the extension.
-
-
-
Pawn-Lua interaction
-
amx allows developers to enrich their gamemodes and other scripts with Lua code, which is easier and more efficient to write than Pawn. To make this possible, a new Pawn function, lua was added to call Lua functions, and a Lua function called pawn correspondingly calls public Pawn functions.
-
-
A resource that uses the interaction functions will contain both one or more .amx files (<amx/> in meta.xml) and serverside MTA scripts (<script/>). Both Pawn and Lua scripts can only call other-language scripts that are in the same resource.
-
-
Registering prototypes
-
Before you can call a function with lua or pawn you need to define its prototype, which consists of the types of its arguments and return value. Each type corresponds to a single letter:
-
-
-
-
Letter
Type
-
-
-
b
boolean
-
i
integer
-
f
floating point
-
s
string
-
p
player
-
v
vehicle
-
o
object
-
u
pickup
-
-
-
-
Pawn functions are registered with amxRegisterPawnPrototypes, Lua functions with amxRegisterLuaPrototypes. Both functions associate a number of function names with their argument types and (optionally) return type. To specify a return type, prepend the function name with the type letter followed by a colon (:), for example: f:testfn. If you do not specify a return type (i.e. only specify the name, testfn), "i" will be assumed.
-
See the syntax sections of the two registration functions for the precise syntax to use.
-
-
Calling other-language functions
-
Use lua to call a Lua function from Pawn, and pawn to call a Pawn function from Lua. The functions have the same syntax: a string containing the name of the function, followed by the arguments to the function. amx takes care of any necessary argument and return value conversions: for example an .amx vehicle ID passed to lua will arrive in the Lua function as an MTA vehicle element, and vice versa (provided the correct prototype was registered for the Lua function).
-
-
Passing arguments by reference
-
It is possible to pass arguments by-reference from Pawn to Lua - however this is not possible in the opposite direction.
-
To make an argument be passed by reference, modifications in both the Lua function's prototype and body are necessary. In the prototype, prepend the type letter with a &. In the function's code, write _[argname] instead of argname for reading and writing the argument (argname holds the memory address in the .amx of the argument).
-
-
Limitations
-
Some limitations apply to cross-language calling.
-
-
Only scalar values (numbers, players, vehicles...) and strings can be passed as arguments; Pawn arrays and Lua tables are not supported.
-
Functions can only return scalar values (no strings or other arrays).
-
As stated in the previous section, by-reference arguments can only be passed from Pawn to Lua, not from Lua to Pawn.
-
-
-
Example
-
This example code demonstrates registering prototypes and calling other-language functions, with arguments passed by value and by reference.
- #include <a_samp>
-#include <a_amx>
-
-main(){
- new prototypes[][] = {
- "p:testfn", {"p", "f", "s"},
- ""
- };
- amxRegisterPawnPrototypes(prototypes);
-}
-
-public testfn(playerid, Float:f, str[]){
- printf("pawn> testfn: %d %.1f %s", playerid, f, str);
- return playerid;
-}
-
-public OnGameModeInit(){
- new vehicleid = CreateVehicle(415, 0.0, 0.0, 3.0, -90.0, 0, 1, 5000);
- new vehicletype = 0;
- // vehicletype is passed by reference
- new success = lua("getVehicleType", vehicleid, vehicletype, "Test text from Pawn");
- if(success)
- printf("pawn> Vehicle type: %d", vehicletype);
-
- SetGameModeText("Blank Script");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- return 1;
-}
-
-public OnPlayerRequestClass(playerid, classid){
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
-}
-
-
- function getVehicleType(vehicle, pVehicleType, str)
- print('lua> ' .. str)
- print('lua> ' .. _[pVehicleType])
- local model = getElementModel(vehicle)
- if model then
- _[pVehicleType] = model
- return true
- else
- return false
- end
-end
-
-addEventHandler('onAMXStart', root,
- function()
- -- Note that we are calling pawn() from the onAMXStart event instead of
- -- in the main script body. Calling it from the main body would fail as
- -- the Pawn functions have not yet been registered at that point.
- local player = pawn('testfn', getRandomPlayer(), 0.8, 'Test string from Lua')
- if player then
- print('lua> ' .. getClientName(player))
- else
- print('lua> No random player')
- end
- end
-)
-
-amxRegisterLuaPrototypes({
- ['b:getVehicleType'] = {'v', '&i', 's'}
-})
-
-
Sample output of this code:
- lua> Test text from Pawn
-lua> 0
-pawn> Vehicle type: 415
-pawn> testfn: 1 0.8 Test string from Lua
-lua> arc_
-
-
Limitations
-
Even though amx offers a high level of compatibility, not everything is perfect. Below is a list of limitations that may or may not be addressed in later versions of amx and Multi Theft Auto.
-
-
The following scripting functions are currently not implemented and will have no effect when called: AllowAdminTeleport, AllowInteriorWeapons, AllowPlayerTeleport, DisableInteriorEnterExits, EnableStuntBonusForAll, EnableStuntBonusForPlayer, EnableTirePopping (tire popping is always on), EnableZoneNames, LimitGlobalChatRadius, PlayerPlaySound, SendDeathMessage (use the "killmessages" resource on your server instead for graphical death messages), SetDeathDropAmount, SetDisabledWeapons, SetEchoDestination, SetNameTagDrawDistance, SetPlayerDisabledWeapons, SetTeamCount, SetVehicleNumberPlate, ShowPlayerNameTagForPlayer, TextDrawSetProportional, UsePlayerPedAnims.
-
Story character skins (Big Smoke, Ten Penny etc.) are currently not available in MTA. amx will replace these by lookalike skins until they are added.
-
-
-
Author and thanks
-
amx was developed by arc_. Special thanks go out to:
-
-
Everyone who tested or participated in group tests during development, especially MeKorea who quite literally tried out every mode and filterscript he could find. His testing brought a large number of minor and not so minor flaws to light which could then be fixed.
-
The MTA team, for providing such a tremendous platform to develop on. Thanks to MTA I got to know the amazingly fast yet powerful scripting language Lua, and got a good bunch of C++ practice as well.
-
-
-
diff --git a/amx-fs-test/testfs.pwn b/amx-fs-test/testfs.pwn
index 12dee5a..e47fe9c 100644
--- a/amx-fs-test/testfs.pwn
+++ b/amx-fs-test/testfs.pwn
@@ -1,5 +1,4 @@
#include
-#include
main()
{
@@ -18,4 +17,3 @@ public OnFilterScriptExit()
return 1;
}
-
diff --git a/amx-test/pawno/include/a_actor.inc b/amx-test/pawno/include/a_actor.inc
new file mode 100644
index 0000000..eda5712
--- /dev/null
+++ b/amx-test/pawno/include/a_actor.inc
@@ -0,0 +1,34 @@
+/* SA-MP Actor Functions
+ *
+ * (c) Copyright 2015, SA-MP Team
+ *
+ */
+
+#if defined _actor_included
+ #endinput
+#endif
+#define _actor_included
+#pragma library actors
+
+native CreateActor(modelid, Float:X, Float:Y, Float:Z, Float:Rotation);
+native DestroyActor(actorid);
+
+native IsActorStreamedIn(actorid, forplayerid);
+
+native SetActorVirtualWorld(actorid, vworld);
+native GetActorVirtualWorld(actorid);
+
+native ApplyActorAnimation(actorid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time);
+native ClearActorAnimations(actorid);
+
+native SetActorPos(actorid, Float:X, Float:Y, Float:Z);
+native GetActorPos(actorid, &Float:X, &Float:Y, &Float:Z);
+native SetActorFacingAngle(actorid, Float:ang);
+native GetActorFacingAngle(actorid, &Float:ang);
+
+native SetActorHealth(actorid, Float:health);
+native GetActorHealth(actorid, &Float:health);
+native SetActorInvulnerable(actorid, invulnerable = true);
+native IsActorInvulnerable(actorid);
+
+native IsValidActor(actorid);
\ No newline at end of file
diff --git a/amx-test/pawno/include/a_amx.inc b/amx-test/pawno/include/a_amx.inc
index 5643da0..f45a97d 100644
--- a/amx-test/pawno/include/a_amx.inc
+++ b/amx-test/pawno/include/a_amx.inc
@@ -20,6 +20,7 @@ forward OnBotConnect(botid, name[]);
forward OnBotEnterVehicle(botid, vehicleid, seatid);
forward OnBotExitVehicle(botid, vehicleid);
forward OnBotDeath(botid, killerid, weaponid, bodypart);
+forward OnBotStateChange(botid, newstate, oldstate);
forward OnVehicleDamage(vehicleid, Float:loss);
forward OnPlayerShootingPlayer(playerid, attackerid, bodypart, Float:loss);
forward OnPlayerWeaponSwitch(playerid, previousWeaponID, currentWeaponID);
diff --git a/amx-test/pawno/include/a_objects.inc b/amx-test/pawno/include/a_objects.inc
index f83bda6..0d93064 100644
--- a/amx-test/pawno/include/a_objects.inc
+++ b/amx-test/pawno/include/a_objects.inc
@@ -1,6 +1,6 @@
/* SA-MP Object Functions
*
- * (c) Copyright 2005-2012, SA-MP Team
+ * (c) Copyright 2005-2015, SA-MP Team
*
*/
@@ -20,6 +20,8 @@ native SetObjectPos(objectid, Float:X, Float:Y, Float:Z);
native GetObjectPos(objectid, &Float:X, &Float:Y, &Float:Z);
native SetObjectRot(objectid, Float:RotX, Float:RotY, Float:RotZ);
native GetObjectRot(objectid, &Float:RotX, &Float:RotY, &Float:RotZ);
+native GetObjectModel(objectid);
+native SetObjectNoCameraCol(objectid);
native IsValidObject(objectid);
native DestroyObject(objectid);
native MoveObject(objectid, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX = -1000.0, Float:RotY = -1000.0, Float:RotZ = -1000.0);
@@ -35,6 +37,8 @@ native SetPlayerObjectPos(playerid, objectid, Float:X, Float:Y, Float:Z);
native GetPlayerObjectPos(playerid, objectid, &Float:X, &Float:Y, &Float:Z);
native SetPlayerObjectRot(playerid, objectid, Float:RotX, Float:RotY, Float:RotZ);
native GetPlayerObjectRot(playerid, objectid, &Float:RotX, &Float:RotY, &Float:RotZ);
+native GetPlayerObjectModel(playerid, objectid);
+native SetPlayerObjectNoCameraCol(playerid, objectid);
native IsValidPlayerObject(playerid, objectid);
native DestroyPlayerObject(playerid, objectid);
native MovePlayerObject(playerid, objectid, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX = -1000.0, Float:RotY = -1000.0, Float:RotZ = -1000.0);
@@ -65,4 +69,6 @@ native SetObjectMaterial(objectid, materialindex, modelid, txdname[], texturenam
native SetPlayerObjectMaterial(playerid, objectid, materialindex, modelid, txdname[], texturename[], materialcolor=0);
native SetObjectMaterialText(objectid, text[], materialindex = 0, materialsize = OBJECT_MATERIAL_SIZE_256x128, fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
-native SetPlayerObjectMaterialText(playerid, objectid, text[], materialindex = 0, materialsize = OBJECT_MATERIAL_SIZE_256x128, fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
\ No newline at end of file
+native SetPlayerObjectMaterialText(playerid, objectid, text[], materialindex = 0, materialsize = OBJECT_MATERIAL_SIZE_256x128, fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
+
+native SetObjectsDefaultCameraCol(disable);
\ No newline at end of file
diff --git a/amx-test/pawno/include/a_players.inc b/amx-test/pawno/include/a_players.inc
index 719a0b6..953dbdb 100644
--- a/amx-test/pawno/include/a_players.inc
+++ b/amx-test/pawno/include/a_players.inc
@@ -1,6 +1,6 @@
/* SA-MP Player Functions
*
- * (c) Copyright 2005-2012, SA-MP Team
+ * (c) Copyright 2005-2015, SA-MP Team
*
*/
@@ -78,6 +78,7 @@ native SetPlayerAmmo(playerid, weaponslot, ammo);
native GetPlayerAmmo(playerid);
native GetPlayerWeaponState(playerid);
native GetPlayerTargetPlayer(playerid);
+native GetPlayerTargetActor(playerid);
native SetPlayerTeam(playerid, teamid);
native GetPlayerTeam(playerid);
native SetPlayerScore(playerid,score);
@@ -121,6 +122,7 @@ native SetPlayerSkillLevel(playerid, skill, level);
native GetPlayerSurfingVehicleID(playerid);
native GetPlayerSurfingObjectID(playerid);
native RemoveBuildingForPlayer(playerid, modelid, Float:fX, Float:fY, Float:fZ, Float:fRadius);
+native GetPlayerLastShotVectors(playerid, &Float:fOriginX, &Float:fOriginY, &Float:fOriginZ, &Float:fHitPosX, &Float:fHitPosY, &Float:fHitPosZ);
// Attached to bone objects
@@ -175,7 +177,7 @@ native GetPVarType(playerid, varname[]);
#define MAX_CHATBUBBLE_LENGTH 144
native SetPlayerChatBubble(playerid, text[], color, Float:drawdistance, expiretime);
-// Player controls
+// Player control
native PutPlayerInVehicle(playerid, vehicleid, seatid);
native GetPlayerVehicleID(playerid);
native GetPlayerVehicleSeat(playerid);
@@ -188,6 +190,7 @@ native GetPlayerAnimationIndex(playerid); // return the index of any running app
native GetAnimationName(index, animlib[], len1, animname[], len2); // get the animation lib/name for the index
native GetPlayerSpecialAction(playerid);
native SetPlayerSpecialAction(playerid,actionid);
+native DisableRemoteVehicleCollisions(playerid, disable);
// Player world/map related
native SetPlayerCheckpoint(playerid, Float:x, Float:y, Float:z, Float:size);
@@ -219,6 +222,13 @@ native SetCameraBehindPlayer(playerid);
native GetPlayerCameraPos(playerid, &Float:x, &Float:y, &Float:z);
native GetPlayerCameraFrontVector(playerid, &Float:x, &Float:y, &Float:z);
native GetPlayerCameraMode(playerid);
+native EnablePlayerCameraTarget(playerid, enable);
+native GetPlayerCameraTargetObject(playerid);
+native GetPlayerCameraTargetVehicle(playerid);
+native GetPlayerCameraTargetPlayer(playerid);
+native GetPlayerCameraTargetActor(playerid);
+native Float:GetPlayerCameraAspectRatio(playerid);
+native Float:GetPlayerCameraZoom(playerid);
native AttachCameraToObject(playerid, objectid);
native AttachCameraToPlayerObject(playerid, playerobjectid);
native InterpolateCameraPos(playerid, Float:FromX, Float:FromY, Float:FromZ, Float:ToX, Float:ToY, Float:ToZ, time, cut = CAMERA_CUT);
@@ -257,4 +267,7 @@ native StartRecordingPlayerData(playerid, recordtype, recordname[]);
native StopRecordingPlayerData(playerid);
native SelectTextDraw(playerid, hovercolor); // enables the mouse so the player can select a textdraw
-native CancelSelectTextDraw(playerid); // cancel textdraw selection with the mouse
\ No newline at end of file
+native CancelSelectTextDraw(playerid); // cancel textdraw selection with the mouse
+
+// Explosion
+native CreateExplosionForPlayer(playerid, Float:X, Float:Y, Float:Z, type, Float:Radius);
\ No newline at end of file
diff --git a/amx-test/pawno/include/a_samp.inc b/amx-test/pawno/include/a_samp.inc
index d54373a..be183e5 100644
--- a/amx-test/pawno/include/a_samp.inc
+++ b/amx-test/pawno/include/a_samp.inc
@@ -1,6 +1,6 @@
/* SA-MP Functions
*
- * (c) Copyright 2005-2012, SA-MP Team
+ * (c) Copyright 2005-2015, SA-MP Team
*
*/
@@ -23,14 +23,17 @@
#include
#include
#include
+#include
#include
// Limits and internal constants
#define MAX_PLAYER_NAME (24)
-#define MAX_PLAYERS (500)
+#define MAX_PLAYERS (1000)
#define MAX_VEHICLES (2000)
+#define MAX_ACTORS (1000)
#define INVALID_PLAYER_ID (0xFFFF)
#define INVALID_VEHICLE_ID (0xFFFF)
+#define INVALID_ACTOR_ID (0xFFFF)
#define NO_TEAM (255)
#define MAX_OBJECTS (1000)
#define INVALID_OBJECT_ID (0xFFFF)
@@ -58,7 +61,8 @@ native SendClientMessage(playerid, color, const message[]);
native SendClientMessageToAll(color, const message[]);
native SendPlayerMessageToPlayer(playerid, senderid, const message[]);
native SendPlayerMessageToAll(senderid, const message[]);
-native SendDeathMessage(killer,killee,weapon);
+native SendDeathMessage(killer, killee, weapon);
+native SendDeathMessageToPlayer(playerid, killer, killee, weapon);
native GameTextForAll(const string[],time,style);
native GameTextForPlayer(playerid,const string[],time,style);
native SetTimer(funcname[], interval, repeating);
@@ -68,10 +72,36 @@ native GetTickCount();
native GetMaxPlayers();
native CallRemoteFunction(const function[], const format[], {Float,_}:...);
native CallLocalFunction(const function[], const format[], {Float,_}:...);
+native Float:VectorSize(Float:x, Float:y, Float:z);
native Float:asin(Float:value);
native Float:acos(Float:value);
native Float:atan(Float:value);
native Float:atan2(Float:x, Float:y);
+native GetPlayerPoolSize();
+native GetVehiclePoolSize();
+native GetActorPoolSize();
+
+// Hash
+native SHA256_PassHash(password[], salt[], ret_hash[], ret_hash_len); // SHA256 for password hashing
+
+// Server wide persistent variable system (SVars)
+native SetSVarInt(varname[], int_value);
+native GetSVarInt(varname[]);
+native SetSVarString(varname[], string_value[]);
+native GetSVarString(varname[], string_return[], len);
+native SetSVarFloat(varname[], Float:float_value);
+native Float:GetSVarFloat(varname[]);
+native DeleteSVar(varname[]);
+
+// SVar enumeration
+#define SERVER_VARTYPE_NONE 0
+#define SERVER_VARTYPE_INT 1
+#define SERVER_VARTYPE_STRING 2
+#define SERVER_VARTYPE_FLOAT 3
+
+native GetSVarsUpperIndex();
+native GetSVarNameAtIndex(index, ret_varname[], ret_len);
+native GetSVarType(varname[]);
// Game
native SetGameModeText(const string[]);
@@ -79,7 +109,7 @@ native SetTeamCount(count);
native AddPlayerClass(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
native AddPlayerClassEx(teamid, modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
native AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2);
-native AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay);
+native AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay, addsiren=0);
native AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, virtualworld = 0);
native CreatePickup(model, type, Float:X, Float:Y, Float:Z, virtualworld = 0);
native DestroyPickup(pickup);
@@ -114,12 +144,32 @@ native Kick(playerid);
native Ban(playerid);
native BanEx(playerid, const reason[]);
native SendRconCommand(command[]);
-native GetServerVarAsString(const varname[], buffer[], len);
-native GetServerVarAsInt(const varname[]);
-native GetServerVarAsBool(const varname[]);
native GetPlayerNetworkStats(playerid, retstr[], retstr_size);
native GetNetworkStats(retstr[], retstr_size);
native GetPlayerVersion(playerid, const version[], len); // Returns the SA-MP client revision as reported by the player
+native BlockIpAddress(ip_address[], timems);
+native UnBlockIpAddress(ip_address[]);
+
+// Deprecated:
+native GetServerVarAsString(const varname[], buffer[], len);
+native GetServerVarAsInt(const varname[]);
+native GetServerVarAsBool(const varname[]);
+// These are the same 3 functions as above although they avoid the name ambiguity/conflict with the SVar system.
+native GetConsoleVarAsString(const varname[], buffer[], len);
+native GetConsoleVarAsInt(const varname[]);
+native GetConsoleVarAsBool(const varname[]);
+
+// Extended admin network stats
+native GetServerTickRate();
+native NetStats_GetConnectedTime(playerid);
+native NetStats_MessagesReceived(playerid);
+native NetStats_BytesReceived(playerid);
+native NetStats_MessagesSent(playerid);
+native NetStats_BytesSent(playerid);
+native NetStats_MessagesRecvPerSecond(playerid);
+native Float:NetStats_PacketLossPercent(playerid);
+native NetStats_ConnectionStatus(playerid);
+native NetStats_GetIpPort(playerid, ip_port[], ip_port_len);
// Menu
native Menu:CreateMenu(const title[], columns, Float:x, Float:y, Float:col1width, Float:col2width = 0.0);
@@ -185,10 +235,12 @@ native DeletePlayer3DTextLabel(playerid, PlayerText3D:id);
native UpdatePlayer3DTextLabelText(playerid, PlayerText3D:id, color, text[]);
// Player GUI Dialog
-#define DIALOG_STYLE_MSGBOX 0
-#define DIALOG_STYLE_INPUT 1
-#define DIALOG_STYLE_LIST 2
-#define DIALOG_STYLE_PASSWORD 3
+#define DIALOG_STYLE_MSGBOX 0
+#define DIALOG_STYLE_INPUT 1
+#define DIALOG_STYLE_LIST 2
+#define DIALOG_STYLE_PASSWORD 3
+#define DIALOG_STYLE_TABLIST 4
+#define DIALOG_STYLE_TABLIST_HEADERS 5
native ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);
@@ -319,7 +371,7 @@ forward OnEnterExitModShop(playerid, enterexit, interiorid);
forward OnVehiclePaintjob(playerid, vehicleid, paintjobid);
forward OnVehicleRespray(playerid, vehicleid, color1, color2);
forward OnVehicleDamageStatusUpdate(vehicleid, playerid);
-forward OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat);
+forward OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z, Float:vel_x, Float:vel_y, Float:vel_z);
forward OnPlayerSelectedMenuRow(playerid, row);
forward OnPlayerExitedMenu(playerid);
forward OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
@@ -330,12 +382,18 @@ forward OnPlayerStreamIn(playerid, forplayerid);
forward OnPlayerStreamOut(playerid, forplayerid);
forward OnVehicleStreamIn(vehicleid, forplayerid);
forward OnVehicleStreamOut(vehicleid, forplayerid);
+forward OnActorStreamIn(actorid, forplayerid);
+forward OnActorStreamOut(actorid, forplayerid);
forward OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
-forward OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid);
-forward OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid);
+forward OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
+forward OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart);
+forward OnPlayerGiveDamageActor(playerid, damaged_actorid, Float:amount, weaponid, bodypart);
forward OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ);
forward OnPlayerClickTextDraw(playerid, Text:clickedid);
forward OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
+forward OnIncomingConnection(playerid, ip_address[], port);
+forward OnTrailerUpdate(playerid, vehicleid);
+forward OnVehicleSirenStateChange(playerid, vehicleid, newstate);
#define CLICK_SOURCE_SCOREBOARD 0
forward OnPlayerClickPlayer(playerid, clickedplayerid, source);
@@ -357,4 +415,12 @@ Float:fScaleX, Float:fScaleY, Float:fScaleZ );
forward OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ);
+#define BULLET_HIT_TYPE_NONE 0
+#define BULLET_HIT_TYPE_PLAYER 1
+#define BULLET_HIT_TYPE_VEHICLE 2
+#define BULLET_HIT_TYPE_OBJECT 3
+#define BULLET_HIT_TYPE_PLAYER_OBJECT 4
+
+forward OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
+
// --------------------------------------------------
\ No newline at end of file
diff --git a/amx-test/pawno/include/a_sampdb.inc b/amx-test/pawno/include/a_sampdb.inc
index acb1e56..00f0366 100644
--- a/amx-test/pawno/include/a_sampdb.inc
+++ b/amx-test/pawno/include/a_sampdb.inc
@@ -1,8 +1,7 @@
- /* SA-MP Native SQLite Database Functions
- *
- * (c) Copyright 2007, SA-MP Team
- *
- */
+// SA-MP Native SQLite Database Functions
+//
+// (c) Copyright 2015, SA-MP Team
+//
#if defined _sampdb_included
#endinput
@@ -12,11 +11,20 @@
native DB:db_open(name[]);
native db_close(DB:db);
-native DBResult:db_query(DB:db,query[]);
+native DBResult:db_query(DB:db, query[]);
native db_free_result(DBResult:dbresult);
native db_num_rows(DBResult:dbresult);
native db_next_row(DBResult:dbresult);
native db_num_fields(DBResult:dbresult);
native db_field_name(DBResult:dbresult, field, result[], maxlength);
native db_get_field(DBResult:dbresult, field, result[], maxlength);
-native db_get_field_assoc(DBResult:dbresult, const field[], result[], maxlength);
\ No newline at end of file
+native db_get_field_int(DBResult:result, field = 0);
+native Float:db_get_field_float(DBResult:result, field = 0);
+native db_get_field_assoc(DBResult:dbresult, const field[], result[], maxlength);
+native db_get_field_assoc_int(DBResult:result, const field[]);
+native Float:db_get_field_assoc_float(DBResult:result, const field[]);
+native db_get_mem_handle(DB:db);
+native db_get_result_mem_handle(DBResult:result);
+
+native db_debug_openfiles();
+native db_debug_openresults();
\ No newline at end of file
diff --git a/amx-test/pawno/include/a_vehicles.inc b/amx-test/pawno/include/a_vehicles.inc
index ebac749..267ff45 100644
--- a/amx-test/pawno/include/a_vehicles.inc
+++ b/amx-test/pawno/include/a_vehicles.inc
@@ -30,7 +30,7 @@
#define VEHICLE_PARAMS_ON 1
// Vehicle
-native CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay);
+native CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren=0);
native DestroyVehicle(vehicleid);
native IsVehicleStreamedIn(vehicleid, forplayerid);
native GetVehiclePos(vehicleid, &Float:x, &Float:y, &Float:z);
@@ -43,6 +43,11 @@ native SetVehicleParamsForPlayer(vehicleid,playerid,objective,doorslocked);
native ManualVehicleEngineAndLights();
native SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
native GetVehicleParamsEx(vehicleid, &engine, &lights, &alarm, &doors, &bonnet, &boot, &objective);
+native GetVehicleParamsSirenState(vehicleid);
+native SetVehicleParamsCarDoors(vehicleid, driver, passenger, backleft, backright);
+native GetVehicleParamsCarDoors(vehicleid, &driver, &passenger, &backleft, &backright);
+native SetVehicleParamsCarWindows(vehicleid, driver, passenger, backleft, backright);
+native GetVehicleParamsCarWindows(vehicleid, &driver, &passenger, &backleft, &backright);
native SetVehicleToRespawn(vehicleid);
native LinkVehicleToInterior(vehicleid, interiorid);
native AddVehicleComponent(vehicleid, componentid);
diff --git a/amx-test/pawno/include/streamer.inc b/amx-test/pawno/include/streamer.inc
deleted file mode 100644
index ae6d87b..0000000
--- a/amx-test/pawno/include/streamer.inc
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * Copyright (C) 2012 Incognito
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include
-
-// Definitions
-
-#define STREAMER_TYPE_OBJECT (0)
-#define STREAMER_TYPE_PICKUP (1)
-#define STREAMER_TYPE_CP (2)
-#define STREAMER_TYPE_RACE_CP (3)
-#define STREAMER_TYPE_MAP_ICON (4)
-#define STREAMER_TYPE_3D_TEXT_LABEL (5)
-#define STREAMER_TYPE_AREA (6)
-
-#define STREAMER_AREA_TYPE_CIRCLE (0)
-#define STREAMER_AREA_TYPE_RECTANGLE (1)
-#define STREAMER_AREA_TYPE_SPHERE (2)
-#define STREAMER_AREA_TYPE_CUBE (3)
-#define STREAMER_AREA_TYPE_POLYGON (4)
-
-#define STREAMER_OBJECT_TYPE_GLOBAL (0)
-#define STREAMER_OBJECT_TYPE_PLAYER (1)
-#define STREAMER_OBJECT_TYPE_DYNAMIC (2)
-
-#if !defined FLOAT_INFINITY
- #define FLOAT_INFINITY (Float:0x7F800000)
-#endif
-
-// Include File Version
-
-public Streamer_IncludeFileVersion = 0x26105;
-
-#pragma unused Streamer_IncludeFileVersion
-
-// Enumerator
-
-enum
-{
- E_STREAMER_ATTACHED_OBJECT,
- E_STREAMER_ATTACHED_PLAYER,
- E_STREAMER_ATTACHED_VEHICLE,
- E_STREAMER_ATTACH_OFFSET_X,
- E_STREAMER_ATTACH_OFFSET_Y,
- E_STREAMER_ATTACH_OFFSET_Z,
- E_STREAMER_ATTACH_R_X,
- E_STREAMER_ATTACH_R_Y,
- E_STREAMER_ATTACH_R_Z,
- E_STREAMER_ATTACH_X,
- E_STREAMER_ATTACH_Y,
- E_STREAMER_ATTACH_Z,
- E_STREAMER_COLOR,
- E_STREAMER_DRAW_DISTANCE,
- E_STREAMER_EXTRA_ID,
- E_STREAMER_INTERIOR_ID,
- E_STREAMER_MAX_X,
- E_STREAMER_MAX_Y,
- E_STREAMER_MAX_Z,
- E_STREAMER_MIN_X,
- E_STREAMER_MIN_Y,
- E_STREAMER_MIN_Z,
- E_STREAMER_MODEL_ID,
- E_STREAMER_MOVE_R_X,
- E_STREAMER_MOVE_R_Y,
- E_STREAMER_MOVE_R_Z,
- E_STREAMER_MOVE_SPEED,
- E_STREAMER_MOVE_X,
- E_STREAMER_MOVE_Y,
- E_STREAMER_MOVE_Z,
- E_STREAMER_NEXT_X,
- E_STREAMER_NEXT_Y,
- E_STREAMER_NEXT_Z,
- E_STREAMER_PLAYER_ID,
- E_STREAMER_R_X,
- E_STREAMER_R_Y,
- E_STREAMER_R_Z,
- E_STREAMER_SIZE,
- E_STREAMER_STREAM_DISTANCE,
- E_STREAMER_STYLE,
- E_STREAMER_TEST_LOS,
- E_STREAMER_TYPE,
- E_STREAMER_WORLD_ID,
- E_STREAMER_X,
- E_STREAMER_Y,
- E_STREAMER_Z
-}
-
-// Natives (Settings)
-
-native Streamer_TickRate(rate);
-native Streamer_MaxItems(type, items);
-native Streamer_VisibleItems(type, items);
-native Streamer_CellDistance(Float:distance);
-native Streamer_CellSize(Float:size);
-
-// Natives (Updates)
-
-native Streamer_ProcessActiveItems();
-native Streamer_ToggleIdleUpdate(playerid, toggle);
-native Streamer_ToggleItemUpdate(playerid, type, toggle);
-native Streamer_Update(playerid);
-native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);
-
-// Natives (Data Manipulation)
-
-native Streamer_GetFloatData(type, {Text3D,_}:id, data, &Float:result);
-native Streamer_SetFloatData(type, {Text3D,_}:id, data, Float:value);
-native Streamer_GetIntData(type, {Text3D,_}:id, data);
-native Streamer_SetIntData(type, {Text3D,_}:id, data, value);
-native Streamer_GetArrayData(type, {Text3D,_}:id, data, dest[], maxlength = sizeof dest);
-native Streamer_SetArrayData(type, {Text3D,_}:id, data, const src[], maxlength = sizeof src);
-native Streamer_IsInArrayData(type, {Text3D,_}:id, data, value);
-native Streamer_AppendArrayData(type, {Text3D,_}:id, data, value);
-native Streamer_RemoveArrayData(type, {Text3D,_}:id, data, value);
-native Streamer_GetUpperBound(type);
-
-// Natives (Miscellaneous)
-
-native Streamer_GetDistanceToItem(Float:x, Float:y, Float:z, type, {Text3D,_}:id, &Float:distance);
-native Streamer_IsItemVisible(playerid, type, {Text3D,_}:id);
-native Streamer_DestroyAllVisibleItems(playerid, type);
-native Streamer_CountVisibleItems(playerid, type);
-
-// Natives (Objects)
-
-native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 300.0);
-native DestroyDynamicObject(objectid);
-native IsValidDynamicObject(objectid);
-native SetDynamicObjectPos(objectid, Float:x, Float:y, Float:z);
-native GetDynamicObjectPos(objectid, &Float:x, &Float:y, &Float:z);
-native SetDynamicObjectRot(objectid, Float:rx, Float:ry, Float:rz);
-native GetDynamicObjectRot(objectid, &Float:rx, &Float:ry, &Float:rz);
-native MoveDynamicObject(objectid, Float:x, Float:y, Float:z, Float:speed, Float:rx = -1000.0, Float:ry = -1000.0, Float:rz = -1000.0);
-native StopDynamicObject(objectid);
-native IsDynamicObjectMoving(objectid);
-native AttachCameraToDynamicObject(playerid, objectid);
-native AttachDynamicObjectToVehicle(objectid, vehicleid, Float:offsetx, Float:offsety, Float:offsetz, Float:rx, Float:ry, Float:rz);
-native EditDynamicObject(playerid, objectid);
-native GetDynamicObjectMaterial(objectid, materialindex, &modelid, txdname[], texturename[], &materialcolor, maxtxdname = sizeof txdname, maxtexturename = sizeof texturename);
-native SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0);
-native GetDynamicObjectMaterialText(objectid, materialindex, text[], &materialsize, fontface[], &fontsize, &bold, &fontcolor, &backcolor, &textalignment, maxtext = sizeof text, maxfontface = sizeof fontface);
-native SetDynamicObjectMaterialText(objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
-native DestroyAllDynamicObjects();
-native CountDynamicObjects();
-
-// Natives (Pickups)
-
-native CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
-native DestroyDynamicPickup(pickupid);
-native IsValidDynamicPickup(pickupid);
-native DestroyAllDynamicPickups();
-native CountDynamicPickups();
-
-// Natives (Checkpoints)
-
-native CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
-native DestroyDynamicCP(checkpointid);
-native IsValidDynamicCP(checkpointid);
-native TogglePlayerDynamicCP(playerid, checkpointid, toggle);
-native TogglePlayerAllDynamicCPs(playerid, toggle);
-native IsPlayerInDynamicCP(playerid, checkpointid);
-native GetPlayerVisibleDynamicCP(playerid);
-native DestroyAllDynamicCPs();
-native CountDynamicCPs();
-
-// Natives (Race Checkpoints)
-
-native CreateDynamicRaceCP(type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
-native DestroyDynamicRaceCP(checkpointid);
-native IsValidDynamicRaceCP(checkpointid);
-native TogglePlayerDynamicRaceCP(playerid, checkpointid, toggle);
-native TogglePlayerAllDynamicRaceCPs(playerid, toggle);
-native IsPlayerInDynamicRaceCP(playerid, checkpointid);
-native GetPlayerVisibleDynamicRaceCP(playerid);
-native DestroyAllDynamicRaceCPs();
-native CountDynamicRaceCPs();
-
-// Natives (Map Icons)
-
-native CreateDynamicMapIcon(Float:x, Float:y, Float:z, type, color, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
-native DestroyDynamicMapIcon(iconid);
-native IsValidDynamicMapIcon(iconid);
-native DestroyAllDynamicMapIcons();
-native CountDynamicMapIcons();
-
-// Natives (3D Text Labels)
-
-native Text3D:CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
-native DestroyDynamic3DTextLabel(Text3D:id);
-native IsValidDynamic3DTextLabel(Text3D:id);
-native GetDynamic3DTextLabelText(Text3D:id, text[], maxlength = sizeof text);
-native UpdateDynamic3DTextLabelText(Text3D:id, color, const text[]);
-native DestroyAllDynamic3DTextLabels();
-native CountDynamic3DTextLabels();
-
-// Natives (Areas)
-
-native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
-native CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);
-native CreateDynamicSphere(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1);
-native CreateDynamicCube(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worldid = -1, interiorid = -1, playerid = -1);
-native CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1);
-native DestroyDynamicArea(areaid);
-native IsValidDynamicArea(areaid);
-native TogglePlayerDynamicArea(playerid, areaid, toggle);
-native TogglePlayerAllDynamicAreas(playerid, toggle);
-native IsPlayerInDynamicArea(playerid, areaid);
-native IsPlayerInAnyDynamicArea(playerid);
-native IsPointInDynamicArea(areaid, Float:x, Float:y, Float:z);
-native IsPointInAnyDynamicArea(Float:x, Float:y, Float:z);
-native AttachDynamicAreaToObject(areaid, objectid, type = STREAMER_OBJECT_TYPE_DYNAMIC, playerid = INVALID_PLAYER_ID);
-native AttachDynamicAreaToPlayer(areaid, playerid);
-native AttachDynamicAreaToVehicle(areaid, vehicleid);
-native DestroyAllDynamicAreas();
-native CountDynamicAreas();
-
-// Natives (Extended)
-
-native CreateDynamicObjectEx(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:drawdistance = 0.0, Float:streamdistance = 200.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicPickupEx(modelid, type, Float:x, Float:y, Float:z, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicCPEx(Float:x, Float:y, Float:z, Float:size, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicRaceCPEx(type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicMapIconEx(Float:x, Float:y, Float:z, type, color, style = MAPICON_LOCAL, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native Text3D:CreateDynamic3DTextLabelEx(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicCircleEx(Float:x, Float:y, Float:size, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicRectangleEx(Float:minx, Float:miny, Float:maxx, Float:maxy, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicSphereEx(Float:x, Float:y, Float:z, Float:size, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicCubeEx(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-native CreateDynamicPolygonEx(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
-
-// Natives (Internal)
-
-native Streamer_CallbackHook(callback, {Float,_}:...);
-
-// Callbacks
-
-forward OnDynamicObjectMoved(objectid);
-forward OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
-forward OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z);
-forward OnPlayerPickUpDynamicPickup(playerid, pickupid);
-forward OnPlayerEnterDynamicCP(playerid, checkpointid);
-forward OnPlayerLeaveDynamicCP(playerid, checkpointid);
-forward OnPlayerEnterDynamicRaceCP(playerid, checkpointid);
-forward OnPlayerLeaveDynamicRaceCP(playerid, checkpointid);
-forward OnPlayerEnterDynamicArea(playerid, areaid);
-forward OnPlayerLeaveDynamicArea(playerid, areaid);
-
-// Callback Hook Section
-
-#define STREAMER_OPC (0)
-#define STREAMER_OPDC (1)
-#define STREAMER_OPEO (2)
-#define STREAMER_OPSO (3)
-#define STREAMER_OPPP (4)
-#define STREAMER_OPEC (5)
-#define STREAMER_OPLC (6)
-#define STREAMER_OPERC (7)
-#define STREAMER_OPLRC (8)
-
-static bool:Streamer_g_OPC = false;
-static bool:Streamer_g_OPDC = false;
-static bool:Streamer_g_OPEO = false;
-static bool:Streamer_g_OPSO = false;
-static bool:Streamer_g_OPPP = false;
-static bool:Streamer_g_OPEC = false;
-static bool:Streamer_g_OPLC = false;
-static bool:Streamer_g_OPERC = false;
-static bool:Streamer_g_OPLRC = false;
-
-public OnFilterScriptInit()
-{
- Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
- Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
- Streamer_g_OPEO = funcidx("Streamer_OnPlayerEditObject") != -1;
- Streamer_g_OPSO = funcidx("Streamer_OnPlayerSelectObject") != -1;
- Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
- Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
- Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
- Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
- Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
- if (funcidx("Streamer_OnFilterScriptInit") != -1)
- {
- return CallLocalFunction("Streamer_OnFilterScriptInit", "");
- }
- return 1;
-}
-
-#if defined _ALS_OnFilterScriptInit
- #undef OnFilterScriptInit
-#else
- #define _ALS_OnFilterScriptInit
-#endif
-#define OnFilterScriptInit Streamer_OnFilterScriptInit
-
-forward Streamer_OnFilterScriptInit();
-
-public OnGameModeInit()
-{
- Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
- Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
- Streamer_g_OPEO = funcidx("Streamer_OnPlayerEditObject") != -1;
- Streamer_g_OPSO = funcidx("Streamer_OnPlayerSelectObject") != -1;
- Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
- Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
- Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
- Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
- Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
- if (funcidx("Streamer_OnGameModeInit") != -1)
- {
- return CallLocalFunction("Streamer_OnGameModeInit", "");
- }
- return 1;
-}
-
-#if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
-#else
- #define _ALS_OnGameModeInit
-#endif
-#define OnGameModeInit Streamer_OnGameModeInit
-
-forward Streamer_OnGameModeInit();
-
-public OnPlayerConnect(playerid)
-{
- Streamer_CallbackHook(STREAMER_OPC, playerid);
- if (Streamer_g_OPC)
- {
- return CallLocalFunction("Streamer_OnPlayerConnect", "d", playerid);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
-#else
- #define _ALS_OnPlayerConnect
-#endif
-#define OnPlayerConnect Streamer_OnPlayerConnect
-
-forward Streamer_OnPlayerConnect(playerid);
-
-public OnPlayerDisconnect(playerid, reason)
-{
- Streamer_CallbackHook(STREAMER_OPDC, playerid, reason);
- if (Streamer_g_OPDC)
- {
- return CallLocalFunction("Streamer_OnPlayerDisconnect", "dd", playerid, reason);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
-#else
- #define _ALS_OnPlayerDisconnect
-#endif
-#define OnPlayerDisconnect Streamer_OnPlayerDisconnect
-
-forward Streamer_OnPlayerDisconnect(playerid, reason);
-
-public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
-{
- if (playerobject)
- {
- Streamer_CallbackHook(STREAMER_OPEO, playerid, playerobject, objectid, response, fX, fY, fZ, fRotX, fRotY, fRotZ);
- }
- if (Streamer_g_OPEO)
- {
- return CallLocalFunction("Streamer_OnPlayerEditObject", "ddddffffff", playerid, playerobject, objectid, response, fX, fY, fZ, fRotX, fRotY, fRotZ);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerEditObject
- #undef OnPlayerEditObject
-#else
- #define _ALS_OnPlayerEditObject
-#endif
-#define OnPlayerEditObject Streamer_OnPlayerEditObject
-
-forward Streamer_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
-
-public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
-{
- if (type == SELECT_OBJECT_PLAYER_OBJECT)
- {
- Streamer_CallbackHook(STREAMER_OPSO, playerid, type, objectid, modelid, fX, fY, fZ);
- }
- if (Streamer_g_OPSO)
- {
- return CallLocalFunction("Streamer_OnPlayerSelectObject", "ddddfff", playerid, type, objectid, modelid, fX, fY, fZ);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerSelectObject
- #undef OnPlayerSelectObject
-#else
- #define _ALS_OnPlayerSelectObject
-#endif
-#define OnPlayerSelectObject Streamer_OnPlayerSelectObject
-
-forward Streamer_OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ);
-
-public OnPlayerPickUpPickup(playerid, pickupid)
-{
- Streamer_CallbackHook(STREAMER_OPPP, playerid, pickupid);
- if (Streamer_g_OPPP)
- {
- return CallLocalFunction("Streamer_OnPlayerPickUpPickup", "dd", playerid, pickupid);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerPickUpPickup
- #undef OnPlayerPickUpPickup
-#else
- #define _ALS_OnPlayerPickUpPickup
-#endif
-#define OnPlayerPickUpPickup Streamer_OnPlayerPickUpPickup
-
-forward Streamer_OnPlayerPickUpPickup(playerid, pickupid);
-
-public OnPlayerEnterCheckpoint(playerid)
-{
- Streamer_CallbackHook(STREAMER_OPEC, playerid);
- if (Streamer_g_OPEC)
- {
- return CallLocalFunction("Streamer_OnPlayerEnterCP", "d", playerid);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerEnterCheckpoint
- #undef OnPlayerEnterCheckpoint
-#else
- #define _ALS_OnPlayerEnterCheckpoint
-#endif
-#define OnPlayerEnterCheckpoint Streamer_OnPlayerEnterCP
-
-forward Streamer_OnPlayerEnterCP(playerid);
-
-public OnPlayerLeaveCheckpoint(playerid)
-{
- Streamer_CallbackHook(STREAMER_OPLC, playerid);
- if (Streamer_g_OPLC)
- {
- return CallLocalFunction("Streamer_OnPlayerLeaveCP", "d", playerid);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerLeaveCheckpoint
- #undef OnPlayerLeaveCheckpoint
-#else
- #define _ALS_OnPlayerLeaveCheckpoint
-#endif
-#define OnPlayerLeaveCheckpoint Streamer_OnPlayerLeaveCP
-
-forward Streamer_OnPlayerLeaveCP(playerid);
-
-public OnPlayerEnterRaceCheckpoint(playerid)
-{
- Streamer_CallbackHook(STREAMER_OPERC, playerid);
- if (Streamer_g_OPERC)
- {
- return CallLocalFunction("Streamer_OnPlayerEnterRaceCP", "d", playerid);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerEnterRaceCP
- #undef OnPlayerEnterRaceCheckpoint
-#else
- #define _ALS_OnPlayerEnterRaceCP
-#endif
-#define OnPlayerEnterRaceCheckpoint Streamer_OnPlayerEnterRaceCP
-
-forward Streamer_OnPlayerEnterRaceCP(playerid);
-
-public OnPlayerLeaveRaceCheckpoint(playerid)
-{
- Streamer_CallbackHook(STREAMER_OPLRC, playerid);
- if (Streamer_g_OPLRC)
- {
- return CallLocalFunction("Streamer_OnPlayerLeaveRaceCP", "d", playerid);
- }
- return 1;
-}
-
-#if defined _ALS_OnPlayerLeaveRaceCP
- #undef OnPlayerLeaveRaceCheckpoint
-#else
- #define _ALS_OnPlayerLeaveRaceCP
-#endif
-#define OnPlayerLeaveRaceCheckpoint Streamer_OnPlayerLeaveRaceCP
-
-forward Streamer_OnPlayerLeaveRaceCP(playerid);
diff --git a/amx-test/pawno/settings.ini b/amx-test/pawno/settings.ini
index 68cff08..44a7079 100644
--- a/amx-test/pawno/settings.ini
+++ b/amx-test/pawno/settings.ini
@@ -2,8 +2,8 @@
FileAssoc=1
[Display]
WindowMax=1
-WindowX=557
-WindowY=268
+WindowX=556
+WindowY=261
WindowW=790
WindowH=485
Splitter=339
diff --git a/amx-test/testgm.pwn b/amx-test/testgm.pwn
index f7926ec..793817b 100644
--- a/amx-test/testgm.pwn
+++ b/amx-test/testgm.pwn
@@ -1,9 +1,7 @@
#include
-#include
#include
-new bot = 0;
-new bots = 0;
-new marker = 0;
+
+new bot, bots;
main()
{
@@ -22,7 +20,7 @@ public OnGameModeInit()
new File:f = fopen("file.txt", io_read);
if (f == File:0)
{
- printf("There is a problem with openning the file.");
+ printf("There is a problem with opening the file.");
}
else
{
@@ -34,13 +32,16 @@ public OnGameModeInit()
}
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- SetRuleValue("nya", "test");
+
new buf[64];
+ SetRuleValue("nya", "test");
GetRuleValue("nya", buf, sizeof(buf));
printf("val: %s", buf);
+
bot = CreateBot(0, 0.5, 0.5, 0.5, "Nyashk");
GetBotName(bot, buf, sizeof(buf));
printf("bot: %s", buf);
+
printf("sss: %d", GetWaveHeight());
SetWaveHeight(15);
printf("sss: %d", GetWaveHeight());
@@ -76,48 +77,51 @@ public OnPlayerConnect(playerid)
CreateBot(0, 0.5, 0.5, 0.5);
CreateBot(0, 0.5, 0.5, 0.5);
bot = CreateBot(0, 0.5, 0.5, 0.5, "Nyashk");
+
SetPlayerHealth(playerid, 50.0);
SetPlayerBlurLevel(playerid, 0);
+
new listitems[] = "1\tDeagle\n2\tSawnoff\n3\tPistol\n4\tGrenade\n5\tParachute\n6\tLorikeet";
- ShowPlayerDialog(playerid,2,DIALOG_STYLE_LIST,"List of weapons:",listitems,"Select","Cancel");
+ ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "List of weapons:", listitems, "Select", "Cancel");
//ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "testcapt", "info", "Okay", "Canceled");
return 1;
}
+
forward OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0) { // Our example msgbox
if(response) {
- SendClientMessage(playerid,0xFFFFFFFF,"You selected OK");
+ SendClientMessage(playerid, 0xFFFFFFFF, "You selected OK");
} else {
- SendClientMessage(playerid,0xFFFFFFFF,"You selected Cancel");
+ SendClientMessage(playerid, 0xFFFFFFFF, "You selected Cancel");
}
return 1; // we processed this. no need for other filterscripts to process it.
}
if(dialogid == 1) { // Our example inputbox
if(response) {
- new message[256+1];
- format(message, 256, "You replied: %s", inputtext);
- SendClientMessage(playerid, 0xFFFFFFFF, message);
+ new message[256 + 1];
+ format(message, sizeof(message), "You replied: %s", inputtext);
+ SendClientMessage(playerid, 0xFFFFFFFF, message);
} else {
- SendClientMessage(playerid, 0xFFFFFFFF, "You selected Cancel");
+ SendClientMessage(playerid, 0xFFFFFFFF, "You selected Cancel");
}
return 1; // we processed it.
}
if(dialogid == 2) { // Our example listbox
if(response) {
- new message[256+1];
+ new message[256 + 1];
if(listitem != 5) {
- format(message, 256, "You selected item %d:", listitem);
- SendClientMessage(playerid, 0xFFFFFFFF, message);
- SendClientMessage(playerid, 0xFFFFFFFF, inputtext);
+ format(message, sizeof(message), "You selected item %d:", listitem);
+ SendClientMessage(playerid, 0xFFFFFFFF, message);
+ SendClientMessage(playerid, 0xFFFFFFFF, inputtext);
} else {
- SendClientMessage(playerid, 0x5555FFFF, "A Lorikeet is NOT a weapon!");
+ SendClientMessage(playerid, 0x5555FFFF, "A Lorikeet is NOT a weapon!");
}
} else {
- SendClientMessage(playerid, 0xFFFFFFFF, "You selected Cancel");
+ SendClientMessage(playerid, 0xFFFFFFFF, "You selected Cancel");
}
return 1; // we processed it.
}
@@ -134,18 +138,21 @@ public OnPlayerDisconnect(playerid, reason)
public OnMarkerCreate(markerid)
{
printf("OnMarkerCreate(%d)", markerid);
+ return 1;
}
public OnPlayerSpawn(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
- marker = CreateMarker(x, y, z, "checkpoint", 3.0, 255, 0, 0, 250);
+ CreateMarker(x, y, z, "checkpoint", 3.0, 255, 0, 0, 250);
+
CreateBot(0, x, y, z);
SetBotPos(bot, x, y, z);
- SetPlayerHealth(playerid, 50.0);
SetBotHealth(bot, 100.0);
SetBotArmour(bot, 5.0);
+
+ SetPlayerHealth(playerid, 50.0);
GivePlayerWeapon(playerid, 32, 500);
return 1;
}
@@ -156,39 +163,45 @@ public OnBotConnect(botid, name[])
printf("Bot connected: %d [%s]", botid, name);
return 1;
}
+
public OnMarkerHit(markerid, elemtype[], elemid, matchingDimension)
{
printf("OnMarkerHit(%d, %s, %d)", markerid, elemtype, elemid);
+ return 1;
}
public OnBotEnterVehicle(botid, vehicleid, seatid)
{
-
+ return 1;
}
public OnBotExitVehicle(botid, vehicleid)
{
-
+ return 1;
}
public OnBotDeath(botid, killerid, weaponid, bodypart)
{
printf("OnBotDeath(%d, %d, %d, %d)", botid, killerid, weaponid, bodypart);
+ return 1;
}
public OnPlayerWeaponSwitch(playerid, previousWeaponID, currentWeaponID)
{
- printf("OnPlayerWeaponSwitch(%d, %d, %d)",playerid, previousWeaponID, currentWeaponID);
+ printf("OnPlayerWeaponSwitch(%d, %d, %d)", playerid, previousWeaponID, currentWeaponID);
+ return 1;
}
public OnPlayerShoot(playerid, weapon, ammo, ammoInClip, Float:hitX, Float:hitY, Float:hitZ)
{
- printf("OnPlayerShoot(%d, %d, %d, %d, %f, %f, %f)",playerid, weapon, ammo, ammoInClip, hitX, hitY, hitZ);
+ printf("OnPlayerShoot(%d, %d, %d, %d, %f, %f, %f)", playerid, weapon, ammo, ammoInClip, hitX, hitY, hitZ);
+ return 1;
}
public OnVehicleDamage(vehicleid, Float:loss)
{
printf("OnVehicleDamage(%d, %f)", vehicleid, loss);
+ return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
@@ -211,10 +224,6 @@ public OnPlayerText(playerid, text[])
return 1;
}
-public OnPlayerPrivmsg(playerid, recieverid, text[])
-{
- return 1;
-}
strtok(const string[], &index)
{
new length = strlen(string);
@@ -233,44 +242,39 @@ strtok(const string[], &index)
result[index - offset] = EOS;
return result;
}
+
public OnPlayerCommandText(playerid, cmdtext[])
{
- new cmd[256];
- new idx;
+ new cmd[256], idx;
cmd = strtok(cmdtext, idx);
+
if(strcmp(cmd, "/testmsgbox", true) == 0) {
- ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Welcome","Welcome to the SA-MP 0.3 server. This is test_cmds.pwn /testmsgbox\nHope it's useful to you.","OK","Cancel");
- return 1;
+ ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Welcome", "Welcome to the SA-MP 0.3 server. This is test_cmds.pwn /testmsgbox\nHope it's useful to you.", "OK", "Cancel");
+ return 1;
}
if(strcmp(cmd, "/testmsgbox2", true) == 0) {
- ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Welcome","Welcome:\tInfo\nTest:\t\tTabulated\nLine:\t\tHello","OK","Cancel");
- return 1;
+ ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Welcome", "Welcome:\tInfo\nTest:\t\tTabulated\nLine:\t\tHello", "OK", "Cancel");
+ return 1;
}
if(strcmp(cmd, "/testinputbox", true) == 0) {
- new loginmsg[256+1];
- new loginname[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid,loginname,MAX_PLAYER_NAME);
- format(loginmsg,256,"Welcome to the SA-MP 0.3 server.\n\nAccount:\t%s\n\nPlease enter your password below:",loginname);
- ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Login to SA-MP",loginmsg,"Login","Cancel");
- return 1;
+ new loginmsg[256 + 1], loginname[MAX_PLAYER_NAME + 1];
+ GetPlayerName(playerid, loginname, MAX_PLAYER_NAME);
+ format(loginmsg, sizeof(loginmsg), "Welcome to the SA-MP 0.3 server.\n\nAccount:\t%s\n\nPlease enter your password below:", loginname);
+ ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Login to SA-MP", loginmsg, "Login", "Cancel");
+ return 1;
}
if(strcmp(cmd, "/testlistbox", true) == 0) {
- new listitems[] = "1\tDeagle\n2\tSawnoff\n3\tPistol\n4\tGrenade\n5\tParachute\n6\tLorikeet";
- ShowPlayerDialog(playerid,2,DIALOG_STYLE_LIST,"List of weapons:",listitems,"Select","Cancel");
- return 1;
+ new listitems[] = "1\tDeagle\n2\tSawnoff\n3\tPistol\n4\tGrenade\n5\tParachute\n6\tLorikeet";
+ ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST, "List of weapons:", listitems, "Select", "Cancel");
+ return 1;
}
return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
-{
-
-}
-
-public OnPlayerInfoChange(playerid)
{
return 1;
}
@@ -284,7 +288,7 @@ public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
-forward OnBotStateChange(botid, newstate, oldstate);
+
public OnBotStateChange(botid, newstate, oldstate)
{
return 1;
diff --git a/amx/client/arial.ttf b/amx/client/arial.ttf
deleted file mode 100644
index 8682d94..0000000
Binary files a/amx/client/arial.ttf and /dev/null differ
diff --git a/amx/client/client.lua b/amx/client/client.lua
index b87b26a..8f9c190 100644
--- a/amx/client/client.lua
+++ b/amx/client/client.lua
@@ -172,7 +172,7 @@ function renderClassSelText()
drawShadowText('Use left and right arrow keys to select class.', 20, screenHeight - 150, tocolor(240, 240, 240))
drawShadowText('Press SHIFT when ready to spawn.', 20, screenHeight - 136, tocolor(240, 240, 240))
- if not g_ClassSelectionInfo or not g_ClassSelectionInfo.selectedclass then
+ if not g_ClassSelectionInfo[0] or not g_ClassSelectionInfo.selectedclass then
return
end
drawShadowText('Class ' .. g_ClassSelectionInfo.selectedclass .. ' weapons:', 20, screenHeight - 110, tocolor(240, 240, 240))
@@ -333,6 +333,9 @@ function camAttachRender()
local x1,y1,z1 = 0.0, 0.0, 0.0
if ca.objCamPos ~= nil then
x1,y1,z1 = getElementPosition(ca.objCamPos)
+ if not x1 then x1 = 0.0 end
+ if not y1 then y1 = 0.0 end
+ if not z1 then z1 = 0.0 end
end
local camDist = ca.dist
local cosZ = math.cos(ca.z)
@@ -402,9 +405,15 @@ function camRender()
local x1,y1,z1,x2,y2,z2 = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
if sm.objCamPos ~= nil then
x1,y1,z1 = getElementPosition(sm.objCamPos)
+ if not x1 then x1 = 0.0 end
+ if not y1 then y1 = 0.0 end
+ if not z1 then z1 = 0.0 end
end
if sm.objLookAt ~= nil then
x2,y2,z2 = getElementPosition(sm.objLookAt)
+ if not x2 then x2 = 0.0 end
+ if not y2 then y2 = 0.0 end
+ if not z2 then z2 = 0.0 end
end
--outputConsole(string.format("Current Camera Matrix is: CamPos: %f %f %f CamLookAt: %f %f %f", x1,y1,z1,x2,y2,z2))
setCameraMatrix(x1,y1,z1,x2,y2,z2)
@@ -453,9 +462,10 @@ end
function AttachPlayerObjectToPlayer(objID, attachPlayer, offsetX, offsetY, offsetZ, rX, rY, rZ)
local obj = g_PlayerObjects[objID]
if not obj then
- return
+ return false
end
attachElements(obj, attachPlayer, offsetX, offsetY, offsetZ, rX, rY, rZ)
+ return true
end
function CreatePlayerObject(objID, model, x, y, z, rX, rY, rZ)
@@ -483,25 +493,28 @@ end
function SetPlayerObjectPos(objID, x, y, z)
local obj = g_PlayerObjects[objID]
if not obj then
- return
+ return false
end
setElementPosition(obj, x, y, z)
+ return true
end
function SetPlayerObjectRot(objID, rX, rY, rZ)
local obj = g_PlayerObjects[objID]
if not obj then
- return
+ return false
end
setElementRotation(obj, rX, rY, rZ)
+ return true
end
function StopPlayerObject(objID)
local obj = g_PlayerObjects[objID]
if not obj then
- return
+ return false
end
stopObject(obj)
+ return true
end
--- Audio
@@ -625,6 +638,7 @@ end
function SetPlayerPosFindZ(x, y, z)
setElementPosition(localPlayer, x, y, getGroundPosition(x, y, z) + 1)
+ return true
end
function SetVehicleParamsForPlayer(vehicle, isObjective, doorsLocked)
@@ -1565,7 +1579,9 @@ function RemovePlayerMapIcon(blipID)
if g_Blips[blipID] then
destroyElement(g_Blips[blipID])
g_Blips[blipID] = nil
+ return true
end
+ return false
end
function SetPlayerMapIcon(blipID, x, y, z, type, r, g, b, a)
@@ -1574,6 +1590,7 @@ function SetPlayerMapIcon(blipID, x, y, z, type, r, g, b, a)
g_Blips[blipID] = nil
end
g_Blips[blipID] = createBlip(x, y, z, type, 2, r, g, b, a)
+ return true
end
function SetPlayerWorldBounds(xMax, xMin, yMax, yMin)
@@ -1658,6 +1675,7 @@ end
function TogglePlayerClock(toggle)
setMinuteDuration(toggle and 1000 or 2147483647)
setPlayerHudComponentVisible('clock', toggle)
+ return true
end
function createListDialog(titleText, message, button1txt, button2txt)
@@ -1706,8 +1724,8 @@ function createInputDialog(titleText, message, button1txt, button2txt)
end
inputDialog = nil
inputWindow = guiCreateWindow(screenWidth/2 - 541/2,screenHeight/2 - 352/2,541,352, titleText, false)
- guiWindowSetMovable(listWindow,false)
- guiWindowSetSizable(listWindow,false)
+ guiWindowSetMovable(inputWindow,false)
+ guiWindowSetSizable(inputWindow,false)
inputLabel = guiCreateColoredLabel(0.1, 0.1, 1.0, 0.8, message, inputWindow, true)
inputEdit = guiCreateEdit(0.0, 0.7, 1.0, 0.1, "", true, inputWindow)
@@ -1845,9 +1863,9 @@ function guiCreateColoredLabel(ax, ay, bx, by,str, parent, relative) --x, y, wid
local scrollpane = guiCreateScrollPane(ax,ay,bx,by,relative,parent)
--outputConsole('main string:' .. str)
- local pat = "(.-)#(%x%x%x%x%x%x)"
- local s, e, cap, col = str:find(pat, 1)
- local last = 1
+ local pat = "(.-)#(%x%x%x%x%x%x)"
+ local s, e, cap, col = str:find(pat, 1)
+ local last = 1
local labels = {}
local incy = 0
local incx = 0
@@ -1859,10 +1877,10 @@ function guiCreateColoredLabel(ax, ay, bx, by,str, parent, relative) --x, y, wid
lbl = guiCreateLabel(ax + incx, ay + incy, 1.0, by, cap, relative, scrollpane)
guiLabelSetHorizontalAlign(lbl, "left")
- table.insert(labels, lbl)
- if (r == nil) then r = 255 end
- if (g == nil) then g = 255 end
- if (b == nil) then b = 255 end
+ table.insert(labels, lbl)
+ if (r == nil) then r = 255 end
+ if (g == nil) then g = 255 end
+ if (b == nil) then b = 255 end
guiLabelSetColor(lbl,r,g,b)
r,g,b = tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6))
@@ -1891,6 +1909,9 @@ function guiCreateColoredLabel(ax, ay, bx, by,str, parent, relative) --x, y, wid
cap = str:sub(last)
lbl2 = guiCreateLabel(ax + incx, ay + incy, 1.0, by, cap, relative, scrollpane)
table.insert(labels, lbl2)
+ if (r == nil) then r = 255 end
+ if (g == nil) then g = 255 end
+ if (b == nil) then b = 255 end
guiLabelSetColor(lbl2,r,g,b)
end
return labels
@@ -1934,7 +1955,7 @@ function ShowPlayerDialog(dialogid, dialogtype, caption, info, button1, button2)
local row = guiGridListAddRow ( listGrid )
guiGridListSetItemText ( listGrid, row, listColumn, v, false, true)
end
- return
+ return true
end
--DIALOG_STYLE_TABLIST, DIALOG_STYLE_TABLIST_HEADER
@@ -1943,7 +1964,7 @@ function ShowPlayerDialog(dialogid, dialogtype, caption, info, button1, button2)
if #items < 1 then
outputConsole('Error, your dialog either has no items, its format is wrong or you\'re missing a newline character in the string')
outputConsole('The raw string was: ' .. info)
- return --Abort if there's no items
+ return false --Abort if there's no items
end
--Create the header
@@ -1967,6 +1988,7 @@ function ShowPlayerDialog(dialogid, dialogtype, caption, info, button1, button2)
end
end
end
+ return true
end
addEvent("onPlayerClickPlayer")
diff --git a/amx/client/samp_nametags.lua b/amx/client/samp_nametags.lua
index 7fc880d..66341fd 100644
--- a/amx/client/samp_nametags.lua
+++ b/amx/client/samp_nametags.lua
@@ -1,5 +1,5 @@
-local font = dxCreateFont('client/arial.ttf', 10, true, 'default') or 'default' -- fallback to default
+local font = 'arial' -- default font
HealthBarBorderVertices =
{
diff --git a/amx/scriptfiles/properties/businesses.txt b/amx/scriptfiles/properties/businesses.txt
index 4b404d7..58aab12 100644
--- a/amx/scriptfiles/properties/businesses.txt
+++ b/amx/scriptfiles/properties/businesses.txt
@@ -105,4 +105,4 @@
1272, -314.774688, 829.901977, 14.242187, 95.132049, 122, 2 ; // ammu bone Kye
1272, 241.099655, -178.363815, 1.578125, 265.502624, 96, 2 ; // Ammu blueberry Kye
1272, 2334.055664, 61.541301, 26.484687, 177.983642, 122, 2 ; // Ammu Kye
-1272, 1481.034667, -1770.273193, 18.795755, 174.243774, 14, 2 ; // LS City Dept (Kye)
+1272, 1481.034667, -1770.273193, 18.795755, 174.243774, 14, 2 ; // LS City Dept (Kye)
\ No newline at end of file
diff --git a/amx/scriptfiles/properties/houses.txt b/amx/scriptfiles/properties/houses.txt
index 1de4ad3..652ea3c 100644
--- a/amx/scriptfiles/properties/houses.txt
+++ b/amx/scriptfiles/properties/houses.txt
@@ -138,4 +138,4 @@
1273, 699.908508, -1059.997314, 49.421691, 240.409179, 135, 1 ; // JaTochNietDan || LS Mansion Area
1273, 351.905242, -1197.254028, 76.515625, 221.045486, 101, 1 ; // ls mans area Kye
1273, 645.366394, -1117.179931, 44.207038, 244.135498, 68, 1 ; // LS mansion (LnX)
-1273, 398.212097, -1271.106567, 50.019790, 26.977687, 135, 1 ; // JaTochNietDan || LS Mansion Area
+1273, 398.212097, -1271.106567, 50.019790, 26.977687, 135, 1 ; // JaTochNietDan || LS Mansion Area
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/flint.txt b/amx/scriptfiles/vehicles/flint.txt
index 0b43e25..793e7ab 100644
--- a/amx/scriptfiles/vehicles/flint.txt
+++ b/amx/scriptfiles/vehicles/flint.txt
@@ -1,61 +1,61 @@
-599,-807.0116,-942.0936,104.6271,314.7196,0,1 ;
-405,-589.3418,-1079.1355,23.3771,236.8904,24,1 ;
-505,-569.3895,-1048.4032,24.0146,237.8018,14,123 ;
-403,-349.3221,-1052.6652,59.4551,89.0788,14,123 ;
-505,-388.6629,-1150.0758,69.5786,357.9839,14,123 ;
-403,-76.0173,-1110.5597,1.0456,157.5384,36,2 ;
-531,-41.9499,-1153.2262,1.0440,63.5908,36,2 ;
-403,-39.6653,-1149.7799,1.0409,65.3597,36,2 ;
-531,-82.1817,-1137.4266,1.0402,340.8923,36,2 ;
-531,-85.4142,-1135.9938,1.0412,337.3026,36,2 ;
-403,-184.4848,-1307.1466,5.7091,103.7043,36,2 ;
-531,-367.7308,-1437.3649,25.6921,89.2236,36,2 ;
-422,-587.1984,-1499.8407,10.1747,36.7555,97,25 ;
-422,-657.5599,-1606.0066,25.1821,175.4014,97,25 ;
-400,-495.5439,-1834.0343,17.7955,184.7055,101,1 ;
-473,-512.5999,-1902.9431,5.0016,179.0171,56,53 ;
-468,-655.3087,-1998.3328,26.7546,211.5583,46,46 ;
-466,-841.4815,-2274.6650,20.8199,210.7536,68,76 ;
-466,-714.6012,-2547.3081,50.9399,128.7565,68,76 ;
-473,-485.8806,-2852.4319,-0.1373,248.4979,56,15 ;
-473,-196.7365,-2925.3259,0.0006,269.7706,56,15 ;
-473,-237.4600,-1794.3876,-0.1057,3.6694,56,15 ;
-468,-271.2445,-1790.1851,10.9364,163.2745,3,3 ;
-400,-379.1094,-2171.6399,46.6781,140.2350,62,1 ;
-410,-1196.9539,-2364.4788,18.5773,236.2259,9,1 ;
-532,-759.8405,-2458.4460,72.6366,319.4753,0,0 ;
-400,-20.6879,-2498.1814,36.7408,122.2802,4,1 ;
-400,-17.0690,-2520.2581,36.7478,213.8456,4,1 ;
-410,-31.9095,-2493.5383,36.3036,194.0151,10,1 ;
-599,-11.5140,-2512.1458,36.8428,121.2561,0,1 ;
-489,20.0119,-2648.0332,40.6164,92.6500,112,120 ;
-489,-186.1633,-2516.2021,31.3678,342.0027,112,120 ;
-466,-384.6082,-2474.8984,102.4780,268.9366,25,76 ;
-466,-485.5412,-2688.4248,152.3252,102.3787,25,76 ;
-471,-765.0049,-2686.1196,83.7728,114.8461,120,112 ;
-586,-1541.8571,-1342.7786,50.5056,14.3390,122,1 ;
-586,-1029.8485,-638.6542,31.5280,93.4600,8,1 ;
-586,-1006.8740,-674.1090,31.5279,275.2718,8,1 ;
-400,-983.5594,-641.0239,32.1002,271.1476,101,1 ;
-400,-1006.5243,-623.0823,32.1002,90.1122,101,1 ;
-483,-1030.8571,-658.6420,32.0001,90.1086,1,31 ;
-531,-940.2722,-498.2120,25.9274,256.5565,51,53 ;
-531,-918.0818,-534.8812,25.9175,357.6102,51,53 ;
-532,-1140.0840,-991.7651,130.1964,86.3863,0,0 ;
-532,-1164.6876,-1057.4521,130.2022,277.3220,0,0 ;
-466,-1407.8011,-1165.6597,103.0781,151.5499,78,76 ;
-531,-1444.6823,-1496.3507,101.7242,183.6463,91,2 ;
+599,-807.0116,-942.0936,104.6271,314.7196,0,1 ;
+405,-589.3418,-1079.1355,23.3771,236.8904,24,1 ;
+505,-569.3895,-1048.4032,24.0146,237.8018,14,123 ;
+403,-349.3221,-1052.6652,59.4551,89.0788,14,123 ;
+505,-388.6629,-1150.0758,69.5786,357.9839,14,123 ;
+403,-76.0173,-1110.5597,1.0456,157.5384,36,2 ;
+531,-41.9499,-1153.2262,1.0440,63.5908,36,2 ;
+403,-39.6653,-1149.7799,1.0409,65.3597,36,2 ;
+531,-82.1817,-1137.4266,1.0402,340.8923,36,2 ;
+531,-85.4142,-1135.9938,1.0412,337.3026,36,2 ;
+403,-184.4848,-1307.1466,5.7091,103.7043,36,2 ;
+531,-367.7308,-1437.3649,25.6921,89.2236,36,2 ;
+422,-587.1984,-1499.8407,10.1747,36.7555,97,25 ;
+422,-657.5599,-1606.0066,25.1821,175.4014,97,25 ;
+400,-495.5439,-1834.0343,17.7955,184.7055,101,1 ;
+473,-512.5999,-1902.9431,5.0016,179.0171,56,53 ;
+468,-655.3087,-1998.3328,26.7546,211.5583,46,46 ;
+466,-841.4815,-2274.6650,20.8199,210.7536,68,76 ;
+466,-714.6012,-2547.3081,50.9399,128.7565,68,76 ;
+473,-485.8806,-2852.4319,-0.1373,248.4979,56,15 ;
+473,-196.7365,-2925.3259,0.0006,269.7706,56,15 ;
+473,-237.4600,-1794.3876,-0.1057,3.6694,56,15 ;
+468,-271.2445,-1790.1851,10.9364,163.2745,3,3 ;
+400,-379.1094,-2171.6399,46.6781,140.2350,62,1 ;
+410,-1196.9539,-2364.4788,18.5773,236.2259,9,1 ;
+532,-759.8405,-2458.4460,72.6366,319.4753,0,0 ;
+400,-20.6879,-2498.1814,36.7408,122.2802,4,1 ;
+400,-17.0690,-2520.2581,36.7478,213.8456,4,1 ;
+410,-31.9095,-2493.5383,36.3036,194.0151,10,1 ;
+599,-11.5140,-2512.1458,36.8428,121.2561,0,1 ;
+489,20.0119,-2648.0332,40.6164,92.6500,112,120 ;
+489,-186.1633,-2516.2021,31.3678,342.0027,112,120 ;
+466,-384.6082,-2474.8984,102.4780,268.9366,25,76 ;
+466,-485.5412,-2688.4248,152.3252,102.3787,25,76 ;
+471,-765.0049,-2686.1196,83.7728,114.8461,120,112 ;
+586,-1541.8571,-1342.7786,50.5056,14.3390,122,1 ;
+586,-1029.8485,-638.6542,31.5280,93.4600,8,1 ;
+586,-1006.8740,-674.1090,31.5279,275.2718,8,1 ;
+400,-983.5594,-641.0239,32.1002,271.1476,101,1 ;
+400,-1006.5243,-623.0823,32.1002,90.1122,101,1 ;
+483,-1030.8571,-658.6420,32.0001,90.1086,1,31 ;
+531,-940.2722,-498.2120,25.9274,256.5565,51,53 ;
+531,-918.0818,-534.8812,25.9175,357.6102,51,53 ;
+532,-1140.0840,-991.7651,130.1964,86.3863,0,0 ;
+532,-1164.6876,-1057.4521,130.2022,277.3220,0,0 ;
+466,-1407.8011,-1165.6597,103.0781,151.5499,78,76 ;
+531,-1444.6823,-1496.3507,101.7242,183.6463,91,2 ;
531,-1417.1289,-1534.5874,101.7193,184.5565,91,2 ;
-531,-1451.8495,-1456.9764,101.7236,175.8479,91,2 ;
-468,-219.3871,-906.6091,40.6608,186.4501,46,46 ;
-471,-504.2122,-1660.6406,10.6085,43.9901,103,111 ;
-468,-916.9662,-1459.5214,122.9255,13.1392,46,46 ;
-468,-1071.7697,-1296.8829,128.8868,278.9760,46,46 ;
-468,-1112.6062,-1671.9421,76.0362,359.7007,46,46 ;
-532,-1058.2371,-1612.5803,77.3616,174.8907,0,0 ;
-471,-1040.5020,-1662.9651,77.5813,217.8248,74,91 ;
-471,-925.3805,-1439.3502,125.5587,24.4562,74,83 ;
-531,-85.5815,-1608.7993,2.7154,300.0013,36,2 ;
-403,-47.9698,-1570.7786,3.2227,152.9310,37,1 ;
-400,-93.0630,-1194.6671,2.3429,344.3191,123,1 ;
+531,-1451.8495,-1456.9764,101.7236,175.8479,91,2 ;
+468,-219.3871,-906.6091,40.6608,186.4501,46,46 ;
+471,-504.2122,-1660.6406,10.6085,43.9901,103,111 ;
+468,-916.9662,-1459.5214,122.9255,13.1392,46,46 ;
+468,-1071.7697,-1296.8829,128.8868,278.9760,46,46 ;
+468,-1112.6062,-1671.9421,76.0362,359.7007,46,46 ;
+532,-1058.2371,-1612.5803,77.3616,174.8907,0,0 ;
+471,-1040.5020,-1662.9651,77.5813,217.8248,74,91 ;
+471,-925.3805,-1439.3502,125.5587,24.4562,74,83 ;
+531,-85.5815,-1608.7993,2.7154,300.0013,36,2 ;
+403,-47.9698,-1570.7786,3.2227,152.9310,37,1 ;
+400,-93.0630,-1194.6671,2.3429,344.3191,123,1 ;
422,-81.0025,-1198.4222,2.2849,345.3639,97,25 ;
diff --git a/amx/scriptfiles/vehicles/ls_airport.txt b/amx/scriptfiles/vehicles/ls_airport.txt
index a5d8b03..420fc44 100644
--- a/amx/scriptfiles/vehicles/ls_airport.txt
+++ b/amx/scriptfiles/vehicles/ls_airport.txt
@@ -1,37 +1,37 @@
-519,1806.1066,-2406.8108,14.4731,220.1901,1,1 ;
-519,1851.0873,-2397.0818,14.4738,221.0776,1,1 ;
-519,1881.2903,-2364.6726,14.4760,231.6925,1,1 ;
-593,1990.4940,-2400.4700,14.0069,126.8314,58,8 ;
-593,1991.9357,-2377.5691,14.0096,111.9823,19,33 ;
-593,1994.2283,-2329.9182,14.0074,123.6920,68,8 ;
-593,1993.0359,-2307.1487,14.0073,121.4826,2,1 ;
-485,2005.4028,-2340.4004,13.2026,353.8798,1,74 ;
-485,1944.1885,-2234.3225,13.2017,358.4947,1,75 ;
-485,1893.2838,-2320.5076,13.2070,285.2385,1,76 ;
-485,1882.2479,-2390.3965,13.2133,266.7464,1,77 ;
-485,1915.2466,-2643.3474,13.2050,2.2446,1,78 ;
-553,1944.5242,-2639.1465,14.8823,28.0299,55,23 ;
-553,1984.2778,-2637.7561,14.8831,9.0602,94,116 ;
-553,2019.7615,-2642.5803,14.8759,318.3256,128,7 ;
-476,2124.7380,-2418.2964,14.2641,205.4615,7,6 ;
-476,2142.8672,-2434.3076,14.2587,144.2144,1,6 ;
-476,2107.1399,-2417.1648,14.2647,150.9743,135,14 ;
-476,2083.0217,-2429.4854,14.2543,182.9969,119,117 ;
-510,2081.9866,-2359.7229,13.1551,64.1485,39,39 ;
-510,1866.6115,-2660.4602,13.1552,18.6151,6,6 ;
-513,1881.0273,-2632.3281,14.0996,40.9586,21,36 ;
-513,1891.9824,-2632.7056,14.1085,332.5663,138,122 ;
-593,1840.4315,-2631.8525,14.0080,319.2033,22,1 ;
-593,1822.1689,-2629.8713,14.0076,35.6965,36,8 ;
-593,1806.7133,-2630.3167,14.0037,32.0461,51,1 ;
-476,1752.8643,-2632.2061,14.2631,1.4834,103,102 ;
-481,1698.6532,-2692.0225,13.0592,256.1956,26,1 ;
-485,1707.5415,-2646.3325,13.2052,359.6846,1,73 ;
-487,1716.0422,-2437.5767,13.7316,148.7897,18,108 ;
-487,1737.4827,-2432.7019,13.7340,192.0326,24,78 ;
-487,1752.5586,-2452.2275,13.7322,147.2027,54,29 ;
-417,1636.0142,-2409.7209,13.6266,193.2301,0,0 ;
-417,1655.8718,-2410.4551,13.6350,156.9428,0,0 ;
-510,1600.9696,-2395.0103,13.2262,298.2056,28,28 ;
+519,1806.1066,-2406.8108,14.4731,220.1901,1,1 ;
+519,1851.0873,-2397.0818,14.4738,221.0776,1,1 ;
+519,1881.2903,-2364.6726,14.4760,231.6925,1,1 ;
+593,1990.4940,-2400.4700,14.0069,126.8314,58,8 ;
+593,1991.9357,-2377.5691,14.0096,111.9823,19,33 ;
+593,1994.2283,-2329.9182,14.0074,123.6920,68,8 ;
+593,1993.0359,-2307.1487,14.0073,121.4826,2,1 ;
+485,2005.4028,-2340.4004,13.2026,353.8798,1,74 ;
+485,1944.1885,-2234.3225,13.2017,358.4947,1,75 ;
+485,1893.2838,-2320.5076,13.2070,285.2385,1,76 ;
+485,1882.2479,-2390.3965,13.2133,266.7464,1,77 ;
+485,1915.2466,-2643.3474,13.2050,2.2446,1,78 ;
+553,1944.5242,-2639.1465,14.8823,28.0299,55,23 ;
+553,1984.2778,-2637.7561,14.8831,9.0602,94,116 ;
+553,2019.7615,-2642.5803,14.8759,318.3256,128,7 ;
+476,2124.7380,-2418.2964,14.2641,205.4615,7,6 ;
+476,2142.8672,-2434.3076,14.2587,144.2144,1,6 ;
+476,2107.1399,-2417.1648,14.2647,150.9743,135,14 ;
+476,2083.0217,-2429.4854,14.2543,182.9969,119,117 ;
+510,2081.9866,-2359.7229,13.1551,64.1485,39,39 ;
+510,1866.6115,-2660.4602,13.1552,18.6151,6,6 ;
+513,1881.0273,-2632.3281,14.0996,40.9586,21,36 ;
+513,1891.9824,-2632.7056,14.1085,332.5663,138,122 ;
+593,1840.4315,-2631.8525,14.0080,319.2033,22,1 ;
+593,1822.1689,-2629.8713,14.0076,35.6965,36,8 ;
+593,1806.7133,-2630.3167,14.0037,32.0461,51,1 ;
+476,1752.8643,-2632.2061,14.2631,1.4834,103,102 ;
+481,1698.6532,-2692.0225,13.0592,256.1956,26,1 ;
+485,1707.5415,-2646.3325,13.2052,359.6846,1,73 ;
+487,1716.0422,-2437.5767,13.7316,148.7897,18,108 ;
+487,1737.4827,-2432.7019,13.7340,192.0326,24,78 ;
+487,1752.5586,-2452.2275,13.7322,147.2027,54,29 ;
+417,1636.0142,-2409.7209,13.6266,193.2301,0,0 ;
+417,1655.8718,-2410.4551,13.6350,156.9428,0,0 ;
+510,1600.9696,-2395.0103,13.2262,298.2056,28,28 ;
497,1575.9307,-2408.7253,13.7347,153.2041,0,1 ; Police Maverick
-497,1554.8207,-2406.4417,13.7308,190.6669,0,1 ; Police Maverick 2
+497,1554.8207,-2406.4417,13.7308,190.6669,0,1 ; Police Maverick 2
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/ls_gen_inner.txt b/amx/scriptfiles/vehicles/ls_gen_inner.txt
index 004180a..99ab364 100644
--- a/amx/scriptfiles/vehicles/ls_gen_inner.txt
+++ b/amx/scriptfiles/vehicles/ls_gen_inner.txt
@@ -1,98 +1,98 @@
-446,728.1595,-1495.2687,-0.4906,179.7909,1,5 ;
-454,720.7040,-1633.3224,0.1487,177.6009,26,26 ;
-454,720.5267,-1699.9827,0.1866,358.9251,26,26 ;
-429,764.7679,-1660.5485,4.2160,94.0819,12,12 ;
-541,688.0235,-1600.1552,13.7216,359.7577,58,8 ;
-466,594.6932,-1519.6713,14.8586,178.9838,68,76 ;
-458,601.2115,-1519.8091,14.8971,359.8546,101,1 ;
-496,648.1077,-1507.8370,14.7836,88.3481,35,35 ;
-429,729.7592,-1433.3433,13.2151,90.2927,13,13 ;
-506,665.4387,-1421.5520,14.3497,1.6522,7,7 ;
-506,587.3435,-1499.5959,15.0621,273.6347,6,6 ;
-413,691.4462,-1570.2456,14.3358,179.2636,91,1 ;
-451,489.1148,-1514.9581,20.0516,186.2239,46,46 ;
-541,494.3372,-1604.7161,18.2000,275.6070,60,1 ;
-603,259.4689,-1597.9203,33.1167,299.1694,69,1 ;
-429,262.3868,-1603.2013,33.0642,323.2319,2,2 ;
-518,258.0661,-1591.6113,33.1217,275.3944,36,36 ;
-409,867.4957,-1285.9368,13.8859,357.4155,1,1 ;
-457,844.4999,-1197.9865,16.6038,0.3980,2,1 ;
-457,880.8410,-1199.7491,16.6031,357.7022,21,108 ;
-457,914.7440,-1199.8364,16.6032,359.8655,106,56 ;
-463,920.4453,-1290.5063,13.3508,118.6505,121,14 ;
-542,863.2733,-1375.0151,13.3187,85.7265,32,92 ;
-561,903.8953,-1454.9287,12.8651,270.7864,8,17 ;
-429,881.5562,-1453.8588,13.3618,271.8305,99,93 ;
-507,809.9615,-1448.9109,12.9680,87.2106,35,54 ;
-589,810.5452,-1464.3678,12.7191,85.7123,134,97 ;
-496,821.6033,-1473.7249,12.5756,357.5008,54,120 ;
-461,1031.1113,-1446.3105,13.1411,59.0580,67,86 ;
-418,1005.0084,-1461.3424,13.6427,183.0261,119,119 ;
-463,990.1287,-1354.9878,12.9125,285.7227,65,6 ;
-479,991.3929,-1345.2102,13.1759,271.1148,123,108 ;
-489,990.5985,-1306.8129,13.5204,179.0488,24,6 ;
-475,1002.5063,-1306.5654,13.1866,359.6424,37,0 ;
-518,981.5054,-1306.6899,13.1630,181.0135,71,18 ;
-414,979.2278,-1258.1351,16.8071,182.5786,24,1 ;
-506,955.9268,-1184.0712,16.6498,269.9031,30,31 ;
-549,955.8333,-1190.2795,16.6425,270.2728,75,39 ;
-482,956.0022,-1199.3633,17.1270,268.5538,20,20 ;
-468,956.3898,-1193.4253,16.6297,89.6432,46,46 ;
-567,1085.8342,-1199.3883,17.7945,90.5839,93,64 ;
-542,1097.0354,-1218.1705,17.5471,356.6483,45,92 ;
-461,1084.2866,-1232.2461,15.3945,243.6654,61,1 ;
-461,1083.9337,-1235.0449,15.4088,243.8919,75,1 ;
-461,1083.7941,-1238.1573,15.4110,243.1097,79,1 ;
-405,1109.0310,-1225.8809,15.6987,181.5343,75,1 ;
-458,1000.3081,-1084.5488,23.7069,179.6207,30,1 ;
-542,1015.8254,-1083.9113,23.5711,0.6381,119,113 ;
-461,1032.2993,-1082.4255,23.4136,166.6669,35,27 ;
-475,1003.6659,-1054.6088,30.6946,3.0438,122,102 ;
-560,1070.9109,-1102.3247,24.4439,270.7971,41,81 ;
-496,1137.6492,-1025.5586,31.5121,177.9917,67,6 ;
-558,1131.7341,-1010.0580,29.4899,95.0937,40,1 ;
-581,1205.2384,-977.0176,43.0742,179.7537,58,1 ;
-536,1227.2596,-974.1713,43.2139,180.2966,30,96 ;
-414,1110.5709,-1331.4204,13.1385,0.6026,43,1 ;
-581,989.3703,-1589.3812,13.0903,21.5606,66,1 ;
-542,1061.2451,-1665.2649,13.4966,91.9120,32,92 ;
-405,1136.5767,-1695.5199,13.6956,88.9354,75,1 ;
-463,1137.1466,-1700.1902,13.3869,87.9396,132,112 ;
-518,1280.4908,-1816.1259,13.0556,270.4623,133,56 ;
-482,1250.2468,-1835.0884,13.5047,180.4024,85,85 ;
-527,1196.9360,-1829.6980,13.1197,269.7545,90,9 ;
-589,1280.9364,-1833.0607,13.0418,90.8050,46,126 ;
-562,1267.0612,-1795.2074,13.0702,0.6533,102,24 ;
-463,1281.6627,-1805.1254,12.9241,62.4969,53,53 ;
-545,1238.0167,-1835.2385,13.2008,177.5310,40,96 ;
-400,1423.8417,-1845.0616,13.4772,270.4685,109,109 ;
-546,1536.6632,-1846.7765,13.2712,0.8185,3,87 ;
-475,1614.0917,-1893.9027,13.3521,357.9483,102,80 ;
-546,1796.2775,-1933.2837,13.1180,180.4499,113,78 ;
-545,1776.1965,-1917.6884,13.1976,90.7850,39,1 ;
-400,1776.1498,-1907.3949,13.4788,271.3831,101,1 ;
-400,1804.1429,-1909.4020,13.3328,269.6684,10,10 ;
-474,1804.4889,-1919.3353,13.1556,269.8831,110,1 ;
-496,1785.9353,-1933.2903,13.1750,0.8605,52,69 ;
-496,1776.2777,-1894.0770,12.9741,272.6132,15,15 ;
-482,1776.5122,-1899.9752,13.5071,87.3522,10,10 ;
-482,1791.3899,-1933.2008,13.5101,180.1195,118,118 ;
-461,1775.7963,-1912.6582,12.9720,269.4815,61,1 ;
-461,1775.7340,-1914.1243,12.9716,262.3925,75,1 ;
-536,1834.7808,-1871.9734,13.0925,179.2434,30,96 ;
-496,1836.6301,-1853.6381,13.1059,179.9886,20,20 ;
-414,1858.8854,-1875.5944,13.5724,180.1933,95,1 ;
-468,1900.5659,-1849.8379,13.2277,44.6102,94,63 ;
-589,1251.2297,-2042.1305,59.4474,180.0659,40,1 ;
-521,1244.8016,-2023.3499,59.4330,292.8341,92,3 ;
-506,1256.9205,-2009.4756,59.2126,0.8008,7,7 ;
-522,1277.8240,-2011.9354,58.4634,268.7320,7,79 ;
-463,1097.5217,-1763.8896,12.8933,267.4286,36,36 ;
-475,892.6356,-1668.8604,13.3544,179.2466,37,0 ;
-506,874.8234,-1658.4843,13.2514,181.7123,1,15 ;
-521,870.1176,-1676.6573,13.1183,186.2732,115,118 ;
+446,728.1595,-1495.2687,-0.4906,179.7909,1,5 ;
+454,720.7040,-1633.3224,0.1487,177.6009,26,26 ;
+454,720.5267,-1699.9827,0.1866,358.9251,26,26 ;
+429,764.7679,-1660.5485,4.2160,94.0819,12,12 ;
+541,688.0235,-1600.1552,13.7216,359.7577,58,8 ;
+466,594.6932,-1519.6713,14.8586,178.9838,68,76 ;
+458,601.2115,-1519.8091,14.8971,359.8546,101,1 ;
+496,648.1077,-1507.8370,14.7836,88.3481,35,35 ;
+429,729.7592,-1433.3433,13.2151,90.2927,13,13 ;
+506,665.4387,-1421.5520,14.3497,1.6522,7,7 ;
+506,587.3435,-1499.5959,15.0621,273.6347,6,6 ;
+413,691.4462,-1570.2456,14.3358,179.2636,91,1 ;
+451,489.1148,-1514.9581,20.0516,186.2239,46,46 ;
+541,494.3372,-1604.7161,18.2000,275.6070,60,1 ;
+603,259.4689,-1597.9203,33.1167,299.1694,69,1 ;
+429,262.3868,-1603.2013,33.0642,323.2319,2,2 ;
+518,258.0661,-1591.6113,33.1217,275.3944,36,36 ;
+409,867.4957,-1285.9368,13.8859,357.4155,1,1 ;
+457,844.4999,-1197.9865,16.6038,0.3980,2,1 ;
+457,880.8410,-1199.7491,16.6031,357.7022,21,108 ;
+457,914.7440,-1199.8364,16.6032,359.8655,106,56 ;
+463,920.4453,-1290.5063,13.3508,118.6505,121,14 ;
+542,863.2733,-1375.0151,13.3187,85.7265,32,92 ;
+561,903.8953,-1454.9287,12.8651,270.7864,8,17 ;
+429,881.5562,-1453.8588,13.3618,271.8305,99,93 ;
+507,809.9615,-1448.9109,12.9680,87.2106,35,54 ;
+589,810.5452,-1464.3678,12.7191,85.7123,134,97 ;
+496,821.6033,-1473.7249,12.5756,357.5008,54,120 ;
+461,1031.1113,-1446.3105,13.1411,59.0580,67,86 ;
+418,1005.0084,-1461.3424,13.6427,183.0261,119,119 ;
+463,990.1287,-1354.9878,12.9125,285.7227,65,6 ;
+479,991.3929,-1345.2102,13.1759,271.1148,123,108 ;
+489,990.5985,-1306.8129,13.5204,179.0488,24,6 ;
+475,1002.5063,-1306.5654,13.1866,359.6424,37,0 ;
+518,981.5054,-1306.6899,13.1630,181.0135,71,18 ;
+414,979.2278,-1258.1351,16.8071,182.5786,24,1 ;
+506,955.9268,-1184.0712,16.6498,269.9031,30,31 ;
+549,955.8333,-1190.2795,16.6425,270.2728,75,39 ;
+482,956.0022,-1199.3633,17.1270,268.5538,20,20 ;
+468,956.3898,-1193.4253,16.6297,89.6432,46,46 ;
+567,1085.8342,-1199.3883,17.7945,90.5839,93,64 ;
+542,1097.0354,-1218.1705,17.5471,356.6483,45,92 ;
+461,1084.2866,-1232.2461,15.3945,243.6654,61,1 ;
+461,1083.9337,-1235.0449,15.4088,243.8919,75,1 ;
+461,1083.7941,-1238.1573,15.4110,243.1097,79,1 ;
+405,1109.0310,-1225.8809,15.6987,181.5343,75,1 ;
+458,1000.3081,-1084.5488,23.7069,179.6207,30,1 ;
+542,1015.8254,-1083.9113,23.5711,0.6381,119,113 ;
+461,1032.2993,-1082.4255,23.4136,166.6669,35,27 ;
+475,1003.6659,-1054.6088,30.6946,3.0438,122,102 ;
+560,1070.9109,-1102.3247,24.4439,270.7971,41,81 ;
+496,1137.6492,-1025.5586,31.5121,177.9917,67,6 ;
+558,1131.7341,-1010.0580,29.4899,95.0937,40,1 ;
+581,1205.2384,-977.0176,43.0742,179.7537,58,1 ;
+536,1227.2596,-974.1713,43.2139,180.2966,30,96 ;
+414,1110.5709,-1331.4204,13.1385,0.6026,43,1 ;
+581,989.3703,-1589.3812,13.0903,21.5606,66,1 ;
+542,1061.2451,-1665.2649,13.4966,91.9120,32,92 ;
+405,1136.5767,-1695.5199,13.6956,88.9354,75,1 ;
+463,1137.1466,-1700.1902,13.3869,87.9396,132,112 ;
+518,1280.4908,-1816.1259,13.0556,270.4623,133,56 ;
+482,1250.2468,-1835.0884,13.5047,180.4024,85,85 ;
+527,1196.9360,-1829.6980,13.1197,269.7545,90,9 ;
+589,1280.9364,-1833.0607,13.0418,90.8050,46,126 ;
+562,1267.0612,-1795.2074,13.0702,0.6533,102,24 ;
+463,1281.6627,-1805.1254,12.9241,62.4969,53,53 ;
+545,1238.0167,-1835.2385,13.2008,177.5310,40,96 ;
+400,1423.8417,-1845.0616,13.4772,270.4685,109,109 ;
+546,1536.6632,-1846.7765,13.2712,0.8185,3,87 ;
+475,1614.0917,-1893.9027,13.3521,357.9483,102,80 ;
+546,1796.2775,-1933.2837,13.1180,180.4499,113,78 ;
+545,1776.1965,-1917.6884,13.1976,90.7850,39,1 ;
+400,1776.1498,-1907.3949,13.4788,271.3831,101,1 ;
+400,1804.1429,-1909.4020,13.3328,269.6684,10,10 ;
+474,1804.4889,-1919.3353,13.1556,269.8831,110,1 ;
+496,1785.9353,-1933.2903,13.1750,0.8605,52,69 ;
+496,1776.2777,-1894.0770,12.9741,272.6132,15,15 ;
+482,1776.5122,-1899.9752,13.5071,87.3522,10,10 ;
+482,1791.3899,-1933.2008,13.5101,180.1195,118,118 ;
+461,1775.7963,-1912.6582,12.9720,269.4815,61,1 ;
+461,1775.7340,-1914.1243,12.9716,262.3925,75,1 ;
+536,1834.7808,-1871.9734,13.0925,179.2434,30,96 ;
+496,1836.6301,-1853.6381,13.1059,179.9886,20,20 ;
+414,1858.8854,-1875.5944,13.5724,180.1933,95,1 ;
+468,1900.5659,-1849.8379,13.2277,44.6102,94,63 ;
+589,1251.2297,-2042.1305,59.4474,180.0659,40,1 ;
+521,1244.8016,-2023.3499,59.4330,292.8341,92,3 ;
+506,1256.9205,-2009.4756,59.2126,0.8008,7,7 ;
+522,1277.8240,-2011.9354,58.4634,268.7320,7,79 ;
+463,1097.5217,-1763.8896,12.8933,267.4286,36,36 ;
+475,892.6356,-1668.8604,13.3544,179.2466,37,0 ;
+506,874.8234,-1658.4843,13.2514,181.7123,1,15 ;
+521,870.1176,-1676.6573,13.1183,186.2732,115,118 ;
496,888.5651,-1679.1317,13.2628,357.5185,102,135 ;
-411,1671.5546,-1719.5422,20.2115,269.5804,132,108 ;
-415,1656.9489,-1695.5144,20.2285,358.9435,131,53 ;
-496,1671.9685,-1704.4779,20.2006,270.8929,66,72 ;
-461,1673.9683,-1713.0564,20.0617,67.1318,43,1 ;
+411,1671.5546,-1719.5422,20.2115,269.5804,132,108 ;
+415,1656.9489,-1695.5144,20.2285,358.9435,131,53 ;
+496,1671.9685,-1704.4779,20.2006,270.8929,66,72 ;
+461,1673.9683,-1713.0564,20.0617,67.1318,43,1 ;
diff --git a/amx/scriptfiles/vehicles/ls_gen_outer.txt b/amx/scriptfiles/vehicles/ls_gen_outer.txt
index f683c8b..78d19b1 100644
--- a/amx/scriptfiles/vehicles/ls_gen_outer.txt
+++ b/amx/scriptfiles/vehicles/ls_gen_outer.txt
@@ -1,389 +1,389 @@
-413,327.8443,-1809.2729,4.5733,359.3342,91,1 ;
-439,311.7234,-1809.8577,4.3552,179.9755,54,38 ;
-496,334.3875,-1788.6018,4.7803,358.1175,41,41 ;
-414,383.4589,-1740.6958,8.8571,358.6929,28,1 ;
-467,740.4370,-1793.5476,12.9180,349.2087,58,8 ;
-473,823.7594,-2066.2686,-0.1017,112.6381,56,53 ;
-467,892.0507,-1797.3351,13.4070,175.4098,60,1 ;
-467,944.9136,-1813.5590,13.0146,350.0614,68,8 ;
-491,1096.8945,-1878.8030,13.3031,178.1535,71,72 ;
-496,1206.2454,-1879.0792,13.3341,88.5190,77,26 ;
-541,288.7144,-1158.0404,80.5349,221.9677,0,6 ;
-589,346.9617,-1197.2283,76.2875,25.8040,70,100 ;
-411,407.0925,-1151.5203,76.6354,148.1414,130,130 ;
-562,481.5187,-1089.5427,82.1051,359.1924,0,3 ;
-426,565.9165,-1067.1946,73.1332,35.3833,42,42 ;
-451,228.7167,-1398.7766,51.2917,51.4378,131,74 ;
-429,133.9096,-1492.1663,18.5958,57.1215,119,1 ;
-562,150.7156,-1473.8826,24.9243,5.9389,111,118 ;
-411,166.3856,-1340.8578,69.4391,190.4770,128,51 ;
-603,172.0262,-1341.3418,69.5661,168.2207,44,40 ;
-429,248.8978,-1355.4116,52.8828,279.1667,53,53 ;
-451,251.6047,-1359.8792,52.7134,300.5452,17,117 ;
-562,299.8025,-1331.8171,53.2744,72.7622,44,80 ;
-405,406.4772,-1264.2565,50.2499,24.0160,24,1 ;
-535,423.6223,-1266.3209,51.3450,21.9438,54,77 ;
-477,261.5547,-1220.3823,74.6478,183.4546,99,100 ;
-535,276.9328,-1267.3054,73.7098,302.5802,6,4 ;
-496,280.3806,-1255.7952,73.6166,281.7693,46,66 ;
-411,282.9343,-1160.4200,80.6401,223.5830,42,42 ;
-589,569.3154,-1131.7330,50.2950,243.4572,42,39 ;
-411,617.2254,-1102.6525,46.5131,126.8061,64,1 ;
-562,687.5812,-1072.8162,49.1274,62.7814,76,45 ;
-496,724.4913,-995.4954,52.3857,89.4483,79,110 ;
-545,795.9840,-840.3973,60.4526,174.5740,31,96 ;
-522,846.9828,-905.6497,68.3458,342.5805,138,94 ;
-534,831.9914,-858.8560,69.6527,199.3811,65,44 ;
-535,839.4457,-893.5928,68.5340,21.2260,3,1 ;
-477,912.5916,-832.0980,92.1407,218.1897,108,127 ;
-429,942.3409,-842.2905,93.9553,49.3921,107,69 ;
-429,934.4840,-856.8366,93.1734,204.4157,135,30 ;
-562,966.6584,-842.2115,95.4213,208.6852,103,88 ;
-451,979.1476,-831.5278,95.3282,27.7639,22,108 ;
-589,1024.2820,-777.6995,102.7277,142.3072,128,91 ;
-429,1028.9191,-810.0178,101.6239,200.6103,20,71 ;
-522,1099.2415,-818.4706,86.5177,153.5570,135,31 ;
-522,1256.5295,-804.6979,83.7138,117.1748,116,130 ;
-541,1248.1569,-804.1443,83.7656,167.9414,24,3 ;
-487,1291.7155,-786.8652,96.6376,1.5839,29,42 ;
-589,1352.0870,-622.1930,108.8587,24.2312,125,64 ;
-477,1460.3851,-633.6793,95.5530,179.4419,0,1 ;
-411,1108.8185,-732.7200,100.2283,87.5487,116,1 ;
-429,1515.2770,-695.3987,94.4297,99.0699,3,1 ;
-522,1518.6567,-688.1443,94.3202,127.6349,134,60 ;
-535,1516.9452,-765.4361,79.7405,142.5422,66,1 ;
-458,1530.6602,-814.2603,71.8145,269.5966,125,32 ;
-560,1536.7003,-841.9440,64.3992,91.2450,101,95 ;
-506,1515.6777,-879.8586,61.2318,73.2864,106,83 ;
-451,1464.4681,-902.8252,54.5429,174.4412,27,31 ;
-429,1429.4169,-883.6697,50.4307,45.8139,103,37 ;
-589,1088.9662,-644.2655,113.1492,338.4004,20,50 ;
-424,1113.3992,-657.0714,113.2539,1.8936,24,53 ;
-411,1048.4277,-639.6287,119.8443,62.9709,81,124 ;
-550,1038.2852,-640.5812,119.9407,3.9959,18,96 ;
-558,1011.0540,-659.9860,120.7726,34.0075,131,53 ;
-562,1006.7906,-663.9238,120.8018,212.6702,68,8 ;
-560,946.7752,-705.8109,121.9154,208.3881,17,1 ;
-535,912.4982,-665.0076,116.7563,234.0564,136,91 ;
-477,866.9702,-712.0836,105.4297,301.5712,75,1 ;
-518,851.5046,-741.6164,94.8512,223.7018,13,1 ;
-603,887.4414,-782.3810,101.1163,325.3539,58,1 ;
-534,834.7188,-754.2109,85.0352,221.3681,120,0 ;
-545,856.4266,-825.8338,89.3121,35.0684,23,94 ;
-545,812.7324,-768.6061,76.6226,240.9842,12,12 ;
-562,792.6622,-824.7413,69.7717,10.8903,101,4 ;
-405,211.8928,-1419.0681,13.1531,135.6236,24,1 ;
-461,203.5655,-1441.0552,12.6881,319.3540,43,1 ;
-482,216.6308,-1431.9065,13.3691,313.9951,48,48 ;
-462,338.6057,-1340.7114,14.1075,116.4867,53,61 ;
-439,343.3987,-1353.3427,14.4033,299.2459,43,21 ;
-542,412.7446,-1318.5144,14.6645,210.7711,112,131 ;
-521,411.1232,-1311.2087,14.5024,140.9818,36,0 ;
-562,500.5935,-1304.4486,16.8673,309.5460,19,113 ;
-521,531.3096,-1315.9927,16.8135,188.1211,74,74 ;
-589,534.3378,-1291.4104,17.0133,1.2697,127,47 ;
-463,542.3274,-1292.8159,16.7824,341.9847,79,3 ;
-496,556.2568,-1291.2498,17.0149,180.9516,61,21 ;
-461,587.8506,-1279.8562,15.9628,75.5049,57,94 ;
-463,588.5497,-1282.7085,15.7110,71.1037,20,60 ;
-589,569.1940,-1264.3147,16.4483,105.7125,75,1 ;
-474,580.0232,-1310.1290,13.6310,190.1793,54,114 ;
-429,760.3118,-1026.9938,23.8337,171.0469,25,78 ;
-411,825.8176,-1006.6130,27.4827,38.8900,123,1 ;
-429,973.4509,-930.9051,42.1739,91.9582,71,134 ;
-463,892.2068,-944.0689,41.3930,346.6371,46,55 ;
-496,1039.0024,-925.8621,42.0801,3.8901,95,87 ;
-496,1028.1858,-887.8458,41.8743,18.1745,76,26 ;
-534,1091.6672,-934.4342,42.7434,181.8923,53,53 ;
-496,1196.4460,-887.2950,42.7778,4.9401,13,118 ;
-461,1184.3699,-898.7025,42.8468,50.8006,26,5 ;
-479,1307.0081,-871.5775,39.3723,88.4695,20,119 ;
-482,1307.4617,-865.4689,39.6982,269.2831,52,52 ;
-543,1307.4490,-856.3735,39.3962,86.8428,32,8 ;
-463,1305.3447,-860.6293,39.1185,240.4489,102,77 ;
-567,1327.1772,-856.8694,39.4427,355.0141,96,74 ;
-458,1422.6184,-915.6990,35.9254,173.6657,76,95 ;
-439,1455.1505,-920.9677,37.4997,5.5316,137,65 ;
-550,1025.4679,-981.0638,42.4947,275.3589,109,23 ;
-576,929.9745,-996.4139,37.8311,274.6470,68,96 ;
-404,863.1107,-1056.6387,24.8362,216.7097,119,50 ;
-463,868.9804,-1068.5559,24.6418,26.0884,90,87 ;
-439,783.3749,-1356.8221,13.4354,272.4747,0,119 ;
-463,733.6376,-1347.5618,13.0519,258.9138,22,22 ;
-429,783.3834,-1347.7704,13.3739,90.3087,52,94 ;
-536,1696.6791,-2097.0415,13.2841,179.3459,30,96 ;
-542,1662.7777,-2110.7148,13.2900,90.3870,45,92 ;
-400,1707.4287,-2142.6919,13.6471,229.0505,40,110 ;
-567,1725.0461,-2130.4683,13.4259,180.7540,88,64 ;
-412,1724.0801,-2092.9343,13.3837,178.9921,91,31 ;
-536,1747.4430,-2097.3616,13.2870,179.0798,32,1 ;
-576,1793.3020,-2149.7551,13.2392,180.6801,72,1 ;
-536,1772.7323,-2096.0732,13.2853,181.7548,37,1 ;
-549,1948.6121,-2114.0183,13.2416,90.8657,79,39 ;
-496,1948.0044,-2126.9031,13.2611,269.0660,37,19 ;
-463,1941.4159,-2139.8730,13.0970,153.7429,53,53 ;
-414,1924.2328,-2123.9316,13.6772,359.7333,95,1 ;
-576,1938.4186,-2089.9116,13.1725,87.9823,74,8 ;
-518,1979.0964,-2065.5842,13.1683,1.5510,95,1 ;
-482,1998.8810,-2095.2688,13.6603,182.4098,110,110 ;
-482,2079.6143,-2007.4128,13.6618,267.6052,66,66 ;
-543,2070.6382,-1995.7777,13.3738,177.5505,32,8 ;
-463,2064.7144,-1998.2357,13.0870,323.5498,19,19 ;
-475,1981.1689,-1985.4224,13.3487,0.0153,33,0 ;
-443,2002.9520,-1940.1552,13.9832,90.4363,20,1 ;
-413,2062.2634,-1904.0969,13.6286,358.4263,91,1 ;
-426,2065.5415,-1920.3318,13.2901,179.3121,53,53 ;
-468,2120.8396,-1874.5211,13.2159,331.0408,6,6 ;
-448,2125.2058,-1817.1385,13.1554,304.3319,3,6 ;
-448,2124.9956,-1814.4016,13.1552,307.8773,3,6 ;
-448,2124.6506,-1811.7200,13.1522,308.4132,3,6 ;
-489,2121.7656,-1783.0730,13.5319,181.4553,112,120 ;
-600,2106.7954,-1783.6602,13.0983,178.3882,32,8 ;
-400,2114.6040,-1783.4563,13.4944,359.1006,28,119 ;
-546,2095.9749,-1800.3145,13.1088,268.3826,78,38 ;
-400,2096.2324,-1819.9232,13.4752,269.6763,75,1 ;
-554,1928.4520,-1795.0306,13.4708,269.1664,15,32 ;
-475,1976.6083,-1727.6584,15.7685,270.5382,33,0 ;
-400,2014.2510,-1737.9341,13.6451,89.6673,40,1 ;
-546,2017.8608,-1707.7689,13.2712,91.0950,3,87 ;
-496,1967.9211,-1658.8986,15.7506,88.9660,52,69 ;
-474,2026.2841,-1649.0118,13.3172,268.3413,105,1 ;
-429,1990.6079,-1579.2163,13.2836,74.1057,14,14 ;
-475,2014.0079,-1597.3103,13.3757,134.4442,37,0 ;
-466,2057.4875,-1636.5558,13.2887,269.2682,2,76 ;
-496,2062.4905,-1694.4796,13.3308,89.8789,71,107 ;
-533,2062.6511,-1738.6663,13.2560,90.7603,74,1 ;
-412,2238.7908,-1630.9789,15.5684,339.3786,29,8 ;
-534,2284.0630,-1681.7241,13.8912,0.3629,53,53 ;
-475,2271.4482,-1634.8553,15.1246,1.4485,9,39 ;
-463,2289.7493,-1685.7275,13.2727,338.6942,36,36 ;
-496,2296.9233,-1644.5267,14.5451,178.7794,17,1 ;
-474,2328.1565,-1677.1449,14.1746,268.4948,74,1 ;
-545,2319.2271,-1712.0625,13.3579,179.0224,44,96 ;
-475,2416.0103,-1707.7166,13.5772,180.6127,17,1 ;
-400,2443.6687,-1637.1934,13.3619,180.6244,10,10 ;
-404,2516.5413,-1672.2059,13.6568,247.4270,123,92 ;
-600,2501.3005,-1685.7114,13.2052,54.2230,43,8 ;
-482,2473.6335,-1688.4501,13.6213,1.3507,34,34 ;
-426,2500.2908,-1755.7277,13.1737,179.5942,53,53 ;
-414,2445.8567,-1762.6874,13.6820,179.0055,9,1 ;
-479,2452.3486,-1784.1185,13.3435,358.6820,60,35 ;
-475,2498.7920,-1953.6908,13.2268,180.0759,33,0 ;
-482,2482.8601,-1953.4886,13.5429,359.9536,32,32 ;
-475,2731.4260,-1937.1626,13.3474,270.9490,37,0 ;
-489,2685.5461,-1986.3003,13.6939,358.8623,120,123 ;
-536,2685.3967,-2021.3516,13.2650,179.1453,57,96 ;
-475,2644.9438,-1989.3313,13.3576,178.5030,56,29 ;
-547,2787.8420,-1876.2371,9.5681,179.4587,123,1 ;
-426,2757.7773,-1847.0181,9.4532,21.0801,37,37 ;
-479,2732.6860,-1875.2740,9.3877,359.7763,45,32 ;
-567,2706.5757,-1843.5668,9.3669,339.9568,97,96 ;
-458,2679.1792,-1826.0692,9.2646,129.6775,113,1 ;
-439,2657.7949,-1812.8765,9.1989,98.6444,67,8 ;
-461,2697.0117,-1836.8411,9.0454,131.7257,61,1 ;
-463,2757.8318,-1878.8939,9.2421,331.1535,7,122 ;
-521,2813.1143,-1822.5189,9.5068,56.5744,87,118 ;
-521,2808.0325,-1669.0962,9.5088,168.8724,92,3 ;
-466,2829.7585,-1699.7444,9.7443,256.3983,16,76 ;
-545,2825.0059,-1718.6702,9.8159,77.5273,30,1 ;
-588,2686.6833,-1672.3564,9.3456,1.2872,1,1 ;
-546,2657.6079,-1701.7725,9.0416,92.9747,113,78 ;
-521,2654.6636,-1692.5939,8.8779,251.8571,36,0 ;
-463,2696.4189,-1669.2604,9.0249,152.7104,11,11 ;
-474,2813.8862,-1429.2637,16.0126,357.9624,83,1 ;
-546,2792.6982,-1432.1294,19.9428,95.9562,119,62 ;
-521,2819.5498,-1427.8861,27.7283,97.0200,75,13 ;
-429,2796.6160,-1428.0923,35.7734,355.7729,1,2 ;
-400,2794.7859,-1464.7653,40.1536,180.1253,75,84 ;
-418,2816.5820,-1431.5497,40.1556,268.4159,114,114 ;
-521,2794.0625,-1576.2109,10.4993,252.9832,118,118 ;
-600,2796.4966,-1562.6956,10.6452,89.5535,83,13 ;
-426,2822.3193,-1553.4038,10.6672,89.8755,42,42 ;
-533,2807.4377,-1540.4016,10.6310,180.0459,73,1 ;
-414,2772.3438,-1614.6322,11.0090,270.6050,43,1 ;
-589,2855.3896,-1354.9142,10.8385,271.7889,40,1 ;
-521,2850.3010,-1323.3470,10.8710,43.7938,92,3 ;
-562,2845.5762,-1287.0035,18.8725,276.4800,62,62 ;
-463,2802.9653,-1174.3158,25.0878,148.6355,22,22 ;
-589,2814.8518,-1186.5088,24.9740,125.2599,43,1 ;
-496,2827.8259,-1165.8298,24.8425,74.4954,41,29 ;
-419,2828.4297,-1193.2813,24.7035,319.2678,47,76 ;
-521,2686.6938,-1102.2723,68.9335,36.2440,25,118 ;
-536,2570.6431,-1101.5728,65.9616,224.2815,30,96 ;
-461,2589.6411,-967.6470,80.9740,54.8113,88,1 ;
-543,2561.0659,-955.9353,82.5712,189.2468,32,8 ;
-543,2499.9092,-961.6536,82.0865,177.1486,43,8 ;
-478,2492.5671,-951.8682,82.2364,268.9169,66,1 ;
-463,2450.5344,-957.0054,79.5994,88.6032,79,79 ;
-521,2359.4319,-648.6396,127.7032,321.5916,36,0 ;
-478,2368.4819,-651.1127,127.6424,221.5063,59,1 ;
-529,2497.5225,-1063.2612,69.7644,180.0623,42,42 ;
-412,2503.8013,-1024.9954,69.9222,354.6204,37,8 ;
-536,2485.7839,-1015.6508,65.0513,332.0788,57,96 ;
-475,2453.7122,-1011.7231,59.5763,354.2991,37,0 ;
-549,2432.1267,-1056.5386,54.0339,182.6494,91,35 ;
-521,2366.8833,-1052.4576,53.7198,162.4203,118,118 ;
-463,2334.8330,-1052.5548,51.8916,205.8942,7,7 ;
-400,2328.0398,-1052.3500,52.4471,178.7152,40,1 ;
-468,2368.9734,-1029.3669,53.9112,303.9771,53,53 ;
-521,2222.1743,-1043.8972,57.4453,287.0623,92,3 ;
-475,2200.8208,-1000.4743,62.1100,337.4120,41,29 ;
-536,2073.8337,-972.3666,48.8145,121.6684,9,1 ;
-461,2057.1284,-987.3378,45.8448,41.0353,37,1 ;
-549,2032.1614,-966.3978,40.8893,144.2881,74,39 ;
-521,1994.0328,-1089.3951,24.1790,265.7199,115,118 ;
-536,1910.2012,-1117.5193,25.4453,359.7224,12,1 ;
-576,1934.3488,-1118.8567,26.0909,167.6531,84,96 ;
-540,1991.7618,-1119.2262,26.6329,88.5620,42,42 ;
-549,2090.1191,-1141.0527,25.2550,91.9199,83,36 ;
-536,2116.0889,-1059.6656,25.4645,1.6788,30,96 ;
-549,2161.8665,-1148.1637,24.0918,268.7138,84,36 ;
-576,2162.5032,-1162.9884,23.4278,270.5314,67,1 ;
-540,2147.6460,-1180.4316,23.6805,271.2742,53,53 ;
-554,2161.5271,-1192.5657,23.9013,270.6950,14,32 ;
-521,2164.0178,-1178.0918,23.3890,68.9158,74,74 ;
-463,2145.5957,-1162.0776,23.3554,273.2266,57,55 ;
-475,2148.7520,-1242.4739,24.4964,2.1731,9,39 ;
-536,2105.4612,-1242.9531,24.7791,1.3025,71,96 ;
-475,2033.9213,-1285.0781,20.7583,269.6826,17,1 ;
-479,2033.2328,-1294.9094,20.7262,90.1861,116,34 ;
-536,2095.4097,-1365.6405,23.7217,359.4201,26,96 ;
-567,2136.8682,-1366.1549,24.9118,181.6538,97,96 ;
-554,2156.6670,-1408.6438,25.6234,89.8769,15,32 ;
-529,2150.2095,-1423.7836,25.1728,270.8055,53,53 ;
-412,2157.4702,-1454.6027,25.3766,272.0728,9,1 ;
-482,2168.9004,-1503.8928,24.0567,264.3123,66,66 ;
-554,2191.4373,-1465.7140,25.6253,90.8413,45,32 ;
-489,2185.0557,-1434.4803,25.6846,93.1798,13,118 ;
-529,2229.7317,-1367.4005,23.6257,273.8516,62,62 ;
-405,2229.4822,-1348.8889,23.8603,87.4558,75,1 ;
-600,2230.1382,-1359.4955,23.7003,269.3415,104,72 ;
-536,2196.1318,-1278.5265,24.2447,358.3134,32,1 ;
-479,2426.9795,-1241.6071,24.0514,176.5720,40,29 ;
-603,2414.5007,-1223.4979,24.7468,354.3562,69,1 ;
-475,2431.3196,-1241.5726,24.1538,177.5767,2,39 ;
-463,2430.6926,-1220.7517,24.9012,142.6704,19,19 ;
-467,2556.9187,-1211.2632,54.2710,92.0357,68,8 ;
-475,2559.0198,-1194.6180,61.2624,177.0269,17,1 ;
-412,2491.1543,-1299.4158,32.1578,276.4995,37,8 ;
-554,2489.9026,-1292.7750,32.0910,246.3011,45,32 ;
-400,2493.6797,-1276.2856,33.0028,268.8489,40,110 ;
-475,2390.2915,-1487.7120,23.6330,90.8244,41,29 ;
-400,2390.6387,-1503.7330,23.9272,270.7136,62,1 ;
-463,2389.4578,-1497.8422,23.3752,243.2236,79,79 ;
-545,2396.8088,-1536.9807,23.8111,0.1546,50,1 ;
-479,2407.3284,-1538.0587,23.7968,0.6749,59,36 ;
-466,2412.8625,-1537.3831,23.7432,357.6566,78,76 ;
-475,2449.7637,-1556.8450,23.8046,1.3418,17,1 ;
-529,2454.6299,-1557.0045,23.6327,180.1560,16,40 ;
-496,2477.5659,-1557.4111,23.7818,358.5618,41,29 ;
-463,2491.4055,-1535.6182,23.5519,59.4337,11,11 ;
-461,2491.1179,-1529.3501,23.5688,56.2088,75,1 ;
-521,2491.4360,-1532.5398,23.5717,55.7102,25,118 ;
-496,2489.5791,-1518.4509,23.7588,269.8171,2,39 ;
-562,2482.6208,-1557.3427,23.6524,2.3099,10,10 ;
-468,2499.0034,-1538.0708,23.6439,335.4962,3,3 ;
-536,2520.1445,-1480.9065,23.7363,1.3232,37,1 ;
-533,2573.5979,-1489.6091,23.7162,87.7542,77,1 ;
-521,2554.3159,-1367.9281,31.7872,241.1393,36,0 ;
-536,2411.6626,-1390.6456,24.0787,268.8195,26,96 ;
-533,1819.8600,-1403.5051,13.1363,89.9457,73,1 ;
-496,1809.4696,-1432.1268,13.0139,274.7705,42,42 ;
-542,1676.1560,-1106.9868,23.6493,268.6964,113,92 ;
-589,1649.5083,-1102.5532,23.5644,270.0267,31,31 ;
-589,1658.4116,-1088.9274,23.6777,89.2744,75,1 ;
-482,1620.9778,-1089.5054,24.0216,89.9049,48,48 ;
-518,1629.4741,-1103.3231,23.5760,268.5257,9,39 ;
-518,1640.7035,-1046.7117,23.5692,359.8533,17,1 ;
-482,1660.7136,-1016.1744,23.9634,11.4114,20,117 ;
-496,1689.9340,-1035.6692,23.6231,178.1297,20,20 ;
-429,1712.4379,-1005.7189,23.5937,351.9539,13,13 ;
-542,1731.1282,-1009.0837,23.6852,348.1700,119,113 ;
-496,1757.4509,-1037.7462,23.8359,180.9093,39,39 ;
-475,1770.8777,-1061.7106,23.7646,179.4640,26,104 ;
-496,1780.0526,-1069.8851,23.6770,359.9332,9,14 ;
-536,1762.5533,-1085.8549,23.6983,180.7030,57,96 ;
-518,1740.1122,-1085.8320,23.6318,181.0830,74,59 ;
-542,1726.2168,-1085.2207,23.6669,182.7872,122,113 ;
-549,1699.9979,-1068.8979,23.6031,357.9710,75,39 ;
-400,1713.3634,-1061.1498,23.9985,181.1158,36,1 ;
-496,1640.7484,-1038.1542,23.6150,358.3014,0,0 ;
-542,1594.9391,-1009.9454,23.6493,185.8625,13,118 ;
-482,1577.2344,-1040.1863,24.0271,141.0052,52,52 ;
-536,1562.9835,-1011.3809,23.6439,359.5882,12,1 ;
-496,1546.6223,-1026.6492,23.6228,162.1279,74,72 ;
-463,1577.0701,-1008.9494,23.4464,165.1993,7,7 ;
-521,1592.5432,-1057.9313,23.4784,297.7319,118,118 ;
-461,1651.4000,-1015.1333,23.4877,216.5875,88,1 ;
-463,1694.4098,-1003.8555,23.4463,216.3939,11,11 ;
-521,1748.7355,-1039.5499,23.5323,15.0375,134,95 ;
-542,1657.5460,-1137.0397,23.6497,178.3330,24,118 ;
-589,1616.6453,-1128.1941,23.5644,92.6623,23,23 ;
-484,2947.8057,-2052.6362,0.4738,359.4145,50,32 ;
-456,2313.5281,-2310.5837,13.7196,133.0174,91,63 ;
-455,2264.7073,-2335.1189,13.9838,314.5604,84,58 ;
-455,2612.2107,-2198.1665,13.9835,180.4830,84,31 ;
-525,2572.6416,-2240.2261,13.4192,93.6711,17,20 ;
-453,2505.7712,-2269.1885,-0.3120,268.6544,56,56 ;
-453,2307.9446,-2414.1733,-0.2071,314.9561,56,56 ;
-455,2189.0393,-2649.3572,13.9833,266.7652,1,31 ;
-525,2226.0032,-2677.0149,13.4329,4.2993,18,20 ;
-552,2200.3921,-2638.4026,13.2521,357.1788,56,56 ;
-422,2203.6013,-2595.3611,13.5221,87.9727,83,57 ;
-422,2206.7747,-2527.8098,13.5299,94.0067,67,59 ;
-525,2510.2681,-2629.5205,13.5251,88.6646,22,30 ;
-456,2491.5276,-2671.4338,13.8094,180.9983,110,93 ;
-455,2498.7861,-2572.7219,14.0866,357.5439,84,15 ;
-422,2516.4746,-2452.8889,13.6216,44.3283,96,25 ;
-470,2764.3169,-2383.4829,13.6235,181.4826,43,0 ;
-470,2779.5730,-2440.3181,13.6296,267.8545,43,0 ;
-470,2737.3740,-2485.6760,13.6431,87.2884,43,0 ;
-400,2744.2754,-2447.5588,13.7433,179.2557,40,84 ;
-400,2765.2122,-2531.8735,13.7407,359.5258,40,84 ;
-400,2784.2922,-2387.0547,13.7279,89.7828,40,84 ;
-400,2753.1467,-2387.5439,13.7358,1.3794,40,84 ;
-552,2656.9172,-2451.1821,13.3204,93.4499,49,49 ;
-422,2428.1499,-2492.5559,13.6317,45.6813,111,31 ;
-530,2435.3372,-2434.5278,13.3911,41.7356,112,1 ;
-530,2418.4021,-2506.5557,13.4131,273.4680,114,1 ;
-530,2205.8362,-2571.1787,13.3094,85.7644,119,1 ;
+413,327.8443,-1809.2729,4.5733,359.3342,91,1 ;
+439,311.7234,-1809.8577,4.3552,179.9755,54,38 ;
+496,334.3875,-1788.6018,4.7803,358.1175,41,41 ;
+414,383.4589,-1740.6958,8.8571,358.6929,28,1 ;
+467,740.4370,-1793.5476,12.9180,349.2087,58,8 ;
+473,823.7594,-2066.2686,-0.1017,112.6381,56,53 ;
+467,892.0507,-1797.3351,13.4070,175.4098,60,1 ;
+467,944.9136,-1813.5590,13.0146,350.0614,68,8 ;
+491,1096.8945,-1878.8030,13.3031,178.1535,71,72 ;
+496,1206.2454,-1879.0792,13.3341,88.5190,77,26 ;
+541,288.7144,-1158.0404,80.5349,221.9677,0,6 ;
+589,346.9617,-1197.2283,76.2875,25.8040,70,100 ;
+411,407.0925,-1151.5203,76.6354,148.1414,130,130 ;
+562,481.5187,-1089.5427,82.1051,359.1924,0,3 ;
+426,565.9165,-1067.1946,73.1332,35.3833,42,42 ;
+451,228.7167,-1398.7766,51.2917,51.4378,131,74 ;
+429,133.9096,-1492.1663,18.5958,57.1215,119,1 ;
+562,150.7156,-1473.8826,24.9243,5.9389,111,118 ;
+411,166.3856,-1340.8578,69.4391,190.4770,128,51 ;
+603,172.0262,-1341.3418,69.5661,168.2207,44,40 ;
+429,248.8978,-1355.4116,52.8828,279.1667,53,53 ;
+451,251.6047,-1359.8792,52.7134,300.5452,17,117 ;
+562,299.8025,-1331.8171,53.2744,72.7622,44,80 ;
+405,406.4772,-1264.2565,50.2499,24.0160,24,1 ;
+535,423.6223,-1266.3209,51.3450,21.9438,54,77 ;
+477,261.5547,-1220.3823,74.6478,183.4546,99,100 ;
+535,276.9328,-1267.3054,73.7098,302.5802,6,4 ;
+496,280.3806,-1255.7952,73.6166,281.7693,46,66 ;
+411,282.9343,-1160.4200,80.6401,223.5830,42,42 ;
+589,569.3154,-1131.7330,50.2950,243.4572,42,39 ;
+411,617.2254,-1102.6525,46.5131,126.8061,64,1 ;
+562,687.5812,-1072.8162,49.1274,62.7814,76,45 ;
+496,724.4913,-995.4954,52.3857,89.4483,79,110 ;
+545,795.9840,-840.3973,60.4526,174.5740,31,96 ;
+522,846.9828,-905.6497,68.3458,342.5805,138,94 ;
+534,831.9914,-858.8560,69.6527,199.3811,65,44 ;
+535,839.4457,-893.5928,68.5340,21.2260,3,1 ;
+477,912.5916,-832.0980,92.1407,218.1897,108,127 ;
+429,942.3409,-842.2905,93.9553,49.3921,107,69 ;
+429,934.4840,-856.8366,93.1734,204.4157,135,30 ;
+562,966.6584,-842.2115,95.4213,208.6852,103,88 ;
+451,979.1476,-831.5278,95.3282,27.7639,22,108 ;
+589,1024.2820,-777.6995,102.7277,142.3072,128,91 ;
+429,1028.9191,-810.0178,101.6239,200.6103,20,71 ;
+522,1099.2415,-818.4706,86.5177,153.5570,135,31 ;
+522,1256.5295,-804.6979,83.7138,117.1748,116,130 ;
+541,1248.1569,-804.1443,83.7656,167.9414,24,3 ;
+487,1291.7155,-786.8652,96.6376,1.5839,29,42 ;
+589,1352.0870,-622.1930,108.8587,24.2312,125,64 ;
+477,1460.3851,-633.6793,95.5530,179.4419,0,1 ;
+411,1108.8185,-732.7200,100.2283,87.5487,116,1 ;
+429,1515.2770,-695.3987,94.4297,99.0699,3,1 ;
+522,1518.6567,-688.1443,94.3202,127.6349,134,60 ;
+535,1516.9452,-765.4361,79.7405,142.5422,66,1 ;
+458,1530.6602,-814.2603,71.8145,269.5966,125,32 ;
+560,1536.7003,-841.9440,64.3992,91.2450,101,95 ;
+506,1515.6777,-879.8586,61.2318,73.2864,106,83 ;
+451,1464.4681,-902.8252,54.5429,174.4412,27,31 ;
+429,1429.4169,-883.6697,50.4307,45.8139,103,37 ;
+589,1088.9662,-644.2655,113.1492,338.4004,20,50 ;
+424,1113.3992,-657.0714,113.2539,1.8936,24,53 ;
+411,1048.4277,-639.6287,119.8443,62.9709,81,124 ;
+550,1038.2852,-640.5812,119.9407,3.9959,18,96 ;
+558,1011.0540,-659.9860,120.7726,34.0075,131,53 ;
+562,1006.7906,-663.9238,120.8018,212.6702,68,8 ;
+560,946.7752,-705.8109,121.9154,208.3881,17,1 ;
+535,912.4982,-665.0076,116.7563,234.0564,136,91 ;
+477,866.9702,-712.0836,105.4297,301.5712,75,1 ;
+518,851.5046,-741.6164,94.8512,223.7018,13,1 ;
+603,887.4414,-782.3810,101.1163,325.3539,58,1 ;
+534,834.7188,-754.2109,85.0352,221.3681,120,0 ;
+545,856.4266,-825.8338,89.3121,35.0684,23,94 ;
+545,812.7324,-768.6061,76.6226,240.9842,12,12 ;
+562,792.6622,-824.7413,69.7717,10.8903,101,4 ;
+405,211.8928,-1419.0681,13.1531,135.6236,24,1 ;
+461,203.5655,-1441.0552,12.6881,319.3540,43,1 ;
+482,216.6308,-1431.9065,13.3691,313.9951,48,48 ;
+462,338.6057,-1340.7114,14.1075,116.4867,53,61 ;
+439,343.3987,-1353.3427,14.4033,299.2459,43,21 ;
+542,412.7446,-1318.5144,14.6645,210.7711,112,131 ;
+521,411.1232,-1311.2087,14.5024,140.9818,36,0 ;
+562,500.5935,-1304.4486,16.8673,309.5460,19,113 ;
+521,531.3096,-1315.9927,16.8135,188.1211,74,74 ;
+589,534.3378,-1291.4104,17.0133,1.2697,127,47 ;
+463,542.3274,-1292.8159,16.7824,341.9847,79,3 ;
+496,556.2568,-1291.2498,17.0149,180.9516,61,21 ;
+461,587.8506,-1279.8562,15.9628,75.5049,57,94 ;
+463,588.5497,-1282.7085,15.7110,71.1037,20,60 ;
+589,569.1940,-1264.3147,16.4483,105.7125,75,1 ;
+474,580.0232,-1310.1290,13.6310,190.1793,54,114 ;
+429,760.3118,-1026.9938,23.8337,171.0469,25,78 ;
+411,825.8176,-1006.6130,27.4827,38.8900,123,1 ;
+429,973.4509,-930.9051,42.1739,91.9582,71,134 ;
+463,892.2068,-944.0689,41.3930,346.6371,46,55 ;
+496,1039.0024,-925.8621,42.0801,3.8901,95,87 ;
+496,1028.1858,-887.8458,41.8743,18.1745,76,26 ;
+534,1091.6672,-934.4342,42.7434,181.8923,53,53 ;
+496,1196.4460,-887.2950,42.7778,4.9401,13,118 ;
+461,1184.3699,-898.7025,42.8468,50.8006,26,5 ;
+479,1307.0081,-871.5775,39.3723,88.4695,20,119 ;
+482,1307.4617,-865.4689,39.6982,269.2831,52,52 ;
+543,1307.4490,-856.3735,39.3962,86.8428,32,8 ;
+463,1305.3447,-860.6293,39.1185,240.4489,102,77 ;
+567,1327.1772,-856.8694,39.4427,355.0141,96,74 ;
+458,1422.6184,-915.6990,35.9254,173.6657,76,95 ;
+439,1455.1505,-920.9677,37.4997,5.5316,137,65 ;
+550,1025.4679,-981.0638,42.4947,275.3589,109,23 ;
+576,929.9745,-996.4139,37.8311,274.6470,68,96 ;
+404,863.1107,-1056.6387,24.8362,216.7097,119,50 ;
+463,868.9804,-1068.5559,24.6418,26.0884,90,87 ;
+439,783.3749,-1356.8221,13.4354,272.4747,0,119 ;
+463,733.6376,-1347.5618,13.0519,258.9138,22,22 ;
+429,783.3834,-1347.7704,13.3739,90.3087,52,94 ;
+536,1696.6791,-2097.0415,13.2841,179.3459,30,96 ;
+542,1662.7777,-2110.7148,13.2900,90.3870,45,92 ;
+400,1707.4287,-2142.6919,13.6471,229.0505,40,110 ;
+567,1725.0461,-2130.4683,13.4259,180.7540,88,64 ;
+412,1724.0801,-2092.9343,13.3837,178.9921,91,31 ;
+536,1747.4430,-2097.3616,13.2870,179.0798,32,1 ;
+576,1793.3020,-2149.7551,13.2392,180.6801,72,1 ;
+536,1772.7323,-2096.0732,13.2853,181.7548,37,1 ;
+549,1948.6121,-2114.0183,13.2416,90.8657,79,39 ;
+496,1948.0044,-2126.9031,13.2611,269.0660,37,19 ;
+463,1941.4159,-2139.8730,13.0970,153.7429,53,53 ;
+414,1924.2328,-2123.9316,13.6772,359.7333,95,1 ;
+576,1938.4186,-2089.9116,13.1725,87.9823,74,8 ;
+518,1979.0964,-2065.5842,13.1683,1.5510,95,1 ;
+482,1998.8810,-2095.2688,13.6603,182.4098,110,110 ;
+482,2079.6143,-2007.4128,13.6618,267.6052,66,66 ;
+543,2070.6382,-1995.7777,13.3738,177.5505,32,8 ;
+463,2064.7144,-1998.2357,13.0870,323.5498,19,19 ;
+475,1981.1689,-1985.4224,13.3487,0.0153,33,0 ;
+443,2002.9520,-1940.1552,13.9832,90.4363,20,1 ;
+413,2062.2634,-1904.0969,13.6286,358.4263,91,1 ;
+426,2065.5415,-1920.3318,13.2901,179.3121,53,53 ;
+468,2120.8396,-1874.5211,13.2159,331.0408,6,6 ;
+448,2125.2058,-1817.1385,13.1554,304.3319,3,6 ;
+448,2124.9956,-1814.4016,13.1552,307.8773,3,6 ;
+448,2124.6506,-1811.7200,13.1522,308.4132,3,6 ;
+489,2121.7656,-1783.0730,13.5319,181.4553,112,120 ;
+600,2106.7954,-1783.6602,13.0983,178.3882,32,8 ;
+400,2114.6040,-1783.4563,13.4944,359.1006,28,119 ;
+546,2095.9749,-1800.3145,13.1088,268.3826,78,38 ;
+400,2096.2324,-1819.9232,13.4752,269.6763,75,1 ;
+554,1928.4520,-1795.0306,13.4708,269.1664,15,32 ;
+475,1976.6083,-1727.6584,15.7685,270.5382,33,0 ;
+400,2014.2510,-1737.9341,13.6451,89.6673,40,1 ;
+546,2017.8608,-1707.7689,13.2712,91.0950,3,87 ;
+496,1967.9211,-1658.8986,15.7506,88.9660,52,69 ;
+474,2026.2841,-1649.0118,13.3172,268.3413,105,1 ;
+429,1990.6079,-1579.2163,13.2836,74.1057,14,14 ;
+475,2014.0079,-1597.3103,13.3757,134.4442,37,0 ;
+466,2057.4875,-1636.5558,13.2887,269.2682,2,76 ;
+496,2062.4905,-1694.4796,13.3308,89.8789,71,107 ;
+533,2062.6511,-1738.6663,13.2560,90.7603,74,1 ;
+412,2238.7908,-1630.9789,15.5684,339.3786,29,8 ;
+534,2284.0630,-1681.7241,13.8912,0.3629,53,53 ;
+475,2271.4482,-1634.8553,15.1246,1.4485,9,39 ;
+463,2289.7493,-1685.7275,13.2727,338.6942,36,36 ;
+496,2296.9233,-1644.5267,14.5451,178.7794,17,1 ;
+474,2328.1565,-1677.1449,14.1746,268.4948,74,1 ;
+545,2319.2271,-1712.0625,13.3579,179.0224,44,96 ;
+475,2416.0103,-1707.7166,13.5772,180.6127,17,1 ;
+400,2443.6687,-1637.1934,13.3619,180.6244,10,10 ;
+404,2516.5413,-1672.2059,13.6568,247.4270,123,92 ;
+600,2501.3005,-1685.7114,13.2052,54.2230,43,8 ;
+482,2473.6335,-1688.4501,13.6213,1.3507,34,34 ;
+426,2500.2908,-1755.7277,13.1737,179.5942,53,53 ;
+414,2445.8567,-1762.6874,13.6820,179.0055,9,1 ;
+479,2452.3486,-1784.1185,13.3435,358.6820,60,35 ;
+475,2498.7920,-1953.6908,13.2268,180.0759,33,0 ;
+482,2482.8601,-1953.4886,13.5429,359.9536,32,32 ;
+475,2731.4260,-1937.1626,13.3474,270.9490,37,0 ;
+489,2685.5461,-1986.3003,13.6939,358.8623,120,123 ;
+536,2685.3967,-2021.3516,13.2650,179.1453,57,96 ;
+475,2644.9438,-1989.3313,13.3576,178.5030,56,29 ;
+547,2787.8420,-1876.2371,9.5681,179.4587,123,1 ;
+426,2757.7773,-1847.0181,9.4532,21.0801,37,37 ;
+479,2732.6860,-1875.2740,9.3877,359.7763,45,32 ;
+567,2706.5757,-1843.5668,9.3669,339.9568,97,96 ;
+458,2679.1792,-1826.0692,9.2646,129.6775,113,1 ;
+439,2657.7949,-1812.8765,9.1989,98.6444,67,8 ;
+461,2697.0117,-1836.8411,9.0454,131.7257,61,1 ;
+463,2757.8318,-1878.8939,9.2421,331.1535,7,122 ;
+521,2813.1143,-1822.5189,9.5068,56.5744,87,118 ;
+521,2808.0325,-1669.0962,9.5088,168.8724,92,3 ;
+466,2829.7585,-1699.7444,9.7443,256.3983,16,76 ;
+545,2825.0059,-1718.6702,9.8159,77.5273,30,1 ;
+588,2686.6833,-1672.3564,9.3456,1.2872,1,1 ;
+546,2657.6079,-1701.7725,9.0416,92.9747,113,78 ;
+521,2654.6636,-1692.5939,8.8779,251.8571,36,0 ;
+463,2696.4189,-1669.2604,9.0249,152.7104,11,11 ;
+474,2813.8862,-1429.2637,16.0126,357.9624,83,1 ;
+546,2792.6982,-1432.1294,19.9428,95.9562,119,62 ;
+521,2819.5498,-1427.8861,27.7283,97.0200,75,13 ;
+429,2796.6160,-1428.0923,35.7734,355.7729,1,2 ;
+400,2794.7859,-1464.7653,40.1536,180.1253,75,84 ;
+418,2816.5820,-1431.5497,40.1556,268.4159,114,114 ;
+521,2794.0625,-1576.2109,10.4993,252.9832,118,118 ;
+600,2796.4966,-1562.6956,10.6452,89.5535,83,13 ;
+426,2822.3193,-1553.4038,10.6672,89.8755,42,42 ;
+533,2807.4377,-1540.4016,10.6310,180.0459,73,1 ;
+414,2772.3438,-1614.6322,11.0090,270.6050,43,1 ;
+589,2855.3896,-1354.9142,10.8385,271.7889,40,1 ;
+521,2850.3010,-1323.3470,10.8710,43.7938,92,3 ;
+562,2845.5762,-1287.0035,18.8725,276.4800,62,62 ;
+463,2802.9653,-1174.3158,25.0878,148.6355,22,22 ;
+589,2814.8518,-1186.5088,24.9740,125.2599,43,1 ;
+496,2827.8259,-1165.8298,24.8425,74.4954,41,29 ;
+419,2828.4297,-1193.2813,24.7035,319.2678,47,76 ;
+521,2686.6938,-1102.2723,68.9335,36.2440,25,118 ;
+536,2570.6431,-1101.5728,65.9616,224.2815,30,96 ;
+461,2589.6411,-967.6470,80.9740,54.8113,88,1 ;
+543,2561.0659,-955.9353,82.5712,189.2468,32,8 ;
+543,2499.9092,-961.6536,82.0865,177.1486,43,8 ;
+478,2492.5671,-951.8682,82.2364,268.9169,66,1 ;
+463,2450.5344,-957.0054,79.5994,88.6032,79,79 ;
+521,2359.4319,-648.6396,127.7032,321.5916,36,0 ;
+478,2368.4819,-651.1127,127.6424,221.5063,59,1 ;
+529,2497.5225,-1063.2612,69.7644,180.0623,42,42 ;
+412,2503.8013,-1024.9954,69.9222,354.6204,37,8 ;
+536,2485.7839,-1015.6508,65.0513,332.0788,57,96 ;
+475,2453.7122,-1011.7231,59.5763,354.2991,37,0 ;
+549,2432.1267,-1056.5386,54.0339,182.6494,91,35 ;
+521,2366.8833,-1052.4576,53.7198,162.4203,118,118 ;
+463,2334.8330,-1052.5548,51.8916,205.8942,7,7 ;
+400,2328.0398,-1052.3500,52.4471,178.7152,40,1 ;
+468,2368.9734,-1029.3669,53.9112,303.9771,53,53 ;
+521,2222.1743,-1043.8972,57.4453,287.0623,92,3 ;
+475,2200.8208,-1000.4743,62.1100,337.4120,41,29 ;
+536,2073.8337,-972.3666,48.8145,121.6684,9,1 ;
+461,2057.1284,-987.3378,45.8448,41.0353,37,1 ;
+549,2032.1614,-966.3978,40.8893,144.2881,74,39 ;
+521,1994.0328,-1089.3951,24.1790,265.7199,115,118 ;
+536,1910.2012,-1117.5193,25.4453,359.7224,12,1 ;
+576,1934.3488,-1118.8567,26.0909,167.6531,84,96 ;
+540,1991.7618,-1119.2262,26.6329,88.5620,42,42 ;
+549,2090.1191,-1141.0527,25.2550,91.9199,83,36 ;
+536,2116.0889,-1059.6656,25.4645,1.6788,30,96 ;
+549,2161.8665,-1148.1637,24.0918,268.7138,84,36 ;
+576,2162.5032,-1162.9884,23.4278,270.5314,67,1 ;
+540,2147.6460,-1180.4316,23.6805,271.2742,53,53 ;
+554,2161.5271,-1192.5657,23.9013,270.6950,14,32 ;
+521,2164.0178,-1178.0918,23.3890,68.9158,74,74 ;
+463,2145.5957,-1162.0776,23.3554,273.2266,57,55 ;
+475,2148.7520,-1242.4739,24.4964,2.1731,9,39 ;
+536,2105.4612,-1242.9531,24.7791,1.3025,71,96 ;
+475,2033.9213,-1285.0781,20.7583,269.6826,17,1 ;
+479,2033.2328,-1294.9094,20.7262,90.1861,116,34 ;
+536,2095.4097,-1365.6405,23.7217,359.4201,26,96 ;
+567,2136.8682,-1366.1549,24.9118,181.6538,97,96 ;
+554,2156.6670,-1408.6438,25.6234,89.8769,15,32 ;
+529,2150.2095,-1423.7836,25.1728,270.8055,53,53 ;
+412,2157.4702,-1454.6027,25.3766,272.0728,9,1 ;
+482,2168.9004,-1503.8928,24.0567,264.3123,66,66 ;
+554,2191.4373,-1465.7140,25.6253,90.8413,45,32 ;
+489,2185.0557,-1434.4803,25.6846,93.1798,13,118 ;
+529,2229.7317,-1367.4005,23.6257,273.8516,62,62 ;
+405,2229.4822,-1348.8889,23.8603,87.4558,75,1 ;
+600,2230.1382,-1359.4955,23.7003,269.3415,104,72 ;
+536,2196.1318,-1278.5265,24.2447,358.3134,32,1 ;
+479,2426.9795,-1241.6071,24.0514,176.5720,40,29 ;
+603,2414.5007,-1223.4979,24.7468,354.3562,69,1 ;
+475,2431.3196,-1241.5726,24.1538,177.5767,2,39 ;
+463,2430.6926,-1220.7517,24.9012,142.6704,19,19 ;
+467,2556.9187,-1211.2632,54.2710,92.0357,68,8 ;
+475,2559.0198,-1194.6180,61.2624,177.0269,17,1 ;
+412,2491.1543,-1299.4158,32.1578,276.4995,37,8 ;
+554,2489.9026,-1292.7750,32.0910,246.3011,45,32 ;
+400,2493.6797,-1276.2856,33.0028,268.8489,40,110 ;
+475,2390.2915,-1487.7120,23.6330,90.8244,41,29 ;
+400,2390.6387,-1503.7330,23.9272,270.7136,62,1 ;
+463,2389.4578,-1497.8422,23.3752,243.2236,79,79 ;
+545,2396.8088,-1536.9807,23.8111,0.1546,50,1 ;
+479,2407.3284,-1538.0587,23.7968,0.6749,59,36 ;
+466,2412.8625,-1537.3831,23.7432,357.6566,78,76 ;
+475,2449.7637,-1556.8450,23.8046,1.3418,17,1 ;
+529,2454.6299,-1557.0045,23.6327,180.1560,16,40 ;
+496,2477.5659,-1557.4111,23.7818,358.5618,41,29 ;
+463,2491.4055,-1535.6182,23.5519,59.4337,11,11 ;
+461,2491.1179,-1529.3501,23.5688,56.2088,75,1 ;
+521,2491.4360,-1532.5398,23.5717,55.7102,25,118 ;
+496,2489.5791,-1518.4509,23.7588,269.8171,2,39 ;
+562,2482.6208,-1557.3427,23.6524,2.3099,10,10 ;
+468,2499.0034,-1538.0708,23.6439,335.4962,3,3 ;
+536,2520.1445,-1480.9065,23.7363,1.3232,37,1 ;
+533,2573.5979,-1489.6091,23.7162,87.7542,77,1 ;
+521,2554.3159,-1367.9281,31.7872,241.1393,36,0 ;
+536,2411.6626,-1390.6456,24.0787,268.8195,26,96 ;
+533,1819.8600,-1403.5051,13.1363,89.9457,73,1 ;
+496,1809.4696,-1432.1268,13.0139,274.7705,42,42 ;
+542,1676.1560,-1106.9868,23.6493,268.6964,113,92 ;
+589,1649.5083,-1102.5532,23.5644,270.0267,31,31 ;
+589,1658.4116,-1088.9274,23.6777,89.2744,75,1 ;
+482,1620.9778,-1089.5054,24.0216,89.9049,48,48 ;
+518,1629.4741,-1103.3231,23.5760,268.5257,9,39 ;
+518,1640.7035,-1046.7117,23.5692,359.8533,17,1 ;
+482,1660.7136,-1016.1744,23.9634,11.4114,20,117 ;
+496,1689.9340,-1035.6692,23.6231,178.1297,20,20 ;
+429,1712.4379,-1005.7189,23.5937,351.9539,13,13 ;
+542,1731.1282,-1009.0837,23.6852,348.1700,119,113 ;
+496,1757.4509,-1037.7462,23.8359,180.9093,39,39 ;
+475,1770.8777,-1061.7106,23.7646,179.4640,26,104 ;
+496,1780.0526,-1069.8851,23.6770,359.9332,9,14 ;
+536,1762.5533,-1085.8549,23.6983,180.7030,57,96 ;
+518,1740.1122,-1085.8320,23.6318,181.0830,74,59 ;
+542,1726.2168,-1085.2207,23.6669,182.7872,122,113 ;
+549,1699.9979,-1068.8979,23.6031,357.9710,75,39 ;
+400,1713.3634,-1061.1498,23.9985,181.1158,36,1 ;
+496,1640.7484,-1038.1542,23.6150,358.3014,0,0 ;
+542,1594.9391,-1009.9454,23.6493,185.8625,13,118 ;
+482,1577.2344,-1040.1863,24.0271,141.0052,52,52 ;
+536,1562.9835,-1011.3809,23.6439,359.5882,12,1 ;
+496,1546.6223,-1026.6492,23.6228,162.1279,74,72 ;
+463,1577.0701,-1008.9494,23.4464,165.1993,7,7 ;
+521,1592.5432,-1057.9313,23.4784,297.7319,118,118 ;
+461,1651.4000,-1015.1333,23.4877,216.5875,88,1 ;
+463,1694.4098,-1003.8555,23.4463,216.3939,11,11 ;
+521,1748.7355,-1039.5499,23.5323,15.0375,134,95 ;
+542,1657.5460,-1137.0397,23.6497,178.3330,24,118 ;
+589,1616.6453,-1128.1941,23.5644,92.6623,23,23 ;
+484,2947.8057,-2052.6362,0.4738,359.4145,50,32 ;
+456,2313.5281,-2310.5837,13.7196,133.0174,91,63 ;
+455,2264.7073,-2335.1189,13.9838,314.5604,84,58 ;
+455,2612.2107,-2198.1665,13.9835,180.4830,84,31 ;
+525,2572.6416,-2240.2261,13.4192,93.6711,17,20 ;
+453,2505.7712,-2269.1885,-0.3120,268.6544,56,56 ;
+453,2307.9446,-2414.1733,-0.2071,314.9561,56,56 ;
+455,2189.0393,-2649.3572,13.9833,266.7652,1,31 ;
+525,2226.0032,-2677.0149,13.4329,4.2993,18,20 ;
+552,2200.3921,-2638.4026,13.2521,357.1788,56,56 ;
+422,2203.6013,-2595.3611,13.5221,87.9727,83,57 ;
+422,2206.7747,-2527.8098,13.5299,94.0067,67,59 ;
+525,2510.2681,-2629.5205,13.5251,88.6646,22,30 ;
+456,2491.5276,-2671.4338,13.8094,180.9983,110,93 ;
+455,2498.7861,-2572.7219,14.0866,357.5439,84,15 ;
+422,2516.4746,-2452.8889,13.6216,44.3283,96,25 ;
+470,2764.3169,-2383.4829,13.6235,181.4826,43,0 ;
+470,2779.5730,-2440.3181,13.6296,267.8545,43,0 ;
+470,2737.3740,-2485.6760,13.6431,87.2884,43,0 ;
+400,2744.2754,-2447.5588,13.7433,179.2557,40,84 ;
+400,2765.2122,-2531.8735,13.7407,359.5258,40,84 ;
+400,2784.2922,-2387.0547,13.7279,89.7828,40,84 ;
+400,2753.1467,-2387.5439,13.7358,1.3794,40,84 ;
+552,2656.9172,-2451.1821,13.3204,93.4499,49,49 ;
+422,2428.1499,-2492.5559,13.6317,45.6813,111,31 ;
+530,2435.3372,-2434.5278,13.3911,41.7356,112,1 ;
+530,2418.4021,-2506.5557,13.4131,273.4680,114,1 ;
+530,2205.8362,-2571.1787,13.3094,85.7644,119,1 ;
455,2152.5361,-2148.2825,13.9860,310.8004,1,31 ;
-439,1373.6738,-1634.1741,13.2790,271.5004,8,17 ;
-542,1362.9803,-1659.5125,13.1263,270.4668,32,92 ;
-475,1359.6680,-1749.6177,13.1843,0.0962,21,1 ;
-439,1401.3602,-1507.1211,13.4834,163.4146,67,8 ;
-475,1500.1357,-1487.4355,13.3556,91.3002,2,39 ;
-542,1797.1293,-1701.1102,13.2757,179.5340,31,93 ;
-521,1807.9387,-1688.3774,13.1068,105.3693,75,13 ;
-414,1781.8600,-1701.3483,13.5957,3.8341,25,1 ;
-475,306.7730,-1438.4087,27.7341,120.6372,33,0 ;
-475,1277.5547,-1610.1168,13.3511,90.3928,2,39 ;
-439,1670.6208,-1886.9011,13.4429,2.8833,65,79 ;
-414,1653.4976,-1837.6439,13.6400,1.1054,72,1 ;
-475,1145.1482,-1366.7389,13.5456,184.4175,2,39 ;
-418,2090.4797,-1556.7979,13.2113,181.8175,114,114 ;
-554,2224.8198,-2211.0693,13.6286,314.5282,45,32 ;
-403,2201.2490,-2241.3311,14.1532,135.1536,30,1 ;
-403,2196.7461,-2236.3652,14.1486,134.2909,28,1 ;
-403,2208.1824,-2296.9404,15.3708,136.0373,25,1 ;
-439,2393.2522,-1927.3457,13.2782,179.4218,65,79 ;
-475,2383.3689,-1928.1165,13.1844,179.4976,56,29 ;
-521,2376.8760,-1929.3613,12.9563,341.1395,87,118 ;
-439,2349.1824,-2000.2684,13.2666,267.0585,25,78 ;
-420,1775.6141,-1860.0100,13.2745,269.2006,6,1 ;
-420,1763.0121,-1860.0037,13.2723,271.2998,6,1 ;
-420,1748.9358,-1859.9502,13.2721,270.3943,6,1 ;
-420,1734.6754,-1859.9305,13.2740,270.5646,6,1 ;
-542,1512.3342,-2211.7639,13.2940,359.3842,45,92 ;
-518,1546.2539,-2211.5557,13.2254,178.7042,37,0 ;
-521,1560.0939,-2243.5127,13.1179,94.0584,118,118 ;
-429,1441.7079,-2225.1514,13.2265,1.5921,13,13 ;
-518,1454.6436,-2224.9185,13.2177,0.2168,41,29 ;
-496,1408.1469,-2242.1521,13.2630,359.3946,9,14 ;
-439,1398.1570,-2225.4885,13.4427,179.6260,37,78 ;
-475,1391.6555,-2241.8704,13.3495,180.5889,33,0 ;
-542,1364.5348,-2242.7036,13.2899,270.7713,119,113 ;
-542,1404.6641,-2314.1211,13.2898,180.5298,122,113 ;
-518,1411.2491,-2347.3430,13.2101,180.0483,9,39 ;
-496,1391.5173,-2364.2131,13.2633,179.7053,0,0 ;
+439,1373.6738,-1634.1741,13.2790,271.5004,8,17 ;
+542,1362.9803,-1659.5125,13.1263,270.4668,32,92 ;
+475,1359.6680,-1749.6177,13.1843,0.0962,21,1 ;
+439,1401.3602,-1507.1211,13.4834,163.4146,67,8 ;
+475,1500.1357,-1487.4355,13.3556,91.3002,2,39 ;
+542,1797.1293,-1701.1102,13.2757,179.5340,31,93 ;
+521,1807.9387,-1688.3774,13.1068,105.3693,75,13 ;
+414,1781.8600,-1701.3483,13.5957,3.8341,25,1 ;
+475,306.7730,-1438.4087,27.7341,120.6372,33,0 ;
+475,1277.5547,-1610.1168,13.3511,90.3928,2,39 ;
+439,1670.6208,-1886.9011,13.4429,2.8833,65,79 ;
+414,1653.4976,-1837.6439,13.6400,1.1054,72,1 ;
+475,1145.1482,-1366.7389,13.5456,184.4175,2,39 ;
+418,2090.4797,-1556.7979,13.2113,181.8175,114,114 ;
+554,2224.8198,-2211.0693,13.6286,314.5282,45,32 ;
+403,2201.2490,-2241.3311,14.1532,135.1536,30,1 ;
+403,2196.7461,-2236.3652,14.1486,134.2909,28,1 ;
+403,2208.1824,-2296.9404,15.3708,136.0373,25,1 ;
+439,2393.2522,-1927.3457,13.2782,179.4218,65,79 ;
+475,2383.3689,-1928.1165,13.1844,179.4976,56,29 ;
+521,2376.8760,-1929.3613,12.9563,341.1395,87,118 ;
+439,2349.1824,-2000.2684,13.2666,267.0585,25,78 ;
+420,1775.6141,-1860.0100,13.2745,269.2006,6,1 ;
+420,1763.0121,-1860.0037,13.2723,271.2998,6,1 ;
+420,1748.9358,-1859.9502,13.2721,270.3943,6,1 ;
+420,1734.6754,-1859.9305,13.2740,270.5646,6,1 ;
+542,1512.3342,-2211.7639,13.2940,359.3842,45,92 ;
+518,1546.2539,-2211.5557,13.2254,178.7042,37,0 ;
+521,1560.0939,-2243.5127,13.1179,94.0584,118,118 ;
+429,1441.7079,-2225.1514,13.2265,1.5921,13,13 ;
+518,1454.6436,-2224.9185,13.2177,0.2168,41,29 ;
+496,1408.1469,-2242.1521,13.2630,359.3946,9,14 ;
+439,1398.1570,-2225.4885,13.4427,179.6260,37,78 ;
+475,1391.6555,-2241.8704,13.3495,180.5889,33,0 ;
+542,1364.5348,-2242.7036,13.2899,270.7713,119,113 ;
+542,1404.6641,-2314.1211,13.2898,180.5298,122,113 ;
+518,1411.2491,-2347.3430,13.2101,180.0483,9,39 ;
+496,1391.5173,-2364.2131,13.2633,179.7053,0,0 ;
521,1365.7269,-2351.5515,13.1069,87.0619,92,3 ;
diff --git a/amx/scriptfiles/vehicles/ls_law.txt b/amx/scriptfiles/vehicles/ls_law.txt
index 1a54fe1..63cc85f 100644
--- a/amx/scriptfiles/vehicles/ls_law.txt
+++ b/amx/scriptfiles/vehicles/ls_law.txt
@@ -1,24 +1,24 @@
-596,1554.5928,-1615.0944,13.1075,143.0,0,1 ;
-596,1560.2781,-1614.7255,13.1065,143.0,0,1 ;
-596,1565.3577,-1615.1208,13.1006,143.0,0,1 ;
-596,1570.3990,-1615.1421,13.1035,143.0,0,1 ;
-596,1575.5455,-1615.0767,13.1051,143.0,0,1 ;
-427,1600.4679,-1607.5685,13.6005,88.3196,0,1 ;
-427,1599.9907,-1613.6184,13.5959,89.1377,0,1 ;
-427,1600.0579,-1619.9817,13.5981,89.7130,0,1 ;
-427,1599.8956,-1626.2255,13.5964,89.2148,0,1 ;
-596,1602.4196,-1683.8865,5.6119,269.8652,0,1 ;
-596,1591.4985,-1711.0421,5.6128,0.0437,0,1 ;
-596,1602.2015,-1687.9944,5.6107,89.8454,0,1 ;
-596,1602.0392,-1692.0045,5.6110,89.1947,0,1 ;
-596,1595.4047,-1711.5936,5.6116,180.3378,0,1 ;
-523,1582.1798,-1667.0845,5.4650,240.5349,0,0 ;
-523,1582.3419,-1669.2539,5.4650,239.3729,0,0 ;
-523,1582.1704,-1671.2072,5.4657,237.9856,0,0 ;
-523,1582.1514,-1673.4630,5.4652,238.0086,0,0 ;
-574,1526.7522,-1655.7896,5.6158,270.8942,26,26 ;
-574,1526.7056,-1652.4664,5.6158,270.6263,26,26 ;
-574,1526.5553,-1642.8456,5.6158,180.3993,26,26 ;
-574,1530.7841,-1642.8046,5.6158,179.2186,26,26 ;
+596,1554.5928,-1615.0944,13.1075,143.0,0,1 ;
+596,1560.2781,-1614.7255,13.1065,143.0,0,1 ;
+596,1565.3577,-1615.1208,13.1006,143.0,0,1 ;
+596,1570.3990,-1615.1421,13.1035,143.0,0,1 ;
+596,1575.5455,-1615.0767,13.1051,143.0,0,1 ;
+427,1600.4679,-1607.5685,13.6005,88.3196,0,1 ;
+427,1599.9907,-1613.6184,13.5959,89.1377,0,1 ;
+427,1600.0579,-1619.9817,13.5981,89.7130,0,1 ;
+427,1599.8956,-1626.2255,13.5964,89.2148,0,1 ;
+596,1602.4196,-1683.8865,5.6119,269.8652,0,1 ;
+596,1591.4985,-1711.0421,5.6128,0.0437,0,1 ;
+596,1602.2015,-1687.9944,5.6107,89.8454,0,1 ;
+596,1602.0392,-1692.0045,5.6110,89.1947,0,1 ;
+596,1595.4047,-1711.5936,5.6116,180.3378,0,1 ;
+523,1582.1798,-1667.0845,5.4650,240.5349,0,0 ;
+523,1582.3419,-1669.2539,5.4650,239.3729,0,0 ;
+523,1582.1704,-1671.2072,5.4657,237.9856,0,0 ;
+523,1582.1514,-1673.4630,5.4652,238.0086,0,0 ;
+574,1526.7522,-1655.7896,5.6158,270.8942,26,26 ;
+574,1526.7056,-1652.4664,5.6158,270.6263,26,26 ;
+574,1526.5553,-1642.8456,5.6158,180.3993,26,26 ;
+574,1530.7841,-1642.8046,5.6158,179.2186,26,26 ;
416,2033.1270,-1432.2743,17.2845,180.0169,1,3 ;
-416,2016.3477,-1414.9769,17.1412,86.7151,1,3 ;
+416,2016.3477,-1414.9769,17.1412,86.7151,1,3 ;
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/lv_airport.txt b/amx/scriptfiles/vehicles/lv_airport.txt
index 5143449..cbcccce 100644
--- a/amx/scriptfiles/vehicles/lv_airport.txt
+++ b/amx/scriptfiles/vehicles/lv_airport.txt
@@ -36,4 +36,4 @@
422,1325.3158,1278.7190,10.8037,180.6936,101,25 ; bobcat
505,1282.6981,1304.3754,10.9647,82.8840,76,102 ; rancher
407,1282.0891,1477.3781,11.0577,244.1416,3,1 ; fire 1
-407,1312.9038,1580.9365,11.0562,272.9746,3,1 ; fire 2
+407,1312.9038,1580.9365,11.0562,272.9746,3,1 ; fire 2
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/lv_gen.txt b/amx/scriptfiles/vehicles/lv_gen.txt
index a8a996f..c10bd9a 100644
--- a/amx/scriptfiles/vehicles/lv_gen.txt
+++ b/amx/scriptfiles/vehicles/lv_gen.txt
@@ -5,251 +5,251 @@
409,2176.3467,1676.1738,10.6203,179.9265,1,1 ; Limo
409,2035.1099,1917.6454,11.9762,180.5781,1,1 ; Limo
587,2075.4963,1490.6589,10.3973,0.9207,10,10 ; Euros
-451,2148.8706,1398.3688,10.5208,359.6848,78,78 ; Turismo
+451,2148.8706,1398.3688,10.5208,359.6848,78,78 ; Turismo
558,2132.6252,1409.2678,10.4506,180.3099,36,1 ; Uranus
420,2039.7207,1335.4227,10.4504,178.9215,-1,-1 ; Taxi
420,2159.9783,1687.9427,10.5331,15.7070,-1,-1 ; Taxi
420,2217.6040,1838.1331,10.5980,180.3272,-1,-1 ; Taxi
420,2040.1990,1344.9268,10.4492,178.6027,-1,-1 ; Taxi
562,2039.9257,1019.8728,10.3308,179.7790,33,33 ; Elegy
-562,1881.7867,964.0424,10.4797,89.3165,33,33 ;
-562,1881.5303,991.9349,10.4789,88.5594,33,33 ;
-562,1881.8263,1035.1031,10.4788,90.5642,33,33 ;
-562,1882.0393,1054.4159,10.4798,90.3892,33,33 ;
-543,1665.9182,900.6049,10.6179,154.1468,66,84 ;
-561,1655.6388,999.3278,10.6343,1.6394,112,112 ;
-516,1677.3665,988.1376,10.6021,359.7391,16,16 ;
-411,1889.2765,1934.0405,13.5119,180.0616,4,4 ;
-422,2791.8364,1997.4441,10.8079,358.2167,8,10 ;
-402,2812.9854,2026.3202,10.5870,181.2861,46,46 ;
-401,2822.0801,2169.3892,10.5975,270.8597,59,59 ;
-402,2582.8459,2271.9075,10.6526,89.7938,58,58 ;
-561,2764.5786,1281.6991,10.4819,91.0993,72,72 ;
-405,2782.1956,1295.4828,10.6250,179.4644,65,65 ;
-414,2624.3726,1104.1190,10.8045,269.3916,101,101 ;
-463,2437.9824,2060.0774,10.3605,321.5250,66,66 ;
-463,2439.4592,2059.3762,10.3573,317.0827,125,125 ;
-463,2436.2813,2060.5950,10.3597,324.4647,70,70 ;
-533,2444.2742,1990.9354,10.5294,359.2699,83,83 ;
-480,2458.2346,1992.2141,10.5043,180.6471,92,92 ;
-482,2170.9219,1981.6818,10.8809,90.0917,52,52 ;
-402,2231.9128,1277.3851,10.5745,1.2022,22,22 ;
-451,2182.8376,1287.8752,10.4708,180.3702,123,1 ;
-415,2171.9434,1118.7880,12.3942,333.4859,36,1 ;
-429,2141.7615,1022.6919,10.5000,90.9348,13,13 ;
-436,2150.9563,987.4216,10.5865,180.8703,87,1 ;
-439,2133.0083,1006.8494,10.7160,89.0048,43,21 ;
-561,2163.0320,1006.4872,10.6988,270.5458,101,1 ;
-461,2132.7266,899.1528,10.4046,270.7793,61,1 ;
-462,2132.7463,906.0122,10.4196,268.0389,2,1 ;
-463,2475.0217,992.2781,10.3602,206.1178,7,7 ;
-474,2197.8374,936.0216,10.5829,185.2772,105,1 ;
-442,2485.1379,936.2085,10.6624,0.1062,25,109 ;
-587,2460.3796,918.7192,10.5355,90.4611,53,1 ;
-535,2455.4519,1275.5571,10.5843,270.0745,28,1 ;
-603,2389.2190,1658.2742,10.4453,358.7758,60,1 ;
-560,2039.5767,1560.1608,10.3773,179.5952,9,39 ;
-545,2075.7207,1482.4139,10.4829,359.4229,44,96 ;
-579,2168.6729,1412.4142,10.7456,179.3802,53,53 ;
-581,2353.1150,1405.4800,10.4148,272.0892,66,1 ;
-477,2352.6646,1436.9703,10.5496,269.3466,75,1 ;
-603,2300.3599,1466.0364,10.4462,90.1237,53,53 ;
-558,2300.8755,1458.6439,10.4778,90.3777,92,1 ;
-480,2292.5034,1454.7678,13.8155,270.6444,68,1 ;
-558,2285.8660,1518.0089,16.9278,0.2348,77,1 ;
-521,2351.9590,1487.6743,17.7851,268.5520,92,3 ;
-516,2322.5889,1423.0115,22.1984,89.6001,122,1 ;
-579,2352.2910,1472.8545,32.0779,268.4590,28,119 ;
-418,2332.3298,1387.9061,36.5387,179.0473,64,64 ;
-477,2293.1245,1455.2216,39.5112,270.0951,22,1 ;
-461,2279.1494,1387.7222,42.4054,181.3635,61,1 ;
-451,2351.6416,1415.7268,42.5269,269.3744,123,123 ;
-448,2631.0559,1845.8617,10.4164,264.5009,3,6 ;
-561,2632.0137,1858.2656,10.6989,270.9765,113,1 ;
-477,2602.6128,1846.6437,10.5729,90.5212,121,1 ;
-479,2631.2253,1794.8120,10.6166,270.0366,60,35 ;
-581,2600.0813,1691.2465,10.4108,89.1784,36,1 ;
+562,1881.7867,964.0424,10.4797,89.3165,33,33 ;
+562,1881.5303,991.9349,10.4789,88.5594,33,33 ;
+562,1881.8263,1035.1031,10.4788,90.5642,33,33 ;
+562,1882.0393,1054.4159,10.4798,90.3892,33,33 ;
+543,1665.9182,900.6049,10.6179,154.1468,66,84 ;
+561,1655.6388,999.3278,10.6343,1.6394,112,112 ;
+516,1677.3665,988.1376,10.6021,359.7391,16,16 ;
+411,1889.2765,1934.0405,13.5119,180.0616,4,4 ;
+422,2791.8364,1997.4441,10.8079,358.2167,8,10 ;
+402,2812.9854,2026.3202,10.5870,181.2861,46,46 ;
+401,2822.0801,2169.3892,10.5975,270.8597,59,59 ;
+402,2582.8459,2271.9075,10.6526,89.7938,58,58 ;
+561,2764.5786,1281.6991,10.4819,91.0993,72,72 ;
+405,2782.1956,1295.4828,10.6250,179.4644,65,65 ;
+414,2624.3726,1104.1190,10.8045,269.3916,101,101 ;
+463,2437.9824,2060.0774,10.3605,321.5250,66,66 ;
+463,2439.4592,2059.3762,10.3573,317.0827,125,125 ;
+463,2436.2813,2060.5950,10.3597,324.4647,70,70 ;
+533,2444.2742,1990.9354,10.5294,359.2699,83,83 ;
+480,2458.2346,1992.2141,10.5043,180.6471,92,92 ;
+482,2170.9219,1981.6818,10.8809,90.0917,52,52 ;
+402,2231.9128,1277.3851,10.5745,1.2022,22,22 ;
+451,2182.8376,1287.8752,10.4708,180.3702,123,1 ;
+415,2171.9434,1118.7880,12.3942,333.4859,36,1 ;
+429,2141.7615,1022.6919,10.5000,90.9348,13,13 ;
+436,2150.9563,987.4216,10.5865,180.8703,87,1 ;
+439,2133.0083,1006.8494,10.7160,89.0048,43,21 ;
+561,2163.0320,1006.4872,10.6988,270.5458,101,1 ;
+461,2132.7266,899.1528,10.4046,270.7793,61,1 ;
+462,2132.7463,906.0122,10.4196,268.0389,2,1 ;
+463,2475.0217,992.2781,10.3602,206.1178,7,7 ;
+474,2197.8374,936.0216,10.5829,185.2772,105,1 ;
+442,2485.1379,936.2085,10.6624,0.1062,25,109 ;
+587,2460.3796,918.7192,10.5355,90.4611,53,1 ;
+535,2455.4519,1275.5571,10.5843,270.0745,28,1 ;
+603,2389.2190,1658.2742,10.4453,358.7758,60,1 ;
+560,2039.5767,1560.1608,10.3773,179.5952,9,39 ;
+545,2075.7207,1482.4139,10.4829,359.4229,44,96 ;
+579,2168.6729,1412.4142,10.7456,179.3802,53,53 ;
+581,2353.1150,1405.4800,10.4148,272.0892,66,1 ;
+477,2352.6646,1436.9703,10.5496,269.3466,75,1 ;
+603,2300.3599,1466.0364,10.4462,90.1237,53,53 ;
+558,2300.8755,1458.6439,10.4778,90.3777,92,1 ;
+480,2292.5034,1454.7678,13.8155,270.6444,68,1 ;
+558,2285.8660,1518.0089,16.9278,0.2348,77,1 ;
+521,2351.9590,1487.6743,17.7851,268.5520,92,3 ;
+516,2322.5889,1423.0115,22.1984,89.6001,122,1 ;
+579,2352.2910,1472.8545,32.0779,268.4590,28,119 ;
+418,2332.3298,1387.9061,36.5387,179.0473,64,64 ;
+477,2293.1245,1455.2216,39.5112,270.0951,22,1 ;
+461,2279.1494,1387.7222,42.4054,181.3635,61,1 ;
+451,2351.6416,1415.7268,42.5269,269.3744,123,123 ;
+448,2631.0559,1845.8617,10.4164,264.5009,3,6 ;
+561,2632.0137,1858.2656,10.6989,270.9765,113,1 ;
+477,2602.6128,1846.6437,10.5729,90.5212,121,1 ;
+479,2631.2253,1794.8120,10.6166,270.0366,60,35 ;
+581,2600.0813,1691.2465,10.4108,89.1784,36,1 ;
496,2631.7998,1681.1658,10.4784,271.2010,31,31 ;
-402,2214.7441,1512.2836,10.6519,269.6815,39,39 ;
-410,2038.7775,1588.8407,10.3258,179.6040,10,1 ;
-418,1742.2191,1906.1680,10.9136,90.2075,117,227 ;
-420,1731.2715,1974.9578,10.5994,273.0416,6,1 ;
-437,1736.9500,1878.4280,10.9183,269.9015,47,74 ;
-429,1702.7047,1804.3766,10.5000,359.9712,1,2 ;
-421,1602.3925,1839.9454,10.7028,178.4762,36,1 ;
-402,1471.5049,1928.6152,11.1104,91.6437,22,22 ;
-482,1450.1931,2017.9884,10.9038,90.8726,91,1 ;
-426,1453.9977,1957.7761,10.9630,179.0628,62,62 ;
-436,1368.7289,2020.8182,11.2117,88.9614,92,1 ;
-483,1117.3785,2112.5374,10.8094,0.4216,1,31 ;
-498,1049.3367,2135.9788,10.8916,87.9624,20,117 ;
-530,980.7039,2060.1577,10.5856,159.6553,114,1 ;
-542,1023.1682,2019.7904,10.9840,272.4500,31,93 ;
-554,991.6675,1886.8708,11.3290,270.6092,15,32 ;
-558,984.5507,1719.9063,8.2853,270.4343,24,1 ;
-522,949.3912,1662.1198,8.4159,269.5886,6,25 ;
-541,1113.0669,1726.9880,10.4451,179.9989,22,1 ;
-521,1024.1970,1724.4652,10.3911,93.4605,92,3 ;
-506,1041.7158,1357.1357,10.5246,85.3610,7,7 ;
-500,1042.7311,1346.4717,10.9230,81.1408,28,119 ;
-496,979.9923,1080.0503,10.5293,91.2658,53,56 ;
-482,979.7035,1104.7273,10.9448,90.7615,71,71 ;
-414,1425.6675,1039.2936,10.4327,90.1854,102,65 ;
-414,1451.7877,976.0687,10.4987,0.3869,67,1 ;
-410,2004.4067,735.3056,11.0296,180.8574,9,1 ;
-418,2168.8989,695.7342,11.4583,182.7091,117,227 ;
-429,2362.0627,731.0701,11.0945,0.1727,1,3 ;
-439,2362.4011,648.3926,11.2058,358.5358,43,21 ;
-460,2358.0769,519.0576,1.7602,270.6638,17,23 ;
-493,2292.9006,518.9941,-0.2127,269.6579,36,13 ;
-496,2086.2354,658.9543,10.8917,180.3410,66,72 ;
-506,1916.4235,698.4152,10.5369,359.5925,52,52 ;
-516,1852.8835,698.9276,11.0089,92.2719,119,1 ;
-521,1413.7998,772.0428,10.3920,92.6899,87,118 ;
-533,1484.0516,787.6008,10.5294,359.4022,74,1 ;
-545,1535.0472,787.3861,10.6314,0.8390,44,96 ;
-578,1645.1521,740.4365,11.4446,357.8964,1,1 ;
-484,1628.1273,571.8071,0.1587,269.3263,66,36 ;
-477,1544.6929,2132.2334,11.1514,269.0969,101,1 ;
-480,1613.6011,2207.0527,10.5919,271.9736,4,4 ;
-479,1519.2012,2291.0112,10.6331,0.9600,49,23 ;
-419,1340.8719,2246.3386,10.6215,92.0409,21,1 ;
-462,1431.4543,2237.3440,10.6230,267.7669,3,1 ;
-401,1508.7909,2091.1387,10.6953,271.2132,39,39 ;
-439,1068.4608,2185.2996,16.6151,91.1135,25,78 ;
-426,1126.5607,2323.6711,16.4615,90.0850,7,7 ;
-421,1135.4622,2253.0496,16.6012,270.1440,30,1 ;
-419,1115.4999,2310.4092,10.6371,267.7344,33,75 ;
-561,990.2859,2307.3047,11.1294,89.9585,101,101 ;
-400,1108.1198,1903.8445,10.9125,269.1945,113,1 ;
-403,1059.6801,1916.6881,11.4272,0.6038,101,1 ;
-402,2039.0864,1160.6543,10.5033,179.5146,22,22 ;
-411,1844.4286,1209.7379,10.5596,91.1955,116,1 ;
-522,1843.6981,1255.3601,10.3902,89.6382,3,8 ;
-439,1866.8518,1179.2153,10.7348,0.1707,37,78 ;
-587,1552.6906,1025.6267,10.5356,267.4064,66,1 ;
-543,1332.6006,1159.0437,10.6290,270.0148,8,90 ;
-545,1281.1134,2545.5876,10.6315,90.4074,30,1 ;
-420,1433.6541,2608.7395,10.6772,89.2627,6,76 ;
-508,1374.0249,2644.2893,11.1956,179.4467,1,1 ;
-437,1352.3561,2647.1230,10.9443,180.4328,105,20 ;
-451,1319.5608,2697.6628,10.5268,0.7027,61,61 ;
-437,1296.4653,2646.8472,10.9536,1.1869,54,7 ;
-506,1464.4520,2773.0771,10.3764,181.1781,3,3 ;
-546,1475.3710,2839.5518,10.6444,181.0346,11,11 ;
-541,1455.9503,2878.8362,10.4449,0.1368,51,1 ;
-545,1529.5756,2867.6501,10.6314,268.0443,39,1 ;
-421,1529.6301,2835.7375,10.6409,269.9234,62,62 ;
-457,1422.7972,2830.8291,10.4472,91.4126,13,1 ;
-457,1369.0237,2784.1589,10.4470,94.3731,34,1 ;
-457,1423.0651,2835.1399,10.4471,92.8884,58,1 ;
-572,1420.3008,2802.6375,10.4002,179.9108,30,1 ;
-561,1618.5776,2834.7361,10.6343,359.5821,25,78 ;
-581,1737.6124,2780.0356,10.6454,100.8438,54,1 ;
-579,1673.0441,2696.7334,10.7646,2.8550,37,37 ;
-522,1927.4393,2729.9841,10.3924,182.5768,6,25 ;
-562,1998.1213,2758.4885,10.4822,0.3794,116,1 ;
-542,2260.1184,2737.8931,10.5638,271.1407,24,118 ;
-498,2311.9609,2763.3215,10.8880,272.1044,13,120 ;
-421,2143.1143,2807.1777,10.5765,92.5022,30,72 ;
-480,2167.2463,2750.6987,10.5948,271.0785,12,12 ;
-419,2349.0527,2578.4849,10.6135,0.1656,2,39 ;
-448,2363.0669,2531.9736,10.4173,267.6790,3,6 ;
-541,2417.8662,2529.0085,10.4450,178.9855,36,8 ;
-415,2455.1401,2531.6060,21.6458,179.4472,0,1 ;
-418,2530.6252,2535.9524,21.9679,268.5749,81,81 ;
-436,2506.2002,2515.6663,21.6411,88.9685,11,1 ;
-429,2537.9023,2397.2529,3.8906,0.5158,10,10 ;
-474,2511.0984,2394.3940,10.5828,269.3660,97,1 ;
-477,2501.1006,2131.0410,10.4987,269.4453,92,1 ;
-518,2589.0198,2166.3142,10.4839,1.1502,17,1 ;
-533,2620.0979,2086.9114,10.5281,180.6504,79,1 ;
-535,2567.6167,2059.1948,10.5846,0.8758,28,1 ;
-541,2075.6462,1312.3136,10.2966,359.4287,2,1 ;
-546,2183.6970,1878.7114,10.5448,359.9918,78,38 ;
-410,2192.2410,1856.6902,10.6209,181.3348,75,1 ;
-480,2203.4363,1787.9412,10.5034,179.6947,60,1 ;
-541,2181.5310,1821.7205,10.4451,0.6193,51,1 ;
-533,2129.1848,1810.2720,10.3810,332.9410,74,1 ;
-477,2118.6621,1892.0770,10.3763,181.2668,6,6 ;
-410,2118.6233,1910.1948,10.7688,180.4238,40,110 ;
-496,2102.4214,2066.0054,10.5366,270.8547,66,72 ;
-477,2103.5483,2089.0322,10.5741,269.2954,101,1 ;
-516,2028.6848,2155.9724,10.6248,264.3126,2,39 ;
-522,1995.4116,2185.7837,10.3813,183.3891,36,105 ;
-508,2010.5963,2137.1594,11.1969,270.0610,1,1 ;
-414,2005.9337,2059.6008,10.9941,181.8287,110,93 ;
-414,2060.3394,2237.0127,10.5447,89.3482,121,93 ;
-448,2077.0784,2226.7166,10.4142,3.1701,3,6 ;
-420,2107.7361,2206.7979,10.8238,178.2615,6,76 ;
-516,2094.5530,2206.6326,10.5904,178.8517,119,45 ;
-477,2156.2788,2188.8767,10.3516,358.4281,14,14 ;
-415,2339.1323,2114.0562,10.4512,177.1576,20,1 ;
-409,2361.3320,2170.0618,10.5251,359.3094,1,1 ;
-461,2380.3523,2018.2645,10.3403,272.1906,13,1 ;
-587,2338.7590,1943.9525,10.4102,182.1740,40,1 ;
+402,2214.7441,1512.2836,10.6519,269.6815,39,39 ;
+410,2038.7775,1588.8407,10.3258,179.6040,10,1 ;
+418,1742.2191,1906.1680,10.9136,90.2075,117,227 ;
+420,1731.2715,1974.9578,10.5994,273.0416,6,1 ;
+437,1736.9500,1878.4280,10.9183,269.9015,47,74 ;
+429,1702.7047,1804.3766,10.5000,359.9712,1,2 ;
+421,1602.3925,1839.9454,10.7028,178.4762,36,1 ;
+402,1471.5049,1928.6152,11.1104,91.6437,22,22 ;
+482,1450.1931,2017.9884,10.9038,90.8726,91,1 ;
+426,1453.9977,1957.7761,10.9630,179.0628,62,62 ;
+436,1368.7289,2020.8182,11.2117,88.9614,92,1 ;
+483,1117.3785,2112.5374,10.8094,0.4216,1,31 ;
+498,1049.3367,2135.9788,10.8916,87.9624,20,117 ;
+530,980.7039,2060.1577,10.5856,159.6553,114,1 ;
+542,1023.1682,2019.7904,10.9840,272.4500,31,93 ;
+554,991.6675,1886.8708,11.3290,270.6092,15,32 ;
+558,984.5507,1719.9063,8.2853,270.4343,24,1 ;
+522,949.3912,1662.1198,8.4159,269.5886,6,25 ;
+541,1113.0669,1726.9880,10.4451,179.9989,22,1 ;
+521,1024.1970,1724.4652,10.3911,93.4605,92,3 ;
+506,1041.7158,1357.1357,10.5246,85.3610,7,7 ;
+500,1042.7311,1346.4717,10.9230,81.1408,28,119 ;
+496,979.9923,1080.0503,10.5293,91.2658,53,56 ;
+482,979.7035,1104.7273,10.9448,90.7615,71,71 ;
+414,1425.6675,1039.2936,10.4327,90.1854,102,65 ;
+414,1451.7877,976.0687,10.4987,0.3869,67,1 ;
+410,2004.4067,735.3056,11.0296,180.8574,9,1 ;
+418,2168.8989,695.7342,11.4583,182.7091,117,227 ;
+429,2362.0627,731.0701,11.0945,0.1727,1,3 ;
+439,2362.4011,648.3926,11.2058,358.5358,43,21 ;
+460,2358.0769,519.0576,1.7602,270.6638,17,23 ;
+493,2292.9006,518.9941,-0.2127,269.6579,36,13 ;
+496,2086.2354,658.9543,10.8917,180.3410,66,72 ;
+506,1916.4235,698.4152,10.5369,359.5925,52,52 ;
+516,1852.8835,698.9276,11.0089,92.2719,119,1 ;
+521,1413.7998,772.0428,10.3920,92.6899,87,118 ;
+533,1484.0516,787.6008,10.5294,359.4022,74,1 ;
+545,1535.0472,787.3861,10.6314,0.8390,44,96 ;
+578,1645.1521,740.4365,11.4446,357.8964,1,1 ;
+484,1628.1273,571.8071,0.1587,269.3263,66,36 ;
+477,1544.6929,2132.2334,11.1514,269.0969,101,1 ;
+480,1613.6011,2207.0527,10.5919,271.9736,4,4 ;
+479,1519.2012,2291.0112,10.6331,0.9600,49,23 ;
+419,1340.8719,2246.3386,10.6215,92.0409,21,1 ;
+462,1431.4543,2237.3440,10.6230,267.7669,3,1 ;
+401,1508.7909,2091.1387,10.6953,271.2132,39,39 ;
+439,1068.4608,2185.2996,16.6151,91.1135,25,78 ;
+426,1126.5607,2323.6711,16.4615,90.0850,7,7 ;
+421,1135.4622,2253.0496,16.6012,270.1440,30,1 ;
+419,1115.4999,2310.4092,10.6371,267.7344,33,75 ;
+561,990.2859,2307.3047,11.1294,89.9585,101,101 ;
+400,1108.1198,1903.8445,10.9125,269.1945,113,1 ;
+403,1059.6801,1916.6881,11.4272,0.6038,101,1 ;
+402,2039.0864,1160.6543,10.5033,179.5146,22,22 ;
+411,1844.4286,1209.7379,10.5596,91.1955,116,1 ;
+522,1843.6981,1255.3601,10.3902,89.6382,3,8 ;
+439,1866.8518,1179.2153,10.7348,0.1707,37,78 ;
+587,1552.6906,1025.6267,10.5356,267.4064,66,1 ;
+543,1332.6006,1159.0437,10.6290,270.0148,8,90 ;
+545,1281.1134,2545.5876,10.6315,90.4074,30,1 ;
+420,1433.6541,2608.7395,10.6772,89.2627,6,76 ;
+508,1374.0249,2644.2893,11.1956,179.4467,1,1 ;
+437,1352.3561,2647.1230,10.9443,180.4328,105,20 ;
+451,1319.5608,2697.6628,10.5268,0.7027,61,61 ;
+437,1296.4653,2646.8472,10.9536,1.1869,54,7 ;
+506,1464.4520,2773.0771,10.3764,181.1781,3,3 ;
+546,1475.3710,2839.5518,10.6444,181.0346,11,11 ;
+541,1455.9503,2878.8362,10.4449,0.1368,51,1 ;
+545,1529.5756,2867.6501,10.6314,268.0443,39,1 ;
+421,1529.6301,2835.7375,10.6409,269.9234,62,62 ;
+457,1422.7972,2830.8291,10.4472,91.4126,13,1 ;
+457,1369.0237,2784.1589,10.4470,94.3731,34,1 ;
+457,1423.0651,2835.1399,10.4471,92.8884,58,1 ;
+572,1420.3008,2802.6375,10.4002,179.9108,30,1 ;
+561,1618.5776,2834.7361,10.6343,359.5821,25,78 ;
+581,1737.6124,2780.0356,10.6454,100.8438,54,1 ;
+579,1673.0441,2696.7334,10.7646,2.8550,37,37 ;
+522,1927.4393,2729.9841,10.3924,182.5768,6,25 ;
+562,1998.1213,2758.4885,10.4822,0.3794,116,1 ;
+542,2260.1184,2737.8931,10.5638,271.1407,24,118 ;
+498,2311.9609,2763.3215,10.8880,272.1044,13,120 ;
+421,2143.1143,2807.1777,10.5765,92.5022,30,72 ;
+480,2167.2463,2750.6987,10.5948,271.0785,12,12 ;
+419,2349.0527,2578.4849,10.6135,0.1656,2,39 ;
+448,2363.0669,2531.9736,10.4173,267.6790,3,6 ;
+541,2417.8662,2529.0085,10.4450,178.9855,36,8 ;
+415,2455.1401,2531.6060,21.6458,179.4472,0,1 ;
+418,2530.6252,2535.9524,21.9679,268.5749,81,81 ;
+436,2506.2002,2515.6663,21.6411,88.9685,11,1 ;
+429,2537.9023,2397.2529,3.8906,0.5158,10,10 ;
+474,2511.0984,2394.3940,10.5828,269.3660,97,1 ;
+477,2501.1006,2131.0410,10.4987,269.4453,92,1 ;
+518,2589.0198,2166.3142,10.4839,1.1502,17,1 ;
+533,2620.0979,2086.9114,10.5281,180.6504,79,1 ;
+535,2567.6167,2059.1948,10.5846,0.8758,28,1 ;
+541,2075.6462,1312.3136,10.2966,359.4287,2,1 ;
+546,2183.6970,1878.7114,10.5448,359.9918,78,38 ;
+410,2192.2410,1856.6902,10.6209,181.3348,75,1 ;
+480,2203.4363,1787.9412,10.5034,179.6947,60,1 ;
+541,2181.5310,1821.7205,10.4451,0.6193,51,1 ;
+533,2129.1848,1810.2720,10.3810,332.9410,74,1 ;
+477,2118.6621,1892.0770,10.3763,181.2668,6,6 ;
+410,2118.6233,1910.1948,10.7688,180.4238,40,110 ;
+496,2102.4214,2066.0054,10.5366,270.8547,66,72 ;
+477,2103.5483,2089.0322,10.5741,269.2954,101,1 ;
+516,2028.6848,2155.9724,10.6248,264.3126,2,39 ;
+522,1995.4116,2185.7837,10.3813,183.3891,36,105 ;
+508,2010.5963,2137.1594,11.1969,270.0610,1,1 ;
+414,2005.9337,2059.6008,10.9941,181.8287,110,93 ;
+414,2060.3394,2237.0127,10.5447,89.3482,121,93 ;
+448,2077.0784,2226.7166,10.4142,3.1701,3,6 ;
+420,2107.7361,2206.7979,10.8238,178.2615,6,76 ;
+516,2094.5530,2206.6326,10.5904,178.8517,119,45 ;
+477,2156.2788,2188.8767,10.3516,358.4281,14,14 ;
+415,2339.1323,2114.0562,10.4512,177.1576,20,1 ;
+409,2361.3320,2170.0618,10.5251,359.3094,1,1 ;
+461,2380.3523,2018.2645,10.3403,272.1906,13,1 ;
+587,2338.7590,1943.9525,10.4102,182.1740,40,1 ;
482,2221.3479,1944.5293,9.7951,87.2554,37,37 ;
-479,2272.5029,1953.1041,9.4899,179.0292,7,7 ;
-541,2244.7246,1997.9194,15.4282,0.8475,12,32 ;
+479,2272.5029,1953.1041,9.4899,179.0292,7,7 ;
+541,2244.7246,1997.9194,15.4282,0.8475,12,32 ;
541,2222.4797,1936.1879,25.9241,88.7210,68,8 ;
415,2294.6262,1952.2435,26.0251,268.4258,7,7 ;
436,2246.8062,1939.5153,31.5463,179.6696,33,0 ;
461,2283.6470,1975.2380,28.4011,180.9682,62,62 ;
-482,2217.0320,2048.4802,10.9456,89.9095,85,85 ;
-479,2296.6074,2046.1454,10.6169,271.5167,49,23 ;
-461,2259.0544,2065.4905,10.3873,2.1430,61,1 ;
-477,2272.6033,2326.2434,10.5272,88.5973,61,61 ;
-401,2464.2083,2236.9705,10.5507,88.6525,39,39 ;
-428,2242.5024,2231.3748,10.9010,270.8860,4,75 ;
-516,2007.5071,2263.2092,17.6074,2.4052,13,76 ;
-522,2014.7938,2244.9580,23.4848,269.4012,8,82 ;
-436,1907.2633,2290.8406,11.0000,180.4904,84,1 ;
-480,1705.0334,2242.9836,10.5941,179.6409,12,12 ;
-436,1691.1774,2131.1426,11.0800,91.2325,87,1 ;
-414,1842.6188,2090.4556,10.8907,176.3065,36,36 ;
-436,1908.1819,2078.6570,10.5695,270.3529,53,1 ;
-516,1912.8295,2158.5737,10.6165,271.8315,47,47 ;
-525,1963.4600,2171.0208,10.6913,257.1353,1,1 ;
-496,1993.2476,2058.3521,10.5367,357.2019,53,56 ;
-535,2075.9631,1677.7250,10.4351,0.1849,118,1 ;
-418,2452.3093,1357.8304,10.9134,359.7694,61,61 ;
-415,2447.5730,1327.1135,10.5908,179.6456,0,1 ;
-414,2612.0542,1429.5336,10.9140,183.7790,24,1 ;
-420,2488.5161,1534.1761,10.5240,231.4538,6,1 ;
-409,2481.3877,1544.0386,10.5123,202.9677,1,1 ;
-579,2498.4194,1676.3019,10.5524,1.3521,101,101 ;
-474,2463.0220,1676.7267,10.5831,359.3129,97,1 ;
-518,2788.6519,2431.3220,10.4912,314.8943,2,39 ;
-516,2815.1465,2406.8418,10.6541,315.8335,119,1 ;
-506,2833.4592,2309.8750,10.5247,179.7437,76,76 ;
-516,2891.3560,2379.1252,10.6230,270.9466,41,29 ;
-417,2093.3755,2415.1582,74.7678,94.3180,2,29 ;
-402,2095.8645,2410.8191,45.0503,267.7614,110,110 ;
-516,2104.4490,2396.0525,40.6341,271.3880,119,62 ;
-402,2095.8438,2398.7417,27.8898,268.8989,99,81 ;
-477,2086.5784,2416.6394,23.4231,90.8221,3,3 ;
-516,2103.9829,2419.3713,14.8978,270.8129,24,55 ;
-561,2065.8535,2479.7612,10.6989,359.7305,4,1 ;
-414,2130.8403,2514.2134,10.9140,193.6682,24,1 ;
-410,1900.4618,2437.4229,10.4740,92.5165,45,1 ;
-408,1730.6010,2336.2703,11.3685,2.6346,26,26 ;
-486,2707.1851,822.1658,10.7179,2.5507,1,1 ;
-486,2707.0010,908.6336,10.8980,176.3525,1,1 ;
-482,2697.6646,885.6911,10.3113,271.4880,71,71 ;
-554,2701.6409,828.3740,10.1758,359.8369,15,32 ;
-524,2635.2407,848.0072,6.7986,311.1720,61,27 ;
-524,2630.1240,851.0532,6.9725,315.8478,65,31 ;
-530,2687.1553,909.9475,10.4912,199.4376,111,1 ;
-530,2683.3469,908.7888,10.4567,197.7386,112,1 ;
-455,2685.8137,864.3542,10.3588,358.5818,84,58 ;
-560,2705.9065,788.8524,10.6037,359.2399,33,0 ;
-403,2873.0920,920.3176,11.3572,94.3495,28,1 ;
-403,2873.2283,913.3622,11.7676,85.7952,24,77 ;
+482,2217.0320,2048.4802,10.9456,89.9095,85,85 ;
+479,2296.6074,2046.1454,10.6169,271.5167,49,23 ;
+461,2259.0544,2065.4905,10.3873,2.1430,61,1 ;
+477,2272.6033,2326.2434,10.5272,88.5973,61,61 ;
+401,2464.2083,2236.9705,10.5507,88.6525,39,39 ;
+428,2242.5024,2231.3748,10.9010,270.8860,4,75 ;
+516,2007.5071,2263.2092,17.6074,2.4052,13,76 ;
+522,2014.7938,2244.9580,23.4848,269.4012,8,82 ;
+436,1907.2633,2290.8406,11.0000,180.4904,84,1 ;
+480,1705.0334,2242.9836,10.5941,179.6409,12,12 ;
+436,1691.1774,2131.1426,11.0800,91.2325,87,1 ;
+414,1842.6188,2090.4556,10.8907,176.3065,36,36 ;
+436,1908.1819,2078.6570,10.5695,270.3529,53,1 ;
+516,1912.8295,2158.5737,10.6165,271.8315,47,47 ;
+525,1963.4600,2171.0208,10.6913,257.1353,1,1 ;
+496,1993.2476,2058.3521,10.5367,357.2019,53,56 ;
+535,2075.9631,1677.7250,10.4351,0.1849,118,1 ;
+418,2452.3093,1357.8304,10.9134,359.7694,61,61 ;
+415,2447.5730,1327.1135,10.5908,179.6456,0,1 ;
+414,2612.0542,1429.5336,10.9140,183.7790,24,1 ;
+420,2488.5161,1534.1761,10.5240,231.4538,6,1 ;
+409,2481.3877,1544.0386,10.5123,202.9677,1,1 ;
+579,2498.4194,1676.3019,10.5524,1.3521,101,101 ;
+474,2463.0220,1676.7267,10.5831,359.3129,97,1 ;
+518,2788.6519,2431.3220,10.4912,314.8943,2,39 ;
+516,2815.1465,2406.8418,10.6541,315.8335,119,1 ;
+506,2833.4592,2309.8750,10.5247,179.7437,76,76 ;
+516,2891.3560,2379.1252,10.6230,270.9466,41,29 ;
+417,2093.3755,2415.1582,74.7678,94.3180,2,29 ;
+402,2095.8645,2410.8191,45.0503,267.7614,110,110 ;
+516,2104.4490,2396.0525,40.6341,271.3880,119,62 ;
+402,2095.8438,2398.7417,27.8898,268.8989,99,81 ;
+477,2086.5784,2416.6394,23.4231,90.8221,3,3 ;
+516,2103.9829,2419.3713,14.8978,270.8129,24,55 ;
+561,2065.8535,2479.7612,10.6989,359.7305,4,1 ;
+414,2130.8403,2514.2134,10.9140,193.6682,24,1 ;
+410,1900.4618,2437.4229,10.4740,92.5165,45,1 ;
+408,1730.6010,2336.2703,11.3685,2.6346,26,26 ;
+486,2707.1851,822.1658,10.7179,2.5507,1,1 ;
+486,2707.0010,908.6336,10.8980,176.3525,1,1 ;
+482,2697.6646,885.6911,10.3113,271.4880,71,71 ;
+554,2701.6409,828.3740,10.1758,359.8369,15,32 ;
+524,2635.2407,848.0072,6.7986,311.1720,61,27 ;
+524,2630.1240,851.0532,6.9725,315.8478,65,31 ;
+530,2687.1553,909.9475,10.4912,199.4376,111,1 ;
+530,2683.3469,908.7888,10.4567,197.7386,112,1 ;
+455,2685.8137,864.3542,10.3588,358.5818,84,58 ;
+560,2705.9065,788.8524,10.6037,359.2399,33,0 ;
+403,2873.0920,920.3176,11.3572,94.3495,28,1 ;
+403,2873.2283,913.3622,11.7676,85.7952,24,77 ;
435,2855.4207,896.0324,11.1716,359.7548,24,77 ; trailer
435,2818.0835,897.6704,11.3012,359.2285,24,77 ; trailer
435,2827.5466,897.5560,11.2943,0.9414,24,77 ; trailer
-530,2884.7034,941.7674,10.5161,90.4367,112,1 ;
-530,2833.1492,996.5211,10.5144,173.6816,13,1 ;
-482,2805.1533,968.8243,10.8708,178.9079,48,48 ;
-560,2817.4512,941.4572,10.4556,0.9883,9,39 ;
+530,2884.7034,941.7674,10.5161,90.4367,112,1 ;
+530,2833.1492,996.5211,10.5144,173.6816,13,1 ;
+482,2805.1533,968.8243,10.8708,178.9079,48,48 ;
+560,2817.4512,941.4572,10.4556,0.9883,9,39 ;
578,2840.3525,994.4778,11.3743,176.8262,1,1 ;
diff --git a/amx/scriptfiles/vehicles/lv_law.txt b/amx/scriptfiles/vehicles/lv_law.txt
index ccd5253..dbeb602 100644
--- a/amx/scriptfiles/vehicles/lv_law.txt
+++ b/amx/scriptfiles/vehicles/lv_law.txt
@@ -1,15 +1,15 @@
-598,2269.0366,2460.2317,8.2674,181.9338,-1,-1 ;
+598,2269.0366,2460.2317,8.2674,181.9338,-1,-1 ;
490,2278.0327,2459.1831,8.9495,1.6668,0,0 ; rancher 2
-490,2255.8301,2443.1006,8.2475,179.7459,-1,-1 ;
-490,2239.7317,2456.6294,1.4036,88.4757,-1,-1 ;
-598,2276.6790,2473.7705,1.0201,184.7489,-1,-1 ;
-598,2315.3213,2464.7903,1.0219,270.0937,-1,-1 ;
-523,2297.4980,2464.5881,1.0,88.5560,-1,-1 ;
-490,2314.2158,2484.8979,3.3994,92.8849,0,0 ;
-490,2240.0923,2436.7124,3.4017,91.8532,0,0 ;
-598,2299.4771,2451.7512,3.0199,270.3331,0,1 ;
+490,2255.8301,2443.1006,8.2475,179.7459,-1,-1 ;
+490,2239.7317,2456.6294,1.4036,88.4757,-1,-1 ;
+598,2276.6790,2473.7705,1.0201,184.7489,-1,-1 ;
+598,2315.3213,2464.7903,1.0219,270.0937,-1,-1 ;
+523,2297.4980,2464.5881,1.0,88.5560,-1,-1 ;
+490,2314.2158,2484.8979,3.3994,92.8849,0,0 ;
+490,2240.0923,2436.7124,3.4017,91.8532,0,0 ;
+598,2299.4771,2451.7512,3.0199,270.3331,0,1 ;
416,1590.5470,1849.9900,10.9690,359.8599,1,3 ; Ambulance
544,1769.6177,2075.1941,11.0567,179.5683,3,1 ; firetruck
544,1750.6584,2077.1130,11.0558,180.0440,3,1 ; firetruck LA
544,1763.4852,2076.7075,11.0525,179.6720,3,1 ; firetruck LA
-544,1757.0782,2075.0398,11.0568,177.5558,3,1 ; firetruck
+544,1757.0782,2075.0398,11.0568,177.5558,3,1 ; firetruck
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/pilots.txt b/amx/scriptfiles/vehicles/pilots.txt
index c928200..9078f38 100644
--- a/amx/scriptfiles/vehicles/pilots.txt
+++ b/amx/scriptfiles/vehicles/pilots.txt
@@ -1,3 +1,3 @@
577,1477.4631,1647.4589,10.7281,180.2741,8,7 ; at400 LV rwy
577,-1513.0963,-21.4589,14.0641,314.4915,8,7 ; at400 SF rwy
-577,2014.6605,-2493.9668,13.4887,89.6533,8,7 ; at400 LS rwy
+577,2014.6605,-2493.9668,13.4887,89.6533,8,7 ; at400 LS rwy
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/red_county.txt b/amx/scriptfiles/vehicles/red_county.txt
index f2603d7..a5fc98c 100644
--- a/amx/scriptfiles/vehicles/red_county.txt
+++ b/amx/scriptfiles/vehicles/red_county.txt
@@ -41,56 +41,56 @@
445,1396.5654,395.3847,19.6327,66.5844,47,47 ;
559,1404.2180,411.9715,19.4141,67.1748,58,8 ;
580,768.8481,348.3186,19.7428,190.0995,81,81 ;
-473,2103.2500,-98.4897,-0.2214,122.9253,56,53 ;
-473,2108.5276,-106.2102,-0.2394,122.9441,56,15 ;
-448,2323.3232,63.0302,26.0883,265.2746,3,6 ;
-439,2358.1836,-62.4556,27.3646,179.8344,37,78 ;
-436,2443.9980,-47.9166,26.9963,179.6730,87,1 ;
-436,2503.7507,125.9338,26.2435,1.0102,92,1 ;
-419,2493.9170,95.9780,26.2806,179.8299,47,76 ;
-412,2549.9116,81.1802,26.3143,270.4565,10,8 ;
-410,2551.1191,9.4253,26.6691,270.6199,9,1 ;
-508,2502.7742,6.0906,27.5812,2.9588,1,1 ;
-505,2380.9570,37.7925,27.1163,89.9017,120,123 ;
-500,2211.6929,-88.3423,26.9028,88.7287,13,119 ;
-496,2263.8970,-82.7569,26.2452,1.1014,66,72 ;
-492,2257.5105,-83.1763,26.3074,359.2125,30,26 ;
-405,2290.2622,155.5207,26.9788,0.1090,24,1 ;
-532,1996.7520,175.8992,31.3614,79.7076,0,0 ;
-532,1914.0114,192.1063,36.0155,358.2132,0,0 ;
-478,1905.3486,174.1229,37.1748,341.5607,66,1 ;
+473,2103.2500,-98.4897,-0.2214,122.9253,56,53 ;
+473,2108.5276,-106.2102,-0.2394,122.9441,56,15 ;
+448,2323.3232,63.0302,26.0883,265.2746,3,6 ;
+439,2358.1836,-62.4556,27.3646,179.8344,37,78 ;
+436,2443.9980,-47.9166,26.9963,179.6730,87,1 ;
+436,2503.7507,125.9338,26.2435,1.0102,92,1 ;
+419,2493.9170,95.9780,26.2806,179.8299,47,76 ;
+412,2549.9116,81.1802,26.3143,270.4565,10,8 ;
+410,2551.1191,9.4253,26.6691,270.6199,9,1 ;
+508,2502.7742,6.0906,27.5812,2.9588,1,1 ;
+505,2380.9570,37.7925,27.1163,89.9017,120,123 ;
+500,2211.6929,-88.3423,26.9028,88.7287,13,119 ;
+496,2263.8970,-82.7569,26.2452,1.1014,66,72 ;
+492,2257.5105,-83.1763,26.3074,359.2125,30,26 ;
+405,2290.2622,155.5207,26.9788,0.1090,24,1 ;
+532,1996.7520,175.8992,31.3614,79.7076,0,0 ;
+532,1914.0114,192.1063,36.0155,358.2132,0,0 ;
+478,1905.3486,174.1229,37.1748,341.5607,66,1 ;
549,1240.2759,214.9924,19.2519,243.7370,79,39 ;
-550,1367.7468,365.9338,20.3661,246.2637,15,15 ;
-547,1289.3826,339.9178,19.2903,247.1900,123,1 ;
-536,1231.7341,295.6075,19.2922,336.8393,57,96 ;
-455,-580.8631,-64.8466,65.3632,3.7867,84,31 ;
-468,-543.4543,-180.5744,78.0750,4.1580,53,53 ;
-468,-541.5284,-180.6667,78.0747,0.2240,53,53 ;
-471,-774.8654,-115.3844,64.6716,24.2185,120,112 ;
-471,-771.7146,-113.4644,64.8308,26.8406,120,112 ;
-532,-273.9301,-41.3983,3.4405,339.6638,0,0 ;
-532,-127.1731,55.7261,4.0943,158.3291,0,0 ;
-478,-137.3239,-48.9942,3.1078,342.2244,35,1 ;
-475,1368.2947,476.2750,19.9363,335.9672,37,0 ;
-475,2331.3064,133.1183,26.7203,270.6836,17,1 ;
-482,2308.6682,-74.7184,26.5995,89.9092,48,48 ;
-468,2208.6223,110.5543,27.0101,275.3439,53,53 ;
-471,1923.8339,147.8248,36.7282,93.4718,103,111 ;
-415,1586.3274,38.5556,24.6067,272.3959,25,1 ;
-468,1547.5862,10.6921,23.7739,265.3787,3,3 ;
-402,889.0992,-21.7845,63.1125,152.4678,13,13 ;
-403,1207.5240,189.3297,20.9522,334.8106,37,1 ;
-416,1249.8207,338.2164,19.6291,66.7975,1,3 ;
-482,1335.0803,284.7404,19.6860,243.0011,52,52 ;
-468,1414.2616,248.6772,19.2239,65.7798,6,6 ;
-475,751.2299,277.2577,27.1364,199.6289,56,29 ;
-468,747.8585,346.7843,20.1559,209.1134,6,6 ;
-403,221.6420,30.1998,3.1849,186.4463,28,1 ;
-525,157.2517,-166.2276,1.4527,90.9328,17,20 ;
-532,20.7659,24.6322,4.0942,340.4432,0,0 ;
-532,-6.4192,-11.1534,4.0939,163.1182,0,0 ;
-460,-332.7806,-467.6667,1.6828,228.5235,1,9 ;
-403,-564.8430,-473.1027,26.1267,178.3205,113,1 ;
-415,-535.2667,-488.2196,25.2958,358.2053,40,1 ;
-479,-499.9452,-472.3691,25.3184,178.8490,59,36 ;
+550,1367.7468,365.9338,20.3661,246.2637,15,15 ;
+547,1289.3826,339.9178,19.2903,247.1900,123,1 ;
+536,1231.7341,295.6075,19.2922,336.8393,57,96 ;
+455,-580.8631,-64.8466,65.3632,3.7867,84,31 ;
+468,-543.4543,-180.5744,78.0750,4.1580,53,53 ;
+468,-541.5284,-180.6667,78.0747,0.2240,53,53 ;
+471,-774.8654,-115.3844,64.6716,24.2185,120,112 ;
+471,-771.7146,-113.4644,64.8308,26.8406,120,112 ;
+532,-273.9301,-41.3983,3.4405,339.6638,0,0 ;
+532,-127.1731,55.7261,4.0943,158.3291,0,0 ;
+478,-137.3239,-48.9942,3.1078,342.2244,35,1 ;
+475,1368.2947,476.2750,19.9363,335.9672,37,0 ;
+475,2331.3064,133.1183,26.7203,270.6836,17,1 ;
+482,2308.6682,-74.7184,26.5995,89.9092,48,48 ;
+468,2208.6223,110.5543,27.0101,275.3439,53,53 ;
+471,1923.8339,147.8248,36.7282,93.4718,103,111 ;
+415,1586.3274,38.5556,24.6067,272.3959,25,1 ;
+468,1547.5862,10.6921,23.7739,265.3787,3,3 ;
+402,889.0992,-21.7845,63.1125,152.4678,13,13 ;
+403,1207.5240,189.3297,20.9522,334.8106,37,1 ;
+416,1249.8207,338.2164,19.6291,66.7975,1,3 ;
+482,1335.0803,284.7404,19.6860,243.0011,52,52 ;
+468,1414.2616,248.6772,19.2239,65.7798,6,6 ;
+475,751.2299,277.2577,27.1364,199.6289,56,29 ;
+468,747.8585,346.7843,20.1559,209.1134,6,6 ;
+403,221.6420,30.1998,3.1849,186.4463,28,1 ;
+525,157.2517,-166.2276,1.4527,90.9328,17,20 ;
+532,20.7659,24.6322,4.0942,340.4432,0,0 ;
+532,-6.4192,-11.1534,4.0939,163.1182,0,0 ;
+460,-332.7806,-467.6667,1.6828,228.5235,1,9 ;
+403,-564.8430,-473.1027,26.1267,178.3205,113,1 ;
+415,-535.2667,-488.2196,25.2958,358.2053,40,1 ;
+479,-499.9452,-472.3691,25.3184,178.8490,59,36 ;
482,-480.4370,-486.2536,25.6331,177.1059,64,64 ;
diff --git a/amx/scriptfiles/vehicles/sf_airport.txt b/amx/scriptfiles/vehicles/sf_airport.txt
index 6364f57..a245dbf 100644
--- a/amx/scriptfiles/vehicles/sf_airport.txt
+++ b/amx/scriptfiles/vehicles/sf_airport.txt
@@ -1,35 +1,35 @@
-485,-1644.8495,-593.8191,13.8045,244.2475,1,74 ;
-485,-1433.6989,-639.9345,13.8059,351.8341,1,74 ;
-485,-1354.3955,-426.7434,13.8022,293.6214,1,74 ;
-485,-1284.1956,60.9789,13.8074,96.5168,1,74 ;
+485,-1644.8495,-593.8191,13.8045,244.2475,1,74 ;
+485,-1433.6989,-639.9345,13.8059,351.8341,1,74 ;
+485,-1354.3955,-426.7434,13.8022,293.6214,1,74 ;
+485,-1284.1956,60.9789,13.8074,96.5168,1,74 ;
485,-1556.3772,-156.9351,13.8067,135.6197,1,74 ;
592,-1562.6097,-191.8931,15.3402,135.3354,1,1 ;
-583,-1467.6941,-68.7159,13.6890,135.9720,1,1 ;
-583,-1438.1007,-178.1787,13.6843,333.7912,1,1 ;
-583,-1396.8986,-226.8979,13.6890,329.7987,1,1 ;
-583,-1634.3322,-377.9814,13.6890,335.1347,1,1 ;
+583,-1467.6941,-68.7159,13.6890,135.9720,1,1 ;
+583,-1438.1007,-178.1787,13.6843,333.7912,1,1 ;
+583,-1396.8986,-226.8979,13.6890,329.7987,1,1 ;
+583,-1634.3322,-377.9814,13.6890,335.1347,1,1 ;
583,-1299.0438,-286.9009,13.6891,341.6255,1,1 ;
-525,-1354.0233,-375.1031,14.0255,263.6050,18,20 ;
-513,-1285.7555,24.0493,14.6993,121.8480,21,36 ;
-513,-1260.6040,7.5347,14.7070,118.6241,21,36 ;
+525,-1354.0233,-375.1031,14.0255,263.6050,18,20 ;
+513,-1285.7555,24.0493,14.6993,121.8480,21,36 ;
+513,-1260.6040,7.5347,14.7070,118.6241,21,36 ;
511,-1704.6077,-239.2016,15.5222,314.2837,4,90 ;
-476,-1367.2609,-485.4558,14.8787,209.5813,7,6 ;
+476,-1367.2609,-485.4558,14.8787,209.5813,7,6 ;
476,-1440.4191,-526.5578,14.8939,207.2082,1,6 ;
-519,-1371.1775,-232.3967,15.0767,315.6230,1,1 ;
-519,-1341.1079,-254.3787,15.0773,321.6316,1,1 ;
-420,-1472.3452,-272.3332,13.7749,78.9964,6,1 ;
-420,-1459.8147,-275.6010,13.8146,65.6229,6,1 ;
-420,-1439.7112,-284.8562,13.8131,58.6121,6,1 ;
+519,-1371.1775,-232.3967,15.0767,315.6230,1,1 ;
+519,-1341.1079,-254.3787,15.0773,321.6316,1,1 ;
+420,-1472.3452,-272.3332,13.7749,78.9964,6,1 ;
+420,-1459.8147,-275.6010,13.8146,65.6229,6,1 ;
+420,-1439.7112,-284.8562,13.8131,58.6121,6,1 ;
420,-1421.4268,-298.8921,13.7817,46.1681,6,1 ;
-519,-1331.5316,-618.3227,15.0629,325.7105,1,1 ;
-593,-1384.5905,-625.2684,14.6115,321.7572,58,8 ;
-511,-1449.8151,-617.1895,15.5199,329.7999,12,60 ;
-593,-1325.9851,-276.6170,14.6107,296.5465,60,1 ;
+519,-1331.5316,-618.3227,15.0629,325.7105,1,1 ;
+593,-1384.5905,-625.2684,14.6115,321.7572,58,8 ;
+511,-1449.8151,-617.1895,15.5199,329.7999,12,60 ;
+593,-1325.9851,-276.6170,14.6107,296.5465,60,1 ;
563,-1598.6353,-615.8722,14.8537,276.2098,1,6 ;
476,-1426.4314,-518.3584,14.8958,180.5740,119,117 ;
513,-1281.6588,-627.3807,14.6996,356.9070,21,36 ;
-519,-1299.0974,-353.5505,15.0716,278.4124,1,1 ;
+519,-1299.0974,-353.5505,15.0716,278.4124,1,1 ;
487,-1182.6599,22.4607,14.3251,45.0604,29,42 ;
417,-1222.6132,-11.1500,14.2353,42.9828,0,0 ;
-544,-1258.5739,68.2615,14.3863,43.9776,3,1 ;
-544,-1262.4766,64.5995,14.3817,43.9013,3,1 ;
+544,-1258.5739,68.2615,14.3863,43.9776,3,1 ;
+544,-1262.4766,64.5995,14.3817,43.9013,3,1 ;
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/sf_gen.txt b/amx/scriptfiles/vehicles/sf_gen.txt
index 000f2e4..876e5dc 100644
--- a/amx/scriptfiles/vehicles/sf_gen.txt
+++ b/amx/scriptfiles/vehicles/sf_gen.txt
@@ -1,11 +1,11 @@
-415,-2089.7454,-85.3183,34.9356,0.0900,36,1 ;
+415,-2089.7454,-85.3183,34.9356,0.0900,36,1 ;
415,-2076.7393,-84.4259,34.8911,357.8584,116,1 ;
504,-2091.6350,-106.7603,35.1125,179.5832,45,29 ;
560,-2396.2222,-594.7454,132.3533,123.1677,33,0 ;
-411,-2414.5781,-586.8558,132.3755,215.3865,112,1 ;
+411,-2414.5781,-586.8558,132.3755,215.3865,112,1 ;
482,-2527.9175,-602.6952,132.6175,179.0378,41,20 ;
-451,-2517.0481,-601.8521,132.2690,179.6375,36,36 ;
-522,-2494.2900,-601.8505,132.1326,178.4421,3,8 ;
+451,-2517.0481,-601.8521,132.2690,179.6375,36,36 ;
+522,-2494.2900,-601.8505,132.1326,178.4421,3,8 ;
522,-2622.9067,-509.6570,70.9034,284.9871,3,8 ;
405,-2747.2739,-306.4048,6.9132,50.7011,24,1 ;
505,-2774.2708,-281.9049,6.7476,178.6849,37,0 ;
@@ -13,111 +13,111 @@
457,-2657.9009,-290.8440,7.1044,313.4402,25,25 ;
457,-2652.5388,-295.5096,7.1101,312.4090,86,86 ;
457,-2644.5061,-290.4049,7.1283,139.4791,8,8 ;
-457,-2650.2507,-284.7023,7.1297,137.3287,2,1 ;
+457,-2650.2507,-284.7023,7.1297,137.3287,2,1 ;
475,-2718.7566,-181.6171,3.9922,269.6131,68,8 ;
411,-2692.3340,-83.6105,4.7104,90.7628,1,1 ;
560,-2682.6699,-22.7128,4.3281,178.6174,1,31 ;
-560,-2627.3579,-34.8250,4.0417,181.9431,41,29 ;
-482,-2729.5671,76.7876,4.4511,87.5421,32,32 ;
+560,-2627.3579,-34.8250,4.0417,181.9431,41,29 ;
+482,-2729.5671,76.7876,4.4511,87.5421,32,32 ;
579,-2484.3000,5.7674,25.5544,91.3108,42,42 ;
-567,-2528.8882,-5.5797,25.4875,271.5341,90,96 ;
-429,-2592.7732,-110.8420,3.9306,89.9971,2,1 ;
-415,-2615.9045,-178.3203,4.1076,269.3111,40,1 ;
+567,-2528.8882,-5.5797,25.4875,271.5341,90,96 ;
+429,-2592.7732,-110.8420,3.9306,89.9971,2,1 ;
+415,-2615.9045,-178.3203,4.1076,269.3111,40,1 ;
480,-2352.2312,-124.4615,34.9708,179.3509,17,1 ;
-448,-2319.5144,-150.8684,35.1509,176.9124,3,6 ;
+448,-2319.5144,-150.8684,35.1509,176.9124,3,6 ;
535,-2099.2341,-36.4293,35.1021,357.3710,77,26 ;
535,-2021.4100,-47.6897,35.1866,184.1009,69,1 ;
535,-2085.3667,61.6716,34.2269,88.7158,28,1 ;
567,-2357.8167,-43.2394,35.1865,90.6814,97,96 ;
403,-1855.5707,-176.4486,9.9250,270.1853,25,1 ;
-492,-1821.1146,-161.7525,9.1874,164.9686,28,56 ;
-530,-1694.7194,8.6605,3.3137,348.2751,111,1 ;
-530,-1712.0934,10.8106,3.3879,303.1499,112,1 ;
-530,-1716.6062,19.1024,3.3437,273.4997,119,1 ;
-530,-1700.6174,6.2953,3.3148,352.1077,114,1 ;
-522,-1697.8990,63.3702,3.1263,301.0493,39,106 ;
-522,-1682.4491,41.4261,3.1198,338.2361,51,118 ;
-522,-1694.0885,48.6863,3.1207,317.3058,3,3 ;
-493,-1760.9098,-193.8202,-0.1219,266.3580,36,13 ;
-426,-1669.5262,-33.8696,3.3108,314.1520,42,42 ;
+492,-1821.1146,-161.7525,9.1874,164.9686,28,56 ;
+530,-1694.7194,8.6605,3.3137,348.2751,111,1 ;
+530,-1712.0934,10.8106,3.3879,303.1499,112,1 ;
+530,-1716.6062,19.1024,3.3437,273.4997,119,1 ;
+530,-1700.6174,6.2953,3.3148,352.1077,114,1 ;
+522,-1697.8990,63.3702,3.1263,301.0493,39,106 ;
+522,-1682.4491,41.4261,3.1198,338.2361,51,118 ;
+522,-1694.0885,48.6863,3.1207,317.3058,3,3 ;
+493,-1760.9098,-193.8202,-0.1219,266.3580,36,13 ;
+426,-1669.5262,-33.8696,3.3108,314.1520,42,42 ;
403,-1837.5128,-15.2423,15.6987,271.1784,54,1 ;
-426,-1839.7010,-21.5651,14.8602,265.8797,42,42 ;
+426,-1839.7010,-21.5651,14.8602,265.8797,42,42 ;
421,-1885.3856,-161.3161,11.6546,355.7335,71,72 ;
482,-1861.0438,-140.4725,12.0201,87.6606,66,66 ;
-567,-2124.6743,-242.8083,35.1864,18.3731,99,81 ;
+567,-2124.6743,-242.8083,35.1864,18.3731,99,81 ;
545,-2485.9868,97.9314,34.9680,268.0125,81,81 ;
-533,-2484.7358,65.7313,25.3992,358.7399,79,1 ;
-462,-2694.2021,68.7381,3.9321,85.6921,2,1 ;
+533,-2484.7358,65.7313,25.3992,358.7399,79,1 ;
+462,-2694.2021,68.7381,3.9321,85.6921,2,1 ;
424,-2941.3359,-794.7429,6.8570,340.8897,2,2 ;
-424,-2938.8164,-818.2305,7.0451,13.5219,2,2 ;
-473,-2987.2434,-861.8030,-0.8947,144.9324,56,15 ;
-473,-2967.3806,-684.3901,0.0677,351.0859,56,15 ;
-473,-2954.7388,-498.1349,0.0155,5.6709,56,15 ;
-493,-2947.7612,-364.1319,-0.5123,78.4238,36,13 ;
+424,-2938.8164,-818.2305,7.0451,13.5219,2,2 ;
+473,-2987.2434,-861.8030,-0.8947,144.9324,56,15 ;
+473,-2967.3806,-684.3901,0.0677,351.0859,56,15 ;
+473,-2954.7388,-498.1349,0.0155,5.6709,56,15 ;
+493,-2947.7612,-364.1319,-0.5123,78.4238,36,13 ;
461,-2068.5420,-503.7956,35.0035,182.6852,46,46 ;
-483,-1906.4901,-611.7231,24.5863,319.5491,17,0 ;
+483,-1906.4901,-611.7231,24.5863,319.5491,17,0 ;
411,-2148.7424,-922.7524,31.7505,267.8838,106,1 ;
411,-2125.3806,-885.7675,31.7505,270.2341,104,1 ;
482,-1871.7642,-874.4785,32.1329,90.1095,118,118 ;
-411,-1872.5656,-957.2282,31.7505,88.9793,80,1 ;
-400,-1821.8348,-886.4156,42.0592,175.1724,123,1 ;
-512,-1431.6896,-954.0375,201.2352,273.5343,15,123 ;
-512,-1432.9872,-942.3373,201.3756,274.4437,32,112 ;
-461,-2205.1782,-310.5668,35.2394,330.2716,46,46 ;
-482,-2216.4529,-85.7872,35.4346,1.2615,64,64 ;
-498,-2115.4626,-3.3854,35.3872,269.2903,13,120 ;
-437,-2092.6289,-381.4249,35.4662,89.8969,79,7 ;
-437,-2201.6951,-406.7657,35.4694,228.5155,79,7 ;
-437,-2047.2311,-528.4994,35.4647,286.8040,79,7 ;
+411,-1872.5656,-957.2282,31.7505,88.9793,80,1 ;
+400,-1821.8348,-886.4156,42.0592,175.1724,123,1 ;
+512,-1431.6896,-954.0375,201.2352,273.5343,15,123 ;
+512,-1432.9872,-942.3373,201.3756,274.4437,32,112 ;
+461,-2205.1782,-310.5668,35.2394,330.2716,46,46 ;
+482,-2216.4529,-85.7872,35.4346,1.2615,64,64 ;
+498,-2115.4626,-3.3854,35.3872,269.2903,13,120 ;
+437,-2092.6289,-381.4249,35.4662,89.8969,79,7 ;
+437,-2201.6951,-406.7657,35.4694,228.5155,79,7 ;
+437,-2047.2311,-528.4994,35.4647,286.8040,79,7 ;
455,-1578.2035,97.3175,4.1610,135.9403,37,1 ;
-443,-1747.0641,-164.1042,4.1860,39.5812,20,1 ;
+443,-1747.0641,-164.1042,4.1860,39.5812,20,1 ;
545,-2267.1362,85.5752,34.9679,269.1610,67,67 ;
-496,-2264.8977,200.3980,34.8805,89.9701,66,72 ;
+496,-2264.8977,200.3980,34.8805,89.9701,66,72 ;
536,-2216.8618,113.6911,35.0595,88.9417,12,1 ;
-409,-2414.7739,331.6805,34.7672,331.1144,1,1 ;
-405,-2452.8604,138.2975,34.8354,46.6420,24,1 ;
+409,-2414.7739,331.6805,34.7672,331.1144,1,1 ;
+405,-2452.8604,138.2975,34.8354,46.6420,24,1 ;
461,-2523.0012,338.5651,34.6932,250.6181,61,1 ;
-439,-2502.7300,382.2403,35.0181,235.8174,54,38 ;
-400,-2470.8625,407.1818,27.8697,139.4656,123,1 ;
-496,-2522.4219,310.7949,27.4816,70.6665,20,20 ;
+439,-2502.7300,382.2403,35.0181,235.8174,54,38 ;
+400,-2470.8625,407.1818,27.8697,139.4656,123,1 ;
+496,-2522.4219,310.7949,27.4816,70.6665,20,20 ;
428,-2440.9980,509.6792,30.0563,206.6596,4,75 ;
428,-2437.7600,510.8553,30.0507,202.1894,4,75 ;
560,-2425.6440,518.4800,29.6348,216.9742,9,39 ;
463,-2473.4978,743.3479,34.5559,179.9892,84,84 ;
-561,-2412.3730,741.7964,34.8297,179.4121,8,17 ;
+561,-2412.3730,741.7964,34.8297,179.4121,8,17 ;
463,-2451.2593,740.6838,34.7129,180.6275,79,39 ;
-467,-2248.2617,692.7663,49.1081,179.2399,58,8 ;
-405,-2151.4058,637.0890,52.1898,182.3598,75,1 ;
+467,-2248.2617,692.7663,49.1081,179.2399,58,8 ;
+405,-2151.4058,637.0890,52.1898,182.3598,75,1 ;
405,-2134.6875,686.8921,63.7561,178.3476,123,1 ;
-409,-1951.6525,724.5811,45.1672,270.0913,1,1 ;
-429,-1941.2656,585.4785,34.7953,359.2309,3,1 ;
+409,-1951.6525,724.5811,45.1672,270.0913,1,1 ;
+429,-1941.2656,585.4785,34.7953,359.2309,3,1 ;
439,-1922.0646,303.6587,40.9425,177.2474,25,78 ;
461,-1974.6830,170.9425,27.3574,271.5703,46,46 ;
420,-1987.9830,104.7278,27.3169,0.4059,6,1 ;
420,-1988.1044,147.8747,27.3177,0.2008,6,1 ;
-467,-2922.5259,428.7520,4.6539,276.2402,2,1 ;
-493,-2981.0247,496.3422,-0.6554,1.5943,36,13 ;
+467,-2922.5259,428.7520,4.6539,276.2402,2,1 ;
+493,-2981.0247,496.3422,-0.6554,1.5943,36,13 ;
549,-2578.6179,626.5599,27.4438,359.1449,117,1 ;
575,-2610.8423,1405.6122,6.7507,270.0862,19,96 ;
411,-1663.4688,1211.4713,6.9794,276.9535,12,1 ;
558,-1656.2698,1208.2489,20.7792,268.6007,42,42 ;
-558,-1660.5311,1215.1492,20.7869,315.8402,24,1 ;
-451,-1650.9478,1208.6367,13.3797,247.0129,18,18 ;
+558,-1660.5311,1215.1492,20.7869,315.8402,24,1 ;
+451,-1650.9478,1208.6367,13.3797,247.0129,18,18 ;
451,-1656.4871,1215.6764,13.4254,259.0972,101,1 ;
-560,-2047.9236,901.2451,53.3068,356.4079,21,1 ;
+560,-2047.9236,901.2451,53.3068,356.4079,21,1 ;
560,-2105.8264,901.4780,76.3014,4.8684,36,1 ;
500,-2927.3159,500.5060,5.0168,268.8409,28,119 ;
-409,-2752.1567,374.9532,3.9412,179.1495,1,1 ;
+409,-2752.1567,374.9532,3.9412,179.1495,1,1 ;
405,-2657.6785,374.4564,4.1077,1.3494,75,1 ;
-426,-2664.9829,267.9181,4.0801,0.0174,7,7 ;
-439,-2681.6306,267.9998,4.2312,358.7699,65,79 ;
-462,-2636.0247,247.4894,3.9279,163.5248,2,1 ;
-559,-2691.8088,204.5243,3.9923,359.4068,68,8 ;
-496,-2793.0317,229.3433,6.8049,89.8252,53,56 ;
+426,-2664.9829,267.9181,4.0801,0.0174,7,7 ;
+439,-2681.6306,267.9998,4.2312,358.7699,65,79 ;
+462,-2636.0247,247.4894,3.9279,163.5248,2,1 ;
+559,-2691.8088,204.5243,3.9923,359.4068,68,8 ;
+496,-2793.0317,229.3433,6.8049,89.8252,53,56 ;
560,-2710.5635,128.6468,3.9600,177.1886,37,0 ;
-533,-2613.7000,205.8831,4.6949,1.1401,74,1 ;
-526,-2616.9363,71.5616,4.1026,268.8823,17,1 ;
-436,-2546.9377,-142.7184,13.8009,0.8366,109,1 ;
+533,-2613.7000,205.8831,4.6949,1.1401,74,1 ;
+526,-2616.9363,71.5616,4.1026,268.8823,17,1 ;
+436,-2546.9377,-142.7184,13.8009,0.8366,109,1 ;
517,-2459.4773,-150.5229,25.7609,1.8047,36,36 ;
496,-2592.9810,-191.1821,3.9750,91.0989,31,31 ;
475,-2694.0012,-147.6346,4.0512,90.9210,76,1 ;
@@ -125,99 +125,99 @@
566,-2796.3052,-39.5262,7.0876,89.8012,8,17 ;
467,-2878.8960,734.5536,29.3162,280.5990,60,1 ;
482,-2462.1184,793.0873,35.2270,93.7908,28,28 ;
-439,-2380.2781,1269.3492,25.1014,277.3688,37,78 ;
-522,-1821.9445,1310.5370,59.3070,186.3879,3,8 ;
+439,-2380.2781,1269.3492,25.1014,277.3688,37,78 ;
+522,-1821.9445,1310.5370,59.3070,186.3879,3,8 ;
475,-1829.7480,1289.9834,59.8258,21.8999,61,61 ;
-475,-1842.0276,1304.4764,59.5341,198.8919,37,0 ;
+475,-1842.0276,1304.4764,59.5341,198.8919,37,0 ;
405,-1755.8068,953.2106,24.6171,84.9867,75,1 ;
480,-1686.7346,1007.9662,17.3024,92.5730,66,72 ;
-405,-1587.0150,859.0454,7.4098,90.4344,75,1 ;
-439,-1629.2559,870.3282,8.1322,177.2777,43,21 ;
-533,-1707.0554,795.3817,24.5184,2.4475,77,1 ;
-453,-1463.8043,1023.7324,-0.2395,269.1420,56,56 ;
-473,-1509.0499,1385.6211,-0.2875,114.2092,56,15 ;
-417,-1468.1395,1490.9220,8.3433,92.3864,0,0 ;
-417,-2311.2693,1544.9398,18.8852,183.6456,0,0 ;
-469,-2514.7388,1545.1013,17.3351,349.7112,1,3 ;
-473,-2432.8538,1568.3925,-0.0528,353.0695,56,53 ;
-473,-2434.4873,1571.9756,-0.1826,348.1105,56,15 ;
+405,-1587.0150,859.0454,7.4098,90.4344,75,1 ;
+439,-1629.2559,870.3282,8.1322,177.2777,43,21 ;
+533,-1707.0554,795.3817,24.5184,2.4475,77,1 ;
+453,-1463.8043,1023.7324,-0.2395,269.1420,56,56 ;
+473,-1509.0499,1385.6211,-0.2875,114.2092,56,15 ;
+417,-1468.1395,1490.9220,8.3433,92.3864,0,0 ;
+417,-2311.2693,1544.9398,18.8852,183.6456,0,0 ;
+469,-2514.7388,1545.1013,17.3351,349.7112,1,3 ;
+473,-2432.8538,1568.3925,-0.0528,353.0695,56,53 ;
+473,-2434.4873,1571.9756,-0.1826,348.1105,56,15 ;
521,-2501.2534,1222.1891,36.9992,139.5936,87,118 ;
-496,-2867.3279,695.7776,23.2883,296.3333,22,22 ;
+496,-2867.3279,695.7776,23.2883,296.3333,22,22 ;
496,-2857.4624,830.0972,39.8342,238.8571,42,42 ;
401,-2836.6306,870.4559,43.7638,267.2119,83,1 ;
-401,-2839.8884,925.7379,43.8342,274.0428,47,47 ;
-410,-2855.1917,962.1486,43.6477,294.1936,9,1 ;
+401,-2839.8884,925.7379,43.8342,274.0428,47,47 ;
+410,-2855.1917,962.1486,43.6477,294.1936,9,1 ;
516,-2900.1345,1104.5038,26.8936,272.1553,9,1 ;
-418,-2898.4971,1161.4402,13.5039,272.4668,95,95 ;
+418,-2898.4971,1161.4402,13.5039,272.4668,95,95 ;
415,-2722.1973,980.1292,54.2327,9.4435,25,1 ;
-411,-2728.2146,910.1182,67.3208,153.1185,112,1 ;
+411,-2728.2146,910.1182,67.3208,153.1185,112,1 ;
421,-2634.7214,929.3314,71.3155,214.6021,30,1 ;
-405,-2680.4905,869.2202,76.4498,23.7850,91,1 ;
-558,-2650.5452,856.2390,63.6388,312.0352,117,1 ;
+405,-2680.4905,869.2202,76.4498,23.7850,91,1 ;
+558,-2650.5452,856.2390,63.6388,312.0352,117,1 ;
418,-2205.7361,293.8083,35.2104,359.0113,119,119 ;
400,-2231.1545,293.4678,35.2612,1.3597,14,123 ;
426,-2792.9805,785.0926,49.5488,17.1913,7,7 ;
533,-1997.0570,708.1403,45.0732,359.8203,52,39 ;
-536,-2098.6619,653.4818,52.1045,178.5289,57,96 ;
+536,-2098.6619,653.4818,52.1045,178.5289,57,96 ;
475,-1772.8362,1205.1267,24.9264,128.7472,21,1 ;
482,-1698.9235,1029.1211,45.2640,163.2027,28,28 ;
421,-1915.2972,792.2175,39.5330,271.2570,42,42 ;
-482,-1830.3928,636.3265,30.5508,181.9362,62,62 ;
+482,-1830.3928,636.3265,30.5508,181.9362,62,62 ;
551,-1767.2255,857.6757,24.6063,90.7746,72,1 ;
-533,-1996.7197,780.7192,45.0773,0.8333,74,1 ;
+533,-1996.7197,780.7192,45.0773,0.8333,74,1 ;
480,-2156.5957,781.6992,69.2316,271.9981,58,1 ;
561,-2206.7849,718.1914,49.4181,359.8657,101,1 ;
482,-2287.0796,581.4111,34.9593,270.0385,59,36 ;
482,-2586.3882,311.3461,4.9411,90.7013,88,1 ;
-439,-2586.3213,325.2354,4.7471,270.4281,65,79 ;
-521,-2590.9128,484.1599,14.1862,58.1234,75,13 ;
+439,-2586.3213,325.2354,4.7471,270.4281,65,79 ;
+521,-2590.9128,484.1599,14.1862,58.1234,75,13 ;
463,-2454.1155,638.9645,32.6119,266.5039,74,1 ;
-475,-2588.4861,632.4481,14.2561,269.3260,9,39 ;
+475,-2588.4861,632.4481,14.2561,269.3260,9,39 ;
479,-2546.5293,647.5505,14.1927,90.1881,109,100 ;
-405,-2566.9233,556.1500,14.3396,294.3413,36,1 ;
-461,-2621.0337,137.8928,4.0045,266.5985,46,46 ;
-408,-2655.6912,-194.1583,4.7043,359.8855,26,26 ;
-479,-2274.9456,-119.1158,35.1114,266.5583,54,31 ;
-496,-2263.0579,18.8142,34.8656,354.0030,42,42 ;
-475,-2167.6179,86.2425,35.0484,172.0044,21,1 ;
+405,-2566.9233,556.1500,14.3396,294.3413,36,1 ;
+461,-2621.0337,137.8928,4.0045,266.5985,46,46 ;
+408,-2655.6912,-194.1583,4.7043,359.8855,26,26 ;
+479,-2274.9456,-119.1158,35.1114,266.5583,54,31 ;
+496,-2263.0579,18.8142,34.8656,354.0030,42,42 ;
+475,-2167.6179,86.2425,35.0484,172.0044,21,1 ;
579,-2265.7461,452.6116,34.9076,250.2149,95,105 ;
405,-2379.3401,625.8353,33.0000,1.2157,36,1 ;
-579,-2213.2063,416.5867,35.0997,357.7801,7,7 ;
+579,-2213.2063,416.5867,35.0997,357.7801,7,7 ;
582,-2123.9011,428.0708,34.6792,356.2318,14,1 ;
-482,-2123.8403,380.5338,35.2907,87.8615,64,64 ;
-582,-2044.8904,460.4015,35.2268,304.5739,56,123 ;
+482,-2123.8403,380.5338,35.2907,87.8615,64,64 ;
+582,-2044.8904,460.4015,35.2268,304.5739,56,123 ;
405,-2308.2900,673.6360,44.3038,90.5505,65,79 ;
-480,-2175.9424,654.7142,49.2104,181.1464,12,12 ;
+480,-2175.9424,654.7142,49.2104,181.1464,12,12 ;
405,-2650.2134,703.3293,27.7206,270.0416,11,1 ;
496,-2694.9968,719.9131,34.2360,176.1588,42,42 ;
482,-1612.3462,1284.5171,7.3010,90.9943,85,85 ;
445,-1630.5129,1289.7798,6.9140,135.4144,37,37 ;
482,-1834.8303,1425.0577,7.2412,179.1661,57,57 ;
-411,-1975.7601,1224.7452,31.4079,272.5271,106,1 ;
-560,-1971.0621,1185.6659,45.0734,89.7986,37,0 ;
-480,-1847.4036,1165.1617,39.5751,356.2450,73,45 ;
-428,-1833.1833,1096.2388,45.4880,89.0391,4,75 ;
-439,-1730.7964,1089.0475,45.3416,271.8883,57,8 ;
-455,-1944.7908,1001.1067,35.6111,269.5481,32,74 ;
+411,-1975.7601,1224.7452,31.4079,272.5271,106,1 ;
+560,-1971.0621,1185.6659,45.0734,89.7986,37,0 ;
+480,-1847.4036,1165.1617,39.5751,356.2450,73,45 ;
+428,-1833.1833,1096.2388,45.4880,89.0391,4,75 ;
+439,-1730.7964,1089.0475,45.3416,271.8883,57,8 ;
+455,-1944.7908,1001.1067,35.6111,269.5481,32,74 ;
482,-1673.3295,1090.5961,8.0443,269.4953,10,10 ;
-400,-2124.6316,-935.2519,32.1158,268.5499,62,1 ;
+400,-2124.6316,-935.2519,32.1158,268.5499,62,1 ;
506,-2150.3098,-772.5972,31.6486,270.1075,37,37 ;
-506,-2134.1143,-760.7621,31.7280,90.9188,7,7 ;
-421,-2124.5564,-847.0036,31.9059,270.5157,95,1 ;
-405,-1736.9055,1053.4701,17.4609,267.5370,40,1 ;
-439,-1696.8990,977.2657,17.4815,359.7377,67,8 ;
-496,-1474.2157,-137.3864,5.6264,270.1316,62,62 ;
-400,-1337.5870,-128.9230,6.0923,88.6881,62,1 ;
+506,-2134.1143,-760.7621,31.7280,90.9188,7,7 ;
+421,-2124.5564,-847.0036,31.9059,270.5157,95,1 ;
+405,-1736.9055,1053.4701,17.4609,267.5370,40,1 ;
+439,-1696.8990,977.2657,17.4815,359.7377,67,8 ;
+496,-1474.2157,-137.3864,5.6264,270.1316,62,62 ;
+400,-1337.5870,-128.9230,6.0923,88.6881,62,1 ;
482,-1426.0374,-212.6052,6.0536,88.9253,57,57 ;
-516,-1369.8975,-216.2965,5.8337,88.8366,122,1 ;
+516,-1369.8975,-216.2965,5.8337,88.8366,122,1 ;
517,-1337.3739,-37.7222,5.8549,87.8366,36,36 ;
-480,-2645.6714,1375.8912,6.9395,268.6650,12,12 ;
+480,-2645.6714,1375.8912,6.9395,268.6650,12,12 ;
411,-2618.2075,1349.1384,6.9411,0.7610,81,1 ;
-477,-2617.5005,1376.3701,6.8800,180.0679,94,1 ;
-411,-2646.4983,1334.4966,6.9009,0.6167,106,1 ;
-487,-1637.0043,1381.6923,18.5907,137.6304,29,42 ;
-487,-2632.1711,1417.5526,24.9424,235.3438,29,42 ;
-480,-1623.0930,817.0657,6.5923,2.0322,6,6 ;
+477,-2617.5005,1376.3701,6.8800,180.0679,94,1 ;
+411,-2646.4983,1334.4966,6.9009,0.6167,106,1 ;
+487,-1637.0043,1381.6923,18.5907,137.6304,29,42 ;
+487,-2632.1711,1417.5526,24.9424,235.3438,29,42 ;
+480,-1623.0930,817.0657,6.5923,2.0322,6,6 ;
493,-1409.9961,917.3229,-0.3734,301.5048,1,5 ;
493,-1403.3783,888.8575,-0.1041,328.1305,36,13 ;
480,-1488.3904,666.5170,6.9579,92.0792,2,2 ;
@@ -225,129 +225,129 @@
482,-1487.4949,758.5935,7.5513,89.3724,32,53 ;
403,-1654.6354,452.5728,8.2105,212.2164,24,77 ;
455,-1701.2188,407.8390,7.6164,221.8163,84,58 ;
-461,-1673.6534,399.1507,6.7568,311.2735,37,1 ;
+461,-1673.6534,399.1507,6.7568,311.2735,37,1 ;
421,-1665.1743,351.3592,6.8215,345.8147,42,42 ;
455,-1622.2393,84.3414,3.9898,147.7921,1,31 ;
453,-1632.5704,161.8541,-0.2770,315.6891,56,56 ;
-460,-1446.9373,96.2603,1.8018,313.8602,1,30 ;
-421,-1319.0929,-337.8624,14.0309,260.0551,25,1 ;
-553,-1622.4431,-311.8704,15.4839,27.5372,55,23 ;
-417,-1712.1791,-456.0522,14.2207,1.9482,0,0 ;
-447,-1756.1366,-444.6548,0.7483,5.0545,75,2 ;
-507,-1236.8948,33.3595,13.9733,221.5421,7,7 ;
-411,-1426.3220,-13.7968,5.7271,90.1829,116,1 ;
+460,-1446.9373,96.2603,1.8018,313.8602,1,30 ;
+421,-1319.0929,-337.8624,14.0309,260.0551,25,1 ;
+553,-1622.4431,-311.8704,15.4839,27.5372,55,23 ;
+417,-1712.1791,-456.0522,14.2207,1.9482,0,0 ;
+447,-1756.1366,-444.6548,0.7483,5.0545,75,2 ;
+507,-1236.8948,33.3595,13.9733,221.5421,7,7 ;
+411,-1426.3220,-13.7968,5.7271,90.1829,116,1 ;
411,-1459.3002,-5.4454,5.7914,271.8837,45,32 ;
424,-2906.0566,58.3788,4.3926,5.7181,119,122 ;
-568,-2897.8433,330.0730,4.6656,170.8635,9,39 ;
-444,-2930.2214,711.2976,6.4082,7.0339,32,53 ;
-579,-2885.2395,1243.7937,7.0338,261.2170,7,7 ;
-462,-2810.1172,1325.5194,6.7011,143.9079,3,1 ;
-446,-2747.4805,1399.5426,-0.7690,32.7627,3,3 ;
-447,-2676.2593,1897.6268,0.9115,93.0397,75,2 ;
-508,-2065.7258,1423.1896,7.4764,145.1099,1,1 ;
+568,-2897.8433,330.0730,4.6656,170.8635,9,39 ;
+444,-2930.2214,711.2976,6.4082,7.0339,32,53 ;
+579,-2885.2395,1243.7937,7.0338,261.2170,7,7 ;
+462,-2810.1172,1325.5194,6.7011,143.9079,3,1 ;
+446,-2747.4805,1399.5426,-0.7690,32.7627,3,3 ;
+447,-2676.2593,1897.6268,0.9115,93.0397,75,2 ;
+508,-2065.7258,1423.1896,7.4764,145.1099,1,1 ;
461,-2092.5718,1432.6520,6.6750,193.9025,87,118 ;
-536,-2091.5598,1392.6028,6.8385,217.0096,30,96 ;
-452,-1902.7883,1400.2579,-0.2510,76.7538,1,5 ;
-461,-1794.8903,1405.5066,6.7728,203.9249,61,1 ;
-472,-1720.9418,1436.0170,0.3172,356.6591,56,53 ;
-454,-1467.0510,1503.8058,0.1585,110.2544,26,26 ;
-473,-1570.9440,1263.8746,-0.0779,276.0413,56,15 ;
-506,-1554.5819,1068.4961,6.8919,359.0276,52,52 ;
+536,-2091.5598,1392.6028,6.8385,217.0096,30,96 ;
+452,-1902.7883,1400.2579,-0.2510,76.7538,1,5 ;
+461,-1794.8903,1405.5066,6.7728,203.9249,61,1 ;
+472,-1720.9418,1436.0170,0.3172,356.6591,56,53 ;
+454,-1467.0510,1503.8058,0.1585,110.2544,26,26 ;
+473,-1570.9440,1263.8746,-0.0779,276.0413,56,15 ;
+506,-1554.5819,1068.4961,6.8919,359.0276,52,52 ;
562,-1614.6351,1007.8853,6.8478,250.5691,17,1 ;
553,-1566.2198,-255.4555,15.4835,41.4339,61,74 ;
-586,-1871.2375,-893.5937,31.5430,91.2748,122,1 ;
+586,-1871.2375,-893.5937,31.5430,91.2748,122,1 ;
586,-1912.6022,-918.9386,31.7413,353.5594,46,46 ;
541,-1897.6475,-823.9932,31.8346,272.8453,44,96 ;
541,-1886.8457,-759.9957,31.6483,270.8408,60,1 ;
533,-1761.6075,613.7797,26.9520,89.3371,79,1 ;
-429,-2019.1703,1029.0781,55.1885,272.6768,13,13 ;
+429,-2019.1703,1029.0781,55.1885,272.6768,13,13 ;
442,-2041.7661,1116.0492,53.1165,175.0672,11,105 ;
-421,-2052.5154,1112.8059,53.1715,181.2767,13,1 ;
-560,-2557.4421,1143.5118,55.4319,165.8663,9,39 ;
+421,-2052.5154,1112.8059,53.1715,181.2767,13,1 ;
+560,-2557.4421,1143.5118,55.4319,165.8663,9,39 ;
402,-2541.8601,1141.0548,55.3862,170.3531,35,1 ;
496,-2499.5383,1137.9291,55.4432,180.4333,53,56 ;
-536,-2485.8357,1137.9993,55.4642,180.9101,12,1 ;
-541,-2458.5952,1138.3412,55.3516,178.5045,58,8 ;
+536,-2485.8357,1137.9993,55.4642,180.9101,12,1 ;
+541,-2458.5952,1138.3412,55.3516,178.5045,58,8 ;
541,-2431.1118,1136.0994,55.5330,175.6763,69,1 ;
541,-2377.0164,1122.4816,55.3515,340.0099,60,1 ;
508,-2413.5251,1026.2301,50.7658,0.0956,1,1 ;
575,-2408.1653,974.7092,44.9025,182.2524,19,96 ;
575,-2406.2703,944.5644,44.9790,266.8056,72,1 ;
-559,-2352.3479,981.5965,50.3515,5.7404,58,8 ;
-437,-2366.8171,1023.6387,50.8246,181.9107,79,7 ;
+559,-2352.3479,981.5965,50.3515,5.7404,58,8 ;
+437,-2366.8171,1023.6387,50.8246,181.9107,79,7 ;
405,-2239.0337,893.4630,66.5312,89.8170,24,1 ;
-426,-2233.8440,930.8287,66.3919,180.1113,10,10 ;
+426,-2233.8440,930.8287,66.3919,180.1113,10,10 ;
587,-2220.6704,813.1365,49.0857,90.0399,53,1 ;
500,-2292.3335,812.4420,49.0650,88.5746,9,39 ;
-466,-2273.5481,1038.3989,83.5060,179.7762,68,76 ;
-436,-2135.5122,1036.8539,79.6184,0.2546,87,1 ;
-547,-2285.7629,1101.4392,79.8592,268.6749,123,1 ;
-480,-2238.0720,1184.7144,55.3492,91.5899,2,2 ;
+466,-2273.5481,1038.3989,83.5060,179.7762,68,76 ;
+436,-2135.5122,1036.8539,79.6184,0.2546,87,1 ;
+547,-2285.7629,1101.4392,79.8592,268.6749,123,1 ;
+480,-2238.0720,1184.7144,55.3492,91.5899,2,2 ;
561,-2233.6113,1104.8516,79.8828,180.3517,101,1 ;
521,-2034.3132,167.2029,28.4100,276.3217,75,13 ;
549,-2033.3455,177.7978,28.7383,266.0410,57,8 ;
-486,-2122.9641,176.7403,35.5823,269.0041,1,1 ;
-486,-2128.7603,292.7856,35.0132,268.8581,1,1 ;
+486,-2122.9641,176.7403,35.5823,269.0041,1,1 ;
+486,-2128.7603,292.7856,35.0132,268.8581,1,1 ;
486,-2066.6992,295.1810,35.3575,185.6239,18,20 ;
482,-2126.2490,202.0597,35.4645,271.6610,102,65 ;
493,-2941.2458,500.9425,1.9118,356.2562,1,9 ;
421,-2151.0249,835.4579,69.2326,181.8154,71,72 ;
-516,-1892.3840,823.9651,34.9240,1.1847,119,1 ;
-500,-1983.7811,896.3951,45.3164,161.2541,28,119 ;
+516,-1892.3840,823.9651,34.9240,1.1847,119,1 ;
+500,-1983.7811,896.3951,45.3164,161.2541,28,119 ;
482,-1878.1260,1073.6155,45.3833,1.0803,88,1 ;
-518,-2027.1711,1228.7698,31.3190,268.9391,9,39 ;
-424,-2051.5183,1160.1519,45.2263,15.6148,2,2 ;
-558,-2143.7021,1221.0677,46.9019,92.5564,24,1 ;
-496,-2354.3687,1323.6498,14.6058,77.0716,42,42 ;
+518,-2027.1711,1228.7698,31.3190,268.9391,9,39 ;
+424,-2051.5183,1160.1519,45.2263,15.6148,2,2 ;
+558,-2143.7021,1221.0677,46.9019,92.5564,24,1 ;
+496,-2354.3687,1323.6498,14.6058,77.0716,42,42 ;
603,-2697.6223,783.2014,49.8749,267.5988,87,74 ;
603,-2637.6653,802.7455,49.7702,1.1551,34,1 ;
-522,-2594.9675,841.6440,49.9161,84.3496,51,118 ;
-463,-2464.2109,919.5464,62.5336,160.6213,7,7 ;
-428,-1893.1501,878.8957,35.1399,0.5215,4,75 ;
+522,-2594.9675,841.6440,49.9161,84.3496,51,118 ;
+463,-2464.2109,919.5464,62.5336,160.6213,7,7 ;
+428,-1893.1501,878.8957,35.1399,0.5215,4,75 ;
500,-1920.9349,900.0209,35.5579,206.1858,14,123 ;
-409,-1736.3384,947.9546,24.5472,65.3048,1,1 ;
-540,-1502.9904,938.4938,7.0463,124.6396,62,62 ;
-550,-1788.1842,802.8976,24.7103,359.7563,42,42 ;
-561,-1784.4341,692.7875,34.9859,182.2400,57,8 ;
+409,-1736.3384,947.9546,24.5472,65.3048,1,1 ;
+540,-1502.9904,938.4938,7.0463,124.6396,62,62 ;
+550,-1788.1842,802.8976,24.7103,359.7563,42,42 ;
+561,-1784.4341,692.7875,34.9859,182.2400,57,8 ;
443,-1851.9319,116.8267,15.7521,284.3587,20,1 ;
482,-1855.5973,146.2494,15.2417,277.9544,85,85 ;
549,-2048.1506,124.8951,28.6802,182.0321,47,76 ;
-600,-2160.9421,515.2612,34.8894,119.1082,32,8 ;
+600,-2160.9421,515.2612,34.8894,119.1082,32,8 ;
582,-2089.2358,479.1807,35.1022,78.0878,62,62 ;
-461,-1962.3229,466.2146,34.8407,64.7884,53,53 ;
+461,-1962.3229,466.2146,34.8407,64.7884,53,53 ;
401,-1905.3840,710.6555,45.0761,179.5601,47,47 ;
-401,-2539.3262,939.0101,64.2301,90.3424,47,47 ;
+401,-2539.3262,939.0101,64.2301,90.3424,47,47 ;
401,-2569.1545,981.8585,78.1545,358.0872,25,1 ;
541,-2692.8362,455.8668,3.9608,87.0999,13,8 ;
-400,-2279.4724,-247.3415,42.5332,18.4825,40,1 ;
-444,-2354.2649,-371.5601,69.0405,313.2816,32,42 ;
+400,-2279.4724,-247.3415,42.5332,18.4825,40,1 ;
+444,-2354.2649,-371.5601,69.0405,313.2816,32,42 ;
461,-1704.8201,1339.3179,6.7801,93.7506,3,6 ;
-405,-1696.4670,1348.2159,7.0546,99.7830,4,1 ;
+405,-1696.4670,1348.2159,7.0546,99.7830,4,1 ;
461,-1648.1644,1307.4525,6.6986,130.5739,3,3 ;
479,-1915.3132,1256.0265,19.2396,89.3746,95,105 ;
-402,-2178.9719,1227.6172,33.7613,358.4316,22,22 ;
+402,-2178.9719,1227.6172,33.7613,358.4316,22,22 ;
482,-1987.7301,1338.3241,7.2635,176.6010,105,1 ;
405,-1977.9648,-1020.8948,32.0504,332.2476,36,1 ;
-487,-1970.8481,-829.0056,39.7330,1.5030,26,3 ;
+487,-1970.8481,-829.0056,39.7330,1.5030,26,3 ;
421,-2148.8938,-879.1363,31.9059,269.8967,24,118 ;
461,-1720.9136,1007.3600,17.1706,91.6206,37,1 ;
439,-1703.6799,1028.5684,17.2701,271.2751,68,1 ;
516,-1385.4271,-207.9932,5.6252,269.5264,60,1 ;
400,-1370.5370,-108.5120,5.7368,90.5826,30,96 ;
-410,-1427.6842,-71.5402,5.6544,92.1527,9,1 ;
+410,-1427.6842,-71.5402,5.6544,92.1527,9,1 ;
516,-1338.1565,-175.1089,5.7248,267.4071,2,62 ;
496,-2436.2021,1257.5581,30.2190,90.0063,11,11 ;
-579,-1643.6743,-1049.7825,102.4422,184.7762,62,62 ;
-468,-1539.1002,-988.9670,159.2563,171.1934,46,46 ;
+579,-1643.6743,-1049.7825,102.4422,184.7762,62,62 ;
+468,-1539.1002,-988.9670,159.2563,171.1934,46,46 ;
457,-2477.0815,-310.3790,41.1381,313.3356,10,1 ;
-560,-2486.6094,262.4621,34.8724,271.1458,17,1 ;
-549,-2585.9888,712.8341,27.5820,89.5528,84,36 ;
+560,-2486.6094,262.4621,34.8724,271.1458,17,1 ;
+549,-2585.9888,712.8341,27.5820,89.5528,84,36 ;
466,-1837.0461,339.5637,16.9045,331.3646,78,76 ;
558,-1956.2533,297.6264,35.0939,64.6876,116,1 ;
560,-1957.6255,276.9994,35.1773,132.1875,9,39 ;
561,-1950.4956,259.6261,35.2702,53.4263,8,17 ;
-562,-1952.4977,265.6259,40.7239,292.5037,35,1 ;
+562,-1952.4977,265.6259,40.7239,292.5037,35,1 ;
567,-1952.7600,258.7500,40.9200,258.7441,88,64 ;
-490,-1588.4078,673.0458,7.3151,176.8283,0,0 ;
-490,-1574.3214,718.2319,-5.1140,89.8176,0,0 ;
+490,-1588.4078,673.0458,7.3151,176.8283,0,0 ;
+490,-1574.3214,718.2319,-5.1140,89.8176,0,0 ;
472,-1076.0149,-207.4982,0.0197,201.3848,56,53 ;
diff --git a/amx/scriptfiles/vehicles/sf_law.txt b/amx/scriptfiles/vehicles/sf_law.txt
index 3151f9e..69b5840 100644
--- a/amx/scriptfiles/vehicles/sf_law.txt
+++ b/amx/scriptfiles/vehicles/sf_law.txt
@@ -1,24 +1,24 @@
-470,-1493.2729,466.8754,7.1792,359.6406,43,0 ;
-470,-1456.7275,456.4803,7.1827,1.8612,43,0 ;
-470,-1433.3401,455.8417,7.1754,359.2850,43,0 ;
-433,-1424.8402,457.6088,7.6209,359.6164,43,0 ;
-433,-1402.0039,460.9283,7.6209,0.1365,43,0 ;
-470,-1387.7540,457.1161,7.1786,356.7607,43,0 ;
+470,-1493.2729,466.8754,7.1792,359.6406,43,0 ;
+470,-1456.7275,456.4803,7.1827,1.8612,43,0 ;
+470,-1433.3401,455.8417,7.1754,359.2850,43,0 ;
+433,-1424.8402,457.6088,7.6209,359.6164,43,0 ;
+433,-1402.0039,460.9283,7.6209,0.1365,43,0 ;
+470,-1387.7540,457.1161,7.1786,356.7607,43,0 ;
548,-1269.9818,501.5400,18.8272,88.8878,43,0 ;
548,-1415.5240,517.8834,19.8976,270.0524,1,1 ;
497,-1679.7035,706.0008,30.7781,89.8724,0,1 ;
-523,-1576.0360,673.7034,6.7563,174.5967,0,0 ;
-523,-1575.9231,650.4584,6.7582,0.9076,0,0 ;
-597,-1593.6233,651.7213,6.9566,1.3899,0,1 ;
-597,-1622.5198,651.7484,6.9555,359.8126,0,1 ;
-427,-1634.3652,653.2300,7.3195,359.8379,0,1 ;
-597,-1573.9720,726.4003,-5.4722,91.1968,0,1 ;
-523,-1612.2233,674.1516,6.7545,184.0847,0,0 ;
-427,-1600.1411,678.0489,-5.1103,1.1345,0,1 ;
-597,-1596.5836,749.3448,-5.4725,178.5932,0,1 ;
-416,-2643.2285,630.0392,14.6034,87.3837,1,3 ;
-416,-2683.8833,628.2059,14.6035,272.5255,1,3 ;
-416,-2668.5364,610.7019,14.6043,179.8035,1,3 ;
+523,-1576.0360,673.7034,6.7563,174.5967,0,0 ;
+523,-1575.9231,650.4584,6.7582,0.9076,0,0 ;
+597,-1593.6233,651.7213,6.9566,1.3899,0,1 ;
+597,-1622.5198,651.7484,6.9555,359.8126,0,1 ;
+427,-1634.3652,653.2300,7.3195,359.8379,0,1 ;
+597,-1573.9720,726.4003,-5.4722,91.1968,0,1 ;
+523,-1612.2233,674.1516,6.7545,184.0847,0,0 ;
+427,-1600.1411,678.0489,-5.1103,1.1345,0,1 ;
+597,-1596.5836,749.3448,-5.4725,178.5932,0,1 ;
+416,-2643.2285,630.0392,14.6034,87.3837,1,3 ;
+416,-2683.8833,628.2059,14.6035,272.5255,1,3 ;
+416,-2668.5364,610.7019,14.6043,179.8035,1,3 ;
416,-2639.3809,609.7971,14.6020,180.4547,1,3 ;
544,-2053.1836,75.5582,28.6258,91.8533,3,1 ;
544,-2020.6779,75.7322,28.2849,270.8804,3,1 ;
@@ -26,13 +26,13 @@
472,-1165.9481,376.5309,0.1491,315.1259,56,53 ;
472,-1421.6274,285.5732,-0.2879,265.8000,46,26 ;
472,-1653.0968,254.7862,0.2592,268.0484,112,20 ;
-597,-1606.3083,673.1804,6.9553,179.1846,0,1 ;
+597,-1606.3083,673.1804,6.9553,179.1846,0,1 ;
427,-1582.2726,672.2101,7.3207,180.9814,0,1 ;
470,-1383.2446,457.2296,7.1794,359.1241,43,0 ;
-597,-1610.8358,651.5052,6.9564,359.9975,0,1 ;
-597,-1622.9977,653.4961,-5.4742,89.9343,0,1 ;
-597,-1639.4895,677.9890,-5.4743,269.9376,0,1 ;
-548,-1415.3323,492.7466,19.8676,271.5521,1,1 ;
-548,-1304.2273,507.9386,19.8769,269.1332,1,1 ;
-433,-1362.9229,458.9281,7.6241,357.4277,43,0 ;
-433,-1529.5907,457.3813,7.6238,358.3718,43,0 ;
+597,-1610.8358,651.5052,6.9564,359.9975,0,1 ;
+597,-1622.9977,653.4961,-5.4742,89.9343,0,1 ;
+597,-1639.4895,677.9890,-5.4743,269.9376,0,1 ;
+548,-1415.3323,492.7466,19.8676,271.5521,1,1 ;
+548,-1304.2273,507.9386,19.8769,269.1332,1,1 ;
+433,-1362.9229,458.9281,7.6241,357.4277,43,0 ;
+433,-1529.5907,457.3813,7.6238,358.3718,43,0 ;
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/sf_train.txt b/amx/scriptfiles/vehicles/sf_train.txt
index 71937f5..6f03cf1 100644
--- a/amx/scriptfiles/vehicles/sf_train.txt
+++ b/amx/scriptfiles/vehicles/sf_train.txt
@@ -1,2 +1,2 @@
538,-1948.4922,121.7808,25.7186,0.0,121,1
-537,-1943.3127,158.0254,27.0006,200.0,0,0
+537,-1943.3127,158.0254,27.0006,200.0,0,0
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/tierra.txt b/amx/scriptfiles/vehicles/tierra.txt
index 7106eac..e44a84c 100644
--- a/amx/scriptfiles/vehicles/tierra.txt
+++ b/amx/scriptfiles/vehicles/tierra.txt
@@ -5,92 +5,92 @@
587,-2272.0286,2300.4329,4.5463,89.7395,53,1 ;
581,-2184.2810,2418.5032,4.6261,225.5440,36,1 ;
484,-2227.5676,2446.2383,0.2238,229.2436,40,26 ;
-454,-2323.5996,2492.2419,-0.0163,230.2643,26,26 ;
-454,-2238.8279,2533.3970,0.0677,228.0608,26,26 ;
-454,-2235.0234,2394.8408,0.2049,225.3403,26,26 ;
-484,-2222.4343,2399.7363,0.3907,47.6966,50,32 ;
-484,-2211.9019,2412.5371,0.3222,45.0241,66,36 ;
-484,-2035.5737,2337.9326,0.3638,93.8940,66,36 ;
-460,-2044.7676,2348.1140,1.5708,85.2721,46,23 ;
-492,-2351.7927,2438.0439,7.5216,326.6075,81,27 ;
-484,-2319.6973,2297.0566,0.1447,177.2915,66,36 ;
-524,-2380.8870,2370.3657,4.4518,109.2159,83,66 ;
-525,-2451.8999,2302.0273,4.8566,90.9255,1,1 ;
-541,-2621.1914,2250.5889,8.0296,183.8325,123,1 ;
-541,-2616.7476,2250.0974,7.8063,184.5472,22,1 ;
-554,-2609.3669,2251.1685,8.2939,182.2681,12,32 ;
-446,-2597.6831,2231.7883,-0.5205,262.0586,1,22 ;
-581,-2632.2297,2299.0674,8.0274,266.4473,54,1 ;
-587,-2500.2227,2326.0215,4.6304,267.2316,95,1 ;
-409,-2492.2183,2410.7954,16.2328,29.6430,1,1 ;
-581,-2635.7234,2423.7803,13.5265,165.2141,36,1 ;
+454,-2323.5996,2492.2419,-0.0163,230.2643,26,26 ;
+454,-2238.8279,2533.3970,0.0677,228.0608,26,26 ;
+454,-2235.0234,2394.8408,0.2049,225.3403,26,26 ;
+484,-2222.4343,2399.7363,0.3907,47.6966,50,32 ;
+484,-2211.9019,2412.5371,0.3222,45.0241,66,36 ;
+484,-2035.5737,2337.9326,0.3638,93.8940,66,36 ;
+460,-2044.7676,2348.1140,1.5708,85.2721,46,23 ;
+492,-2351.7927,2438.0439,7.5216,326.6075,81,27 ;
+484,-2319.6973,2297.0566,0.1447,177.2915,66,36 ;
+524,-2380.8870,2370.3657,4.4518,109.2159,83,66 ;
+525,-2451.8999,2302.0273,4.8566,90.9255,1,1 ;
+541,-2621.1914,2250.5889,8.0296,183.8325,123,1 ;
+541,-2616.7476,2250.0974,7.8063,184.5472,22,1 ;
+554,-2609.3669,2251.1685,8.2939,182.2681,12,32 ;
+446,-2597.6831,2231.7883,-0.5205,262.0586,1,22 ;
+581,-2632.2297,2299.0674,8.0274,266.4473,54,1 ;
+587,-2500.2227,2326.0215,4.6304,267.2316,95,1 ;
+409,-2492.2183,2410.7954,16.2328,29.6430,1,1 ;
+581,-2635.7234,2423.7803,13.5265,165.2141,36,1 ;
419,-2472.6233,2490.2595,17.5856,1.8418,69,76 ;
-419,-2455.7502,2489.7153,16.0495,2.9791,87,76 ;
-400,-2471.6484,2511.5083,17.8420,178.3649,84,110 ;
+419,-2455.7502,2489.7153,16.0495,2.9791,87,76 ;
+400,-2471.6484,2511.5083,17.8420,178.3649,84,110 ;
421,-2377.9495,2410.4937,8.1698,324.3596,52,66 ;
-493,-2417.5188,2297.3801,-0.1381,265.4497,36,13 ;
-493,-2417.7244,2291.5913,-0.2166,266.5734,36,13 ;
-493,-2418.0994,2286.5984,0.1419,268.6934,36,13 ;
-587,-2426.7017,2346.5630,5.0736,282.6106,40,84 ;
-587,-2446.9214,2224.6204,4.6071,179.3380,118,1 ;
-496,-2440.6040,2224.3320,4.5603,179.5986,0,0 ;
-480,-2470.7988,2224.3967,4.6180,180.6733,53,53 ;
-477,-2482.4893,2224.7783,4.5955,179.0414,75,1 ;
-530,-2509.7058,2369.0825,4.7508,179.0875,110,1 ;
-473,-1374.8508,2116.4690,40.4058,319.3678,56,53 ;
-473,-1366.9723,2106.8796,40.2918,315.0820,56,53 ;
-573,-1804.4702,2045.1581,9.6246,294.1870,91,38 ;
-468,-1824.8999,2035.1219,8.3037,212.8331,46,46 ;
-453,-1854.5022,2098.8430,-0.2039,102.5433,56,56 ;
-453,-1860.6494,2115.2981,-0.3292,107.9941,56,56 ;
-453,-1869.9406,2128.6624,-0.2785,113.4106,56,56 ;
-444,-1871.3125,2166.4583,4.9119,130.7896,32,42 ;
-444,-1877.4138,2173.9583,4.4635,128.7793,32,66 ;
-445,-1940.1118,2393.2588,49.3672,291.4925,39,39 ;
+493,-2417.5188,2297.3801,-0.1381,265.4497,36,13 ;
+493,-2417.7244,2291.5913,-0.2166,266.5734,36,13 ;
+493,-2418.0994,2286.5984,0.1419,268.6934,36,13 ;
+587,-2426.7017,2346.5630,5.0736,282.6106,40,84 ;
+587,-2446.9214,2224.6204,4.6071,179.3380,118,1 ;
+496,-2440.6040,2224.3320,4.5603,179.5986,0,0 ;
+480,-2470.7988,2224.3967,4.6180,180.6733,53,53 ;
+477,-2482.4893,2224.7783,4.5955,179.0414,75,1 ;
+530,-2509.7058,2369.0825,4.7508,179.0875,110,1 ;
+473,-1374.8508,2116.4690,40.4058,319.3678,56,53 ;
+473,-1366.9723,2106.8796,40.2918,315.0820,56,53 ;
+573,-1804.4702,2045.1581,9.6246,294.1870,91,38 ;
+468,-1824.8999,2035.1219,8.3037,212.8331,46,46 ;
+453,-1854.5022,2098.8430,-0.2039,102.5433,56,56 ;
+453,-1860.6494,2115.2981,-0.3292,107.9941,56,56 ;
+453,-1869.9406,2128.6624,-0.2785,113.4106,56,56 ;
+444,-1871.3125,2166.4583,4.9119,130.7896,32,42 ;
+444,-1877.4138,2173.9583,4.4635,128.7793,32,66 ;
+445,-1940.1118,2393.2588,49.3672,291.4925,39,39 ;
482,-1934.0543,2377.3718,49.6189,290.8993,34,34 ;
482,-865.7496,1541.4736,22.7941,89.7060,109,1 ;
-602,-865.9515,1547.8240,23.0657,268.7399,75,77 ;
-602,-866.0584,1563.5151,24.3648,269.9845,32,1 ;
-420,-866.0000,1557.1432,23.8370,269.2511,6,1 ;
-400,-904.0693,1546.9365,26.0011,270.6434,36,1 ;
-400,-880.8666,1518.9015,26.0064,84.4363,113,1 ;
-552,-837.0482,1528.4155,21.4272,356.9085,56,56 ;
-428,-836.9631,1518.5033,20.9587,356.9585,4,75 ;
-522,-855.4826,1529.1183,22.1490,175.2427,7,79 ;
-522,-854.3849,1528.8517,21.8310,177.4948,36,105 ;
-508,-763.8517,1643.9420,27.8381,359.3427,1,1 ;
-508,-759.1082,1643.9677,27.7561,357.9965,1,1 ;
-508,-753.8820,1643.4702,27.6587,357.3247,1,1 ;
-508,-779.0374,1557.9280,27.1835,359.2580,20,117 ;
-495,-771.3682,1431.5581,14.1421,91.6766,116,115 ;
-495,-771.4456,1436.7625,14.1395,89.8264,5,6 ;
-554,-772.0689,1443.1458,13.8807,91.3204,12,32 ;
-554,-771.5674,1486.2036,24.4291,89.6569,45,32 ;
-508,-720.9415,1438.1919,18.8516,358.8137,1,1 ;
-483,-685.9806,1444.2805,17.2557,358.8250,1,5 ;
-452,-859.7170,1383.5663,-0.4432,255.0147,1,35 ;
-525,-967.3431,1322.6412,39.9578,290.9068,52,54 ;
-525,-1202.8787,1677.6721,20.1641,63.4200,52,54 ;
-525,-1492.0199,1877.8156,32.5073,3.4296,52,54 ;
-554,-1485.6687,1877.9529,32.7206,2.7033,53,32 ;
-522,-1460.4990,1871.0664,32.2060,3.0444,36,105 ;
-522,-1459.1002,1871.1023,32.1946,6.0306,51,118 ;
-522,-1457.7523,1871.1093,32.1942,8.4307,3,8 ;
-420,-1450.4545,1870.4369,32.4111,2.9921,6,1 ;
-525,-1766.5353,1882.8726,17.5407,198.3129,1,1 ;
-525,-837.5615,813.0668,18.5289,199.0021,1,1 ;
-421,-680.4999,948.1251,12.0152,36.5625,36,1 ;
-444,-669.6081,945.8578,12.5041,89.2779,32,36 ;
-444,-669.8880,950.3906,12.5041,92.0677,32,53 ;
-444,-669.9730,955.0541,12.5041,91.0209,32,14 ;
+602,-865.9515,1547.8240,23.0657,268.7399,75,77 ;
+602,-866.0584,1563.5151,24.3648,269.9845,32,1 ;
+420,-866.0000,1557.1432,23.8370,269.2511,6,1 ;
+400,-904.0693,1546.9365,26.0011,270.6434,36,1 ;
+400,-880.8666,1518.9015,26.0064,84.4363,113,1 ;
+552,-837.0482,1528.4155,21.4272,356.9085,56,56 ;
+428,-836.9631,1518.5033,20.9587,356.9585,4,75 ;
+522,-855.4826,1529.1183,22.1490,175.2427,7,79 ;
+522,-854.3849,1528.8517,21.8310,177.4948,36,105 ;
+508,-763.8517,1643.9420,27.8381,359.3427,1,1 ;
+508,-759.1082,1643.9677,27.7561,357.9965,1,1 ;
+508,-753.8820,1643.4702,27.6587,357.3247,1,1 ;
+508,-779.0374,1557.9280,27.1835,359.2580,20,117 ;
+495,-771.3682,1431.5581,14.1421,91.6766,116,115 ;
+495,-771.4456,1436.7625,14.1395,89.8264,5,6 ;
+554,-772.0689,1443.1458,13.8807,91.3204,12,32 ;
+554,-771.5674,1486.2036,24.4291,89.6569,45,32 ;
+508,-720.9415,1438.1919,18.8516,358.8137,1,1 ;
+483,-685.9806,1444.2805,17.2557,358.8250,1,5 ;
+452,-859.7170,1383.5663,-0.4432,255.0147,1,35 ;
+525,-967.3431,1322.6412,39.9578,290.9068,52,54 ;
+525,-1202.8787,1677.6721,20.1641,63.4200,52,54 ;
+525,-1492.0199,1877.8156,32.5073,3.4296,52,54 ;
+554,-1485.6687,1877.9529,32.7206,2.7033,53,32 ;
+522,-1460.4990,1871.0664,32.2060,3.0444,36,105 ;
+522,-1459.1002,1871.1023,32.1946,6.0306,51,118 ;
+522,-1457.7523,1871.1093,32.1942,8.4307,3,8 ;
+420,-1450.4545,1870.4369,32.4111,2.9921,6,1 ;
+525,-1766.5353,1882.8726,17.5407,198.3129,1,1 ;
+525,-837.5615,813.0668,18.5289,199.0021,1,1 ;
+421,-680.4999,948.1251,12.0152,36.5625,36,1 ;
+444,-669.6081,945.8578,12.5041,89.2779,32,36 ;
+444,-669.8880,950.3906,12.5041,92.0677,32,53 ;
+444,-669.9730,955.0541,12.5041,91.0209,32,14 ;
545,-710.5756,939.2571,12.2113,182.5872,53,53 ;
-572,-666.9449,962.4420,11.7128,180.1996,116,1 ;
-473,-792.8611,937.9167,0.1685,121.3300,56,15 ;
-472,-615.6752,1807.6965,0.1010,81.7140,56,53 ;
+572,-666.9449,962.4420,11.7128,180.1996,116,1 ;
+473,-792.8611,937.9167,0.1685,121.3300,56,15 ;
+472,-615.6752,1807.6965,0.1010,81.7140,56,53 ;
473,-527.8143,1634.6472,-0.2518,232.0554,56,15 ;
-468,-1044.5811,1559.1265,32.8485,222.2500,3,3 ;
-462,-1214.5260,1841.3584,41.3185,264.4565,13,13 ;
+468,-1044.5811,1559.1265,32.8485,222.2500,3,3 ;
+462,-1214.5260,1841.3584,41.3185,264.4565,13,13 ;
482,-1203.9337,1813.2631,41.8329,44.3244,62,62 ;
568,-1295.9022,2496.5747,86.8474,198.8607,9,39 ;
-568,-1506.3029,1966.6509,48.2421,293.1870,9,39 ;
-510,-767.7841,1103.9338,44.4799,321.7752,39,39 ;
+568,-1506.3029,1966.6509,48.2421,293.1870,9,39 ;
+510,-767.7841,1103.9338,44.4799,321.7752,39,39 ;
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/trains.txt b/amx/scriptfiles/vehicles/trains.txt
index 3fdba23..10a289e 100644
--- a/amx/scriptfiles/vehicles/trains.txt
+++ b/amx/scriptfiles/vehicles/trains.txt
@@ -1,3 +1,3 @@
538,1462.0745,2630.8787,10.8203,200.0,-1,-1 ; LV passenger
538,-1942.7950,168.4164,27.0006,200.0,-1,-1 ; SF passenger
-538,1700.7551,-1953.6531,14.8756,200.0,-1,-1 ; LS passenger
+538,1700.7551,-1953.6531,14.8756,200.0,-1,-1 ; LS passenger
\ No newline at end of file
diff --git a/amx/scriptfiles/vehicles/trains_platform.txt b/amx/scriptfiles/vehicles/trains_platform.txt
index fd270ad..8961a30 100644
--- a/amx/scriptfiles/vehicles/trains_platform.txt
+++ b/amx/scriptfiles/vehicles/trains_platform.txt
@@ -1,3 +1,3 @@
537,1462.0745,2630.8787,10.8203,200.0,-1,-1 ; LV passenger
537,-1942.7950,168.4164,27.0006,200.0,-1,-1 ; SF passenger
-537,1700.7551,-1953.6531,14.8756,200.0,-1,-1 ; LS passenger
+537,1700.7551,-1953.6531,14.8756,200.0,-1,-1 ; LS passenger
\ No newline at end of file
diff --git a/amx/server/events.lua b/amx/server/events.lua
index e2ecdd6..69a2999 100644
--- a/amx/server/events.lua
+++ b/amx/server/events.lua
@@ -14,6 +14,7 @@ function gameModeInit(player)
takeAllWeapons(player)
setElementInterior(player, 0)
setElementDimension(player, 0)
+ for i=69,79 do setPedStat(player, i, 999) end
local r, g, b = math.random(50, 255), math.random(50, 255), math.random(50, 255)
ShowPlayerMarker(false, player, g_ShowPlayerMarkers)
setPlayerHudComponentVisible(player, 'area_name', g_ShowZoneNames)
@@ -28,43 +29,24 @@ function gameModeInit(player)
g_Players[playerID].streamedVehicles = {}
g_Players[playerID].streamedPlayers = {}
g_Players[playerID].attachedObjects = {}
- if g_PlayerClasses[0] then
- g_Players[playerID].viewingintro = true
- fadeCamera(player, true)
- setTimer(
- function()
- if not isElement(player) or getElementType(player) ~= 'player' then
- return
- end
- g_Players[playerID].doingclasssel = true
- killPed(player)
- if procCallOnAll('OnPlayerRequestClass', playerID, 0) then
- putPlayerInClassSelection(player)
- else
- outputDebugString('Not allowed to select a class', 1)
- end
- end,
- 5000,
- 1
- )
- else
- setTimer(
- function()
- if not isElement(player) or getElementType(player) ~= 'player' then
- return
- end
- repeat until onPlayerInitSpawnPlayer(player, math.random(-20, 20), math.random(-20, 20), 3, math.random(0, 359), math.random(9, 288))
- end,
- 5000,
- 1
- )
- end
-end
-
-function onPlayerInitSpawnPlayer(player, x, y, z, rotation, skinid)
- local playerID = getElemID(player)
- g_Players[playerID].spawnedfromgamemodeinit = true
- return spawnPlayer(player, x, y, z, rotation, skinid)
+ g_Players[playerID].viewingintro = true
+ fadeCamera(player, true)
+ setTimer(
+ function()
+ if not isElement(player) or getElementType(player) ~= 'player' then
+ return
+ end
+ g_Players[playerID].doingclasssel = true
+ killPed(player)
+ if procCallOnAll('OnPlayerRequestClass', playerID, 0) then
+ putPlayerInClassSelection(player)
+ else
+ outputDebugString('Not allowed to select a class', 1)
+ end
+ end,
+ 5000,
+ 1
+ )
end
function joinHandler(player)
@@ -94,7 +76,6 @@ function joinHandler(player)
for k,v in ipairs(g_Keys) do
bindKey(player, v, 'both', mtaKeyStateChange)
end
- g_Players[playerID].updatetimer = setTimer(procCallOnAll, 100, 0, 'OnPlayerUpdate', playerID)
if playerJoined then
if getRunningGameMode() then
@@ -119,13 +100,7 @@ function joinHandler(player)
clientCall(player, 'Create3DTextLabel', i, label)
end
- table.each(
- g_LoadedAMXs,
- function(amx)
- procCallInternal(amx, 'OnPlayerConnect', playerID)
-
- end
- )
+ procCallOnAll('OnPlayerConnect', playerID)
end
setPlayerNametagShowing(player, false)
end
@@ -191,6 +166,10 @@ function putPlayerInClassSelection(player)
if g_Players[playerID].blip then
setElementVisibleTo(g_Players[playerID].blip, root, false)
end
+ if g_Players[playerID].updatetimer then
+ killTimer( g_Players[playerID].updatetimer )
+ g_Players[playerID].updatetimer = nil
+ end
clientCall(player, 'startClassSelection', g_PlayerClasses)
bindKey(player, 'arrow_l', 'down', requestClass, -1)
bindKey(player, 'arrow_r', 'down', requestClass, 1)
@@ -200,6 +179,9 @@ function putPlayerInClassSelection(player)
end
function requestClass(player, btn, state, dir)
+ if not isElement(player) then
+ return
+ end
local playerID = getElemID(player)
local data = g_Players[playerID]
data.selectedclass = data.selectedclass + dir
@@ -208,11 +190,15 @@ function requestClass(player, btn, state, dir)
elseif data.selectedclass < 0 then
data.selectedclass = #g_PlayerClasses
end
+ local skin = 0
local x, y, z = getElementPosition(player)
+ if g_PlayerClasses[0] then
+ skin = g_PlayerClasses[data.selectedclass][5]
+ end
if isPedDead(player) then
- spawnPlayer(player, x, y, z, getPedRotation(player), g_PlayerClasses[data.selectedclass][5], getElementInterior(player), playerID)
+ spawnPlayer(player, x, y, z, getPedRotation(player), skin, getElementInterior(player), playerID)
else
- setElementModel(player, g_PlayerClasses[data.selectedclass][5])
+ setElementModel(player, skin)
end
clientCall(player, 'selectClass', data.selectedclass)
procCallOnAll('OnPlayerRequestClass', playerID, data.selectedclass)
@@ -230,18 +216,29 @@ function requestSpawn(player, btn, state)
end
function spawnPlayerBySelectedClass(player, x, y, z, r)
+ if not isElement(player) then
+ return
+ end
local playerID = getElemID(player)
local playerdata = g_Players[playerID]
playerdata.viewingintro = nil
playerdata.doingclasssel = nil
local spawninfo = playerdata.spawninfo or (g_PlayerClasses and g_PlayerClasses[playerdata.selectedclass])
if not spawninfo then
- return
+ if not g_PlayerClasses[0] then
+ spawninfo = {
+ 0, 0, 3, 0, 0, 0, 0, false,
+ weapons={ {-1, 0}, {-1, 0}, {-1, 0} }
+ }
+ else
+ spawninfo = g_PlayerClasses[0]
+ end
end
if x then
spawninfo = table.shallowcopy(spawninfo)
spawninfo[1], spawninfo[2], spawninfo[3], spawninfo[4] = x, y, z, r or spawninfo[4]
end
+ setPlayerState(player, PLAYER_STATE_SPAWNED)
spawnPlayer(player, unpack(spawninfo))
for i,weapon in ipairs(spawninfo.weapons) do
if weapon[1] ~= -1 then
@@ -258,15 +255,18 @@ addEventHandler('onPlayerSpawn', root,
function()
local playerID = getElemID(source)
local playerdata = g_Players[playerID]
- if playerdata.doingclasssel or playerdata.spawnedfromgamemodeinit then
- if playerdata.spawnedfromgamemodeinit ~= nil then
- playerdata.spawnedfromgamemodeinit = nil
- end
+ if playerdata.doingclasssel then
return
end
toggleAllControls(source, true)
procCallOnAll('OnPlayerSpawn', playerID)
setPlayerState(source, PLAYER_STATE_ONFOOT)
+
+ if g_Players[playerID].updatetimer then
+ killTimer( g_Players[playerID].updatetimer )
+ end
+ g_Players[playerID].updatetimer = setTimer(procCallOnAll, 100, 0, 'OnPlayerUpdate', playerID)
+
playerdata.vehicle = nil
playerdata.specialaction = SPECIAL_ACTION_NONE
end
@@ -322,12 +322,16 @@ addEventHandler('onPlayerWasted', root,
if g_Players[playerID].doingclasssel then
return
end
- local killerID = killer and killer ~= source and getElemID(killer) or 255
+ local killerID = INVALID_PLAYER_ID
+ if isElement(killer) and getElementType(killer) == 'player' and killer ~= source then
+ killerID = getElemID(killer)
+ end
setPlayerState(source, PLAYER_STATE_WASTED)
procCallOnAll('OnPlayerDeath', playerID, killerID, weapon)
if g_Players[playerID].returntoclasssel then
g_Players[playerID].returntoclasssel = nil
--setTimer(putPlayerInClassSelection, 3000, 1, source)
+ local player = source
setTimer(
function()
g_Players[playerID].spawninfo = nil
@@ -335,12 +339,20 @@ addEventHandler('onPlayerWasted', root,
if procCallOnAll('OnPlayerRequestClass', playerID, 0) then
putPlayerInClassSelection(player)
+ else
+ outputDebugString('Not allowed to select a class', 1)
end
- end, 3000, 1, source
+ end, 3000, 1
)
else
setTimer(spawnPlayerBySelectedClass, 3000, 1, source, false)
end
+
+ if g_Players[playerID].updatetimer then
+ killTimer( g_Players[playerID].updatetimer )
+ g_Players[playerID].updatetimer = nil
+ end
+
g_Players[playerID].vehicle = nil
g_Players[playerID].specialaction = SPECIAL_ACTION_NONE
end
@@ -400,20 +412,32 @@ end
function respawnStaticVehicle(vehicle)
if not isElement(vehicle) then
- return
+ return false
end
local vehID = getElemID(vehicle)
if not g_Vehicles[vehID] then
- return
+ return false
end
if isTimer(g_Vehicles[vehID].respawntimer) then
killTimer(g_Vehicles[vehID].respawntimer)
end
+ local numPassengers = tonumber(getVehicleMaxPassengers(vehicle)) or 0;
+ for seat=0,numPassengers do
+ local player = getVehicleOccupant(vehicle, seat)
+ if player then
+ removePedFromVehicle(player)
+ end
+ end
g_Vehicles[vehID].respawntimer = nil
g_Vehicles[vehID].vehicleIsAlive = true
local spawninfo = g_Vehicles[vehID].spawninfo
- spawnVehicle(vehicle, spawninfo.x, spawninfo.y, spawninfo.z, 0, 0, spawninfo.angle)
- procCallInternal(amx, 'OnVehicleSpawn', vehID)
+ setTimer(
+ function()
+ spawnVehicle(vehicle, spawninfo.x, spawninfo.y, spawninfo.z, 0, 0, spawninfo.angle)
+ procCallOnAll('OnVehicleSpawn', vehID)
+ end, 500, 1
+ )
+ return true
end
addEventHandler('onVehicleEnter', root,
@@ -471,7 +495,8 @@ addEventHandler('onVehicleExit', root,
g_Players[playerID].vehicle = nil
setPlayerState(player, PLAYER_STATE_ONFOOT)
- for i=0,getVehicleMaxPassengers(source) do
+ local numPassengers = tonumber(getVehicleMaxPassengers(source)) or 0;
+ for i=0,numPassengers do
if getVehicleOccupant(source, i) then
return
end
@@ -521,7 +546,7 @@ addEventHandler('onVehicleExplode', root,
end
g_Vehicles[vehID].vehicleIsAlive = false
- g_Vehicles[vehID].respawntimer = setTimer(respawnStaticVehicle, g_Vehicles[vehID].respawndelay, 1, source)
+ g_Vehicles[vehID].respawntimer = setTimer(respawnStaticVehicle, 10000, 1, source)
end
end
)
@@ -548,11 +573,21 @@ function removePedFromVehicle(player)
if not playerdata.vehicle then
return false
end
- procCallOnAll('OnPlayerExitVehicle', getElemID(player), getElemID(playerdata.vehicle))
+ --procCallOnAll('OnPlayerExitVehicle', getElemID(player), getElemID(playerdata.vehicle))
playerdata.vehicle = nil
setTimer(_removePedFromVehicle, 500, 1, player)
return true
end
+
+function removePedFromVehicleEx(player)
+ local playerdata = g_Players[getElemID(player)]
+ if not playerdata.vehicle then
+ return false
+ end
+ playerdata.vehicle = nil
+ setControlState(player, "enter_exit", true)
+ return true
+end
-------------------------------
-- Markers
addEventHandler('onMarkerHit', root,
@@ -587,13 +622,14 @@ addEventHandler('onPedWasted', root,
addEvent('OnPlayerPickUpPickup_Ev', true)
addEventHandler('OnPlayerPickUpPickup_Ev', root,
function(pickup)
+ local player = root
local model = getElementModel(pickup)
procCallOnAll('OnPlayerPickUpPickup', getElemID(player), getElemID(pickup))
if model == 370 then
-- Jetpack pickup
- givePedJetPack(player)
+ setPedWearingJetpack(player, true)
end
end
)
diff --git a/amx/server/natives/a_actors.lua b/amx/server/natives/a_actors.lua
index 68b781f..92ff007 100644
--- a/amx/server/natives/a_actors.lua
+++ b/amx/server/natives/a_actors.lua
@@ -13,6 +13,7 @@ function DestroyActor(amx, actor)
removeElem(g_Actors, actor)
destroyElement(actor)
+ return true
end
function IsActorStreamedIn(amx, actorId, player)
@@ -22,27 +23,36 @@ end
function ApplyActorAnimation(amx, actor, animlib, animname, fDelta, loop, lockx, locky, freeze, time)
setPedAnimation(actor, animlib, animname, time, loop, lockx or locky, false, freeze)
setPedAnimationSpeed(actor, animname, fDelta)
+ return true
end
function ClearActorAnimations(amx, actor)
- setPedAnimation(actor, false)
+ return setPedAnimation(actor, false)
end
function SetActorFacingAngle(amx, actor, ang)
local rotX, rotY, rotZ = getElementRotation(actor) -- get the local players's rotation
- setElementRotation(actor, rotX, rotY, ang, "default", true) -- turn the player 10 degrees clockwise
+ return setElementRotation(actor, rotX, rotY, ang, "default", true) -- turn the player 10 degrees clockwise
end
function GetActorFacingAngle(amx, actor, refAng)
+ if not actor then
+ return false
+ end
local rX, rY, rZ = getElementRotation(actor)
writeMemFloat(amx, refAng, rZ)
+ return true
end
function GetActorPos(amx, actor, refX, refY, refZ)
+ if not actor then
+ return false
+ end
local x, y, z = getElementPosition(actor)
writeMemFloat(amx, refX, x)
writeMemFloat(amx, refY, y)
writeMemFloat(amx, refZ, z)
+ return true
end
-- stub
@@ -75,8 +85,8 @@ function GetActorPoolSize(amx)
end
SetActorHealth = SetPlayerHealth
-SetActorPos = SetPlayerPos
SetActorVirtualWorld = SetPlayerVirtualWorld
+SetActorPos = SetObjectPos
-- stub
function GetPlayerCameraTargetActor(amx)
diff --git a/amx/server/natives/a_mta.lua b/amx/server/natives/a_mta.lua
index 7acd6c3..ec1895d 100644
--- a/amx/server/natives/a_mta.lua
+++ b/amx/server/natives/a_mta.lua
@@ -1,6 +1,6 @@
function AddPlayerClothes(amx, player, type, index)
local texture, model = getClothesByTypeIndex(type, index)
- addPedClothes(player, texture, model, type)
+ return addPedClothes(player, texture, model, type)
end
function GetPlayerClothes(amx, player, type)
@@ -13,7 +13,7 @@ function GetPlayerClothes(amx, player, type)
end
function RemovePlayerClothes(amx, player, type)
- removePedClothes(player, type)
+ return removePedClothes(player, type)
end
-----------------------------------------------------
@@ -40,7 +40,7 @@ function IsPlayerInWater(amx, player)
end
function IsPlayerOnFire(amx, player)
- return isPedOnFire(player)
+ return isElementOnFire(player)
end
function IsPlayerDucked(amx, player)
@@ -52,7 +52,7 @@ function IsPlayerOnGround(amx, player)
end
function SetPlayerOnFire(amx, player, state)
- return setPedOnFire(player, state)
+ return setElementOnFire(player, state)
end
function GetPlayerStat(amx, player, stat)
@@ -69,8 +69,7 @@ end
function SetPlayerDoingDriveBy(amx, ped, state)
clientCall(root, 'setPedDoingGangDriveby', ped, state)
- setElementData(ped, 'DoingDriveBy', state)
- return true
+ return setElementData(ped, 'DoingDriveBy', state)
end
function GetPlayerCanBeKnockedOffBike(amx, ped)
@@ -79,7 +78,7 @@ end
function SetPlayerCanBeKnockedOffBike(amx, ped, state)
clientCall(root, 'setPedCanBeKnockedOffBike', ped, state)
- setElementData(ped, 'CanBeKnockedOffBike', state)
+ return setElementData(ped, 'CanBeKnockedOffBike', state)
end
function SetPlayerWeaponSlot(amx, ped, slot)
@@ -141,6 +140,7 @@ end
function DestroyBot(amx, bot)
removeElem(g_Bots, bot)
destroyElement(bot)
+ return true
end
function GetBotState(amx, bot)
@@ -148,7 +148,7 @@ function GetBotState(amx, bot)
end
function PutBotInVehicle(amx, bot, vehicle, seat)
- return oldwarpPedIntoVehicle(bot, vehicle, seat)
+ return warpPedIntoVehicle(bot, vehicle, seat)
end
function RemoveBotFromVehicle(amx, bot)
@@ -177,20 +177,25 @@ function KillBot(amx, bot)
end
function GetBotRot(amx, ped, refX, refY, refZ)
+ if not ped then
+ return false
+ end
local rX, rX, rZ = getPedRotation(ped)
writeMemFloat(amx, refX, rX)
writeMemFloat(amx, refY, rY)
writeMemFloat(amx, refZ, rZ)
+ return true
end
function SetBotRot(amx, Ped, rX, rY, rY)
- setPedRotation(ped, rX, rY, rZ)
+ return setPedRotation(ped, rX, rY, rZ)
end
function GetBotName(amx, bot, nameBuf, bufSize)
local name = getElementData(bot, 'BotName')
if #name <= bufSize then
writeMemString(amx, nameBuf, name)
+ return string.len(name)
end
end
@@ -580,7 +585,7 @@ end
-----------------------------------------------------
function ShowCursor(amx, player, show, controls)
- showCursor(player, show, controls)
+ return showCursor(player, show, controls)
end
function AddEventHandler(amx, event, func)
diff --git a/amx/server/natives/a_objects.lua b/amx/server/natives/a_objects.lua
index c255baf..bbcfea4 100644
--- a/amx/server/natives/a_objects.lua
+++ b/amx/server/natives/a_objects.lua
@@ -19,39 +19,40 @@ function AttachObjectToObject(amx)
end
function AttachObjectToPlayer(amx, object, player, offsetX, offsetY, offsetZ, rX, rY, rZ)
- attachElements(object, player, offsetX, offsetY, offsetZ, rX, rY, rZ)
+ return attachElements(object, player, offsetX, offsetY, offsetZ, rX, rY, rZ)
end
function SetObjectPos(amx, object, x, y, z)
- if(getElementType(object) == 'vehicle') then
- setElementFrozen(object, true)
- end
-
- setElementPosition(object, x, y, z)
-
- if getElementType(object) == 'vehicle' then
- setElementAngularVelocity(object, 0, 0, 0)
- setElementVelocity(object, 0, 0, 0)
- setTimer(setElementFrozen, 500, 1, object, false)
- end
+ return setElementPosition(object, x, y, z)
end
function GetObjectPos(amx, object, refX, refY, refZ)
+ if not object then
+ return false
+ end
local x, y, z = getElementPosition(object)
writeMemFloat(amx, refX, x)
writeMemFloat(amx, refY, y)
writeMemFloat(amx, refZ, z)
+ return true
end
function GetObjectRot(amx, object, refX, refY, refZ)
+ if not object then
+ return false
+ end
local rX, rX, rZ = getObjectRotation(object)
writeMemFloat(amx, refX, rX)
writeMemFloat(amx, refY, rY)
writeMemFloat(amx, refZ, rZ)
+ return true
end
-function SetObjectRot(amx, object, rX, rY, rY)
- setObjectRotation(object, rX, rY, rZ)
+function SetObjectRot(amx, object, rX, rY, rZ)
+ if object then
+ setObjectRotation(object, rX, rY, rZ)
+ end
+ return true
end
function GetObjectModel(amx, objID)
@@ -70,19 +71,26 @@ function IsValidObject(amx, objID)
end
function DestroyObject(amx, object)
- removeElem(g_Objects, object)
- destroyElement(object)
+ if object then
+ removeElem(g_Objects, object)
+ destroyElement(object)
+ end
+ return true
end
function MoveObject(amx, object, x, y, z, speed)
+ if not object then
+ return 0
+ end
local distance = getDistanceBetweenPoints3D(x, y, z, getElementPosition(object))
local time = distance/speed*1000
moveObject(object, time, x, y, z, 0, 0, 0)
setTimer(procCallOnAll, time, 1, 'OnObjectMoved', getElemID(object))
+ return math.floor(time)
end
function StopObject(amx, object)
- stopObject(object)
+ return stopObject(object)
end
function IsObjectMoving(amx)
@@ -101,7 +109,7 @@ end
function SetPlayerObjectPos(amx, player, objID, x, y, z)
local obj = g_PlayerObjects[player] and g_PlayerObjects[player][objID]
if not obj then
- return
+ return false
end
if obj.moving then
if isTimer(obj.moving.timer) then
@@ -111,15 +119,17 @@ function SetPlayerObjectPos(amx, player, objID, x, y, z)
end
obj.x, obj.y, obj.z = x, y, z
clientCall(player, 'SetPlayerObjectPos', objID, x, y, z)
+ return true
end
function SetPlayerObjectRot(amx, player, objID, rX, rY, rZ)
local obj = g_PlayerObjects[player] and g_PlayerObjects[player][objID]
if not obj then
- return
+ return false
end
obj.rx, obj.ry, obj.rz = rX, rY, rZ
clientCall(player, 'SetPlayerObjectRot', objID, rX, rY, rZ)
+ return true
end
local function getPlayerObjectPos(amx, player, objID)
@@ -149,21 +159,23 @@ end
function GetPlayerObjectPos(amx, player, objID, refX, refY, refZ)
local x, y, z = getPlayerObjectPos(amx, player, objID)
if not x then
- return
+ return false
end
writeMemFloat(amx, refX, x)
writeMemFloat(amx, refY, y)
writeMemFloat(amx, refZ, z)
+ return true
end
function GetPlayerObjectRot(amx, player, objID, refX, refY, refZ)
local obj = g_PlayerObjects[player] and g_PlayerObjects[player][objID]
if not obj then
- return
+ return false
end
writeMemFloat(amx, refX, obj.rx)
writeMemFloat(amx, refY, obj.ry)
writeMemFloat(amx, refZ, obj.rz)
+ return true
end
function GetPlayerObjectModel(amx, player, object)
@@ -176,14 +188,17 @@ function IsValidPlayerObject(amx, player, objID)
end
function DestroyPlayerObject(amx, player, objID)
- g_PlayerObjects[player][objID] = nil
- clientCall(player, 'DestroyPlayerObject', objID)
+ if g_PlayerObjects[player] and g_PlayerObjects[player][objID] then
+ g_PlayerObjects[player][objID] = nil
+ clientCall(player, 'DestroyPlayerObject', objID)
+ end
+ return true
end
function MovePlayerObject(amx, player, objID, x, y, z, speed)
local obj = g_PlayerObjects[player] and g_PlayerObjects[player][objID]
if not obj then
- return
+ return 0
end
local distance = getDistanceBetweenPoints3D(x, y, z, getPlayerObjectPos(amx, player, objID))
local duration = distance/speed*1000
@@ -193,12 +208,13 @@ function MovePlayerObject(amx, player, objID, x, y, z, speed)
local timer = setTimer(procCallOnAll, duration, 1, 'OnPlayerObjectMoved', getElemID(player), objID)
obj.moving = { x = x, y = y, z = z, starttick = getTickCount(), duration = duration, timer = timer }
clientCall(player, 'MovePlayerObject', objID, x, y, z, speed)
+ return math.floor(duration)
end
function StopPlayerObject(amx, player, objID)
local obj = g_PlayerObjects[player] and g_PlayerObjects[player][objID]
if not obj then
- return
+ return false
end
if obj.moving then
obj.x, obj.y, obj.z = getPlayerObjectPos(amx, player, objID)
@@ -208,6 +224,7 @@ function StopPlayerObject(amx, player, objID)
obj.moving = nil
end
clientCall(player, 'StopPlayerObject', objID)
+ return true
end
diff --git a/amx/server/natives/a_players.lua b/amx/server/natives/a_players.lua
index baee5e2..1766dc0 100644
--- a/amx/server/natives/a_players.lua
+++ b/amx/server/natives/a_players.lua
@@ -1,12 +1,35 @@
function SetPlayerPos(amx, player, x, y, z)
- setElementPosition(player, x, y, z)
+ local vehicle = getPedOccupiedVehicle(player)
+ if vehicle then
+ removePedFromVehicle(player)
+ setTimer(setElementPosition, 500, 1, player, x, y, z)
+ else
+ return setElementPosition(player, x, y, z)
+ end
+ return true
+end
+
+function SetPlayerPosFindZ(amx, player, x, y, z)
+ local vehicle = getPedOccupiedVehicle(player)
+ if vehicle then
+ removePedFromVehicle(player)
+ setTimer(clientCall, 500, 1, player, 'SetPlayerPosFindZ', x, y, z)
+ else
+ clientCall(player, 'SetPlayerPosFindZ', x, y, z)
+ end
+ return true
end
+
GetPlayerPos = GetObjectPos
function SetPlayerFacingAngle(amx, player, angle)
- setPedRotation(player, angle)
+ return setPedRotation(player, angle)
end
function GetPlayerFacingAngle(amx, player, refRot)
+ if not player then
+ return false
+ end
writeMemFloat(amx, refRot, getPedRotation(player))
+ return true
end
function IsPlayerInRangeOfPoint(amx, player, range, pX, pY, pZ)
return getDistanceBetweenPoints3D(pX, pY, pZ, getElementPosition(player)) <= range
@@ -23,12 +46,15 @@ end
function SetPlayerInterior(amx, player, interior)
local playerId = getElemID(player)
if g_Players[playerId].viewingintro then
- return
+ return false
end
local oldInt = getElementInterior(player)
- setElementInterior(player, interior)
- procCallOnAll('OnPlayerInteriorChange', playerId, interior, oldInt)
- clientCall(player, 'AMX_OnPlayerInteriorChange', interior, oldInt)
+ if interior ~= oldInt then
+ setElementInterior(player, interior)
+ procCallOnAll('OnPlayerInteriorChange', playerId, interior, oldInt)
+ clientCall(player, 'AMX_OnPlayerInteriorChange', interior, oldInt)
+ end
+ return true
end
function GetPlayerInterior(amx, player)
@@ -36,23 +62,31 @@ function GetPlayerInterior(amx, player)
end
function SetPlayerHealth(amx, player, health)
- setElementHealth(player, health)
+ return setElementHealth(player, health)
end
function GetPlayerHealth(amx, player, refHealth)
+ if not player then
+ return false
+ end
writeMemFloat(amx, refHealth, getElementHealth(player))
+ return true
end
function SetPlayerArmour(amx, player, armor)
- setPedArmor(player, armor)
+ return setPedArmor(player, armor)
end
function GetPlayerArmour(amx, player, refArmor)
+ if not player then
+ return false
+ end
writeMemFloat(amx, refArmor, getPedArmor(player))
+ return true
end
function SetPlayerAmmo(amx, player, slot, ammo)
- setWeaponAmmo(player, slot, ammo)
+ return setWeaponAmmo(player, slot, ammo)
end
function GetPlayerAmmo(amx, player)
@@ -94,7 +128,7 @@ function GetPlayerTargetActor(amx, player)
end
function SetPlayerTeam(amx, player, team)
- setPlayerTeam(player, team)
+ return setPlayerTeam(player, team)
end
function GetPlayerTeam(amx, player)
@@ -102,7 +136,7 @@ function GetPlayerTeam(amx, player)
end
function SetPlayerScore(amx, player, score)
- setElementData(player, 'Score', score)
+ return setElementData(player, 'Score', score)
end
function GetPlayerScore(amx, player)
@@ -124,6 +158,7 @@ function SetPlayerColor(amx, player, r, g, b)
if g_ShowPlayerMarkers then
setBlipColor(g_Players[getElemID(player)].blip, r, g, b, 255)
end
+ return true
end
function GetPlayerColor(amx, player)
@@ -132,7 +167,7 @@ function GetPlayerColor(amx, player)
end
function SetPlayerSkin(amx, player, skin)
- setElementModel(player, skinReplace[skin] or skin)
+ return setElementModel(player, skinReplace[skin] or skin)
end
function GetPlayerSkin(amx, player)
@@ -140,11 +175,11 @@ function GetPlayerSkin(amx, player)
end
function GivePlayerWeapon(amx, player, weaponID, ammo)
- giveWeapon(player, weaponID, ammo, true)
+ return giveWeapon(player, weaponID, ammo, true)
end
function ResetPlayerWeapons(amx, player)
- takeAllWeapons(player)
+ return takeAllWeapons(player)
end
function SetPlayerArmedWeapon(amx, player, weapon)
@@ -157,14 +192,15 @@ function GetPlayerWeaponData(amx, player, slot, refWeapon, refAmmo)
if weapon then
amx.memDAT[refWeapon], amx.memDAT[refAmmo] = weapon.id, weapon.ammo
end
+ return true
end
function GivePlayerMoney(amx, player, amount)
- givePlayerMoney(player, amount)
+ return givePlayerMoney(player, amount)
end
function ResetPlayerMoney(amx, player)
- setPlayerMoney(player, 0)
+ return setPlayerMoney(player, 0)
end
function SetPlayerName(amx, player, name)
@@ -180,9 +216,13 @@ function GetPlayerState(amx, player)
end
function GetPlayerIp(amx, player, refName, len)
+ if not player then
+ return -1
+ end
local ip = getPlayerIP(player)
if #ip < len then
writeMemString(amx, refName, ip)
+ return string.len(ip)
end
end
@@ -198,39 +238,45 @@ function GetPlayerKeys(amx, player, refKeys, refUpDown, refLeftRight)
amx.memDAT[refKeys] = buildKeyState(player, g_KeyMapping)
amx.memDAT[refUpDown] = buildKeyState(player, g_UpDownMapping)
amx.memDAT[refLeftRight] = buildKeyState(player, g_LeftRightMapping)
+ return true
end
function GetPlayerName(amx, player, nameBuf, bufSize)
local name = getPlayerName(player)
if #name <= bufSize then
writeMemString(amx, nameBuf, name)
+ return string.len(name)
end
end
function SetPlayerTime(amx, player, hours, minutes)
clientCall(player, 'setTime', hours, minutes)
+ return true
end
function GetPlayerTime(amx, player, refHour, refMinute)
amx.memDAT[refHour], amx.memDAT[refMinute] = getTime()
+ return true
end
--- TODO: TogglePlayerClock client
+-- TogglePlayerClock client
function SetPlayerWeather(amx, player, weatherID)
clientCall(player, 'setWeather', weatherID % 256)
+ return true
end
function ForceClassSelection(amx, playerID)
if not g_Players[playerID] then
- return
+ return false
end
g_Players[playerID].returntoclasssel = true
+ return true
end
function SetPlayerWantedLevel(amx, player, level)
- setPlayerWantedLevel(player, level)
+ return setPlayerWantedLevel(player, level)
end
function GetPlayerWantedLevel(amx, player)
@@ -246,14 +292,18 @@ function SetPlayerFightingStyle(amx, player, style)
end
function SetPlayerVelocity(amx, player, vx, vy, vz)
- setElementVelocity(player, vx, vy, vz)
+ return setElementVelocity(player, vx, vy, vz)
end
function GetPlayerVelocity(amx, player, refVX, refVY, refVZ)
+ if not player then
+ return false
+ end
local vx, vy, vz = getElementVelocity(player)
writeMemFloat(amx, refVX, vx)
writeMemFloat(amx, refVY, vy)
writeMemFloat(amx, refVZ, vz)
+ return true
end
-- dummy
@@ -264,10 +314,12 @@ end
function PlayAudioStreamForPlayer(amx, player, url, posX, posY, posZ, distance, usepos)
clientCall(player, 'PlayAudioStreamForPlayer', url, posX, posY, posZ, distance, usepos)
+ return true
end
function StopAudioStreamForPlayer(amx, player)
clientCall(player, 'StopAudioStreamForPlayer')
+ return true
end
function SetPlayerShopName(amx)
@@ -280,15 +332,18 @@ function SetPlayerSkillLevel(amx, player, skill, level)
end
function GetPlayerSurfingVehicleID(amx, player)
- return -1
+ notImplemented('GetPlayerSurfingVehicleID')
+ return INVALID_VEHICLE_ID
end
function GetPlayerSurfingObjectID(amx)
notImplemented('GetPlayerSurfingObjectID')
+ return INVALID_OBJECT_ID
end
function RemoveBuildingForPlayer(amx, player, model, x, y, z, radius)
clientCall(player, 'RemoveBuildingForPlayer', model, x, y, z, radius)
+ return true
end
function GetPlayerLastShotVectors(amx)
@@ -310,9 +365,9 @@ function SetPlayerAttachedObject(amx, player, index, modelid, bone, fOffsetX, fO
--Todo: Implement material colors
else
outputDebugString('SetPlayerAttachedObject: Cannot attach object since the model is invalid. Model id was ' .. modelid)
- return 0
+ return false
end
- return 1
+ return true
end
function RemovePlayerAttachedObject(amx, player, index)
@@ -322,9 +377,9 @@ function RemovePlayerAttachedObject(amx, player, index)
detachElementFromBone( obj )
destroyElement( obj )
g_Players[playerID].attachedObjects[index] = nil
- return 1
+ return true
end
- return 0
+ return false
end
function IsPlayerAttachedObjectSlotUsed(amx)
@@ -386,12 +441,13 @@ function CreatePlayerTextDraw(amx, player, x, y, text)
end
function PlayerTextDrawDestroy(amx, player, textdrawID)
- if not IsPlayerTextDrawValid(player, textdrawID) then
+ if not IsPlayerTextDrawValid(player, textdrawID) then
return false
end
outputDebugString('Sending textdraw id s->' .. g_PlayerTextDraws[player][textdrawID].serverTDId .. ' c->' .. g_PlayerTextDraws[player][textdrawID].clientTDId .. ' for destruction')
clientCall(player, 'TextDrawDestroy', g_PlayerTextDraws[player][textdrawID].clientTDId)
g_PlayerTextDraws[player][textdrawID] = nil
+ return true
end
function PlayerTextDrawLetterSize(amx, player, textdrawID, x, y)
@@ -420,7 +476,7 @@ function PlayerTextDrawAlignment(amx, player, textdrawID, align)
end
function PlayerTextDrawColor(amx, player, textdrawID, r, g, b, a)
- if not IsPlayerTextDrawValid(player, textdrawID) then
+ if not IsPlayerTextDrawValid(player, textdrawID) then
return false
end
g_PlayerTextDraws[player][textdrawID].color = { r, g, b }
@@ -441,10 +497,11 @@ function PlayerTextDrawBoxColor(amx, player, textdrawID, r, g, b, a)
return false
end
g_PlayerTextDraws[player][textdrawID].boxcolor = { r, g, b, a }
+ return true
end
function PlayerTextDrawSetShadow(amx, player, textdrawID, size)
- if not IsPlayerTextDrawValid(player, textdrawID) then
+ if not IsPlayerTextDrawValid(player, textdrawID) then
return false
end
g_PlayerTextDraws[player][textdrawID].shade = size
@@ -460,7 +517,7 @@ function PlayerTextDrawSetOutline(amx, player, textdrawID, size)
end
function PlayerTextDrawSetProportional(amx, player, textdrawID, proportional)
notImplemented('PlayerTextDrawSetProportional')
- --TextDrawSetProportional(amx, textdraw, proportional)
+ --TextDrawSetProportional(amx, textdraw, proportional)
end
function PlayerTextDrawBackgroundColor(amx, player, textdrawID, r, g, b, a)
@@ -497,7 +554,7 @@ function PlayerTextDrawShow(amx, player, textdrawID)
return true
end
function PlayerTextDrawHide(amx, player, textdrawID)
- if not IsPlayerTextDrawValid(player, textdrawID) then
+ if not IsPlayerTextDrawValid(player, textdrawID) then
return false
end
--if g_PlayerTextDraws[player][textdrawID].visible == 0 then
@@ -506,10 +563,11 @@ function PlayerTextDrawHide(amx, player, textdrawID)
g_PlayerTextDraws[player][textdrawID].visible = false
clientCall(player, 'TextDrawHideForPlayer', g_PlayerTextDraws[player][textdrawID].clientTDId)
--outputDebugString('PlayerTextDrawHide: proccessed for ' .. textdrawID .. ' with ' .. g_PlayerTextDraws[player][textdrawID].text)
+ return true
end
function PlayerTextDrawSetString(amx, player, textdrawID, str)
- if not IsPlayerTextDrawValid(player, textdrawID) then
+ if not IsPlayerTextDrawValid(player, textdrawID) then
return false
end
g_PlayerTextDraws[player][textdrawID].text = str
@@ -611,6 +669,7 @@ function PutPlayerInVehicle(amx, player, vehicle, seat)
end
--setPlayerState(player, seat == 0 and PLAYER_STATE_DRIVER or PLAYER_STATE_PASSENGER)
--No need to do this since the vehicle event gets called when we enter a vehicle
+ return true
end
function GetPlayerVehicleID(amx, player)
@@ -632,16 +691,20 @@ end
function RemovePlayerFromVehicle(amx, player)
local vehicle = getPedOccupiedVehicle(player)
if vehicle then
- removePedFromVehicle(player)
if g_RCVehicles[getElementModel(vehicle)] then
+ removePedFromVehicle(player)
clientCall(root, 'setElementAlpha', player, 255)
+ else
+ removePedFromVehicleEx(player)
end
end
- setPlayerState(player, PLAYER_STATE_ONFOOT)
+ --setPlayerState(player, PLAYER_STATE_ONFOOT)
+ --No need to do this since the vehicle event gets called when we exit a vehicle
+ return true
end
function TogglePlayerControllable(amx, player, enable)
- toggleAllControls(player, enable, true, false)
+ return toggleAllControls(player, enable, true, false)
end
function PlayerPlaySound(amx, player, soundID, x, y, z)
@@ -655,11 +718,14 @@ function ApplyAnimation(amx, player, animlib, animname, fDelta, loop, lockx, loc
end
setPedAnimation(player, animlib, animname, time, loop, lockx or locky, false, freeze)
setPedAnimationSpeed(player, animname, fDelta)
+ return true
end
function ClearAnimations(amx, player)
+ removePedFromVehicle(player)
setPedAnimation(player, false)
g_Players[getElemID(player)].specialaction = SPECIAL_ACTION_NONE
+ return true
end
function GetPlayerAnimationIndex(player)
@@ -673,7 +739,9 @@ function GetAnimationName(amx)
end
function GetPlayerSpecialAction(amx, player)
- if doesPedHaveJetPack(player) then
+ if not player then
+ return SPECIAL_ACTION_NONE
+ elseif isPedWearingJetpack(player) then
return SPECIAL_ACTION_USEJETPACK
else
return g_Players[getElemID(player)].specialaction or SPECIAL_ACTION_NONE
@@ -681,15 +749,18 @@ function GetPlayerSpecialAction(amx, player)
end
function SetPlayerSpecialAction(amx, player, actionID)
- if actionID == SPECIAL_ACTION_NONE then
- removePedJetPack(player)
+ if not player then
+ return false
+ elseif actionID == SPECIAL_ACTION_NONE then
+ setPedWearingJetpack(player, false)
setPedAnimation(player, false)
elseif actionID == SPECIAL_ACTION_USEJETPACK then
- givePedJetPack(player)
+ setPedWearingJetpack(player, true)
elseif g_SpecialActions[actionID] then
setPedAnimation(player, unpack(g_SpecialActions[actionID]))
end
g_Players[getElemID(player)].specialaction = actionID
+ return true
end
function DisableRemoteVehicleCollisions(amx)
@@ -700,21 +771,25 @@ end
function SetPlayerCheckpoint(amx, player, x, y, z, size)
g_Players[getElemID(player)].checkpoint = { x = x, y = y, z = z, radius = size }
clientCall(player, 'SetPlayerCheckpoint', x, y, z, size)
+ return true
end
function DisablePlayerCheckpoint(amx, player)
g_Players[getElemID(player)].checkpoint = nil
clientCall(player, 'DisablePlayerCheckpoint')
+ return true
end
function SetPlayerRaceCheckpoint(amx, player, type, x, y, z, nextX, nextY, nextZ, size)
g_Players[getElemID(player)].racecheckpoint = { type = type, x = x, y = y, z = z, radius = size }
clientCall(player, 'SetPlayerRaceCheckpoint', type, x, y, z, nextX, nextY, nextZ, size)
+ return true
end
function DisablePlayerRaceCheckpoint(amx, player)
g_Players[getElemID(player)].racecheckpoint = nil
clientCall(player, 'DisablePlayerRaceCheckpoint')
+ return true
end
-- SetPlayerWorldBounds client
@@ -723,6 +798,7 @@ end
function ShowPlayerNameTagForPlayer(amx, player, playerToShow, show)
clientCall(player, 'setPlayerNametagShowing', playerToShow, show)
+ return true
end
-- SetPlayerMapIcon client
@@ -733,38 +809,55 @@ function AllowPlayerTeleport(amx, player, allow)
end
function SetPlayerCameraPos(amx, player, x, y, z)
+ if not player then
+ return false
+ end
fadeCamera(player, true)
setCameraMatrix(player, x, y, z)
+ return true
end
function SetPlayerCameraLookAt(amx, player, lx, ly, lz)
+ if not player then
+ return false
+ end
fadeCamera(player, true)
local x, y, z = getCameraMatrix(player)
setCameraMatrix(player, x, y, z, lx, ly, lz)
+ return true
end
function SetCameraBehindPlayer(amx, player)
--In samp calling SetCameraBehindPlayer also unsets camera interpolation
clientCall(player, 'removeCamHandlers')
- setCameraTarget(player, player)
+ return setCameraTarget(player, player)
end
function GetPlayerCameraPos(amx, player, refX, refY, refZ)
+ if not player then
+ return false
+ end
local x, y, z = getCameraMatrix(player)
writeMemFloat(amx, refX, x)
writeMemFloat(amx, refY, y)
writeMemFloat(amx, refZ, z)
+ return true
end
function GetPlayerCameraFrontVector(amx, player, refX, refY, refZ)
+ if not player then
+ return false
+ end
local x, y, z, lx, ly, lz = getCameraMatrix(player)
writeMemFloat(amx, refX, lx)
writeMemFloat(amx, refY, ly)
writeMemFloat(amx, refZ, lz)
+ return true
end
function GetPlayerCameraMode(amx)
notImplemented('GetPlayerCameraMode')
+ return -1
end
function EnablePlayerCameraTarget(amx)
@@ -774,36 +867,37 @@ end
function GetPlayerCameraTargetObject(amx)
notImplemented('GetPlayerCameraTargetObject')
- return false
+ return INVALID_OBJECT_ID
end
function GetPlayerCameraTargetVehicle(amx)
notImplemented('GetPlayerCameraTargetVehicle')
- return false
+ return INVALID_VEHICLE_ID
end
function GetPlayerCameraTargetPlayer(amx)
notImplemented('GetPlayerCameraTargetPlayer')
- return false
+ return INVALID_PLAYER_ID
end
function GetPlayerCameraTargetActor(amx)
notImplemented('GetPlayerCameraTargetActor')
- return false
+ return INVALID_ACTOR_ID
end
function GetPlayerCameraAspectRatio(amx)
notImplemented('GetPlayerCameraAspectRatio')
- return false
+ return float2cell(0)
end
function GetPlayerCameraZoom(amx)
notImplemented('GetPlayerCameraZoom')
- return false
+ return float2cell(0)
end
function AttachCameraToObject(amx, player, object)
clientCall(player, 'AttachCameraToObject', object)
+ return true
end
function AttachCameraToPlayerObject(amx)
@@ -814,9 +908,11 @@ end
--playerid, Float:FromX, Float:FromY, Float:FromZ, Float:ToX, Float:ToY, Float:ToZ, time, cut = CAMERA_CUT
function InterpolateCameraPos(amx, player, FromX, FromY, FromZ, ToX, ToY, ToZ, time, cut)
clientCall(player, 'InterpolateCameraPos', FromX, FromY, FromZ, ToX, ToY, ToZ, time, cut)
+ return true
end
function InterpolateCameraLookAt(amx, player, FromX, FromY, FromZ, ToX, ToY, ToZ, time, cut)
clientCall(player, 'InterpolateCameraLookAt', FromX, FromY, FromZ, ToX, ToY, ToZ, time, cut)
+ return true
end
function IsPlayerAdmin(amx, player)
@@ -854,7 +950,7 @@ function IsPlayerInVehicle(amx, player, vehicle)
end
function SetPlayerVirtualWorld(amx, player, dimension)
- setElementDimension(player, dimension)
+ return setElementDimension(player, dimension)
end
function EnableStuntBonusForAll(amx, enable)
@@ -874,31 +970,31 @@ function TogglePlayerSpectating(amx, player, enable)
else
local playerdata = g_Players[getElemID(player)]
local spawninfo = playerdata.spawninfo or (g_PlayerClasses and g_PlayerClasses[playerdata.selectedclass])
- if not spawninfo then
+ if not spawninfo or playerdata.returntoclasssel then
+ playerdata.returntoclasssel = nil
putPlayerInClassSelection(player)
- return
- end
- if isPedDead(player) then
- spawnPlayerBySelectedClass(player)
+ return true
end
+ spawnPlayerBySelectedClass(player)
--In samp calling TogglePlayerSpectating also unsets camera interpolation
clientCall(player, 'removeCamHandlers')
setCameraTarget(player, player)
clientCall(player, 'setCameraTarget', player) --Clear the one on the client as well, otherwise we can't go back to normal camera after spectating vehicles
setPlayerHudComponentVisible(player, 'radar', true)
- setPlayerState(player, PLAYER_STATE_ONFOOT)
end
+ return true
end
function PlayerSpectatePlayer(amx, player, playerToSpectate, mode)
- setCameraTarget(player, playerToSpectate)
+ return setCameraTarget(player, playerToSpectate)
end
function PlayerSpectateVehicle(amx, player, vehicleToSpectate, mode)
if getVehicleController(vehicleToSpectate) then
- setCameraTarget(player, getVehicleController(vehicleToSpectate))
+ return setCameraTarget(player, getVehicleController(vehicleToSpectate))
else
clientCall(player, 'setCameraTarget', vehicleToSpectate)
+ return true
end
end
@@ -925,5 +1021,5 @@ end
-- Explosion
function CreateExplosionForPlayer(amx, player, x, y, z, type, radius)
clientCall(player, 'createExplosion', x, y, z, type, true, -1.0, false)
- return 1
+ return true
end
\ No newline at end of file
diff --git a/amx/server/natives/a_samp.lua b/amx/server/natives/a_samp.lua
index 2c188ed..abc48a7 100644
--- a/amx/server/natives/a_samp.lua
+++ b/amx/server/natives/a_samp.lua
@@ -44,12 +44,12 @@ function SendClientMessage(amx, player, r, g, b, a, message)
end
--replace colors
- outputChatBox(colorizeString(message), player, r, g, b, true)
+ return outputChatBox(colorizeString(message), player, r, g, b, true)
end
function SendClientMessageToAll(amx, r, g, b, a, message)
if (amx.proc == 'OnPlayerConnect' and message:match('joined')) or (amx.proc == 'OnPlayerDisconnect' and message:match('left')) then
- return
+ return false
end
--replace colors
@@ -58,14 +58,15 @@ function SendClientMessageToAll(amx, r, g, b, a, message)
for i,data in pairs(g_Players) do
SendClientMessage(amx, data.elem, r, g, b, a, message)
end
+ return true
end
function SendPlayerMessageToAll(amx, sender, message)
- outputChatBox(getPlayerName(sender) .. ' ' .. message, root, 255, 255, 255, true)
+ return outputChatBox(getPlayerName(sender) .. ' ' .. message, root, 255, 255, 255, true)
end
function SendPlayerMessageToPlayer(amx, playerTo, playerFrom, message)
- outputChatBox(getPlayerName(playerFrom) .. ' ' .. message, playerTo, 255, 255, 255, true)
+ return outputChatBox(getPlayerName(playerFrom) .. ' ' .. message, playerTo, 255, 255, 255, true)
end
function SendDeathMessage(amx, killer, victim, reason)
@@ -80,6 +81,7 @@ function GameTextForAll(amx, str, time, style)
for i,player in pairs(g_Players) do
GameTextForPlayer(amx, player.elem, str, time, style)
end
+ return true
end
function GameTextForPlayer(amx, player, str, time, style)
@@ -88,6 +90,7 @@ function GameTextForPlayer(amx, player, str, time, style)
str = str:gsub('/' .. samp, '/' .. mta)
end
clientCall(player, 'GameTextForPlayer', str, time, style)
+ return true
end
function SetTimerEx(amx, fnName, interval, repeating, fmt, ...)
@@ -261,7 +264,7 @@ end
function SetGameModeText(amx, gamemodeName)
- setGameType(gamemodeName)
+ return setGameType(gamemodeName)
end
function SetTeamCount(amx, count)
@@ -295,7 +298,7 @@ end
function AddStaticVehicleEx(amx, model, x, y, z, angle, color1, color2, respawnDelay)
local vehicle = createVehicle(model, x, y, z, 0, 0, angle)
if(vehicle == false) then
- return false
+ return INVALID_VEHICLE_ID
end
if not g_PoliceVehicles[model] then
@@ -362,10 +365,12 @@ CreatePickup = AddStaticPickup
function DestroyPickup(amx, pickup)
removeElem(g_Pickups, pickup)
destroyElement(pickup)
+ return true
end
function ShowNameTags(amx, show)
table.each(g_Players, 'elem', setPlayerNametagShowing, show)
+ return true
end
function ShowPlayerMarkers(amx, show)
@@ -373,6 +378,7 @@ function ShowPlayerMarkers(amx, show)
for i,data in pairs(g_Players) do
ShowPlayerMarker(amx, data.elem, show)
end
+ return true
end
function GameModeExit(amx)
@@ -381,10 +387,11 @@ function GameModeExit(amx)
else
exports.votemanager:voteMap(getThisResource())
end
+ return true
end
function SetWorldTime(amx, hours)
- setTime(hours, 0)
+ return setTime(hours, 0)
end
@@ -406,7 +413,7 @@ end
function EnableVehicleFriendlyFire(amx)
notImplemented('EnableVehicleFriendlyFire')
- return 1;
+ return true
end
function AllowInteriorWeapons(amx, allow)
@@ -414,13 +421,14 @@ function AllowInteriorWeapons(amx, allow)
end
function SetWeather(amx, weatherID)
- setWeather(weatherID % 256)
+ return setWeather(weatherID % 256)
end
function SetGravity(amx, gravity)
setGravity(gravity)
table.each(g_Players, 'elem', setPedGravity, gravity)
+ return true
end
function AllowAdminTeleport(amx, allow)
@@ -432,7 +440,7 @@ function SetDeathDropAmount(amx, amount)
end
function CreateExplosion(amx, x, y, z, type, radius)
- createExplosion(x, y, z, type)
+ return createExplosion(x, y, z, type)
end
function ShowPlayerMarker(amx, player, show)
@@ -486,23 +494,34 @@ end
function Kick(amx, player)
kickPlayer(player)
+ return true
end
function Ban(amx, player)
banPlayer(player)
+ return true
end
function BanEx(amx, player, reason)
banPlayer(player, nil, reason)
+ return true
end
function SendRconCommand(amx, command)
print(doRCON(command))
+ return true
end
---Call requestSpawn instead so we clear up any binds (since there's a workaround in SA-MP to skip the spawn selection screen, and I use this workaround)
function SpawnPlayer(amx, player)
- requestSpawn(player, false, false)
+ local playerdata = g_Players[getElemID(player)]
+ if playerdata.doingclasssel then
+ --Call requestSpawn instead so we clear up any binds
+ --since there's a workaround in SA-MP to skip the spawn selection screen
+ requestSpawn(player, false, false)
+ else
+ spawnPlayerBySelectedClass(player)
+ end
+ return true
end
-- GetPlayerNetworkStats
@@ -558,26 +577,31 @@ function DestroyMenu(amx, menu)
end
clientCall(root, 'DestroyMenu', menu.id)
g_Menus[menu.id] = nil
+ return true
end
function AddMenuItem(amx, menu, column, caption)
table.insert(menu.items[column], caption)
clientCall(root, 'AddMenuItem', menu.id, column, caption)
+ return true
end
function SetMenuColumnHeader(amx, menu, column, text)
menu.items[column][13] = text
clientCall(root, 'SetMenuColumnHeader', menu.id, column, text)
+ return true
end
function ShowMenuForPlayer(amx, menu, player)
clientCall(player, 'ShowMenuForPlayer', menu.id)
g_Players[getElemID(player)].menu = menu
+ return true
end
function HideMenuForPlayer(amx, menu, player)
clientCall(player, 'HideMenuForPlayer', menu.id)
g_Players[getElemID(player)].menu = nil
+ return true
end
function IsValidMenu(amx, menuID)
@@ -587,7 +611,7 @@ end
function DisableMenu(amx, menuID)
local menu = g_Menus[menuID]
if not menu then
- return
+ return false
end
menu.disabled = true
for id,player in pairs(g_Players) do
@@ -595,14 +619,16 @@ function DisableMenu(amx, menuID)
clientCall(player.elem, 'HideMenuForPlayer', menuID)
end
end
+ return true
end
function DisableMenuRow(amx, menuID, rowID)
local menu = g_Menus[menuID]
if not menu then
- return
+ return false
end
clientCall(root, 'DisableMenuRow', menuID, rowID)
+ return true
end
function GetPlayerMenu(amx, player)
@@ -665,54 +691,65 @@ end
function TextDrawUseBox(amx, textdraw, usebox)
textdraw.usebox = usebox
+ return true
end
--End of player textdraws
function TextDrawDestroy(amx, textdrawID)
if not g_TextDraws[textdrawID] then
- return
+ return false
end
clientCall(root, 'TextDrawDestroy', g_TextDraws[textdrawID].clientTDId)
g_TextDraws[textdrawID] = nil
+ return true
end
function TextDrawLetterSize(amx, textdraw, width, height)
textdraw.lwidth = width
textdraw.lheight = height
+ return true
end
function TextDrawTextSize(amx, textdraw, x, y)
textdraw.boxsize = { x, y } --Game does 448 not 480
+ return true
end
function TextDrawAlignment(amx, textdraw, align)
textdraw.align = (align == 0 and 1 or align)
+ return true
end
function TextDrawColor(amx, textdraw, r, g, b, a)
textdraw.color = { r, g, b }
+ return true
end
function TextDrawBoxColor(amx, textdraw, r, g, b, a)
textdraw.boxcolor = { r, g, b, a }
+ return true
end
function TextDrawSetShadow(amx, textdraw, size)
textdraw.shade = size
+ return true
end
function TextDrawSetOutline(amx, textdraw, size)
textdraw.outlinesize = size
+ return true
end
function TextDrawBackgroundColor(amx, textdraw, r, g, b, a)
textdraw.outlinecolor = { r, g, b, a }
+ return true
end
function TextDrawFont(amx, textdraw, font)
textdraw.font = font
+ return true
end
function TextDrawSetProportional(amx, textdraw, proportional)
@@ -726,23 +763,26 @@ end
function TextDrawShowForPlayer(amx, player, textdrawID)
local textdraw = g_TextDraws[textdrawID]
if not textdraw then
- return
+ return false
end
clientCall(player, 'TextDrawShowForPlayer', textdraw.clientTDId)
+ return true
end
function TextDrawHideForPlayer(amx, player, textdrawID)
local textdraw = g_TextDraws[textdrawID]
if not textdraw then
- return
+ return false
end
clientCall(player, 'TextDrawHideForPlayer', textdraw.clientTDId)
+ return true
end
function TextDrawShowForAll(amx, textdrawID)
for id,player in pairs(g_Players) do
TextDrawShowForPlayer(amx, player.elem, textdrawID)
end
+ return true
end
@@ -750,10 +790,12 @@ function TextDrawHideForAll(amx, textdrawID)
for id,player in pairs(g_Players) do
TextDrawHideForPlayer(amx, player.elem, textdrawID)
end
+ return true
end
function TextDrawSetString(amx, textdraw, str)
textdraw.text = str
+ return true
end
function TextDrawSetPreviewModel(amx)
@@ -774,6 +816,7 @@ end
function GangZoneDestroy(amx, zone)
removeElem(g_GangZones, zone)
destroyElement(zone)
+ return true
end
function GangZoneShowForPlayer(amx, player, zone, r, g, b, a)
@@ -783,6 +826,7 @@ function GangZoneShowForPlayer(amx, player, zone, r, g, b, a)
if a < 1 then a = 1 end
setRadarAreaColor(zone, r, g, b, a)
setElementVisibleTo(zone, player, true)
+ return true
end
function GangZoneShowForAll(amx, zone, r, g, b, a)
@@ -792,30 +836,33 @@ function GangZoneShowForAll(amx, zone, r, g, b, a)
if a < 1 then a = 1 end
setRadarAreaColor(zone, r, g, b, a)
setElementVisibleTo(zone, root, true)
+ return true
end
function GangZoneHideForPlayer(amx, player, zone)
- setElementVisibleTo(zone, player, false)
+ return setElementVisibleTo(zone, player, false)
end
function GangZoneHideForAll(amx, zone)
- setElementVisibleTo(zone, root, false)
+ return setElementVisibleTo(zone, root, false)
end
function GangZoneFlashForPlayer(amx, player, zone, r, g, b, a)
clientCall(player, 'setRadarAreaFlashing', zone, true)
+ return true
end
function GangZoneFlashForAll(amx, zone, r, g, b, a)
- setRadarAreaFlashing(zone, true)
+ return setRadarAreaFlashing(zone, true)
end
function GangZoneStopFlashForPlayer(amx, player, zone)
clientCall(player, 'setRadarAreaFlashing', zone, false)
+ return true
end
function GangZoneStopFlashForAll(amx, zone)
- setRadarAreaFlashing(zone, false)
+ return setRadarAreaFlashing(zone, false)
end
function Create3DTextLabel(amx, text, r, g, b, a, x, y, z, dist, vw, los)
@@ -945,6 +992,7 @@ function gpci(amx, player, nameBuf, bufSize)
local serial = getPlayerSerial(player)
if #serial <= bufSize then
writeMemString(amx, nameBuf, serial)
+ return string.len(serial)
end
end
@@ -953,6 +1001,7 @@ function SetSpawnInfo(amx, player, team, skin, x, y, z, angle, weap1, weap1_ammo
x, y, z, angle, skinReplace[skin] or skin, 0, 0, team,
weapons={ {weap1, weap1_ammo}, {weap2, weap2_ammo}, {weap3, weap3_ammo} }
}
+ return true
end
function NetStats_BytesReceived(amx, player)
@@ -978,7 +1027,7 @@ function NetStats_GetIpPort(amx, player, ip_port, ip_port_len)
local port = 0 -- We haven't a solution for getting a client port
local ipandport = tostring(ip).. ":".. tostring(port)
writeMemString(amx, ip_port, ipandport)
- return string.len(tostring(ip).. ":".. tostring(port));
+ return string.len(ipandport);
end
function NetStats_MessagesReceived(amx, player)
diff --git a/amx/server/natives/a_vehicles.lua b/amx/server/natives/a_vehicles.lua
index 7282acf..c21220d 100644
--- a/amx/server/natives/a_vehicles.lua
+++ b/amx/server/natives/a_vehicles.lua
@@ -1,13 +1,16 @@
CreateVehicle = AddStaticVehicleEx
function DestroyVehicle(amx, vehicle)
- local vehicleID = getElemID(vehicle)
- clientCall(root, 'DestroyVehicle', vehicleID)
- for i,playerdata in pairs(g_Players) do
- playerdata.streamedVehicles[vehicleID] = nil
+ if vehicle then
+ local vehicleID = getElemID(vehicle)
+ clientCall(root, 'DestroyVehicle', vehicleID)
+ for i,playerdata in pairs(g_Players) do
+ playerdata.streamedVehicles[vehicleID] = nil
+ end
+ removeElem(g_Vehicles, vehicle)
+ destroyElement(vehicle)
end
- removeElem(g_Vehicles, vehicle)
- destroyElement(vehicle)
+ return true
end
function IsVehicleStreamedIn(amx, vehicle, player)
@@ -16,22 +19,36 @@ end
GetVehiclePos = GetObjectPos
-SetVehiclePos = SetObjectPos
+function SetVehiclePos(amx, vehicle, x, y, z)
+ setElementFrozen(vehicle, true)
+
+ setElementPosition(vehicle, x, y, z)
+ setElementAngularVelocity(vehicle, 0, 0, 0)
+ setElementVelocity(vehicle, 0, 0, 0)
+
+ setTimer(setElementFrozen, 500, 1, vehicle, false)
+ return true
+end
function GetVehicleZAngle(amx, vehicle, refZ)
+ if not vehicle then
+ return false
+ end
local rX, rY, rZ = getVehicleRotation(vehicle)
writeMemFloat(amx, refZ, rZ)
+ return true
end
GetVehicleDistanceFromPoint = GetPlayerDistanceFromPoint
function SetVehicleZAngle(amx, vehicle, rZ)
local rX, rY = getVehicleRotation(vehicle)
- setVehicleRotation(vehicle, 0, 0, rZ)
+ return setVehicleRotation(vehicle, 0, 0, rZ)
end
function SetVehicleParamsForPlayer(amx, vehicle, player, isObjective, doorsLocked)
clientCall(player, 'SetVehicleParamsForPlayer', vehicle, isObjective, doorsLocked)
+ return true
end
@@ -101,6 +118,7 @@ function SetVehicleParamsCarDoors(amx, vehicle, driver, passenger, backleft, bac
setVehicleDoorOpenRatio(vehicle, 3, passenger and 1 or 0) -- bonnet
setVehicleDoorOpenRatio(vehicle, 4, backleft and 1 or 0) -- bonnet
setVehicleDoorOpenRatio(vehicle, 5, backright and 1 or 0) -- bonnet
+ return true
end
function GetVehicleParamsCarWindows(amx, vehicle, int1, int2, int3, int4)
@@ -108,58 +126,53 @@ function GetVehicleParamsCarWindows(amx, vehicle, int1, int2, int3, int4)
end
function SetVehicleToRespawn(amx, vehicle)
- for seat=0,getVehicleMaxPassengers(vehicle) do
- local player = getVehicleOccupant(vehicle, seat)
- if player then
- removePedFromVehicle(player)
- end
- end
- respawnStaticVehicle(vehicle)
+ return respawnStaticVehicle(vehicle)
end
function LinkVehicleToInterior(amx, vehicle, interior)
- setElementInterior(vehicle, interior)
+ return setElementInterior(vehicle, interior)
end
function AddVehicleComponent(amx, vehicle, upgradeID)
- addVehicleUpgrade(vehicle, upgradeID)
+ return addVehicleUpgrade(vehicle, upgradeID)
end
function RemoveVehicleComponent(amx, vehicle, upgradeID)
- removeVehicleUpgrade(vehicle, upgrade)
+ return removeVehicleUpgrade(vehicle, upgradeID)
end
function ChangeVehicleColor(amx, vehicle, color1, color2)
- setVehicleColorClamped(vehicle, color1, color2)
+ return setVehicleColorClamped(vehicle, color1, color2)
end
function setVehicleColorClamped(vehicle, color1, color2)
- --This is to prevent negative color behavior, keep the original color if they sent -1 (I believe this is what samp does)
- if color1 ~= -1 and color2 ~= -1 then
- color1 = clamp(color1, 0, 126)
- color2 = clamp(color2, 0, 126)
- setVehicleColor(vehicle, color1, color2, 0, 0)
- end
+ color1 = clamp(color1, 0, 126)
+ color2 = clamp(color2, 0, 126)
+ return setVehicleColor(vehicle, color1, color2, 0, 0)
end
function ChangeVehiclePaintjob(amx, vehicle, paintjob)
- setVehiclePaintjob(vehicle, paintjob)
+ return setVehiclePaintjob(vehicle, paintjob)
end
function SetVehicleHealth(amx, vehicle, health)
- setElementHealth(vehicle, health)
+ return setElementHealth(vehicle, health)
end
function GetVehicleHealth(amx, vehicle, refHealth)
+ if not vehicle then
+ return false
+ end
writeMemFloat(amx, refHealth, getElementHealth(vehicle))
+ return true
end
function AttachTrailerToVehicle(amx, trailer, vehicle)
- attachTrailerToVehicle(vehicle, trailer)
+ return attachTrailerToVehicle(vehicle, trailer)
end
function DetachTrailerFromVehicle(amx, puller)
- detachTrailerFromVehicle(puller)
+ return detachTrailerFromVehicle(puller)
end
function IsTrailerAttachedToVehicle(amx, vehicle)
@@ -175,7 +188,7 @@ function GetVehicleTrailer(amx, vehicle)
end
function SetVehicleNumberPlate(amx, vehicle, plate)
- setVehiclePlateText(vehicle, plate)
+ return setVehiclePlateText(vehicle, plate)
end
function GetVehicleModelInfo(amx)
@@ -231,18 +244,22 @@ function GetVehicleComponentType(amx, componentid)
end
function RepairVehicle(amx, vehicle)
- fixVehicle(vehicle)
+ return fixVehicle(vehicle)
end
function GetVehicleVelocity(amx, vehicle, refVX, refVY, refVZ)
+ if not vehicle then
+ return false
+ end
local vx, vy, vz = getElementVelocity(vehicle)
writeMemFloat(amx, refVX, vx)
writeMemFloat(amx, refVY, vy)
writeMemFloat(amx, refVZ, vz)
+ return true
end
function SetVehicleVelocity(amx, vehicle, vx, vy, vz)
- setElementVelocity(vehicle, vx, vy, vz)
+ return setElementVelocity(vehicle, vx, vy, vz)
--setElementAngularVelocity(vehicle, vx, vy, vz) --This isn't needed, it makes the car spin and I believe samp doesn't do this
end
@@ -273,6 +290,8 @@ function GetVehicleDamageStatus(amx, vehicle, refPanels, refDoors, refLights, re
amx.memDAT[refDoors] = doorsState
amx.memDAT[refLights] = lightsState
amx.memDAT[refTires] = tiresState
+
+ return true
end
function UpdateVehicleDamageStatus(amx, vehicle, panels, doors, lights, tires)
@@ -295,10 +314,12 @@ function UpdateVehicleDamageStatus(amx, vehicle, panels, doors, lights, tires)
setVehicleLightState(vehicle, 4, binand(binshr(lights, 6), 1))
setVehicleWheelStates(vehicle, binand(binshr(tires, 3), 1), binand(binshr(tires, 2), 1), binand(binshr(tires, 1), 1), binand(tires, 1) )
+
+ return true
end
function SetVehicleVirtualWorld(amx, vehicle, dimension)
- setElementDimension(vehicle, dimension)
+ return setElementDimension(vehicle, dimension)
end
function GetVehicleVirtualWorld(amx, vehicle)
diff --git a/amx/server/syscalls.lua b/amx/server/syscalls.lua
index 96b52b8..950c5cd 100644
--- a/amx/server/syscalls.lua
+++ b/amx/server/syscalls.lua
@@ -386,7 +386,7 @@ g_SAMPSyscallPrototypes = {
SetPlayerObjectPos = {'p', 'i', 'f', 'f', 'f'},
SetPlayerObjectRot = {'p', 'i', 'f', 'f', 'f'},
SetPlayerPos = {'p', 'f', 'f', 'f'},
- SetPlayerPosFindZ = {'p', 'f', 'f', 'f', client=true},
+ SetPlayerPosFindZ = {'p', 'f', 'f', 'f'},
SetPlayerRaceCheckpoint = {'p', 'i', 'f', 'f', 'f', 'f', 'f', 'f', 'f'},
SetPlayerScore = {'p', 'i'},
SetPlayerSkin = {'p', 'i'},
diff --git a/amx/server/util.lua b/amx/server/util.lua
index 5607949..1320c10 100644
--- a/amx/server/util.lua
+++ b/amx/server/util.lua
@@ -407,23 +407,23 @@ function setElemID(elem, id)
end
function getPlayerState(player)
- return g_Players[getElemID(player)] and g_Players[getElemID(player)].state or PLAYER_STATE_ONFOOT
+ return g_Players[getElemID(player)] and g_Players[getElemID(player)].state or PLAYER_STATE_NONE
end
function getBotState(bot)
- return g_Bots[getElemID(bot)] and g_Bots[getElemID(bot)].state or PLAYER_STATE_ONFOOT
+ return g_Bots[getElemID(bot)] and g_Bots[getElemID(bot)].state or PLAYER_STATE_NONE
end
function setPlayerState(player, state)
local playerID = getElemID(player)
- local oldState = g_Players[playerID].state or PLAYER_STATE_ONFOOT
+ local oldState = g_Players[playerID].state or PLAYER_STATE_NONE
g_Players[playerID].state = state
procCallOnAll('OnPlayerStateChange', playerID, state, oldState)
end
function setBotState(bot, state)
local botID = getElemID(bot)
- local oldState = g_Bots[botID].state or PLAYER_STATE_ONFOOT
+ local oldState = g_Bots[botID].state or PLAYER_STATE_NONE
g_Bots[botID].state = state
procCallOnAll('OnBotStateChange', botID, state, oldState)
end
@@ -898,7 +898,7 @@ end
--[[
function cell2float(cell)
- if cell == 0 then
+ if not cell or cell == 0 then
return 0
end
@@ -909,7 +909,7 @@ function cell2float(cell)
end
function float2cell(float)
- if float == 0 then
+ if not float or float == 0 then
return 0
end
local ldexp = math.ldexp