Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This is a comment
- // uncomment the line below if you want to write a filterscript
- //#define FILTERSCRIPT
- #include <a_samp>
- #include <SII>
- #include <zcmd>
- #include <sscanf>
- #define MAX_HOUSE 50 // - Massime Case Creabili Aumentare se ne dovete creare di più
- #define H_FILE_PATH "SCHouse/%d.ini"// - Destinazione file Case.
- #define MENUCASA 5001 // - Dialog menù Casa
- #define MENUVENDICASA 5005 // - Dialog menù vendi Casa
- #define DEPOSITASOLDICASA 5006 // - Dialog Deposita Soldi
- #define RITIRASOLDICASA 5007 // - Dialog Ritira Soldi
- enum HouseInfo
- {
- Float:X,
- Float:Y,
- Float:Z,
- Float:Xu,
- Float:Yu,
- Float:Zu,
- hText[64],
- hCosto,
- Interior,
- VirtualW,
- Proprietario[24],
- Comprata,
- Chiusa,
- Cassaforte
- }
- new hInfo[MAX_HOUSE][HouseInfo];
- new InCasa[MAX_PLAYERS];
- new file[256], stringa[256], PickupID[MAX_HOUSE];
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Blank Filterscript by your name here");
- print("--------------------------------------\n");
- LoadHouse();
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- InCasa[playerid] = -1;
- return 1;
- }
- CMD:creacasa(playerid, params[])
- {
- new ID, Costo, Float:Pos[3];
- if(sscanf(params, "dd", ID, Costo))return SendClientMessage(playerid, -1, "/creacasa [ID] [COSTO]");
- if(Costo < 0 || Costo > 1000000)return SendClientMessage(playerid, -1, "Costo troppo alto, Minimo 0 Massimo 1000000");
- if(!IsPlayerAdmin(playerid))return 0;
- format(file, sizeof(file), H_FILE_PATH, ID);
- if(INI_Exist(file))return SendClientMessage(playerid, -1, "C'è già una casa creata con questo ID!");
- GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
- INI_Open(file);
- INI_WriteFloat("FloatX", Pos[0]);
- INI_WriteFloat("FloatY", Pos[1]);
- INI_WriteFloat("FloatZ", Pos[2]);
- INI_WriteFloat("FloatXUscita", 235.508994);
- INI_WriteFloat("FloatYUscita", 1189.169897);
- INI_WriteFloat("FloatZUscita", 1080.339966);
- INI_WriteString("Descrizione", "Nuova Casa");
- INI_WriteInt("CostoCasa", Costo);
- INI_WriteInt("Interior", 3);
- INI_WriteInt("VirtualW", ID+999);
- INI_WriteInt("Comprata", 0);
- INI_WriteInt("Chiusa", 0);
- INI_WriteInt("Cassaforte", 0);
- INI_WriteString("Proprietario", "Invendita");
- INI_Save();
- INI_Close();
- hInfo[ID][X] = Pos[0];
- hInfo[ID][Y] = Pos[1];
- hInfo[ID][Z] = Pos[2];
- hInfo[ID][Xu] = 235.508994;
- hInfo[ID][Yu] = 1189.169897;
- hInfo[ID][Zu] = 1080.339966;
- strmid(hInfo[ID][hText], "Casa in vendita", 0, strlen("Casa in vendita"), 999);
- hInfo[ID][hCosto] = Costo;
- hInfo[ID][Interior] = 3;
- hInfo[ID][VirtualW] = ID+999;
- hInfo[ID][Comprata] = 0;
- hInfo[ID][Chiusa] = 0;
- hInfo[ID][Cassaforte] = 0;
- strmid(hInfo[ID][Proprietario], "Invendita", 0, strlen("Invendita"), 999);
- PickupID[ID] = CreatePickup(1273, 24, Pos[0], Pos[1], Pos[2]);
- return 1;
- }
- CMD:gotocasa(playerid, params[])
- {
- new ID;
- if(sscanf(params, "d", ID))return SendClientMessage(playerid, -1, "/gotocasa [ID]");
- if(!IsPlayerAdmin(playerid))return 0;
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- SetPlayerPos(playerid, hInfo[ID][X], hInfo[ID][Y], hInfo[ID][Z]);
- return 1;
- }
- CMD:sethcosto(playerid, params[])
- {
- new ID, Costo;
- if(sscanf(params, "dd", ID, Costo))return SendClientMessage(playerid, -1, "/sethcosto [Id Casa] [Costo]");
- if(!IsPlayerAdmin(playerid))return 0;
- hInfo[ID][hCosto] = Costo;
- format(file, sizeof(file), "Hai impostato alla casa ID %d il costo a $%d", ID, Costo);
- SendClientMessage(playerid, -1, file);
- return 1;
- }
- CMD:sethexit(playerid, params[])
- {
- new ID, Float:x, Float:y, Float:z;
- if(sscanf(params, "d", ID))return SendClientMessage(playerid, -1, "/sethexit [Id Casa]");
- if(!IsPlayerAdmin(playerid))return 0;
- GetPlayerPos(playerid, x, y, z);
- hInfo[ID][Xu] = x;
- hInfo[ID][Yu] = y;
- hInfo[ID][Zu] = z;
- hInfo[ID][Interior] = GetPlayerInterior(playerid);
- format(file, sizeof(file), "Hai impostato alla casa ID %d l'uscita qui!", ID);
- SendClientMessage(playerid, -1, file);
- return 1;
- }
- CMD:sethint(playerid, params[])
- {
- new ID, Int, string[128];
- if(sscanf(params, "dd", ID, Int))return SendClientMessage(playerid, -1, "/sethexit [Id Casa] [Interior]");
- if(!IsPlayerAdmin(playerid))return 0;
- if(Int > 0 && Int > 4) return SendClientMessage(playerid, -1, "ID nterior da 1 a 4!");
- switch(Int)
- {
- case 0:
- {
- hInfo[ID][Xu] = 235.508994;
- hInfo[ID][Yu] = 1189.169897;
- hInfo[ID][Zu] = 1080.339966;
- hInfo[ID][Interior] = 3;
- format(string, sizeof string, "Hai impostato alla casa ID %d l'interior a %d", ID, Int);
- SendClientMessage(playerid, -1, string);
- }
- case 1:
- {
- hInfo[ID][Xu] = 225.756989;
- hInfo[ID][Yu] = 1240.000000;
- hInfo[ID][Zu] = 1082.149902;
- hInfo[ID][Interior] = 2;
- format(string, sizeof string, "Hai impostato alla casa ID %d l'interior a %d", ID, Int);
- SendClientMessage(playerid, -1, string);
- }
- case 2:
- {
- hInfo[ID][Xu] = 223.043991;
- hInfo[ID][Yu] = 1289.259888;
- hInfo[ID][Zu] = 1082.199951;
- hInfo[ID][Interior] = 1;
- format(string, sizeof string, "Hai impostato alla casa ID %d l'interior a %d", ID, Int);
- SendClientMessage(playerid, -1, string);
- }
- case 3:
- {
- hInfo[ID][Xu] = 225.630997;
- hInfo[ID][Yu] = 1022.479980;
- hInfo[ID][Zu] = 1084.069946;
- hInfo[ID][Interior] = 7;
- format(string, sizeof string, "Hai impostato alla casa ID %d l'interior a %d", ID, Int);
- SendClientMessage(playerid, -1, string);
- }
- case 4:
- {
- hInfo[ID][Xu] = 295.138977;
- hInfo[ID][Yu] = 1474.469971;
- hInfo[ID][Zu] = 1080.519897;
- hInfo[ID][Interior] = 15;
- format(string, sizeof string, "Hai impostato alla casa ID %d l'interior a %d", ID, Int);
- SendClientMessage(playerid, -1, string);
- }
- }
- return 1;
- }
- CMD:removehouse(playerid, params[])
- {
- new ID, string[128];
- if(sscanf(params, "d", ID))return SendClientMessage(playerid, -1, "/removehouse [Id Casa]");
- if(!IsPlayerAdmin(playerid))return 0;
- format(file, sizeof(file), H_FILE_PATH, ID);
- if(!INI_Exist(file))return SendClientMessage(playerid, -1, "Non c'è una casa con questo ID creata, quindi, non puoi eliminarla");
- INI_Open(file);
- INI_Remove(file);
- INI_Save();
- INI_Close();
- hInfo[ID][X] = 0.0;
- hInfo[ID][Y] = 0.0;
- hInfo[ID][Z] = 0.0;
- hInfo[ID][Interior] = 0;
- hInfo[ID][Cassaforte] = 0;
- DestroyPickup(PickupID[ID]);
- format(string, sizeof(string), "Hai eliminato la casa ID %d", ID);
- SendClientMessage(playerid, -1, string);
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- if(pickupid == PickupID[GetH(playerid)])// Quando il player entra nel pickup delle case.
- {
- if(hInfo[GetH(playerid)][Comprata] == 0)
- {
- format(stringa, sizeof(stringa), "%s~n~~w~Costo Casa: ~g~$%d", hInfo[GetH(playerid)][hText], hInfo[GetH(playerid)][hCosto]);
- GameTextForPlayer(playerid, stringa, 3500, 3);
- }
- else if(hInfo[GetH(playerid)][Comprata] == 1)
- {
- format(stringa, sizeof(stringa), "~n~~w~Proprietario: ~g~%s", hInfo[GetH(playerid)][Proprietario]);
- GameTextForPlayer(playerid, stringa, 3500, 3);
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys == KEY_SECONDARY_ATTACK)//Entrata Case
- {
- for(new i = 0; i < MAX_HOUSE; i++)
- {
- if(InCasa[playerid] == -1 && IsPlayerInRangeOfPoint(playerid, 1.0, hInfo[i][X], hInfo[i][Y], hInfo[i][Z]))
- {
- if(hInfo[i][Chiusa] == 1)return SendClientMessage(playerid, -1, "[INFO:] Casa Chiusa!");
- SetPlayerPos(playerid, hInfo[i][Xu], hInfo[i][Yu], hInfo[i][Zu]);
- SetPlayerInterior(playerid, hInfo[i][Interior]);
- SetPlayerVirtualWorld(playerid, hInfo[i][VirtualW]);
- InCasa[playerid] = i;
- }
- else if(InCasa[playerid] != -1 && IsPlayerInRangeOfPoint(playerid, 2.0, hInfo[InCasa[playerid]][Xu], hInfo[InCasa[playerid]][Yu], hInfo[InCasa[playerid]][Zu]))
- {
- if(GetPlayerVirtualWorld(playerid) == hInfo[i][VirtualW])
- {
- if(hInfo[i][Chiusa] == 1)return SendClientMessage(playerid, -1, "[INFO:] Casa Chiusa!");
- SetPlayerPos(playerid, hInfo[i][X], hInfo[i][Y], hInfo[i][Z]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- InCasa[playerid] = -1;
- }
- }
- }
- }
- if(newkeys == KEY_JUMP)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.0, hInfo[GetH(playerid)][X], hInfo[GetH(playerid)][Y], hInfo[GetH(playerid)][Z]))
- {
- if(GetPlayerMoney(playerid) < hInfo[GetH(playerid)][hCosto])return SendClientMessage(playerid, -1, "Non hai abbastanza Soldi!");
- if(hInfo[GetH(playerid)][Comprata] == 1)return SendClientMessage(playerid, -1, "Questa casa non è in vendita!");
- hInfo[GetH(playerid)][Comprata] = 1;
- GivePlayerMoney(playerid, -hInfo[GetH(playerid)][hCosto]);
- new nome[24];
- GetPlayerName(playerid, nome, sizeof(nome));
- SendClientMessage(playerid, -1, "Hai comprato questa casa con successo!");
- InCasa[playerid] = GetH(playerid);
- SetPlayerPos(playerid, hInfo[GetH(playerid)][Xu], hInfo[GetH(playerid)][Yu], hInfo[GetH(playerid)][Zu]);
- SetPlayerInterior(playerid, hInfo[GetH(playerid)][Interior]);
- SetPlayerVirtualWorld(playerid, hInfo[GetH(playerid)][VirtualW]);
- DestroyPickup(PickupID[GetH(playerid)]);
- PickupID[GetH(playerid)] = CreatePickup(1272, 24, hInfo[GetH(playerid)][X], hInfo[GetH(playerid)][Y], hInfo[GetH(playerid)][Z]);
- INI_Open(file);
- INI_WriteString("Proprietario", nome);
- hInfo[GetH(playerid)][Proprietario] = nome;
- INI_WriteString("Descrizione", "Casa non in vendita");
- INI_WriteInt("Comprata", 1);
- INI_Save();
- INI_Close();
- }
- }
- if(newkeys == KEY_WALK)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.0, hInfo[GetH(playerid)][X], hInfo[GetH(playerid)][Y], hInfo[GetH(playerid)][Z]))
- {
- new nome[24];
- GetPlayerName(playerid, nome, sizeof(nome));
- if(strcmp(hInfo[GetH(playerid)][Proprietario], nome) != 0) return SendClientMessage(playerid,0xFF1E00FF,"Questa casa non è tua!");
- if(hInfo[GetH(playerid)][Comprata] == 0)return SendClientMessage(playerid,0xFF1E00FF,"Questa casa non è tua!");
- ShowPlayerDialog(playerid, MENUCASA, DIALOG_STYLE_LIST, "Casa", "Vendi Casa\nChiudi/Apri Casa\nRitira Soldi\nDeposita Soldi", "Seleziona", "Annulla");
- }
- return 1;
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == MENUCASA && response)
- {
- if(!response)return 0;
- switch(listitem)
- {
- case 0:
- {
- new string[128];
- format(string, sizeof(string), "Sei sicuro di voler vendere la tua casa per $%d ?", hInfo[GetH(playerid)][hCosto]/2);
- ShowPlayerDialog(playerid, MENUVENDICASA, DIALOG_STYLE_MSGBOX, "Vendi", string, "Si", "No");
- }
- case 1:
- {
- if(hInfo[GetH(playerid)][Chiusa] == 0)
- {
- hInfo[GetH(playerid)][Chiusa] = 1;
- SendClientMessage(playerid, -1, "[INFO:] Hai chiuso la tua casa");
- SaveHouse();
- }
- else if(hInfo[GetH(playerid)][Chiusa] == 1)
- {
- hInfo[GetH(playerid)][Chiusa] = 0;
- SendClientMessage(playerid, -1, "[INFO:] Hai aperto la tua casa");
- SaveHouse();
- }
- }
- case 2:ShowPlayerDialog(playerid, RITIRASOLDICASA, DIALOG_STYLE_INPUT, "Ritiro", "Scrivi la cifra che vuoi ritirare dalla casa", "Ritira", "Annulla");
- case 3:ShowPlayerDialog(playerid, DEPOSITASOLDICASA, DIALOG_STYLE_INPUT, "Deposito", "Scrivi la cifra che vuoi depositare in casa", "Deposita", "Annulla");
- }
- return 1;
- }
- if(dialogid == MENUVENDICASA && response)
- {
- if(!response)return 0;
- new string[256];
- GivePlayerMoney(playerid, hInfo[GetH(playerid)][hCosto]/2);
- format(string, sizeof(string), "Hai venduto la tua casa per $%d ", hInfo[GetH(playerid)][hCosto]/2);
- SendClientMessage(playerid, -1, string);
- hInfo[GetH(playerid)][Comprata] = 0;
- DestroyPickup(PickupID[GetH(playerid)]);
- PickupID[GetH(playerid)] = CreatePickup(1273, 24, hInfo[GetH(playerid)][X], hInfo[GetH(playerid)][Y], hInfo[GetH(playerid)][Z]);
- format(file, sizeof(file), H_FILE_PATH, GetH(playerid));
- INI_Open(file);
- INI_WriteString("Proprietario", "Nessuno");
- INI_WriteInt("Comprata", 0);
- INI_Save();
- INI_Close();
- SaveHouse();
- }
- if(dialogid == DEPOSITASOLDICASA && response)
- {
- new string[200];
- if(!response)return 0;
- if(GetPlayerMoney(playerid) < strval(inputtext))return ShowPlayerDialog(playerid, DEPOSITASOLDICASA, DIALOG_STYLE_INPUT, "Deposito", "Non hai tutti questi soldi!\nScrivi la cifra che vuoi depositare in casa", "Deposita", "Annulla");
- hInfo[GetH(playerid)][Cassaforte] = hInfo[GetH(playerid)][Cassaforte]+strval(inputtext);
- format(string, sizeof(string), "Hai depositato %d in casa tua, ricorda di non venderla quando hai soldi in casa, oppure li perderai", strval(inputtext));
- SendClientMessage(playerid, -1, string);
- GivePlayerMoney(playerid, -strval(inputtext));
- }
- if(dialogid == RITIRASOLDICASA && response)
- {
- new string[200];
- if(!response)return 0;
- if(strval(inputtext) > hInfo[GetH(playerid)][Cassaforte])return ShowPlayerDialog(playerid, RITIRASOLDICASA, DIALOG_STYLE_INPUT, "Ritiro", "Non hai tutti questi soldi in casa!\nScrivi la cifra che vuoi ritirare dalla casa", "Ritira", "Annulla");
- hInfo[GetH(playerid)][Cassaforte] = hInfo[GetH(playerid)][Cassaforte]-strval(inputtext);
- format(string, sizeof(string), "Hai ritirato %d dalla tua casa!", strval(inputtext));
- SendClientMessage(playerid, -1, string);
- GivePlayerMoney(playerid, -strval(inputtext));
- }
- return 1;
- }
- stock GetH(playerid)//Getta l'ID della casa in cui il player è..
- {
- for(new i=0; i<MAX_HOUSE; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 2.0, hInfo[i][X], hInfo[i][Y], hInfo[i][Z]))
- {
- return i;
- }
- }
- return -230;
- }
- stock SaveHouse()//Carica Le case
- {
- for(new i = 0; i<MAX_HOUSE; i++)
- {
- format(file, sizeof(file), H_FILE_PATH, i);
- if(INI_Exist(file))
- {
- INI_Open(file);
- INI_WriteFloat("FloatX", hInfo[i][X ]);
- INI_WriteFloat("FloatY", hInfo[i][Y]);
- INI_WriteFloat("FloatZ", hInfo[i][Z]);
- INI_WriteFloat("FloatXUscita", hInfo[i][Xu]);
- INI_WriteFloat("FloatYUscita", hInfo[i][Yu]);
- INI_WriteFloat("FloatZUscita", hInfo[i][Zu]);
- INI_WriteString("Descrizione", hInfo[i][hText]);
- INI_WriteInt("CostoCasa", hInfo[i][hCosto]);
- INI_WriteInt("Interior", hInfo[i][Interior]);
- INI_WriteInt("VirtualW", hInfo[i][VirtualW]);
- INI_WriteInt("Comprata", hInfo[i][Comprata]);
- INI_WriteInt("Chiusa", hInfo[i][Chiusa]);
- INI_WriteInt("Cassaforte", hInfo[i][Cassaforte]);
- INI_WriteString("Proprietario", hInfo[i][Proprietario]);
- INI_Save();
- INI_Close();
- }
- }
- }
- stock LoadHouse()//Carica Le case
- {
- new Nome[MAX_PLAYER_NAME], Desc[64];
- for(new i = 0; i<MAX_HOUSE; i++)
- {
- format(file, sizeof(file), H_FILE_PATH, i);
- if(INI_Exist(file))
- {
- INI_Open(file);
- hInfo[i][X] = INI_ReadFloat("FloatX");
- hInfo[i][Y] = INI_ReadFloat("FloatY");
- hInfo[i][Z] = INI_ReadFloat("FloatZ");
- hInfo[i][Xu] = INI_ReadFloat("FloatXUscita");
- hInfo[i][Yu] = INI_ReadFloat("FloatYUscita");
- hInfo[i][Zu] = INI_ReadFloat("FloatZUscita");
- INI_ReadString(Desc, "Descrizione", 128);
- hInfo[i][hText] = Desc;
- hInfo[i][hCosto] = INI_ReadInt("CostoCasa");
- hInfo[i][Interior] = INI_ReadInt("Interior");
- hInfo[i][VirtualW] = INI_ReadInt("VirtualW");
- hInfo[i][Comprata] = INI_ReadInt("Comprata");
- hInfo[i][Cassaforte] = INI_ReadInt("Cassaforte");
- hInfo[i][Chiusa] = INI_ReadInt("Chiusa");
- INI_ReadString(Nome, "Proprietario", 128);
- hInfo[i][Proprietario] = Nome;
- INI_Close();
- if(hInfo[i][Comprata] == 0)
- {
- PickupID[i] = CreatePickup(1273, 24, hInfo[i][X], hInfo[i][Y], hInfo[i][Z]);
- }
- else if(hInfo[i][Comprata] == 1)
- {
- PickupID[i] = CreatePickup(1272, 24, hInfo[i][X], hInfo[i][Y], hInfo[i][Z]);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement