[Ajuda] Salvar VirtualWorld
#1

"Criei" um sistema de salvar coordenadas quando o jogador sair do servidor em DOF2. Porйm quando eu tambйm botei para salvar o virtualworld que ele estava antes de deslogar, mas nгo parece estar dando muito certo , nгo importa o que eu faзa sempre continua 0 o nъmero do virtualworld e acaba me colocando nas coordenadas mas no virtualworld padrгo. Se alguйm puder me ajudar fico muito agradecido

PHP код:
new Float:PosX;
new 
Float:PosY;
new 
Float:PosZ;
new 
Float:PosA;
new 
pVW
OnPlayerSpawn

PHP код:
    new arquivo[40];
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivo40,"Contas/%sInfos.ini",name);
    if(
DOF2_FileExists(arquivo)){
    
PosX DOF2_GetFloat(arquivo"PosX");
    
PosY DOF2_GetFloat(arquivo"PosY");
    
PosZ DOF2_GetFloat(arquivo"PosZ");
    
PosA DOF2_GetFloat(arquivo"PosA");
    
pVW DOF2_GetInt(arquivo"VirtualWorld");
    
SetPlayerPos(playeridPosX,PosY,PosZ);
    
SetPlayerFacingAngle(playeridPosA);
    
SetPlayerVirtualWorld(playerid,pVW);
    }
    else
    {
    
DOF2_CreateFile(arquivo);
    
SetPlayerPos(playerid,1154.0786,-1768.2622,16.5938);
    }
    return 
1;

OnPlayerDisconnect

PHP код:
    new arquivo[40];
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivo40,"Contas/%sInfos.ini",name);
    
GetPlayerPos(playeridPosX,PosY,PosZ);
    
GetPlayerFacingAngle(playeridPosA);
    
GetPlayerVirtualWorld(pVW);
    if(
DOF2_FileExists(arquivo)){
    
DOF2_SetFloat(arquivo,"PosX",PosX);
    
DOF2_SetFloat(arquivo,"PosY",PosY);
    
DOF2_SetFloat(arquivo,"PosZ",PosZ);
    
DOF2_SetFloat(arquivo,"PosA",PosA);
    
DOF2_SetInt(arquivo"VirtualWorld"pVW);
    
DOF2_SaveFile();
    }
    return 
1;

"Criei" entre aspas porque jб existe faz muito tempo :v
Reply
#2

Tente :
PHP код:
    new arquivo[40]; 
    new 
name[MAX_PLAYER_NAME]; 
    
GetPlayerName(playeridnamesizeof(name)); 
    
format(arquivo40,"Contas/%sInfos.ini",name); 
    
GetPlayerPos(playeridPosX,PosY,PosZ); 
    
GetPlayerFacingAngle(playeridPosA); 
    if(
DOF2_FileExists(arquivo)){ 
    
DOF2_SetFloat(arquivo,"PosX",PosX); 
    
DOF2_SetFloat(arquivo,"PosY",PosY); 
    
DOF2_SetFloat(arquivo,"PosZ",PosZ); 
    
DOF2_SetFloat(arquivo,"PosA",PosA); 
    
DOF2_SetInt(arquivo"VirtualWorld",GetPlayerVirtualWorld(playerid)); 
    
DOF2_SaveFile(); 
    } 
    return 
1

Reply
#3

Quote:
Originally Posted by FerrariL
Посмотреть сообщение
Tente :
PHP код:
    new arquivo[40]; 
    new 
name[MAX_PLAYER_NAME]; 
    
GetPlayerName(playeridnamesizeof(name)); 
    
format(arquivo40,"Contas/%sInfos.ini",name); 
    
GetPlayerPos(playeridPosX,PosY,PosZ); 
    
GetPlayerFacingAngle(playeridPosA); 
    if(
DOF2_FileExists(arquivo)){ 
    
DOF2_SetFloat(arquivo,"PosX",PosX); 
    
DOF2_SetFloat(arquivo,"PosY",PosY); 
    
DOF2_SetFloat(arquivo,"PosZ",PosZ); 
    
DOF2_SetFloat(arquivo,"PosA",PosA); 
    
DOF2_SetInt(arquivo"VirtualWorld",GetPlayerVirtualWorld(playerid)); 
    
DOF2_SaveFile(); 
    } 
    return 
1

Agora nгo ta salvando mais nada :/
Reply
#4

Tenta assim

PHP код:
    new arquivo[40], name[MAX_PLAYER_NAME], MundoPlayer[MAX_PLAYERS];
    
GetPlayerName(playeridnamesizeof(name)); 
    
