[DUV] Bug em gangzones
#1

Tф tentando fazer gangzone, mas tф com alguns bugs:

1-O primeiro й que vocк pode usar o comando para dominar em qualquer lugar que domina a gz mais prуxima.

2-Hб gangzone que se vocк digitar o comando de dominar dentro dela, outras sгo dominadas. Nгo sei porque esse erro, jah que usei IsPlayerInArea e chequei que toda as coordenadas estгo corretas.

3-E tambйm tem o bug de, se vocк digitar o comando de dominar dentro dela e se afastar, vocк dominarб do mesmo jeito :S
Entгo eu queria saber como faзo pra que, se o player nгo estiver dentro da gang zone, e tiver dominando-a apareзa uma mensagem de erro e a gang zone resete.

Ai como estб quando um player toma a gangzone (depois de esperar o tempo que eu defini dentro da gz).
Code:
 
 public groovedominou(playerid)
 {
  if(IsPlayerInArea(playerid,1235.075, -1287.088, 1356.766, -1152.865))
 {
  GangZoneStopFlashForAll(constgz);
  GangZoneHideForAll(constgz);
 	GangZoneShowForAll(constgz,TEAM_GROVE_COLOR);
	SendClientMessageToAll(TEAM_GROVE_COLOR, "A Groove Street Dominou o Canteiro de Obras!");
 }
 else
 {
 return SendClientMessage(playerid, COLOR_LIGHTBLUE,"Voce nгo estб em uma GZ");
	}
 return 1;
 }
Quero saber onde tб errado, jah fiz de tudo mas nгo consigo corrigir isso

E o comando de tomar
Code:
if(strcmp(cmd, "/Tomar", true) == 0 || strcmp(cmd, "/TO", true) == 0)
	{
	if(IsPlayerInArea(IsPlayerInArea(playerid,1235.075, -1287.088, 1356.766, -1152.865))
 	{
   if(gTeam[playerid] == 2 || IsACop(playerid) || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14 || PlayerInfo[playerid][pMember] == 15 || PlayerInfo[playerid][pLeader] == 15 || PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)
   {
		SendClientMessage(playerid, COLOR_LIGHTBLUE,"Voce deve ficar na area por 30 segundos, os policiais e outras gangs ja foram avisados! Se cuide!");
  	SetTimerEx("funcaogz", 1000, 0,"e",playerid);
 	  return 1;
	 }
  }
  return SendClientMessage(playerid, COLOR_LIGHTBLUE,"Voce nгo estб em uma GZ");
  }
E a funcaogz:
Code:
public funcaogz(playerid)
{
 if(IsPlayerInArea(playerid,1235.075, -1287.088, 1356.766, -1152.865))
 {
 	 if(PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12)
 	{
	new string[128];
  new nome[MAX_PLAYER_NAME];
  GetPlayerName(playerid, nome, sizeof(nome));
	format(string,sizeof(string),"%s e a Groove Street estao dominando o Canteiro de Obras!",nome);
	SendClientMessageToAll(TEAM_GROVE_COLOR,string);
	GangZoneFlashForAll(constgz,TEAM_GROVE_COLOR);
	SetTimerEx("groovedominou", 30000, 0,"e",playerid);
 	}
}
 return 1;
 }
Gostaria de saber o que faзo de errado :C
PS- Sу coloquei a parte da groove, porque as outras parte sгo iguais a essa.
PSІ- Tф conseguindo compilar sem erros, e as gangzones atй aparecem normalmente no mapa, o problema й os bugs que jah falei mesmo...
Reply
#2

pawn Code:
if(strcmp(cmd, "/Tomar", true) == 0 || strcmp(cmd, "/TO", true) == 0)
    {
    if(IsPlayerInArea(playerid,1235.075, -1287.088, 1356.766, -1152.865))
    {
   if(gTeam[playerid] == 2 || IsACop(playerid) || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pLeader] == 14 || PlayerInfo[playerid][pMember] == 15 || PlayerInfo[playerid][pLeader] == 15 || PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)
   {
        SendClientMessage(playerid, COLOR_LIGHTBLUE,"Voce deve ficar na area por 30 segundos, os policiais e outras gangs ja foram avisados! Se cuide!");
    SetTimerEx("funcaogz", 1000, 0,"e",playerid);
      return 1;
     }
  }
  return SendClientMessage(playerid, COLOR_LIGHTBLUE,"Voce nгo estб em uma GZ");
  }
Troca por esse, vocк colocou IsPlayerInArea(IsPlayerInAre... vou olhar o resto

EDIT: cria um timer e uma variavel pra verificar se ele ainda estб dentro da area....
pawn Code:
new TimerParaDominar[MAX_PLAYERS];
new TimerEstaEmArea[MAX_PLAYERS];
new bool:EstaEmArea[MAX_PLAYERS];
//quando digitar pra dominar coloque
EstaEmArea[playerid] = true;
//Timer junto do timer funcaogz
TimerEstaEmArea[playerid] = SetTimerEx("EstaNaArea", 30000, false,"d",playerid);

//mude aquele timer funcaogz para:
TimerParaDominar[playerid] = SetTimerEx("funcaogz", 1000, false,"d",playerid);

forward EstaNaArea(playerid);

public EstaNaArea(plyerid)
{
    if(EstaEmArea[playerid]) return 0;
    else NaoDominou(playerid);
return 1;
}

stock NaoDominou(playerid)
{
   KillTimer(TimerParaDominar[playerid]);
   SendClientMessage(playerid, COR, "Vocк saiu da area portanto nгo a dominou");
   GangZoneStopFlashForAll(constgz);
   return 1;
}
Reply
#3

Obrigado, funcionou =p
Reply
#4

Quote:
Originally Posted by Sou do Mangue
Obrigado, funcionou =p
De nada qualquer problema ou duvida pode perguntar ai sem medo
Reply
#5

+ me ensinem a criar o sistema de gang zones dominavies
Reply
#6

dominavel axo mais legal do que compravel.Mais guerra e mais diversao


Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)