Problema | Timers | OnPlayerEnterDynamicCP
#1

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.
Reply
#2

Chequea mediante prints que el codigo del timer este siendo ejecutado. (El print deberia ir detras del SetTimer)
Reply
#3

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.
Reply
#4

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.
Reply
#5

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...
Reply
#6

Lo unico que se me ocurre es que algo con esos arrays este mal
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)