11/01/2025 09:23
(Esta mensagem foi modificada pela última vez a: 11/01/2025 18:48 por xbruno1000x.)
(11/01/2025 03:16)Enila182 Escreveu: Olá tenta assim:
Código:#define FILTERSCRIPT
#include <a_samp>
#include <dini>
#include <sscanf2>
new file[256];
enum WepData
{
WeaponID,
Ammo
};
new WeaponInfo[MAX_PLAYERS][12][WepData];
#if defined FILTERSCRIPT
#else
#endif
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "weapons/%s.ini", name);
if (!dini_Exists(file))
{
dini_Create(file);
for (new i = 0; i < 12; i++)
{
format(file, sizeof(file), "Weapon%d_ID", i + 1);
dini_IntSet(file, file, WeaponInfo[playerid][i][WeaponID] = 0);
format(file, sizeof(file), "Weapon%d_Ammo", i + 1);
dini_IntSet(file, file, WeaponInfo[playerid][i][Ammo] = 0);
}
}
else
{
/*--- Carregando dados existentes ---*/
for (new i = 0; i < 12; i++)
{
format(file, sizeof(file), "Weapon%d_ID", i + 1);
WeaponInfo[playerid][i][WeaponID] = dini_Int(file, file);
format(file, sizeof(file), "Weapon%d_Ammo", i + 1);
WeaponInfo[playerid][i][Ammo] = dini_Int(file, file);
}
}
return 1;
}
/*--- Fornecendo armas ao jogador ---*/
public OnPlayerSpawn(playerid)
{
for (new i = 0; i < 12; i++)
{
GivePlayerWeapon(playerid, WeaponInfo[playerid][i][WeaponID], WeaponInfo[playerid][i][Ammo]);
}
SetTimerEx("SavePlayerWeapons", 2000, true, "i", playerid);
return 1;
}
forward SavePlayerWeapons(playerid);
public SavePlayerWeapons(playerid)
{
if (!IsPlayerConnected(playerid)) return 0;
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "weapons/%s.ini", name);
/*---- Salvando dados das armas ---*/
for (new i = 0; i < 12; i++)
{
GetPlayerWeaponData(playerid, i + 1, WeaponInfo[playerid][i][WeaponID], WeaponInfo[playerid][i][Ammo]);
format(file, sizeof(file), "Weapon%d_ID", i + 1);
dini_IntSet(file, file, WeaponInfo[playerid][i][WeaponID]);
format(file, sizeof(file), "Weapon%d_Ammo", i + 1);
dini_IntSet(file, file, WeaponInfo[playerid][i][Ammo]);
}
return 1;
}
obg enila pela ajuda , mas ainda sim nao deu certo entao refiz de outra maneira e agora consegui esta salvando vou deixar aqui para quem precisar usar e nao sabe fazer obg
Código:
#define FILTERSCRIPT
#include <a_samp>
#include <dini>
new file[256];
enum WepData
{
WeaponID,
Ammo
};
new WeaponInfo[MAX_PLAYERS][12][WepData];
#if defined FILTERSCRIPT
#else
#endif
public OnPlayerDisconnect(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "weapons/%s.ini", name);
// Cria o arquivo de armas se não existir
if (!dini_Exists(file))
{
dini_Create(file);
}
// Salva os dados das armas
for (new i = 0; i < 12; i++)
{
// Salva corretamente as chaves e valores
new weaponKey[32], ammoKey[32];
// Formata as chaves para as armas e munição
format(weaponKey, sizeof(weaponKey), "Weapon%d_ID", i + 1);
format(ammoKey, sizeof(ammoKey), "Weapon%d_Ammo", i + 1);
// Salva o ID da arma
dini_IntSet(file, weaponKey, WeaponInfo[playerid][i][WeaponID]);
// Salva a munição da arma
dini_IntSet(file, ammoKey, WeaponInfo[playerid][i][Ammo]);
}
return 1;
}
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "weapons/%s.ini", name);
if (!dini_Exists(file))
{
dini_Create(file);
// Inicializa os dados das armas caso o arquivo não exista
for (new i = 0; i < 12; i++)
{
WeaponInfo[playerid][i][WeaponID] = 0;
WeaponInfo[playerid][i][Ammo] = 0;
}
}
else
{
// Carrega os dados das armas do arquivo
for (new i = 0; i < 12; i++)
{
new weaponKey[32], ammoKey[32];
// Formata as chaves para as armas e munição
format(weaponKey, sizeof(weaponKey), "Weapon%d_ID", i + 1);
format(ammoKey, sizeof(ammoKey), "Weapon%d_Ammo", i + 1);
// Carrega o ID da arma
WeaponInfo[playerid][i][WeaponID] = dini_Int(file, weaponKey);
// Carrega a munição da arma
WeaponInfo[playerid][i][Ammo] = dini_Int(file, ammoKey);
}
}
return 1;
}
public OnPlayerSpawn(playerid)
{
// Dá as armas para o jogador
for (new i = 0; i < 12; i++)
{
GivePlayerWeapon(playerid, WeaponInfo[playerid][i][WeaponID], WeaponInfo[playerid][i][Ammo]);
}
// Salva as armas após o spawn
SetTimerEx("SavePlayerWeapons", 2000, true, "i", playerid);
return 1;
}
forward SavePlayerWeapons(playerid);
public SavePlayerWeapons(playerid)
{
if (!IsPlayerConnected(playerid)) return 0;
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "weapons/%s.ini", name);
// Salvando os dados das armas
for (new i = 0; i < 12; i++)
{
// Obtém os dados de armas do jogador
GetPlayerWeaponData(playerid, i + 1, WeaponInfo[playerid][i][WeaponID], WeaponInfo[playerid][i][Ammo]);
new weaponKey[32], ammoKey[32];
// Formata as chaves para as armas e munição
format(weaponKey, sizeof(weaponKey), "Weapon%d_ID", i + 1);
format(ammoKey, sizeof(ammoKey), "Weapon%d_Ammo", i + 1);
// Salva o ID da arma
dini_IntSet(file, weaponKey, WeaponInfo[playerid][i][WeaponID]);
// Salva a munição da arma
dini_IntSet(file, ammoKey, WeaponInfo[playerid][i][Ammo]);
}
return 1;
}