[Ayuda] їMe ayudan con este sistema?
#1

Buenas, hoy estaba viendo por el foro y me encontrй con este tutorial, me intereso bastante, ya que yo estoy haciendo un servidor TDM, bueno, voy al grano, lo he editado y le he quitado varias cosas, asн como le he cambiado algunas variables y tal, pero el problema es que no logro hacer que funcione bien.
Cuando estoy capturando y me salgo del CheckPoint el Timer no desaparece.
їAlguna ayuda por favor? Desde ya muchas gracias.
PHP код:
new PlayerCount[MAX_PLAYERS];
new 
PlayerCountTimer[MAX_PLAYERS];
new 
Zona1;
new 
AreaZona1;
new 
ColorZona1;
new 
ACP1;
enum CaptureInfo
{
    
gAttacked 0,
    
gOwner 0,
}
new 
CaptureZoneInfo[][CaptureInfo];
enum PlayerData
{
    
pCaptureZone,
    
drank
}
new 
PlayerInfo[MAX_PLAYERS][PlayerData];
public 
OnGameModeInit()
{
    
Zona1 GangZoneCreate(93.4231331.278303.62481459.734);
    
AreaZona1 CreateDynamicRectangle(93.4231331.278303.62481459.734, -1, -1, -1);
    
ACP1 CreateDynamicCP(220.8459,1421.2120,10.5859,3.0, -1, -1, -1100.0);
    
ColorZona1 COLOR_ROJO;
        return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
GangZoneShowForPlayer(playeridZona1ColorZona1);
        return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
        if(
PlayerInfo[playerid][pCaptureZone] == 1)
    {
        
SendClientMessageToAll(COLOR_ROJO"[ZONA] Una de las zonas no ha sido capturada debido a que el atacante se ha desconectado!");
         
KillTimer(PlayerCountTimer[playerid]);
        
PlayerInfo[playerid][pCaptureZone] = 0;
    }
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    if(
PlayerInfo[playerid][pCaptureZone] == 1)
    {
        
SendClientMessageToAll(COLOR_ROJO"[ZONA] Una de las zonas no ha sido capturada debido a que el atacante ha muerto!");
         
KillTimer(PlayerCountTimer[playerid]);
        
PlayerInfo[playerid][pCaptureZone] = 0;
    }
    return 
1;
}
public 
OnPlayerEnterDynamicCP(playeridcheckpointid)
{
    if(
checkpointid == ACP1)
    {
         new 
string[128], pZone;
        if(
CaptureZoneInfo[checkpointid][gAttacked] == 1)
             return 
SendClientMessage(playeridCOLOR_ROJO"Esta zona estб siendo capturada.");
        if(
CaptureZoneInfo[checkpointid][gOwner] == 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!");
        
CaptureZoneInfo[checkpointid][gAttacked] = 1;
        
pZone PlayerArea(playerid);
        
PlayerInfo[playerid][pCaptureZone] = 1;
        
PlayerCount[playerid] = 30;
        
PlayerCountTimer[playerid] = SetTimerEx("GangCount"1000true"iii"playerid,  checkpointidpZone);
        
format(stringsizeof(string), "{FFFFFF}[ZONAS] {FFFF00}%s {FFFFFF}estб siendo capturada!"ZoneName(checkpointid));
        
SendClientMessageToAll(-1string);
    }
    return 
1;
}
public 
OnPlayerLeaveDynamicCP(playeridcheckpointid)
{
    if(
PlayerInfo[playerid][pCaptureZone] == 1)
    {
         if(
CaptureZoneInfo[checkpointid][gOwner] == Equipo[playerid])
           return 
0;
        new 
pZone;
          
CaptureZoneInfo[checkpointid][gAttacked] = 0;
        
pZone PlayerArea(playerid);
          
GangZoneStopFlashForAll(pZone);
        
SendClientMessage(playeridCOLOR_ROJO"Dejaste de capturar la zona!");
        
KillTimer(PlayerCountTimer[playerid]);
        
PlayerInfo[playerid][pCaptureZone] = 0;
    }
    return 
1;
}
forward GangCount(playeridcheckpointidzonename);
public 
GangCount(playeridcheckpointidzonename)
{
    new 
time[16];
    
PlayerCount[playerid] --;
    
format(timesizeof(time), "~g~%i.."PlayerCount[playerid]);
    
GameTextForPlayer(playeridtime11003);
    if(
PlayerCount[playerid] == 0)
    {
        
CaptureZoneInfo[checkpointid][gAttacked] = 0;
        
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);
        
PlayerInfo[playerid][pCaptureZone] = 0;
        foreach(
Playeri)
        {
            if(
CaptureZoneInfo[checkpointid][gOwner] == 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(PlayerCountTimer[playerid]);
        
CaptureZoneInfo[checkpointid][gOwner] = Equipo[playerid];
    }
    return 
1;
}
stock PlayerArea(playerid)
{
    new 
pZone;
    if(
IsPlayerInDynamicArea(playeridAreaZona1))
    {
         
GangZoneFlashForAll(Zona1PlayerGangColor(playerid));
         
pZone Zona1;
    }
    return 
pZone;
}
stock PlayerGangColor(playerid)
{
    new 
str;
    if(
Equipo[playerid] == 0str COLOR_AZUL;
    else if(
Equipo[playerid] == 1str COLOR_ROJO;
    return 
str;
}
stock ZoneName(checkpointid)
{
    new 
str[32];
    if  (
checkpointid == ACP1str = ("Zona industrial");
    return 
str;
}
stock SetZoneColor(zonenameplayerid)
{
    if(
zonename == Zona1)
    {
        
ColorZona1 PlayerGangColor(playerid);
    }

Explicaciуn detallada: Al momento de ingresar al Checkpoint para capturar la zona, funciona a la perfecciуn, el problema viene cuando salgo del Checkpoint mientras capturo, es decir: Estoy capturando, me salgo del Checkpoint cuando faltan 15 segundos(o los segundos que se te ocurran) y el tiempo de captura sigue corriendo, mientras que al salirme del Checkpoint deberнa cancelarse la captura y matar al timer.
Reply
#2

Publica todo el codigo y describa el problema detalladamente.
Reply
#3

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
Publica todo el codigo y describa el problema detalladamente.
Listo.
Reply
#4

Код:
// OnPlayerLeaveDynamicCP ...
         if(CaptureZoneInfo[checkpointid][gOwner] != Equipo[playerid])
           return 0;
Reply
#5

Quote:
Originally Posted by OTACON
Посмотреть сообщение
Код:
// OnPlayerLeaveDynamicCP ...
         if(CaptureZoneInfo[checkpointid][gOwner] != Equipo[playerid])
           return 0;
Funciono de 10 :3 Muchas gracias.
Ahora el ъnico problema que surgiу es que si el equipo 0 captura la Zona y luego el Equipo 1 trata de recuperarla, dice que la zona estб siendo capturada.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)