[Ayuda] Sistema de captura.
#1

Buenas, alguien me puede ayer con mi sistema? Hace mбs de dos semanas que vengo intentando repararlo, pero no puedo. El problema que tengo es que cuando termino de capturar una zona, y viene alguien del equipo enemigo a intentar capturarla nuevamente, no deja, dice que la zona estб siendo capturada.
PHP код:
public OnPlayerEnterDynamicCP(playeridcheckpointid)
{
    if(
checkpointid == ACP1)
    {
         new 
string[128], pZone;
        if(
InfoZonaCaptura[checkpointid][ZonaAtacada] == 1) return SendClientMessage(playeridCOLOR_ROJO"Esta zona estб siendo capturada.");
        if(
InfoZonaCaptura[checkpointid][EquipoProp] == Equipo[playerid]) return SendClientMessage(playeridCOLOR_ROJO"Tu equipo es dueсo de esta zona.");
        if(
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridCOLOR_ROJO"No puedes capturar estado en un vehнculo!");
        
InfoZonaCaptura[checkpointid][ZonaAtacada] = 1;
        
pZone PlayerArea(playerid);
        
VarTempJugador[playerid][pCapturandoZona] = 1;
        
ContadorDeTiempo[playerid] = 30;
        
TimerDeTiempo[playerid] = SetTimerEx("CapturarZona"1000true"iii"playeridcheckpointidpZone);
        
format(stringsizeof(string), "{FFFFFF}[ZONAS] {FFFF00}%s {FFFFFF}estб siendo capturada!"ZoneName(checkpointid));
        
SendClientMessageToAll(-1string);
    }
    return 
1;
}
forward CapturarZona(playeridcheckpointidzonename);
public 
CapturarZona(playeridcheckpointidzonename)
{
    new 
time[16];
    
ContadorDeTiempo[playerid] --;
    
format(timesizeof(time), "~g~%i.."ContadorDeTiempo[playerid]);
    
GameTextForPlayer(playeridtime11003);
    if(
ContadorDeTiempo[playerid] == 0)
    {
        if(
checkpointid == ACP1)
        {
            
ColorZona1 PlayerGangColor(playerid);
        }
        
GangZoneStopFlashForAll(zonename);
        
GangZoneShowForAll(zonenamePlayerGangColor(playerid));
        
SetZoneColor(zonenameplayerid);
        new 
string[128];
        
format(stringsizeof(string), "Recibiste {FFFF00}+3 score + $2500{FFFFFF} por capturar la zona {15FF00}%s!"ZoneName(checkpointid));
        
SendClientMessage(playerid, -1string);
        
GivePlayerMoneyEx(playerid2500);
        
SetPlayerScore(playeridGetPlayerScore(playerid)+3);
        
InfoZonaCaptura[checkpointid][ZonaAtacada] = 0;
        
VarTempJugador[playerid][pCapturandoZona] = 0;
        foreach(
Playeri)
        {
            if(
InfoZonaCaptura[checkpointid][EquipoProp] == Equipo[i])
            {
                
format(stringsizeof(string), "Tu equipo ha perdido la zona {FF0000}%s{FFFFFF}, perdiste {FF0000}-1{FFFFFF} score!"ZoneName(checkpointid));
                
SetPlayerScore(iGetPlayerScore(i)-1);
                  
SendClientMessage(i, -1string);
            }
            else if(
Equipo[i] == Equipo[playerid])
            {
                if(
!= playerid)
                {
                    
format(stringsizeof(string), "Te equipo ha capturado la zona {15FF00}%s{FFFFFF}, ganaste {15FF00}+1{FFFFFF} score!"ZoneName(checkpointid));
                    
SetPlayerScore(iGetPlayerScore(i)+1);
                    
SendClientMessage(i, -1string);
                }
            }
        }
          
KillTimer(TimerDeTiempo[playerid]);
        
InfoZonaCaptura[checkpointid][EquipoProp] = Equipo[playerid];
    }
    return 
1;

Desde ya muchas gracias.
Reply
#2

Si cada бrea estб vinculada a un checkpoint (ambos tienen el mismo ID) no veo el problema, pero puede ser que estй pasando algo por alto. La mejor forma de hacer esto es debugging. En su forma mбs bбsica, puedes imprimir en varias lнneas (antes y despuйs de capturar, por ejemplo) ciertas variables, como "checkpointid" y ver como cambian con el paso de las funciones.
Reply
#3

Puedes empezar a probar, agregando mбs lugares dуnde setees que la zona estб siendo capturada a 0, dнgamos, yo la agregarнa acб:
Quote:

if(i != playerid)
{
format(string, sizeof(string), "Te equipo ha capturado la zona {15FF00}%s{FFFFFF}, ganaste {15FF00}+1{FFFFFF} score!", ZoneName(checkpointid));
SetPlayerScore(i, GetPlayerScore(i)+1);
SendClientMessage(i, -1, string);

}

Debajo del Message lo pondrнa "InfoZonaCaptura[checkpointid][ZonaAtacada] = 0; " y luego volverнa a probar, tambiйn despuйs de eso intenta ejecutar la funciуn de guardado de las zonas de captura, dнgamos GuardarZonas();, no se como sea el tuyo. Es ir probando, revisa bien todo, a lo mejor el error es algo muy estъpido.
Reply
#4

Quote:
Originally Posted by lComandante
Посмотреть сообщение
Puedes empezar a probar, agregando mбs lugares dуnde setees que la zona estб siendo capturada a 0, dнgamos, yo la agregarнa acб:


Debajo del Message lo pondrнa "InfoZonaCaptura[checkpointid][ZonaAtacada] = 0; " y luego volverнa a probar, tambiйn despuйs de eso intenta ejecutar la funciуn de guardado de las zonas de captura, dнgamos GuardarZonas();, no se como sea el tuyo. Es ir probando, revisa bien todo, a lo mejor el error es algo muy estъpido.
Ya lo intente hacer y sigue igual.
Reply
#5

Me pasa algo parecido, cuando uno de mi equipo quiere ayudar a capturar aparece que ya esta siendo capturada en ves de aparecer tu equipo te esta ayudando y conquistar mas rapido les agredesco mcuho si me ayudan
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)