SA-MP Forums

Go Back   SA-MP Forums > SA-MP Scripting and Plugins > Scripting Help

Reply
 
Thread Tools Display Modes
Old 18/07/2018, 10:01 PM   #1
bookknp
Huge Clucker
 
bookknp's Avatar
 
Join Date: Dec 2013
Posts: 233
Reputation: 24
Default CreateRNPCPolice Dont Spawn

hello guys, i have a problem, when i try to spawn an RNPC using CreateRNPCPolice not spawn and dont know the why?. Im using 0.3.7 r2 Samp dont know if RNPC is compatible?? thx for help me...

PHP Code:
#include <a_samp>
#include <RNPC>
#include <ZCMD>
#pragma tabsize 0



public OnGameModeInit()
{
new 
rp CreateRNPCPolice ("Officerino"280);
AddRPOLWaypoint (rp2029.421354.3410.5);
AddRPOLWaypoint (rp2033.551286.2110.5);
AddRPOLWaypoint (rp2079.031286.0010.5);
AddRPOLWaypoint (rp2079.021362.0810.5);
StartRPOLRoute(rp);


return 
1;

PHP Code:
C:\Users\1320703\Desktop\GTA3\server2\pawno\include\RNPC2.inc(222) : warning 209: function "RNPC_OnPlayerSpawn" should return a value
Pawn compiler 3.2.3664              Copyright 
(c1997-2006ITB CompuPhase


1 Warning

bookknp is offline   Reply With Quote
Old 18/07/2018, 10:27 PM   #2
RedRex
Huge Clucker
 
RedRex's Avatar
 
Join Date: Jan 2016
Location: Portugal <3
Posts: 494
Reputation: 29
Default Re: CreateRNPCPolice Dont Spawn

Show us line RNPC2.inc(222) at the include.
__________________
RedRex's Cops and Robbers
RCNR Soon
We are working on it. Just wait us!! Soon updating to hosted tap after finished.
RedRex is offline   Reply With Quote
Old 18/07/2018, 10:58 PM   #3
bookknp
Huge Clucker
 
bookknp's Avatar
 
Join Date: Dec 2013
Posts: 233
Reputation: 24
Default Re: CreateRNPCPolice Dont Spawn

Quote:
Originally Posted by RedRex;4037i895
Show us line RNPC2.inc(222) at the include.
This is include... can u help me?? i donwloaded it


PHP Code:
/**
 * RNPC Police include
 * Simple AI and tutorial script
 * Mauzen, 10.7.2012, V1.0
 */

#include <RNPC>

#define RPOL_MAX_WAYPOINTS                      (12)    // Maximum number of waypoints for a policeman
#define RPOL_VISIONRANGE                        (25.0)  // Attacking players in that range will be chased
#define RPOL_ATTACKRANGE                        (15.0)  // Policeman starts firing when in this range to the player
#define MAX_RNPC_POLICE                         (8)             // Max number of police officers
#define RPOL_UPDATE                                     (200)   // Interval in ms to update movements, attacks, etc

new pol;

// The enum containing all data for a single policeman
enum RPol_enum {
                        
RPOL_NPCID,
                        
RPOL_TIMER,
        
Float:  RPOL_WAYPOINTS_X[RPOL_MAX_WAYPOINTS],
        
Float:  RPOL_WAYPOINTS_Y[RPOL_MAX_WAYPOINTS],
        
Float:  RPOL_WAYPOINTS_Z[RPOL_MAX_WAYPOINTS],
                        
RPOL_WPINDEX,
                        
RPOL_NEXTWP,
                        
RPOL_CURTARGET,
                        
RPOL_SKIN
};

// Initial data
new rpol[MAX_RNPC_POLICE][RPol_enum] = {{-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1},
        {-
1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1},
        {-
1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1} };

// Creates a new policeman
stock CreateRNPCPolice(name[], skin)
{
        
// Find a free spot in the rpol array
        
new slot = -1;
        for (new 
0MAX_RNPC_POLICEi++) {
                if (
rpol[i][RPOL_NPCID] == -1) {
                        
slot i;
                        break;
                }
        }
        if (
slot == -1) return -1;

        
// Connect the NPC
        
rpol[slot][RPOL_NPCID] = ConnectRNPC(name);
        
rpol[slot][RPOL_SKIN] = skin;
        return 
slot;
}

// Adds a waypoint to the Policeman's path
stock AddRPOLWaypoint(rpolidFloat:xFloat:yFloat:z) {
        if (
rpol[rpolid][RPOL_NPCID] == -1) return false;
        if (
rpol[rpolid][RPOL_WPINDEX] >= RPOL_MAX_WAYPOINTS) return false;
        
// Store the waypoint coordinates at the last free position
        
new slot rpol[rpolid][RPOL_WPINDEX];
        
rpol[rpolid][RPOL_WAYPOINTS_X][slot] = x;
        
rpol[rpolid][RPOL_WAYPOINTS_Y][slot] = y;
        
rpol[rpolid][RPOL_WAYPOINTS_Z][slot] = z;

        
rpol[rpolid][RPOL_WPINDEX]++;
        return 
true;
}

stock StartRPOLRoute(rpolid)
{
        
// If valid and not already walking
        
if (rpol[rpolid][RPOL_TIMER] == -&& rpol[rpolid][RPOL_NPCID] != -1) {
                
rpol[rpolid][RPOL_TIMER] = SetTimerEx("WatchTimer"RPOL_UPDATE1"i"rpolid);
                
// Move to the first waypoint
                
MoveRNPC(rpol[rpolid][RPOL_NPCID], rpol[rpolid][RPOL_WAYPOINTS_X][0], rpol[rpolid][RPOL_WAYPOINTS_Y][0],
                                
rpol[rpolid][RPOL_WAYPOINTS_Z][0], RNPC_SPEED_RUN);
                return 
true;
        }
        return 
0;
}

stock RemoveRNPCPolice(rpolid)
{
        if (
rpol[rpolid][RPOL_TIMER] > -1) {
                
// Stop timer
                
KillTimer(rpol[slot][RPOL_TIMER]);
        }
        
// Kick the NPC
        
Kick(rpol[rpolid][RPOL_NPCID];
        
// Reset data
        
rpol[rpolid] = {-1, -10.00.00.000, -1};
}
public 
OnGameModeInit()
{
if(
IsPlayerNPC(playerid)){
pol ConnectRNPC("Officerino");
new 
rp CreateRNPCPolice ("Officerino"280);
AddRPOLWaypoint (rp2029.421354.3410.5);
AddRPOLWaypoint (rp2033.551286.2110.5);
AddRPOLWaypoint (rp2079.031286.0010.5);
AddRPOLWaypoint (rp2079.021362.0810.5);
StartRPOLRoute(rp);

}
return 
1;
}
// This is the timer that actually controls the policeman
// and so the actually interesting "KI" for the RNPC
forward Bots(playerid);
public 
Bots(playerid)
{

SetTimer("StartAllRoutes"5000);
}
forward StartAllRoutes();
public 
StartAllRoutes() {
    
    
// etc
}
forward WatchTimer(id);
public 
WatchTimer(id) {
        if (
rpol[id][RPOL_CURTARGET] > -1) {
                new 
Float:xFloat:yFloat:z;
                
GetPlayerPos(rpol[id][RPOL_CURTARGET], x,z);
                if (!
IsPlayerInRangeOfPoint(rpol[id][RPOL_NPCID], RPOL_VISIONRANGE 2.0xyz)
                        || 
GetPlayerState(rpol[id][RPOL_CURTARGET]) != PLAYER_STATE_ONFOOT) {
                        
// Target escaped or died
                        // Stop shooting
                        
RNPC_SetKeys(0);
                        
// Continue route
                        
MoveRNPC(rpol[id][RPOL_NPCID], rpol[id][RPOL_WAYPOINTS_X][rpol[id][RPOL_NEXTWP]],
                                
rpol[id][RPOL_WAYPOINTS_Y][rpol[id][RPOL_NEXTWP]], rpol[id][RPOL_WAYPOINTS_Z][rpol[id][RPOL_NEXTWP]],
                                
RNPC_SPEED_RUN);
                        
rpol[id][RPOL_CURTARGET] = -1;
                        return;
                } else
                if (
IsPlayerInRangeOfPoint(rpol[id][RPOL_NPCID], RPOL_ATTACKRANGExyz)) {
                        
// Target is in attackrange
                        // Stop running and start shhoting
                        
new Float:oxFloat:oyFloat:oz;
                        
GetPlayerPos(rpol[id][RPOL_NPCID], oxoyoz);
                        
// Angle to the target
                        
new Float:angle atan2(ox xoy y) + 180.0;
                        
// Stop and build, alternate slot for security
                        
RNPC_StopPlayback(rpol[id][RPOL_NPCID]);
                        
RNPC_CreateBuild(rpol[id][RPOL_NPCID], PLAYER_RECORDING_TYPE_ONFOOT1);
                        
// Set weapon
                        
RNPC_SetWeaponID(22);
                        
// Set facing angle to the target
                        
RNPC_SetAngleQuats(0.0angle0.0);
                        
// Start firing
                        
RNPC_SetKeys(KEY_FIRE);
                        
// Move towards the target from the current position
                        
RNPC_ConcatMovement(xyzRNPC_SPEED_RUN);
                        
// Finish build
                        
RNPC_FinishBuild();

                        
// Start playback
                        
RNPC_StartBuildPlayback(id1);

                } else {
                        
// Stop shooting
                        
RNPC_SetKeys(0);
                        
// Move towards the targets
                        
MoveRNPC(rpol[id][RPOL_NPCID], xyzRNPC_SPEED_RUN);
                }
        }
}

// Hook OnNPCPlaybackFinished to determine when a NPC reached his current waypoint
public OnRNPCPlaybackFinished(npcid)
{
        
// Find the array index of the npc
        
new slot = -1;
        for (new 
0MAX_RNPC_POLICEi++) {
                if (
rpol[i][RPOL_NPCID] == npcid) {
                        
slot i;
                        break;
                }
        }
        if (
slot > -1) {
                
// NPC is a RNPC policeman
                
if (rpol[slot][RPOL_CURTARGET] == -1) {
                        
// Increase current waypoint index, and set it to 0 when the last one is reached
                        
rpol[slot][RPOL_NEXTWP] = (rpol[slot][RPOL_NEXTWP] + 1) % rpol[slot][RPOL_WPINDEX];
                        
// Make him walk to the next waypoint
                        
MoveRNPC(rpol[slot][RPOL_NPCID], rpol[slot][RPOL_WAYPOINTS_X][rpol[slot][RPOL_NEXTWP]],
                                
rpol[slot][RPOL_WAYPOINTS_Y][rpol[slot][RPOL_NEXTWP]], rpol[slot][RPOL_WAYPOINTS_Z][rpol[slot][RPOL_NEXTWP]],
                                
RNPC_SPEED_WALK);
                }
        }
        
CallLocalFunction("RNPC_OnRNPCPlaybackFinished""i"npcid);
}
#if defined _ALS_OnRNPCPlaybackFinished
    #undef OnRNPCPlaybackFinished
#else
    #define _ALS_OnRNPCPlaybackFinished
#endif
#define OnRNPCPlaybackFinished RNPC_OnRNPCPlaybackFinished
forward RNPC_OnRNPCPlaybackFinished(npcid);

// Hook OnPlayerKeyStateChange to detect firing players
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
        
// Check if player started firing
        
if (!(oldkeys KEY_FIRE) && (newkeys KEY_FIRE)) {
                
// Check if player holds a gun
                
if (GetPlayerWeapon(playerid) > 16 && GetPlayerWeapon(playerid) < 40) {
                        new 
Float:pxFloat:pyFloat:pz;
                        for (new 
0MAX_RNPC_POLICEi++) {
                                
// Skip invalid and already following npcs
                                
if (rpol[i][RPOL_NPCID] == -|| rpol[i][RPOL_CURTARGET] > -1) continue;
                                
GetPlayerPos(rpol[i][RPOL_NPCID], pxpypz);
                                
// If police in in range make him chase the attacking player
                                
if (IsPlayerInRangeOfPoint(playeridRPOL_VISIONRANGEpxpypz)) {
                                        
rpol[i][RPOL_CURTARGET] = playerid;
                                }
                        }
                }
        }
        
CallLocalFunction("RNPC_OnPlayerKeyStateChange""iii"playeridnewkeysoldkeys);

}
#if defined _ALS_OnPlayerKeyStateChange
    #undef OnPlayerKeyStateChange
#else
    #define _ALS_OnPlayerKeyStateChange
#endif
#define OnPlayerKeyStateChange RNPC_OnPlayerKeyStateChange
forward RNPC_OnPlayerKeyStateChange(playeridnewkeysoldkeys);

// Hook OnPlayerSpawn to set the NPCs skin
public OnPlayerSpawn(playerid)
{
        if (
IsPlayerNPC(playerid)) {
                
// Find the array index of the npc
                
new slot = -1;
                for (new 
0MAX_RNPC_POLICEi++) {
                        if (
rpol[i][RPOL_NPCID] == playerid) {
                                
slot i;
                                break;
                        }
                }
                
// If playerid is a policeman
                
if (slot > -1) {
                        
SetPlayerSkin(playeridrpol[slot][RPOL_SKIN]);
                }
        }
       
CallLocalFunction("RNPC_OnPlayerSpawn""i"playerid);

//<--------------- (Line 222)
#if defined _ALS_OnPlayerSpawn
    #undef OnPlayerSpawn
#else
    #define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn RNPC_OnPlayerSpawn
forward RNPC_OnPlayerSpawn(playerid); 
bookknp is offline   Reply With Quote
Old 18/07/2018, 11:02 PM   #4
RedRex
Huge Clucker
 
RedRex's Avatar
 
Join Date: Jan 2016
Location: Portugal <3
Posts: 494
Reputation: 29
Default Re: CreateRNPCPolice Dont Spawn

Hi buddy! Try this code!

Make this defines top of your script..
Code:
#if defined _ALS_OnPlayerSpawn 
    #undef OnPlayerSpawn 
#else 
    #define _ALS_OnPlayerSpawn 
#endif 
#define OnPlayerSpawn RNPC_OnPlayerSpawn 
forward RNPC_OnPlayerSpawn(playerid);
Then change your old code to this new code.
PHP Code:
public OnPlayerSpawn(playerid

        if (
IsPlayerNPC(playerid)) { 
                
// Find the array index of the npc 
                
new slot = -1
                for (new 
0MAX_RNPC_POLICEi++) { 
                        if (
rpol[i][RPOL_NPCID] == playerid) { 
                                
slot i
                                break; 
                        } 
                } 
                
// If playerid is a policeman 
                
if (slot > -1) { 
                        
SetPlayerSkin(playeridrpol[slot][RPOL_SKIN]); 
                } 
        } 
       
CallLocalFunction("RNPC_OnPlayerSpawn""i"playerid); 
       return 
1;

__________________
RedRex's Cops and Robbers
RCNR Soon
We are working on it. Just wait us!! Soon updating to hosted tap after finished.
RedRex is offline   Reply With Quote
Old 18/07/2018, 11:10 PM   #5
bookknp
Huge Clucker
 
bookknp's Avatar
 
Join Date: Dec 2013
Posts: 233
Reputation: 24
Default Re: CreateRNPCPolice Dont Spawn

Quote:
Originally Posted by RedRex View Post
Hi buddy! Try this code!

Make this defines top of your script..
Code:
#if defined _ALS_OnPlayerSpawn 
    #undef OnPlayerSpawn 
#else 
    #define _ALS_OnPlayerSpawn 
#endif 
#define OnPlayerSpawn RNPC_OnPlayerSpawn 
forward RNPC_OnPlayerSpawn(playerid);
Then change your old code to this new code.
PHP Code:
public OnPlayerSpawn(playerid

        if (
IsPlayerNPC(playerid)) { 
                
// Find the array index of the npc 
                
new slot = -1
                for (new 
0MAX_RNPC_POLICEi++) { 
                        if (
rpol[i][RPOL_NPCID] == playerid) { 
                                
slot i
                                break; 
                        } 
                } 
                
// If playerid is a policeman 
                
if (slot > -1) { 
                        
SetPlayerSkin(playeridrpol[slot][RPOL_SKIN]); 
                } 
        } 
       
CallLocalFunction("RNPC_OnPlayerSpawn""i"playerid); 
       return 
1;

hi friend, error :/, i change all u said me...

PHP Code:
C:\Users\1320703\Desktop\GTA3\server2\pawno\include\../include/RNPC2.inc(222) : warning 209: function "RNPC_OnPlayerSpawn" should return a value
Pawn compiler 3.2.3664              Copyright 
(c1997-2006ITB CompuPhase


1 Warning

PHP Code:
/**
 * RNPC Police include
 * Simple AI and tutorial script
 * Mauzen, 10.7.2012, V1.0
 */

#include <RNPC>

#define RPOL_MAX_WAYPOINTS                      (12)    // Maximum number of waypoints for a policeman
#define RPOL_VISIONRANGE                        (25.0)  // Attacking players in that range will be chased
#define RPOL_ATTACKRANGE                        (15.0)  // Policeman starts firing when in this range to the player
#define MAX_RNPC_POLICE                         (8)             // Max number of police officers
#define RPOL_UPDATE                                     (200)   // Interval in ms to update movements, attacks, etc

#if defined _ALS_OnPlayerSpawn
    #undef OnPlayerSpawn
#else
    #define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn RNPC_OnPlayerSpawn
forward RNPC_OnPlayerSpawn(playerid);


// The enum containing all data for a single policeman
enum RPol_enum {
                        
RPOL_NPCID,
                        
RPOL_TIMER,
        
Float:  RPOL_WAYPOINTS_X[RPOL_MAX_WAYPOINTS],
        
Float:  RPOL_WAYPOINTS_Y[RPOL_MAX_WAYPOINTS],
        
Float:  RPOL_WAYPOINTS_Z[RPOL_MAX_WAYPOINTS],
                        
RPOL_WPINDEX,
                        
RPOL_NEXTWP,
                        
RPOL_CURTARGET,
                        
RPOL_SKIN
};

// Initial data
new rpol[MAX_RNPC_POLICE][RPol_enum] = {{-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1},
        {-
1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1},
        {-
1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1} };

// Creates a new policeman
stock CreateRNPCPolice(name[], skin)
{
        
// Find a free spot in the rpol array
        
new slot = -1;
        for (new 
0MAX_RNPC_POLICEi++) {
                if (
rpol[i][RPOL_NPCID] == -1) {
                        
slot i;
                        break;
                }
        }
        if (
slot == -1) return -1;

        
// Connect the NPC
        
rpol[slot][RPOL_NPCID] = ConnectRNPC(name);
        
rpol[slot][RPOL_SKIN] = skin;
        return 
slot;
}

// Adds a waypoint to the Policeman's path
stock AddRPOLWaypoint(rpolidFloat:xFloat:yFloat:z) {
        if (
rpol[rpolid][RPOL_NPCID] == -1) return false;
        if (
rpol[rpolid][RPOL_WPINDEX] >= RPOL_MAX_WAYPOINTS) return false;
        
// Store the waypoint coordinates at the last free position
        
new slot rpol[rpolid][RPOL_WPINDEX];
        
rpol[rpolid][RPOL_WAYPOINTS_X][slot] = x;
        
rpol[rpolid][RPOL_WAYPOINTS_Y][slot] = y;
        
rpol[rpolid][RPOL_WAYPOINTS_Z][slot] = z;

        
rpol[rpolid][RPOL_WPINDEX]++;
        return 
true;
}

stock StartRPOLRoute(rpolid)
{
        
// If valid and not already walking
        
if (rpol[rpolid][RPOL_TIMER] == -&& rpol[rpolid][RPOL_NPCID] != -1) {
                
rpol[rpolid][RPOL_TIMER] = SetTimerEx("WatchTimer"RPOL_UPDATE1"i"rpolid);
                
// Move to the first waypoint
                
MoveRNPC(rpol[rpolid][RPOL_NPCID], rpol[rpolid][RPOL_WAYPOINTS_X][0], rpol[rpolid][RPOL_WAYPOINTS_Y][0],
                                
rpol[rpolid][RPOL_WAYPOINTS_Z][0], RNPC_SPEED_RUN);
                return 
true;
        }
        return 
0;
}

stock RemoveRNPCPolice(rpolid)
{
        if (
rpol[rpolid][RPOL_TIMER] > -1) {
                
// Stop timer
                
KillTimer(rpol[slot][RPOL_TIMER]);
        }
        
// Kick the NPC
        
Kick(rpol[rpolid][RPOL_NPCID];
        
// Reset data
        
rpol[rpolid] = {-1, -10.00.00.000, -1};
}
public 
OnGameModeInit()
{


new 
rp CreateRNPCPolice ("Officerino"280);
AddRPOLWaypoint (rp2029.421354.3410.5);
AddRPOLWaypoint (rp2033.551286.2110.5);
AddRPOLWaypoint (rp2079.031286.0010.5);
AddRPOLWaypoint (rp2079.021362.0810.5);
StartRPOLRoute(rp);


return 
1;
}
// This is the timer that actually controls the policeman
// and so the actually interesting "KI" for the RNPC
forward Bots(playerid);
public 
Bots(playerid)
{

SetTimer("StartAllRoutes"5000);
}
forward StartAllRoutes();
public 
StartAllRoutes() {
    
    
// etc
}
forward WatchTimer(id);
public 
WatchTimer(id) {
        if (
rpol[id][RPOL_CURTARGET] > -1) {
                new 
Float:xFloat:yFloat:z;
                
GetPlayerPos(rpol[id][RPOL_CURTARGET], x,z);
                if (!
IsPlayerInRangeOfPoint(rpol[id][RPOL_NPCID], RPOL_VISIONRANGE 2.0xyz)
                        || 
GetPlayerState(rpol[id][RPOL_CURTARGET]) != PLAYER_STATE_ONFOOT) {
                        
// Target escaped or died
                        // Stop shooting
                        
RNPC_SetKeys(0);
                        
// Continue route
                        
MoveRNPC(rpol[id][RPOL_NPCID], rpol[id][RPOL_WAYPOINTS_X][rpol[id][RPOL_NEXTWP]],
                                
rpol[id][RPOL_WAYPOINTS_Y][rpol[id][RPOL_NEXTWP]], rpol[id][RPOL_WAYPOINTS_Z][rpol[id][RPOL_NEXTWP]],
                                
RNPC_SPEED_RUN);
                        
rpol[id][RPOL_CURTARGET] = -1;
                        return;
                } else
                if (
IsPlayerInRangeOfPoint(rpol[id][RPOL_NPCID], RPOL_ATTACKRANGExyz)) {
                        
// Target is in attackrange
                        // Stop running and start shhoting
                        
new Float:oxFloat:oyFloat:oz;
                        
GetPlayerPos(rpol[id][RPOL_NPCID], oxoyoz);
                        
// Angle to the target
                        
new Float:angle atan2(ox xoy y) + 180.0;
                        
// Stop and build, alternate slot for security
                        
RNPC_StopPlayback(rpol[id][RPOL_NPCID]);
                        
RNPC_CreateBuild(rpol[id][RPOL_NPCID], PLAYER_RECORDING_TYPE_ONFOOT1);
                        
// Set weapon
                        
RNPC_SetWeaponID(22);
                        
// Set facing angle to the target
                        
RNPC_SetAngleQuats(0.0angle0.0);
                        
// Start firing
                        
RNPC_SetKeys(KEY_FIRE);
                        
// Move towards the target from the current position
                        
RNPC_ConcatMovement(xyzRNPC_SPEED_RUN);
                        
// Finish build
                        
RNPC_FinishBuild();

                        
// Start playback
                        
RNPC_StartBuildPlayback(id1);

                } else {
                        
// Stop shooting
                        
RNPC_SetKeys(0);
                        
// Move towards the targets
                        
MoveRNPC(rpol[id][RPOL_NPCID], xyzRNPC_SPEED_RUN);
                }
        }
}

// Hook OnNPCPlaybackFinished to determine when a NPC reached his current waypoint
public OnRNPCPlaybackFinished(npcid)
{
        
// Find the array index of the npc
        
new slot = -1;
        for (new 
0MAX_RNPC_POLICEi++) {
                if (
rpol[i][RPOL_NPCID] == npcid) {
                        
slot i;
                        break;
                }
        }
        if (
slot > -1) {
                
// NPC is a RNPC policeman
                
if (rpol[slot][RPOL_CURTARGET] == -1) {
                        
// Increase current waypoint index, and set it to 0 when the last one is reached
                        
rpol[slot][RPOL_NEXTWP] = (rpol[slot][RPOL_NEXTWP] + 1) % rpol[slot][RPOL_WPINDEX];
                        
// Make him walk to the next waypoint
                        
MoveRNPC(rpol[slot][RPOL_NPCID], rpol[slot][RPOL_WAYPOINTS_X][rpol[slot][RPOL_NEXTWP]],
                                
rpol[slot][RPOL_WAYPOINTS_Y][rpol[slot][RPOL_NEXTWP]], rpol[slot][RPOL_WAYPOINTS_Z][rpol[slot][RPOL_NEXTWP]],
                                
RNPC_SPEED_WALK);
                }
        }
        
CallLocalFunction("RNPC_OnRNPCPlaybackFinished""i"npcid);
}
#if defined _ALS_OnRNPCPlaybackFinished
    #undef OnRNPCPlaybackFinished
#else
    #define _ALS_OnRNPCPlaybackFinished
#endif
#define OnRNPCPlaybackFinished RNPC_OnRNPCPlaybackFinished
forward RNPC_OnRNPCPlaybackFinished(npcid);

// Hook OnPlayerKeyStateChange to detect firing players
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
        
// Check if player started firing
        
if (!(oldkeys KEY_FIRE) && (newkeys KEY_FIRE)) {
                
// Check if player holds a gun
                
if (GetPlayerWeapon(playerid) > 16 && GetPlayerWeapon(playerid) < 40) {
                        new 
Float:pxFloat:pyFloat:pz;
                        for (new 
0MAX_RNPC_POLICEi++) {
                                
// Skip invalid and already following npcs
                                
if (rpol[i][RPOL_NPCID] == -|| rpol[i][RPOL_CURTARGET] > -1) continue;
                                
GetPlayerPos(rpol[i][RPOL_NPCID], pxpypz);
                                
// If police in in range make him chase the attacking player
                                
if (IsPlayerInRangeOfPoint(playeridRPOL_VISIONRANGEpxpypz)) {
                                        
rpol[i][RPOL_CURTARGET] = playerid;
                                }
                        }
                }
        }
        
CallLocalFunction("RNPC_OnPlayerKeyStateChange""iii"playeridnewkeysoldkeys);

}
#if defined _ALS_OnPlayerKeyStateChange
    #undef OnPlayerKeyStateChange
#else
    #define _ALS_OnPlayerKeyStateChange
#endif
#define OnPlayerKeyStateChange RNPC_OnPlayerKeyStateChange
forward RNPC_OnPlayerKeyStateChange(playeridnewkeysoldkeys);

// Hook OnPlayerSpawn to set the NPCs skin
public OnPlayerSpawn(playerid)
{
        if (
IsPlayerNPC(playerid)) {
                
// Find the array index of the npc
                
new slot = -1;
                for (new 
0MAX_RNPC_POLICEi++) {
                        if (
rpol[i][RPOL_NPCID] == playerid) {
                                
slot i;
                                break;
                        }
                }
                
// If playerid is a policeman
                
if (slot > -1) {
                        
SetPlayerSkin(playeridrpol[slot][RPOL_SKIN]);
                }
        }
       
CallLocalFunction("RNPC_OnPlayerSpawn""i"playerid);
       return 
1;

bookknp is offline   Reply With Quote
Old 18/07/2018, 11:15 PM   #6
RedRex
Huge Clucker
 
RedRex's Avatar
 
Join Date: Jan 2016
Location: Portugal <3
Posts: 494
Reputation: 29
Default Re: CreateRNPCPolice Dont Spawn

Quote:
Originally Posted by bookknp View Post
hi friend, error :/, i change all u said me...

PHP Code:
C:\Users\1320703\Desktop\GTA3\server2\pawno\include\../include/RNPC2.inc(222) : warning 209: function "RNPC_OnPlayerSpawn" should return a value
Pawn compiler 3.2.3664              Copyright 
(c1997-2006ITB CompuPhase


1 Warning

PHP Code:
/**
 * RNPC Police include
 * Simple AI and tutorial script
 * Mauzen, 10.7.2012, V1.0
 */

#include <RNPC>

#define RPOL_MAX_WAYPOINTS                      (12)    // Maximum number of waypoints for a policeman
#define RPOL_VISIONRANGE                        (25.0)  // Attacking players in that range will be chased
#define RPOL_ATTACKRANGE                        (15.0)  // Policeman starts firing when in this range to the player
#define MAX_RNPC_POLICE                         (8)             // Max number of police officers
#define RPOL_UPDATE                                     (200)   // Interval in ms to update movements, attacks, etc

#if defined _ALS_OnPlayerSpawn
    #undef OnPlayerSpawn
#else
    #define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn RNPC_OnPlayerSpawn
forward RNPC_OnPlayerSpawn(playerid);


// The enum containing all data for a single policeman
enum RPol_enum {
                        
RPOL_NPCID,
                        
RPOL_TIMER,
        
Float:  RPOL_WAYPOINTS_X[RPOL_MAX_WAYPOINTS],
        
Float:  RPOL_WAYPOINTS_Y[RPOL_MAX_WAYPOINTS],
        
Float:  RPOL_WAYPOINTS_Z[RPOL_MAX_WAYPOINTS],
                        
RPOL_WPINDEX,
                        
RPOL_NEXTWP,
                        
RPOL_CURTARGET,
                        
RPOL_SKIN
};

// Initial data
new rpol[MAX_RNPC_POLICE][RPol_enum] = {{-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1},
        {-
1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1},
        {-
1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1}, {-1, -10.00.00.000, -1} };

// Creates a new policeman
stock CreateRNPCPolice(name[], skin)
{
        
// Find a free spot in the rpol array
        
new slot = -1;
        for (new 
0MAX_RNPC_POLICEi++) {
                if (
rpol[i][RPOL_NPCID] == -1) {
                        
slot i;
                        break;
                }
        }
        if (
slot == -1) return -1;

        
// Connect the NPC
        
rpol[slot][RPOL_NPCID] = ConnectRNPC(name);
        
rpol[slot][RPOL_SKIN] = skin;
        return 
slot;
}

// Adds a waypoint to the Policeman's path
stock AddRPOLWaypoint(rpolidFloat:xFloat:yFloat:z) {
        if (
rpol[rpolid][RPOL_NPCID] == -1) return false;
        if (
rpol[rpolid][RPOL_WPINDEX] >= RPOL_MAX_WAYPOINTS) return false;
        
// Store the waypoint coordinates at the last free position
        
new slot rpol[rpolid][RPOL_WPINDEX];
        
rpol[rpolid][RPOL_WAYPOINTS_X][slot] = x;
        
rpol[rpolid][RPOL_WAYPOINTS_Y][slot] = y;
        
rpol[rpolid][RPOL_WAYPOINTS_Z][slot] = z;

        
rpol[rpolid][RPOL_WPINDEX]++;
        return 
true;
}

stock StartRPOLRoute(rpolid)
{
        
// If valid and not already walking
        
if (rpol[rpolid][RPOL_TIMER] == -&& rpol[rpolid][RPOL_NPCID] != -1) {
                
rpol[rpolid][RPOL_TIMER] = SetTimerEx("WatchTimer"RPOL_UPDATE1"i"rpolid);
                
// Move to the first waypoint
                
MoveRNPC(rpol[rpolid][RPOL_NPCID], rpol[rpolid][RPOL_WAYPOINTS_X][0], rpol[rpolid][RPOL_WAYPOINTS_Y][0],
                                
rpol[rpolid][RPOL_WAYPOINTS_Z][0], RNPC_SPEED_RUN);
                return 
true;
        }
        return 
0;
}

stock RemoveRNPCPolice(rpolid)
{
        if (
rpol[rpolid][RPOL_TIMER] > -1) {
                
// Stop timer
                
KillTimer(rpol[slot][RPOL_TIMER]);
        }
        
// Kick the NPC
        
Kick(rpol[rpolid][RPOL_NPCID];
        
// Reset data
        
rpol[rpolid] = {-1, -10.00.00.000, -1};
}
public 
OnGameModeInit()
{


new 
rp CreateRNPCPolice ("Officerino"280);
AddRPOLWaypoint (rp2029.421354.3410.5);
AddRPOLWaypoint (rp2033.551286.2110.5);
AddRPOLWaypoint (rp2079.031286.0010.5);
AddRPOLWaypoint (rp2079.021362.0810.5);
StartRPOLRoute(rp);


return 
1;
}
// This is the timer that actually controls the policeman
// and so the actually interesting "KI" for the RNPC
forward Bots(playerid);
public 
Bots(playerid)
{

SetTimer("StartAllRoutes"5000);
}
forward StartAllRoutes();
public 
StartAllRoutes() {
    
    
// etc
}
forward WatchTimer(id);
public 
WatchTimer(id) {
        if (
rpol[id][RPOL_CURTARGET] > -1) {
                new 
Float:xFloat:yFloat:z;
                
GetPlayerPos(rpol[id][RPOL_CURTARGET], x,z);
                if (!
IsPlayerInRangeOfPoint(rpol[id][RPOL_NPCID], RPOL_VISIONRANGE 2.0xyz)
                        || 
GetPlayerState(rpol[id][RPOL_CURTARGET]) != PLAYER_STATE_ONFOOT) {
                        
// Target escaped or died
                        // Stop shooting
                        
RNPC_SetKeys(0);
                        
// Continue route
                        
MoveRNPC(rpol[id][RPOL_NPCID], rpol[id][RPOL_WAYPOINTS_X][rpol[id][RPOL_NEXTWP]],
                                
rpol[id][RPOL_WAYPOINTS_Y][rpol[id][RPOL_NEXTWP]], rpol[id][RPOL_WAYPOINTS_Z][rpol[id][RPOL_NEXTWP]],
                                
RNPC_SPEED_RUN);
                        
rpol[id][RPOL_CURTARGET] = -1;
                        return;
                } else
                if (
IsPlayerInRangeOfPoint(rpol[id][RPOL_NPCID], RPOL_ATTACKRANGExyz)) {
                        
// Target is in attackrange
                        // Stop running and start shhoting
                        
new Float:oxFloat:oyFloat:oz;
                        
GetPlayerPos(rpol[id][RPOL_NPCID], oxoyoz);
                        
// Angle to the target
                        
new Float:angle atan2(ox xoy y) + 180.0;
                        
// Stop and build, alternate slot for security
                        
RNPC_StopPlayback(rpol[id][RPOL_NPCID]);
                        
RNPC_CreateBuild(rpol[id][RPOL_NPCID], PLAYER_RECORDING_TYPE_ONFOOT1);
                        
// Set weapon
                        
RNPC_SetWeaponID(22);
                        
// Set facing angle to the target
                        
RNPC_SetAngleQuats(0.0angle0.0);
                        
// Start firing
                        
RNPC_SetKeys(KEY_FIRE);
                        
// Move towards the target from the current position
                        
RNPC_ConcatMovement(xyzRNPC_SPEED_RUN);
                        
// Finish build
                        
RNPC_FinishBuild();

                        
// Start playback
                        
RNPC_StartBuildPlayback(id1);

                } else {
                        
// Stop shooting
                        
RNPC_SetKeys(0);
                        
// Move towards the targets
                        
MoveRNPC(rpol[id][RPOL_NPCID], xyzRNPC_SPEED_RUN);
                }
        }
}

// Hook OnNPCPlaybackFinished to determine when a NPC reached his current waypoint
public OnRNPCPlaybackFinished(npcid)
{
        
// Find the array index of the npc
        
new slot = -1;
        for (new 
0MAX_RNPC_POLICEi++) {
                if (
rpol[i][RPOL_NPCID] == npcid) {
                        
slot i;
                        break;
                }
        }
        if (
slot > -1) {
                
// NPC is a RNPC policeman
                
if (rpol[slot][RPOL_CURTARGET] == -1) {
                        
// Increase current waypoint index, and set it to 0 when the last one is reached
                        
rpol[slot][RPOL_NEXTWP] = (rpol[slot][RPOL_NEXTWP] + 1) % rpol[slot][RPOL_WPINDEX];
                        
// Make him walk to the next waypoint
                        
MoveRNPC(rpol[slot][RPOL_NPCID], rpol[slot][RPOL_WAYPOINTS_X][rpol[slot][RPOL_NEXTWP]],
                                
rpol[slot][RPOL_WAYPOINTS_Y][rpol[slot][RPOL_NEXTWP]], rpol[slot][RPOL_WAYPOINTS_Z][rpol[slot][RPOL_NEXTWP]],
                                
RNPC_SPEED_WALK);
                }
        }
        
CallLocalFunction("RNPC_OnRNPCPlaybackFinished""i"npcid);
}
#if defined _ALS_OnRNPCPlaybackFinished
    #undef OnRNPCPlaybackFinished
#else
    #define _ALS_OnRNPCPlaybackFinished
#endif
#define OnRNPCPlaybackFinished RNPC_OnRNPCPlaybackFinished
forward RNPC_OnRNPCPlaybackFinished(npcid);

// Hook OnPlayerKeyStateChange to detect firing players
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
        
// Check if player started firing
        
if (!(oldkeys KEY_FIRE) && (newkeys KEY_FIRE)) {
                
// Check if player holds a gun
                
if (GetPlayerWeapon(playerid) > 16 && GetPlayerWeapon(playerid) < 40) {
                        new 
Float:pxFloat:pyFloat:pz;
                        for (new 
0MAX_RNPC_POLICEi++) {
                                
// Skip invalid and already following npcs
                                
if (rpol[i][RPOL_NPCID] == -|| rpol[i][RPOL_CURTARGET] > -1) continue;
                                
GetPlayerPos(rpol[i][RPOL_NPCID], pxpypz);
                                
// If police in in range make him chase the attacking player
                                
if (IsPlayerInRangeOfPoint(playeridRPOL_VISIONRANGEpxpypz)) {
                                        
rpol[i][RPOL_CURTARGET] = playerid;
                                }
                        }
                }
        }
        
CallLocalFunction("RNPC_OnPlayerKeyStateChange""iii"playeridnewkeysoldkeys);

}
#if defined _ALS_OnPlayerKeyStateChange
    #undef OnPlayerKeyStateChange
#else
    #define _ALS_OnPlayerKeyStateChange
#endif
#define OnPlayerKeyStateChange RNPC_OnPlayerKeyStateChange
forward RNPC_OnPlayerKeyStateChange(playeridnewkeysoldkeys);

// Hook OnPlayerSpawn to set the NPCs skin
public OnPlayerSpawn(playerid)
{
        if (
IsPlayerNPC(playerid)) {
                
// Find the array index of the npc
                
new slot = -1;
                for (new 
0MAX_RNPC_POLICEi++) {
                        if (
rpol[i][RPOL_NPCID] == playerid) {
                                
slot i;
                                break;
                        }
                }
                
// If playerid is a policeman
                
if (slot > -1) {
                        
SetPlayerSkin(playeridrpol[slot][RPOL_SKIN]);
                }
        }
       
CallLocalFunction("RNPC_OnPlayerSpawn""i"playerid);
       return 
1;

Try this code.

PHP Code:
public OnPlayerSpawn(playerid

        if (
IsPlayerNPC(playerid)) { 
                
// Find the array index of the npc 
                
new slot = -1
                for (new 
0MAX_RNPC_POLICEi++) { 
                        if (
rpol[i][RPOL_NPCID] == playerid) { 
                                
slot i
                                break; 
                        } 
                } 
                
// If playerid is a policeman 
                
if (slot > -1) { 
                        
SetPlayerSkin(playeridrpol[slot][RPOL_SKIN]); 
                }
            return 
1;
        } 
       
CallLocalFunction("RNPC_OnPlayerSpawn""i"playerid); 
       return 
1

__________________
RedRex's Cops and Robbers
RCNR Soon
We are working on it. Just wait us!! Soon updating to hosted tap after finished.
RedRex is offline   Reply With Quote
Old 18/07/2018, 11:23 PM   #7
bookknp
Huge Clucker
 
bookknp's Avatar
 
Join Date: Dec 2013
Posts: 233
Reputation: 24
Default Re: CreateRNPCPolice Dont Spawn

Quote:
Originally Posted by RedRex View Post
Try this code.

PHP Code:
public OnPlayerSpawn(playerid

        if (
IsPlayerNPC(playerid)) { 
                
// Find the array index of the npc 
                
new slot = -1
                for (new 
0MAX_RNPC_POLICEi++) { 
                        if (
rpol[i][RPOL_NPCID] == playerid) { 
                                
slot i
                                break; 
                        } 
                } 
                
// If playerid is a policeman 
                
if (slot > -1) { 
                        
SetPlayerSkin(playeridrpol[slot][RPOL_SKIN]); 
                }
            return 
1;
        } 
       
CallLocalFunction("RNPC_OnPlayerSpawn""i"playerid); 
       return 
1

Very thx, but the error continue, friend... is it old script?? is it compatible with samp 0.3.7 r2??

PHP Code:
C:\Users\1320703\Desktop\GTA3\server2\pawno\include\../include/RNPC2.inc(222) : warning 209: function "RNPC_OnPlayerSpawn" should return a value
Pawn compiler 3.2.3664              Copyright 
(c1997-2006ITB CompuPhase


1 Warning

i fixed it, but dont spawn RNPCPolice, why??

PHP Code:
#pragma tabsize 0 

Last edited by bookknp; 19/07/2018 at 12:02 AM.
bookknp is offline   Reply With Quote
Old 19/07/2018, 01:14 AM   #8
RedRex
Huge Clucker
 
RedRex's Avatar
 
Join Date: Jan 2016
Location: Portugal <3
Posts: 494
Reputation: 29
Default Re: CreateRNPCPolice Dont Spawn

Your code since 2013 and must be updated includes + plugins try download SAMP 0.3.7 RC 2 AND RE-compatible IT

And did you copy your script? http://forum.sa-mp.com/showthread.php?t=583378
__________________
RedRex's Cops and Robbers
RCNR Soon
We are working on it. Just wait us!! Soon updating to hosted tap after finished.
RedRex is offline   Reply With Quote
Old 19/07/2018, 04:39 PM   #9
Mauzen
Banned
 
Join Date: Jun 2007
Location: Western Germany
Posts: 4,880
Reputation: 1597
Default Re: CreateRNPCPolice Dont Spawn

Check the maxnpcs setting in the server.cfg. Should be bigger than 0, or eventually add it if that setting is missing in your config.
If this doesnt help, make sure youve got the "npcmodes" subdirectory in the server directory, and in there the freshly compiled RNPC npcmode, as well as the "recordings" directory, all with the correct permissions (if youre using linux).
Mauzen is offline   Reply With Quote
Old 19/07/2018, 07:28 PM   #10
bookknp
Huge Clucker
 
bookknp's Avatar
 
Join Date: Dec 2013
Posts: 233
Reputation: 24
Default Re: CreateRNPCPolice Dont Spawn

Quote:
Originally Posted by Mauzen View Post
Check the maxnpcs setting in the server.cfg. Should be bigger than 0, or eventually add it if that setting is missing in your config.
If this doesnt help, make sure youve got the "npcmodes" subdirectory in the server directory, and in there the freshly compiled RNPC npcmode, as well as the "recordings" directory, all with the correct permissions (if youre using linux).
Hello Mauzen!!!,

I have checked Server.cfg and it is all right, I have the folder npcmodes and recording, but now I do not know how to put an npc recorded. I am new, can you explain it to me?

Server.cfg

PHP Code:
echo Executing Server Config...
lanmode 1
rcon_password playground
maxplayers 100
port 7887
hostname KoN
gamemode0 gamemode 1
filterscripts    Skins dropweapon me Cars 
plugins streamer pawn
-memory  RNPC
announce 1
query 1
weburl http
://konclan.net/
maxnpc 100
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
logtimeformat 
[%H:%M:%S]
ackslimit 50000 

i put this in my gamemode, but dont spawn RNPCPolice... help me plz?? (i fixed all errors, and now compile rightly)

PHP Code:
forward Bots(playerid);
forward Route(playerid);

public 
OnGameModeInit()
{
    
    
SetTimer("Bots",0,false);

public 
Bots(playerid)
{
new 
rp CreateRNPCPolice ("Officerino"280);
AddRPOLWaypoint (rp2029.421354.3410.5);
AddRPOLWaypoint (rp2033.551286.2110.5);
AddRPOLWaypoint (rp2079.031286.0010.5);
AddRPOLWaypoint (rp2079.021362.0810.5);
SetTimerEx ("Route"5000"i"playerid);
return 
1;
}

public 
Route()
{
StartRPOLRoute (CreateRNPCPolice("Officerino"280));
return 
1;

bookknp is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
dialog dont spawn car enzulikeS Scripting Help 18 08/05/2018 05:17 PM
dont spawn at my location truckingserver Scripting Help 1 17/08/2014 12:07 PM
Objects dont spawn coolmark1995 Scripting Help 17 19/03/2014 04:32 PM
Vehicles dont spawn jtemple042996 Scripting Help 13 12/06/2012 07:57 PM
dont spawn ingame [HKS]dlegend Help Archive 6 10/10/2009 08:18 PM


All times are GMT. The time now is 07:17 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.