SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 17/07/2017, 02:03 AM   #1
PedroH
Huge Clucker
 
Join Date: Jul 2017
Posts: 208
Reputation: 2
Default DOF2

alguem pode me ajudar com isso? eu tou tentando salvar a sede/fome do jogador mas eu nunca salvei algo em float, nao sei se tou colocando as linhas certas! alguem da uma olhadinha ai pra mim pfv?

Quote:
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(705) : warning 213: tag mismatch
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(705) : error 032: array index out of bounds (variable "Player")
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(722) : warning 213: tag mismatch
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(722) : error 032: array index out of bounds (variable "Player")
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(723) : warning 213: tag mismatch
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(723) : error 032: array index out of bounds (variable "Player")
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(723) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Quote:
stock SavePlayer(playerid)
{
if( DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
{

DOF2_CreateFile(GetPlayerArquivo(playerid));

//DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin", Player[ playerid ][ Skin ] );
DOF2_SetInt( GetPlayerArquivo( playerid ), "Score", Player[ playerid ][ Score ] );
DOF2_SetInt( GetPlayerArquivo( playerid ), "Dinheiro", GetPlayerMoney( playerid ));
DOF2_SetInt( GetPlayerArquivo( playerid ), "Admin", Player[ playerid ][ Admin ] );
DOF2_SetInt( GetPlayerArquivo( playerid ), "AliveTime", Player[playerid][pDTime]);
DOF2_SetInt( GetPlayerArquivo( playerid ), "Sede", Player[playerid][pSede]);

DOF2_SaveFile();

}
return 1;
}

stock LoadPlayer(playerid)
{
if( DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
{
//Player[ playerid ][ Skin ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Skin" );
Player[ playerid ][ Score ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Score" );
Player[ playerid ][ Dinheiro ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Dinheiro" );
Player[ playerid ][ Admin ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Admin" );
Player[ playerid ][ pDTime ] = DOF2_GetInt( GetPlayerArquivo(playerid), "Alive Time");
Player[ playerid ][ pSede ] = FloatOF2_GetFloat(GetPlayerArquivo(playerid),"Se de");
SetPlayerScore( playerid, Player[ playerid ][ Score ] );
//SetPlayerSkin(playerid, Player[ playerid ][ Skin ] );

}
return 1;
}
2. deem uma olhada no alive time tbm pfv, no arquivo apareque o tempo certo do alive time, mas quando entro no sv ele zera!
PedroH is offline   Reply With Quote
Old 17/07/2017, 05:17 PM   #2
NathanT
Big Clucker
 
Join Date: Jul 2016
Location: Brazil
Posts: 172
Reputation: 13
Default Re: DOF2

Se você salva a sede como um número inteiro, você está pegando seu valor como se fosse Float, caso o número que atribui o nível de sede do jogador for inteiro, mude para:
Code:
Player[ playerid ][ pSede ] = DOF2_GetInt(GetPlayerArquivo(playerid),"Sede");
Já ao segundo erro, você está colocando espaços na string correspondente ao tempo vivo do jogador (também acontece quando você carrega a sede do jogador, mas já arrumei acima ).
Code:
DOF2_SetInt( GetPlayerArquivo( playerid ), "AliveTime", Player[playerid][pDTime]); //Você salva com "AliveTime"
Player[ playerid ][ pDTime ] = DOF2_GetInt( GetPlayerArquivo(playerid), "Alive Time"); //Mas tenta pegar seu valor com "Alive Time".
Percebe o erro? O correto seria:
Code:
Player[ playerid ][ pDTime ] = DOF2_GetInt( GetPlayerArquivo(playerid), "AliveTime");
------
A propósito, você está fazendo algo meio desnecessário no início do código, criando outro arquivo (mesmo que este substitua o anterior) já tendo um existente, irei lhe passar o algoritmo corrigido abaixo:
PHP Code:
stock SavePlayer(playerid)
{
    if(!
DOF2_FileExistsGetPlayerArquivoplayerid ) ) )
        
DOF2_CreateFile(GetPlayerArquivo(playerid));

    
//DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin", Player[ playerid ][ Skin ] );
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Score"Playerplayerid ][ Score ] );
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Dinheiro"GetPlayerMoneyplayerid ));
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Admin"Playerplayerid ][ Admin ] );
    
DOF2_SetIntGetPlayerArquivoplayerid ), "AliveTime"Player[playerid][pDTime]);
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Sede"Player[playerid][pSede]);
    
DOF2_SaveFile();
    return 
1;

Só será preciso criar um novo arquivo caso não existir um, né?
Só mais uma coisa, se você está usando estas funções, não precisa colocar "stock" em seu nome
NathanT is offline   Reply With Quote
Old 17/07/2017, 06:11 PM   #3
OtimoJogo
Big Clucker
 
Join Date: Jul 2016
Posts: 148
Reputation: 2
Default Respuesta: DOF2

Code:
DOF2_SetFloat(file[],key[],Float:value);  //função para Salvar Em Float

DOF2_GetFloat(file[], key[]); //Função para pegar(getar) uma variavel Float
OtimoJogo is offline   Reply With Quote
Old 17/07/2017, 06:46 PM   #4
PedroH
Huge Clucker
 
Join Date: Jul 2017
Posts: 208
Reputation: 2
Default Re: DOF2

Quote:
Originally Posted by Manorango View Post
Se você salva a sede como um número inteiro, você está pegando seu valor como se fosse Float, caso o número que atribui o nível de sede do jogador for inteiro, mude para:
Code:
Player[ playerid ][ pSede ] = DOF2_GetInt(GetPlayerArquivo(playerid),"Sede");
Já ao segundo erro, você está colocando espaços na string correspondente ao tempo vivo do jogador (também acontece quando você carrega a sede do jogador, mas já arrumei acima ).
Code:
DOF2_SetInt( GetPlayerArquivo( playerid ), "AliveTime", Player[playerid][pDTime]); //Você salva com "AliveTime"
Player[ playerid ][ pDTime ] = DOF2_GetInt( GetPlayerArquivo(playerid), "Alive Time"); //Mas tenta pegar seu valor com "Alive Time".
Percebe o erro? O correto seria:
Code:
Player[ playerid ][ pDTime ] = DOF2_GetInt( GetPlayerArquivo(playerid), "AliveTime");
------
A propósito, você está fazendo algo meio desnecessário no início do código, criando outro arquivo (mesmo que este substitua o anterior) já tendo um existente, irei lhe passar o algoritmo corrigido abaixo:
PHP Code:
stock SavePlayer(playerid)
{
    if(!
DOF2_FileExistsGetPlayerArquivoplayerid ) ) )
        
DOF2_CreateFile(GetPlayerArquivo(playerid));

    
//DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin", Player[ playerid ][ Skin ] );
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Score"Playerplayerid ][ Score ] );
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Dinheiro"GetPlayerMoneyplayerid ));
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Admin"Playerplayerid ][ Admin ] );
    
DOF2_SetIntGetPlayerArquivoplayerid ), "AliveTime"Player[playerid][pDTime]);
    
