SA-MP Forums Archive
[Ajuda] Tem como arrumar isso? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Tem como arrumar isso? (/showthread.php?tid=397807)



Tem como arrumar isso? - Serjnrg - 06.12.2012

Eu to usando um sistema de registro, so que quando o player se registra, ele vai parar muito longee!!!!!!!!
tem como mudar pra eu colocar a coordenada que quando oplayer se registrar ir

Codigo do sistema::::
pawn Код:
#include <Double-O-Files_2>
#define DialogRegistro 123
#define DialogLogin    124
#define DialogSaidaA   125
#define DialogSaidaB   126

#define CASE_SENSITIVE false
#define VALOR_MAXIMO_VIDA 100.0
#define VALOR_MAXIMO_COLETE 100.0
#define ContasPlayers "/ContasPlayers/%s.ini"
#define ContinuarUltimaPosicao

new arquivo[45];
new _string[200];
new nome[MAX_PLAYER_NAME];
new TentativasDeLogar[MAX_PLAYERS];
new bool:PrimeiroSpawn[MAX_PLAYERS];
new TotalDeVezesMorreu[MAX_PLAYERS];
new TotalDeVezesMatou[MAX_PLAYERS];
 

stock SalvarDadosPlayer(playerid)
{
        static Float:PosX, Float:PosY, Float:PosZ, Float:Vida, Float:Colete;
        GetPlayerHealth(playerid, Vida);
        GetPlayerArmour(playerid, Colete);
        GetPlayerPos(playerid, PosX, PosY, PosZ);
        GetPlayerName(playerid, nome, sizeof(nome));
        format(arquivo, sizeof(arquivo), ContasPlayers, nome);
        if(!DOF2_FileExists(arquivo)) DOF2_CreateFile(arquivo);
 
        DOF2_SetInt(arquivo, "Dinheiro", GetPlayerMoney(playerid));
        DOF2_SetInt(arquivo, "Level", GetPlayerScore(playerid));
        DOF2_SetInt(arquivo, "LevelProcurado", GetPlayerWantedLevel(playerid));
        DOF2_SetInt(arquivo, "SkinAtual", GetPlayerSkin(playerid));
        DOF2_SetFloat(arquivo, "Vida", Vida);
        DOF2_SetFloat(arquivo, "Colete", Colete);
        #if defined ContinuarUltimaPosicao
        DOF2_SetFloat(arquivo, "PosX", PosX);
        DOF2_SetFloat(arquivo, "PosY", PosY);
        DOF2_SetFloat(arquivo, "PosZ", PosZ);
        DOF2_SetInt(arquivo, "Interior", GetPlayerInterior(playerid));
        DOF2_SetInt(arquivo, "VirtualWorld", GetPlayerVirtualWorld(playerid));
        #endif
        DOF2_SetInt(arquivo, "TotalDeVezesMorreu", TotalDeVezesMorreu[playerid]);
        DOF2_SetInt(arquivo, "TotalDeVezesMatou", TotalDeVezesMatou[playerid]);
        return 0x1;
}
 
stock CarregarDadosPlayer(playerid)
{
    GetPlayerName(playerid, nome, sizeof(nome));
        format(arquivo, sizeof(arquivo), ContasPlayers, nome);
        if(!DOF2_FileExists(arquivo)) return 0x1;
 
        GivePlayerMoney(playerid, DOF2_GetInt(arquivo, "Dinheiro"));
        SetPlayerScore(playerid, DOF2_GetInt(arquivo, "Level"));
        SetPlayerWantedLevel(playerid, DOF2_GetInt(arquivo, "LevelProcurado"));
        TotalDeVezesMorreu[playerid] = DOF2_GetInt(arquivo, "TotalDeVezesMorreu");
        TotalDeVezesMatou[playerid] = DOF2_GetInt(arquivo, "TotalDeVezesMatou");
        return 0x1;
}
 
