Skip to content

Releases: ziggi/FCNPC

FCNPC 2.0.1

15 Aug 08:26
Compare
Choose a tag to compare

FCNPC 2.* branch is now stable

Changes

  • 0.3.7 R3 windows support
  • Consistent naming for some functions and parameters
  • Add FCNPC_SetVehicleTrainSpeed & FCNPC_GetVehicleTrainSpeed
  • Fix a bug with surfing npc on objects
  • Update ColAndreas to latest version

FCNPC 2.0.0 RC7 0.3-DL (Without Pathfinding Feature)

27 Mar 09:32
Compare
Choose a tag to compare

FCNPC 2.0.0 RC7 for SA-MP 0.3-DL

FCNPC 2.0.0 RC7 (Without Pathfinding Feature)

03 Jan 04:04
Compare
Choose a tag to compare
  • Memory leak fix
  • Fix finding Z for playing nodes
  • If cast failed then moving, try cast again but from the sky

FCNPC 2.0.0 RC6 (Without Pathfinding Feature)

02 Jan 20:16
Compare
Choose a tag to compare
  • #155: Filterscripts updated to FCNPC 2.0
  • Fix nodes working on Linux
  • Fix ColAndreas collision map init

FCNPC 2.0.0 RC5 (Without Pathfinding Feature)

01 Jan 22:59
Compare
Choose a tag to compare
  • Crashfix

FCNPC 2.0.0 RC4 (Without Pathfinding Feature)

25 Dec 17:06
Compare
Choose a tag to compare
  • Fixed some issues reported by PVS-Studio
  • Windows build now with vc2015 (2017 in previous release)

FCNPC 2.0.0 RC3 (Without Pathfinding Feature)

19 Dec 17:29
Compare
Choose a tag to compare
  • Fix entering into vehicle on Windows SA-MP 0.3-DL
  • Fix exiting from vehicle on Windows SA-MP 0.3-DL and 0.3.7 R2

FCNPC 2.0.0 RC2 (Without Pathfinding Feature)

18 Dec 14:10
Compare
Choose a tag to compare
  • Linux build fix
  • Some fixes for reported issues by PVS-Studio

By the way: FCNPC-2.0.0-rc.2.zip includes Windows and Linux versions for 0.3.7 R2 and 0.3-DL

FCNPC 2.0.0 RC1 (Without Pathfinding Feature)

06 Dec 22:03
Compare
Choose a tag to compare

Main changes

  • Insane optimization
  • Great bug fixing
  • Unbelievable cleanup
  • Many new functions
  • Now FCNPC includes latest versions of ColAndreas and MapAndreas, so you don't needed to add these plugins anymore
  • Full SA-MP 0.3-DL support

Breaking changes

Some callbacks and functions was reworked:

FCNPC 1.8.2 FCNPC 2.0.0
forward FCNPC_OnDeath(npcid, killerid, weaponid); forward FCNPC_OnDeath(npcid, killerid, reason);
forward FCNPC_OnVehicleEntryComplete(npcid, vehicleid, seat); forward FCNPC_OnVehicleEntryComplete(npcid, vehicleid, seatid);
forward FCNPC_OnVehicleExitComplete(npcid); forward FCNPC_OnVehicleExitComplete(npcid, vehicleid);
forward FCNPC_OnTakeDamage(npcid, damagerid, weaponid, bodypart, Float:health_loss); forward FCNPC_OnTakeDamage(npcid, issuerid, Float:amount, weaponid, bodypart);
forward FCNPC_OnGiveDamage(npcid, damagedid, weaponid, bodypart, Float:health_loss); forward FCNPC_OnGiveDamage(npcid, damagedid, Float:amount, weaponid, bodypart);
forward FCNPC_OnVehicleTakeDamage(npcid, damagerid, vehicleid, weaponid, Float:x, Float:y, Float:z); forward FCNPC_OnVehicleTakeDamage(npcid, issuerid, vehicleid, Float:amount, weaponid, Float:fX, Float:fY, Float:fZ);
forward FCNPC_OnWeaponShot(npcid, weaponid, hittype, hitid, Float:x, Float:y, Float:z); forward FCNPC_OnWeaponShot(npcid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
forward FCNPC_OnFinishNodePoint(npcid, point); forward FCNPC_OnFinishNode(npcid, nodeid);
forward FCNPC_OnChangeNode(npcid, nodeid); forward FCNPC_OnChangeNode(npcid, newnodeid, oldnodeid);
forward FCNPC_OnFinishNode(npcid); forward FCNPC_OnFinishNodePoint(npcid, nodeid, pointid);
forward FCNPC_OnChangeHeightPos(npcid, Float:new_z, Float:old_z); forward FCNPC_OnChangeHeightPos(npcid, Float:newz, Float:oldz);
native FCNPC_Create(name[]); native FCNPC_Create(const name[]);
native FCNPC_ToggleCrashLogCreation(bool:toggle); native FCNPC_UseCrashLog(bool:use = true);
native FCNPC_GetCrashLogCreation(); native bool:FCNPC_IsCrashLogUsed();
native FCNPC_IsSpawned(npcid); native bool:FCNPC_IsSpawned(npcid);
native FCNPC_IsDead(npcid); native bool:FCNPC_IsDead(npcid);
native FCNPC_IsValid(npcid); native bool:FCNPC_IsValid(npcid);
native FCNPC_IsStreamedIn(npcid, forplayerid); native bool:FCNPC_IsStreamedIn(npcid, forplayerid);
native FCNPC_IsStreamedForAnyone(npcid); native bool:FCNPC_IsStreamedInForAnyone(npcid);
native FCNPC_IsInvulnerable(npcid); native bool:FCNPC_IsInvulnerable(npcid);
native FCNPC_SetAnimationByName(npcid, name[], Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1); native FCNPC_SetAnimationByName(npcid, const name[], Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1);
native FCNPC_ApplyAnimation(npcid, animlib[], animname[], Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1); native FCNPC_ApplyAnimation(npcid, const animlib[], const animname[], Float:fDelta = 4.1, loop = 0, lockx = 1, locky = 1, freeze = 0, time = 1);
native FCNPC_ToggleReloading(npcid, bool:toggle); native FCNPC_UseReloading(npcid, bool:use = true);
native FCNPC_ToggleInfiniteAmmo(npcid, bool:toggle); native FCNPC_UseInfiniteAmmo(npcid, bool:use = true);
native FCNPC_GoTo(npcid, Float:x, Float:y, Float:z, type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true, Float:dist_offset = 0.0, stopdelay = 250); native 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, stopdelay = 250);
native FCNPC_GoToPlayer(npcid, playerid, type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true, Float:dist_offset = 0.0, Float:dist_check = 1.5, stopdelay = 250); native 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, stopdelay = 250);
native FCNPC_IsMoving(npcid); native bool:FCNPC_IsMoving(npcid);
native FCNPC_IsMovingAtPlayer(npcid, playerid); native bool:FCNPC_IsMovingAtPlayer(npcid, playerid);
native FCNPC_AimAt(npcid, Float:x, Float:y, Float:z, bool:shoot = false, shoot_delay = -1, bool:setangle = true, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0); native 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_flags = FCNPC_ENTITY_CHECK_ALL);
native FCNPC_AimAtPlayer(npcid, playerid, bool:shoot = false, shoot_delay = -1, bool:setangle = 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); native 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_flags = FCNPC_ENTITY_CHECK_ALL);
native FCNPC_IsAttacking(npcid); native bool:FCNPC_IsAttacking(npcid);
native FCNPC_IsAiming(npcid); native bool:FCNPC_IsAiming(npcid);
native FCNPC_IsAimingAtPlayer(npcid, playerid); native bool:FCNPC_IsAimingAtPlayer(npcid, playerid);
native FCNPC_IsShooting(npcid); native bool:FCNPC_IsShooting(npcid);
native FCNPC_IsReloading(npcid); native bool:FCNPC_IsReloading(npcid);
native FCNPC_TriggerWeaponShot(npcid, weaponid, hittype, hitid, Float:x, Float:y, Float:z, bool:ishit = true, Float:offset_from_x = 0.0, Float:offset_from_y = 0.0, Float:offset_from_z = 0.0); native 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_flags = FCNPC_ENTITY_CHECK_ALL);
native FCNPC_SetVehicleSiren(npcid, bool:status); native FCNPC_UseVehicleSiren(npcid, bool:use = true);
native FCNPC_IsVehicleSiren(npcid); native bool:FCNPC_IsVehicleSirenUsed(npcid);
native FCNPC_StartPlayingPlayback(npcid, file[] = "", recordid = FCNPC_INVALID_RECORD_ID, bool:auto_unload = false); native 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);
native FCNPC_LoadPlayingPlayback(file[]); native FCNPC_LoadPlayingPlayback(const file[]);
native FCNPC_SetPlayingPlaybackPath(npcid, path[]); native FCNPC_SetPlayingPlaybackPath(npcid, const path[]);
native FCNPC_IsNodeOpen(nodeid); native bool:FCNPC_IsNodeOpen(nodeid);
native FCNPC_SetNodePoint(nodeid, point); native FCNPC_SetNodePoint(nodeid, pointid);
native FCNPC_PlayNode(npcid, nodeid, move_type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true); native FCNPC_PlayNode(npcid, nodeid, move_type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, mode = FCNPC_MOVE_MODE_AUTO, Float:radius = 0.0, bool:set_angle = true);
native FCNPC_IsPlayingNode(npcid); native bool:FCNPC_IsPlayingNode(npcid);
native FCNPC_IsPlayingNodePaused(npcid); native bool:FCNPC_IsPlayingNodePaused(npcid);
native FCNPC_IsValidMovePath(pathid); native bool:FCNPC_IsValidMovePath(pathid);
native FCNPC_AddPointToPath(pathid, Float:x, Float:y, Float:z); native FCNPC_AddPointToMovePath(pathid, Float:x, Float:y, Float:z);
native FCNPC_AddPointsToPath(pathid, Float:points[][3], const size = sizeof(points)); native FCNPC_AddPointsToMovePath(pathid, Float:points[][3], const size = sizeof(points));
native FCNPC_AddPointsToPath2(pathid, Float:points_x[], Float:points_y[], Float:points_z[], const size = sizeof(points_x)); native FCNPC_AddPointsToMovePath2(pathid, Float:points_x[], Float:points_y[], Float:points_z[], const size = sizeof(points_x));
native FCNPC_RemovePointFromPath(pathid, pointid); native FCNPC_RemovePointFromMovePath(pathid, pointid);
native FCNPC_IsValidMovePoint(pathid, pointid); native bool:FCNPC_IsValidMovePathPoint(pathid, pointid);
native FCNPC_GetMovePoint(pathid, pointid, &Float:x, &Float:y, &Float:z); native FCNPC_GetMovePathPoint(pathid, pointid, &Float:x, &Float:y, &Float:z);
native FCNPC_GetNumberMovePoint(pathid); native FCNPC_GetNumberMovePathPoint(pathid);
native FCNPC_GoByMovePath(npcid, pathid, type = FCNPC_MOVE_TYPE_AUTO, Float:speed = FCNPC_MOVE_SPEED_AUTO, bool:UseMapAndreas = false, Float:radius = 0.0, bool:setangle = true, Float:dist_offset = 0.0); native 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);

Removed functions

native FCNPC_InitMapAndreas(address);
native FCNPC_ToggleMapAndreasUsage(npcid, bool:enabled);
native FCNPC_IsMapAndreasUsed(npcid);

New functions

native bool:FCNPC_IsReloadingUsed(npcid);
native bool:FCNPC_IsInfiniteAmmoUsed(npcid);
native FCNPC_SetMoveMode(npcid, mode);
native FCNPC_GetMoveMode(npc...
Read more

FCNPC 1.8.2

07 Jan 22:17
Compare
Choose a tag to compare
  • Revert "#98: Fix default NPC ping and IP" (cause bugs)