SA-MP Forums Archive
Problema con FCNPC - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Problema con FCNPC (/showthread.php?tid=579389)



Problema con FCNPC - romperson - 26.06.2015

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


Respuesta: Problema con FCNPC - [DOG]irinel1996 - 26.06.2015

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.


Respuesta: Problema con FCNPC - romperson - 26.06.2015

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


Respuesta: Problema con FCNPC - [DOG]irinel1996 - 26.06.2015

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


Respuesta: Problema con FCNPC - romperson - 26.06.2015

Код:
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


Respuesta: Problema con FCNPC - [DOG]irinel1996 - 27.06.2015

ї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.


Respuesta: Problema con FCNPC - romperson - 27.06.2015

Код:
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


Respuesta: Problema con FCNPC - [DOG]irinel1996 - 27.06.2015

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.


Respuesta: Problema con FCNPC - romperson - 27.06.2015

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)


Respuesta: Problema con FCNPC - [DOG]irinel1996 - 27.06.2015

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.