Problema | Timers | OnPlayerEnterDynamicCP -
CrossOv3r - 01.03.2013
OnPlayerEnterDynamicCP - Timers
Que tбl, un saludo y gracias por leer el tema. Tengo un problema que me esta rompiendo un poco la cabeza, los timers que ejecuto en el callback "OnPlayerEnterDynamicCP", no se ejecutan.. es decir... El resultado no es el correcto
Callback
pawn Код:
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
for(new i=0; i < sizeof(ZoneInfo); i++)
{
if(checkpointid == CPAero)
{
if(GetTeamZoneColor(ZoneInfo[i][zTeam]) != gTeam[playerid])
{
if(ZoneInfo[ZoneID[i]][zSiendoConquistada] == 1) return Message(playerid, GRIS, "[ERROR]: Esta zona ya esta siendo conquistada");
//___ Conquista Talibanes
if(gTeam[playerid] == TEAM_TALIBAN)
{
GangZoneFlashForAll(ZoneID[i], 0x45843396);
ZoneInfo[ZoneID[i]][zSiendoConquistada] = 1;
SetTimer("ConquistaAero", 2000, false);
}
if(gTeam[playerid] == TEAM_USA)
{
GangZoneFlashForAll(ZoneID[i], 0x0080C096);
ZoneInfo[ZoneID[i]][zSiendoConquistada] = 1;
SetTimer("ConquistaAero", 2000, false);
}
}
else Message(playerid, GRIS, "[ERROR]: Este territorio ya es de tu equipo");
}
}
return 1;
}
Alguna idea del error?....
TIPS: - Los probe en un comando /test.. y funcionan correctamente, es aquн el problema.
- їPudiera ser algun mal uso de algun return?
Desde yб, muchas gracias.
Respuesta: Problema | Timers | OnPlayerEnterDynamicCP -
TheChaoz - 01.03.2013
Chequea mediante prints que el codigo del timer este siendo ejecutado. (El print deberia ir detras del SetTimer)
-
CrossOv3r - 01.03.2013
Hmm... se ejecutan todas las funciones del GangZone(FlashGangZone...)
Puse el print.. y no se imprime..
EDIT:
pawn Код:
if(gTeam[playerid] == TEAM_USA)
{
GangZoneFlashForAll(ZoneID[i], 0x0080C096);
ZoneInfo[ZoneID[i]][zSiendoConquistada] = 1;
print("Timer ejecutandose..");
SetTimer("ConquistaAero", 2000, false);
}
Resuelto?...
Duh... Bueno parece un poco tonto. Pero la forma de resolverlo fue cambiar el orden de las funciones.. quedaron asi:
pawn Код:
if(gTeam[playerid] == TEAM_TALIBAN)
{
GangZoneFlashForAll(ZoneID[i], 0x45843396);
print("Timer ejecutandose..");
SetTimer("ConquistaAero", 2000, false);
ZoneInfo[i][zSiendoConquistada] = 1;
}
їRaro?... Creo que alguna vez me ah pasado lo mismo con otros Timers.. Me tienen vuelto loco.
Respuesta: Problema | Timers | OnPlayerEnterDynamicCP -
TheChaoz - 01.03.2013
Veo que cambiaste el codigo y no solo el orden, en cuyo caso el error podria estar en la asignacion a ese array. Deberias chequear el valor que dicho array tiene luego del codigo para ver si funciona correctamente.
Respuesta: Problema | Timers | OnPlayerEnterDynamicCP -
CrossOv3r - 01.03.2013
Hm... es raro, bueno, ahora cambiй el timer (Como lo tenia inicialmente).. y bueno Resulta que estas son las conclusiones
* Usando print(); arriba del timer , se ejecuta correctamente
* Sin el print(); no se ejecuta.
pawn Код:
if(gTeam[playerid] == TEAM_USA)
{
GangZoneFlashForAll(ZoneID[i], 0x0080C096);
print("Timer en ejecucion");
TimerConquista[playerid] = SetTimer("ConquistaTimer", 5000, false);
ZoneInfo[i][zSiendoConquistada] = 1;
}
No me es urgente sacar el print... pero el solo hecho de saber que tenga que andar poniendo eso para que se ejecute bien el timer me extraсa muchнsimo...
Respuesta: Problema | Timers | OnPlayerEnterDynamicCP -
TheChaoz - 02.03.2013
Lo unico que se me ocurre es que algo con esos arrays este mal