08.10.2012, 22:25
Tal vez suene complicado, pero realmente no lo es.
Un ejemplo sensillo:
Un ejemplo sensillo:
pawn Код:
//En esta variable global, almacenaremos la cantidad de jugadores que quieren entrar a la zona
new Counter;
//En este array, almacenaremos el estado de cada jugador (true: quiere ingresar; caso contrario false)
new bool:ParaIngresar[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
//Nuestro comando para ingresar a la zona
if(!strcmp(cmdtext, "/entrarzona", true))
{
//Sumamos 1 a nuestro contador de jugadores que quieren ingresar a la zona
counter++;
//Cambiamos el estado del jugador indicando que quiere ingresar a la zona
ParaIngresar[playerid] = true;
//Si los jugadores que quieren ingresar son mas de 3, entonces se cumplen los requisitos
if(counter >= 3)
{
//Realizamos un bucle por todos los jugadores
for(new i, p=GetMaxPlayers(); i<p; i++)
{
//Si esta conectado y quiere entrar, entonces
if(IsPlayerConnected(i) && ParaEntrar[i])
{
SetPlayerPos(playerid, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "Has ingresado a la zona");
}
}
}
return 1;
}
//Nuestro comando para salir de la zona
if(!strcmp(cmdtext, "/salirzona", true))
{
//Restamos 1 a nuestro contador de jugadores que quieren ingresar a la zona
counter--;
//Cambiamos el estado del jugador, indicando que no quiere ingresar a la zona
ParaIngresar[playerid] = false;
return 1;
}
return 0;
}
//Evitamos falsos positivos
public OnPlayerDisconnect(playerid, reason)
{
if(ParaEntrar[playerid])
{
ParaEntrar[playerid] = false;
counter--;
}
return 1;
}