/*
Nescessбrio criar pasta casas na scriptfiles
*/
#include < a_samp >
#include < sscanf >
#include < dof2 >
#include < zcmd >
#include < streamer >
#define MAX_HOUSES 100
#define MAX_CARROS 100
#define PASTA_CASAS "casas/casa %d.ini"
#define PASTA_CARROS "casas/carro %d.ini"
enum InfoH
{
hID,
Float:hIcone[3],
hPreco,
hDono[25],
hCofre,
hAluguel,
Float:hCarroPos[4],
hInterior,
Text3D:hText,
hPickUp,
hTemDono,
hCarroCor[2],
hMapIcon
}
enum vInfoH
{
cID,
cCasa,
cDono[25],
Float:cPos[4],
cModelo,
Text3D:cText,
cCor[2]
}
// ----------------------------------------------------------------------------- >>
new cInfo[MAX_CARROS][vInfoH];
new HInfo[MAX_HOUSES][InfoH];
new Criar_Carro[MAX_CARROS]; // variavel que cria o carro da casa
new bool:countH[MAX_PLAYERS char];
new EstaEmCasa[MAX_PLAYERS]; // verificaзгo OnPlayerPickUpPickup
new arquivo_casa[120];
new arquivo_hcarro[120];
// ----------------------------------------------------------------------------- >>
forward DestroyCarCommandTest(vehicleid);
forward AntFloodH(playerid); // verificaзгo OnPlayerPickUpPickup
forward Atualizar_Carros(vehicleid);
forward Atualizar_Casas(casaid);
// ----------------------------------------------------------------------------- >>
main() { print("\nSistema de casas\nBy Lucas Emmanuel\n"); }
public OnGameModeInit()
{
UsePlayerPedAnims();
DisableInteriorEnterExits();
SetGameModeText("HOUSE SCRIPT");
AddPlayerClass(23, 2192.3462,1676.3215,12.3672, 269.1425, 0, 0, 0, 0, 0, 0);
/*
AddStaticVehicle(560,2168.6887,1705.3904,10.7514,153.3162,9,39);
AddStaticVehicle(541,2170.3594,1704.9673,10.7096,153.3650,58,8);
AddStaticVehicle(541,2158.5830,1709.9849,10.6717,154.0867,58,8);
AddStaticVehicle(402,2158.3157,1660.8107,10.8557,45.9362,13,13);
AddStaticVehicle(442,2163.9023,1707.6172,10.9687,326.6677,11,105);
AddStaticVehicle(402,2157.0203,1725.1031,10.9211,164.7455,6,1);
AddStaticVehicle(442,2159.6914,1724.4752,10.8206,166.5195,11,105);
AddStaticVehicle(560,2162.2883,1723.7815,10.7521,164.3699,9,39);
AddStaticVehicle(541,2164.6753,1723.3394,10.6822,165.2697,58,8);
*/
for(new i = 0; i < MAX_HOUSES; ++i) { Carregar_Casa(i); }
for(new i = 0; i < MAX_CARROS; ++i) { Carregar_Carro(i); }
return 1;
}
// ----------------------------------------------------------------------------- >>
public OnGameModeExit()
{
for(new i = 0; i < MAX_HOUSES; ++i) { Salvar_Casa(i); }
for(new i = 0; i < MAX_CARROS; ++i) { Salvar_Carro (i); }
DOF2_Exit();
return 1;
}
CMD:carregar(playerid)
{
for(new i = 0; i < MAX_HOUSES; ++i) { Carregar_Casa(i); }
for(new i = 0; i < MAX_CARROS; ++i) { Carregar_Carro(i); }
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SpawnPlayer(playerid);
return 1;
}
/*
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_YES )
{
for(new i = 0; i < MAX_HOUSES; ++i)
{
if (IsPlayerInRangeOfPoint(playerid, 2, HInfo[i][hIcone][0], HInfo[i][hIcone][1], HInfo[i][hIcone][2]));
{
new str[120];
format(str, sizeof(str),"Vocк entrou na casa %d", HInfo[i][hID]);
SendClientMessage(playerid, -1, str);
}
}
}
return 1;
}
*/
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i = 0; i < MAX_HOUSES; ++i)
{
if(pickupid == HInfo[i][hPickUp]) // verifica corretamente a casa que o player estб
{
if(countH[playerid] == false) // pra nгo ficar floodando a mensagem
{
// SetPlayerInterior(playerid, HInfo[i][hInterior]);
EstaEmCasa[playerid] = HInfo[i][hID];
new str[120];
// format(str, sizeof(str), "Vocк estб na casa %d", HInfo[i][hID]);
format(str, sizeof(str), "Vocк estб na casa %d", EstaEmCasa[playerid]); //
SendClientMessage(playerid, -1, str);
countH[playerid] = true;
SetTimerEx("AntFloodH", 1000 * 10, false, "i", playerid);
break;
}
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
Atualizar_Carros(vehicleid);
// GetVehicleDistanceFromPoint(importante )
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
SetVehicleToRespawn(vehicleid);
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
// ----------------------------------------------------------------------------- >>
CMD:criarcasa(playerid, params[])
{
// if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo tem permisгo para usar este comando!");
new intr, preco;
if(sscanf(params, "dd", intr, preco)) return SendClientMessage(playerid, -1, "/criarcasa [interior - preco]");
new Float:Pos[3];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
for(new casaid = 0; casaid < MAX_HOUSES; casaid++)
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, casaid);
if(!DOF2_FileExists(arquivo_casa))
{
format(HInfo[casaid][hDono], 25, "Ninguem");
HInfo[casaid][hInterior] = intr;
HInfo[casaid][hID] = casaid;
HInfo[casaid][hTemDono] = 0;
HInfo[casaid][hCofre] = 0;
HInfo[casaid][hPreco] = preco;
HInfo[casaid][hAluguel] = 0;
HInfo[casaid][hIcone][0] = Pos[0];
HInfo[casaid][hIcone][1] = Pos[1];
HInfo[casaid][hIcone][2] = Pos[2];
new str[120];
format(str, sizeof(str), "O Administrador %s criou uma casa id %d valor: %d", GetNome(playerid), casaid, preco);
SendClientMessageToAll(-1, str);
Criar_Casa(casaid);
format(str, sizeof(str), "Casa %d\nDono %s\nPreзo %d\nAluguel %d", HInfo[casaid][hID], HInfo[casaid][hDono], HInfo[casaid][hPreco], HInfo[casaid][hAluguel]);
HInfo[casaid][hText] = Create3DTextLabel(str, -1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 20.0, 0, 0);
HInfo[casaid][hPickUp] = CreatePickup(1273, 1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], -1);
HInfo[casaid][hMapIcon] = CreateDynamicMapIcon(HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 31, -1, -1, -1, -1, 50.0);
break;
}
}
return 1;
}
// ----------------------------------------------------------------------------- >>
CMD:destruircasa(playerid, params[]) // comando funcional
{
// if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo tem permisгo para usar este comando!");
new id;
if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "/destruircasa [id casa]");
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, id);
if(!DOF2_FileExists(arquivo_casa))
{
SendClientMessage(playerid, -1, "Esta casa nгo existe");
}
else
{
new str[120];
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, id);
DOF2_RemoveFile(arquivo_casa);
format(str, sizeof(str), "Vocк excluiu a casa %d", id);
SendClientMessage(playerid, -1, str);
Atualizar_Casas(id);
}
return 1;
}
// ---------------------------------------------------------------------------- >>
CMD:darcasa(playerid, params[]) // Novo comando em faze de testes
{
// if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo tem permisгo para usar este comando!");
new idp, idh;
if(sscanf(params, "dd", idp, idh)) return SendClientMessage(playerid, -1, "/darcasa [id] [id casa]");
if(!IsPlayerConnected(idp)) return SendClientMessage(playerid, -1, "Jogador nгo conectado");
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, idh);
if(!DOF2_FileExists(arquivo_casa))
{
SendClientMessage(playerid, -1, "Esta casa nгo existe");
}
else
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, idh);
new nomep[25];
GetPlayerName(idp, nomep, 25);
new str[120], stx[120];
format (str, sizeof(str), "Vocк deu a casa %d para o jogador %s", HInfo[idh][hID], nomep);
format (stx, sizeof(stx), "O administrador %s te deu a casa %d", GetNome(playerid), HInfo[idh][hID]);
SendClientMessage(playerid, -1, str);
SendClientMessage(idp, -1, stx);
HInfo[idh][hDono] = nomep;
HInfo[idh][hTemDono] = 1;
Salvar_Casa(idh);
Atualizar_Casas(idh);
}
return 1;
}
// ----------------------------------------------------------------------------- >>
CMD:soudono(playerid, params[]) // Novo comando funcional de testes
{
// if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo tem permisгo para usar este comando!");
new id;
if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "/soudono [id casa]");
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, id);
if(!DOF2_FileExists(arquivo_casa))
{
SendClientMessage(playerid, -1, "Esta casa nгo existe");
}
else
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, id);
new nomep[25];
GetPlayerName(playerid, nomep, 25);
HInfo[id][hDono] = nomep;
new str[120];
format (str, sizeof(str), "Vocк agora й dono da casa %d", HInfo[id][hID]);
SendClientMessage(playerid, -1, str);
HInfo[id][hTemDono] = 1;
Salvar_Casa(id);
Atualizar_Casas(id);
}
return 1;
}
// ----------------------------------------------------------------------------- >>
CMD:carrocasa(playerid, params[])
{
// if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo tem permisгo para usar este comando!");
new id_house, modelo, carro, cor[2];
if(sscanf(params, "dddd", id_house, modelo, cor[0], cor[1])) return SendClientMessage(playerid, -1, "/carrocasa [id casa] [id carro] [cor 1] [cor 2]");
if(modelo >= 400 && modelo <= 611)
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, id_house);
if(!DOF2_FileExists(arquivo_casa))
{
SendClientMessage(playerid, -1, "Esta casa nгo existe");
}
else
{
new Float:Pos[4];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Pos[3]);
carro = CreateVehicle(modelo, Pos[0], Pos[1], Pos[2], Pos[3], cor[0], cor[1], false, 0);
LinkVehicleToInterior(carro, GetPlayerInterior(playerid));
SetVehicleVirtualWorld(carro, GetPlayerVirtualWorld(playerid));
PutPlayerInVehicle(playerid, carro, 0);
new player_carro_id = GetPlayerVehicleID(playerid);
cInfo[player_carro_id][cID] = player_carro_id; // ID do carro da casa
cInfo[player_carro_id][cCasa] = id_house; // ID da casa do carro
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, id_house);
format(cInfo[player_carro_id][cDono], 25, "%s", DOF2_GetString(arquivo_casa, "Dono"));// Nome do dono do carro vai ser
DOF2_SetString(arquivo_hcarro, "Dono", cInfo[player_carro_id][cDono]);
cInfo[player_carro_id][cPos][0] = Pos[0];
cInfo[player_carro_id][cPos][1] = Pos[1];
cInfo[player_carro_id][cPos][2] = Pos[2];
cInfo[player_carro_id][cPos][3] = Pos[3];
cInfo[player_carro_id][cModelo] = modelo;
cInfo[player_carro_id][cCasa] = id_house;
cInfo[player_carro_id][cCor][0] = cor[0];
cInfo[player_carro_id][cCor][0] = cor[1];
new xx[120];
format (xx, sizeof(xx), "vocк criou o carro %d para a casa %d nesta posicao. para trocar use /salvarcarrocasa", modelo, id_house);
SendClientMessage(playerid, -1, xx);
for(new carroid = 0; carroid < MAX_CARROS; ++carroid)
{
format(arquivo_hcarro, sizeof(arquivo_hcarro), PASTA_CARROS, carroid);
if(!DOF2_FileExists(arquivo_hcarro))
{
format(arquivo_hcarro, sizeof(arquivo_hcarro), PASTA_CARROS, cInfo[carroid][cID]);
DOF2_CreateFile(arquivo_hcarro);
DOF2_SetInt(arquivo_hcarro, "Casa", cInfo[carroid][cCasa]);
DOF2_SetInt(arquivo_hcarro, "Modelo", cInfo[carroid][cModelo]);
DOF2_SetString(arquivo_hcarro, "Dono", cInfo[carroid][cDono]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosx", cInfo[carroid][cPos][0]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosy", cInfo[carroid][cPos][1]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosz", cInfo[carroid][cPos][2]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosA", cInfo[carroid][cPos][3]); // Angulo do carro
DOF2_SetInt(arquivo_hcarro, "CarroCor1", cInfo[carroid][cCor][0]);
DOF2_SetInt(arquivo_hcarro, "CarroCor2", cInfo[carroid][cCor][1]);
DOF2_SaveFile();
Atualizar_Carros(player_carro_id);
// Atualizar_Carros(carroid);
break;
}
}
}
} else SendClientMessage(playerid, -1, "Valor invбlido. ID's = 400-611");
return 1;
}
CMD:cv(playerid, params[])
{
new string[256], modelo, carro, cor1, cor2,
Float:X, Float:Y, Float:Z, Float:Angle;
if(sscanf(params, "ddd", modelo, cor1, cor2)) return SendClientMessage(playerid, -1, "Digite: /cv [modelo] [cor1] [cor2]");
if(IsPlayerConnected(playerid))
{
if(modelo >= 400 && modelo <= 611)
{
if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Saia deste veнculo para criar outro.");
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, Angle);
carro = AddStaticVehicleEx(modelo, X, Y, Z, Angle, cor1, cor2, 30);
LinkVehicleToInterior(carro, GetPlayerInterior(playerid));
SetVehicleVirtualWorld(carro, GetPlayerVirtualWorld(playerid));
PutPlayerInVehicle(playerid, carro, 0);
format(string, sizeof(string), "Vocк criou o veнculo de id: %d", modelo);
SendClientMessage(playerid, -1, string);
}
else SendClientMessage(playerid, -1, "Valor invбlido, tente novamente! | ID's = 400-611");
}
return 1;
}
// ----------------------------------------------------------------------------- >>
public Atualizar_Carros(vehicleid)
{
for(new i = 0; i < MAX_CARROS; ++i)
{
new slab[80];
Delete3DTextLabel( cInfo[i][cText] );
format(arquivo_hcarro, sizeof(arquivo_hcarro), PASTA_CARROS, i);
format(cInfo[i][cDono], 25, "%s", DOF2_GetString(arquivo_hcarro, "Dono")); // Nome do dono do carro vai ser
DOF2_SetString(arquivo_hcarro, "Dono", cInfo[i][cDono]);
format(slab, sizeof(slab), "Carro %d\nCasa %d\nDono %s", cInfo[i][cID], cInfo[i][cCasa], cInfo[i][cDono]);
// Update3DTextLabelText(cInfo[i][cText], -1, slab);
cInfo[i][cText] = Create3DTextLabel( slab, 0xFF0000AA, 0.0, 0.0, 0.0, 90.0, 0, 0 );
Attach3DTextLabelToVehicle( cInfo[i][cText] , vehicleid, 0.0, 0.0, 1.0);
SetVehicleToRespawn(i);
}
return 1;
}
/*
for(new i = 0; i < MAX_CARROS; ++i)
{
format(arquivo_hcarro, sizeof(arquivo_hcarro), PASTA_CARROS, i);
if(!DOF2_FileExists(arquivo_hcarro))
{
Delete3DTextLabel( cInfo[i][cText] );
DestroyVehicle(Criar_Carro[i]);
}
else
{
new casaid = cInfo[i][cCasa]; // verifica se a casa ainda existe
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, i);
if(!DOF2_FileExists(arquivo_casa))
{
Delete3DTextLabel( cInfo[i][cText] );
DestroyVehicle(Criar_Carro[i]);
}
else // Se existir :
{
new slab[60];
format(arquivo_hcarro, sizeof(arquivo_hcarro), PASTA_CARROS, i);
format(cInfo[i][cDono], 25, "%s", DOF2_GetString(arquivo_hcarro, "Dono")); // Nome do dono do carro vai ser
DOF2_SetString(arquivo_hcarro, "Dono", cInfo[i][cDono]);
format(slab, sizeof(slab), "Carro %d\nCasa %d\nDono %s", cInfo[i][cID], casaid, cInfo[i][cDono]);
cInfo[i][cText] = Create3DTextLabel( slab, 0xFF0000AA, 0.0, 0.0, 0.0, 90.0, 0, 0 );
// Delete3DTextLabel( cInfo[i][cText] );
Update3DTextLabelText(cInfo[i][cText], -1, slab);
Attach3DTextLabelToVehicle( cInfo[i][cText] , vehicleid, 0.0, 0.0, 1.0);
SetVehicleToRespawn(i);
}
}
}
return 1;
}*/
// ----------------------------------------------------------------------------- >>
public Atualizar_Casas(casaid)
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, casaid);
if(!DOF2_FileExists(arquivo_casa))
{
Delete3DTextLabel(HInfo[casaid][hText]);
DestroyPickup(HInfo[casaid][hPickUp]);
DestroyDynamicMapIcon(HInfo[casaid][hMapIcon]);
}
else
{
new str[120];
format(str, sizeof(str), "Casa %d\nDono %s\nPreзo %d\nAluguel %d", HInfo[casaid][hID], HInfo[casaid][hDono], HInfo[casaid][hPreco], HInfo[casaid][hAluguel]);
if(HInfo[casaid][hTemDono] == 1)
{
DestroyPickup(HInfo[casaid][hPickUp]);
DestroyDynamicMapIcon(HInfo[casaid][hMapIcon]);
Delete3DTextLabel(HInfo[casaid][hText]);
HInfo[casaid][hText] = Create3DTextLabel(str, -1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 20.0, 0, 0);
Update3DTextLabelText(HInfo[casaid][hText], -1, str);
HInfo[casaid][hMapIcon] = CreateDynamicMapIcon(HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 32, -1, -1, -1, -1, 50.0);
HInfo[casaid][hPickUp] = CreatePickup(1272, 1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], -1);
}
if(HInfo[casaid][hTemDono] == 0)
{
DestroyPickup(HInfo[casaid][hPickUp]);
DestroyDynamicMapIcon(HInfo[casaid][hMapIcon]);
Delete3DTextLabel(HInfo[casaid][hText]);
HInfo[casaid][hText] = Create3DTextLabel(str, -1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 20.0, 0, 0);
Update3DTextLabelText(HInfo[casaid][hText], -1, str);
HInfo[casaid][hPickUp] = CreatePickup(1273, 1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], -1);
HInfo[casaid][hMapIcon] = CreateDynamicMapIcon(HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 31, -1, -1, -1, -1, 50.0);
}
}
return 1;
}
// ----------------------------------------------------------------------------- >>
/*
public OnPlayerStateChange(playerid, newstate, oldstate) // Nгo ta funcionando
{
if (newstate == PLAYER_STATE_DRIVER)
{
for(new i = 0; i < MAX_CARROS; ++i)
{
if(strcmp(cInfo[i][cDono], GetNome(playerid)) == 0) // verificar se o player й dono do carro
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, -1, "Vocк nгo й o dono deste carro");
}
else
{
// format(cInfo[i][cDono], 25, "%s", DOF2_GetString(arquivo_hcarro, "Dono"));
if(strcmp(cInfo[i][cDono] == "Ninguem") // se o carro nгo tiver dono poode entrar ?
{
}
}break;
}
}
return 1;
}
// ----------------------------------------------------------------------------- >>
public OnPlayerStateChange(playerid, newstate, oldstate) // Nгo ta funcionando !
{
if (newstate == PLAYER_STATE_DRIVER)
{
for(new i = 0; i < MAX_CARROS; ++i)
{
new str[120];
format(str, sizeof(str), "este carro й da casa %d dono %s", cInfo[i][cCasa], cInfo[i][cDono]);
SendClientMessage(playerid, -1, str);
if(strcmp(cInfo[i][cDono], GetNome(playerid)) == 0) // verificar se o player й dono do carro
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid, -1, "Vocк nгo й o dono deste carro");
}
else
{
if(strcmp(cInfo[i][cDono], "Ninguem") == 0)
{
SendClientMessage(playerid, -1, "Este carro nгo tem dono !");
}
}break;
}
}
return 1;
}
*/
// ----------------------------------------------------------------------------- >>
Criar_Casa(casaid)
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, HInfo[casaid][hID]);
DOF2_CreateFile(arquivo_casa);
DOF2_SetString(arquivo_casa, "Dono", HInfo[casaid][hDono]);
DOF2_SetInt(arquivo_casa, "TemDono", HInfo[casaid][hTemDono]);
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, "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_SaveFile();
return 1;
}
// ----------------------------------------------------------------------------- >>
Carregar_Carro(carroid)
{
format(arquivo_hcarro, sizeof(arquivo_hcarro), PASTA_CARROS, carroid);
if(DOF2_FileExists(arquivo_hcarro))
{
cInfo[carroid][cCasa] = DOF2_GetInt(arquivo_hcarro, "Casa");
cInfo[carroid][cModelo] = DOF2_GetInt(arquivo_hcarro, "Modelo");
format(cInfo[carroid][cDono], 25, "%s", DOF2_GetString(arquivo_hcarro, "Dono"));
cInfo[carroid][cPos][0] = DOF2_GetFloat(arquivo_hcarro, "CarroPosx");
cInfo[carroid][cPos][1] = DOF2_GetFloat(arquivo_hcarro, "CarroPosy");
cInfo[carroid][cPos][2] = DOF2_GetFloat(arquivo_hcarro, "CarroPosz");
cInfo[carroid][cPos][3] = DOF2_GetFloat(arquivo_hcarro, "CarroPosA");
cInfo[carroid][cCor][0] = DOF2_GetInt(arquivo_hcarro, "CarroCor1");
cInfo[carroid][cCor][1] = DOF2_GetInt(arquivo_hcarro, "CarroCor2");
Criar_Carro[carroid] = CreateVehicle(cInfo[carroid][cModelo], cInfo[carroid][cPos][0], cInfo[carroid][cPos][1], cInfo[carroid][cPos][2], cInfo[carroid][cPos][3], cInfo[carroid][cCor][0], cInfo[carroid][cCor][1], false);
Criar_Carro[carroid] = CreateVehicle(cInfo[carroid][cModelo], cInfo[carroid][cPos][0], cInfo[carroid][cPos][1], cInfo[carroid][cPos][2], cInfo[carroid][cPos][3], cInfo[carroid][cCor][0], cInfo[carroid][cCor][1], false);
// Criar_Carro[carroid] = AddStaticVehicleEx(cInfo[carro][cModelo], cInfo[carro][cPos][0], cInfo[carro][cPos][1], cInfo[carro][cPos][2], cInfo[carro][cPos][3], cInfo[carro][cCor][0], cInfo[carroid][cCor][1], false);
}
}
// ----------------------------------------------------------------------------- >>
Salvar_Carro(carroid)
{
format(arquivo_hcarro, sizeof(arquivo_hcarro), PASTA_CARROS, carroid);
if(DOF2_FileExists(arquivo_hcarro))
{
DOF2_SetString(arquivo_hcarro, "Dono", cInfo[carroid][cDono]);
DOF2_SetInt(arquivo_hcarro, "Casa", cInfo[carroid][cCasa]);
DOF2_SetInt(arquivo_hcarro, "Modelo", cInfo[carroid][cModelo]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosx", cInfo[carroid][cPos][0]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosy", cInfo[carroid][cPos][1]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosz", cInfo[carroid][cPos][2]);
DOF2_SetFloat(arquivo_hcarro, "CarroPosA", cInfo[carroid][cPos][3]);
DOF2_SetInt(arquivo_hcarro, "CarroCor1", cInfo[carroid][cCor][0]);
DOF2_SetInt(arquivo_hcarro, "CarroCor2", cInfo[carroid][cCor][1]);
DOF2_SaveFile();
}
}
// ----------------------------------------------------------------------------- >>
Carregar_Casa(casaid)
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, casaid);
if(DOF2_FileExists(arquivo_casa))
{
format(HInfo[casaid][hDono], 25, "%s", DOF2_GetString(arquivo_casa, "Dono"));
HInfo[casaid][hTemDono] = DOF2_GetInt(arquivo_casa, "TemDono");
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][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");
new str[120];
if(HInfo[casaid][hTemDono] == 0)
{
format(str, sizeof(str), "Casa %d\nDono %s\nPreзo %d\nAluguel %d", HInfo[casaid][hID], HInfo[casaid][hDono], HInfo[casaid][hPreco], HInfo[casaid][hAluguel]);
HInfo[casaid][hText] = Create3DTextLabel(str, -1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 20.0, 0, 0);
HInfo[casaid][hPickUp] = CreatePickup(1273, 1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], -1);
HInfo[casaid][hMapIcon] = CreateDynamicMapIcon(HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 31, -1, -1, -1, -1, 50.0);
}
else
{
format(str, sizeof(str), "Casa %d\nDono %s\nAluguel %d", HInfo[casaid][hID], HInfo[casaid][hDono], HInfo[casaid][hAluguel]);
HInfo[casaid][hText] = Create3DTextLabel(str, -1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 20.0, 0, 0);
HInfo[casaid][hPickUp] = CreatePickup(1272, 1, HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], -1);
HInfo[casaid][hMapIcon] = CreateDynamicMapIcon(HInfo[casaid][hIcone][0], HInfo[casaid][hIcone][1], HInfo[casaid][hIcone][2], 32, -1, -1, -1, -1, 50.0);
}
}
}
Salvar_Casa(casaid)
{
format(arquivo_casa, sizeof(arquivo_casa), PASTA_CASAS, casaid);
if(DOF2_FileExists(arquivo_casa))
{
DOF2_SetString(arquivo_casa, "Dono", HInfo[casaid][hDono]);
DOF2_SetInt(arquivo_casa, "TemDono", HInfo[casaid][hTemDono]);
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, "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_SaveFile();
}
}
// ----------------------------------------------------------------------------- >>
stock GetNome(playerid)
{
new pNome[MAX_PLAYER_NAME];
GetPlayerName(playerid, pNome, 24);
return pNome;
}
public AntFloodH(playerid)
{
countH[playerid] = false;
return true;
}
// ------------------------------------------------------------------------------- >>
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <dof2>
#define MAX_CASAS 500 //troque pelo maximo de casas que quer que tenha em seu server
#define INFOA 0xFFFF00FF
new Text3D:Ctexto[MAX_CASAS]; //texto com as informaзхes da casa
new piCasa[MAX_CASAS]; //pickup da casa
enum pCasa
{
Float:pCasaX,
Float:pCasaY,
Float:pCasaZ,
pCasaNivel
};
new CasaInfo[MAX_CASAS][pCasa];
public OnGameModeInit()
{
new String[50],
INFOC[80];
for(new i = 0; i < MAX_CASAS; i++)
{
format(String, sizeof(String), "Casas/Casa %d.txt", i);
if(DOF2_FileExists(String))
{
if(DOF2_GetInt(String, "tDono") == 1)
{
format(INFOC, sizeof(INFOC), "{87CEFA}Dono: {FFFF00}%s\n{87CEFA}Nivel: {FFFF00}%d \n Id: %d \n%s", DOF2_GetString(String, "Dono"), DOF2_GetInt(String, "Nivel"), DOF2_GetInt(String, "Id"), DOF2_GetString(String, "Comprar"));
}
else{
format(INFOC, sizeof(INFOC), "{87CEFA}Dono: {FFFF00}%s\n{87CEFA}Preзo: {FFFF00}%d\n{87CEFA}Nivel: {FFFF00}%d\n Id: %d \n\n{87CEFA}Use:{FFFFFF} /comprarcasa", DOF2_GetString(String, "Dono"), DOF2_GetInt(String, "Preco"), DOF2_GetInt(String, "Nivel"), DOF2_GetInt(String, "Id"));
}
Ctexto[i] = Create3DTextLabel(INFOC, -1, DOF2_GetFloat(String, "PX"), DOF2_GetFloat(String, "PY"), DOF2_GetFloat(String, "PZ"), 50.0, 0, 0);
piCasa[i] = CreatePickup(DOF2_GetInt(String, "PickU"), 1, DOF2_GetFloat(String, "PX"), DOF2_GetFloat(String, "PY"), DOF2_GetFloat(String, "PZ"));
}
else { break; }
}
return 1;
}
CMD:criarcasa(playerid, params[])
{
new precoc, interior, Float:pX, Float:pY, Float:pZ, String[40];
if(sscanf(params,"dd",precoc,interior)) return SendClientMessage(playerid, -1, "[ERRO] Comando incorreto! Use: /criarcasa [preзo] [interior]");
GetPlayerPos(playerid, pX, pY, pZ);
format(String, sizeof(String), "Interiores/%d.txt",interior);
CriarCasa(playerid, precoc, DOF2_GetInt(String, "mundo"), Float:pX, Float:pY, Float:pZ, DOF2_GetFloat(String, "x"), DOF2_GetFloat(String, "y"), DOF2_GetFloat(String, "z"));
return 1;
}
stock CriarCasa(playerid, preco, iInt, Float:CX, Float:CY, Float:CZ, Float:ICasaX, Float:ICasaY, Float:ICasaZ)
{
new String[150], INFOC[130];
for(new i = 0; i < MAX_CASAS; i++)
{
format(String, sizeof(String), "Casas/Casa %d.txt", i);
if(!DOF2_FileExists(String))
{
DOF2_CreateFile(String);
DOF2_SetInt(String, "Id", i);
DOF2_SetInt(String, "Preco", preco);
DOF2_SetInt(String, "Nivel", 0);
DOF2_SetInt(String, "Mundo", iInt);
DOF2_SetInt(String, "PickU", 1273);
DOF2_SetInt(String, "tDono", 0);
DOF2_SetInt(String, "Trancada", 0);
DOF2_SetFloat(String, "IX", ICasaX);
DOF2_SetFloat(String, "IY", ICasaY);
DOF2_SetFloat(String, "IZ", ICasaZ);
DOF2_SetFloat(String, "PX", CX);
DOF2_SetFloat(String, "PY", CY);
DOF2_SetFloat(String, "PZ", CZ);
DOF2_SetString(String, "Dono", "Ninguem");
DOF2_SetString(String, "Comprar", "/comprarcasa");
DOF2_SaveFile();
format(INFOC, sizeof(INFOC), "{87CEFA}Dono: {FFFF00}%s\n{87CEFA}Preзo: {FFFF00}%d\n{87CEFA}Nivel: {FFFF00}%d\n\n{87CEFA}Use:{FFFFFF} /comprarcasa", DOF2_GetString(String, "Dono"), DOF2_GetInt(String, "Preco"), DOF2_GetInt(String, "Nivel"));
Ctexto[i] = Create3DTextLabel(INFOC, -1, CX, CY, CZ, 50.0, 0, 0);
piCasa[i] = CreatePickup(DOF2_GetInt(String, "PickU"), 1, CX, CY, CZ);
SendClientMessage(playerid, INFOA, "[SERVER] Vocк criou uma casa!");
break;
}
}
return 1;
}
CMD:comprarcasa(playerid)
{
new String[50], aname[MAX_PLAYER_NAME], INFOC[150];
GetPlayerName(playerid, aname, sizeof(aname));
for(new i = 0; i < MAX_CASAS; i++)
{
format(String, sizeof(String), "Casas/Casa %d.txt", i);
if(DOF2_GetInt(String, "tDono") == 1) { SendClientMessage(playerid, INFOA, "Estб casa jб possui dono!"); } else {
if(DOF2_FileExists(String))
{
CasaInfo[i][pCasaX] = DOF2_GetFloat(String, "PX");
CasaInfo[i][pCasaY] = DOF2_GetFloat(String, "PY");
CasaInfo[i][pCasaZ] = DOF2_GetFloat(String, "PZ");
if(IsPlayerInRangeOfPoint(playerid, 2.0, CasaInfo[i][pCasaX], CasaInfo[i][pCasaY], CasaInfo[i][pCasaZ]))
{
if(GetPlayerMoney(playerid) >= DOF2_GetInt(String, "Preco"))
{
GivePlayerMoney(playerid, -DOF2_GetInt(String, "Preco"));
DOF2_SetString(String, "Dono", aname);
DOF2_SetInt(String, "PickU", 1272);
DOF2_SetInt(String, "tDono", 1);
DOF2_SetString(String, "Comprar", "/entrarcasa");
DOF2_SaveFile();
format(INFOC, sizeof(INFOC), "{87CEFA}Dono: {FFFF00}%s\n{87CEFA}Nivel: {FFFF00}%d \n {87CEFA}Id: {FFFF00}%d \n{FFFF00}%s", DOF2_GetString(String, "Dono"), DOF2_GetInt(String, "Nivel"), DOF2_GetInt(String, "Id"), DOF2_GetString(String, "Comprar"));
Update3DTextLabelText(Ctexto[i], -1, INFOC);
DestroyPickup(piCasa[i]);
piCasa[i] = CreatePickup(DOF2_GetInt(String, "PickU"), 1, DOF2_GetFloat(String, "PX"), DOF2_GetFloat(String, "PY"), DOF2_GetFloat(String, "PZ"));
}
}
}
else { break; }
}
}
return 1;
}
CMD:entrarcasa(playerid)
{
new String[80];
for(new i = 0; i < MAX_CASAS; i++)
{
format(String, sizeof(String), "Casas/Casa %d.txt", i);
if(DOF2_FileExists(String))
{
if(DOF2_GetInt(String, "Tracanda") == 1)
{
SendClientMessage(playerid, INFOA, "[SERVER] Estб casa estб trancada");
}
else
{
SetPlayerPos(playerid, DOF2_GetFloat(String, "IX"), DOF2_GetFloat(String, "IY"), DOF2_GetFloat(String, "IZ"));
SetPlayerInterior(playerid, DOF2_GetInt(String, "Mundo"));
}
}
else
{
break;
}
}
return 1;
}
|
use estб base que fiz para vocк em um de seus post eu acho, ele й baseado em meu sistema de casas, releve e me avise se der algum erro pois fiz em 20 min e nгo testei, leia e re-leia o cуdigo e vai entender como funciona e ira conseguir fazer o seu
Crie a pasta Casas na scriptfiles e crie a pasta Interiores na pasta Interiores ira conta a localizaзгo x, y, z das casas, faзa exatamente desta maneira senгo nгo ira funcionar crie o arquivo 1.txt, 2.txt, 3.txt e nesses arquivos adicione isso: X = 271.884979 y = 306.631988 z = 999.148437 mundo = 2 lembrando, mude x, y, z e interior para interiores que vc quiser adicionar Code: PHP Code:
|
|
@edit
mano, a parte do meu sistema de casas ta de boa, o que ta dando erro й o sistema de carros [...] Se possнvel, roda meu cуdigo, to achando que meu problema й algo simples de sintaxe que nгo consigo entender |
|
poderia me dizer exatamente o problema com o sistema de carros ?
|