SA-MP Forums Archive
[Ayuda] Sistema de captura. - 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: [Ayuda] Sistema de captura. (/showthread.php?tid=570418)



[Ayuda] Sistema de captura. - Ghost112397 - 09.04.2015

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.


Respuesta: [Ayuda] Sistema de captura. - admantis - 10.04.2015

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.


Re: [Ayuda] Sistema de captura. - lComandante - 10.04.2015

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.


Respuesta: Re: [Ayuda] Sistema de captura. - Ghost112397 - 10.04.2015

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.


Respuesta: [Ayuda] Sistema de captura. - Okrs - 11.04.2015

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