Статистика
Онлайн всего: 1 Гостей: 1 Пользователей: 0
|
Controllable NPC для 0.3x R1-2
|
| 26.12.2013, 13:43 |
Описание файла Плагин для сервера San Andreas Multiplayer, позволяет создавать NPC не используя samp-npc.exe (каждый "стандартный" бот создается используя samp-npc.exe который требовал заметное количество оперативной памяти, в итоге большое количество "стандартных" ботов создавать нет возможности). Данные NPC создаются внутри сервера, не создавая лишних процессов, и не создавая новых сетевых соединений. Так же данные NPC имеют очень большое количество изменяемых параметров (в отличие от "стандартных" ботов), все параметры, которые синхронизирует SA-MP можно изменить, и даже больше - в плагине присутствует Nodes reader - для чтения путей навигационного графа GTA SA, ZMap reader - для чтения карты высот. Так же, в плагине сделана возможность передвижения NPC (пешком, легким бегом, быстрым бегом, на машине). И это не всё, плагин рассчитывает стрельбу игроков, для определения попаданий по NPC, проще говоря, NPC можно убивать. Но NPC так же могут стрелять (а точнее, смотреть в точку, целиться в точку и стрелять по ней).
Функционал: cnpc.inc:
// core native CreateNPC(npcid,npcname[]); native DestroyNPC(npcid); native IsValidNPC(npcid); native KillNPC(npcid); native SpawnNPC(npcid); native StopNPC(npcid); native GetNPCState(npcid); native ToogleVisualDeath(tstate); native FindLastFreeSlot(); // on foot controlls native SetNPCPos(npcid,Float:X,Float:Y,Float:Z); native GetNPCPos(npcid,&Float:X,&Float:Y,&Float:Z); native SetNPCQuaternion(npcid,Float:X,Float:Y,Float:Z,Float:S); native GetNPCQuaternion(npcid,&Float:X,&Float:Y,&Float:Z,&Float:S); native SetNPCFacingAngle(npcid,Float:angle); native Float:GetNPCFacingAngle(npcid); native SetNPCVelocity(npcid,Float:X,Float:Y,Float:Z); native GetNPCVelocity(npcid,&Float:X,&Float:Y,&Float:Z); native NPC_WalkTo(npcid,Float:X,Float:Y,Float:Z,is_z_map,Float:speed=SPEED_WALK); native NPC_RunTo(npcid,Float:X,Float:Y,Float:Z,is_z_map,Float:speed=SPEED_RUN); native NPC_SprintTo(npcid,Float:X,Float:Y,Float:Z,is_z_map,Float:speed=SPEED_SPRINT); native NPC_LookAt(npcid,Float:X,Float:Y,Float:Z); native NPC_AimAt(npcid,Float:X,Float:Y,Float:Z); native NPC_ShootAt(npcid,Float:X,Float:Y,Float:Z); native SetNPCCameraPos(npcid,Float:X,Float:Y,Float:Z); native GetNPCCameraPos(npcid,&Float:X,&Float:Y,&Float:Z); native SetNPCCameraFrontVector(npcid,Float:X,Float:Y,Float:Z); native GetNPCCameraFrontVector(npcid,&Float:X,&Float:Y,&Float:Z); native SetNPCCameraMode(npcid,mode); native GetNPCCameraMode(npcid); native SetNPCWeaponState(npcid,wstate); native GetNPCWeaponState(npcid); native SetNPCKeys(npcid,updown,leftright,keys); native GetNPCKeys(npcid,&updown,&leftright,&keys); native SetNPCWeapon(npcid,weaponid); native GetNPCWeapon(npcid); native SetNPCWeaponSkillLevel(npcid,weapontype,level); native GetNPCWeaponSkillLevel(npcid,weapontype); native SetNPCHealth(npcid,Float:amount); native Float:GetNPCHealth(npcid); native SetNPCArmour(npcid,Float:amount); native Float:GetNPCArmour(npcid); native SetNPCInterior(npcid,interior); native GetNPCInterior(npcid); native SetNPCSpecialAction(npcid,action); native GetNPCSpecialAction(npcid); native SetNPCAnimationIndex(npcid,animationid); native GetNPCAnimationIndex(npcid); native SetNPCSkin(npcid,skin); native GetNPCSkin(npcid); native SetNPCSurfing(npcid,Float:X,Float:Y,Float:Z); native GetNPCSurfing(npcid,&Float:X,&Float:Y,&Float:Z); native SetNPCSurfingVehicle(npcid,vehicleid); native GetNPCSurfingVehicle(npcid); native SetNPCImpregnable(npcid,istate); native IsNPCImpregnable(npcid); // driver controls native PutNPCInVehicle(npcid,vehicleid,seat); native NPC_DriveTo(npcid,Float:X,Float:Y,Float:Z,Float:speed,is_z_map); native SetNPCVehicleSiren(npcid,vstate); native GetNPCVehicleSiren(npcid); native SetNPCVehicleHealth(npcid,health); native GetNPCVehicleHealth(npcid); native SetNPCVehicleTrailer(npcid,trailerid); native GetNPCVehicleTrailer(npcid); // passanger controls native SetNPCPassangerDriveBy(npcid,istate); native GetNPCPassangerDriveBy(npcid); // damage config native SetWeaponDamageForNPC(weaponid,Float:damage); native SetWeaponReloadTimeForNPC(weaponid,mstime); // .rec playbacks native StartRecordingPlayback(npcid,name[]); native PauseRecordingPlayback(npcid); native ContinueRecordingPlayback(npcid); native StopRecordingPlayback(npcid); // GTA SA paths native Node:OpenNode(name[]); native CloseNode(Node:nodeid); native GetNodeHeader(Node:nodeid,&nodes,&vehicle_nodes,&ped_nodes,&navi_nodes); native SetNodePoint(Node:nodeid,pointid); native GetNodePoint(Node:nodeid); native GetNodePointPos(Node:nodeid,&Float:X,&Float:Y,&Float:Z); native GetNodePointLinkId(Node:nodeid); native GetNodePointAreaId(Node:nodeid); native GetNodePointWidth(Node:nodeid); native GetNodePointLinkCount(Node:pointid); native GetNodePointTrafficLevel(Node:nodeid); native IsNodePointRoadBlock(Node:nodeid); native IsNodePointBoats(Node:nodeid); native IsNodePointEmergency(Node:nodeid); native IsNodePointNotHighway(Node:nodeid); native IsNodePointSpawn(Node:nodeid); native IsNodePointRoadBlock1(Node:nodeid); native IsNodePointParking(Node:nodeid); native IsNodePointRoadBlock2(Node:nodeid); native GetNodePointType(Node:nodeid); native SetNodeLink(Node:nodeid,linkid); native GetNodeLinkAreaId(Node:nodeid); native GetNodeLinkNodeId(Node:nodeid); // Nodes manager native nodes_Init(); native nodes_Exit(); native nodes_GetNodePos(nodetype,nodeid,&Float:x,&Float:y,&Float:z); native nodes_GetNodeAreaid(nodetype,nodeid); native nodes_GetNodeNodeid(nodetype,nodeid); native nodes_GetNodeLink(nodetype,nodeid,linkid); native Float:nodes_GetNodeLinkDist(nodetype,nodeid,linkid); native nodes_GetNodeLinkCount(nodetype,nodeid); native nodes_GetNodeCount(nodetype); native nodes_GetNodeid(nodetype,Float:x,Float:y,Float:z); native nodes_GetAreaid(Float:fx,Float:fy,Float:fz); native nodes_GetAreasFromPos(Float:startx,Float:starty,Float:endx,Float:endy,areas[64]); native nodes_GetAreaNodeid(nodetype,areaid,nodeid); native nodes_GetAreaNodeCount(nodetype,areaid); // dijkstra native dijkstra_CalcPathByNodes(areas[64],nodetype,startnodeid,endnodeid); // node paths native path_Destroy(pathid); native path_GetPathNodeid(pathid,pointid); native path_GetPathLen(pathid); native Float:path_GetPathDist(pathid); // zmap native zmap_Init(filename[],mode); native zmap_Exit(); native Float:zmap_GetZCoord(Float:x,Float:y); native zmap_IsPointToPointLOS(Float:sx,Float:sy,Float:sz,Float:ex,Float:ey,Float:ez); // addition native microtime(&sec,µsec); cnpc_controller.inc:
controller_ResetData(npcid) controller_AddPathCoords(npcid,Float:x,Float:y,Float:z) controller_GetPathCoordsLen(npcid) controller_GetPathCoordsData(npcid,pointid,&Float:x,&Float:y,&Float:z) controller_GetPathCoordsDist(npcid) controller_DriveToByNodes(npcid,Float:x,Float:y,Float:z,Float:speed,boost) controller_DriveToByExistPath(npcid,Float:speed,boost) controller_DriveToByCoords(npcid,Float:speed,boost) controller_MoveToByNodes(npcid,Float:x,Float:y,Float:z,move_type) controller_MoveToByExistPath(npcid,move_type) controller_MoveToByCoords(npcid,move_type) controller_FollowPlayerByNodes(npcid,playerid,move_type) controller_IsMoving(npcid) cnpc_paths.inc:
paths_ResetData(npcid) paths_CalcPathForNPC(npcid,nodetype,startnodeid,endnodeid) paths_GetPathLen(npcid) paths_GetPathDist(npcid) paths_GetPathPointNodeid(npcid,pointid) paths_GetPathPointPos(npcid,pointid,&Float:x,&Float:y,&Float:z)
Версия для SA-MP 0.3x R1-2.
|
|
Категория: Плагины | Добавил: Admin
|
| Просмотров: 475 | Загрузок: 0
| Рейтинг: 0.0/0 |
|
|
|