Releases: ziggi/FCNPC
Releases · ziggi/FCNPC
FCNPC 2.0.1
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)
FCNPC 2.0.0 RC7 for SA-MP 0.3-DL
FCNPC 2.0.0 RC7 (Without Pathfinding Feature)
- 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)
- #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)
- Crashfix
FCNPC 2.0.0 RC4 (Without Pathfinding Feature)
- Fixed some issues reported by PVS-Studio
- Windows build now with vc2015 (2017 in previous release)
FCNPC 2.0.0 RC3 (Without Pathfinding Feature)
- 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)
- 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)
Main changes
- Insane optimization
- Great bug fixing
- Unbelievable cleanup
- Many new functions
- Now FCNPC includes latest versions of
ColAndreas
andMapAndreas
, 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...
FCNPC 1.8.2
- Revert "#98: Fix default NPC ping and IP" (cause bugs)