[Ajuda] OnPlayerDeath = OnPlayerRequestClass
#1

Estou criando um gamemode do 0, mas tem um bug que tб enchendo o saco..

Й assim, o jogador consegue se registrar e logar normalmente, mas, na primeira vez que ele morre, ele abre o dialog do login denovo, ai caso eu digite a senha nгo acontece mais isso comigo..

Pessoal, nгo й possivel mudar oque tem no OnPlayerRequestClass para o OnPlayerConnect, por isso vim aqui pedir outra soluзгo..

pawn Код:
public OnPlayerConnect(playerid)
{
    Spawn[playerid] = 1;

    ForceClassSelection(playerid);

    LerComandos[playerid] = false;

    CLS[playerid] = false;

    LerPms[playerid] = true;
    PmBlock[playerid] = true;

    format(String, sizeof(String), "{00FF00}- {FFFFFF}%s entrou no servidor", PlayerName(playerid));
    SendClientMessageToAll(-1, String);

    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    SendClientMessage(playerid, -1, " ");
    return 1;
}
pawn Код:
public OnPlayerSpawn(playerid)
{
    if(Spawn[playerid] == 1)
    {
        Spawn[playerid] = 0;
        TextDrawShowForPlayer(playerid, Horario);
        TextDrawShowForPlayer(playerid, DATA);
        PmBlock[playerid] = false;
        KillTimer(Timer01);
        SetPlayerHealth(playerid, VMDV);
        GetPlayerName(playerid, nome, sizeof(nome));
        format(arquivo, sizeof(arquivo), cJ, nome);
        SetPlayerSkin(playerid, dini_Int(arquivo, "SkinAtual"));
        if(dini_Float(arquivo, "Vida") == 0) return 0x1;
        SetPlayerHealth(playerid, dini_Float(arquivo, "Vida"));
        SetPlayerArmour(playerid, dini_Float(arquivo, "Colete"));
        TempoExpMinuto(playerid);
        CDP(playerid);
    }
    return 1;
}
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    TotalDeVezesMorreu[playerid] ++;
    TotalDeVezesMatou[killerid] ++;
    return 1;
}
pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
    new rand = random(sizeof Camera);
    SetPlayerCameraPos(playerid, Camera[rand][0], Camera[rand][1], Camera[rand][2]);
    SetPlayerCameraLookAt(playerid, Camera[rand][3], Camera[rand][4], Camera[rand][5]);
    SetPVarInt(playerid, "Camera", rand);

    Timer01 = SetTimer("Cameras", 5000, true);

    TentativasDeLogar[playerid] = 0;
    GetPlayerName(playerid, nome, sizeof(nome));
    format(arquivo, sizeof(arquivo), cJ, nome);
    if(!dini_Exists(arquivo))
    {
        format(String, sizeof(String), "\n{FFFFFF}Olб, vocк ainda nгo possuн uma conta registrada.\n\nNome: {FF0000}%s\n\n{FFFFFF}Insira uma senha para registrar-se:", nome);
        ShowPlayerDialog(playerid, DialogRegistro, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life -", String, "Registrar", "Sair");
    }
    if(dini_Exists(arquivo))
    {
        format(String, sizeof(String), "\n{FFFFFF}Olб, vocк jб possuн uma conta registrada.\n\nNome: {FF0000}%s\n\n{FFFFFF}Insira sua senha para logar-se:", nome);
        ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life -", String, "Login", "Sair");
    }
    return 1;
}
Aqui os dialogs:

