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; }