[Ajuda] Sistema de Evento..
#1

Bom, Quando eu Dou /dev destroi a corrida sу que ta com um bug que vou resolver, Porйm.. Quando eu crio /Evento dnv Chama Falando que jб ta criado ? '-'
PHP код:
new
    
evento[MAX_PLAYERS],
    
EvCriado[MAX_PLAYERS],
    
Participando[MAX_PLAYERS],
    
Float:ForX, Float:ForY, Float:ForZ, // Evento
    
Finalizado[MAX_PLAYERS]
;
CMD:participar(playerid, params[])
{
    if(
Participando[playerid] == 1) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк jб ta no Evento");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Nгo existe nenhum Evento Criado!");
    
Participando[playerid] = 1;
    
SetPlayerPos(playerid, ForX, ForY, ForY);
    
SendClientMessage(playerid, AZUL2, "| INFO | Vocк foi ao Evento, Teleportado!");
    return 
1;
}
CMD:evento(playerid, params[])
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado[playerid] == 1)
    {
    new 
stm[256];
    
EvCriado[playerid] = 1;
    
format(stm, sizeof(stm), "| INFO | O(A) Gerente %s Fez um Evento Digite: /Participar", PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FF, stm);
       
GetPlayerPos(playerid, ForX, ForY, ForZ);
       
//SetPlayerPos(playerid, X, Y, Z);
       
}
       else
       {
       
SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб Criado!"); // Tб chamando aqui
       
return 1;
       }
    return 
1;
}
CMD:dev(playerid, params[])
{
    for(new 
i; i < MAX_PLAYERS; i++) return SetPlayerPos(i, 0.0, 0.0, 0.0);
    {
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem Permissгo!");
    if(
Finalizado[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб destruido!");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб destruido!");
    if(
Participando[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб destruido!");
    
EvCriado[playerid] = 0;
    
Participando[playerid] = 0;
    
Finalizado[playerid] = 0;
    
SendClientMessage(playerid, 0xFFFF80FF, "| EV | Destruido com sucesso!");
    }
    return 
1;
} 
Reply
#2

Quote:
Originally Posted by GuiKommander
Посмотреть сообщение
Bom, Quando eu Dou /dev destroi a corrida sу que ta com um bug que vou resolver, Porйm.. Quando eu crio /Evento dnv Chama Falando que jб ta criado ? '-'
PHP код:
new
    
evento[MAX_PLAYERS],
    
EvCriado[MAX_PLAYERS],
    
Participando[MAX_PLAYERS],
    
Float:ForX, Float:ForY, Float:ForZ, // Evento
    
Finalizado[MAX_PLAYERS]
;
CMD:participar(playerid, params[])
{
    if(
Participando[playerid] == 1) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк jб ta no Evento");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Nгo existe nenhum Evento Criado!");
    
Participando[playerid] = 1;
    
SetPlayerPos(playerid, ForX, ForY, ForY);
    
SendClientMessage(playerid, AZUL2, "| INFO | Vocк foi ao Evento, Teleportado!");
    return 
1;
}
CMD:evento(playerid, params[])
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado[playerid] == 1)
    {
    new 
stm[256];
    
EvCriado[playerid] = 1;
    
format(stm, sizeof(stm), "| INFO | O(A) Gerente %s Fez um Evento Digite: /Participar", PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FF, stm);
       
GetPlayerPos(playerid, ForX, ForY, ForZ);
       
//SetPlayerPos(playerid, X, Y, Z);
       
}
       else
       {
       
SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб Criado!"); // Tб chamando aqui
       
return 1;
       }
    return 
1;
}
CMD:dev(playerid, params[])
{
    for(new 
i; i < MAX_PLAYERS; i++) return SetPlayerPos(i, 0.0, 0.0, 0.0);
    {
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem Permissгo!");
    if(
Finalizado[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб destruido!");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб destruido!");
    if(
Participando[playerid] == 0) return SendClientMessage(playerid, ERRO, "| ERRO | Evento Jб destruido!");
    
EvCriado[playerid] = 0;
    
Participando[playerid] = 0;
    
Finalizado[playerid] = 0;
    
SendClientMessage(playerid, 0xFFFF80FF, "| EV | Destruido com sucesso!");
    }
    return 
1;
} 
Pф, meu parзa. Pelo que entendi do cуdigo, acho que o EvCriado nгo deve ser usado com [MAX_PLAYERS]. Senгo й como se cada player tivesse criado um evento, sacou?
Dei uma arrumada no cуdigo aqui e coloquei o jogador para retornar a posiзгo, interior e VW (vocк esqueceu do interior e do VW) que ele estava antes de /participar do evento, beleza? Achei uma boa ideia! Mas se quiser continuar a setar o jogador pra posiзгo 0.0, 0.0, 0.0, fazer o quк, nй? Choices...

Testa aн e me diga se estб funcionando:

PHP код:
new bool: EvCriado = false,
    
bool: Participando[MAX_PLAYERS],
    
Float:ForX, Float:ForY, Float:ForZ,
    
intAdm, VWAdm,
    
Float: PosAntEv[MAX_PLAYERS][3],
    
IntVW[MAX_PLAYERS][2];
CMD:participar(playerid)
{
    if(
Participando[playerid] == true) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк jб estб no evento");
    if(
EvCriado == false) return SendClientMessage(playerid, ERRO, "| ERRO | Nгo existe nenhum evento criado!");
    
Participando[playerid] = true;
    
GetPlayerPos(playerid, PosAntEv[playerid][0], PosAntEv[playerid][1], PosAntEv[playerid][2]);
    
IntVW[playerid][0] = GetPlayerInterior(playerid);
    
IntVW[playerid][1] = GetPlayerVirtualWorld(playerid);
    
SetPlayerPos(playerid, ForX, ForY, ForY);
    
SetPlayerInterior(playerid, intAdm);
    
SetPlayerVirtualWorld(playerid, VWAdm);
    
SendClientMessage(playerid, AZUL2, "| INFO | Vocк foi teleportado para o evento!");
    return 
1;
}
CMD:evento(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem permissгo!");
    if(
EvCriado == true) return SendClientMessage(playerid, ERRO, "| ERRO | Evento jб criado! Destrua primeiro. (/dev)");
    new 
stm[256];
    
EvCriado = true;
    
format(stm, sizeof(stm), "| INFO | O(A) Gerente %s fez um evento. Digite: /Participar", PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FF, stm);
    
GetPlayerPos(playerid, ForX, ForY, ForZ);
    
intAdm = GetPlayerInterior(playerid);
    
VWAdm = GetPlayerVirtualWorld(playerid);
    return 
1;
}
CMD:dev(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado == false) return SendClientMessage(playerid, ERRO, "| ERRO | Nenhum evento ocorrendo!");
    for(new 
i; i < MAX_PLAYERS; i++)
    {
        if(
Participando[i] == true)
        {
            
SetPlayerPos(i, PosAntEv[i][0], PosAntEv[i][1], PosAntEv[i][2]);
            
SetPlayerInterior(i, IntVW[i][0]);
            
SetPlayerVirtualWorld(i, IntVW[i][1]);
            
SendClientMessage(i, -1, "Vocк retornou a sua posiзгo.");
            
Participando[i] = false;
        }
    }
    
EvCriado = false;
    
SendClientMessage(playerid, 0xFFFF80FF, "| EV | Destruido com sucesso!");
    return 
1;
} 
Qualquer erro ou bug, sу comentar aqui. Eu nгo testei e nem tentei compilar.
Pode ter erros, jб que fiz com pressa.

Assim que o cуdigo estiver 100% funcional, й importante que vocк estude-o e identifique os erros para poder aprender com eles.
Alйm disso, deixo aqui uma dica: tente melhorar nas escritas nas mensagens. Mensagens com letras maiъsculas sem necessidade e falta de pontuaзгo sгo desanimadoras.

Abзs.
Reply
#3

Mano, tб certinho, sу que o щnico problema й que quando dou /Participar ele vai pro cйu kkkk.
Print: https://imgur.com/a/HZ5S3
Reply
#4

PHP код:
new bool: EvCriado = false,
    
bool: Participando[MAX_PLAYERS],
    
Float:ForX, Float:ForY, Float:ForZ,
    
intAdm, VWAdm,
    
Float: PosAntEv[MAX_PLAYERS][3],
    
IntVW[MAX_PLAYERS][2];
CMD:participar(playerid)
{
    if(
Participando[playerid] == true) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк jб estб no evento");
    if(
EvCriado == false) return SendClientMessage(playerid, ERRO, "| ERRO | Nгo existe nenhum evento criado!");
    
Participando[playerid] = true;
    
GetPlayerPos(playerid, PosAntEv[playerid][0], PosAntEv[playerid][1], PosAntEv[playerid][2]);
    
IntVW[playerid][0] = GetPlayerInterior(playerid);
    
IntVW[playerid][1] = GetPlayerVirtualWorld(playerid);
    
SetPlayerPos(playerid, ForX, ForY, ForZ);
    
SetPlayerInterior(playerid, intAdm);
    
SetPlayerVirtualWorld(playerid, VWAdm);
    
SendClientMessage(playerid, AZUL2, "| INFO | Vocк foi teleportado para o evento!");
    return 
1;
}
CMD:evento(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem permissгo!");
    if(
EvCriado == true) return SendClientMessage(playerid, ERRO, "| ERRO | Evento jб criado! Destrua primeiro. (/dev)");
    new 
stm[256];
    
EvCriado = true;
    
format(stm, sizeof(stm), "| INFO | O(A) Gerente %s fez um evento. Digite: /Participar", PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FF, stm);
    
GetPlayerPos(playerid, ForX, ForY, ForZ);
    
intAdm = GetPlayerInterior(playerid);
    
VWAdm = GetPlayerVirtualWorld(playerid);
    return 
1;
}
CMD:dev(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playerid, ERRO, "| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado == false) return SendClientMessage(playerid, ERRO, "| ERRO | Nenhum evento ocorrendo!");
    for(new 
i; i < MAX_PLAYERS; i++)
    {
        if(
Participando[i] == true)
        {
            
SetPlayerPos(i, PosAntEv[i][0], PosAntEv[i][1], PosAntEv[i][2]);
            
SetPlayerInterior(i, IntVW[i][0]);
            
SetPlayerVirtualWorld(i, IntVW[i][1]);
            
SendClientMessage(i, -1, "Vocк retornou a sua posiзгo.");
            
Participando[i] = false;
        }
    }
    
EvCriado = false;
    
SendClientMessage(playerid, 0xFFFF80FF, "| EV | Destruido com sucesso!");
    return 
1;
} 
Isso deve resolver ^^
Reply


Forum Jump:


Users browsing this thread: