/* 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 ?
|