// Copyright 2022 xensik. All rights reserved. // // Use of this source code is governed by a GNU GPLv3 license // that can be found in the LICENSE file. #include "stdafx.hpp" #include "iw5_console.hpp" #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable:4244) #endif namespace xsk::gsc::iw5_console { std::unordered_map opcode_map; std::unordered_map function_map; std::unordered_map method_map; std::unordered_map token_map; std::unordered_map opcode_map_rev; std::unordered_map function_map_rev; std::unordered_map method_map_rev; std::unordered_map token_map_rev; std::unordered_map> files; read_cb_type read_callback = nullptr; std::set string_map; void resolver::init(read_cb_type callback) { read_callback = callback; } void resolver::cleanup() { files.clear(); } auto resolver::opcode_id(const std::string& name) -> std::uint8_t { const auto itr = opcode_map_rev.find(name); if (itr != opcode_map_rev.end()) { return itr->second; } throw error(utils::string::va("couldn't resolve opcode id for name '%s'!", name.data())); } auto resolver::opcode_name(std::uint8_t id) -> std::string { const auto itr = opcode_map.find(id); if (itr != opcode_map.end()) { return std::string(itr->second); } throw error(utils::string::va("couldn't resolve opcode name for id '0x%hhX'!", id)); } auto resolver::function_id(const std::string& name) -> std::uint16_t { if (name.starts_with("_func_")) { return static_cast(std::stoul(name.substr(6), nullptr, 16)); } const auto itr = function_map_rev.find(name); if (itr != function_map_rev.end()) { return itr->second; } throw error(utils::string::va("couldn't resolve builtin function id for name '%s'!", name.data())); } auto resolver::function_name(std::uint16_t id) -> std::string { const auto itr = function_map.find(id); if (itr != function_map.end()) { return std::string(itr->second); } return utils::string::va("_func_%04X", id); } auto resolver::method_id(const std::string& name) -> std::uint16_t { if (name.starts_with("_meth_")) { return static_cast(std::stoul(name.substr(6), nullptr, 16)); } const auto itr = method_map_rev.find(name); if (itr != method_map_rev.end()) { return itr->second; } throw error(utils::string::va("couldn't resolve builtin method id for name '%s'!", name.data())); } auto resolver::method_name(std::uint16_t id) -> std::string { const auto itr = method_map.find(id); if (itr != method_map.end()) { return std::string(itr->second); } return utils::string::va("_meth_%04X", id); } auto resolver::token_id(const std::string& name) -> std::uint16_t { if (name.starts_with("_id_")) { return static_cast(std::stoul(name.substr(4), nullptr, 16)); } const auto itr = token_map_rev.find(name); if (itr != token_map_rev.end()) { return itr->second; } return 0; } auto resolver::token_name(std::uint16_t id) -> std::string { const auto itr = token_map.find(id); if (itr != token_map.end()) { return std::string(itr->second); } return utils::string::va("_id_%04X", id); } auto resolver::find_function(const std::string& name) -> bool { if (name.starts_with("_func_")) return true; const auto itr = function_map_rev.find(name); if (itr != function_map_rev.end()) { return true; } return false; } auto resolver::find_method(const std::string& name) -> bool { if (name.starts_with("_meth_")) return true; const auto itr = method_map_rev.find(name); if (itr != method_map_rev.end()) { return true; } return false; } void resolver::add_function(const std::string& name, std::uint16_t id) { const auto itr = function_map_rev.find(name); if (itr != function_map_rev.end()) { throw error(utils::string::va("builtin function '%s' already defined.", name.data())); } const auto str = string_map.find(name); if (str != string_map.end()) { function_map.insert({ id, *str }); function_map_rev.insert({ *str, id }); } else { auto ins = string_map.insert(name); if (ins.second) { function_map.insert({ id, *ins.first }); function_map_rev.insert({ *ins.first, id }); } } } void resolver::add_method(const std::string& name, std::uint16_t id) { const auto itr = method_map_rev.find(name); if (itr != method_map_rev.end()) { throw error(utils::string::va("builtin method '%s' already defined.", name.data())); } const auto str = string_map.find(name); if (str != string_map.end()) { method_map.insert({ id, *str }); method_map_rev.insert({ *str, id }); } else { auto ins = string_map.insert(name); if (ins.second) { method_map.insert({ id, *ins.first }); method_map_rev.insert({ *ins.first, id }); } } } auto resolver::make_token(std::string_view str) -> std::string { if (str.starts_with("_id_") || str.starts_with("_func_") || str.starts_with("_meth_")) { return std::string(str); } auto data = std::string(str.begin(), str.end()); for (std::size_t i = 0; i < data.size(); i++) { data[i] = static_cast(std::tolower(static_cast(str[i]))); if (data[i] == '\\') data[i] = '/'; } return data; } auto resolver::file_data(const std::string& name) -> std::tuple { const auto& itr = files.find(name); if (itr != files.end()) { return { &itr->first ,reinterpret_cast(itr->second.data()), itr->second.size() }; } auto data = read_callback(name); const auto& res = files.insert({ name, std::move(data)}); if (res.second) { return { &res.first->first, reinterpret_cast(res.first->second.data()), res.first->second.size() }; } throw error("couldn't open gsc file '" + name + "'"); } std::set paths { "aitype"sv, "animscripts"sv, "character"sv, "codescripts"sv, "common_scripts"sv, "maps"sv, "mptype"sv, "vehicle_scripts"sv, "xmodelalias"sv, "animscripts/civilian"sv, "animscripts/dog"sv, "animscripts/hummer_turret"sv, "animscripts/riotshield"sv, "animscripts/saw"sv, "animscripts/scripted"sv, "animscripts/technical"sv, "animscripts/traverse"sv, "maps/animated_models"sv, "maps/cinematic_setups"sv, "maps/createart"sv, "maps/createfx"sv, "maps/gametypes"sv, "maps/mp"sv, "maps/mp/gametypes"sv, "maps/mp/killstreaks"sv, "maps/mp/perks"sv, }; auto resolver::fs_to_game_path(const std::filesystem::path& file) -> std::filesystem::path { auto result = std::filesystem::path(); auto root = false; for (auto& entry : file) { if (!root && paths.contains(entry.string())) { result = entry; root = true; } else if (paths.contains(result.string())) { result /= entry; } } return result.empty() ? file : result; } const std::array, 153> opcode_list {{ { 0x00, "OP_End" }, { 0x01, "OP_Return" }, { 0x02, "OP_GetUndefined" }, { 0x03, "OP_GetZero" }, { 0x04, "OP_GetByte" }, { 0x05, "OP_GetAnimTree" }, { 0x06, "OP_GetNegByte" }, { 0x07, "OP_GetUnsignedShort" }, { 0x08, "OP_GetNegUnsignedShort" }, { 0x09, "OP_GetInteger" }, { 0x0A, "OP_GetBuiltinFunction" }, { 0x0B, "OP_GetBuiltinMethod" }, { 0x0C, "OP_GetFloat" }, { 0x0D, "OP_GetString" }, { 0x0E, "OP_GetIString" }, { 0x0F, "OP_GetVector" }, { 0x10, "OP_GetLevelObject" }, { 0x11, "OP_GetAnimObject" }, { 0x12, "OP_GetSelf" }, { 0x13, "OP_GetThisthread" }, { 0x14, "OP_GetLevel" }, { 0x15, "OP_GetGame" }, { 0x16, "OP_GetAnim" }, { 0x17, "OP_GetAnimation" }, { 0x18, "OP_GetGameRef" }, { 0x1A, "OP_GetLocalFunction" }, { 0x19, "OP_GetFarFunction" }, { 0x1B, "OP_CreateLocalVariable" }, { 0x1C, "OP_RemoveLocalVariables" }, { 0x1D, "OP_EvalLocalVariableCached0" }, { 0x1E, "OP_EvalLocalVariableCached1" }, { 0x1F, "OP_EvalLocalVariableCached2" }, { 0x20, "OP_EvalLocalVariableCached3" }, { 0x21, "OP_EvalLocalVariableCached4" }, { 0x22, "OP_EvalLocalVariableCached5" }, { 0x23, "OP_EvalLocalVariableCached" }, { 0x24, "OP_EvalLocalArrayCached" }, { 0x25, "OP_EvalArray" }, { 0x26, "OP_EvalLocalArrayRefCached0" }, { 0x27, "OP_EvalNewLocalArrayRefCached0" }, { 0x28, "OP_EvalLocalArrayRefCached" }, { 0x29, "OP_EvalArrayRef" }, { 0x2A, "OP_ClearArray" }, { 0x2B, "OP_EmptyArray" }, { 0x2C, "OP_AddArray" }, { 0x2D, "OP_GetSelfObject" }, { 0x2E, "OP_EvalLevelFieldVariable" }, { 0x2F, "OP_EvalAnimFieldVariable" }, { 0x30, "OP_EvalSelfFieldVariable" }, { 0x31, "OP_EvalFieldVariable" }, { 0x32, "OP_EvalLevelFieldVariableRef" }, { 0x33, "OP_EvalAnimFieldVariableRef" }, { 0x34, "OP_EvalSelfFieldVariableRef" }, { 0x35, "OP_EvalFieldVariableRef" }, { 0x36, "OP_ClearFieldVariable" }, { 0x37, "OP_SafeCreateVariableFieldCached" }, { 0x38, "OP_SafeSetVariableFieldCached0" }, { 0x39, "OP_SafeSetVariableFieldCached" }, { 0x3A, "OP_SafeSetWaittillVariableFieldCached" }, { 0x3B, "OP_clearparams" }, { 0x3C, "OP_checkclearparams" }, { 0x3D, "OP_EvalLocalVariableRefCached0" }, { 0x3E, "OP_EvalNewLocalVariableRefCached0" }, { 0x3F, "OP_EvalLocalVariableRefCached" }, { 0x40, "OP_SetLevelFieldVariableField" }, { 0x41, "OP_SetVariableField" }, { 0x42, "OP_ClearVariableField" }, { 0x43, "OP_SetAnimFieldVariableField" }, { 0x44, "OP_SetSelfFieldVariableField" }, { 0x45, "OP_SetLocalVariableFieldCached0" }, { 0x46, "OP_SetNewLocalVariableFieldCached0" }, { 0x47, "OP_SetLocalVariableFieldCached" }, { 0x48, "OP_ClearLocalVariableFieldCached" }, { 0x49, "OP_ClearLocalVariableFieldCached0" }, { 0x4A, "OP_CallBuiltin0" }, { 0x4B, "OP_CallBuiltin1" }, { 0x4C, "OP_CallBuiltin2" }, { 0x4D, "OP_CallBuiltin3" }, { 0x4E, "OP_CallBuiltin4" }, { 0x4F, "OP_CallBuiltin5" }, { 0x50, "OP_CallBuiltin" }, { 0x51, "OP_CallBuiltinMethod0" }, { 0x52, "OP_CallBuiltinMethod1" }, { 0x53, "OP_CallBuiltinMethod2" }, { 0x54, "OP_CallBuiltinMethod3" }, { 0x55, "OP_CallBuiltinMethod4" }, { 0x56, "OP_CallBuiltinMethod5" }, { 0x57, "OP_CallBuiltinMethod" }, { 0x58, "OP_wait" }, { 0x59, "OP_waittillFrameEnd" }, { 0x5A, "OP_PreScriptCall" }, { 0x5B, "OP_ScriptLocalFunctionCall2" }, { 0x5C, "OP_ScriptLocalFunctionCall" }, { 0x5D, "OP_ScriptLocalMethodCall" }, { 0x5E, "OP_ScriptLocalThreadCall" }, { 0x5F, "OP_ScriptLocalChildThreadCall" }, { 0x60, "OP_ScriptLocalMethodThreadCall" }, { 0x61, "OP_ScriptLocalMethodChildThreadCall" }, { 0x62, "OP_ScriptFarFunctionCall2" }, { 0x63, "OP_ScriptFarFunctionCall" }, { 0x64, "OP_ScriptFarMethodCall" }, { 0x65, "OP_ScriptFarThreadCall" }, { 0x66, "OP_ScriptFarChildThreadCall" }, { 0x67, "OP_ScriptFarMethodThreadCall" }, { 0x68, "OP_ScriptFarMethodChildThreadCall" }, { 0x69, "OP_ScriptFunctionCallPointer" }, { 0x6A, "OP_ScriptMethodCallPointer" }, { 0x6B, "OP_ScriptThreadCallPointer" }, { 0x6C, "OP_ScriptChildThreadCallPointer" }, { 0x6D, "OP_ScriptMethodThreadCallPointer" }, { 0x6E, "OP_ScriptMethodChildThreadCallPointer" }, { 0x6F, "OP_CallBuiltinPointer" }, { 0x70, "OP_CallBuiltinMethodPointer" }, { 0x71, "OP_DecTop" }, { 0x72, "OP_CastFieldObject" }, { 0x73, "OP_EvalLocalVariableObjectCached" }, { 0x74, "OP_CastBool" }, { 0x75, "OP_BoolNot" }, { 0x76, "OP_BoolComplement" }, { 0x77, "OP_JumpOnFalse" }, { 0x78, "OP_JumpOnTrue" }, { 0x79, "OP_JumpOnFalseExpr" }, { 0x7A, "OP_JumpOnTrueExpr" }, { 0x7B, "OP_jump" }, { 0x7C, "OP_jumpback" }, { 0x7D, "OP_inc" }, { 0x7E, "OP_dec" }, { 0x7F, "OP_bit_or" }, { 0x80, "OP_bit_ex_or" }, { 0x81, "OP_bit_and" }, { 0x82, "OP_equality" }, { 0x83, "OP_inequality" }, { 0x84, "OP_less" }, { 0x85, "OP_greater" }, { 0x86, "OP_less_equal" }, { 0x87, "OP_greater_equal" }, { 0x88, "OP_shift_left" }, { 0x89, "OP_shift_right" }, { 0x8A, "OP_plus" }, { 0x8B, "OP_minus" }, { 0x8C, "OP_multiply" }, { 0x8D, "OP_divide" }, { 0x8E, "OP_mod" }, { 0x8F, "OP_size" }, { 0x90, "OP_waittillmatch" }, { 0x91, "OP_waittillmatch2" }, { 0x92, "OP_waittill" }, { 0x93, "OP_notify" }, { 0x94, "OP_endon" }, { 0x95, "OP_voidCodepos" }, { 0x96, "OP_switch" }, { 0x97, "OP_endswitch" }, { 0x98, "OP_vector" }, }}; const std::array, 452> function_list {{ { 0x001, "createprintchannel" }, { 0x002, "setprintchannel" }, { 0x003, "print" }, { 0x004, "println" }, { 0x005, "print3d" }, { 0x006, "line" }, { 0x007, "precacheturret" }, { 0x008, "getweaponarray" }, { 0x009, "spawnturret" }, { 0x00A, "canspawnturret" }, { 0x00B, "assert" }, { 0x00C, "assertex" }, { 0x00D, "assertmsg" }, { 0x00E, "isdefined" }, { 0x00F, "isstring" }, { 0x010, "setdvar" }, { 0x011, "setdynamicdvar" }, { 0x012, "setdvarifuninitialized" }, { 0x013, "setdevdvar" }, { 0x014, "setdevdvarifuninitialized" }, { 0x015, "getdvar" }, { 0x016, "getdvarint" }, { 0x017, "getdvarfloat" }, { 0x018, "getdvarvector" }, { 0x019, "gettime" }, { 0x01A, "getentbynum" }, { 0x01B, "getweaponmodel" }, { 0x01C, "getweaponhidetags" }, { 0x01D, "getanimlength" }, { 0x01E, "animhasnotetrack" }, { 0x01F, "getnotetracktimes" }, { 0x020, "spawn" }, { 0x021, "spawnloopsound" }, { 0x022, "spawnloopingsound" }, { 0x023, "bullettrace" }, { 0x024, "bullettracepassed" }, { 0x025, "sighttracepassed" }, { 0x026, "physicstrace" }, { 0x027, "playerphysicstrace" }, { 0x028, "getgroundposition" }, { 0x029, "getmovedelta" }, { 0x02A, "getangledelta" }, { 0x02B, "getnorthyaw" }, { 0x02C, "setnorthyaw" }, { 0x02D, "setslowmotion" }, { 0x02E, "randomint" }, { 0x02F, "randomfloat" }, { 0x030, "randomintrange" }, { 0x031, "randomfloatrange" }, { 0x032, "sin" }, { 0x033, "cos" }, { 0x034, "tan" }, { 0x035, "asin" }, { 0x036, "acos" }, { 0x037, "atan" }, { 0x038, "int" }, { 0x039, "float" }, { 0x03A, "abs" }, { 0x03B, "min" }, { 0x03C, "max" }, { 0x03D, "floor" }, { 0x03E, "ceil" }, { 0x03F, "exp" }, { 0x040, "log" }, { 0x041, "sqrt" }, { 0x042, "squared" }, { 0x043, "clamp" }, { 0x044, "angleclamp" }, { 0x045, "angleclamp180" }, { 0x046, "vectorfromlinetopoint" }, { 0x047, "pointonsegmentnearesttopoint" }, { 0x048, "distance" }, { 0x049, "distance2d" }, { 0x04A, "distancesquared" }, { 0x04B, "length" }, { 0x04C, "lengthsquared" }, { 0x04D, "closer" }, { 0x04E, "vectordot" }, { 0x04F, "vectornormalize" }, { 0x050, "vectortoangles" }, { 0x051, "vectortoyaw" }, { 0x052, "vectorlerp" }, { 0x053, "anglestoup" }, { 0x054, "anglestoright" }, { 0x055, "anglestoforward" }, { 0x056, "combineangles" }, { 0x057, "transformmove" }, { 0x058, "issubstr" }, { 0x059, "isendstr" }, { 0x05A, "getsubstr" }, { 0x05B, "tolower" }, { 0x05C, "strtok" }, { 0x05D, "stricmp" }, { 0x05E, "ambientplay" }, { 0x05F, "ambientstop" }, { 0x060, "precachemodel" }, { 0x061, "precacheshellshock" }, { 0x062, "precacheitem" }, { 0x063, "precacheshader" }, { 0x064, "precachestring" }, { 0x065, "precachemenu" }, { 0x066, "precacherumble" }, { 0x067, "precachelocationselector" }, { 0x068, "precacheleaderboards" }, { 0x069, "loadfx" }, { 0x06A, "playfx" }, { 0x06B, "playfxontag" }, { 0x06C, "stopfxontag" }, { 0x06D, "playloopedfx" }, { 0x06E, "spawnfx" }, { 0x06F, "triggerfx" }, { 0x070, "playfxontagforclients" }, { 0x071, "physicsexplosionsphere" }, { 0x072, "physicsexplosioncylinder" }, { 0x073, "physicsjolt" }, { 0x074, "physicsjitter" }, { 0x075, "setexpfog" }, { 0x076, "isexplosivedamagemod" }, { 0x077, "radiusdamage" }, { 0x078, "setplayerignoreradiusdamage" }, { 0x079, "glassradiusdamage" }, { 0x07A, "earthquake" }, { 0x07B, "getnumparts" }, { 0x07C, "getpartname" }, { 0x07D, "weaponfiretime" }, { 0x07E, "weaponclipsize" }, { 0x07F, "weaponisauto" }, { 0x080, "weaponissemiauto" }, { 0x081, "weaponisboltaction" }, { 0x082, "weaponinheritsperks" }, { 0x083, "weaponburstcount" }, { 0x084, "weapontype" }, { 0x085, "weaponclass" }, { 0x086, "weaponinventorytype" }, { 0x087, "weaponstartammo" }, { 0x088, "weaponmaxammo" }, { 0x089, "weaponaltweaponname" }, { 0x08A, "isweaponcliponly" }, { 0x08B, "isweapondetonationtimed" }, { 0x08C, "weaponhasthermalscope" }, { 0x08D, "getvehiclenode" }, { 0x08E, "getvehiclenodearray" }, { 0x08F, "getallvehiclenodes" }, { 0x090, "getnumvehicles" }, { 0x091, "precachevehicle" }, { 0x092, "spawnvehicle" }, { 0x093, "vehicle_getarray" }, { 0x094, "vehicle_getspawnerarray" }, { 0x095, "playrumbleonposition" }, { 0x096, "playrumblelooponposition" }, { 0x097, "stopallrumbles" }, { 0x098, "soundexists" }, { 0x099, "openfile" }, { 0x09A, "closefile" }, { 0x09B, "fprintln" }, { 0x09C, "fprintfields" }, { 0x09D, "freadln" }, { 0x09E, "fgetarg" }, { 0x09F, "setminimap" }, { 0x0A0, "setthermalbodymaterial" }, { 0x0A1, "getarraykeys" }, { 0x0A2, "getfirstarraykey" }, { 0x0A3, "getnextarraykey" }, { 0x0A4, "sortbydistance" }, { 0x0A5, "tablelookup" }, { 0x0A6, "tablelookupbyrow" }, { 0x0A7, "tablelookupistring" }, { 0x0A8, "tablelookupistringbyrow" }, { 0x0A9, "tablelookuprownum" }, { 0x0AA, "getmissileowner" }, { 0x0AB, "magicbullet" }, { 0x0AC, "getweaponflashtagname" }, { 0x0AD, "averagepoint" }, { 0x0AE, "averagenormal" }, { 0x0AF, "getglass" }, { 0x0B0, "getglassarray" }, { 0x0B1, "getglassorigin" }, { 0x0B2, "isglassdestroyed" }, { 0x0B3, "destroyglass" }, { 0x0B4, "deleteglass" }, { 0x0B5, "getentchannelscount" }, { 0x0B6, "getentchannelname" }, { 0x0B7, "objective_add" }, { 0x0B8, "objective_delete" }, { 0x0B9, "objective_state" }, { 0x0BA, "objective_icon" }, { 0x0BB, "objective_position" }, { 0x0BC, "objective_current" }, { 0x0BD, "objective_onentity" }, { 0x0BE, "objective_team" }, { 0x0BF, "objective_player" }, { 0x0C0, "objective_playerteam" }, { 0x0C1, "objective_playerenemyteam" }, { 0x0C2, "iprintln" }, { 0x0C3, "iprintlnbold" }, { 0x0C4, "logstring" }, { 0x0C5, "getent" }, { 0x0C6, "getentarray" }, { 0x0C7, "spawnplane" }, { 0x0C8, "spawnstruct" }, { 0x0C9, "spawnhelicopter" }, { 0x0CA, "isalive" }, { 0x0CB, "isspawner" }, { 0x0CC, "missile_createattractorent" }, { 0x0CD, "missile_createattractororigin" }, { 0x0CE, "missile_createrepulsorent" }, { 0x0CF, "missile_createrepulsororigin" }, { 0x0D0, "missile_deleteattractor" }, { 0x0D1, "playsoundatpos" }, { 0x0D2, "newhudelem" }, { 0x0D3, "newclienthudelem" }, { 0x0D4, "newteamhudelem" }, { 0x0D5, "resettimeout" }, { 0x0D6, "precachefxteamthermal" }, { 0x0D7, "isplayer" }, { 0x0D8, "isplayernumber" }, { 0x0D9, "setwinningplayer" }, { 0x0DA, "setwinningteam" }, { 0x0DB, "announcement" }, { 0x0DC, "clientannouncement" }, { 0x0DD, "getteamscore" }, { 0x0DE, "setteamscore" }, { 0x0DF, "setclientnamemode" }, { 0x0E0, "updateclientnames" }, { 0x0E1, "getteamplayersalive" }, { 0x0E2, "logprint" }, { 0x0E3, "worldentnumber" }, { 0x0E4, "obituary" }, { 0x0E5, "positionwouldtelefrag" }, { 0x0E6, "canspawn" }, { 0x0E7, "getstarttime" }, { 0x0E8, "precachestatusicon" }, { 0x0E9, "precacheheadicon" }, { 0x0EA, "precacheminimapicon" }, { 0x0EB, "precachempanim" }, { 0x0EC, "map_restart" }, { 0x0ED, "exitlevel" }, { 0x0EE, "addtestclient" }, { 0x0EF, "makedvarserverinfo" }, { 0x0F0, "setarchive" }, { 0x0F1, "allclientsprint" }, { 0x0F2, "clientprint" }, { 0x0F3, "mapexists" }, { 0x0F4, "isvalidgametype" }, { 0x0F5, "matchend" }, { 0x0F6, "setplayerteamrank" }, { 0x0F7, "endparty" }, { 0x0F8, "setteamradar" }, { 0x0F9, "getteamradar" }, { 0x0FA, "setteamradarstrength" }, { 0x0FB, "getteamradarstrength" }, { 0x0FC, "getuavstrengthmin" }, { 0x0FD, "getuavstrengthmax" }, { 0x0FE, "getuavstrengthlevelneutral" }, { 0x0FF, "getuavstrengthlevelshowenemyfastsweep" }, { 0x100, "getuavstrengthlevelshowenemydirectional" }, { 0x101, "blockteamradar" }, { 0x102, "unblockteamradar" }, { 0x103, "isteamradarblocked" }, { 0x104, "getassignedteam" }, { 0x105, "setmatchdata" }, { 0x106, "getmatchdata" }, { 0x107, "sendmatchdata" }, { 0x108, "clearmatchdata" }, { 0x109, "setmatchdatadef" }, { 0x10A, "setmatchclientip" }, { 0x10B, "setmatchdataid" }, { 0x10C, "setclientmatchdata" }, { 0x10D, "getclientmatchdata" }, { 0x10E, "setclientmatchdatadef" }, { 0x10F, "sendclientmatchdata" }, { 0x110, "getbuildversion" }, { 0x111, "getbuildnumber" }, { 0x112, "getsystemtime" }, { 0x113, "getmatchrulesdata" }, { 0x114, "isusingmatchrulesdata" }, { 0x115, "kick" }, { 0x116, "issplitscreen" }, { 0x117, "setmapcenter" }, { 0x118, "setgameendtime" }, { 0x119, "visionsetnaked" }, { 0x11A, "visionsetnight" }, { 0x11B, "visionsetmissilecam" }, { 0x11C, "visionsetthermal" }, { 0x11D, "visionsetpain" }, { 0x11E, "endlobby" }, { 0x11F, "setac130ambience" }, { 0x120, "getmapcustom" }, { 0x121, "updateskill" }, { 0x122, "spawnsighttrace" }, { 0x123, "incrementcounter" }, { 0x124, "getcountertotal" }, { 0x125, "getlevelticks" }, { 0x126, "perlinnoise2d" }, { 0x127, "calcrockingangles" }, { 0x128, "sethudlighting" }, { 0x129, "reconevent" }, { 0x12A, "reconspatialevent" }, { 0x12B, "setsunflareposition" }, { 0x12C, "createthreatbiasgroup" }, { 0x12D, "threatbiasgroupexists" }, { 0x12E, "getthreatbias" }, { 0x12F, "setthreatbias" }, { 0x130, "setthreatbiasagainstall" }, { 0x131, "setignoremegroup" }, { 0x132, "isenemyteam" }, { 0x133, "objective_additionalentity" }, { 0x134, "objective_state_nomessage" }, { 0x135, "objective_string" }, { 0x136, "objective_string_nomessage" }, { 0x137, "objective_additionalposition" }, { 0x138, "objective_current_nomessage" }, { 0x139, "objective_additionalcurrent" }, { 0x13A, "objective_ring" }, { 0x13B, "objective_setpointertextoverride" }, { 0x13C, "getnode" }, { 0x13D, "getnodearray" }, { 0x13E, "getallnodes" }, { 0x13F, "getnodesinradius" }, { 0x140, "getnodesinradiussorted" }, { 0x141, "getclosestnodeinsight" }, { 0x142, "getreflectionlocs" }, { 0x143, "getreflectionreferencelocs" }, { 0x144, "getvehicletracksegment" }, { 0x145, "getvehicletracksegmentarray" }, { 0x146, "getallvehicletracksegments" }, { 0x147, "isarray" }, { 0x148, "isai" }, { 0x149, "issentient" }, { 0x14A, "isgodmode" }, { 0x14B, "getdebugdvar" }, { 0x14C, "getdebugdvarint" }, { 0x14D, "getdebugdvarfloat" }, { 0x14E, "setsaveddvar" }, { 0x14F, "getfreeaicount" }, { 0x150, "getaicount" }, { 0x151, "getaiarray" }, { 0x152, "getaispeciesarray" }, { 0x153, "getspawnerarray" }, { 0x154, "getcorpsearray" }, { 0x155, "getspawnerteamarray" }, { 0x156, "getweaponclipmodel" }, { 0x157, "getbrushmodelcenter" }, { 0x158, "getkeybinding" }, { 0x159, "getcommandfromkey" }, { 0x15A, "getsticksconfig" }, { 0x15B, "weaponfightdist" }, { 0x15C, "weaponmaxdist" }, { 0x15D, "isturretactive" }, { 0x15E, "target_alloc" }, { 0x15F, "target_flush" }, { 0x160, "target_set" }, { 0x161, "target_remove" }, { 0x162, "target_setshader" }, { 0x163, "target_setoffscreenshader" }, { 0x164, "target_isinrect" }, { 0x165, "target_isincircle" }, { 0x166, "target_startreticlelockon" }, { 0x167, "target_clearreticlelockon" }, { 0x168, "target_getarray" }, { 0x169, "target_istarget" }, { 0x16A, "target_setattackmode" }, { 0x16B, "target_setjavelinonly" }, { 0x16C, "target_hidefromplayer" }, { 0x16D, "target_showtoplayer" }, { 0x16E, "target_setscaledrendermode" }, { 0x16F, "target_drawcornersonly" }, { 0x170, "target_drawsquare" }, { 0x171, "target_drawsingle" }, { 0x172, "target_setminsize" }, { 0x173, "target_setmaxsize" }, { 0x174, "target_setcolor" }, { 0x175, "target_setdelay" }, { 0x176, "getstartorigin" }, { 0x177, "getstartangles" }, { 0x178, "getcycleoriginoffset" }, { 0x179, "magicgrenade" }, { 0x17A, "magicgrenademanual" }, { 0x17B, "setblur" }, { 0x17C, "musicplay" }, { 0x17D, "musicstop" }, { 0x17E, "soundfade" }, { 0x17F, "soundsettimescalefactor" }, { 0x180, "soundresettimescale" }, { 0x181, "setocclusionpreset" }, { 0x182, "levelsoundfade" }, { 0x183, "precachenightvisioncodeassets" }, { 0x184, "precachedigitaldistortcodeassets" }, { 0x185, "precacheminimapsentrycodeassets" }, { 0x186, "savegame" }, { 0x187, "issavesuccessful" }, { 0x188, "issaverecentlyloaded" }, { 0x189, "savegamenocommit" }, { 0x18A, "commitsave" }, { 0x18B, "commitwouldbevalid" }, { 0x18C, "getfxvisibility" }, { 0x18D, "setculldist" }, { 0x18E, "getculldist" }, { 0x18F, "sethalfresparticles" }, { 0x190, "getmapsunlight" }, { 0x191, "setsunlight" }, { 0x192, "resetsunlight" }, { 0x193, "getmapsundirection" }, { 0x194, "getmapsunangles" }, { 0x195, "setsundirection" }, { 0x196, "lerpsundirection" }, { 0x197, "lerpsunangles" }, { 0x198, "resetsundirection" }, { 0x199, "enableforcedsunshadows" }, { 0x19A, "enableforcednosunshadows" }, { 0x19B, "disableforcedsunshadows" }, { 0x19C, "enableouterspacemodellighting" }, { 0x19D, "disableouterspacemodellighting" }, { 0x19E, "remapstage" }, { 0x19F, "changelevel" }, { 0x1A0, "missionsuccess" }, { 0x1A1, "missionfailed" }, { 0x1A2, "cinematic" }, { 0x1A3, "cinematicingame" }, { 0x1A4, "cinematicingamesync" }, { 0x1A5, "cinematicingameloop" }, { 0x1A6, "cinematicingameloopresident" }, { 0x1A7, "iscinematicplaying" }, { 0x1A8, "stopcinematicingame" }, { 0x1A9, "pausecinematicingame" }, { 0x1AA, "drawcompassfriendlies" }, { 0x1AB, "bulletspread" }, { 0x1AC, "bullettracer" }, { 0x1AD, "badplace_delete" }, { 0x1AE, "badplace_cylinder" }, { 0x1AF, "badplace_arc" }, { 0x1B0, "badplace_brush" }, { 0x1B1, "clearallcorpses" }, { 0x1B2, "setturretnode" }, { 0x1B3, "unsetturretnode" }, { 0x1B4, "setnodepriority" }, { 0x1B5, "isnodeoccupied" }, { 0x1B6, "setdebugorigin" }, { 0x1B7, "setdebugangles" }, { 0x1B8, "updategamerprofile" }, { 0x1B9, "updategamerprofileall" }, { 0x1BA, "clearlocalizedstrings" }, { 0x1BB, "setphysicsgravitydir" }, { 0x1BC, "gettimescale" }, { 0x1BD, "settimescale" }, { 0x1BE, "setslowmotionview" }, { 0x1BF, "forcesharedammo" }, { 0x1C0, "refreshhudcompass" }, { 0x1C1, "refreshhudammocounter" }, { 0x1C2, "notifyoncommand" }, { 0x1C3, "gettimesincelastpaused" }, { 0x1C4, "setlasermaterial" }, }}; const std::array, 781> method_list {{ { 0x8000, "attach" }, { 0x8001, "attachshieldmodel" }, { 0x8002, "detach" }, { 0x8003, "detachshieldmodel" }, { 0x8004, "moveshieldmodel" }, { 0x8005, "detachall" }, { 0x8006, "getattachsize" }, { 0x8007, "getattachmodelname" }, { 0x8008, "getattachtagname" }, { 0x8009, "getattachignorecollision" }, { 0x800A, "hidepart" }, { 0x800B, "hidepart_allinstances" }, { 0x800C, "hideallparts" }, { 0x800D, "showpart" }, { 0x800E, "showallparts" }, { 0x800F, "linkto" }, { 0x8010, "linktoblendtotag" }, { 0x8011, "unlink" }, { 0x8012, "islinked" }, { 0x8013, "enablelinkto" }, { 0x8014, "playerlinkto" }, { 0x8015, "playerlinktodelta" }, { 0x8016, "playerlinkweaponviewtodelta" }, { 0x8017, "playerlinktoabsolute" }, { 0x8018, "playerlinktoblend" }, { 0x8019, "playerlinkedoffsetenable" }, { 0x801A, "playerlinkedoffsetdisable" }, { 0x801B, "playerlinkedsetviewznear" }, { 0x801C, "playerlinkedsetusebaseangleforviewclamp" }, { 0x801D, "lerpviewangleclamp" }, { 0x801E, "setviewangleresistance" }, { 0x801F, "geteye" }, { 0x8020, "istouching" }, { 0x8021, "stoploopsound" }, { 0x8022, "stopsounds" }, { 0x8023, "playrumbleonentity" }, { 0x8024, "playrumblelooponentity" }, { 0x8025, "stoprumble" }, { 0x8026, "delete" }, { 0x8027, "setmodel" }, { 0x8028, "laseron" }, { 0x8029, "laseroff" }, { 0x802A, "laseraltviewon" }, { 0x802B, "laseraltviewoff" }, { 0x802C, "thermalvisionon" }, { 0x802D, "thermalvisionoff" }, { 0x802E, "thermalvisionfofoverlayon" }, { 0x802F, "thermalvisionfofoverlayoff" }, { 0x8030, "autospotoverlayon" }, { 0x8031, "autospotoverlayoff" }, { 0x8032, "setcontents" }, { 0x8033, "makeusable" }, { 0x8034, "makeunusable" }, { 0x8035, "setcursorhint" }, { 0x8036, "sethintstring" }, { 0x8037, "forceusehinton" }, { 0x8038, "forceusehintoff" }, { 0x8039, "makesoft" }, { 0x803A, "makehard" }, { 0x803B, "willneverchange" }, { 0x803C, "startfiring" }, { 0x803D, "stopfiring" }, { 0x803E, "isfiringturret" }, { 0x803F, "startbarrelspin" }, { 0x8040, "stopbarrelspin" }, { 0x8041, "getbarrelspinrate" }, { 0x8042, "remotecontrolturret" }, { 0x8043, "remotecontrolturretoff" }, { 0x8044, "shootturret" }, { 0x8045, "getturretowner" }, { 0x8046, "setsentryowner" }, { 0x8047, "setsentrycarrier" }, { 0x8048, "setturretminimapvisible" }, { 0x8049, "settargetentity" }, { 0x804A, "snaptotargetentity" }, { 0x804B, "cleartargetentity" }, { 0x804C, "getturrettarget" }, { 0x804D, "setplayerspread" }, { 0x804E, "setaispread" }, { 0x804F, "setsuppressiontime" }, { 0x8050, "setconvergencetime" }, { 0x8051, "setconvergenceheightpercent" }, { 0x8052, "setturretteam" }, { 0x8053, "maketurretsolid" }, { 0x8054, "maketurretoperable" }, { 0x8055, "maketurretinoperable" }, { 0x8056, "setturretaccuracy" }, { 0x8057, "setrightarc" }, { 0x8058, "setleftarc" }, { 0x8059, "settoparc" }, { 0x805A, "setbottomarc" }, { 0x805B, "setautorotationdelay" }, { 0x805C, "setdefaultdroppitch" }, { 0x805D, "restoredefaultdroppitch" }, { 0x805E, "turretfiredisable" }, { 0x805F, "turretfireenable" }, { 0x8060, "setturretmodechangewait" }, { 0x8061, "usetriggerrequirelookat" }, { 0x8062, "getstance" }, { 0x8063, "setstance" }, { 0x8064, "itemweaponsetammo" }, { 0x8065, "getammocount" }, { 0x8066, "gettagorigin" }, { 0x8067, "gettagangles" }, { 0x8068, "shellshock" }, { 0x8069, "stunplayer" }, { 0x806A, "stopshellshock" }, { 0x806B, "fadeoutshellshock" }, { 0x806C, "setdepthoffield" }, { 0x806D, "setviewmodeldepthoffield" }, { 0x806E, "setmotionblurmovescale" }, { 0x806F, "setmotionblurturnscale" }, { 0x8070, "setmotionblurzoomscale" }, { 0x8071, "viewkick" }, { 0x8072, "localtoworldcoords" }, { 0x8073, "getentitynumber" }, { 0x8074, "getentityvelocity" }, { 0x8075, "enablegrenadetouchdamage" }, { 0x8076, "disablegrenadetouchdamage" }, { 0x8077, "enableaimassist" }, { 0x8078, "disableaimassist" }, { 0x8079, "radiusdamage" }, { 0x807A, "detonate" }, { 0x807B, "damageconetrace" }, { 0x807C, "sightconetrace" }, { 0x807D, "missile_settargetent" }, { 0x807E, "missile_settargetpos" }, { 0x807F, "missile_cleartarget" }, { 0x8080, "missile_setflightmodedirect" }, { 0x8081, "missile_setflightmodetop" }, { 0x8082, "getlightintensity" }, { 0x8083, "setlightintensity" }, { 0x8084, "isragdoll" }, { 0x8085, "setmovespeedscale" }, { 0x8086, "cameralinkto" }, { 0x8087, "cameraunlink" }, { 0x8088, "controlslinkto" }, { 0x8089, "controlsunlink" }, { 0x808A, "makevehiclesolidcapsule" }, { 0x808B, "makevehiclesolidsphere" }, { 0x808C, "makevehiclesolid" }, { 0x808D, "remotecontrolvehicle" }, { 0x808E, "remotecontrolvehicleoff" }, { 0x808F, "isfiringvehicleturret" }, { 0x8090, "drivevehicleandcontrolturret" }, { 0x8091, "drivevehicleandcontrolturretoff" }, { 0x8092, "getplayersetting" }, { 0x8093, "getlocalplayerprofiledata" }, { 0x8094, "setlocalplayerprofiledata" }, { 0x8095, "remotecamerasoundscapeon" }, { 0x8096, "remotecamerasoundscapeoff" }, { 0x8097, "radarjamon" }, { 0x8098, "radarjamoff" }, { 0x8099, "setmotiontrackervisible" }, { 0x809A, "getmotiontrackervisible" }, { 0x809B, "worldpointinreticle_circle" }, { 0x809C, "getpointinbounds" }, { 0x809D, "transfermarkstonewscriptmodel" }, { 0x809E, "setwatersheeting" }, { 0x809F, "setweaponhudiconoverride" }, { 0x80A0, "getweaponhudiconoverride" }, { 0x80A1, "setempjammed" }, { 0x80A2, "playersetexpfog" }, { 0x80A3, "isitemunlocked" }, { 0x80A4, "getplayerdata" }, { 0x80A5, "setplayerdata" }, { 0x80A6, "trackerupdate" }, { 0x80A7, "pingplayer" }, { 0x80A8, "buttonpressed" }, { 0x80A9, "sayall" }, { 0x80AA, "sayteam" }, { 0x80AB, "showscoreboard" }, { 0x80AC, "setspawnweapon" }, { 0x80AD, "dropitem" }, { 0x80AE, "dropscavengerbag" }, { 0x80AF, "finishplayerdamage" }, { 0x80B0, "suicide" }, { 0x80B1, "closeingamemenu" }, { 0x80B2, "iprintln" }, { 0x80B3, "iprintlnbold" }, { 0x80B4, "spawn" }, { 0x80B5, "setentertime" }, { 0x80B6, "cloneplayer" }, { 0x80B7, "istalking" }, { 0x80B8, "allowspectateteam" }, { 0x80B9, "getguid" }, { 0x80BA, "getxuid" }, { 0x80BB, "ishost" }, { 0x80BC, "getspectatingplayer" }, { 0x80BD, "predictstreampos" }, { 0x80BE, "updatescores" }, { 0x80BF, "updatedmscores" }, { 0x80C0, "setrank" }, { 0x80C1, "setcardtitle" }, { 0x80C2, "setcardicon" }, { 0x80C3, "setcardnameplate" }, { 0x80C4, "setcarddisplayslot" }, { 0x80C5, "kc_regweaponforfxremoval" }, { 0x80C6, "laststandrevive" }, { 0x80C7, "setspectatedefaults" }, { 0x80C8, "getthirdpersoncrosshairoffset" }, { 0x80C9, "disableweaponpickup" }, { 0x80CA, "enableweaponpickup" }, { 0x80CB, "issplitscreenplayer" }, { 0x80CC, "issplitscreenplayerprimary" }, { 0x80CD, "getviewmodel" }, { 0x80CE, "fragbuttonpressed" }, { 0x80CF, "secondaryoffhandbuttonpressed" }, { 0x80D0, "getcurrentweaponclipammo" }, { 0x80D1, "setvelocity" }, { 0x80D2, "getplayerviewheight" }, { 0x80D3, "getnormalizedmovement" }, { 0x80D4, "getnormalizedcameramovement" }, { 0x80D5, "giveweapon" }, { 0x80D6, "takeweapon" }, { 0x80D7, "takeallweapons" }, { 0x80D8, "getcurrentweapon" }, { 0x80D9, "getcurrentprimaryweapon" }, { 0x80DA, "getcurrentoffhand" }, { 0x80DB, "hasweapon" }, { 0x80DC, "switchtoweapon" }, { 0x80DD, "switchtoweaponimmediate" }, { 0x80DE, "switchtooffhand" }, { 0x80DF, "givestartammo" }, { 0x80E0, "givemaxammo" }, { 0x80E1, "getfractionstartammo" }, { 0x80E2, "getfractionmaxammo" }, { 0x80E3, "isdualwielding" }, { 0x80E4, "isreloading" }, { 0x80E5, "isswitchingweapon" }, { 0x80E6, "setorigin" }, { 0x80E7, "getvelocity" }, { 0x80E8, "setplayerangles" }, { 0x80E9, "getplayerangles" }, { 0x80EA, "usebuttonpressed" }, { 0x80EB, "attackbuttonpressed" }, { 0x80EC, "adsbuttonpressed" }, { 0x80ED, "meleebuttonpressed" }, { 0x80EE, "playerads" }, { 0x80EF, "isonground" }, { 0x80F0, "isusingturret" }, { 0x80F1, "setviewmodel" }, { 0x80F2, "setoffhandprimaryclass" }, { 0x80F3, "getoffhandprimaryclass" }, { 0x80F4, "setoffhandsecondaryclass" }, { 0x80F5, "getoffhandsecondaryclass" }, { 0x80F6, "beginlocationselection" }, { 0x80F7, "endlocationselection" }, { 0x80F8, "disableweapons" }, { 0x80F9, "enableweapons" }, { 0x80FA, "disableoffhandweapons" }, { 0x80FB, "enableoffhandweapons" }, { 0x80FC, "disableweaponswitch" }, { 0x80FD, "enableweaponswitch" }, { 0x80FE, "openpopupmenu" }, { 0x80FF, "openpopupmenunomouse" }, { 0x8100, "closepopupmenu" }, { 0x8101, "openmenu" }, { 0x8102, "closemenu" }, { 0x8103, "savematchrulestohistory" }, { 0x8104, "freezecontrols" }, { 0x8105, "disableusability" }, { 0x8106, "enableusability" }, { 0x8107, "setwhizbyspreads" }, { 0x8108, "setwhizbyradii" }, { 0x8109, "setreverb" }, { 0x810A, "deactivatereverb" }, { 0x810B, "setvolmod" }, { 0x810C, "setchannelvolume" }, { 0x810D, "setchannelvolumes" }, { 0x810E, "deactivatechannelvolumes" }, { 0x810F, "playlocalsound" }, { 0x8110, "stoplocalsound" }, { 0x8111, "setweaponammoclip" }, { 0x8112, "setweaponammostock" }, { 0x8113, "getweaponammoclip" }, { 0x8114, "getweaponammostock" }, { 0x8115, "anyammoforweaponmodes" }, { 0x8116, "setclientdvar" }, { 0x8117, "setclientdvars" }, { 0x8118, "allowads" }, { 0x8119, "allowjump" }, { 0x811A, "allowsprint" }, { 0x811B, "setspreadoverride" }, { 0x811C, "resetspreadoverride" }, { 0x811D, "setaimspreadmovementscale" }, { 0x811E, "setactionslot" }, { 0x811F, "setviewkickscale" }, { 0x8120, "getviewkickscale" }, { 0x8121, "getweaponslistall" }, { 0x8122, "getweaponslistprimaries" }, { 0x8123, "getweaponslistoffhands" }, { 0x8124, "getweaponslistitems" }, { 0x8125, "getweaponslistexclusives" }, { 0x8126, "getweaponslist" }, { 0x8127, "canplayerplacesentry" }, { 0x8128, "canplayerplacetank" }, { 0x8129, "visionsetnakedforplayer" }, { 0x812A, "visionsetnightforplayer" }, { 0x812B, "visionsetmissilecamforplayer" }, { 0x812C, "visionsetthermalforplayer" }, { 0x812D, "visionsetpainforplayer" }, { 0x812E, "setblurforplayer" }, { 0x812F, "getplayerweaponmodel" }, { 0x8130, "getplayerknifemodel" }, { 0x8131, "updateplayermodelwithweapons" }, { 0x8132, "notifyonplayercommand" }, { 0x8133, "canmantle" }, { 0x8134, "forcemantle" }, { 0x8135, "ismantling" }, { 0x8136, "playfx" }, { 0x8137, "player_recoilscaleon" }, { 0x8138, "player_recoilscaleoff" }, { 0x8139, "weaponlockstart" }, { 0x813A, "weaponlockfinalize" }, { 0x813B, "weaponlockfree" }, { 0x813C, "weaponlocktargettooclose" }, { 0x813D, "weaponlocknoclearance" }, { 0x813E, "visionsyncwithplayer" }, { 0x813F, "showhudsplash" }, { 0x8140, "setperk" }, { 0x8141, "hasperk" }, { 0x8142, "clearperks" }, { 0x8143, "unsetperk" }, { 0x8144, "noclip" }, { 0x8145, "ufo" }, { 0x8146, "moveto" }, { 0x8147, "movex" }, { 0x8148, "movey" }, { 0x8149, "movez" }, { 0x814A, "movegravity" }, { 0x814B, "moveslide" }, { 0x814C, "stopmoveslide" }, { 0x814D, "rotateto" }, { 0x814E, "rotatepitch" }, { 0x814F, "rotateyaw" }, { 0x8150, "rotateroll" }, { 0x8151, "addpitch" }, { 0x8152, "addyaw" }, { 0x8153, "addroll" }, { 0x8154, "vibrate" }, { 0x8155, "rotatevelocity" }, { 0x8156, "solid" }, { 0x8157, "notsolid" }, { 0x8158, "setcandamage" }, { 0x8159, "setcanradiusdamage" }, { 0x815A, "physicslaunchclient" }, { 0x815B, "physicslaunchserver" }, { 0x815C, "physicslaunchserveritem" }, { 0x815D, "clonebrushmodeltoscriptmodel" }, { 0x815E, "scriptmodelplayanim" }, { 0x815F, "scriptmodelclearanim" }, { 0x8160, "vehicle_teleport" }, { 0x8161, "attachpath" }, { 0x8162, "getattachpos" }, { 0x8163, "startpath" }, { 0x8164, "setswitchnode" }, { 0x8165, "setwaitspeed" }, { 0x8166, "vehicle_finishdamage" }, { 0x8167, "vehicle_setspeed" }, { 0x8168, "vehicle_setspeedimmediate" }, { 0x8169, "vehicle_rotateyaw" }, { 0x816A, "vehicle_getspeed" }, { 0x816B, "vehicle_getvelocity" }, { 0x816C, "vehicle_getbodyvelocity" }, { 0x816D, "vehicle_getsteering" }, { 0x816E, "vehicle_getthrottle" }, { 0x816F, "vehicle_turnengineoff" }, { 0x8170, "vehicle_turnengineon" }, { 0x8171, "getgoalspeedmph" }, { 0x8172, "setacceleration" }, { 0x8173, "setdeceleration" }, { 0x8174, "resumespeed" }, { 0x8175, "setyawspeed" }, { 0x8176, "setyawspeedbyname" }, { 0x8177, "setmaxpitchroll" }, { 0x8178, "setairresistance" }, { 0x8179, "setturningability" }, { 0x817A, "setjitterparams" }, { 0x817B, "sethoverparams" }, { 0x817C, "joltbody" }, { 0x817D, "freevehicle" }, { 0x817E, "getwheelsurface" }, { 0x817F, "getvehicleowner" }, { 0x8180, "setvehiclelookattext" }, { 0x8181, "setvehicleteam" }, { 0x8182, "setneargoalnotifydist" }, { 0x8183, "setvehgoalpos" }, { 0x8184, "setgoalyaw" }, { 0x8185, "cleargoalyaw" }, { 0x8186, "settargetyaw" }, { 0x8187, "cleartargetyaw" }, { 0x8188, "vehicle_helisetai" }, { 0x8189, "setturrettargetvec" }, { 0x818A, "setturrettargetent" }, { 0x818B, "clearturrettarget" }, { 0x818C, "vehicle_canturrettargetpoint" }, { 0x818D, "setlookatent" }, { 0x818E, "clearlookatent" }, { 0x818F, "setvehweapon" }, { 0x8190, "fireweapon" }, { 0x8191, "vehicleturretcontrolon" }, { 0x8192, "vehicleturretcontroloff" }, { 0x8193, "isturretready" }, { 0x8194, "vehicledriveto" }, { 0x8195, "vehicle_dospawn" }, { 0x8196, "vehicle_isphysveh" }, { 0x8197, "vehphys_crash" }, { 0x8198, "vehphys_launch" }, { 0x8199, "vehphys_disablecrashing" }, { 0x819A, "vehphys_enablecrashing" }, { 0x819B, "vehphys_setspeed" }, { 0x819C, "vehphys_setconveyorbelt" }, { 0x819D, "freehelicopter" }, { 0x819E, "playerlinkedturretanglesenable" }, { 0x819F, "playerlinkedturretanglesdisable" }, { 0x81A0, "playersetstreamorigin" }, { 0x81A1, "playerclearstreamorigin" }, { 0x81A2, "nightvisionviewon" }, { 0x81A3, "nightvisionviewoff" }, { 0x81A4, "painvisionon" }, { 0x81A5, "painvisionoff" }, { 0x81A6, "getplayerintelisfound" }, { 0x81A7, "setplayerintelfound" }, { 0x81A8, "newpip" }, { 0x81A9, "sethuddynlight" }, { 0x81AA, "startscriptedanim" }, { 0x81AB, "startcoverbehavior" }, { 0x81AC, "startcoverarrival" }, { 0x81AD, "starttraversearrival" }, { 0x81AE, "checkcoverexitposwithpath" }, { 0x81AF, "shoot" }, { 0x81B0, "shootblank" }, { 0x81B1, "melee" }, { 0x81B2, "updateplayersightaccuracy" }, { 0x81B3, "findshufflecovernode" }, { 0x81B4, "findnearbycovernode" }, { 0x81B5, "findcovernode" }, { 0x81B6, "findbestcovernode" }, { 0x81B7, "getcovernode" }, { 0x81B8, "usecovernode" }, { 0x81B9, "iscovervalidagainstenemy" }, { 0x81BA, "reacquirestep" }, { 0x81BB, "findreacquiredirectpath" }, { 0x81BC, "trimpathtoattack" }, { 0x81BD, "reacquiremove" }, { 0x81BE, "findreacquireproximatepath" }, { 0x81BF, "flagenemyunattackable" }, { 0x81C0, "enterprone" }, { 0x81C1, "exitprone" }, { 0x81C2, "setproneanimnodes" }, { 0x81C3, "updateprone" }, { 0x81C4, "clearpitchorient" }, { 0x81C5, "setlookatanimnodes" }, { 0x81C6, "setlookat" }, { 0x81C7, "setlookatentity" }, { 0x81C8, "setlookatyawlimits" }, { 0x81C9, "stoplookat" }, { 0x81CA, "getmuzzlepos" }, { 0x81CB, "getmuzzleangle" }, { 0x81CC, "getmuzzlesideoffsetpos" }, { 0x81CD, "getaimangle" }, { 0x81CE, "canshoot" }, { 0x81CF, "canshootenemy" }, { 0x81D0, "cansee" }, { 0x81D1, "seerecently" }, { 0x81D2, "lastknowntime" }, { 0x81D3, "lastknownpos" }, { 0x81D4, "dropweapon" }, { 0x81D5, "maymovetopoint" }, { 0x81D6, "maymovefrompointtopoint" }, { 0x81D7, "teleport" }, { 0x81D8, "forceteleport" }, { 0x81D9, "safeteleport" }, { 0x81DA, "withinapproxpathdist" }, { 0x81DB, "ispathdirect" }, { 0x81DC, "allowedstances" }, { 0x81DD, "isstanceallowed" }, { 0x81DE, "issuppressionwaiting" }, { 0x81DF, "issuppressed" }, { 0x81E0, "ismovesuppressed" }, { 0x81E1, "isgrenadepossafe" }, { 0x81E2, "checkgrenadethrow" }, { 0x81E3, "checkgrenadelaunch" }, { 0x81E4, "checkgrenadelaunchpos" }, { 0x81E5, "throwgrenade" }, { 0x81E6, "pickupgrenade" }, { 0x81E7, "useturret" }, { 0x81E8, "stopuseturret" }, { 0x81E9, "canuseturret" }, { 0x81EA, "traversemode" }, { 0x81EB, "animmode" }, { 0x81EC, "orientmode" }, { 0x81ED, "getmotionangle" }, { 0x81EE, "shouldfacemotion" }, { 0x81EF, "getanglestolikelyenemypath" }, { 0x81F0, "setturretanim" }, { 0x81F1, "getturret" }, { 0x81F2, "getgroundenttype" }, { 0x81F3, "animcustom" }, { 0x81F4, "isinscriptedstate" }, { 0x81F5, "canattackenemynode" }, { 0x81F6, "getnegotiationstartnode" }, { 0x81F7, "getnegotiationendnode" }, { 0x81F8, "getdoorpathnode" }, { 0x81F9, "comparenodedirtopathdir" }, { 0x81FA, "checkprone" }, { 0x81FB, "pushplayer" }, { 0x81FC, "checkgrenadethrowpos" }, { 0x81FD, "setgoalnode" }, { 0x81FE, "setgoalpos" }, { 0x81FF, "setgoalentity" }, { 0x8200, "setgoalvolume" }, { 0x8201, "setgoalvolumeauto" }, { 0x8202, "getgoalvolume" }, { 0x8203, "cleargoalvolume" }, { 0x8204, "setfixednodesafevolume" }, { 0x8205, "getfixednodesafevolume" }, { 0x8206, "clearfixednodesafevolume" }, { 0x8207, "isingoal" }, { 0x8208, "setruntopos" }, { 0x8209, "nearnode" }, { 0x820A, "nearclaimnode" }, { 0x820B, "nearclaimnodeandangle" }, { 0x820C, "atdangerousnode" }, { 0x820D, "getenemyinfo" }, { 0x820E, "clearenemy" }, { 0x820F, "setentitytarget" }, { 0x8210, "clearentitytarget" }, { 0x8211, "setpotentialthreat" }, { 0x8212, "clearpotentialthreat" }, { 0x8213, "setflashbanged" }, { 0x8214, "setengagementmindist" }, { 0x8215, "setengagementmaxdist" }, { 0x8216, "isknownenemyinradius" }, { 0x8217, "isknownenemyinvolume" }, { 0x8218, "settalktospecies" }, { 0x8219, "laseralton" }, { 0x821A, "laseraltoff" }, { 0x821B, "invisiblenotsolid" }, { 0x821C, "visiblesolid" }, { 0x821D, "setdefaultaimlimits" }, { 0x821E, "initriotshieldhealth" }, { 0x821F, "getenemysqdist" }, { 0x8220, "getclosestenemysqdist" }, { 0x8221, "setthreatbiasgroup" }, { 0x8222, "getthreatbiasgroup" }, { 0x8223, "makeentitysentient" }, { 0x8224, "freeentitysentient" }, { 0x8225, "isindoor" }, { 0x8226, "getdroptofloorposition" }, { 0x8227, "isbadguy" }, { 0x8228, "animscripted" }, { 0x8229, "animscriptedthirdperson" }, { 0x822A, "animrelative" }, { 0x822B, "stopanimscripted" }, { 0x822C, "clearanim" }, { 0x822D, "setanimknob" }, { 0x822E, "setanimknoblimited" }, { 0x822F, "setanimknobrestart" }, { 0x8230, "setanimknoblimitedrestart" }, { 0x8231, "setanimknoball" }, { 0x8232, "setanimknoballlimited" }, { 0x8233, "setanimknoballrestart" }, { 0x8234, "setanimknoballlimitedrestart" }, { 0x8235, "setanim" }, { 0x8236, "setanimlimited" }, { 0x8237, "setanimrestart" }, { 0x8238, "setanimlimitedrestart" }, { 0x8239, "getanimtime" }, { 0x823A, "getanimweight" }, { 0x823B, "getanimassettype" }, { 0x823C, "setflaggedanimknob" }, { 0x823D, "setflaggedanimknoblimited" }, { 0x823E, "setflaggedanimknobrestart" }, { 0x823F, "setflaggedanimknoblimitedrestart" }, { 0x8240, "setflaggedanimknoball" }, { 0x8241, "setflaggedanimknoballrestart" }, { 0x8242, "setflaggedanim" }, { 0x8243, "setflaggedanimlimited" }, { 0x8244, "setflaggedanimrestart" }, { 0x8245, "setflaggedanimlimitedrestart" }, { 0x8246, "useanimtree" }, { 0x8247, "stopuseanimtree" }, { 0x8248, "setanimtime" }, { 0x8249, "showviewmodel" }, { 0x824A, "hideviewmodel" }, { 0x824B, "allowstand" }, { 0x824C, "allowcrouch" }, { 0x824D, "allowprone" }, { 0x824E, "allowlean" }, { 0x824F, "setocclusion" }, { 0x8250, "deactivateocclusion" }, { 0x8251, "isocclusionenabled" }, { 0x8252, "iseqenabled" }, { 0x8253, "seteq" }, { 0x8254, "seteqbands" }, { 0x8255, "deactivateeq" }, { 0x8256, "seteqlerp" }, { 0x8257, "islookingat" }, { 0x8258, "isthrowinggrenade" }, { 0x8259, "isfiring" }, { 0x825A, "ismeleeing" }, { 0x825B, "setautopickup" }, { 0x825C, "allowmelee" }, { 0x825D, "allowfire" }, { 0x825E, "enablehealthshield" }, { 0x825F, "enabledeathshield" }, { 0x8260, "nightvisiongogglesforceon" }, { 0x8261, "nightvisiongogglesforceoff" }, { 0x8262, "enableinvulnerability" }, { 0x8263, "disableinvulnerability" }, { 0x8264, "enablebreaching" }, { 0x8265, "disablebreaching" }, { 0x8266, "forceviewmodelanimation" }, { 0x8267, "disableturretdismount" }, { 0x8268, "enableturretdismount" }, { 0x8269, "uploadscore" }, { 0x826A, "uploadtime" }, { 0x826B, "uploadleaderboards" }, { 0x826C, "giveachievement" }, { 0x826D, "hidehud" }, { 0x826E, "showhud" }, { 0x826F, "mountvehicle" }, { 0x8270, "dismountvehicle" }, { 0x8271, "enableslowaim" }, { 0x8272, "disableslowaim" }, { 0x8273, "usehintsinvehicle" }, { 0x8274, "vehicleattackbuttonpressed" }, { 0x8275, "setwhizbyoffset" }, { 0x8276, "setwhizbyprobabilities" }, { 0x8277, "visionsetnakedforplayer_lerp" }, { 0x8278, "setwaitnode" }, { 0x8279, "returnplayercontrol" }, { 0x827A, "vehphys_starttrack" }, { 0x827B, "vehphys_clearautodisable" }, { 0x827C, "vehicleusealtblendedaudio" }, { 0x827D, "settext" }, { 0x827E, "clearalltextafterhudelem" }, { 0x827F, "setshader" }, { 0x8280, "settargetent" }, { 0x8281, "cleartargetent" }, { 0x8282, "settimer" }, { 0x8283, "settimerup" }, { 0x8284, "settimerstatic" }, { 0x8285, "settenthstimer" }, { 0x8286, "settenthstimerup" }, { 0x8287, "settenthstimerstatic" }, { 0x8288, "setclock" }, { 0x8289, "setclockup" }, { 0x828A, "setvalue" }, { 0x828B, "setwaypoint" }, { 0x828C, "setwaypointedgestyle_rotatingicon" }, { 0x828D, "setwaypointedgestyle_secondaryarrow" }, { 0x828E, "setwaypointiconoffscreenonly" }, { 0x828F, "fadeovertime" }, { 0x8290, "scaleovertime" }, { 0x8291, "moveovertime" }, { 0x8292, "reset" }, { 0x8293, "destroy" }, { 0x8294, "setpulsefx" }, { 0x8295, "setplayernamestring" }, { 0x8296, "changefontscaleovertime" }, { 0x8297, "startignoringspotlight" }, { 0x8298, "stopignoringspotlight" }, { 0x8299, "dontcastshadows" }, { 0x829A, "castshadows" }, { 0x829B, "setstablemissile" }, { 0x829C, "playersetgroundreferenceent" }, { 0x829D, "dontinterpolate" }, { 0x829E, "dospawn" }, { 0x829F, "stalingradspawn" }, { 0x82A0, "getorigin" }, { 0x82A1, "getcentroid" }, { 0x82A2, "getshootatpos" }, { 0x82A3, "getdebugeye" }, { 0x82A4, "useby" }, { 0x82A5, "playsound" }, { 0x82A6, "playsoundatviewheight" }, { 0x82A7, "prefetchsound" }, { 0x82A8, "setpitch" }, { 0x82A9, "scalepitch" }, { 0x82AA, "setvolume" }, { 0x82AB, "scalevolume" }, { 0x82AC, "setspeakermapmonotostereo" }, { 0x82AD, "setspeakermapmonoto51" }, { 0x82AE, "setdistributed2dsound" }, { 0x82AF, "playsoundasmaster" }, { 0x82B0, "playloopsound" }, { 0x82B1, "eqon" }, { 0x82B2, "eqoff" }, { 0x82B3, "haseq" }, { 0x82B4, "iswaitingonsound" }, { 0x82B5, "getnormalhealth" }, { 0x82B6, "setnormalhealth" }, { 0x82B7, "dodamage" }, { 0x82B8, "kill" }, { 0x82B9, "show" }, { 0x82BA, "hide" }, { 0x82BB, "showonclient" }, { 0x82BC, "hideonclient" }, { 0x82BD, "laserforceon" }, { 0x82BE, "laserforceoff" }, { 0x82BF, "disconnectpaths" }, { 0x82C0, "connectpaths" }, { 0x82C1, "startusingheroonlylighting" }, { 0x82C2, "stopusingheroonlylighting" }, { 0x82C3, "startusinglessfrequentlighting" }, { 0x82C4, "stopusinglessfrequentlighting" }, { 0x82C5, "setthermalfog" }, { 0x82C6, "setnightvisionfog" }, { 0x82C7, "clearthermalfog" }, { 0x82C8, "clearnightvisionfog" }, { 0x82C9, "digitaldistortsetparams" }, { 0x82CA, "setmode" }, { 0x82CB, "getmode" }, { 0x82CC, "setturretignoregoals" }, { 0x82CD, "setturretcanaidetach" }, { 0x82CE, "setturretfov" }, { 0x82CF, "lerpfov" }, { 0x82D0, "getvalidcoverpeekouts" }, { 0x82D1, "gethighestnodestance" }, { 0x82D2, "doesnodeallowstance" }, { 0x82D3, "getgunangles" }, { 0x82D4, "magicgrenade" }, { 0x82D5, "magicgrenademanual" }, { 0x82D6, "setfriendlychain" }, { 0x82D7, "getentnum" }, { 0x82D8, "launch" }, { 0x82D9, "setsoundblend" }, { 0x82DA, "makefakeai" }, { 0x82DB, "spawndrone" }, { 0x82DC, "setcorpseremovetimer" }, { 0x82DD, "setlookattext" }, { 0x82DE, "setspawnerteam" }, { 0x82DF, "addaieventlistener" }, { 0x82E0, "removeaieventlistener" }, { 0x82E1, "getlightcolor" }, { 0x82E2, "setlightcolor" }, { 0x82E3, "getlightradius" }, { 0x82E4, "setlightradius" }, { 0x82E5, "getlightfovinner" }, { 0x82E6, "getlightfovouter" }, { 0x82E7, "setlightfovrange" }, { 0x82E8, "getlightexponent" }, { 0x82E9, "setlightexponent" }, { 0x82EA, "startragdoll" }, { 0x82EB, "startragdollfromimpact" }, { 0x82EC, "logstring" }, { 0x82ED, "laserhidefromclient" }, { 0x82EE, "stopsoundchannel" }, { 0x82EF, "thermaldrawenable" }, { 0x82F0, "thermaldrawdisable" }, { 0x82F1, "setturretdismountorg" }, { 0x82F2, "setdamagestage" }, { 0x82F3, "playsoundtoteam" }, { 0x82F4, "playsoundtoplayer" }, { 0x82F5, "playerhide" }, { 0x82F6, "showtoplayer" }, { 0x82F7, "enableplayeruse" }, { 0x82F8, "disableplayeruse" }, { 0x82F9, "makescrambler" }, { 0x82FA, "makeportableradar" }, { 0x82FB, "maketrophysystem" }, { 0x82FC, "placespawnpoint" }, { 0x82FD, "setteamfortrigger" }, { 0x82FE, "clientclaimtrigger" }, { 0x82FF, "clientreleasetrigger" }, { 0x8300, "releaseclaimedtrigger" }, { 0x8301, "isusingonlinedataoffline" }, { 0x8302, "getrestedtime" }, { 0x8303, "sendleaderboards" }, { 0x8304, "isonladder" }, { 0x8305, "getcorpseanim" }, { 0x8306, "playerforcedeathanim" }, { 0x8307, "startac130" }, { 0x8308, "stopac130" }, { 0x8309, "enablemousesteer" }, { 0x830A, "setscriptmoverkillcam" }, { 0x830B, "setmapnamestring" }, { 0x830C, "setgametypestring" }, }}; const std::array, 5> token_list {{ { 0x0000, "" }, { 0x0001, "pl#" }, { 0x0002, "-" }, { 0x0003, "radius`" }, { 0x0004, "note:" }, }}; struct __init__ { __init__() { static bool init = false; if (init) return; init = true; opcode_map.reserve(opcode_list.size()); opcode_map_rev.reserve(opcode_list.size()); function_map.reserve(function_list.size()); function_map_rev.reserve(function_list.size()); method_map.reserve(method_list.size()); method_map_rev.reserve(method_list.size()); token_map.reserve(token_list.size()); token_map_rev.reserve(token_list.size()); for (const auto& entry : opcode_list) { opcode_map.insert({ entry.first, entry.second }); opcode_map_rev.insert({ entry.second, entry.first }); } for (const auto& entry : function_list) { function_map.insert({ entry.first, entry.second }); function_map_rev.insert({ entry.second, entry.first }); } for (const auto& entry : method_list) { method_map.insert({ entry.first, entry.second }); method_map_rev.insert({ entry.second, entry.first }); } for (const auto& entry : token_list) { token_map.insert({ entry.first, entry.second }); token_map_rev.insert({ utils::string::to_lower(entry.second), entry.first }); } } }; __init__ _; } // namespace xsk::gsc::iw5_console #ifdef _MSC_VER #pragma warning(pop) #endif