21.10.2018, 23:25
Finalmente estou conseguindo criar um cуdigo que funciona, й o meu sistema de casas, porйm estou com um problema :
o icone da casa e o texto sу aparecem quando eu crio a casa, se eu sair e entrar no servidor nгo aparece
se eu der gmx no servidor nгo aparece
se eu abrir o servidor de novo nгo aparece
porem estб salvando correctamente.
outro erro misterioso й que a palavra ninguйm nгo aparece no dono, no texto 3d
https://i.imgur.com/vpDMpGd.jpg

cуdigo do sistema completo :
estou aceitando voluntбrios para terminar esse sistema cmg.
o icone da casa e o texto sу aparecem quando eu crio a casa, se eu sair e entrar no servidor nгo aparece
se eu der gmx no servidor nгo aparece
se eu abrir o servidor de novo nгo aparece
porem estб salvando correctamente.
outro erro misterioso й que a palavra ninguйm nгo aparece no dono, no texto 3d
https://i.imgur.com/vpDMpGd.jpg

cуdigo do sistema completo :
Код:
#include < a_samp >
#include < sscanf >
#include < dof2 >
#include < zcmd >
#define MAX_HOUSES 100
enum InfoH
{
hID,
Float:hIcone[3],
hPreco,
hDono[120],
hCofre,
hAluguel,
hCarro,
Float:hCarroPos[3],
hInterior,
Text3D:hText,
hPickUp
}
new HInfo[MAX_HOUSES][InfoH];
new arquivo_casa[120];
main(){ print("Sistema de casas");}
public OnGameModeInit()
{
UsePlayerPedAnims();
DisableInteriorEnterExits();
SetGameModeText("HOUSE SCRIPT");
AddPlayerClass(23, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
// Criaзгo de casas automбticamente
for(new i = 0; i < MAX_HOUSES; ++i)
{
Carregar_Casa(i);
if(DOF2_FileExists(arquivo_casa[i]))
{
new str[120];
format(str, sizeof(str), "Casa %d\nDono %s\nAluguel %d", HInfo[i][hID], HInfo[i][hDono], HInfo[i][hAluguel]);
Create3DTextLabel(str, -1, HInfo[i][hIcone][0], HInfo[i][hIcone][1], HInfo[i][hIcone][2], 40.0, 0, 0);
HInfo[i][hPickUp] = CreatePickup(1273, 1, HInfo[i][hIcone][0], HInfo[i][hIcone][1], HInfo[i][hIcone][2], -1);
}
}
return 1;
}
public OnGameModeExit()
{
DOF2_Exit();
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SpawnPlayer(playerid);
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
for(new i = 0; i < MAX_HOUSES; ++i)
{
Salvar_Casa(i);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
for(new i = 0; i < MAX_HOUSES; ++i)
{
if(!DOF2_FileExists(arquivo_casa[i]))
{
new str[120];
format(str, sizeof(str), "Casa %d\nDono %s\nAluguel %d", HInfo[i][hID], HInfo[i][hDono], HInfo[i][hAluguel]);
Create3DTextLabel(str, -1, HInfo[i][hIcone][0], HInfo[i][hIcone][1], HInfo[i][hIcone][2], 40.0, 0, 0);
HInfo[i][hPickUp] = CreatePickup(1273, 1, HInfo[i][hIcone][0], HInfo[i][hIcone][1], HInfo[i][hIcone][2], -1);
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
CMD:criarcasa(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo tem permisгo para usar este comando!");
new id, intr, preco;
if(sscanf(params, "ddd", id, intr, preco)) return SendClientMessage(playerid, -1, "/criarcasa id interior preco");
new Float:Pos[3];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
HInfo[id][hInterior] = intr;
HInfo[id][hID] = id;
HInfo[id][hCofre] = 0;
HInfo[id][hCarro] = 265;
HInfo[id][hPreco] = preco;
HInfo[id][hAluguel] = 0;
HInfo[id][hCarroPos][0] = 0, HInfo[id][hCarroPos][1] = 0, HInfo[id][hCarroPos][2] = 0;
new str[120];
format (str, sizeof(str), "O Administrador %s criou uma casa id %d valor: %d", GetNome(playerid), id, preco);
SendClientMessageToAll(-1, str);
HInfo[id][hIcone][0] = Pos[0], HInfo[id][hIcone][1] = Pos[1], HInfo[id][hIcone][2] = Pos[2];
Criar_Casa(id); // Funciona !
SpawnPlayer(playerid);
return 1;
}
Criar_Casa(casaid)
{
format(arquivo_casa, sizeof(arquivo_casa), "casas/casa %d.ini", HInfo[casaid][hID]); // Cria um arquivo com o id da casa
if(!DOF2_FileExists(arquivo_casa)) // verifica se existe
{
new xty[180];
format(xty, sizeof(xty), "casa %d", HInfo[casaid][hID]); // se nгo existir cria (ex: casa 1 )
DOF2_CreateFile(arquivo_casa); // cria o arquivo serб isso que faltava ?
}
if(DOF2_FileExists(arquivo_casa)) // verifica se existe
{
format(arquivo_casa, sizeof(arquivo_casa), "casas/casa %d.ini", HInfo[casaid][hID]);
DOF2_SetString(arquivo_casa, "Dono", "Ninguйm");
DOF2_SetInt(arquivo_casa, "ID", HInfo[casaid][hID]);
DOF2_SetInt(arquivo_casa, "Preco", HInfo[casaid][hPreco]);
DOF2_SetInt(arquivo_casa, "Aluguel", HInfo[casaid][hAluguel]);
DOF2_SetInt(arquivo_casa, "Carro", HInfo[casaid][hCarro]);
DOF2_SetInt(arquivo_casa, "Interior", HInfo[casaid][hInterior]);
DOF2_SetFloat(arquivo_casa, "Iconex", HInfo[casaid][hIcone][0]);
DOF2_SetFloat(arquivo_casa, "Iconey", HInfo[casaid][hIcone][1]);
DOF2_SetFloat(arquivo_casa, "Iconez", HInfo[casaid][hIcone][2]);
DOF2_SetFloat(arquivo_casa, "CarroPosx", HInfo[casaid][hCarroPos][0]);
DOF2_SetFloat(arquivo_casa, "CarroPosy", HInfo[casaid][hCarroPos][1]);
DOF2_SetFloat(arquivo_casa, "CarroPosz", HInfo[casaid][hCarroPos][2]);
DOF2_SaveFile();
}
}
Carregar_Casa(casaid)
{
format(arquivo_casa, sizeof(arquivo_casa), "casas/%d.ini", HInfo[casaid][hID]);
new txt[120];
format(txt, sizeof(txt), "%s", DOF2_GetString(arquivo_casa, "Dono"));
HInfo[casaid][hDono] = txt;
HInfo[casaid][hID] = DOF2_GetInt(arquivo_casa, "ID");
HInfo[casaid][hPreco] = DOF2_GetInt(arquivo_casa, "Preco");
HInfo[casaid][hAluguel] = DOF2_GetInt(arquivo_casa, "Aluguel");
HInfo[casaid][hCarro] = DOF2_GetInt(arquivo_casa, "Carro");
HInfo[casaid][hInterior] = DOF2_GetInt(arquivo_casa, "Interior");
HInfo[casaid][hIcone][0] = DOF2_GetFloat(arquivo_casa, "Iconex");
HInfo[casaid][hIcone][1] = DOF2_GetFloat(arquivo_casa, "Iconey");
HInfo[casaid][hIcone][2] = DOF2_GetFloat(arquivo_casa, "Iconez");
HInfo[casaid][hCarroPos][0] = DOF2_GetFloat(arquivo_casa, "CarroPosx");
HInfo[casaid][hCarroPos][1] = DOF2_GetFloat(arquivo_casa, "CarroPosy");
HInfo[casaid][hCarroPos][2] = DOF2_GetFloat(arquivo_casa, "CarroPosz");
}
Salvar_Casa(casaid)
{
format(arquivo_casa, sizeof(arquivo_casa), "casas/%d.ini", HInfo[casaid][hID]);
DOF2_SetInt(arquivo_casa, "Dono", HInfo[casaid][hDono]);
DOF2_SetInt(arquivo_casa, "ID", HInfo[casaid][hID]);
DOF2_SetInt(arquivo_casa, "Preco", HInfo[casaid][hPreco]);
DOF2_SetInt(arquivo_casa, "Aluguel", HInfo[casaid][hAluguel]);
DOF2_SetInt(arquivo_casa, "Carro", HInfo[casaid][hCarro]);
DOF2_SetInt(arquivo_casa, "Interior", HInfo[casaid][hInterior]);
DOF2_SetFloat(arquivo_casa, "Iconex", HInfo[casaid][hIcone][0]);
DOF2_SetFloat(arquivo_casa, "Iconey", HInfo[casaid][hIcone][1]);
DOF2_SetFloat(arquivo_casa, "Iconez", HInfo[casaid][hIcone][2]);
DOF2_SetFloat(arquivo_casa, "CarroPosx", HInfo[casaid][hCarroPos][0]);
DOF2_SetFloat(arquivo_casa, "CarroPosy", HInfo[casaid][hCarroPos][1]);
DOF2_SetFloat(arquivo_casa, "CarroPosz", HInfo[casaid][hCarroPos][2]);
DOF2_SaveFile();
}
stock GetNome(playerid)
{
new pNome[MAX_PLAYER_NAME];
GetPlayerName(playerid, pNome, 24);
return pNome;
}


