03.04.2015, 05:21
(
Последний раз редактировалось Ghost112397; 03.04.2015 в 06:05.
)
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.
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.
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.423, 1331.278, 303.6248, 1459.734);
AreaZona1 = CreateDynamicRectangle(93.423, 1331.278, 303.6248, 1459.734, -1, -1, -1);
ACP1 = CreateDynamicCP(220.8459,1421.2120,10.5859,3.0, -1, -1, -1, 100.0);
ColorZona1 = COLOR_ROJO;
return 1;
}
public OnPlayerConnect(playerid)
{
GangZoneShowForPlayer(playerid, Zona1, ColorZona1);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
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(playerid, killerid, reason)
{
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(playerid, checkpointid)
{
if(checkpointid == ACP1)
{
new string[128], pZone;
if(CaptureZoneInfo[checkpointid][gAttacked] == 1)
return SendClientMessage(playerid, COLOR_ROJO, "Esta zona estб siendo capturada.");
if(CaptureZoneInfo[checkpointid][gOwner] == Equipo[playerid])
return SendClientMessage(playerid, COLOR_ROJO, "Tu equipo es dueсo de esta zona.");
if(IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, COLOR_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", 1000, true, "iii", playerid, checkpointid, pZone);
format(string, sizeof(string), "{FFFFFF}[ZONAS] {FFFF00}%s {FFFFFF}estб siendo capturada!", ZoneName(checkpointid));
SendClientMessageToAll(-1, string);
}
return 1;
}
public OnPlayerLeaveDynamicCP(playerid, checkpointid)
{
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(playerid, COLOR_ROJO, "Dejaste de capturar la zona!");
KillTimer(PlayerCountTimer[playerid]);
PlayerInfo[playerid][pCaptureZone] = 0;
}
return 1;
}
forward GangCount(playerid, checkpointid, zonename);
public GangCount(playerid, checkpointid, zonename)
{
new time[16];
PlayerCount[playerid] --;
format(time, sizeof(time), "~g~%i..", PlayerCount[playerid]);
GameTextForPlayer(playerid, time, 1100, 3);
if(PlayerCount[playerid] == 0)
{
CaptureZoneInfo[checkpointid][gAttacked] = 0;
GangZoneStopFlashForAll(zonename);
GangZoneShowForAll(zonename, PlayerGangColor(playerid));
SetZoneColor(zonename, playerid);
new string[128];
format(string, sizeof(string), "Recibiste {FFFF00}+3 score + $2500{FFFFFF} por capturar la zona {15FF00}%s!", ZoneName(checkpointid));
SendClientMessage(playerid, -1, string);
GivePlayerMoneyEx(playerid, 2500);
SetPlayerScore(playerid, GetPlayerScore(playerid)+3);
PlayerInfo[playerid][pCaptureZone] = 0;
foreach(Player, i)
{
if(CaptureZoneInfo[checkpointid][gOwner] == Equipo[i])
{
format(string, sizeof(string), "Tu equipo ha perdido la zona {FF0000}%s{FFFFFF}, perdiste {FF0000}-1{FFFFFF} score!", ZoneName(checkpointid));
SetPlayerScore(i, GetPlayerScore(i)-1);
SendClientMessage(i, -1, string);
}
else if(Equipo[i] == Equipo[playerid])
{
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);
}
}
}
KillTimer(PlayerCountTimer[playerid]);
CaptureZoneInfo[checkpointid][gOwner] = Equipo[playerid];
}
return 1;
}
stock PlayerArea(playerid)
{
new pZone;
if(IsPlayerInDynamicArea(playerid, AreaZona1))
{
GangZoneFlashForAll(Zona1, PlayerGangColor(playerid));
pZone = Zona1;
}
return pZone;
}
stock PlayerGangColor(playerid)
{
new str;
if(Equipo[playerid] == 0) str = COLOR_AZUL;
else if(Equipo[playerid] == 1) str = COLOR_ROJO;
return str;
}
stock ZoneName(checkpointid)
{
new str[32];
if (checkpointid == ACP1) str = ("Zona industrial");
return str;
}
stock SetZoneColor(zonename, playerid)
{
if(zonename == Zona1)
{
ColorZona1 = PlayerGangColor(playerid);
}
}