Problema con FCNPC
#1

Tengo un problema con el FCNPC , cuando agrego cosas alas callbacks que trae solo se ejecutan la mitad de las lнneas que agrego en cada callback , utilizo ZCMD nose si eso puede estar afectando a esto . NECESITO AYUDA POR FAVOR
Reply
#2

Comprueba que los return estбn situados correctamente, si devuelves un valor en la callback, suele dejar de ejecutarse el cуdigo que sigue dicho return.
Reply
#3

Si los return estбn todos colocados perfectamente , lo probй haciendo en un FS aparte y funciona perfectamente
Reply
#4

їEs mucha molestia pedirte que publiques el cуdigo de esas callbacks?
Reply
#5

Код:
public FCNPC_OnSpawn(npcid)
{
       FCNPC_SetHealth(npcid,100.0);
       new rand = random(sizeof(RandomSpawnsNpc));
	   FCNPC_SetPosition(npcid, RandomSpawnsNpc[rand][0], RandomSpawnsNpc[rand][1], RandomSpawnsNpc[rand][2]);
       if (Timer[npcid] > 0) KillTimer(Timer[npcid]);
       Timer[npcid] = SetTimerEx("ZombieBOTMordida", 1000, 1, "i", npcid);
	   return 1;
}
El temporizador es el que no se ejecuta
Reply
#6

їProbaste hacer un debug a travйs de todo el cуdigo para ver quй cosa falla?

Primero te recomiendo que te leas cуmo funciona SetTimerEx, esta funciуn al ser ejecutada devuelve una ID (la ID del timer) que empieza en 0, por lo tanto:
pawn Код:
if (Timer[npcid] >= 0) KillTimer(Timer[npcid]);
La variable Timer deberнa ser igual a -1 (por ejemplo) cuando "estб vacнa" ya que 0 ES una ID vбlida que devuelve SetTimerEx.

Bien, lo anterior es un pequeсo fallo sin importancia, deberнas probar esto a ver quй pasa:
pawn Код:
public FCNPC_OnSpawn(npcid)
{
    print("1. hola, empiezo a ejecutarme");

    FCNPC_SetHealth(npcid, 100.0);
   
    print("2. he llegado hasta aquн");

    new rand = random(sizeof(RandomSpawnsNpc));
    FCNPC_SetPosition(npcid, RandomSpawnsNpc[rand][0], RandomSpawnsNpc[rand][1], RandomSpawnsNpc[rand][2]);

    print("3. aquн estoy otra vez");

    if (Timer[npcid] >= 0) KillTimer(Timer[npcid]);

    print("4. bieeen mi gente");

    Timer[npcid] = SetTimerEx("ZombieBOTMordida", 1000, true, "i", npcid);
 
    print("5. si me lees, SetTimerEx se ejecutу, bye bye");
   
    return 1;
}
Tambiйn me gustarнa ver ZombieBOTMordida.
Reply
#7

Код:
public ZombieBOTMordida(npcid)
    {
    foreach (new playerid : Player) {
    if(IsPlayerNPC(npcid)) {
    new Float:x[2],Float:y[2],Float:z[2];
    GetPlayerPos(playerid,x[1],y[1],z[1]);
    if(IsPlayerInRangeOfPoint(npcid, 25, x[1],y[1],z[1])){
    FCNPC_GoTo(npcid,x[1],y[1],z[1],MOVE_TYPE_RUN,10,1);
    }
    GetPlayerPos(playerid,x[0],y[0],z[0]);
    if(IsPlayerInRangeOfPoint(npcid, 3, x[0],y[0],z[0])){
    /.....
				  }
       }
    }
    return 1;
    }
Probe con el debug y solo llega hasta el numero 3 , no se ejecuta el temporizador
Reply
#8

Vale, parece que el problema lo tenemos en la condiciуn del KillTimer, no sй como habrбs declarado Timer, pero desde mi punto de vista lo harнa asн:
pawn Код:
/* Fuera de todo */
new Timer[MAX_NPCS] = -1;


/* ---------------------- */
public FCNPC_OnSpawn(npcid)
{
    print("1. hola, empiezo a ejecutarme");

    FCNPC_SetHealth(npcid, 100.0);
   
    print("2. he llegado hasta aquн");

    new rand = random(sizeof(RandomSpawnsNpc));
    FCNPC_SetPosition(npcid, RandomSpawnsNpc[rand][0], RandomSpawnsNpc[rand][1], RandomSpawnsNpc[rand][2]);

    print("3. aquн estoy otra vez");

    if (Timer[npcid] >= 0)
    {
        KillTimer(Timer[npcid]);
        Timer[npcid] = -1;
    }

    print("4. bieeen mi gente");

    Timer[npcid] = SetTimerEx("ZombieBOTMordida", 1000, true, "i", npcid);
 
    print("5. si me lees, SetTimerEx se ejecutу, bye bye");
   
    return 1;
}
Yo puse MAX_NPCS al declarar la variable, pero ya sabes que tienes que poner el valor que tu estйs usando.
Reply
#9

Lo probo y sigue sin ejecutarse , tambiйn lo hice en un FS limpio se ejecuta bien nose si algъn cуdigo del GM este afectando (esto me pasa en todas la callbacks del FCNPC)
Reply
#10

A lo mejor otro include influye en el funcionamiento, serнa raro pero no imposible, si el cуdigo te va bien en el filterscript y en el gamemode no... habrнa que revisar el gamemode de arriba - abajo.

Lo ъnico que se me ocurre es poner los includes de uno en uno en el filterscript, compilar y probar a ver si alguno interfiere... es muy pesado, pero a veces no queda de otra.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)