1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-09 01:07:16 +01:00
SqMod/module/SqBase.hpp
2020-05-08 23:16:48 +03:00

1427 lines
53 KiB
C++

#pragma once
// ------------------------------------------------------------------------------------------------
#include <sqconfig.h>
// ------------------------------------------------------------------------------------------------
#include <cstddef>
#include <cstdint>
#include <cassert>
#include <string>
/* ------------------------------------------------------------------------------------------------
* ARCHITECTURE IDENTIFIERS
*/
#define SQMOD_ARCH_ID_UNKNOWN 0
#define SQMOD_ARCH_ID_32_BIT 1
#define SQMOD_ARCH_ID_64_BIT 2
/* ------------------------------------------------------------------------------------------------
* PLATFORM IDENTIFIERS
*/
#define SQMOD_PLAT_ID_UNKNOWN 0
#define SQMOD_PLAT_ID_WINDOWS 1
#define SQMOD_PLAT_ID_LINUX 2
#define SQMOD_PLAT_ID_MACOS 3
#define SQMOD_PLAT_ID_UNIX 4
/* ------------------------------------------------------------------------------------------------
* OS IDENTIFICATION
*/
#if defined(_WIN32) || defined(__WIN32__) || defined(_WIN) || defined(__WIN__)
// Windows x32
#define SQMOD_OS_WINDOWS
#define SQMOD_OS_32
#define SQMOD_OS_WINDOWS32
#define SQMOD_ARCHITECTURE 1
#define SQMOD_PLATFORM 1
#elif defined(_WIN64) || defined(__WIN64__)
// Windows x64
#define SQMOD_OS_WINDOWS
#define SQMOD_OS_64
#define SQMOD_OS_WINDOWS64
#define SQMOD_ARCHITECTURE 2
#define SQMOD_PLATFORM 1
#elif defined(linux) || defined(__linux) || defined(__linux__)
// Linux
#define SQMOD_OS_LINUX
#if __GNUC__
#if __x86_64__ || __ppc64__
#define SQMOD_OS_64
#define SQMOD_OS_LINUX64
#define SQMOD_ARCHITECTURE 2
#define SQMOD_PLATFORM 2
#else
#define SQMOD_OS_32
#define SQMOD_OS_LINUX32
#define SQMOD_ARCHITECTURE 1
#define SQMOD_PLATFORM 2
#endif
#endif
#elif defined(__APPLE__) || defined(__MACH__) || defined(MACOSX) || defined(macintosh) || defined(Macintosh)
// MacOS
#define SQMOD_OS_MACOS
#if __GNUC__
#if __x86_64__ || __ppc64__
#define SQMOD_OS_64
#define SQMOD_OS_MACOS64
#define SQMOD_ARCHITECTURE 2
#define SQMOD_PLATFORM 3
#else
#define SQMOD_OS_32
#define SQMOD_OS_MACOS32
#define SQMOD_ARCHITECTURE 1
#define SQMOD_PLATFORM 3
#endif
#endif
#elif defined(__unix) || defined(__unix__)
// Unix
#define SQMOD_OS_UNIX
#if __GNUC__
#if __x86_64__ || __ppc64__
#define SQMOD_OS_64
#define SQMOD_OS_UNIX64
#define SQMOD_ARCHITECTURE 2
#define SQMOD_PLATFORM 4
#else
#define SQMOD_OS_32
#define SQMOD_OS_UNIX32
#define SQMOD_ARCHITECTURE 1
#define SQMOD_PLATFORM 4
#endif
#endif
#else
// Unsupported system
#error This operating system is not supported by the Squirrel Module
#endif
/* ------------------------------------------------------------------------------------------------
* SOFTWARE INFORMATION
*/
#define SQMOD_NAME "Squirrel Module"
#define SQMOD_AUTHOR "Sandu Liviu Catalin (S.L.C)"
#define SQMOD_COPYRIGHT "Copyright (C) 2018 Sandu Liviu Catalin"
#define SQMOD_HOST_NAME "SqModHost"
#define SQMOD_VERSION 001
#define SQMOD_VERSION_STR "0.0.1"
#define SQMOD_VERSION_MAJOR 0
#define SQMOD_VERSION_MINOR 0
#define SQMOD_VERSION_PATCH 1
/* ------------------------------------------------------------------------------------------------
* VCMP SDK VERSION CHECK.
*/
#define SQMOD_SDK_MATCH(MJR, MNR) ((PLUGIN_API_MAJOR == (MJR)) && (PLUGIN_API_MINOR == (MNR)))
#define SQMOD_SDK_LEAST(MJR, MNR) ((PLUGIN_API_MAJOR >= (MJR)) && (PLUGIN_API_MINOR >= (MNR)))
#define SQMOD_SDK_PRIOR(MJR, MNR) ((PLUGIN_API_MAJOR < (MJR)) && (PLUGIN_API_MINOR < (MNR)))
/* ------------------------------------------------------------------------------------------------
* SQUIRREL FORWARD DECLARATIONS
*/
extern "C" {
typedef struct tagSQObject SQObject;
struct SQVM;
typedef struct SQVM* HSQUIRRELVM;
typedef SQObject HSQOBJECT;
} /*extern "C"*/
/* ------------------------------------------------------------------------------------------------
* SQRAT FORWARD DECLARATIONS
*/
namespace Sqrat {
class Array;
class Object;
class Table;
class Function;
struct LightObj;
class StackStrF;
} // Namespace:: Sqrat
/* ------------------------------------------------------------------------------------------------
* FUNDAMENTAL DATATYPES
*/
namespace SqMod {
/**< 8 bits integer types */
typedef char Int8, I8;
typedef unsigned char Uint8, U8;
/**< 16 bits integer types */
typedef short Int16, I16;
typedef unsigned short Uint16, U16;
/**< 32 bits integer types */
typedef int Int32, I32;
typedef unsigned int Uint32, U32;
/**< 64 bits integer types */
#if defined(_MSC_VER)
typedef __int64 Int64, I64;
typedef unsigned __int64 Uint64, U64;
#else
typedef long long Int64, I64;
typedef unsigned long long Uint64, U64;
#endif
/**< integer type */
#ifdef SQMOD_LONG
typedef Int64 Int, Integer;
typedef Uint64 Uint, Uinteger, UnisgnedInteger;
#else
typedef Int32 Int, Integer;
typedef Uint32 Uint, Uinteger, UnisgnedInteger;
#endif
/**< long integer type */
typedef long LongI;
typedef unsigned long Ulong;
/**< 32 bits float types */
typedef float Float32, Real32, F32;
/**< 64 bits float types */
typedef double Float64, Real64, F64;
/**< boolean type */
typedef Uint8 Boolean;
/**< character type */
typedef bool BoolT;
/**< character types */
typedef char CharT;
/**< user type */
typedef void * VoidP;
/**< size type */
typedef Uint32 SizeT;
/* ------------------------------------------------------------------------------------------------
* STRING TYPE
*/
typedef std::basic_string<SQChar> String;
typedef char * CStr;
typedef const char * CCStr;
typedef SQChar * SStr;
typedef const SQChar * CSStr;
/* ------------------------------------------------------------------------------------------------
* SHORT SQUIRREL TYPENAMES
*/
typedef SQUnsignedInteger32 SQUint32;
typedef SQUnsignedInteger SQUint;
typedef SQInteger SQInt;
// ------------------------------------------------------------------------------------------------
using namespace Sqrat;
/* ------------------------------------------------------------------------------------------------
* Squirrel compatible stl string.
*/
typedef std::basic_string< SQChar > String;
/* ------------------------------------------------------------------------------------------------
* FORWARD DECLARATIONS
*/
// ------------------------------------------------------------------------------------------------
class Core;
class Logger;
class Signal;
// ------------------------------------------------------------------------------------------------
class AreaManager;
struct AreaCell;
struct Area;
// ------------------------------------------------------------------------------------------------
class CmdManager;
class CmdListener;
// ------------------------------------------------------------------------------------------------
struct AABB;
struct Buffer;
struct Circle;
struct Color3;
struct Color4;
struct Quaternion;
struct Sphere;
struct Vector2;
struct Vector2i;
struct Vector3;
struct Vector4;
// ------------------------------------------------------------------------------------------------
class CBlip;
class CCheckpoint;
class CForcefield;
class CKeybind;
class CObject;
class CPickup;
class CPlayer;
class CSprite;
class CTextdraw;
class CVehicle;
// ------------------------------------------------------------------------------------------------
template < typename T > class LongInt;
typedef LongInt< Int64 > SLongInt;
typedef LongInt< Uint64 > ULongInt;
// ------------------------------------------------------------------------------------------------
class SqBuffer;
/* ------------------------------------------------------------------------------------------------
* FORWARD DECLARATIONS
*/
enum EventType
{
EVT_UNKNOWN = 0,
EVT_CUSTOMEVENT,
EVT_BLIPCREATED,
EVT_CHECKPOINTCREATED,
EVT_KEYBINDCREATED,
EVT_OBJECTCREATED,
EVT_PICKUPCREATED,
EVT_PLAYERCREATED,
EVT_VEHICLECREATED,
EVT_BLIPDESTROYED,
EVT_CHECKPOINTDESTROYED,
EVT_KEYBINDDESTROYED,
EVT_OBJECTDESTROYED,
EVT_PICKUPDESTROYED,
EVT_PLAYERDESTROYED,
EVT_VEHICLEDESTROYED,
EVT_BLIPCUSTOM,
EVT_CHECKPOINTCUSTOM,
EVT_KEYBINDCUSTOM,
EVT_OBJECTCUSTOM,
EVT_PICKUPCUSTOM,
EVT_PLAYERCUSTOM,
EVT_VEHICLECUSTOM,
EVT_SERVERSTARTUP,
EVT_SERVERSHUTDOWN,
EVT_SERVERFRAME,
EVT_INCOMINGCONNECTION,
EVT_PLAYERREQUESTCLASS,
EVT_PLAYERREQUESTSPAWN,
EVT_PLAYERSPAWN,
EVT_PLAYERWASTED,
EVT_PLAYERKILLED,
EVT_PLAYEREMBARKING,
EVT_PLAYEREMBARKED,
EVT_PLAYERDISEMBARK,
EVT_PLAYERRENAME,
EVT_PLAYERSTATE,
EVT_STATENONE,
EVT_STATENORMAL,
EVT_STATEAIM,
EVT_STATEDRIVER,
EVT_STATEPASSENGER,
EVT_STATEENTERDRIVER,
EVT_STATEENTERPASSENGER,
EVT_STATEEXIT,
EVT_STATEUNSPAWNED,
EVT_PLAYERACTION,
EVT_ACTIONNONE,
EVT_ACTIONNORMAL,
EVT_ACTIONAIMING,
EVT_ACTIONSHOOTING,
EVT_ACTIONJUMPING,
EVT_ACTIONLIEDOWN,
EVT_ACTIONGETTINGUP,
EVT_ACTIONJUMPVEHICLE,
EVT_ACTIONDRIVING,
EVT_ACTIONDYING,
EVT_ACTIONWASTED,
EVT_ACTIONEMBARKING,
EVT_ACTIONDISEMBARKING,
EVT_PLAYERBURNING,
EVT_PLAYERCROUCHING,
EVT_PLAYERGAMEKEYS,
EVT_PLAYERSTARTTYPING,
EVT_PLAYERSTOPTYPING,
EVT_PLAYERAWAY,
EVT_PLAYERMESSAGE,
EVT_PLAYERCOMMAND,
EVT_PLAYERPRIVATEMESSAGE,
EVT_PLAYERKEYPRESS,
EVT_PLAYERKEYRELEASE,
EVT_PLAYERSPECTATE,
EVT_PLAYERUNSPECTATE,
EVT_PLAYERCRASHREPORT,
EVT_PLAYERMODULELIST,
EVT_VEHICLEEXPLODE,
EVT_VEHICLERESPAWN,
EVT_OBJECTSHOT,
EVT_OBJECTTOUCHED,
EVT_OBJECTWORLD,
EVT_OBJECTALPHA,
EVT_OBJECTREPORT,
EVT_PICKUPCLAIMED,
EVT_PICKUPCOLLECTED,
EVT_PICKUPRESPAWN,
EVT_PICKUPWORLD,
EVT_PICKUPALPHA,
EVT_PICKUPAUTOMATIC,
EVT_PICKUPAUTOTIMER,
EVT_PICKUPOPTION,
EVT_CHECKPOINTENTERED,
EVT_CHECKPOINTEXITED,
EVT_CHECKPOINTWORLD,
EVT_CHECKPOINTRADIUS,
EVT_ENTITYPOOL,
EVT_CLIENTSCRIPTDATA,
EVT_PLAYERUPDATE,
EVT_VEHICLEUPDATE,
EVT_PLAYERHEALTH,
EVT_PLAYERARMOUR,
EVT_PLAYERWEAPON,
EVT_PLAYERHEADING,
EVT_PLAYERPOSITION,
EVT_PLAYEROPTION,
EVT_PLAYERADMIN,
EVT_PLAYERWORLD,
EVT_PLAYERTEAM,
EVT_PLAYERSKIN,
EVT_PLAYERMONEY,
EVT_PLAYERSCORE,
EVT_PLAYERWANTEDLEVEL,
EVT_PLAYERIMMUNITY,
EVT_PLAYERALPHA,
EVT_VEHICLECOLOR,
EVT_VEHICLEHEALTH,
EVT_VEHICLEPOSITION,
EVT_VEHICLEROTATION,
EVT_VEHICLEOPTION,
EVT_VEHICLEWORLD,
EVT_VEHICLEIMMUNITY,
EVT_VEHICLEPARTSTATUS,
EVT_VEHICLETYRESTATUS,
EVT_VEHICLEDAMAGEDATA,
EVT_VEHICLERADIO,
EVT_VEHICLEHANDLINGRULE,
EVT_SERVEROPTION,
EVT_SCRIPTRELOAD,
EVT_SCRIPTLOADED,
EVT_MAX
};
/* ------------------------------------------------------------------------------------------------
* Entity flags to control certain behaviors.
*/
enum EntityFlags
{
ENF_DEFAULT = (0),
ENF_OWNED = (1u << 1u),
ENF_LOCKED = (1u << 2u),
ENF_AREA_TRACK = (1u << 3u),
ENF_DIST_TRACK = (1u << 4u)
};
/* ------------------------------------------------------------------------------------------------
* Used to identify entity types.
*/
enum EntityType
{
ENT_UNKNOWN = 0,
ENT_BLIP,
ENT_CHECKPOINT,
ENT_KEYBIND,
ENT_OBJECT,
ENT_PICKUP,
ENT_PLAYER,
ENT_VEHICLE
};
} // Namespace:: SqMod
/* ------------------------------------------------------------------------------------------------
* FORMAT ATTRIBUTE
*/
#define SQMOD_FORMAT_ATTR(mode, index, first) __attribute__ ((format(mode, index, first)))
#ifdef _SQ64
#define PRINT_SZ_FMT "llu"
#define PRINT_INT_FMT "lld"
#define PRINT_UINT_FMT "llu"
#else
#define PRINT_SZ_FMT "u"
#define PRINT_INT_FMT "d"
#define PRINT_UINT_FMT "u"
#endif
/* ------------------------------------------------------------------------------------------------
* HELPERS
*/
#define SQMOD_CONCAT_(a,b) a##b
#define SQMOD_CONCAT(a,b) SQMOD_CONCAT_(a,b)
// ------------------------------------------------------------------------------------------------
#ifdef _WIN32
#define sqmod_stricmp(a,b) stricmp(a,b)
#define sqmod_strnicmp(a,b,n) strnicmp(a,b,n)
#else
#define sqmod_stricmp(a,b) strcasecmp(a,b)
#define sqmod_strnicmp(a,b,n) strncasecmp(a,b,n)
#endif
/* ------------------------------------------------------------------------------------------------
* OS SPECIFFIC OPTIONS
*/
#if defined(SQMOD_OS_WINDOWS)
#define SQMOD_DIRSEP_CHAR '\\'
#define SQMOD_DIRSEP_STR "\\"
#else
#define SQMOD_DIRSEP_CHAR '/'
#define SQMOD_DIRSEP_STR "/"
#endif
/* ------------------------------------------------------------------------------------------------
* SYMBOL EXPORTING
*/
#if defined(_MSC_VER)
#define SQMOD_EXPORT __declspec(dllexport)
#define SQMOD_IMPORT __declspec(dllimport)
#elif defined(__GNUC__)
#define SQMOD_EXPORT __declspec(dllexport)
#define SQMOD_IMPORT __declspec(dllimport)
#endif
#if defined(__cplusplus)
#define SQMOD_EXTERN_C extern "C"
#else
#define SQMOD_EXTERN_C /* */
#endif
#if defined(_MSC_VER)
#define SQMOD_API_EXPORT extern "C" __declspec(dllexport)
#elif defined(__GNUC__)
#define SQMOD_API_EXPORT extern "C"
#else
#define SQMOD_API_EXPORT extern "C"
#endif
/* ------------------------------------------------------------------------------------------------
* CALLING CONVENTIONS
*/
#if defined(_MSC_VER)
#define SQMOD_STDCALL __stdcall
#define SQMOD_CDECL __cdecl
#define SQMOD_FASTCALL __fastcall
#elif defined(__GNUC__)
#define SQMOD_STDCALL __attribute__((stdcall))
#define SQMOD_CDECL /* */
#define SQMOD_FASTCALL __attribute__((fastcall))
#endif
/* ------------------------------------------------------------------------------------------------
* FUNCTION INLINING
*/
#if defined(_MSC_VER)
#define SQMOD_FORCEINLINE __forceinline
#elif defined(__GNUC__)
#define SQMOD_FORCEINLINE inline
#endif
/* ------------------------------------------------------------------------------------------------
* ATTRIBUTES
*/
#if defined(__GNUC__) && __GNUC__ >= 7
#define SQ_FALL_THROUGH __attribute__ ((fallthrough))
#else
#define SQ_FALL_THROUGH ((void)0)
#endif // __GNUC__ >= 7
/* ------------------------------------------------------------------------------------------------
* LOGGING LOCATION
*/
#define SQMOD_TRUESTRINGIZE(x) #x
#define SQMOD_STRINGIZEWRAP(x) SQMOD_TRUESTRINGIZE(x)
#if defined(_DEBUG) || defined(SQMOD_EXCEPTLOC)
#define SQMOD_MSGLOC(m) (m " =>[" __FILE__ ":" SQMOD_STRINGIZEWRAP(__LINE__) "] ")
#else
#define SQMOD_MSGLOC(m) (m)
#endif // _DEBUG
/* ------------------------------------------------------------------------------------------------
* EXCEPTION THROWING
*/
#if defined(_DEBUG) || defined(SQMOD_EXCEPTLOC)
#define STHROW(e, m, ...) throw e(m " =>[" __FILE__ ":" SQMOD_STRINGIZEWRAP(__LINE__) "] ", ##__VA_ARGS__)
#define STHROWF(m, ...) SqThrowF(m " =>[" __FILE__ ":" SQMOD_STRINGIZEWRAP(__LINE__) "] ", ##__VA_ARGS__)
#define STHROWLASTF(m, ...) SqThrowLastF(m " =>[" __FILE__ ":" SQMOD_STRINGIZEWRAP(__LINE__) "] ", ##__VA_ARGS__)
#else
#define STHROW(e, m, ...) throw e(m, ##__VA_ARGS__)
#define STHROWF(m, ...) SqThrowF(m, ##__VA_ARGS__)
#define STHROWLASTF(m, ...) SqThrowLastF(m, ##__VA_ARGS__)
#endif // _DEBUG
/* ------------------------------------------------------------------------------------------------
* EVENT TRACEBACK
*/
#if defined(_DEBUG) || defined(SQMOD_ENABLE_SV_EV_TRACEBACK)
#define SQMOD_SV_EV_TRACEBACK(m, ...) LogDbg(m, ##__VA_ARGS__);
#else
#define SQMOD_SV_EV_TRACEBACK(m, ...) /*ignored...*/
#endif // _DEBUG
#if defined(_DEBUG) || defined(SQMOD_ENABLE_CO_EV_TRACEBACK)
#define SQMOD_CO_EV_TRACEBACK(m, ...) LogSDbg(m, ##__VA_ARGS__);
#else
#define SQMOD_CO_EV_TRACEBACK(m, ...) /*ignored...*/
#endif // _DEBUG
/* ------------------------------------------------------------------------------------------------
* VARIOUS DEFINES
*/
#define SQMOD_DECL_UNUSED_VAR(t, n, v) t n = v; (void)(n)
#define SQMOD_UNUSED_VAR(n) (void)(n)
#define VALID_ENTITY(e) ((e) >= 0)
#define INVALID_ENTITY(e) ((e) < 0)
#define VALID_ENTITYEX(e, m) (((e) >= 0) && ((e) < (m)))
#define INVALID_ENTITYEX(e, m) (((e) < 0) || ((e) >= (m)))
#define VALID_ENTITYGET(e) (((e) >= 0) ? (e) : -1)
#define VALID_ENTITYGETEX(e, m) (((e) >= 0) && ((e) < (m)) ? (e) : -1)
#define VALID_VEHCOL(e) (((e) >= 0) && ((e) <= 94))
#define INVALID_VEHCOL(e) (((e) < 0) && ((e) > 94))
/* ------------------------------------------------------------------------------------------------
* COLOR PACKING
*/
#define SQMOD_PACK_RGB(r, g, b) static_cast< Uint32 >((r) << 16u | (g) << 8u | (b))
#define SQMOD_PACK_RGBA(r, g, b, a) static_cast< Uint32 >((r) << 24u | (g) << 16u | (b) << 8u | (a))
#define SQMOD_PACK_ARGB(a, r, g, b) static_cast< Uint32 >((a) << 24u | (r) << 16u | (g) << 8u | (b))
#define SQMOD_PACK_RGB_TO_RGBA(r, g, b) static_cast< Uint32 >((r) << 24u | (g) << 16u | (b) << 8u | 0u)
#define SQMOD_PACK_RGB_TO_ARGB(r, g, b) static_cast< Uint32 >(0u << 24u | (r) << 16u | (g) << 8u | (b))
/* ------------------------------------------------------------------------------------------------
* GENERAL RESPONSES
*/
#define SQMOD_SUCCESS 1
#define SQMOD_FAILURE 0
#define SQMOD_UNKNOWN (-1)
#define SQMOD_TRUE 1
#define SQMOD_FALSE 0
#define SQMOD_NULL NULL
#define SQMOD_BLANK 0
/* ------------------------------------------------------------------------------------------------
* GENERAL SERVER LIMITS
*/
#define SQMOD_NAMELENGTH 64
#define SQMOD_NAMELENGTH_T 65
#define SQMOD_UIDLENGTH 40
#define SQMOD_UIDLENGTH_T 41
#define SQMOD_IPADDRESS 16
#define SQMOD_IPADDRESS_T 17
#define SQMOD_SVNAMELENGTH 128
#define SQMOD_PASSWDLENGTH 128
#define SQMOD_GMNAMELENGTH 96
#define SQMOD_MSGLENGTH 512
#define SQMOD_CMDLENGTH 512
/* ------------------------------------------------------------------------------------------------
* INITIAL ENTITY POOLS
*/
#define SQMOD_BLIP_POOL 100
#define SQMOD_CHECKPOINT_POOL 2000
#define SQMOD_KEYBIND_POOL 256
#define SQMOD_OBJECT_POOL 3000
#define SQMOD_PICKUP_POOL 2000
#define SQMOD_PLAYER_POOL 100
#define SQMOD_VEHICLE_POOL 1000
/* ------------------------------------------------------------------------------------------------
* ENTITY CREATE/DESTROY
*/
#define SQMOD_CREATE_DEFAULT 0
#define SQMOD_CREATE_MANUAL (-3)
#define SQMOD_CREATE_POOL (-4)
#define SQMOD_CREATE_AUTOMATIC (-5)
#define SQMOD_CREATE_OVERWRITE (-6)
#define SQMOD_CREATE_IMPORT (-7)
#define SQMOD_DESTROY_DEFAULT 0
#define SQMOD_DESTROY_MANUAL (-3)
#define SQMOD_DESTROY_POOL (-4)
#define SQMOD_DESTROY_AUTOMATIC (-5)
#define SQMOD_DESTROY_OVERWRITE (-6)
#define SQMOD_DESTROY_CLEANUP (-7)
/* ------------------------------------------------------------------------------------------------
* MODEL ID LIMITS
*/
#define SQMOD_WEAPONID_MAX 71
#define SQMOD_WEAPONID_CAP 256
#define SQMOD_VEHICLEID_MAX 237
#define SQMOD_VEHICLEID_CAP 512
#define SQMOD_SKINID_MAX 160
#define SQMOD_SKINID_CAP 256
#define SQMOD_MODELID_MAX 640
#define SQMOD_MODELID_CAP 2048
/* ------------------------------------------------------------------------------------------------
* SCRIPT OPTIONS
*/
/* ------------------------------------------------------------------------------------------------
* PLUG-IN OPTIONS
*/
#define SQMOD_STACK_SIZE 2048
#define SQMOD_MAX_TASKS 1024
#define SQMOD_MAX_ROUTINES 1024
#define SQMOD_MAX_CMD_ARGS 12
#define SQMOD_PLAYER_MSG_PREFIXES 16
#define SQMOD_PLAYER_TMP_BUFFER 128
/* ------------------------------------------------------------------------------------------------
* PLAYER ACTION IDENTIFIERS
*/
#define SQMOD_PLAYER_ACTION_NONE 0
#define SQMOD_PLAYER_ACTION_NORMAL 1
#define SQMOD_PLAYER_ACTION_AIMING 12
#define SQMOD_PLAYER_ACTION_SHOOTING 16
#define SQMOD_PLAYER_ACTION_JUMPING 41
#define SQMOD_PLAYER_ACTION_LYING_ON_GROUND 42
#define SQMOD_PLAYER_ACTION_GETTING_UP 43
#define SQMOD_PLAYER_ACTION_JUMPING_FROM_VEHICLE 44
#define SQMOD_PLAYER_ACTION_DRIVING 50
#define SQMOD_PLAYER_ACTION_DYING 54
#define SQMOD_PLAYER_ACTION_WASTED 55
#define SQMOD_PLAYER_ACTION_ENTERING_VEHICLE 58
#define SQMOD_PLAYER_ACTION_EXITING_VEHICLE 60
#define SQMOD_PLAYER_ACTION_MAX 60
/* ------------------------------------------------------------------------------------------------
* WEATHER IDENTIFIERS
*/
#define SQMOD_WEATHER_MOSTLYCLEAR 0
#define SQMOD_WEATHER_OVERCAST 1
#define SQMOD_WEATHER_THUNDERSTORM 2
#define SQMOD_WEATHER_STORM 2
#define SQMOD_WEATHER_STORMY 2
#define SQMOD_WEATHER_FOGGY 3
#define SQMOD_WEATHER_FOG 3
#define SQMOD_WEATHER_CLEAR 4
#define SQMOD_WEATHER_SUNNY 4
#define SQMOD_WEATHER_RAIN 5
#define SQMOD_WEATHER_RAINY 5
#define SQMOD_WEATHER_DARKCLOUDY 6
#define SQMOD_WEATHER_LIGHTCLOUDY 7
#define SQMOD_WEATHER_OVERCASTCLOUDY 8
#define SQMOD_WEATHER_BLACKCLOUDS 9
#define SQMOD_WEATHER_MAX 9
/* ------------------------------------------------------------------------------------------------
* WEAPON IDENTIFIERS
*/
#define SQMOD_WEAPON_UNARMED 0
#define SQMOD_WEAPON_BRASSKNUCKLES 1
#define SQMOD_WEAPON_SCREWDRIVER 2
#define SQMOD_WEAPON_GOLFCLUB 3
#define SQMOD_WEAPON_NIGHTSTICK 4
#define SQMOD_WEAPON_KNIFE 5
#define SQMOD_WEAPON_BASEBALLBAT 6
#define SQMOD_WEAPON_HAMMER 7
#define SQMOD_WEAPON_MEATCLEAVER 8
#define SQMOD_WEAPON_MACHETE 9
#define SQMOD_WEAPON_KATANA 10
#define SQMOD_WEAPON_CHAINSAW 11
#define SQMOD_WEAPON_GRENADE 12
#define SQMOD_WEAPON_REMOTE 13
#define SQMOD_WEAPON_TEARGAS 14
#define SQMOD_WEAPON_MOLOTOV 15
#define SQMOD_WEAPON_ROCKET 16
#define SQMOD_WEAPON_COLT45 17
#define SQMOD_WEAPON_PYTHON 18
#define SQMOD_WEAPON_SHOTGUN 19
#define SQMOD_WEAPON_SPAS12 20
#define SQMOD_WEAPON_STUBBY 21
#define SQMOD_WEAPON_TEC9 22
#define SQMOD_WEAPON_UZI 23
#define SQMOD_WEAPON_INGRAM 24
#define SQMOD_WEAPON_MP5 25
#define SQMOD_WEAPON_M4 26
#define SQMOD_WEAPON_RUGER 27
#define SQMOD_WEAPON_SNIPER 28
#define SQMOD_WEAPON_LASERSCOPE 29
#define SQMOD_WEAPON_ROCKETLAUNCHER 30
#define SQMOD_WEAPON_FLAMETHROWER 31
#define SQMOD_WEAPON_M60 32
#define SQMOD_WEAPON_MINIGUN 33
#define SQMOD_WEAPON_BOMB 34
#define SQMOD_WEAPON_HELICANNON 35
#define SQMOD_WEAPON_CAMERA 36
#define SQMOD_WEAPON_VEHICLE 39
#define SQMOD_WEAPON_HELIBLADES1 40
#define SQMOD_WEAPON_EXPLOSION1 41
#define SQMOD_WEAPON_DRIVEBY 42
#define SQMOD_WEAPON_DROWNED 43
#define SQMOD_WEAPON_FALL 44
#define SQMOD_WEAPON_EXPLOSION2 51
#define SQMOD_WEAPON_HELIBLADES2 60
#define SQMOD_WEAPON_SUICIDE 70
#define SQMOD_WEAPON_MAX 70
/* ------------------------------------------------------------------------------------------------
* VEHICLE IDENTIFIERS
*/
#define SQMOD_VEHICLE_LANDSTALKER 130
#define SQMOD_VEHICLE_IDAHO 131
#define SQMOD_VEHICLE_STINGER 132
#define SQMOD_VEHICLE_LINERUNNER 133
#define SQMOD_VEHICLE_PERENNIAL 134
#define SQMOD_VEHICLE_SENTINEL 135
#define SQMOD_VEHICLE_RIO 136
#define SQMOD_VEHICLE_FIRETRUCK 137
#define SQMOD_VEHICLE_TRASHMASTER 138
#define SQMOD_VEHICLE_STRETCH 139
#define SQMOD_VEHICLE_MANANA 140
#define SQMOD_VEHICLE_INFERNUS 141
#define SQMOD_VEHICLE_VOODOO 142
#define SQMOD_VEHICLE_PONY 143
#define SQMOD_VEHICLE_MULE 144
#define SQMOD_VEHICLE_CHEETAH 145
#define SQMOD_VEHICLE_AMBULANCE 146
#define SQMOD_VEHICLE_FBIWASHINGTON 147
#define SQMOD_VEHICLE_MOONBEAM 148
#define SQMOD_VEHICLE_ESPERANTO 149
#define SQMOD_VEHICLE_TAXI 150
#define SQMOD_VEHICLE_WASHINGTON 151
#define SQMOD_VEHICLE_BOBCAT 152
#define SQMOD_VEHICLE_MRWHOOPEE 153
#define SQMOD_VEHICLE_BFINJECTION 154
#define SQMOD_VEHICLE_HUNTER 155
#define SQMOD_VEHICLE_POLICE 156
#define SQMOD_VEHICLE_ENFORCER 157
#define SQMOD_VEHICLE_SECURICAR 158
#define SQMOD_VEHICLE_BANSHEE 159
#define SQMOD_VEHICLE_PREDATOR 160
#define SQMOD_VEHICLE_BUS 161
#define SQMOD_VEHICLE_RHINO 162
#define SQMOD_VEHICLE_BARRACKSOL 163
#define SQMOD_VEHICLE_BARRACKS 163
#define SQMOD_VEHICLE_CUBANHERMES 164
#define SQMOD_VEHICLE_HELICOPTER 165
#define SQMOD_VEHICLE_ANGEL 166
#define SQMOD_VEHICLE_COACH 167
#define SQMOD_VEHICLE_CABBIE 168
#define SQMOD_VEHICLE_STALLION 169
#define SQMOD_VEHICLE_RUMPO 170
#define SQMOD_VEHICLE_RCBANDIT 171
#define SQMOD_VEHICLE_HEARSE 172
#define SQMOD_VEHICLE_PACKER 173
#define SQMOD_VEHICLE_SENTINELXS 174
#define SQMOD_VEHICLE_ADMIRAL 175
#define SQMOD_VEHICLE_SQUALO 176
#define SQMOD_VEHICLE_SEASPARROW 177
#define SQMOD_VEHICLE_PIZZABOY 178
#define SQMOD_VEHICLE_GANGBURRITO 179
#define SQMOD_VEHICLE_AIRTRAIN 180
#define SQMOD_VEHICLE_DEADDODO 181
#define SQMOD_VEHICLE_SPEEDER 182
#define SQMOD_VEHICLE_REEFER 183
#define SQMOD_VEHICLE_TROPIC 184
#define SQMOD_VEHICLE_FLATBED 185
#define SQMOD_VEHICLE_YANKEE 186
#define SQMOD_VEHICLE_CADDY 187
#define SQMOD_VEHICLE_ZEBRA 188
#define SQMOD_VEHICLE_ZEBRACAB 188
#define SQMOD_VEHICLE_TOPFUN 189
#define SQMOD_VEHICLE_SKIMMER 190
#define SQMOD_VEHICLE_PCJ600 191
#define SQMOD_VEHICLE_PCJ 191
#define SQMOD_VEHICLE_FAGGIO 192
#define SQMOD_VEHICLE_FREEWAY 193
#define SQMOD_VEHICLE_RCBARON 194
#define SQMOD_VEHICLE_RCRAIDER 195
#define SQMOD_VEHICLE_GLENDALE 196
#define SQMOD_VEHICLE_OCEANIC 197
#define SQMOD_VEHICLE_SANCHEZ 198
#define SQMOD_VEHICLE_SPARROW 199
#define SQMOD_VEHICLE_PATRIOT 200
#define SQMOD_VEHICLE_LOVEFIST 201
#define SQMOD_VEHICLE_COASTGUARD 202
#define SQMOD_VEHICLE_DINGHY 203
#define SQMOD_VEHICLE_HERMES 204
#define SQMOD_VEHICLE_SABRE 205
#define SQMOD_VEHICLE_SABRETURBO 206
#define SQMOD_VEHICLE_PHOENIX 207
#define SQMOD_VEHICLE_WALTON 208
#define SQMOD_VEHICLE_REGINA 209
#define SQMOD_VEHICLE_COMET 210
#define SQMOD_VEHICLE_DELUXO 211
#define SQMOD_VEHICLE_BURRITO 212
#define SQMOD_VEHICLE_SPANDEX 213
#define SQMOD_VEHICLE_SPANDEXPRESS 213
#define SQMOD_VEHICLE_MARQUIS 214
#define SQMOD_VEHICLE_BAGGAGE 215
#define SQMOD_VEHICLE_BAGGAGEHANDLER 215
#define SQMOD_VEHICLE_KAUFMAN 216
#define SQMOD_VEHICLE_KAUFMANCAB 216
#define SQMOD_VEHICLE_MAVERICK 217
#define SQMOD_VEHICLE_VCNMAVERICK 218
#define SQMOD_VEHICLE_RANCHER 219
#define SQMOD_VEHICLE_FBIRANCHER 220
#define SQMOD_VEHICLE_VIRGO 221
#define SQMOD_VEHICLE_GREENWOOD 222
#define SQMOD_VEHICLE_CUBANJETMAX 223
#define SQMOD_VEHICLE_HOTRING1 224
#define SQMOD_VEHICLE_HOTRINGRACER1 224
#define SQMOD_VEHICLE_SANDKING 225
#define SQMOD_VEHICLE_BLISTA 226
#define SQMOD_VEHICLE_BLISTAC 226
#define SQMOD_VEHICLE_BLISTACOMPACT 226
#define SQMOD_VEHICLE_COMPACT 226
#define SQMOD_VEHICLE_POLICEMAV 227
#define SQMOD_VEHICLE_POLICEMAVERICK 227
#define SQMOD_VEHICLE_BOXVILLE 228
#define SQMOD_VEHICLE_BENSON 229
#define SQMOD_VEHICLE_MESA 230
#define SQMOD_VEHICLE_MESAGRANDE 230
#define SQMOD_VEHICLE_RCGOBLIN 231
#define SQMOD_VEHICLE_HOTRING2 232
#define SQMOD_VEHICLE_HOTRINGRACER2 232
#define SQMOD_VEHICLE_HOTRING3 233
#define SQMOD_VEHICLE_HOTRINGRACER3 233
#define SQMOD_VEHICLE_BLOODRING1 234
#define SQMOD_VEHICLE_BLOODRINGBANGER1 234
#define SQMOD_VEHICLE_BLOODRING2 235
#define SQMOD_VEHICLE_BLOODRINGBANGER2 235
#define SQMOD_VEHICLE_VICECHEE 236
#define SQMOD_VEHICLE_POLICECHEETAH 236
#define SQMOD_VEHICLE_FBICHEETAH 236
#define SQMOD_VEHICLE_CHEETAH2 236
#define SQMOD_VEHICLE_MAX 236
/* ------------------------------------------------------------------------------------------------
* SKIN IDENTIFIERS
*/
#define SQMOD_SKIN_TOMMY_VERCETTI 0
#define SQMOD_SKIN_COP 1
#define SQMOD_SKIN_SWAT 2
#define SQMOD_SKIN_FBI 3
#define SQMOD_SKIN_ARMY 4
#define SQMOD_SKIN_PARAMEDIC 5
#define SQMOD_SKIN_FIREMAN 6
#define SQMOD_SKIN_GOLF_GUY_A 7
#define SQMOD_SKIN_BUM_LADY_A 9
#define SQMOD_SKIN_BUM_LADY_B 10
#define SQMOD_SKIN_PUNK_A 11
#define SQMOD_SKIN_LAWYER 12
#define SQMOD_SKIN_SPANISH_LADY_A 13
#define SQMOD_SKIN_SPANISH_LADY_B 14
#define SQMOD_SKIN_COOL_GUY_A 15
#define SQMOD_SKIN_ARABIC_GUY 16
#define SQMOD_SKIN_BEACH_LADY_A 17
#define SQMOD_SKIN_BEACH_LADY_B 18
#define SQMOD_SKIN_BEACH_GUY_A 19
#define SQMOD_SKIN_BEACH_GUY_B 20
#define SQMOD_SKIN_OFFICE_LADY_A 21
#define SQMOD_SKIN_WAITRESS_A 22
#define SQMOD_SKIN_FOOD_LADY 23
#define SQMOD_SKIN_PROSTITUTE_A 24
#define SQMOD_SKIN_BUM_LADY_C 25
#define SQMOD_SKIN_BUM_GUY_A 26
#define SQMOD_SKIN_GARBAGEMAN_A 27
#define SQMOD_SKIN_TAXI_DRIVER_A 28
#define SQMOD_SKIN_HATIAN_A 29
#define SQMOD_SKIN_CRIMINAL_A 30
#define SQMOD_SKIN_HOOD_LADY 31
#define SQMOD_SKIN_GRANNY_A 32
#define SQMOD_SKIN_BUSINESS_MAN_A 33
#define SQMOD_SKIN_CHURCH_GUY 34
#define SQMOD_SKIN_CLUB_LADY 35
#define SQMOD_SKIN_CHURCH_LADY 36
#define SQMOD_SKIN_PIMP 37
#define SQMOD_SKIN_BEACH_LADY_C 38
#define SQMOD_SKIN_BEACH_GUY_C 39
#define SQMOD_SKIN_BEACH_LADY_D 40
#define SQMOD_SKIN_BEACH_GUY_D 41
#define SQMOD_SKIN_BUSINESS_MAN_B 42
#define SQMOD_SKIN_PROSTITUTE_B 43
#define SQMOD_SKIN_BUM_LADY_D 44
#define SQMOD_SKIN_BUM_GUY_B 45
#define SQMOD_SKIN_HATIAN_B 46
#define SQMOD_SKIN_CONSTRUCTION_WORKER_A 47
#define SQMOD_SKIN_PUNK_B 48
#define SQMOD_SKIN_PROSTITUTE_C 49
#define SQMOD_SKIN_GRANNY_B 50
#define SQMOD_SKIN_PUNK_C 51
#define SQMOD_SKIN_BUSINESS_MAN_C 52
#define SQMOD_SKIN_SPANISH_LADY_C 53
#define SQMOD_SKIN_SPANISH_LADY_D 54
#define SQMOD_SKIN_COOL_GUY_B 55
#define SQMOD_SKIN_BUSINESS_MAN_D 56
#define SQMOD_SKIN_BEACH_LADY_E 57
#define SQMOD_SKIN_BEACH_GUY_E 58
#define SQMOD_SKIN_BEACH_LADY_F 59
#define SQMOD_SKIN_BEACH_GUY_F 60
#define SQMOD_SKIN_CONSTRUCTION_WORKER_B 61
#define SQMOD_SKIN_GOLF_GUY_B 62
#define SQMOD_SKIN_GOLF_LADY 63
#define SQMOD_SKIN_GOLF_GUY_C 64
#define SQMOD_SKIN_BEACH_LADY_G 65
#define SQMOD_SKIN_BEACH_GUY_G 66
#define SQMOD_SKIN_OFFICE_LADY_B 67
#define SQMOD_SKIN_BUSINESS_MAN_E 68
#define SQMOD_SKIN_BUSINESS_MAN_F 69
#define SQMOD_SKIN_PROSTITUTE_D 70
#define SQMOD_SKIN_BUM_LADY_E 71
#define SQMOD_SKIN_BUM_GUY_C 72
#define SQMOD_SKIN_SPANISH_GUY 73
#define SQMOD_SKIN_TAXI_DRIVER_B 74
#define SQMOD_SKIN_GYM_LADY 75
#define SQMOD_SKIN_GYM_GUY 76
#define SQMOD_SKIN_SKATE_LADY 77
#define SQMOD_SKIN_SKATE_GUY 78
#define SQMOD_SKIN_SHOPPER_A 79
#define SQMOD_SKIN_SHOPPER_B 80
#define SQMOD_SKIN_TOURIST_A 81
#define SQMOD_SKIN_TOURIST_B 82
#define SQMOD_SKIN_CUBAN_A 83
#define SQMOD_SKIN_CUBAN_B 84
#define SQMOD_SKIN_HATIAN_C 85
#define SQMOD_SKIN_HATIAN_D 86
#define SQMOD_SKIN_SHARK_A 87
#define SQMOD_SKIN_SHARK_B 88
#define SQMOD_SKIN_DIAZ_GUY_A 89
#define SQMOD_SKIN_DIAZ_GUY_B 90
#define SQMOD_SKIN_DBP_SECURITY_A 91
#define SQMOD_SKIN_DBP_SECURITY_B 92
#define SQMOD_SKIN_BIKER_A 93
#define SQMOD_SKIN_BIKER_B 94
#define SQMOD_SKIN_VERCETTI_GUY_A 95
#define SQMOD_SKIN_VERCETTI_GUY_B 96
#define SQMOD_SKIN_UNDERCOVER_COP_A 97
#define SQMOD_SKIN_UNDERCOVER_COP_B 98
#define SQMOD_SKIN_UNDERCOVER_COP_C 99
#define SQMOD_SKIN_UNDERCOVER_COP_D 100
#define SQMOD_SKIN_UNDERCOVER_COP_E 101
#define SQMOD_SKIN_UNDERCOVER_COP_F 102
#define SQMOD_SKIN_RICH_GUY 103
#define SQMOD_SKIN_COOL_GUY_C 104
#define SQMOD_SKIN_PROSTITUTE_E 105
#define SQMOD_SKIN_PROSTITUTE_F 106
#define SQMOD_SKIN_LOVE_FIST_A 107
#define SQMOD_SKIN_KEN_ROSENBURG 108
#define SQMOD_SKIN_CANDY_SUXX 109
#define SQMOD_SKIN_HILARY 110
#define SQMOD_SKIN_LOVE_FIST_B 111
#define SQMOD_SKIN_PHIL 112
#define SQMOD_SKIN_ROCKSTAR_GUY 113
#define SQMOD_SKIN_SONNY 114
#define SQMOD_SKIN_LANCE_A 115
#define SQMOD_SKIN_MERCADES_A 116
#define SQMOD_SKIN_LOVE_FIST_C 117
#define SQMOD_SKIN_ALEX_SRUB 118
#define SQMOD_SKIN_LANCE_COP 119
#define SQMOD_SKIN_LANCE_B 120
#define SQMOD_SKIN_CORTEZ 121
#define SQMOD_SKIN_LOVE_FIST_D 122
#define SQMOD_SKIN_COLUMBIAN_GUY_A 123
#define SQMOD_SKIN_HILARY_ROBBER 124
#define SQMOD_SKIN_MERCADES_B 125
#define SQMOD_SKIN_CAM 126
#define SQMOD_SKIN_CAM_ROBBER 127
#define SQMOD_SKIN_PHIL_ONE_ARM 128
#define SQMOD_SKIN_PHIL_ROBBER 129
#define SQMOD_SKIN_COOL_GUY_D 130
#define SQMOD_SKIN_PIZZAMAN 131
#define SQMOD_SKIN_TAXI_DRIVER_C 132
#define SQMOD_SKIN_TAXI_DRIVER_D 133
#define SQMOD_SKIN_SAILOR_A 134
#define SQMOD_SKIN_SAILOR_B 135
#define SQMOD_SKIN_SAILOR_C 136
#define SQMOD_SKIN_CHEF 137
#define SQMOD_SKIN_CRIMINAL_B 138
#define SQMOD_SKIN_FRENCH_GUY 139
#define SQMOD_SKIN_GARBAGEMAN_B 140
#define SQMOD_SKIN_HATIAN_E 141
#define SQMOD_SKIN_WAITRESS_B 142
#define SQMOD_SKIN_SONNY_GUY_A 143
#define SQMOD_SKIN_SONNY_GUY_B 144
#define SQMOD_SKIN_SONNY_GUY_C 145
#define SQMOD_SKIN_COLUMBIAN_GUY_B 146
#define SQMOD_SKIN_THUG_A 147
#define SQMOD_SKIN_BEACH_GUY_H 148
#define SQMOD_SKIN_GARBAGEMAN_C 149
#define SQMOD_SKIN_GARBAGEMAN_D 150
#define SQMOD_SKIN_GARBAGEMAN_E 151
#define SQMOD_SKIN_TRANNY 152
#define SQMOD_SKIN_THUG_B 153
#define SQMOD_SKIN_SPANDEX_GUY_A 154
#define SQMOD_SKIN_SPANDEX_GUY_B 155
#define SQMOD_SKIN_STRIPPER_A 156
#define SQMOD_SKIN_STRIPPER_B 157
#define SQMOD_SKIN_STRIPPER_C 158
#define SQMOD_SKIN_STORE_CLERK 159
#define SQMOD_SKIN_MAX 159
/* ------------------------------------------------------------------------------------------------
* KEYBOARD CODES
*/
#define SQMOD_KEYCODE_ABNT_C1 0xC1
#define SQMOD_KEYCODE_ABNT_C2 0xC2
#define SQMOD_KEYCODE_ADD 0x6B
#define SQMOD_KEYCODE_ATTN 0xF6
#define SQMOD_KEYCODE_BACK 0x08
#define SQMOD_KEYCODE_CANCEL 0x03
#define SQMOD_KEYCODE_CLEAR 0x0C
#define SQMOD_KEYCODE_CRSEL 0xF7
#define SQMOD_KEYCODE_DECIMAL 0x6E
#define SQMOD_KEYCODE_DIVIDE 0x6F
#define SQMOD_KEYCODE_EREOF 0xF9
#define SQMOD_KEYCODE_ESCAPE 0x1B
#define SQMOD_KEYCODE_EXECUTE 0x2B
#define SQMOD_KEYCODE_EXSEL 0xF8
#define SQMOD_KEYCODE_ICO_CLEAR 0xE6
#define SQMOD_KEYCODE_ICO_HELP 0xE3
#define SQMOD_KEYCODE_KEY_0 0x30
#define SQMOD_KEYCODE_KEY_1 0x31
#define SQMOD_KEYCODE_KEY_2 0x32
#define SQMOD_KEYCODE_KEY_3 0x33
#define SQMOD_KEYCODE_KEY_4 0x34
#define SQMOD_KEYCODE_KEY_5 0x35
#define SQMOD_KEYCODE_KEY_6 0x36
#define SQMOD_KEYCODE_KEY_7 0x37
#define SQMOD_KEYCODE_KEY_8 0x38
#define SQMOD_KEYCODE_KEY_9 0x39
#define SQMOD_KEYCODE_KEY_A 0x41
#define SQMOD_KEYCODE_KEY_B 0x42
#define SQMOD_KEYCODE_KEY_C 0x43
#define SQMOD_KEYCODE_KEY_D 0x44
#define SQMOD_KEYCODE_KEY_E 0x45
#define SQMOD_KEYCODE_KEY_F 0x46
#define SQMOD_KEYCODE_KEY_G 0x47
#define SQMOD_KEYCODE_KEY_H 0x48
#define SQMOD_KEYCODE_KEY_I 0x49
#define SQMOD_KEYCODE_KEY_J 0x4A
#define SQMOD_KEYCODE_KEY_K 0x4B
#define SQMOD_KEYCODE_KEY_L 0x4C
#define SQMOD_KEYCODE_KEY_M 0x4D
#define SQMOD_KEYCODE_KEY_N 0x4E
#define SQMOD_KEYCODE_KEY_O 0x4F
#define SQMOD_KEYCODE_KEY_P 0x50
#define SQMOD_KEYCODE_KEY_Q 0x51
#define SQMOD_KEYCODE_KEY_R 0x52
#define SQMOD_KEYCODE_KEY_S 0x53
#define SQMOD_KEYCODE_KEY_T 0x54
#define SQMOD_KEYCODE_KEY_U 0x55
#define SQMOD_KEYCODE_KEY_V 0x56
#define SQMOD_KEYCODE_KEY_W 0x57
#define SQMOD_KEYCODE_KEY_X 0x58
#define SQMOD_KEYCODE_KEY_Y 0x59
#define SQMOD_KEYCODE_KEY_Z 0x5A
#define SQMOD_KEYCODE_MULTIPLY 0x6A
#define SQMOD_KEYCODE_NONAME 0xFC
#define SQMOD_KEYCODE_NUMPAD0 0x60
#define SQMOD_KEYCODE_NUMPAD1 0x61
#define SQMOD_KEYCODE_NUMPAD2 0x62
#define SQMOD_KEYCODE_NUMPAD3 0x63
#define SQMOD_KEYCODE_NUMPAD4 0x64
#define SQMOD_KEYCODE_NUMPAD5 0x65
#define SQMOD_KEYCODE_NUMPAD6 0x66
#define SQMOD_KEYCODE_NUMPAD7 0x67
#define SQMOD_KEYCODE_NUMPAD8 0x68
#define SQMOD_KEYCODE_NUMPAD9 0x69
#define SQMOD_KEYCODE_OEM_1 0xBA
#define SQMOD_KEYCODE_OEM_102 0xE2
#define SQMOD_KEYCODE_OEM_2 0xBF
#define SQMOD_KEYCODE_OEM_3 0xC0
#define SQMOD_KEYCODE_OEM_4 0xDB
#define SQMOD_KEYCODE_OEM_5 0xDC
#define SQMOD_KEYCODE_OEM_6 0xDD
#define SQMOD_KEYCODE_OEM_7 0xDE
#define SQMOD_KEYCODE_OEM_8 0xDF
#define SQMOD_KEYCODE_OEM_ATTN 0xF0
#define SQMOD_KEYCODE_OEM_AUTO 0xF3
#define SQMOD_KEYCODE_OEM_AX 0xE1
#define SQMOD_KEYCODE_OEM_BACKTAB 0xF5
#define SQMOD_KEYCODE_OEM_CLEAR 0xFE
#define SQMOD_KEYCODE_OEM_COMMA 0xBC
#define SQMOD_KEYCODE_OEM_COPY 0xF2
#define SQMOD_KEYCODE_OEM_CUSEL 0xEF
#define SQMOD_KEYCODE_OEM_ENLW 0xF4
#define SQMOD_KEYCODE_OEM_FINISH 0xF1
#define SQMOD_KEYCODE_OEM_FJ_LOYA 0x95
#define SQMOD_KEYCODE_OEM_FJ_MASSHOU 0x93
#define SQMOD_KEYCODE_OEM_FJ_ROYA 0x96
#define SQMOD_KEYCODE_OEM_FJ_TOUROKU 0x94
#define SQMOD_KEYCODE_OEM_JUMP 0xEA
#define SQMOD_KEYCODE_OEM_MINUS 0xBD
#define SQMOD_KEYCODE_OEM_PA1 0xEB
#define SQMOD_KEYCODE_OEM_PA2 0xEC
#define SQMOD_KEYCODE_OEM_PA3 0xED
#define SQMOD_KEYCODE_OEM_PERIOD 0xBE
#define SQMOD_KEYCODE_OEM_PLUS 0xBB
#define SQMOD_KEYCODE_OEM_RESET 0xE9
#define SQMOD_KEYCODE_OEM_WSCTRL 0xEE
#define SQMOD_KEYCODE_PA1 0xFD
#define SQMOD_KEYCODE_PACKET 0xE7
#define SQMOD_KEYCODE_PLAY 0xFA
#define SQMOD_KEYCODE_PROCESSKEY 0xE5
#define SQMOD_KEYCODE_RETURN 0x0D
#define SQMOD_KEYCODE_SELECT 0x29
#define SQMOD_KEYCODE_SEPARATOR 0x6C
#define SQMOD_KEYCODE_SPACE 0x20
#define SQMOD_KEYCODE_SUBTRACT 0x6D
#define SQMOD_KEYCODE_TAB 0x09
#define SQMOD_KEYCODE_ZOOM 0xFB
#define SQMOD_KEYCODE_ACCEPT 0x1E
#define SQMOD_KEYCODE_APPS 0x5D
#define SQMOD_KEYCODE_BROWSER_BACK 0xA6
#define SQMOD_KEYCODE_BROWSER_FAVORITES 0xAB
#define SQMOD_KEYCODE_BROWSER_FORWARD 0xA7
#define SQMOD_KEYCODE_BROWSER_HOME 0xAC
#define SQMOD_KEYCODE_BROWSER_REFRESH 0xA8
#define SQMOD_KEYCODE_BROWSER_SEARCH 0xAA
#define SQMOD_KEYCODE_BROWSER_STOP 0xA9
#define SQMOD_KEYCODE_CAPITAL 0x14
#define SQMOD_KEYCODE_CONVERT 0x1C
#define SQMOD_KEYCODE_DELETE 0x2E
#define SQMOD_KEYCODE_DOWN 0x28
#define SQMOD_KEYCODE_END 0x23
#define SQMOD_KEYCODE_F1 0x70
#define SQMOD_KEYCODE_F10 0x79
#define SQMOD_KEYCODE_F11 0x7A
#define SQMOD_KEYCODE_F12 0x7B
#define SQMOD_KEYCODE_F13 0x7C
#define SQMOD_KEYCODE_F14 0x7D
#define SQMOD_KEYCODE_F15 0x7E
#define SQMOD_KEYCODE_F16 0x7F
#define SQMOD_KEYCODE_F17 0x80
#define SQMOD_KEYCODE_F18 0x81
#define SQMOD_KEYCODE_F19 0x82
#define SQMOD_KEYCODE_F2 0x71
#define SQMOD_KEYCODE_F20 0x83
#define SQMOD_KEYCODE_F21 0x84
#define SQMOD_KEYCODE_F22 0x85
#define SQMOD_KEYCODE_F23 0x86
#define SQMOD_KEYCODE_F24 0x87
#define SQMOD_KEYCODE_F3 0x72
#define SQMOD_KEYCODE_F4 0x73
#define SQMOD_KEYCODE_F5 0x74
#define SQMOD_KEYCODE_F6 0x75
#define SQMOD_KEYCODE_F7 0x76
#define SQMOD_KEYCODE_F8 0x77
#define SQMOD_KEYCODE_F9 0x78
#define SQMOD_KEYCODE_FINAL 0x18
#define SQMOD_KEYCODE_HELP 0x2F
#define SQMOD_KEYCODE_HOME 0x24
#define SQMOD_KEYCODE_ICO_00 0xE4
#define SQMOD_KEYCODE_INSERT 0x2D
#define SQMOD_KEYCODE_JUNJA 0x17
#define SQMOD_KEYCODE_KANA 0x15
#define SQMOD_KEYCODE_KANJI 0x19
#define SQMOD_KEYCODE_LAUNCH_APP1 0xB6
#define SQMOD_KEYCODE_LAUNCH_APP2 0xB7
#define SQMOD_KEYCODE_LAUNCH_MAIL 0xB4
#define SQMOD_KEYCODE_LAUNCH_MEDIA_SELECT 0xB5
#define SQMOD_KEYCODE_LBUTTON 0x01
#define SQMOD_KEYCODE_LCONTROL 0xA2
#define SQMOD_KEYCODE_LEFT 0x25
#define SQMOD_KEYCODE_LMENU 0xA4
#define SQMOD_KEYCODE_LSHIFT 0xA0
#define SQMOD_KEYCODE_LWIN 0x5B
#define SQMOD_KEYCODE_MBUTTON 0x04
#define SQMOD_KEYCODE_MEDIA_NEXT_TRACK 0xB0
#define SQMOD_KEYCODE_MEDIA_PLAY_PAUSE 0xB3
#define SQMOD_KEYCODE_MEDIA_PREV_TRACK 0xB1
#define SQMOD_KEYCODE_MEDIA_STOP 0xB2
#define SQMOD_KEYCODE_MODECHANGE 0x1F
#define SQMOD_KEYCODE_NEXT 0x22
#define SQMOD_KEYCODE_NONCONVERT 0x1D
#define SQMOD_KEYCODE_NUMLOCK 0x90
#define SQMOD_KEYCODE_OEM_FJ_JISHO 0x92
#define SQMOD_KEYCODE_PAUSE 0x13
#define SQMOD_KEYCODE_PRINT 0x2A
#define SQMOD_KEYCODE_PRIOR 0x21
#define SQMOD_KEYCODE_RBUTTON 0x02
#define SQMOD_KEYCODE_RCONTROL 0xA3
#define SQMOD_KEYCODE_RIGHT 0x27
#define SQMOD_KEYCODE_RMENU 0xA5
#define SQMOD_KEYCODE_RSHIFT 0xA1
#define SQMOD_KEYCODE_RWIN 0x5C
#define SQMOD_KEYCODE_SCROLL 0x91
#define SQMOD_KEYCODE_SLEEP 0x5F
#define SQMOD_KEYCODE_SNAPSHOT 0x2C
#define SQMOD_KEYCODE_UP 0x26
#define SQMOD_KEYCODE_VOLUME_DOWN 0xAE
#define SQMOD_KEYCODE_VOLUME_MUTE 0xAD
#define SQMOD_KEYCODE_VOLUME_UP 0xAF
#define SQMOD_KEYCODE_XBUTTON1 0x05
#define SQMOD_KEYCODE_XBUTTON2 0x06
#define SQMOD_KEYCODE_NONE 0xFF
#define SQMOD_KEYCODE_MAX 0xFF
/* ------------------------------------------------------------------------------------------------
* ASCII CHARACTER CODES
*/
#define SQMOD_ASCII_NUL 0
#define SQMOD_ASCII_SOH 1
#define SQMOD_ASCII_STX 2
#define SQMOD_ASCII_ETX 3
#define SQMOD_ASCII_EOT 4
#define SQMOD_ASCII_ENQ 5
#define SQMOD_ASCII_ACK 6
#define SQMOD_ASCII_BEL 7
#define SQMOD_ASCII_BS 8
#define SQMOD_ASCII_TAB 9
#define SQMOD_ASCII_LF 10
#define SQMOD_ASCII_VT 11
#define SQMOD_ASCII_FF 12
#define SQMOD_ASCII_CR 13
#define SQMOD_ASCII_SO 14
#define SQMOD_ASCII_SI 15
#define SQMOD_ASCII_DLE 16
#define SQMOD_ASCII_DC1 17
#define SQMOD_ASCII_DC2 18
#define SQMOD_ASCII_DC3 19
#define SQMOD_ASCII_DC4 20
#define SQMOD_ASCII_NAK 21
#define SQMOD_ASCII_SYN 22
#define SQMOD_ASCII_ETB 23
#define SQMOD_ASCII_CAN 24
#define SQMOD_ASCII_EM 25
#define SQMOD_ASCII_SUB 26
#define SQMOD_ASCII_ESC 27
#define SQMOD_ASCII_FS 28
#define SQMOD_ASCII_GS 29
#define SQMOD_ASCII_RS 30
#define SQMOD_ASCII_US 31
#define SQMOD_ASCII_SPACE 32
#define SQMOD_ASCII_EXCLAMATION_POINT 33
#define SQMOD_ASCII_DOUBLE_QUOTES 34
#define SQMOD_ASCII_NUMBER_SIGN 35
#define SQMOD_ASCII_DOLLAR_SIGN 36
#define SQMOD_ASCII_PERCENT_SIGN 37
#define SQMOD_ASCII_AMPERSAND 38
#define SQMOD_ASCII_SINGLE_QUOTE 39
#define SQMOD_ASCII_OPENING_PARENTHESIS 40
#define SQMOD_ASCII_CLOSING_PARENTHESIS 41
#define SQMOD_ASCII_ASTERISK 42
#define SQMOD_ASCII_PLUS 43
#define SQMOD_ASCII_COMMA 44
#define SQMOD_ASCII_MINUS 45
#define SQMOD_ASCII_PERIOD 46
#define SQMOD_ASCII_SLASH 47
#define SQMOD_ASCII_ZERO 48
#define SQMOD_ASCII_ONE 49
#define SQMOD_ASCII_TWO 50
#define SQMOD_ASCII_THREE 51
#define SQMOD_ASCII_FOUR 52
#define SQMOD_ASCII_FIVE 53
#define SQMOD_ASCII_SIX 54
#define SQMOD_ASCII_SEVEN 55
#define SQMOD_ASCII_EIGHT 56
#define SQMOD_ASCII_NINE 57
#define SQMOD_ASCII_COLON 58
#define SQMOD_ASCII_EMICOLON 59
#define SQMOD_ASCII_LESS_THAN_SIGN 60
#define SQMOD_ASCII_EQUAL_SIGN 61
#define SQMOD_ASCII_GREATER_THAN_SIGN 62
#define SQMOD_ASCII_QUESTION_MARK 63
#define SQMOD_ASCII_AT 64
#define SQMOD_ASCII_UPPER_A 65
#define SQMOD_ASCII_UPPER_B 66
#define SQMOD_ASCII_UPPER_C 67
#define SQMOD_ASCII_UPPER_D 68
#define SQMOD_ASCII_UPPER_E 69
#define SQMOD_ASCII_UPPER_F 70
#define SQMOD_ASCII_UPPER_G 71
#define SQMOD_ASCII_UPPER_H 72
#define SQMOD_ASCII_UPPER_I 73
#define SQMOD_ASCII_UPPER_J 74
#define SQMOD_ASCII_UPPER_K 75
#define SQMOD_ASCII_UPPER_L 76
#define SQMOD_ASCII_UPPER_M 77
#define SQMOD_ASCII_UPPER_N 78
#define SQMOD_ASCII_UPPER_O 79
#define SQMOD_ASCII_UPPER_P 80
#define SQMOD_ASCII_UPPER_Q 81
#define SQMOD_ASCII_UPPER_R 82
#define SQMOD_ASCII_UPPER_S 83
#define SQMOD_ASCII_UPPER_T 84
#define SQMOD_ASCII_UPPER_U 85
#define SQMOD_ASCII_UPPER_V 86
#define SQMOD_ASCII_UPPER_W 87
#define SQMOD_ASCII_UPPER_X 88
#define SQMOD_ASCII_UPPER_Y 89
#define SQMOD_ASCII_UPPER_Z 90
#define SQMOD_ASCII_OPENING_BRACKET 91
#define SQMOD_ASCII_BACKSLASH 92
#define SQMOD_ASCII_CLOSING_BRACKET 93
#define SQMOD_ASCII_CARET 94
#define SQMOD_ASCII_UNDERSCORE 95
#define SQMOD_ASCII_GRAVE_ACCENT 96
#define SQMOD_ASCII_LOWER_A 97
#define SQMOD_ASCII_LOWER_B 98
#define SQMOD_ASCII_LOWER_C 99
#define SQMOD_ASCII_LOWER_D 100
#define SQMOD_ASCII_LOWER_E 101
#define SQMOD_ASCII_LOWER_F 102
#define SQMOD_ASCII_LOWER_G 103
#define SQMOD_ASCII_LOWER_H 104
#define SQMOD_ASCII_LOWER_I 105
#define SQMOD_ASCII_LOWER_J 106
#define SQMOD_ASCII_LOWER_K 107
#define SQMOD_ASCII_LOWER_L 108
#define SQMOD_ASCII_LOWER_M 109
#define SQMOD_ASCII_LOWER_N 110
#define SQMOD_ASCII_LOWER_O 111
#define SQMOD_ASCII_LOWER_P 112
#define SQMOD_ASCII_LOWER_Q 113
#define SQMOD_ASCII_LOWER_R 114
#define SQMOD_ASCII_LOWER_S 115
#define SQMOD_ASCII_LOWER_T 116
#define SQMOD_ASCII_LOWER_U 117
#define SQMOD_ASCII_LOWER_V 118
#define SQMOD_ASCII_LOWER_W 119
#define SQMOD_ASCII_LOWER_X 120
#define SQMOD_ASCII_LOWER_Y 121
#define SQMOD_ASCII_LOWER_Z 122
#define SQMOD_ASCII_OPENING_BRACE 123
#define SQMOD_ASCII_VERTICAL_BAR 124
#define SQMOD_ASCII_CLOSING_BRACE 125
#define SQMOD_ASCII_TILDE 126
#define SQMOD_ASCII_UNDEFINED 127
#define SQMOD_ASCII_MAX 127