new varVagasServer = 0;
// Quando o player consegue fazer login
varVagasServer ++;
// Quando o player desloga
varVagasServer --;
public OnPlayerRequestClass(playerid, classid)
{
TimerClearTela[playerid] = SetTimerEx("ClearChatLogin", 2000, true, "i", playerid);
if(varVagasServer < 1)
{
KillTimer(TimerClearTela[playerid]);
SendClientMessage(playerid, 0xA9C4E4FF, "Connecting to 144.217.0.35:7777...");
SendClientMessage(playerid, 0xA9C4E4FF, "The server is full. Retrying...");
TimerServerFull[playerid] = SetTimerEx("ServerFull", 3000, true, "i", playerid);
return 1;
}
if(gPlayerLogged[playerid] == 0 && NaoPodeLogar[playerid] == 0)
{
new File[50];
format(File, sizeof(File), "Contas/%s.ini", pName[playerid]);
if(!DOF2::FileExists(File))
{
showDialogRegister(playerid);
}
else if(DOF2::FileExists(File))
{
showDialogLogin(playerid);
}
}
return 1;
}
BPC::ServerFull(playerid)
{
if(varVagasServer < 1)
{
if(gPlayerLogged[playerid] == 0 && NaoPodeLogar[playerid] == 0)
{
new File[50];
format(File, sizeof(File), "Contas/%s.ini", pName[playerid]);
if(!DOF2::FileExists(File))
{
KillTimer(TimerServerFull[playerid]);
showDialogRegister(playerid);
}
else if(DOF2::FileExists(File))
{
KillTimer(TimerServerFull[playerid]);
showDialogLogin(playerid);
}
}
}
else
{
SendClientMessage(playerid, 0xA9C4E4FF, "Connecting to 144.217.0.35:7777...");
SendClientMessage(playerid, 0xA9C4E4FF, "The server is full. Retrying...");
}
return 1;
}
#define LIMIT_PLAYER 80
new TimerConnect[MAX_PLAYERS];
public OnPlayerRequestClass(playerid, classid)
{
TimerClearTela[playerid] = SetTimerEx("ClearChatLogin", 2000, true, "i", playerid);
if(gPlayerLogged[playerid] == 0 && NaoPodeLogar[playerid] == 0){
TimerConnect[playerid] = SetTimerEx("Connecting", 3000, 1, "i", playerid);
}
return 1;
}
BPC:Connecting(playerid){
new File[50];
format(File, sizeof(File), "Contas/%s.ini", pName[playerid]);
for(new i = 0; i < 90; i++){
if(i == LIMIT_PLAYER){
if(DOF2::FileExists(File))
if(DOF2::GetInt(File, "Admin") != 0){
showDialogLogin(playerid);
KillTimer(TimerConnect[playerid]);
return 1;
}
SendClientMessage(playerid, 0xA9C4E4FF, "Connecting to 144.217.0.35:7777...");
SendClientMessage(playerid, 0xA9C4E4FF, "The server is full. Retrying...");
return 1;
}else{
if(DOF2::FileExists(File)){
showDialogLogin(playerid);
KillTimer(TimerConnect[playerid]);
}else{
showDialogRegister(playerid);
KillTimer(TimerConnect[playerid]);
}
}
}
return 1;
}
if(jogadoresOn > 80 && Admin[playerid])
{
//pode logar
}
#define VAGAS (20)
//ou use getmaxplayers
new VAGA_S;
forward SendInfor();
forward Checar();
new PlayersOnline;
//ver se o maluco й adm
new Admin[MAX_PLAYERS];
public OnGameModeInit()
{
SetTimer("SendInfo", 60000*2, 1);
VAGA_S = GetMaxPlayers();
return 1;
}
public SendInfo()
{
new online;
for(new i = 0; i <= MAX_PLAYERS; i++)
if(IsPlayerConnected(i))
online += 1;
PlayersOnline = online;
}
public OnPlayerConnect(playerid)
{
if(PlayersOnline == VAGA_S && Admin[playerid])
Checar();
return true;
}
public Checar() //kickar um nгo admim para entrada de um admin
{
for(new i=0; i<=MAX_PLAYERS; i++)
if(Admin[i] < 1){
new numSorteado = random(i),Kick(numSorteado); SendClientMessage(numSorteado, -1, #Vocк foi kickado para dar lugar a um admin)}
else return false;
return false;
}
#define NON_ADMIN (10) //vagas para nгo admin
public OnPlayerConnect(playerid)
{
if(PlayersOnline == VAGA_S && Admin[playerid])
Checar();
if(PlayersOnline == NON_ADMIN)
if(Admin[playerid] < 1)
{
SendClientMessage(playerid, -1, #O Servidor estб com o resto das vagas reservadas apenas а administradores);
Kick(playerid);
//se entrar os outros admins e o servidor ficar cheio por completo ai o outro sistema de retirar alguem nгo admin entra em funзгo, que no caso e o VAGA_S ou VAGAS
}
return true;
}
E como eu faзo se for por nick? Tipo... ao invйs de o cara ser Admin o nick dele estar liberado pra logar dps que tiver 80 on
|
E como eu faзo se for por nick? Tipo... ao invйs de o cara ser Admin o nick dele estar liberado pra logar dps que tiver 80 on
|
new nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, nome, MAX_PLAYER_NAME); if(strcmp("seunick", nome)){ SendClientMessage(playerid, -1, "*O servidor estб cheio e as demais vagas estгo reservadas aos administradores, tente novamante!"); Kick(playerid); return 1; }
Um mйtodo:
PHP код:
PHP код:
|