[Ajudinha] Salvar ъltima posiзгo.
#1

Bom, finalmente tomei vergonha na cara e estou aprendendo sobre Caches de salvamento.
Bom, no sistema de registro do meu servidor, que o Jonathan me passou, nгo tem um sistema para salvar as ъltimas coordenadas do player.
Entгo eu tentei fazer para salvar as coordenadas e logar nas coordenadas:
pawn Code:
SalvarPlayer(playerid)
{
    static Float:PosX, Float:PosY, Float:PosZ;
    new Float:Vida;
    new Float:Colete;
    GetPlayerHealth(playerid, Vida);
    GetPlayerArmour(playerid, Colete);
    new Nome[MAX_PLAYER_NAME];
    GetPlayerPos(playerid, PosX, PosY, PosZ);
    GetPlayerName(playerid, Nome, sizeof(Nome));
    //new String[50];
    format(String, sizeof(String), CONTAS, Nome);
    dini_IntSet(String,"Dinheiro", GetPlayerMoney(playerid));
    dini_FloatSet(String,"Vida", Vida);
    dini_FloatSet(String,"Colete", Colete);
    dini_IntSet(String,"Matou", Matou[playerid]);
    dini_IntSet(String,"Morreu", Morreu[playerid]);
    dini_IntSet(String,"Logou", Logou[playerid]);
    dini_FloatSet(String, "PosX", PosX);
    dini_FloatSet(String, "PosY", PosY);
    dini_FloatSet(String, "PosZ", PosZ);

    return 1;
}

SetarPlayer(playerid)
{
    new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    //static Float:PosX, Float:PosY, Float:PosZ;
    //new String[50];
    /*new PosX[MaxPlayers];
    new PosY[MaxPlayers];
    new PlsZ[MaxPlayers];  */

    format(String, sizeof(String), CONTAS, Nome);
    GivePlayerMoney(playerid, dini_Int(String,"Dinheiro"));
    SetPlayerHealth(playerid, dini_Int(String,"Vida"));
    SetPlayerArmour(playerid, dini_Int(String,"Colete"));
    Matou[playerid] = dini_Int(String, "Matou");
    Morreu[playerid] = dini_Int(String, "Morreu");
    Logou[playerid] = dini_Int(String, "Logou");
    PosX[playerid] = dini_Int(String, "PosX");// Linha 453
    PosY[playerid] = dini_Int(String, "PosY");
    PosZ[playerid] = dini_Int(String, "PosZ");
    SetPlayerPos(playerid, PosX, PosY, PosZ);
    return 1;
}
O que estб entre /* e */ й o sistema, sу que ele estб dando muitos erros, como podem ver:
Quote:
Originally Posted by Pawno maldito
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(453) : error 017: undefined symbol "PosX"
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(453) : warning 215: expression has no effect
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(453) : error 001: expected token: ";", but found "]"
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(453) : error 029: invalid expression, assumed zero
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(453) : fatal error 107: too many error messages on one line
Alйm de ter todos estes erros, o sistema nгo estб salvando corretamente as coordenadas:
Quote:
Originally Posted by Magnus File
Senha=WoW11
Dinheiro=0
Vida=100.000000
Colete=0.000000
Matou=0
Morreu=1
Logou=3
PosX=0.000000
PosY=0.000000
PosZ=0.000000
Reply
#2

vc tem q pega o q ta salvo, e setar no OnPlayerSpawn.

Fuck Yeah My Lord!!
This forum requires that you wait 120 seconds between posts. Please try again in 59 seconds.

E pra setar tem que ser : dini_Float

Ex:

PHP Code:
SetPlayerPos(playeriddini_Float(arquivo"PosX"), dini_Float(arquivo"PosY"), dini_Float(arquivo"PosZ"));
isso й um exemplo q vc pode por no OnPlayerSpawne o code й do sistema de salvamento do falcon
Reply
#3

Entгo onde eu defino onde player vai spawnar?
Eu estou fazendo esse GM do 0, justamente pra mim aprender algumas funзхes do pawn e tb nгo existe nenhum GM deste gкnero que estou fazendo.
Reply
#4

nгo entendi sua pergunta mais faz assim:

PHP Code:
new bool:PrimeiroSpawn[MAX_PLAYERS];//Topo

PrimeiroSpawn[playerid] = false;//OnPlayerConnect

    //OPlayerSpawn
    
if(PrimeiroSpawn[playerid] == false) {
        new 
String[50];
        
format(Stringsizeof(String), CONTASNome);
        
SetPlayerPos(playeriddini_Float(String"PosX"), dini_Float(String"PosY"), dini_Float(String"PosZ"));
        
PrimeiroSpawn[playerid] = true;
    }

