[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:ForXFloat:ForYFloat:ForZ// Evento
    
Finalizado[MAX_PLAYERS]
;
CMD:participar(playeridparams[])
{
    if(
Participando[playerid] == 1) return SendClientMessage(playeridERRO"| ERRO | Vocк jб ta no Evento");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Nгo existe nenhum Evento Criado!");
    
Participando[playerid] = 1;
    
SetPlayerPos(playeridForXForYForY);
    
SendClientMessage(playeridAZUL2"| INFO | Vocк foi ao Evento, Teleportado!");
    return 
1;
}
CMD:evento(playeridparams[])
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado[playerid] == 1)
    {
    new 
stm[256];
    
EvCriado[playerid] = 1;
    
format(stmsizeof(stm), "| INFO | O(A) Gerente %s Fez um Evento Digite: /Participar"PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FFstm);
       
GetPlayerPos(playeridForXForYForZ);
       
//SetPlayerPos(playerid, X, Y, Z);
       
}
       else
       {
       
SendClientMessage(playeridERRO"| ERRO | Evento Jб Criado!"); // Tб chamando aqui
       
return 1;
       }
    return 
1;
}
CMD:dev(playeridparams[])
{
    for(new 
iMAX_PLAYERSi++) return SetPlayerPos(i0.00.00.0);
    {
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem Permissгo!");
    if(
Finalizado[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Evento Jб destruido!");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Evento Jб destruido!");
    if(
Participando[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Evento Jб destruido!");
    
EvCriado[playerid] = 0;
    
Participando[playerid] = 0;
    
Finalizado[playerid] = 0;
    
SendClientMessage(playerid0xFFFF80FF"| 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:ForXFloat:ForYFloat:ForZ// Evento
    
Finalizado[MAX_PLAYERS]
;
CMD:participar(playeridparams[])
{
    if(
Participando[playerid] == 1) return SendClientMessage(playeridERRO"| ERRO | Vocк jб ta no Evento");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Nгo existe nenhum Evento Criado!");
    
Participando[playerid] = 1;
    
SetPlayerPos(playeridForXForYForY);
    
SendClientMessage(playeridAZUL2"| INFO | Vocк foi ao Evento, Teleportado!");
    return 
1;
}
CMD:evento(playeridparams[])
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado[playerid] == 1)
    {
    new 
stm[256];
    
EvCriado[playerid] = 1;
    
format(stmsizeof(stm), "| INFO | O(A) Gerente %s Fez um Evento Digite: /Participar"PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FFstm);
       
GetPlayerPos(playeridForXForYForZ);
       
//SetPlayerPos(playerid, X, Y, Z);
       
}
       else
       {
       
SendClientMessage(playeridERRO"| ERRO | Evento Jб Criado!"); // Tб chamando aqui
       
return 1;
       }
    return 
1;
}
CMD:dev(playeridparams[])
{
    for(new 
iMAX_PLAYERSi++) return SetPlayerPos(i0.00.00.0);
    {
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem Permissгo!");
    if(
Finalizado[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Evento Jб destruido!");
    if(
EvCriado[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Evento Jб destruido!");
    if(
Participando[playerid] == 0) return SendClientMessage(playeridERRO"| ERRO | Evento Jб destruido!");
    
EvCriado[playerid] = 0;
    
Participando[playerid] = 0;
    
Finalizado[playerid] = 0;
    
SendClientMessage(playerid0xFFFF80FF"| 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 boolEvCriado false,
    
boolParticipando[MAX_PLAYERS],
    
Float:ForXFloat:ForYFloat:ForZ,
    
intAdmVWAdm,
    
FloatPosAntEv[MAX_PLAYERS][3],
    
IntVW[MAX_PLAYERS][2];
CMD:participar(playerid)
{
    if(
Participando[playerid] == true) return SendClientMessage(playeridERRO"| ERRO | Vocк jб estб no evento");
    if(
EvCriado == false) return SendClientMessage(playeridERRO"| ERRO | Nгo existe nenhum evento criado!");
    
Participando[playerid] = true;
    
GetPlayerPos(playeridPosAntEv[playerid][0], PosAntEv[playerid][1], PosAntEv[playerid][2]);
    
IntVW[playerid][0] = GetPlayerInterior(playerid);
    
IntVW[playerid][1] = GetPlayerVirtualWorld(playerid);
    
SetPlayerPos(playeridForXForYForY);
    
SetPlayerInterior(playeridintAdm);
    
SetPlayerVirtualWorld(playeridVWAdm);
    
SendClientMessage(playeridAZUL2"| INFO | Vocк foi teleportado para o evento!");
    return 
1;
}
CMD:evento(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem permissгo!");
    if(
EvCriado == true) return SendClientMessage(playeridERRO"| ERRO | Evento jб criado! Destrua primeiro. (/dev)");
    new 
stm[256];
    
EvCriado true;
    
format(stmsizeof(stm), "| INFO | O(A) Gerente %s fez um evento. Digite: /Participar"PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FFstm);
    
GetPlayerPos(playeridForXForYForZ);
    
intAdm GetPlayerInterior(playerid);
    
VWAdm GetPlayerVirtualWorld(playerid);
    return 
1;
}
CMD:dev(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado == false) return SendClientMessage(playeridERRO"| ERRO | Nenhum evento ocorrendo!");
    for(new 
iMAX_PLAYERSi++)
    {
        if(
Participando[i] == true)
        {
            
SetPlayerPos(iPosAntEv[i][0], PosAntEv[i][1], PosAntEv[i][2]);
            
SetPlayerInterior(iIntVW[i][0]);
            
SetPlayerVirtualWorld(iIntVW[i][1]);
            
SendClientMessage(i, -1"Vocк retornou a sua posiзгo.");
            
Participando[i] = false;
        }
    }
    
EvCriado false;
    
SendClientMessage(playerid0xFFFF80FF"| 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 boolEvCriado false,
    
boolParticipando[MAX_PLAYERS],
    
Float:ForXFloat:ForYFloat:ForZ,
    
intAdmVWAdm,
    
FloatPosAntEv[MAX_PLAYERS][3],
    
IntVW[MAX_PLAYERS][2];
CMD:participar(playerid)
{
    if(
Participando[playerid] == true) return SendClientMessage(playeridERRO"| ERRO | Vocк jб estб no evento");
    if(
EvCriado == false) return SendClientMessage(playeridERRO"| ERRO | Nгo existe nenhum evento criado!");
    
Participando[playerid] = true;
    
GetPlayerPos(playeridPosAntEv[playerid][0], PosAntEv[playerid][1], PosAntEv[playerid][2]);
    
IntVW[playerid][0] = GetPlayerInterior(playerid);
    
IntVW[playerid][1] = GetPlayerVirtualWorld(playerid);
    
SetPlayerPos(playeridForXForYForZ);
    
SetPlayerInterior(playeridintAdm);
    
SetPlayerVirtualWorld(playeridVWAdm);
    
SendClientMessage(playeridAZUL2"| INFO | Vocк foi teleportado para o evento!");
    return 
1;
}
CMD:evento(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem permissгo!");
    if(
EvCriado == true) return SendClientMessage(playeridERRO"| ERRO | Evento jб criado! Destrua primeiro. (/dev)");
    new 
stm[256];
    
EvCriado true;
    
format(stmsizeof(stm), "| INFO | O(A) Gerente %s fez um evento. Digite: /Participar"PlayerName(playerid));
    
SendClientMessageToAll(0xFF8000FFstm);
    
GetPlayerPos(playeridForXForYForZ);
    
intAdm GetPlayerInterior(playerid);
    
VWAdm GetPlayerVirtualWorld(playerid);
    return 
1;
}
CMD:dev(playerid)
{
    if(
pInfo[playerid][Cargo] != GERENTE) return SendClientMessage(playeridERRO"| ERRO | Vocк nгo tem Permissгo!");
    if(
EvCriado == false) return SendClientMessage(playeridERRO"| ERRO | Nenhum evento ocorrendo!");
    for(new 
iMAX_PLAYERSi++)
    {
        if(
Participando[i] == true)
        {
            
SetPlayerPos(iPosAntEv[i][0], PosAntEv[i][1], PosAntEv[i][2]);
            
SetPlayerInterior(iIntVW[i][0]);
            
SetPlayerVirtualWorld(iIntVW[i][1]);
            
SendClientMessage(i, -1"Vocк retornou a sua posiзгo.");
            
Participando[i] = false;
        }
    }
    
EvCriado false;
    
SendClientMessage(playerid0xFFFF80FF"| EV | Destruido com sucesso!");
    return 
1;

Isso deve resolver ^^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)