[Ajuda] Player nгo congela ! ( ShowMenuForPlayer )
#1

Depois de tentar, tentar e tentar, novamente estou aqui para pedir a ajuda de vocкs! :X
Й o seguinte, quando eu chego em um certo lugar e digito: "/profs"
Um menu й chamado e o player congela, atй ai tudo bem mas...
Quando eu aperto em algum item da lista, o player й descongelado ! // Esse й o problema
Jб tentei utilizar o TogglePlayerControllable(playerid, 0); e tambйm nгo obtive resultado.

#Comando que chama o Menu;
pawn Код:
if(strcmp("/profs", cmdtext, true) == 0 ||strcmp("/profissoes", cmdtext, true) == 0)
{
    new aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
    format(file, sizeof(file), PASTA_CONTAS, aname);

    if(PlayerToPoint(1.0, playerid, -2032.9119,-117.4352,1035.1719) || PlayerToPoint(1.0, playerid, 822.6138,1.7779,1004.1797) || PlayerToPoint(1.0, playerid, 1490.7373,1305.7906,1093.2964)||PlayerToPoint(1.0, playerid, -21.8211,-138.4398,1003.5469)||PlayerToPoint(1.0, playerid, 2309.3999,-8.4220,26.7422 )) {
        ShowMenuForPlayer(profissoes, playerid);
        TogglePlayerControllable(playerid, 0);//-2032.9119,-117.4352,1035.1719
        SendClientMessage(playerid, -1, "| INFO | Selecione uma profissгo de acordo com o seu level!");
    }
    else {
        SendClientMessage(playerid, Vermelho,"| ERRO | Vocк nгo estб em uma Agкncia de Empregos.");
    }

    return 1;
}
#Menu que й chamado;
pawn Код:
if(current == profissoes)
{
switch(row)
{
case 0: // Honestas
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(honestas, playerid);
TogglePlayerControllable(playerid, 0);
}
case 1: // Honestas  2
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(honestas2, playerid);
TogglePlayerControllable(playerid, 0);
}
case 2: // desonestas
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(desonestas, playerid);
TogglePlayerControllable(playerid, 0);
}
case 3: // transporte
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(transporte, playerid);
TogglePlayerControllable(playerid, 0);
}
case 4: // policia
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
if(dini_Int(filene(aname),"Punidop") > 0){
SendClientMessage(playerid,Vermelho,"Vocк esta punido e nao pode acessar este menu!");
TogglePlayerControllable(playerid, 1);
HideMenuForPlayer(profissoes, playerid);
return 1;
}
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(policia, playerid);
TogglePlayerControllable(playerid, 0);
}
case 5: // governo
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(governo, playerid);
TogglePlayerControllable(playerid, 0);
}
case 6: // exercitoo
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
if(dini_Int(filene(aname),"Punidop") > 0){
SendClientMessage(playerid,Vermelho,"Vocк esta punido e nao pode acessar este menu!");
TogglePlayerControllable(playerid, 1);
HideMenuForPlayer(profissoes, playerid);
return 1;
}
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(exercitoo, playerid);
TogglePlayerControllable(playerid, 0);
}
case 7: // mafiass
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(mafiass, playerid);
TogglePlayerControllable(playerid, 0);
}
case 8: // outraas
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(outraas, playerid);
TogglePlayerControllable(playerid, 0);
}
case 9: // Cancelar
{
TogglePlayerControllable(playerid, 1);
}
}
}
PS; O player se descongela ao clicar em qualquer item da lista antes de " governo ".