format(arquivo40,"Contas/%sInfos.ini",name); 
    
GetPlayerPos(playeridPosX,PosY,PosZ); 
    
GetPlayerFacingAngle(playeridPosA); 
    
MundoPlayer[playerid] = GetPlayerVirtualWorld(playerid); 
    if(
DOF2_FileExists(arquivo)){ 
    
DOF2_SetFloat(arquivo,"PosX",PosX); 
    
DOF2_SetFloat(arquivo,"PosY",PosY); 
    
DOF2_SetFloat(arquivo,"PosZ",PosZ); 
    
DOF2_SetFloat(arquivo,"PosA",PosA); 
    
DOF2_SetInt(arquivo"VirtualWorld"MundoPlayer[playerid]); 
Reply
#5

Veja agora :
PHP код:
new arquivo[40]; 
    new 
interior[MAX_PLAYER];
    new 
name[MAX_PLAYER_NAME];  
    
GetPlayerName(playeridnamesizeof(name));  
    
format(arquivo40,"Contas/%sInfos.ini",name);  
    
GetPlayerPos(playeridPosX,PosY,PosZ);  
    
GetPlayerFacingAngle(playeridPosA);  
    
interior[playerid] = GetPlayerVirtualWorld(playerid);
    if(
DOF2_FileExists(arquivo)){  
    
DOF2_SetFloat(arquivo,"PosX",PosX);  
    
DOF2_SetFloat(arquivo,"PosY",PosY);  
    
DOF2_SetFloat(arquivo,"PosZ",PosZ);  
    
DOF2_SetFloat(arquivo,"PosA",PosA);  
    
DOF2_SetInt(arquivo"VirtualWorld",interior[playerid]);  
    
DOF2_SaveFile();  
    }  
    return 
1;  

Suas variбveis esta criadas de forma errada,deveria ser,por exemplo : Float:PosX[MAX_PLAYERS];
e nгo precisa de declarar este monte de new
PHP код:
new Float:PosX
new 
Float:PosY
new 
Float:PosZ
new 
Float:PosA
new 
pVW
PHP код:
new Float:PosX
    
Float:PosY,
    
Float:PosZ
    
Float:PosA,
    
pVW

Reply
#6

Quote:
Originally Posted by Lontresca
Посмотреть сообщение
Tenta assim

PHP код:
    new arquivo[40], name[MAX_PLAYER_NAME], MundoPlayer[MAX_PLAYERS];
    
GetPlayerName(playeridnamesizeof(name)); 
    
format(arquivo40,"Contas/%sInfos.ini",name); 
    
GetPlayerPos(playeridPosX,PosY,PosZ); 
    
GetPlayerFacingAngle(playeridPosA); 
    
MundoPlayer[playerid] = GetPlayerVirtualWorld(playerid); 
    if(
DOF2_FileExists(arquivo)){ 
    
DOF2_SetFloat(arquivo,"PosX",PosX); 
    
DOF2_SetFloat(arquivo,"PosY",PosY); 
    
DOF2_SetFloat(arquivo,"PosZ",PosZ); 
    
DOF2_SetFloat(arquivo,"PosA",PosA); 
    
DOF2_SetInt(arquivo"VirtualWorld"MundoPlayer[playerid]); 
Jб tinha feito isso , mesmo assim tentei denovo . Salvou tudo menos o MundoPlayer
Reply
#7

Quote:
Originally Posted by FerrariL
Посмотреть сообщение
Veja agora :
PHP код:
new arquivo[40]; 
    new 
interior[MAX_PLAYER];
    new 
name[MAX_PLAYER_NAME];  
    
GetPlayerName(playeridnamesizeof(name));  
    
format(arquivo40,"Contas/%sInfos.ini",name);  
    
GetPlayerPos(playeridPosX,PosY,PosZ);  
    
GetPlayerFacingAngle(playeridPosA);  
    
interior[playerid] = GetPlayerVirtualWorld(playerid);
    if(
DOF2_FileExists(arquivo)){  
    
DOF2_SetFloat(arquivo,"PosX",PosX);  
    
DOF2_SetFloat(arquivo,"PosY",PosY);  
    
DOF2_SetFloat(arquivo,"PosZ",PosZ);  
    
DOF2_SetFloat(arquivo,"PosA",PosA);  
    
DOF2_SetInt(arquivo"VirtualWorld",interior[playerid]);  
    
DOF2_SaveFile();  
    }  
    return 
1;  

Suas variбveis esta criadas de forma errada,deveria ser,por exemplo : Float:PosX[MAX_PLAYERS];
e nгo precisa de declarar este monte de new
PHP код:
new Float:PosX
new 
Float:PosY
new 
Float:PosZ
new 
Float:PosA
new 
pVW
PHP код:
new Float:PosX
    
Float:PosY,
    
Float:PosZ
    
Float:PosA,
    
pVW

Fiz tudo o que vocк falou e tambйm nгo foi , continua salvando o virtualworld = 0
Reply
#8

Vocк verificou se o VirtualWorld que o player estб nгo й mesmo 0 ?, estou achando que seu player esta no VirtualWorld 0.
Reply
#9

Quote:
Originally Posted by Lontresca
Посмотреть сообщение
Vocк verificou se o VirtualWorld que o player estб nгo й mesmo 0 ?, estou achando que seu player esta no VirtualWorld 0.
Num tendi ;=; Explique me
Reply
#10

Vocк esta no mundo zero mesmo, por isso esta salvando id do mundo zero.


faзa um teste para verificar

um exemplo usando zcmd
PHP код:
CMD:getmundo(playeridparams[])
{
    
#pragma unused params
    
new MundoPlayerstring[40];
    
MundoPlayer GetPlayerVirtualWorld(playerid);
    
    
format(stringsizeof(string), "Mundo Virtual ID [ %d ]"MundoPlayer);
    
SendClientMessage(playerid, -1string);
    return 
1;

Quando vocк executar esse comando no servidor, vocк vai receber o id do mundo atual que vocк esta.
Reply
#11

Agora nгo tem para onde correr se estiver marcando VirtualWorld como 0 й porque ele estб no VirtualWorld 0 !
PHP код:
public OnPlayerSpawn(playerid) {
    new 
arquivo[40], name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/%sInfos.ini"name);

    if(
DOF2_FileExists(arquivo)) {
        
SetPlayerPos(playeridDOF2_GetFloat(arquivo"PosX"), DOF2_GetFloat(arquivo"PosY"), DOF2_GetFloat(arquivo"PosZ"));
        
SetPlayerFacingAngle(playeridDOF2_GetFloat(arquivo"PosA"));
        
SetPlayerVirtualWorld(playeridDOF2_GetInt(arquivo"VirtualWorld"));
    } else {
        
DOF2_CreateFile(arquivo);
        
SetPlayerPos(playerid1154.0786, -1768.262216.5938);
    }
    return 
1;
}

public 
OnPlayerDisconnect(playerid) {
    new 
arquivo[40], name[MAX_PLAYER_NAME], Float:PosXFloat:PosYFloat:PosZFloat:PosA;
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/%sInfos.ini"name);
    
GetPlayerPos(playeridPosXPosYPosZ);
    
GetPlayerFacingAngle(playeridPosA);

    if(
DOF2_FileExists(arquivo)) {
        
DOF2_SetFloat(arquivo"PosX"PosX);
        
DOF2_SetFloat(arquivo"PosY"PosY);
        
DOF2_SetFloat(arquivo"PosZ"PosZ);
        
DOF2_SetFloat(arquivo"PosA"PosA);
        
DOF2_SetInt(arquivo"VirtualWorld"GetPlayerVirtualWorld(playerid));

        
DOF2_SaveFile();
    }
    return 
1;

Reply
#12

Quote:
Originally Posted by Lontresca
Посмотреть сообщение
Vocк esta no mundo zero mesmo, por isso esta salvando id do mundo zero.


faзa um teste para verificar

um exemplo usando zcmd
PHP код:
CMD:getmundo(playeridparams[])
{
    
#pragma unused params
    
new MundoPlayerstring[40];
    
MundoPlayer GetPlayerVirtualWorld(playerid);
    
    
format(stringsizeof(string), "Mundo Virtual ID [ %d ]"MundoPlayer);
    
SendClientMessage(playerid, -1string);
    return 
1;

Quando vocк executar esse comando no servidor, vocк vai receber o id do mundo atual que vocк esta.
Realmente era isso , eu estava no virtualworld 0 , o que mudou foi o Interior. Agora esta funcionando, sу que se eu saio do servidor , entro dnvo e saio do lugar, vou pra outro lugar

Ex: Entrei na loja de arma de Ls, sai e entrei . Quando fui sair da Loja de arma fui pra SF

Mas isso dai jб envolve criar um sistema de id de propriedades e estou indo com calma . Mesmo assim Obrigado men



Code Final

New's
PHP код:
new Float:PosX[MAX_PLAYERS],
    
Float:PosY[MAX_PLAYERS],
    
Float:PosZ[MAX_PLAYERS],
    
Float:PosA[MAX_PLAYERS],
    
MundoPlayer[MAX_PLAYERS],
    
pInterior[MAX_PLAYERS]; 
OnPlayerSpawn

PHP код:
    // == //
    
new arquivo[40];
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivo40,"Contas/%sInfos.ini",name);
    if(
DOF2_FileExists(arquivo)){
    
PosX[playerid] = DOF2_GetFloat(arquivo"PosX");
    
PosY[playerid] = DOF2_GetFloat(arquivo"PosY");
    
PosZ[playerid] = DOF2_GetFloat(arquivo"PosZ");
    
PosA[playerid] = DOF2_GetFloat(arquivo"PosA");
    
MundoPlayer[playerid] = DOF2_GetInt(arquivo"VirtualWorld");
    
SetPlayerPos(playeridPosX[playerid],PosY[playerid],PosZ[playerid]);
    
SetPlayerFacingAngle(playeridPosA[playerid]);
    
SetPlayerVirtualWorld(playerid,MundoPlayer[playerid]);
    
SetPlayerInterior(playeridpInterior[playerid]);
    }
    else
    {
    
DOF2_CreateFile(arquivo);
    
SetPlayerPos(playerid,1154.0786,-1768.2622,16.5938);
    }
    
// == //
    
return 1;

OnPlayerDisconnect

PHP код:
    //---//
    
new arquivo[40];
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivo40,"Contas/%sInfos.ini",name);
    
GetPlayerPos(playeridPosX[playerid],PosY[playerid],PosZ[playerid]);
    
GetPlayerFacingAngle(playeridPosA[playerid]);
    
MundoPlayer[playerid] = GetPlayerVirtualWorld(playerid);
    
pInterior[playerid] = GetPlayerInterior(playerid);
    if(
DOF2_FileExists(arquivo)){
    
DOF2_SetFloat(arquivo,"PosX",PosX[playerid]);
    
DOF2_SetFloat(arquivo,"PosY",PosY[playerid]);
    
DOF2_SetFloat(arquivo,"PosZ",PosZ[playerid]);
    
DOF2_SetFloat(arquivo,"PosA",PosA[playerid]);
    
DOF2_SetInt(arquivo"VirtualWorld"MundoPlayer[playerid]);
    
DOF2_SetInt(arquivo"Interior"pInterior[playerid]);
    
DOF2_SaveFile();
    }
    
//---//
    
return 1;

Obrigado aos dois que me ajudaram
Reply
#13

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Agora nгo tem para onde correr se estiver marcando VirtualWorld como 0 й porque ele estб no VirtualWorld 0 !
PHP код:
public OnPlayerSpawn(playerid) {
    new 
arquivo[40], name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/%sInfos.ini"name);
    if(
DOF2_FileExists(arquivo)) {
        
SetPlayerPos(playeridDOF2_GetFloat(arquivo"PosX"), DOF2_GetFloat(arquivo"PosY"), DOF2_GetFloat(arquivo"PosZ"));
        
SetPlayerFacingAngle(playeridDOF2_GetFloat(arquivo"PosA"));
        
SetPlayerVirtualWorld(playeridDOF2_GetInt(arquivo"VirtualWorld"));
    } else {
        
DOF2_CreateFile(arquivo);
        
SetPlayerPos(playerid1154.0786, -1768.262216.5938);
    }
    return 
1;
}
public 
OnPlayerDisconnect(playerid) {
    new 
arquivo[40], name[MAX_PLAYER_NAME], Float:PosXFloat:PosYFloat:PosZFloat:PosA;
    
GetPlayerName(playeridnamesizeof(name));
    
format(arquivosizeof(arquivo), "Contas/%sInfos.ini"name);
    
GetPlayerPos(playeridPosXPosYPosZ);
    
GetPlayerFacingAngle(playeridPosA);
    if(
DOF2_FileExists(arquivo)) {
        
DOF2_SetFloat(arquivo"PosX"PosX);
        
DOF2_SetFloat(arquivo"PosY"PosY);
        
DOF2_SetFloat(arquivo"PosZ"PosZ);
        
DOF2_SetFloat(arquivo"PosA"PosA);
        
DOF2_SetInt(arquivo"VirtualWorld"GetPlayerVirtualWorld(playerid));
        
DOF2_SaveFile();
    }
    return 
1;

Ja foi resolvido , Obg
Reply
#14

Agora sу preciso descobrir como juntar isso com algum sistema de login/registro em DOF2 que fica perfeito :>


Aceito ajuda heim ;=;
Reply
#15

Se quiser mandar seu discord e me explicar melhor do que vocк precisa, quem sabe eu posso ajudar
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)