DOF2_SetIntGetPlayerArquivoplayerid ), "Sede"Player[playerid][pSede]);
    
DOF2_SaveFile();
    return 
1;

Só será preciso criar um novo arquivo caso não existir um, né?
Só mais uma coisa, se você está usando estas funções, não precisa colocar "stock" em seu nome
%.0i e oque?

format(str, sizeof(str), "%.0i%", pInfo[playerid][pSede]);
PlayerTextDrawSetString(playerid, PLAYER_HUD[playerid][13], str);
PedroH is offline   Reply With Quote
Old 18/07/2017, 12:14 AM   #5
NathanT
Big Clucker
 
Join Date: Jul 2016
Location: Brazil
Posts: 172
Reputation: 13
Default Re: DOF2

Não lembro ao certo o que isto faz, mas seu uso teoricamente é para formatar os algarismos de um número de tal modo. Exemplo:
PHP Code:
main() {
    new 
str[40], val 1;
    
format(strsizeof(str), "%03d"val); //format(str, sizeof(str), "%03i", val) é a mesma coisa, o especificador "d" e "i" equivalem a um numero inteiro
    
printf("%s"str);

Isto irá imprimir "001" na tela
NathanT is offline   Reply With Quote
Old 18/07/2017, 04:00 PM   #6
PedroH
Huge Clucker
 
Join Date: Jul 2017
Posts: 208
Reputation: 2
Default Re: DOF2

fiz assim:

Quote:
stock SavePlayer(playerid)
{
if(!DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
DOF2_CreateFile(GetPlayerArquivo(playerid));

//DOF2_SetInt( GetPlayerArquivo( playerid ), "Skin", Player[ playerid ][ Skin ] );
DOF2_SetInt( GetPlayerArquivo( playerid ), "Score", Player[ playerid ][ Score ] );
DOF2_SetInt( GetPlayerArquivo( playerid ), "Dinheiro", GetPlayerMoney( playerid ));
DOF2_SetInt( GetPlayerArquivo( playerid ), "Admin", Player[ playerid ][ Admin ] );
DOF2_SetInt( GetPlayerArquivo( playerid ), "AliveTime", Player[playerid][pDTime]);
DOF2_SetInt( GetPlayerArquivo( playerid ), "pSexo", Player[playerid][pSexo]);
DOF2_SetInt( GetPlayerArquivo( playerid ),"pSede", pInfo[playerid][pSede]);

DOF2_SaveFile();
return 1;
}

stock LoadPlayer(playerid)
{
if( DOF2_FileExists( GetPlayerArquivo( playerid ) ) )
{
//Player[ playerid ][ Skin ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Skin" );
Player[ playerid ][ Score ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Score" );
Player[ playerid ][ Dinheiro ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Dinheiro" );
Player[ playerid ][ Admin ] = DOF2_GetInt( GetPlayerArquivo( playerid ), "Admin" );
Player[ playerid ][ pDTime ] = DOF2_GetInt( GetPlayerArquivo(playerid), "AliveTime");
Player[ playerid ][ pSexo ] = DOF2_GetInt( GetPlayerArquivo(playerid), "pSexo");
Player[ playerid ][ pSede ] = DOF2_GetInt( GetPlayerArquivo(playerid),"pSede");

SetPlayerScore( playerid, Player[ playerid ][ Score ] );
GivePlayerMoney( playerid, Player[ playerid] [ Dinheiro ] );
//SetPlayerSkin(playerid, Player[ playerid ][ Skin ] );

}
return 1;
}
mas da esse warn:
Quote:
D:\samp037_svr_R2-1-1_win32\gamemodes\survive1.pwn(835) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
PedroH is offline   Reply With Quote
Old 18/07/2017, 06:48 PM   #7
NathanT
Big Clucker
 
Join Date: Jul 2016
Location: Brazil
Posts: 172
Reputation: 13
Default Re: DOF2

Algum destes dados não é do tipo inteiro.
O que há nas linhas 835 e 836? Provavelmente algum dado dai é do tipo Float mas não estou sabendo qual possa ser.
NathanT is offline   Reply With Quote
Old 18/07/2017, 07:10 PM   #8
PedroH
Huge Clucker
 
Join Date: Jul 2017
Posts: 208
Reputation: 2
Default Re: DOF2

a linha q ta dando warning e essa:

Quote:
Player[ playerid ][ pSede ] = DOF2_GetInt( GetPlayerArquivo(playerid),"pSede");
esse e o sistema que eu uso:
Quote:
enum Player_Data
{
bool: pConectado,
pIdioma,
pAdmin,
pAviso,
bool: pMute,
bool: pBlockPM,
pChat,
pBackpack,
pSlots,
pFome,
pSede,
pRadiation,
pReputation,
pExp,
pLevel,
pRespawn,
pSangrando,
pQuebrado,
pTemGPS,
pTemColete,
pTemCapacete
};

new pInfo[MAX_PLAYERS][Player_Data];
Quote:
public OnPlayerUpdate(playerid)
{
if(!IsPlayerNPC(playerid) && IsPlayerConnected(playerid))
{
if(pInfo[playerid][pConectado] == true)
{
new str[200];

format(str, sizeof(str), "[~y~%s~w~]", PegarNome(playerid));
PlayerTextDrawSetString(playerid, PLAYER_HUD[playerid][22], str);

format(str, sizeof(str), "%.0i%", pInfo[playerid][pFome]);
PlayerTextDrawSetString(playerid, PLAYER_HUD[playerid][9], str);

format(str, sizeof(str), "%.0i%", pInfo[playerid][pSede]);
PlayerTextDrawSetString(playerid, PLAYER_HUD[playerid][13], str);


if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
format(str, sizeof(str), "Fuel: ~r~%i~n~~w~Engine: %s", vInfo[vehicleid][vCombustivel], vInfo[vehicleid][vTemMotor] ? ("~g~Yes") : ("~r~None"));
PlayerTextDrawSetString(playerid, VEH_HUD[playerid][3], str);
}
}
}
return 1;
}
Quote:
public AtualizarSede()
{
foreach(Player, i)
{
if(pInfo[i][pConectado] == true && IsPlayerConnected(i) && !IsPlayerNPC(i))
{
if(pInfo[i][pSede] > 0) pInfo[i][pSede]--;
if(pInfo[i][pSede] == 5) SendClientMessage(i, COR_AMARELO, Translate(pInfo[i][pIdioma], "[Sede]: Voce esta ficando com Sede, beba alguma coisa ou comecara a perder vida.",
"[THIRST]: You're getting thirsty, drink something or will begin to lose health."));
if(pInfo[i][pSede] == 0)
{
new Float:health;
GetPlayerHealth(i, health), SetPlayerHealth(i, health-10);
SetPlayerDrunkLevel(i, 4500);
}
}
}
return 1;
}
Quote:
stock ResetarPlayer(playerid)
{
ResetPlayerInventory(playerid);
ResetPlayerWeapons(playerid);

if(pInfo[playerid][pSangrando] == 1) KillTimer(SangueTimer[playerid]);

pInfo[playerid][pChat] = 0;
pInfo[playerid][pQuebrado] = 0;
pInfo[playerid][pSangrando] = 0;
pInfo[playerid][pBackpack] = 5;
pInfo[playerid][pFome] = 80;
pInfo[playerid][pSede] = 80;
pInfo[playerid][pRadiation] = 0;

AddItem(playerid, "Water Canteen", 1);
AddItem(playerid, "Bandage", 1);
return 1;
}
PedroH is offline   Reply With Quote
Old 18/07/2017, 10:21 PM   #9
NathanT
Big Clucker
 
Join Date: Jul 2016
Location: Brazil
Posts: 172
Reputation: 13
Default Re: DOF2

Aparentemente não há nada fora do comum, mas tem certeza de que a array correspondente ao enumerador é "Player" ao invés de "pInfo"? O correto não seria "pInfo[playerid][pSede] = DOF2_GetInt(...)"?
NathanT is offline   Reply With Quote
Old 19/07/2017, 01:25 AM   #10
PedroH
Huge Clucker
 
Join Date: Jul 2017
Posts: 208
Reputation: 2
Default Re: DOF2

agora foi, muito obrigado! so mais uma coisa, e os items do inventario? oque devo fazer pra salva-los?
PedroH is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] DOF2 ZeZin Português/Portuguese 8 12/04/2015 10:02 PM
[Help] DOF2 Lucas_HenryK Scripting Help 1 05/02/2014 06:27 AM
[Off] DOF2 BielCOP Português/Portuguese 8 22/10/2013 03:03 PM
[Ajuda] DOF2 BaianoIn Português/Portuguese 2 21/09/2013 06:18 PM
[Ajuda] DOF2 vitorvlv Português/Portuguese 2 01/03/2013 10:17 PM


All times are GMT. The time now is 11:34 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.