pawn Код:
if(dialogid == DialogSkin)
    {
        if(response)
        {
            dini_IntSet(arquivo, "SkinAtual", 0);
            SetPlayerSkin(playerid, 0);
        }
        else
        {
            dini_IntSet(arquivo, "SkinAtual", 193);
            SetPlayerSkin(playerid, 193);
        }
    }
    if(dialogid == DialogRegistro)
    {
        ForceClassSelection(playerid);
        if(!response) ShowPlayerDialog(playerid, DialogSaidaA, DIALOG_STYLE_MSGBOX, "{FFFFFF}- Like A Life -", "\n{FFFFFF}Vocк ainda nгo estб registrado.\n\nTem certeza que deseja sair ?", "Sair", "Voltar");
        if(response)
        {
            if(strlen(inputtext) < 5 || strlen(inputtext) > 20)
            {
                GetPlayerName(playerid, nome, sizeof(nome));
                format(String, sizeof(String), "\n{FFFFFF}Olб, vocк ainda nгo possui uma conta registrada.\n\nNome: {FF0000}%s\n\n{FFFFFF}Insira uma senha para registrar-se:", nome);
                return ShowPlayerDialog(playerid, DialogRegistro, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life -", String, "Registrar", "Sair");
            }
            SpawnPlayer(playerid);
            GetPlayerName(playerid, nome, sizeof(nome));
            format(arquivo, sizeof(arquivo), cJ, nome);
            dini_Create(arquivo);
            dini_Set(arquivo, "Senha", inputtext);
            dini_IntSet(arquivo, "Dinheiro", 0);
            dini_Set(arquivo, "Level", "0");
            dini_Set(arquivo, "ExpJogador", "0");
            dini_IntSet(arquivo, "LevelProcurado", 0);
            dini_FloatSet(arquivo, "Vida", VMDV);
            dini_FloatSet(arquivo, "Colete", VMDC);
            #if defined CUP
            dini_FloatSet(arquivo, "PosX", 0.0);
            dini_FloatSet(arquivo, "PosY", 0.0);
            dini_FloatSet(arquivo, "PosZ", 0.0);
            dini_IntSet(arquivo, "Interior", 0);
            dini_IntSet(arquivo, "VirtualWorld", 0);
            #endif
            dini_IntSet(arquivo, "TotalDeVezesMorreu", 0);
            dini_IntSet(arquivo, "TotalDeVezesMatou", 0);
            ShowPlayerDialog(playerid, DialogSkin, DIALOG_STYLE_MSGBOX, "{FFFFFF}- Like A Life -", "{FFFFFF}Vocк quer iniciar com um skin {0099FF}homem {FFFFFF}ou {FF00FF}mulher {FFFFFF}?\n{FF0000}* vocк poderб alterar o skin mais tarde", "Homem", "Mulher");
            SendClientMessage(playerid, -1, "{DCE2F3}| INFO | Configuraзхes do servidor setadas");
        }
    }

    if(dialogid == DialogLogin)
    {
        ForceClassSelection(playerid);
        if(!response) ShowPlayerDialog(playerid, DialogSaidaB, DIALOG_STYLE_MSGBOX, "{FFFFFF}- Like A Life -", "\n{FFFFFF}Vocк ainda nгo estб logado.\n\nTem certeza que deseja sair ?", "Sair", "Voltar");
        if(response)
        {
            if(strlen(inputtext) < 5 || strlen(inputtext) > 20)
            {
                GetPlayerName(playerid, nome, sizeof(nome));
                format(String, sizeof(String), "\n{FFFFFF}Olб, vocк jб possui uma conta registrada.\n\nNome: {FF0000}%s\n\n{FFFFFF}Insira sua senha para logar-se:", nome);
                return ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life -", String, "Login", "Sair");
            }
            GetPlayerName(playerid, nome, sizeof(nome));
            format(arquivo, sizeof(arquivo), cJ, nome);
            if(!strcmp(inputtext, dini_Get(arquivo, "Senha"), Case_Sensitive))
            {
                CDP(playerid); // Carregar dados player
                SpawnPlayer(playerid);
                ShowPlayerDialog(playerid, DialogPos, DIALOG_STYLE_LIST, "{FFFFFF}- Like A Life - [ Para onde vocк quer ir ? ]", "Spawn\nЪltima posiзгo salva", "Ok", "");
            }
            else
            {
                TentativasDeLogar[playerid] ++;
                if(TentativasDeLogar[playerid] <= MTDL)
                {
                    GetPlayerName(playerid, nome, sizeof(nome));
                    format(String, sizeof(String), "\n{FFFFFF}Olб, vocк ainda nгo possui uma conta registrada.\n\nNome: {FFFF80}%s\n\n{FFFFFF}Insira uma senha para registrar-se:", nome);
                    ShowPlayerDialog(playerid, DialogRegistro, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life-", String, "Registrar", "Sair");


                    format(String, sizeof(String), "~r~Senha incorreta. %d/%d", TentativasDeLogar[playerid], MTDL);
                    GameTextForPlayer(giveplayerid, String, 100, 1);

                    format(String, sizeof(String), "\n{FFFFFF}Olб, vocк jб possui uma conta registrada.\n\nNome: {FFFF80}%s\n\n{FFFFFF}Insira sua senha para logar-se:", nome);
                    ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life -", String, "Login", "Sair");
                }
                if(TentativasDeLogar[playerid] > MTDL)
                {
                    format(String, sizeof(String), "~r~Por questхes de seguranзa foi kickado");
                    GameTextForPlayer(giveplayerid, String, 3000, 1);
                    Kick(playerid);
                }
            }
        }
    }

    if(dialogid == DialogSaidaA)
    {
        if(response)
        {
            SendClientMessage(playerid, -1, "{DCE2F3}| INFO | Vocк decidiu sair sem se registrar.");
            Kick(playerid);
        }
        else
        {
            GetPlayerName(playerid, nome, sizeof(nome));
            format(String, sizeof(String), "\n{FFFFFF}Olб, vocк ainda nгo possui uma conta registrada.\n\nNome: {FFFF80}%s\n\n{FFFFFF}Insira uma senha para registrar-se:", nome);
            ShowPlayerDialog(playerid, DialogRegistro, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life -", String, "Registrar", "Sair");
        }
    }

    if(dialogid == DialogSaidaB)
    {
        if(response)
        {
            SendClientMessage(playerid, -1, "{DCE2F3}| INFO | Vocк decidiu sair sem logar.");
            Kick(playerid);
        }
        else
        {
            GetPlayerName(playerid, nome, sizeof(nome));
            format(String, sizeof(String), "\n{FFFFFF}Olб, vocк jб possui uma conta registrada.\n\nNome: {FFFF80}%s\n\n{FFFFFF}Insira sua senha para logar-se:", nome);
            ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_PASSWORD, "{FFFFFF}- Like A Life -", String, "Login", "Sair");
        }
    }
Reply
#2

Retire todos ForceClassSelection.
Reply
#3

Se eu fizer isso o jogador nгo vai pro OnPlayerRequestClass, que й onde mostra o Dialog do login..
Reply
#4

OnPlayerRequestClass jб й chamado logo apуs o OnPlayerConnect, por isso nгo tem necessidade usar ForceClassSelection.
Reply
#5

Vocк tem razгo, mas mesmo assim o bug continua..
Reply
#6

comigo tambйm estб acontecendo esse bug, quando o player morre aparece as setinhas << >> e o botгo de spawn, ai eu clico em spawn e td normal, estou tentando rancar mais nгo consegui =/
Reply
#7

й tenso cara, jб tentei de tudo, revisei, tirei, coloquei, mas nada dб certo.
Reply
#8

Hm estranho... em um servidor que jogo tem esse mesmo problema.
Reply
#9

Tenso :S

Ninguem tem uma soluзгo? S:
Reply
#10

UP no tуpico..

To quebrando a cabeзa e nгo consigo resolver..
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)