{"id":24626683,"url":"https://github.com/ziggi/fcnpc","last_synced_at":"2025-07-15T04:04:20.094Z","repository":{"id":3490514,"uuid":"49101449","full_name":"ziggi/FCNPC","owner":"ziggi","description":"FCNPC - Fully Controllable NPC","archived":false,"fork":false,"pushed_at":"2024-12-03T04:25:39.000Z","size":36645,"stargazers_count":139,"open_issues_count":31,"forks_count":32,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-28T15:06:03.884Z","etag":null,"topics":["cmake","disassembly","gta","gtasa","hooks","memory-hacking","multiplayer","npc","plugin","sa-mp","samp","sanandreas"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ziggi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-06T00:34:50.000Z","updated_at":"2025-03-15T22:15:30.000Z","dependencies_parsed_at":"2024-04-06T18:29:28.927Z","dependency_job_id":"203f3a1f-43a1-41e9-acc1-caa0584092e6","html_url":"https://github.com/ziggi/FCNPC","commit_stats":{"total_commits":776,"total_committers":15,"mean_commits":"51.733333333333334","dds":0.5502577319587629,"last_synced_commit":"0d801d3cf4756727fe97d4dce1131f7ec22fed47"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziggi%2FFCNPC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziggi%2FFCNPC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziggi%2FFCNPC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziggi%2FFCNPC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ziggi","download_url":"https://codeload.github.com/ziggi/FCNPC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208147,"owners_count":20901570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","disassembly","gta","gtasa","hooks","memory-hacking","multiplayer","npc","plugin","sa-mp","samp","sanandreas"],"created_at":"2025-01-25T04:49:31.026Z","updated_at":"2025-07-15T04:04:20.080Z","avatar_url":"https://github.com/ziggi.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"FCNPC - Fully Controllable NPC\n==============================\n[![GitHub version](https://badge.fury.io/gh/ziggi%2FFCNPC.svg)](https://badge.fury.io/gh/ziggi%2FFCNPC) [![Build Status](https://travis-ci.org/ziggi/FCNPC.svg?branch=master)](https://travis-ci.org/ziggi/FCNPC) [![Build status](https://ci.appveyor.com/api/projects/status/e4cbhqdflr97arti?svg=true)](https://ci.appveyor.com/project/ziggi/fcnpc)\n\nFully Controllable NPC (FCNPC) is a plugin for SA-MP servers which adds a lot of capabilities to the existing standard NPCs.\n\nThe latest version can be found in the [releases section](../../releases).\n\nThis is a fork of the [original repository](https://github.com/OrMisicL/FCNPC) by [OrMisicL](http://forum.sa-mp.com/member.php?u=197901).\n\nIf you encounter a bug or a crash, create an issue in the [issues section](../../issues) with your **crashlog** and your **Pawn script**.\n\nFor more elaborate discussions see the [forum thread](http://forum.sa-mp.com/showthread.php?t=428066) *(it was deleted)*, or the [Russian forum thread](https://sampforum.blast.hk/showthread.php?tid=602965) *(archive)*.\n\nSee the [wiki](../../wiki) for documentation.\n\nPathfinding\n-----------\n\nA pathfinding [was planned](https://github.com/ziggi/FCNPC/issues/8) for the 2.0 version of the plugin, but this version was released without this feature.\n\nSo at the moment, pathfinding can only be implemented using third-party plugins.\n\nMapAndreas and ColAndreas support\n---------------------------------\nFCNPC supports working with [MapAndreas](http://forum.sa-mp.com/showpost.php?p=3130004\u0026postcount=153) or [ColAndreas](http://forum.sa-mp.com/showthread.php?t=586068), for better NPC height positioning. Just add these plugins before FCNPC on the `plugins` line in the `server.cfg` file.\n\nSources\n-------\nTo download the sources, use the following git command:\n```bash\ngit clone --recursive https://github.com/ziggi/FCNPC.git\n```\nNote the use of the `--recursive` argument, because this repository contains submodules.\n\nBuilding\n--------\nTo build the project you can use [Visual Studio](https://www.visualstudio.com/). To generate the project you can use [CMake](https://cmake.org/).\u003cbr /\u003e\nOn Windows, execute the following commands:\n```bash\ncd FCNPC\nmkdir build\ncd build\ncmake .. -A Win32\n```\n\nOn Linux, execute the following commands:\n```bash\ncd FCNPC\nmkdir build\ncd build\ncmake ..\nmake\n```\n\nSpecial thanks\n--------------\n- **SA-MP Team:** SA-MP\n- **OrMisicL:** FCNPC creator\n- **Zeex:** Subhook library\n- **kurta999:** YSF plugin\n- **Lorenc_, kurta999, Neutralneu, therainycat, Freaksken, karimcambridge:** Contributors\n- **urShadow, Incognito:** Code samples in their plugins\n- **Freaksken:** Creating and updating the wiki\n- **Whole SA-MP community:** Testing\n\nConstants\n---------\n```Pawn\n#define FCNPC_INCLUDE_VERSION\t\tThe current FCNPC include version.\n\n#define FCNPC_ENTITY_CHECK_NONE\t\t(0)\n#define FCNPC_ENTITY_CHECK_PLAYER\t(1)\n#define FCNPC_ENTITY_CHECK_NPC\t\t(2)\n#define FCNPC_ENTITY_CHECK_ACTOR\t(4)\n#define FCNPC_ENTITY_CHECK_VEHICLE\t(8)\n#define FCNPC_ENTITY_CHECK_OBJECT\t(16)\n#define FCNPC_ENTITY_CHECK_POBJECT_ORIG\t(32)\n#define FCNPC_ENTITY_CHECK_POBJECT_TARG\t(64)\n#define FCNPC_ENTITY_CHECK_MAP\t\t(128)\n#define FCNPC_ENTITY_CHECK_ALL\t\t(255)\n\n#define FCNPC_ENTITY_MODE_AUTO\t\t(-1)\n#define FCNPC_ENTITY_MODE_NONE\t\t(0)\n#define FCNPC_ENTITY_MODE_COLANDREAS\t(1)\n\n#define FCNPC_MOVE_TYPE_AUTO\t\t(-1)\n#define FCNPC_MOVE_TYPE_WALK\t\t(0)\n#define FCNPC_MOVE_TYPE_RUN\t\t(1)\n#define FCNPC_MOVE_TYPE_SPRINT\t\t(2)\n#define FCNPC_MOVE_TYPE_DRIVE\t\t(3)\n\n#define FCNPC_MOVE_MODE_AUTO\t\t(-1)\n#define FCNPC_MOVE_MODE_NONE\t\t(0)\n#define FCNPC_MOVE_MODE_MAPANDREAS\t(1)\n#define FCNPC_MOVE_MODE_COLANDREAS\t(2)\n\n#define FCNPC_MOVE_PATHFINDING_AUTO\t(-1)\n#define FCNPC_MOVE_PATHFINDING_NONE\t(0)\n#define FCNPC_MOVE_PATHFINDING_Z\t(1)\n#define FCNPC_MOVE_PATHFINDING_RAYCAST\t(2)\n\n#define FCNPC_MOVE_SPEED_AUTO\t\t(-1.0)\n#define FCNPC_MOVE_SPEED_WALK\t\t(0.1552086)\n#define FCNPC_MOVE_SPEED_RUN\t\t(0.56444)\n#define FCNPC_MOVE_SPEED_SPRINT\t\t(0.926784)\n\n#define FCNPC_MAX_NODES\t\t\t(64)\n\n#define FCNPC_INVALID_MOVEPATH_ID\t(-1)\n#define FCNPC_INVALID_RECORD_ID\t\t(-1)\n\n#undef FCNPC_DISABLE_VERSION_CHECK\n```\n\nCallbacks\n---------\n```Pawn\nforward FCNPC_OnInit();\nforward FCNPC_OnCreate(npcid);\nforward FCNPC_OnDestroy(npcid);\nforward FCNPC_OnSpawn(npcid);\nforward FCNPC_OnRespawn(npcid);\nforward FCNPC_OnDeath(npcid, killerid, reason);\nforward FCNPC_OnUpdate(npcid);\n\nforward FCNPC_OnTakeDamage(npcid, issuerid, Float:amount, weaponid, bodypart);\nforward FCNPC_OnGiveDamage(npcid, damagedid, Float:amount, weaponid, bodypart);\n\nforward FCNPC_OnReachDestination(npcid);\n\nforward FCNPC_OnWeaponShot(npcid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);\nforward FCNPC_OnWeaponStateChange(npcid, weapon_state);\n\nforward FCNPC_OnStreamIn(npcid, forplayerid);\nforward FCNPC_OnStreamOut(npcid, forplayerid);\n\nforward FCNPC_OnVehicleEntryComplete(npcid, vehicleid, seatid);\nforward FCNPC_OnVehicleExitComplete(npcid, vehicleid);\nforward FCNPC_OnVehicleTakeDamage(npcid, issuerid, vehicleid, Float:amount, weaponid, Float:fX, Float:fY, Float:fZ);\n\nforward FCNPC_OnFinishPlayback(npcid);\n\nforward FCNPC_OnFinishNode(npcid, nodeid);\nforward FCNPC_OnFinishNodePoint(npcid, nodeid, pointid);\nforward FCNPC_OnChangeNode(npcid, newnodeid, oldnodeid);\n\nforward FCNPC_OnFinishMovePath(npcid, pathid);\nforward FCNPC_OnFinishMovePathPoint(npcid, pathid, pointid);\n\nforward FCNPC_OnChangeHeightPos(npcid, Float:newz, Float:oldz); // disabled by default, see FCNPC_SetMinHeightPosCall\n```\n\nNatives\n-------\n```Pawn\nnative FCNPC_GetPluginVersion(version[], const size = sizeof(version));\nnative FCNPC_SetUpdateRate(rate);\nnative FCNPC_GetUpdateRate();\nnative FCNPC_SetTickRate(rate);\nnative FCNPC_GetTickRate();\nnative FCNPC_UseMoveMode(mode, bool:use = true);\nnative bool:FCNPC_IsMoveModeUsed(mode);\nnative FCNPC_UseMovePathfinding(pathfinding, bool:use = true);\nnative bool:FCNPC_IsMovePathfindingUsed(pathfinding);\nnative FCNPC_UseCrashLog(bool:use = true);\nnative bool:FCNPC_IsCrashLogUsed();\n\nnative FCNPC_Create(const name[]);\nnative FCNPC_Destroy(npcid);\nnative FCNPC_Spawn(npcid, skinid, Float:x, Float:y, Float:z);\nnative FCNPC_Respawn(npcid);\nnative bool:FCNPC_IsSpawned(npcid);\nnative FCNPC_Kill(npcid);\nnative bool:FCNPC_IsDead(npcid);\nnative bool:FCNPC_IsValid(npcid);\nnative bool:FCNPC_IsStreamedIn(npcid, forplayerid);\nnative bool:FCNPC_IsStreamedInForAnyone(npcid);\nnative FCNPC_GetValidArray(npcs[], const size = sizeof(npcs));\n\nnative FCNPC_SetPosition(npcid, Float:x, Float:y, Float:z);\nnative FCNPC_GivePosition(npcid, Float:x, Float:y, Float:z);\nnative FCNPC_GetPosition(npcid, \u0026Float:x, \u0026Float:y, \u0026Float:z);\nnative FCNPC_SetAngle(npcid, Float:angle);\nnative Float:FCNPC_GiveAngle(npcid, Float:angle);\nnative FCNPC_SetAngleToPos(npcid, Float:x, Float:y);\nnative FCNPC_SetAngleToPlayer(npcid, playerid);\nnative Float:FCNPC_GetAngle(npcid);\nnative FCNPC_SetQuaternion(npcid, Float:w, Float:x, Float:y, Float:z);\nnative FCNPC_GiveQuaternion(npcid, Float:w, Float:x, Float:y, Float:z);\nnative FCNPC_GetQuaternion(npcid, \u0026Float:w, \u0026Float:x, \u0026Float:y, \u0026Float:z);\nnative FCNPC_SetVelocity(npcid, Float:x, Float:y, Float:z, bool:update_pos = false);\nnative FCNPC_GiveVelocity(npcid, Float:x, Float:y, Float:z, bool:update_pos = false);\nnative FCNPC_GetVelocity(npcid, \u0026Float:x, \u0026Float:y, \u0026Float:z);\nnative FCNPC_SetSpeed(npcid, Float:speed);\nnative Float:FCNPC_GetSpeed(npcid);\nnative FCNPC_SetInterior(npcid, interiorid);\nnative FCNPC_GetInterior(npcid);\nnative FCNPC_SetVirtualWorld(npcid, worldid);\nnative FCNPC_GetVirtualWorld(npcid);\n\nnative FCNPC_SetHealth(npcid, Float:health);\nnative Float:FCNPC_GiveHealth(npcid, Float:health);\nnative Float:FCNPC_GetHealth(npcid);\nnative FCNPC_SetArmour(npcid, Float:armour);\nnative Float:FCNPC_GiveArmour(npcid, Float:armour);\nnative Float:FCNPC_GetArmour(npcid);\n\nnative FCNPC_SetInvulnerable(npcid, bool:invulnerable = true);\nnative bool:FCNPC_IsInvulnerable(npcid);\n\nnative FCNPC_SetSkin(npcid, skinid);\nnative FCNPC_GetSkin(npcid);\n#if FCNPC_SAMP_03DL\n\tnative FCNPC_GetCustomSkin(npcid);\n#endif\n\nnative FCNPC_SetWeapon(npcid, weaponid);\nnative FCNPC_GetWeapon(npcid);\nnative FCNPC_SetAmmo(npcid, ammo);\nnative FCNPC_GiveAmmo(npcid, ammo);\nnative FCNPC_GetAmmo(npcid);\nnative FCNPC_SetAmmoInClip(npcid, ammo);\nnative FCNPC_GiveAmmoInClip(npcid, ammo);\nnative FCNPC_GetAmmoInClip(npcid);\nnative FCNPC_SetWeaponSkillLevel(npcid, skill, level);\nnative FCNPC_GiveWeaponSkillLevel(npcid, skill, level);\nnative FCNPC_GetWeaponSkillLevel(npcid, skill);\nnative FCNPC_SetWeaponState(npcid, weapon_state);\nnative FCNPC_GetWeaponState(npcid);\n\nnative FCNPC_SetWeaponReloadTime(npcid, weaponid, time);\nnative FCNPC_GetWeaponReloadTime(npcid, weaponid);\nnative FCNPC_GetWeaponActualReloadTime(npcid, weaponid);\nnative FCNPC_SetWeaponShootTime(npcid, weaponid, time);\nnative FCNPC_GetWeaponShootTime(npcid, weaponid);\nnative FCNPC_SetWeaponClipSize(npcid, weaponid, size);\nnative FCNPC_GetWeaponClipSize(npcid, weaponid);\nnative FCNPC_GetWeaponActualClipSize(npcid, weaponid);\nnative FCNPC_SetWeaponAccuracy(npcid, weaponid, Float:accuracy);\nnative Float:FCNPC_GetWeaponAccuracy(npcid, weaponid);\nnative FCNPC_SetWeaponInfo(npcid, weaponid, reload_time = -1, shoot_time = -1, clip_size = -1, Float:accuracy = 1.0);\nnative FCNPC_GetWeaponInfo(npcid, weaponid, \u0026reload_time = -1, \u0026shoot_time = -1, \u0026clip_size = -1, \u0026Float:accuracy = 1.0);\nnative FCNPC_SetWeaponDefaultInfo(weaponid, reload_time = -1, shoot_time = -1, clip_size = -1, Float:accuracy = 1.0);\nnative FCNPC_GetWeaponDefaultInfo(weaponid, \u0026reload_time = -1, \u0026shoot_time = -1, \u0026clip_size = -1, \u0026Float:accuracy = 1.0);\n\nnative FCNPC_SetKeys(npcid, ud_analog, lr_analog, keys);\nnative FCNPC_GetKeys(npcid, \u0026ud_analog, \u0026lr_analog, \u0026keys);\n\nnative FCNPC_SetSpecialAction(npcid, actionid);\nnative FCNPC_GetSpecialAction(npcid);\n\nnative FCNPC_SetAnimation(npcid, animationid, Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1);\nnative FCNPC_SetAnimationByName(npcid, const name[], Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1);\nnative FCNPC_ResetAnimation(npcid);\nnative FCNPC_GetAnimation(npcid, \u0026animationid = 0, \u0026Float:fDelta = 4.1, \u0026loop = 0, \u0026lockx = 1, \u0026locky = 1, \u0026freeze = 0, \u0026time = 1);\nnative FCNPC_ApplyAnimation(npcid, const animlib[], const animname[], Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1);\nnative FCNPC_ClearAnimations(npcid);\n\nnative FCNPC_SetFightingStyle(npcid, style);\nnative FCNPC_GetFightingStyle(npcid);\n\nnative FCNPC_UseReloading(npcid, bool:use = true);\nnative bool:FCNPC_IsReloadingUsed(npcid);\nnative FCNPC_UseInfiniteAmmo(npcid, bool:use = true);\nnative bool:FCNPC_IsInfiniteAmmoUsed(npcid);\n\nnative FCNPC_GoTo(npcid, Float:x, Float:y, Float:z, type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, mode = FCNPC_MOVE_MODE_AUTO, pathfinding = FCNPC_MOVE_PATHFINDING_AUTO, Float:radius = 0.0, bool:set_angle = true, Float:min_distance = 0.0, stop_delay = 250);\nnative FCNPC_GoToPlayer(npcid, playerid, type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, mode = FCNPC_MOVE_MODE_AUTO, pathfinding = FCNPC_MOVE_PATHFINDING_AUTO, Float:radius = 0.0, bool:set_angle = true, Float:min_distance = 0.0, Float:dist_check = 1.5, stop_delay = 250);\nnative FCNPC_Stop(npcid);\nnative bool:FCNPC_IsMoving(npcid);\nnative bool:FCNPC_IsMovingAtPlayer(npcid, playerid);\nnative FCNPC_GetDestinationPoint(npcid, \u0026Float:x, \u0026Float:y, \u0026Float:z);\n\nnative FCNPC_AimAt(npcid, Float:x, Float:y, Float:z, bool:shoot = false, shoot_delay = -1, bool:set_angle = true, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0, between_check_mode = FCNPC_ENTITY_MODE_AUTO, between_check_flags = FCNPC_ENTITY_CHECK_ALL);\nnative FCNPC_AimAtPlayer(npcid, playerid, bool:shoot = false, shoot_delay = -1, bool:set_angle = true, Float:offset_x = 0.0, Float:offset_y = 0.0, Float:offset_z = 0.0, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0, between_check_mode = FCNPC_ENTITY_MODE_AUTO, between_check_flags = FCNPC_ENTITY_CHECK_ALL);\nnative FCNPC_StopAim(npcid);\nnative FCNPC_MeleeAttack(npcid, delay = -1, bool:fighting_style = false);\nnative FCNPC_StopAttack(npcid);\nnative bool:FCNPC_IsAttacking(npcid);\nnative bool:FCNPC_IsAiming(npcid);\nnative bool:FCNPC_IsAimingAtPlayer(npcid, playerid);\nnative FCNPC_GetAimingPlayer(npcid);\nnative bool:FCNPC_IsShooting(npcid);\nnative bool:FCNPC_IsReloading(npcid);\nnative FCNPC_TriggerWeaponShot(npcid, weaponid, hittype, hitid, Float:x, Float:y, Float:z, bool:is_hit = true, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0, between_check_mode = FCNPC_ENTITY_MODE_AUTO, between_check_flags = FCNPC_ENTITY_CHECK_ALL);\nnative FCNPC_GetClosestEntityInBetween(npcid, Float:x, Float:y, Float:z, Float:range, between_check_mode = FCNPC_ENTITY_MODE_AUTO, between_check_flags = FCNPC_ENTITY_CHECK_ALL, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0, \u0026entity_id = -1, \u0026entity_type = -1, \u0026object_owner_id = INVALID_PLAYER_ID, \u0026Float:point_x = 0.0, \u0026Float:point_y = 0.0, \u0026Float:point_z = 0.0);\n\nnative FCNPC_EnterVehicle(npcid, vehicleid, seatid, type = FCNPC_MOVE_TYPE_WALK);\nnative FCNPC_ExitVehicle(npcid);\n\nnative FCNPC_PutInVehicle(npcid, vehicleid, seatid);\nnative FCNPC_RemoveFromVehicle(npcid);\nnative FCNPC_GetVehicleID(npcid);\nnative FCNPC_GetVehicleSeat(npcid);\nnative FCNPC_UseVehicleSiren(npcid, bool:use = true);\nnative bool:FCNPC_IsVehicleSirenUsed(npcid);\nnative FCNPC_SetVehicleHealth(npcid, Float:health);\nnative Float:FCNPC_GetVehicleHealth(npcid);\nnative FCNPC_SetVehicleHydraThrusters(npcid, direction);\nnative FCNPC_GetVehicleHydraThrusters(npcid);\nnative FCNPC_SetVehicleGearState(npcid, gear_state);\nnative FCNPC_GetVehicleGearState(npcid);\nnative FCNPC_SetVehicleTrainSpeed(npcid, Float:speed);\nnative Float:FCNPC_GetVehicleTrainSpeed(npcid);\n\nnative FCNPC_SetSurfingOffsets(npcid, Float:x, Float:y, Float:z);\nnative FCNPC_GiveSurfingOffsets(npcid, Float:x, Float:y, Float:z);\nnative FCNPC_GetSurfingOffsets(npcid, \u0026Float:x, \u0026Float:y, \u0026Float:z);\nnative FCNPC_SetSurfingVehicle(npcid, vehicleid);\nnative FCNPC_GetSurfingVehicle(npcid);\nnative FCNPC_SetSurfingObject(npcid, objectid);\nnative FCNPC_GetSurfingObject(npcid);\nnative FCNPC_SetSurfingPlayerObject(npcid, objectid);\nnative FCNPC_GetSurfingPlayerObject(npcid);\n#if defined _streamer_included\n\tnative FCNPC_SetSurfingDynamicObject(npcid, objectid);\n\tnative FCNPC_GetSurfingDynamicObject(npcid);\n#endif\nnative FCNPC_StopSurfing(npcid);\n\nnative FCNPC_StartPlayingPlayback(npcid, const file[] = \"\", recordid = FCNPC_INVALID_RECORD_ID, bool:auto_unload = false, Float:delta_x = 0.0, Float:delta_y  = 0.0, Float:delta_z  = 0.0, Float:delta_qw = 0.0, Float:delta_qx = 0.0, Float:delta_qy = 0.0, Float:delta_qz = 0.0);\nnative FCNPC_StopPlayingPlayback(npcid);\nnative FCNPC_PausePlayingPlayback(npcid);\nnative FCNPC_ResumePlayingPlayback(npcid);\nnative FCNPC_LoadPlayingPlayback(const file[]);\nnative FCNPC_UnloadPlayingPlayback(recordid);\nnative FCNPC_SetPlayingPlaybackPath(npcid, const path[]);\nnative FCNPC_GetPlayingPlaybackPath(npcid, path[], const size = sizeof(path));\n\nnative FCNPC_OpenNode(nodeid);\nnative FCNPC_CloseNode(nodeid);\nnative bool:FCNPC_IsNodeOpen(nodeid);\nnative FCNPC_GetNodeType(nodeid);\nnative FCNPC_SetNodePoint(nodeid, pointid);\nnative FCNPC_GetNodePointPosition(nodeid, \u0026Float:x, \u0026Float:y, \u0026Float:z);\nnative FCNPC_GetNodePointCount(nodeid);\nnative FCNPC_GetNodeInfo(nodeid, \u0026vehnodes, \u0026pednodes, \u0026navinode);\nnative FCNPC_PlayNode(npcid, nodeid, type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, mode = FCNPC_MOVE_MODE_AUTO, Float:radius = 0.0, bool:set_angle = true);\nnative FCNPC_StopPlayingNode(npcid);\nnative FCNPC_PausePlayingNode(npcid);\nnative FCNPC_ResumePlayingNode(npcid);\nnative bool:FCNPC_IsPlayingNode(npcid);\nnative bool:FCNPC_IsPlayingNodePaused(npcid);\n\nnative FCNPC_CreateMovePath();\nnative FCNPC_DestroyMovePath(pathid);\nnative bool:FCNPC_IsValidMovePath(pathid);\nnative FCNPC_AddPointToMovePath(pathid, Float:x, Float:y, Float:z);\nnative FCNPC_AddPointsToMovePath(pathid, Float:points[][3], const size = sizeof(points));\nnative FCNPC_AddPointsToMovePath2(pathid, Float:points_x[], Float:points_y[], Float:points_z[], const size = sizeof(points_x));\nnative FCNPC_RemovePointFromMovePath(pathid, pointid);\nnative bool:FCNPC_IsValidMovePathPoint(pathid, pointid);\nnative FCNPC_GetMovePathPoint(pathid, pointid, \u0026Float:x, \u0026Float:y, \u0026Float:z);\nnative FCNPC_GetNumberMovePathPoint(pathid);\nnative FCNPC_GoByMovePath(npcid, pathid, pointid = 0, type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, mode = FCNPC_MOVE_MODE_AUTO, pathfinding = FCNPC_MOVE_PATHFINDING_AUTO, Float:radius = 0.0, bool:set_angle = true, Float:min_distance = 0.0);\n\nnative FCNPC_SetMoveMode(npcid, mode);\nnative FCNPC_GetMoveMode(npcid);\nnative FCNPC_SetMinHeightPosCall(npcid, Float:height);\nnative Float:FCNPC_GetMinHeightPosCall(npcid);\n\nnative FCNPC_ShowInTabListForPlayer(npcid, forplayerid);\nnative FCNPC_HideInTabListForPlayer(npcid, forplayerid);\n```\n\n# Vendor Natives\nFor some reasons FCNPC includes some another plugins. You don't need to use this plugins separately.\n\n## MapAndreas\n\nMapAndreas 1.2.1 included.\n\n## ColAndreas\n\nLatest ColAndreas version included.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fziggi%2Ffcnpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fziggi%2Ffcnpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fziggi%2Ffcnpc/lists"}