public OnFilterScriptInit()
{
        print("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
        print("MM");
        print("MM       [FLB]Falcon's Login Box");
        print("MM");
        print("MM       (FilterScript Carregado)");
        print("MM");
        print("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
        return 1;
}
 
public OnFilterScriptExit()
{
        DOF2_Exit();
    print("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
        print("MM");
        print("MM       [FLB]Falcon's Login Box");
        print("MM");
        print("MM      (FilterScript Descarregado)");
        print("MM");
        print("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
        for(new ii, ff = GetMaxPlayers(); ii < ff; ii++)
        {
            if(!IsPlayerConnected(ii)) continue;
            SalvarDadosPlayer(ii);
        }
        return 1;
}
 
public OnPlayerConnect(playerid)
{
    PrimeiroSpawn[playerid] = true;
    TentativasDeLogar[playerid] = 0;
    GetPlayerName(playerid, nome, sizeof(nome));
        format(arquivo, sizeof(arquivo), ContasPlayers, nome);
        if(!DOF2_FileExists(arquivo))
        {
            format(_string, sizeof(_string), "{FF0000}..:: [FLB]Falcon's Login Box ::..\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_INPUT, "{FFFFFF}[FLB] - Registro", _string, "Registrar", "Sair");
        }
        if(DOF2_FileExists(arquivo))
        {
            format(_string, sizeof(_string), "{FF0000}..:: [FLB]Falcon's Login Box ::..\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_INPUT, "{FFFFFF}[FLB] - Login", _string, "Login", "Sair");
        }
        return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
        SalvarDadosPlayer(playerid);
        return 1;
}
 
public OnPlayerSpawn(playerid)
{
        if(PrimeiroSpawn[playerid] == true)
        {
                PrimeiroSpawn[playerid] = false;
            SetPlayerHealth(playerid, VALOR_MAXIMO_VIDA);
            GetPlayerName(playerid, nome, sizeof(nome));
                format(arquivo, sizeof(arquivo), ContasPlayers, nome);
                SetPlayerSkin(playerid, DOF2_GetInt(arquivo, "SkinAtual"));
                #if defined ContinuarUltimaPosicao
                SetPlayerPos(playerid, DOF2_GetFloat(arquivo, "PosX"), DOF2_GetFloat(arquivo, "PosY"), DOF2_GetFloat(arquivo, "PosZ"));
                SetPlayerInterior(playerid, DOF2_GetInt(arquivo, "Interior"));
                SetPlayerVirtualWorld(playerid, DOF2_GetInt(arquivo, "VirtualWorld"));
                #endif
                if(DOF2_GetFloat(arquivo, "Vida") == 0) return 0x1;
                SetPlayerHealth(playerid, DOF2_GetFloat(arquivo, "Vida"));
                SetPlayerArmour(playerid, DOF2_GetFloat(arquivo, "Colete"));
        }
        return 1;
}
 
public OnPlayerDeath(playerid, killerid, reason)
{
    TotalDeVezesMorreu[playerid] ++;
        TotalDeVezesMatou[killerid] ++;
        return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
        if(dialogid == DialogRegistro)
        {
            if(!response) ShowPlayerDialog(playerid, DialogSaidaA, DIALOG_STYLE_MSGBOX, "{FFFFFF}[FLB]Confirmar saida", "{FF0000}..:: [FLB]Falcon's Login Box ::..\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), "{FF0000}..:: [FLB]Falcon's Login Box ::..\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);
                        return ShowPlayerDialog(playerid, DialogRegistro, DIALOG_STYLE_INPUT, "{FFFFFF}[FLB] - Registro", _string, "Registrar", "Sair");
                }
                GetPlayerName(playerid, nome, sizeof(nome));
                        format(arquivo, sizeof(arquivo), ContasPlayers, nome);
                        DOF2_CreateFile(arquivo);
                        DOF2_SetString(arquivo, "Senha", inputtext);
                        DOF2_SetInt(arquivo, "Dinheiro", 0);
                        DOF2_SetInt(arquivo, "Level", 0);
                        DOF2_SetInt(arquivo, "LevelProcurado", 0);
                        DOF2_SetInt(arquivo, "SkinAtual", 0);
                        DOF2_SetFloat(arquivo, "Vida", VALOR_MAXIMO_VIDA);
                        DOF2_SetFloat(arquivo, "Colete", VALOR_MAXIMO_COLETE);
                        #if defined ContinuarUltimaPosicao
                        DOF2_SetFloat(arquivo, "PosX", 0.0);
                        DOF2_SetFloat(arquivo, "PosY", 0.0);
                        DOF2_SetFloat(arquivo, "PosZ", 0.0);
                        DOF2_SetInt(arquivo, "Interior", 0);
                        DOF2_SetInt(arquivo, "VirtualWorld", 0);
                        #endif
                        DOF2_SetInt(arquivo, "TotalDeVezesMorreu", 0);
                        DOF2_SetInt(arquivo, "TotalDeVezesMatou", 0);
                        SpawnPlayer(playerid);
                        SendClientMessage(playerid, 0xFFFFFFAA, "[FLB]Obrigado por registrar-se...A administraзгo do servidor lhe deseja um bom jogo !!");
            }
        }
 
        if(dialogid == DialogLogin)
        {
            if(!response) ShowPlayerDialog(playerid, DialogSaidaB, DIALOG_STYLE_MSGBOX, "{FFFFFF}[FLB]Confirmar saida", "{FF0000}..:: [FLB]Falcon's Login Box ::..\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), "{FF0000}..:: [FLB]Falcon's Login Box ::..\n{FFFFFF}Olб, vocк jб possui uma conta registrada.\n\nNome: {FFFF80}%s\n\n{FFFFFF}Insira sua senha para logar-se:", nome);
                        return ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_INPUT, "{FFFFFF}[FLB] - Login", _string, "Login", "Sair");
                }
                GetPlayerName(playerid, nome, sizeof(nome));
                        format(arquivo, sizeof(arquivo), ContasPlayers, nome);
                        if(!strcmp(inputtext, DOF2_GetString(arquivo, "Senha"), CASE_SENSITIVE))
                        {
                            CarregarDadosPlayer(playerid);
                            SpawnPlayer(playerid);
                        }
                        else
                        {
                            TentativasDeLogar[playerid] ++;
                            if(TentativasDeLogar[playerid] <= MAXIMO_TLOGAR)
                            {
                                GetPlayerName(playerid, nome, sizeof(nome));
                                format(_string, sizeof(_string), "{FF0000}..:: [FLB]Falcon's Login Box ::..\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_INPUT, "{FFFFFF}[FLB] - Registro", _string, "Registrar", "Sair");
                                        format(_string, sizeof(_string), "Senha incorreta !!  || %d Tentativa(s) de %d", TentativasDeLogar[playerid], MAXIMO_TLOGAR);
                    SendClientMessage(playerid, 0xFF0000AA, _string);
                                }
                            if(TentativasDeLogar[playerid] > MAXIMO_TLOGAR)
                            {
                                SendClientMessage(playerid, 0xFF0000AA, "Vocк excedeu o limite mбximo de tentativas de logar...");
                                SendClientMessage(playerid, 0xFF0000AA, "Por questхes de seguranзa vocк foi kickado !!");
                                Kick(playerid);
                            }
                        }
            }
        }
 
        if(dialogid == DialogSaidaA)
        {
            if(response)
            {
                SendClientMessage(playerid, 0xFFFFFFAA, "Vocк decidiu sair sem se registrar...");
                Kick(playerid);
            }
            else
            {
                GetPlayerName(playerid, nome, sizeof(nome));
                format(_string, sizeof(_string), "{FF0000}..:: [FLB]Falcon's Login Box ::..\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_INPUT, "{FFFFFF}[FLB] - Registro", _string, "Registrar", "Sair");
            }
        }
 
        if(dialogid == DialogSaidaB)
        {
            if(response)
            {
                SendClientMessage(playerid, 0xFFFFFFAA, "Vocк decidiu sair sem se logar...");
                Kick(playerid);
            }
            else
            {
                GetPlayerName(playerid, nome, sizeof(nome));
                format(_string, sizeof(_string), "{FF0000}..:: [FLB]Falcon's Login Box ::..\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_INPUT, "{FFFFFF}[FLB] - Login", _string, "Login", "Sair");
            }
        }
        return 1;
}



Re: Tem como arrumar isso? - TugaBR - 06.12.2012

O problema й nesse arquivozinho aн "PosX" "PosY" "PosZ" que nгo tб salvando corretamente. Tenta ver aк, ou senгo tira essa baguio de salvar a ъltima posiзгo do player. Seta um spawn pra cada tipo de player pra ser carregado depois do login que jб й.


Re: Tem como arrumar isso? - Zona_Sky - 06.12.2012

pawn Код:
public OnPlayerConnect(playerid)
{
SetPlayerPos(playerid, cordenada);



Re: Tem como arrumar isso? - Serjnrg - 06.12.2012

Quote:
Originally Posted by TugaBR
Посмотреть сообщение
O problema й nesse arquivozinho aн "PosX" "PosY" "PosZ" que nгo tб salvando corretamente. Tenta ver aк, ou senгo tira essa baguio de salvar a ъltima posiзгo do player. Seta um spawn pra cada tipo de player pra ser carregado depois do login que jб й.
Aquele , й pra salvar onde o player fica! isso estб correcto do player registrado.

Oque eu quero й o player se registra, vai pra uma coordernada......

Por que a posicao do registro й mt longe


Re: Tem como arrumar isso? - Baiano - 06.12.2012

Usa SetPlayerPos, como o Zona_Sky disse!


Re: Tem como arrumar isso? - Gleisson_. - 06.12.2012

Estude um pouco isso:

https://sampwiki.blast.hk/wiki/SetPlayerPos

https://sampwiki.blast.hk/wiki/SpawnPlayer