SetarPlayer(playerid)
{
    new 
Nome[MAX_PLAYER_NAME],
        
String[50];
    
GetPlayerName(playeridNomesizeof(Nome));
    
format(Stringsizeof(String), CONTASNome);
    
GivePlayerMoney(playeriddini_Int(String,"Dinheiro"));
    
SetPlayerHealth(playeriddini_Int(String,"Vida"));
    
SetPlayerArmour(playeriddini_Int(String,"Colete"));
    
Matou[playerid] = dini_Int(String"Matou");
    
Morreu[playerid] = dini_Int(String"Morreu");
    
Logou[playerid] = dini_Int(String"Logou");
    return 
1;

Testa ai.
Reply
#5

Quote:
Originally Posted by Pawno Maldito
Compilando MMOv1.pwn...
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(449) : warning 219: local variable "GetPlayerName" shadows a variable at a preceding level
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(449) : error 001: expected token: ";", but found "("
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(449) : warning 215: expression has no effect
D:\SA-MP\Gunners\gamemodes\MMOv1.pwn(449) : warning 203: symbol is never used: "GetPlayerName"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.
pawn Code:
SetarPlayer(playerid)
{
    new Nome[MAX_PLAYER_NAME],
    GetPlayerName(playerid, Nome, sizeof(Nome));// Linha 449/ Linha do erro
    format(String, sizeof(String), CONTAS, Nome);
    GivePlayerMoney(playerid, dini_Int(String,"Dinheiro"));
    SetPlayerHealth(playerid, dini_Int(String,"Vida"));
    SetPlayerArmour(playerid, dini_Int(String,"Colete"));
    Matou[playerid] = dini_Int(String, "Matou");
    Morreu[playerid] = dini_Int(String, "Morreu");
    Logou[playerid] = dini_Int(String, "Logou");
    return 1;
}
Ja veio com um erro aqui:
pawn Code:
if(PrimeiroSpawn[playerid] == false) {
new Nome[MAX_PLAYER_NAME]; // Linha que faltava ^^        
//new String[50];
        format(String, sizeof(String), CONTAS, Nome);
        SetPlayerPos(playerid, dini_Float(String, "PosX"), dini_Float(String, "PosY"), dini_Float(String, "PosZ"));
        PrimeiroSpawn[playerid] = true;
    }
Reply
#6

PHP Code:
SetarPlayer(playerid)
{
    new 
Nome[MAX_PLAYER_NAME];
    
GetPlayerName(playeridNomesizeof(Nome));// Linha 449/ Linha do erro
    
format(Stringsizeof(String), CONTASNome);
    
GivePlayerMoney(playeriddini_Int(String,"Dinheiro"));
    
SetPlayerHealth(playeriddini_Int(String,"Vida"));
    
SetPlayerArmour(playeriddini_Int(String,"Colete"));
    
Matou[playerid] = dini_Int(String"Matou");
    
Morreu[playerid] = dini_Int(String"Morreu");
    
Logou[playerid] = dini_Int(String"Logou");
    return 
1;

Reply
#7

Oh, Thanks Dylan, aproveitando o tуpico:
Porque nгo estб setando o local onde eu saн?
Jб estб salvando tudo corretamente:
Quote:

Senha=Senha
Dinheiro=0
Vida=100.000000
Colete=0.000000
Matou=0
Morreu=1
Logou=4
PosX=173.237411
PosY=-31.376304
PosZ=1.578125

E tambйm como eu faзo para colocar um Auto Spawn (quando o player aperta login jб da spawn)? ??
Reply
#8

Seto sim, as coordenadas ai...

No OnPlayerRequestClass coloca: SpawnPlayer(playerid); , e na hora de logar tambem.
Reply
#9

Ok dylan, ta funfando tudo certinho.
A ъnica coisa que nгo estб salvando й quando o player reloga, ele nгo estб setando as coordenadas corretamente, estб sempre indo para 0,0,0.
Tem alguma ideia do que possa ser?
@edit:
Registrei uma nova account, olha sу
Quote:

Senha=123456
Dinheiro=0
Vida=100
Colete=100
Matou=0
Morreu=0
Logou=0
PosX=1981
PosY=-1158
PosZ=1975

Sу que ele sempre vai para X: 0, Y: 0 e Z: 0
Reply
#10

quando cria conta salva a senha , debaixo daquilo vc poem :

PHP Code:
    dini_FloatSet(String"PosX"Sua pos aonde vai nasce de comeзo);
    
dini_FloatSet(String"PosY"Sua pos aonde vai nasce de comeзo);
    
dini_FloatSet(String"PosZ"Sua pos aonde vai nasce de comeзo); 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)