PSІ; Caso precise dos demais cуdigos, sу pedir ! (:

Abraзs!
Reply
#2

Hm... complicado , coloque um timer , tipo quando selecionar o item ai vem um timer e dpois de uns
milissegundos ou segundos vocк congela o player ...
Reply
#3

Opa, obrigado por responder !
Amigo, poderia me explicar como eu poderia fazer tal coisa ? Nгo sou nada experiente em pawn :X

Abraзs!
Reply
#4

Um exemplo de timer :

PHP код:
SetTimerEx("Congelar",1000,false,"i",playerid);
//Isto aqui irб chamar a funзгo Congelar depois de 1 segundo (1000 milissegundos) .
//funзгo congelar :
stock Congelar(playerid)
{
TogglePlayerControllable(playerid,0);

Agora faзa !
Reply
#5

Nгo sei se fiz exatamente certo mas fiz desse jeito:
pawn Код:
case 0: // Honestas
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(honestas, playerid);
SetTimerEx("Congelar",1000,false,"i",playerid);
}
E no final puis:
pawn Код:
stock Congelar(playerid)
{
TogglePlayerControllable(playerid,0);
}
Continua ainda com o erro :/
#Se errei me desculpe.

Abraзs!
Reply
#6

Aumente o tempo , coloque 5 segundos (5000 milissegundos) , se nгo der certo , acho que й bug da 0.3x :/
Reply
#7

Ainda continua man :/
Mas, eu nгo entendo porque todos items do menu apуs o item Policia ( case: 4 ) funcionam perfeitamente.
Obrigado por tentar ajudar, +Rept!

Abraзs!
Reply
#8

Up ( mals pelo double post )
Descobri que nessa parte aqui:
pawn Код:
case 5: // governo
{
HideMenuForPlayer(profissoes, playerid);
ShowMenuForPlayer(governo, playerid);
TogglePlayerControllable(playerid, 0);
}
Essa funзгo " ToglePlayerControllable(playerid, 0); nгo ta tendo efeito algum, apagando ou deixando o player continua congelado ( do jeito que eu queria que todos tivesse ).
Alguma ideia galera ?

Abraзs!

@Edit
Resolvido!
O problema estava aqui nesse codigo:
pawn Код:
if(current == habi,chabi)
    {
        switch(row)
        {
            case 0: // Spawn Prof
            {
            new aname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, aname, sizeof(aname));
            format(file, sizeof(file), PASTA_CONTAS, aname);
            new grana;
            grana = GetPlayerGrana(playerid);
            {
            if(dini_Int(file,"HTerrestre") == 1){
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк jб possui uma Habilitaзгo Terrestre!");
            return 1;
            }
            if(grana > 109){
            GivePlayerGrana(playerid, -110);
            SendClientMessage(playerid, Blue, "| INFO | Parabйns, vocк comprou uma Habilitaзгo Terrestre!");
            dini_IntSet(file,"HTerrestre", 1);
            TogglePlayerControllable(playerid, 1);
            } else {
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo tem dinheiro suficiente.");
            }
            }
            }
            case 1: // Spawn Prof
            {
            new aname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, aname, sizeof(aname));
            format(file, sizeof(file), PASTA_CONTAS, aname);
            new grana;
            grana = GetPlayerGrana(playerid);
            {
            if(dini_Int(file,"HAerea") == 1){
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк jб possui uma Habilitaзгo Aйrea!");
            return 1;
            }
            if(grana > 309){
            GivePlayerGrana(playerid, -310);
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Blue, "| INFO | Parabйns, vocк comprou uma Habilitaзгo Aйrea!");
            dini_IntSet(file,"HAerea", 1);
            } else {
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo tem dinheiro suficiente.");
            }
            }
            }
            case 2: // Spawn Prof
            {
            new aname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, aname, sizeof(aname));
            format(file, sizeof(file), PASTA_CONTAS, aname);
            new grana;
            grana = GetPlayerGrana(playerid);
            {
            if(dini_Int(file,"HNautica") == 1){
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк jб possui uma Habilitaзгo Nбutica!");
            return 1;
            }
            if(grana > 209){
            GivePlayerGrana(playerid, -210);
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Blue, "| INFO | Parabйns, vocк comprou uma Habilitaзгo Nбutica!");
            dini_IntSet(file,"HNautica", 1);
            } else {
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo tem dinheiro suficiente.");
            }
            }
            }
            case 3: // Spawn Prof
            {
            new aname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, aname, sizeof(aname));
            format(file, sizeof(file), PASTA_CONTAS, aname);
            new grana;
            grana = GetPlayerGrana(playerid);
            {
            if(grana > 999){
            GivePlayerGrana(playerid, -1000);
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Blue, "| INFO | Vocк conseguiu Porte de Armas Parabйns! Nгo faзa DM fora da favela.");
            dini_IntSet(file,"Porte", 1);
            } else {
            TogglePlayerControllable(playerid, 1);
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo tem dinheiro suficiente.");
            }
            }
            }
            case 4: // Cancelar
            {
                TogglePlayerControllable(playerid, 1);
                HideMenuForPlayer(habi, playerid);
            }
        }
    }
    return 1;
    }
Sу fiz apaga-lo e tudo fico funcionando perfeitamente !


Abraзs! (:
Reply


Forum Jump:


Users browsing this thread: 7 Guest(s)