Business?
#1

Hello everyone,im looking for a business system,can't find it with search,maybe does anyone know if there's one?I also asked on script request thread #4 but no answers.
Reply
#2

I need one too LOL
Anyone
Reply
#3

http://forum.sa-mp.com/index.php?topic=164189.0
Reply
#4

Thanks, that Filterscript is great, only need good one for houses
Reply
#5

Quote:
Originally Posted by alenblue
Thanks, that Filterscript is great, only need good one for houses
Here you go http://forum.sa-mp.com/index.php?topic=143553.0
have fun with that
Reply
#6

pawn Код:
#include <a_samp>
#include <dini>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //CREDIT: DracoBlue

#define MAX_MARKERS 1000 //Max amount of markers (Increasing causes the file to be larger decreasing does the opposite.

enum Info
{
  Float:x, //XPos
  Float:y, //YPos
  Float:z, //ZPos
  markertype, //Marker type
  color, //Color of the marker
  Float:Dist
};


#define MAX_HOUSES 400

enum houseinfo
{
    HouseNames[60], //To save into the file
    HouseCost, //The house cost
    HouseOwner[24], // The house owners Name
    Float:PickupX, // PickupX
  Float:PickupY, //PickupY
  Float:PickupZ, //PickupZ
  Float:TeleX, //The house location
  Float:TeleY, //The house location
  Float:TeleZ, //The house location
    Interior, //The house Interior
    HouseSell, //House sell price
    Owned,
  Virtual,
  Icon,
  Opened
};

new HouseInfo[MAX_HOUSES][houseinfo]; //It saves all the info in this variable.
new HouseCount = -1; //House count
new PickupID[MAX_HOUSES];
new InHouse[MAX_PLAYERS] = -1;
new Invited[MAX_PLAYERS] = -1;
new House[MAX_PLAYERS] = -1;
new Keys[MAX_PLAYERS][MAX_HOUSES];
new MarkerInfo[MAX_MARKERS][Info];
new MarkerID = -1;
new PlayerMarkers[MAX_PLAYERS][MAX_MARKERS];
new MarkerUsed[MAX_MARKERS];
new IconID[MAX_PLAYERS][MAX_MARKERS];
new SlotsUsed[MAX_PLAYERS][100];
new Visiting[MAX_PLAYERS];
new TimeR[MAX_PLAYERS];
new HouseSpawn[MAX_PLAYERS];
public OnGameModeInit()
{
    CreateHouse("TestHouse1", 1, 1539.9032,-851.7039,64.3361, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHouse2", 1, 2346.872802, 692.999267, 11.460937, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHouse3", 1, 2396.482666, 691.487060, 11.453125, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse4", 1, 2398.476074, 735.344665, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse5", 1, 2368.863525, 733.627502, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse6", 1, 2013.253906, 731.041870, 11.453125, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHouse7", 1, 2449.826660, 742.588806, 11.460937, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHouse8", 1, 2449.662353, 714.210693, 11.468292, 266.857757, 305.001586, 999.148437, 5, 1);
    return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
  Invited[playerid] = -1;
  InHouse[playerid] = -1;
  House[playerid] = -1;
  new Pname[24], File[65]; GetPlayerName(playerid, Pname, 24);
  for(new V=0; V<HouseCount + 1; V++)
  {
    if(!strcmp(HouseInfo[V][HouseOwner], Pname, true))
    {
            House[playerid] = V;
            break;
    }
    }
  if(dini_Exists(File))
  {
      for(new K=0; K<HouseCount + 1; K++)
      {
        format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[K][HouseNames]);
            if(dini_Int(File, Pname) == 1) Keys[playerid][K] = 1;
      }
    }

    return 1;
}


public OnFilterScriptInit()
{
    //CreateHouse(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell)
  SetTimer("Stream", 500, true);
    if(!dini_Exists("Owners.ini"))
    {
        dini_Create("Owners.ini");
    }
    if(!dini_Exists("Opened.ini"))
    {
        dini_Create("Opened.ini");
    }
    if(!dini_Exists("HouseSave.ini"))
    {
        dini_Create("HouseSave.ini");
    }
    return 1;
}

stock CreateHouse(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell)
{
  HouseCount ++;
  new ID = HouseCount; //HouseID
  format(HouseInfo[ID][HouseNames], 60, "%s", Filename); //Saves the HouseName into a variable
  HouseInfo[ID][HouseCost] = Cost;
  HouseInfo[ID][PickupX] = Pickupx;
  HouseInfo[ID][Virtual] = 2520000 + ID;
  HouseInfo[ID][PickupY] = Pickupy;
  HouseInfo[ID][PickupZ] = Pickupz;
  HouseInfo[ID][TeleX] = Telex;
  HouseInfo[ID][TeleY] = Teley;
  HouseInfo[ID][TeleZ] = Telez;
  HouseInfo[ID][Interior] = interior;
  HouseInfo[ID][HouseSell] = sell;
  format(HouseInfo[ID][HouseOwner], 24, "gj9043jg-er)((23");
    if(strlen(dini_Get("Owners.ini", Filename))) //This is to see if there is any owner.
    {
   
    format(HouseInfo[ID][HouseOwner], 24, "%s", dini_Get("Owners.ini", Filename));
    HouseInfo[ID][Owned] = 1;
    HouseInfo[ID][Icon] = SetPlayerMapIconEx(Pickupx, Pickupy, Pickupz, 32, 1);
    if(dini_Int("Opened.ini", HouseInfo[ID][HouseNames]) == 1) HouseInfo[ID][Opened] = 1;
   
    }
  PickupID[ID] = CreatePickup(1273, 23, Pickupx, Pickupy, Pickupz, -1); //Creates the pickup :).
  Create3DTextLabel("House", 0x00A0F6AA, Pickupx, Pickupy, Pickupz + 0.75, 15.0, 0, 1);
  if(HouseInfo[ID][Owned] == 0) HouseInfo[ID][Icon] = SetPlayerMapIconEx(Pickupx, Pickupy, Pickupz, 31, 1);
}

public OnPlayerPickUpPickup(playerid, pickupid) //Pickup callback
{
  for(new J; J<MAX_HOUSES; J++) //Loops through all houses
  {
    if(pickupid == PickupID[J]) //If the pickupid is one of our house ones
    {
      new str[75];
      if(HouseInfo[J][Owned] == 1)
      {
        format(str, sizeof(str), "~r~House Info~n~~g~Owner: ~w~%s", HouseInfo[J][HouseOwner]);
        SendClientMessage(playerid, 0x67F6F6AA, "/enter to enter this house!");
            }
      if(HouseInfo[J][Owned] == 0)
      {
        format(str, sizeof(str), "~r~House Info~n~~g~Owner: ~w~Nobody");
        SendClientMessage(playerid, 0x67F6F6AA, "This house is up for sale! Type /buy to buy it");
      }
      new str2[100];
      format(str2, sizeof(str2), "~g~Cost price:~w~ %d ~n~~g~Sell Price:~w~ %d", HouseInfo[J][HouseCost], HouseInfo[J][HouseSell]);
      new str3[175];
      format(str3, sizeof(str3), "%s~n~%s", str, str2);
      GameTextForPlayer(playerid, str3, 3500, 3);
      break;
    }
  }
  return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
  if (strcmp("/buy", cmdtext, true, 10) == 0)
  {
    if(House[playerid] != -1) return SendClientMessage(playerid, 0xF60000AA, "You already have a house!");
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
          new Pname[24];
                if(GetPlayerMoney(playerid) < HouseInfo[i][HouseCost]) return SendClientMessage(playerid, 0xF60000AA, "You don't have enough money to buy this house");
                if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "This house is already owned!");
                GivePlayerMoney(playerid, - HouseInfo[i][HouseCost]);
        GameTextForPlayer(playerid, "~r~House Purchased!", 2000, 3);
        MarkerInfo[HouseInfo[i][Icon]][markertype] = 31;
        HouseInfo[i][Owned] = 1;
        House[playerid] = i;
        GetPlayerName(playerid, Pname, 24);
        format(HouseInfo[i][HouseOwner], 24, "%s", Pname);
        dini_Set("Owners.ini", HouseInfo[i][HouseNames], Pname);
        return 1;
      }
        }
        SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
    return 1;
  }
  if (strcmp("/sell", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(House[playerid] != i) return SendClientMessage(playerid, 0xF60000AA, "You don't own this house!");
        GivePlayerMoney(playerid, HouseInfo[i][HouseSell]);
        GameTextForPlayer(playerid, "~r~House Sold!", 2000, 3);
        HouseInfo[i][Owned] = 0;
        House[playerid] = -1;
        format(HouseInfo[i][HouseOwner], 24, "0943jt3u9*egjlfd");
        MarkerInfo[HouseInfo[i][Icon]][markertype] = 32;
        dini_Unset("Owners.ini", HouseInfo[i][HouseNames]);
        return 1;
            }
        }
    SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
        return 1;
  }
  if (strcmp("/enter", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(House[playerid] != i && Invited[playerid] != i && Keys[playerid][i] == 0 && HouseInfo[i][Opened] == 0) return SendClientMessage(playerid, 0xF60000AA, "You don't own this house and you have no invite!");
                SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
        SetPlayerInterior(playerid, HouseInfo[i][Interior]);
        Invited[playerid] = -1;
                InHouse[playerid] = i;
        SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
        SendClientMessage(playerid, 0x00C4F6AA, "You have entered a house");
        return 1;
      }
    }
    SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
    return 1;
  }
  if (strcmp("/Visit", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(!IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ])) return SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
            if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "You cannot visit a house that has a owner!");
            SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
            SetPlayerInterior(playerid, HouseInfo[i][Interior]);
            InHouse[playerid] = i;
            SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
            SendClientMessage(playerid, 0x00C4F6AA, "You are visiting this house, you have 2 minutes until you are kicked out!");
            Visiting[playerid] = i;
            TimeR[playerid] = SetTimerEx("Kicked", 120000, false, "d", playerid);
            return 1;
    }
    return 1;
  }
  if (strcmp("/exit", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house");
    SetPlayerPos(playerid, HouseInfo[InHouse[playerid]][PickupX], HouseInfo[InHouse[playerid]][PickupY], HouseInfo[InHouse[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have exited a house");
    InHouse[playerid] = -1;
    if(Visiting[playerid] != -1)
    {
      Visiting[playerid] = -1;
            KillTimer(TimeR[playerid]);
    }
    return 1;
  }
  /*if (strcmp("/gotomyhouse", cmdtext, true) == 0)
  {
    if(House[playerid] == -1) return SendClientMessage(playerid, 0xF60000AA, "You don't own a house");
    SetPlayerPos(playerid, HouseInfo[House[playerid]][PickupX], HouseInfo[House[playerid]][PickupY], HouseInfo[House[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid, 0x00C4F6AA, "You have teled to your house");
    InHouse[playerid] = -1;
    return 1;
  }*/

    if (strcmp("/Openhouse", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
    HouseInfo[InHouse[playerid]][Opened] = 1;
    dini_IntSet("Opened.ini", HouseInfo[InHouse[playerid]][HouseNames], 1);
    SendClientMessage(playerid, 0x00C4F6AA, "You have now opened your house to everyone");
    return 1;
  }
 
    if (strcmp("/Closehouse", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
    HouseInfo[InHouse[playerid]][Opened] = 0;
    dini_IntSet("Opened.ini", HouseInfo[InHouse[playerid]][HouseNames], 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have now closed your house to everyone");
    return 1;
  }
    if (strcmp("/Clearkeys", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
        new File[100];
        format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[InHouse[playerid]][HouseNames]);
        fremove(File);
        return 1;
  }
  dcmd(Invite, 6, cmdtext);
  dcmd(Givekeys, 8, cmdtext);
  return 0;
}

dcmd_Invite(playerid, params[])
{
    new Pname2[24]; GetPlayerName(playerid, Pname2, 24);
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own!");
    new ID = strval(params);
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, 0xF60000AA, "Player is not connected!");
  Invited[ID] = InHouse[playerid];
  new Pname[24], string[80], string2[80];
  GetPlayerName(ID, Pname, 24);
  format(string, sizeof(string), "Invited %s to your house!", Pname);
  format(string2, sizeof(string2), "%s has invited you to their house!", Pname2);
  SendClientMessage(playerid, 0x00C4F6AA, string);
  SendClientMessage(ID, 0x00C4F6AA, string2);
    return 1;
}

dcmd_Givekeys(playerid, params[])
{
    new Pname2[24]; GetPlayerName(playerid, Pname2, 24);
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own!");
    new ID = strval(params);
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, 0xF60000AA, "Player is not connected!");
  Keys[ID][InHouse[playerid]] = 1;
  new File[65];
    new Pname[24], string[80], string2[80];
    GetPlayerName(ID, Pname, 24);
    format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[InHouse[playerid]][HouseNames]);
    if(!dini_Exists(File))
    {
      dini_Create(File);
    }
  dini_IntSet(File, Pname, 1);
  format(string, sizeof(string), "Gave %s Keys to your house!", Pname);
  format(string2, sizeof(string2), "%s has given you keys to their house!", Pname2);
  SendClientMessage(playerid, 0x00C4F6AA, string);
  SendClientMessage(ID, 0x00C4F6AA, string2);
    return 1;
}

stock SetPlayerMapIconEx(Float:X, Float:Y, Float:Z, Markertype, Color, Float:dist = 100.0)
{
  MarkerID ++; //Marker ID added
  MarkerUsed[MarkerID] = 1; //Enabled = 1 disabled = 0
  MarkerInfo[MarkerID][markertype] = Markertype; //Marker type check https://sampwiki.blast.hk/wiki/SetPlayerMapIcon for them
  MarkerInfo[MarkerID][x] = X; //X of the icon
  MarkerInfo[MarkerID][y] = Y; //Y of the icon
  MarkerInfo[MarkerID][z] = Z; //Z of the icon
  MarkerInfo[MarkerID][color] = Color; //Color of the icon.
  MarkerInfo[MarkerID][Dist] = dist;
  return MarkerID;
}

forward Stream();
public Stream()
{
    for(new i; i<MAX_PLAYERS; i++)//Goes through all players
    {
      if(IsPlayerConnected(i)) //All online players
      {
        for(new S; S<MarkerID+1; S++) //All active Markers
        {
          if(MarkerUsed[S] == 1) //Checks if the Marker is enabled
          {
                    if(IsPlayerInRangeOfPoint(i, MarkerInfo[S][Dist], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z]) && PlayerMarkers[i][S] == 0)//Is the player close enough to the Marker and the player does not already have it streamed
                    {
                        for(new K; K<100; K++)
                        {
                          if(SlotsUsed[i][K] == 0)
                          {
                            SlotsUsed[i][K]++;
                            IconID[i][S] = K;
                            break;
                          }
                        }
                      SetPlayerMapIcon(i, IconID[i][S], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z], MarkerInfo[S][markertype], MarkerInfo[S][color]);//Create the Marker
              PlayerMarkers[i][S] = 1; //Shows the object streamed for the player
                        continue;
                    }
                }
                if(!IsPlayerInRangeOfPoint(i, MarkerInfo[S][Dist], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z]) && PlayerMarkers[i][S] == 1) //If the player falls out of that distance the marker is destroyed
                {
                  SlotsUsed[i][IconID[i][S]] = 0;
                PlayerMarkers[i][S] = 0;
                  RemovePlayerMapIcon(i, IconID[i][S]);
                  continue;
                }
            }
        }
    }
    return 1;
}

forward Kicked(playerid);
public Kicked(playerid)
{
    SetPlayerPos(playerid, HouseInfo[InHouse[playerid]][PickupX], HouseInfo[InHouse[playerid]][PickupY], HouseInfo[InHouse[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have been kicked from this house for staying longer than 2 minutes");
    InHouse[playerid] = -1;
    Visiting[playerid] = -1;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    if(InHouse[playerid] == 1 && House[playerid] == InHouse[playerid])
    {
      new Pname[24];
      GetPlayerName(playerid, Pname, 24);
        dini_Set("HouseSave.ini", Pname, HouseInfo[House[playerid]][HouseNames]);
    }
    return 1;
}

public OnPlayerConnect(playerid)
{
    HouseSpawn[playerid] = -1;
    new Pname[24];
    GetPlayerName(playerid, Pname, 24);
    if(strlen(dini_Get("HouseSave.ini", Pname)) != 0)
    {
      for(new S; S < HouseCount + 1; S++)
      {
        GetPlayerName(playerid, Pname, 24);
        if(!strcmp(dini_Get("HouseSave.ini", Pname), HouseInfo[S][HouseNames]))
        {
          HouseSpawn[playerid] = S;
        }
      }
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(HouseSpawn[playerid] != -1)
    {
      new i = HouseSpawn[playerid];
    SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
    SetPlayerInterior(playerid, HouseInfo[i][Interior]);
    Invited[playerid] = -1;
        InHouse[playerid] = i;
        SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
        SendClientMessage(playerid, 0x00C4F6AA, "You have spawned at your house");
    }
    return 1;
}
It Doesnt work i compile with no errors, but houses arent created
Reply
#7

Quote:
Originally Posted by alenblue
pawn Код:
#include <a_samp>
#include <dini>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //CREDIT: DracoBlue

#define MAX_MARKERS 1000 //Max amount of markers (Increasing causes the file to be larger decreasing does the opposite.

enum Info
{
  Float:x, //XPos
  Float:y, //YPos
  Float:z, //ZPos
  markertype, //Marker type
  color, //Color of the marker
  Float:Dist
};


#define MAX_HOUSES 400

enum houseinfo
{
    HouseNames[60], //To save into the file
    HouseCost, //The house cost
    HouseOwner[24], // The house owners Name
    Float:PickupX, // PickupX
  Float:PickupY, //PickupY
  Float:PickupZ, //PickupZ
  Float:TeleX, //The house location
  Float:TeleY, //The house location
  Float:TeleZ, //The house location
    Interior, //The house Interior
    HouseSell, //House sell price
    Owned,
  Virtual,
  Icon,
  Opened
};

new HouseInfo[MAX_HOUSES][houseinfo]; //It saves all the info in this variable.
new HouseCount = -1; //House count
new PickupID[MAX_HOUSES];
new InHouse[MAX_PLAYERS] = -1;
new Invited[MAX_PLAYERS] = -1;
new House[MAX_PLAYERS] = -1;
new Keys[MAX_PLAYERS][MAX_HOUSES];
new MarkerInfo[MAX_MARKERS][Info];
new MarkerID = -1;
new PlayerMarkers[MAX_PLAYERS][MAX_MARKERS];
new MarkerUsed[MAX_MARKERS];
new IconID[MAX_PLAYERS][MAX_MARKERS];
new SlotsUsed[MAX_PLAYERS][100];
new Visiting[MAX_PLAYERS];
new TimeR[MAX_PLAYERS];
new HouseSpawn[MAX_PLAYERS];
public OnGameModeInit()
{
    CreateHouse("TestHouse1", 1, 1539.9032,-851.7039,64.3361, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHouse2", 1, 2346.872802, 692.999267, 11.460937, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHouse3", 1, 2396.482666, 691.487060, 11.453125, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse4", 1, 2398.476074, 735.344665, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse5", 1, 2368.863525, 733.627502, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse6", 1, 2013.253906, 731.041870, 11.453125, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHouse7", 1, 2449.826660, 742.588806, 11.460937, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHouse8", 1, 2449.662353, 714.210693, 11.468292, 266.857757, 305.001586, 999.148437, 5, 1);
    return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
  Invited[playerid] = -1;
  InHouse[playerid] = -1;
  House[playerid] = -1;
  new Pname[24], File[65]; GetPlayerName(playerid, Pname, 24);
  for(new V=0; V<HouseCount + 1; V++)
  {
    if(!strcmp(HouseInfo[V][HouseOwner], Pname, true))
    {
            House[playerid] = V;
            break;
    }
    }
  if(dini_Exists(File))
  {
      for(new K=0; K<HouseCount + 1; K++)
      {
        format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[K][HouseNames]);
            if(dini_Int(File, Pname) == 1) Keys[playerid][K] = 1;
      }
    }

    return 1;
}


public OnFilterScriptInit()
{
    //CreateHouse(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell)
  SetTimer("Stream", 500, true);
    if(!dini_Exists("Owners.ini"))
    {
        dini_Create("Owners.ini");
    }
    if(!dini_Exists("Opened.ini"))
    {
        dini_Create("Opened.ini");
    }
    if(!dini_Exists("HouseSave.ini"))
    {
        dini_Create("HouseSave.ini");
    }
    return 1;
}

stock CreateHouse(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell)
{
  HouseCount ++;
  new ID = HouseCount; //HouseID
  format(HouseInfo[ID][HouseNames], 60, "%s", Filename); //Saves the HouseName into a variable
  HouseInfo[ID][HouseCost] = Cost;
  HouseInfo[ID][PickupX] = Pickupx;
  HouseInfo[ID][Virtual] = 2520000 + ID;
  HouseInfo[ID][PickupY] = Pickupy;
  HouseInfo[ID][PickupZ] = Pickupz;
  HouseInfo[ID][TeleX] = Telex;
  HouseInfo[ID][TeleY] = Teley;
  HouseInfo[ID][TeleZ] = Telez;
  HouseInfo[ID][Interior] = interior;
  HouseInfo[ID][HouseSell] = sell;
  format(HouseInfo[ID][HouseOwner], 24, "gj9043jg-er)((23");
    if(strlen(dini_Get("Owners.ini", Filename))) //This is to see if there is any owner.
    {
   
    format(HouseInfo[ID][HouseOwner], 24, "%s", dini_Get("Owners.ini", Filename));
    HouseInfo[ID][Owned] = 1;
    HouseInfo[ID][Icon] = SetPlayerMapIconEx(Pickupx, Pickupy, Pickupz, 32, 1);
    if(dini_Int("Opened.ini", HouseInfo[ID][HouseNames]) == 1) HouseInfo[ID][Opened] = 1;
   
    }
  PickupID[ID] = CreatePickup(1273, 23, Pickupx, Pickupy, Pickupz, -1); //Creates the pickup :).
  Create3DTextLabel("House", 0x00A0F6AA, Pickupx, Pickupy, Pickupz + 0.75, 15.0, 0, 1);
  if(HouseInfo[ID][Owned] == 0) HouseInfo[ID][Icon] = SetPlayerMapIconEx(Pickupx, Pickupy, Pickupz, 31, 1);
}

public OnPlayerPickUpPickup(playerid, pickupid) //Pickup callback
{
  for(new J; J<MAX_HOUSES; J++) //Loops through all houses
  {
    if(pickupid == PickupID[J]) //If the pickupid is one of our house ones
    {
      new str[75];
      if(HouseInfo[J][Owned] == 1)
      {
        format(str, sizeof(str), "~r~House Info~n~~g~Owner: ~w~%s", HouseInfo[J][HouseOwner]);
        SendClientMessage(playerid, 0x67F6F6AA, "/enter to enter this house!");
            }
      if(HouseInfo[J][Owned] == 0)
      {
        format(str, sizeof(str), "~r~House Info~n~~g~Owner: ~w~Nobody");
        SendClientMessage(playerid, 0x67F6F6AA, "This house is up for sale! Type /buy to buy it");
      }
      new str2[100];
      format(str2, sizeof(str2), "~g~Cost price:~w~ %d ~n~~g~Sell Price:~w~ %d", HouseInfo[J][HouseCost], HouseInfo[J][HouseSell]);
      new str3[175];
      format(str3, sizeof(str3), "%s~n~%s", str, str2);
      GameTextForPlayer(playerid, str3, 3500, 3);
      break;
    }
  }
  return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
  if (strcmp("/buy", cmdtext, true, 10) == 0)
  {
    if(House[playerid] != -1) return SendClientMessage(playerid, 0xF60000AA, "You already have a house!");
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
          new Pname[24];
                if(GetPlayerMoney(playerid) < HouseInfo[i][HouseCost]) return SendClientMessage(playerid, 0xF60000AA, "You don't have enough money to buy this house");
                if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "This house is already owned!");
                GivePlayerMoney(playerid, - HouseInfo[i][HouseCost]);
        GameTextForPlayer(playerid, "~r~House Purchased!", 2000, 3);
        MarkerInfo[HouseInfo[i][Icon]][markertype] = 31;
        HouseInfo[i][Owned] = 1;
        House[playerid] = i;
        GetPlayerName(playerid, Pname, 24);
        format(HouseInfo[i][HouseOwner], 24, "%s", Pname);
        dini_Set("Owners.ini", HouseInfo[i][HouseNames], Pname);
        return 1;
      }
        }
        SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
    return 1;
  }
  if (strcmp("/sell", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(House[playerid] != i) return SendClientMessage(playerid, 0xF60000AA, "You don't own this house!");
        GivePlayerMoney(playerid, HouseInfo[i][HouseSell]);
        GameTextForPlayer(playerid, "~r~House Sold!", 2000, 3);
        HouseInfo[i][Owned] = 0;
        House[playerid] = -1;
        format(HouseInfo[i][HouseOwner], 24, "0943jt3u9*egjlfd");
        MarkerInfo[HouseInfo[i][Icon]][markertype] = 32;
        dini_Unset("Owners.ini", HouseInfo[i][HouseNames]);
        return 1;
            }
        }
    SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
        return 1;
  }
  if (strcmp("/enter", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(House[playerid] != i && Invited[playerid] != i && Keys[playerid][i] == 0 && HouseInfo[i][Opened] == 0) return SendClientMessage(playerid, 0xF60000AA, "You don't own this house and you have no invite!");
                SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
        SetPlayerInterior(playerid, HouseInfo[i][Interior]);
        Invited[playerid] = -1;
                InHouse[playerid] = i;
        SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
        SendClientMessage(playerid, 0x00C4F6AA, "You have entered a house");
        return 1;
      }
    }
    SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
    return 1;
  }
  if (strcmp("/Visit", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(!IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ])) return SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "You cannot visit a house that has a owner!");
            SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
            SetPlayerInterior(playerid, HouseInfo[i][Interior]);
            InHouse[playerid] = i;
            SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
            SendClientMessage(playerid, 0x00C4F6AA, "You are visiting this house, you have 2 minutes until you are kicked out!");
            Visiting[playerid] = i;
            TimeR[playerid] = SetTimerEx("Kicked", 120000, false, "d", playerid);
            return 1;
    }
    return 1;
  }
  if (strcmp("/exit", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house");
    SetPlayerPos(playerid, HouseInfo[InHouse[playerid]][PickupX], HouseInfo[InHouse[playerid]][PickupY], HouseInfo[InHouse[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have exited a house");
    InHouse[playerid] = -1;
    if(Visiting[playerid] != -1)
    {
      Visiting[playerid] = -1;
            KillTimer(TimeR[playerid]);
    }
    return 1;
  }
  /*if (strcmp("/gotomyhouse", cmdtext, true) == 0)
  {
    if(House[playerid] == -1) return SendClientMessage(playerid, 0xF60000AA, "You don't own a house");
    SetPlayerPos(playerid, HouseInfo[House[playerid]][PickupX], HouseInfo[House[playerid]][PickupY], HouseInfo[House[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid, 0x00C4F6AA, "You have teled to your house");
    InHouse[playerid] = -1;
    return 1;
  }*/

    if (strcmp("/Openhouse", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
    HouseInfo[InHouse[playerid]][Opened] = 1;
    dini_IntSet("Opened.ini", HouseInfo[InHouse[playerid]][HouseNames], 1);
    SendClientMessage(playerid, 0x00C4F6AA, "You have now opened your house to everyone");
    return 1;
  }
 
    if (strcmp("/Closehouse", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
    HouseInfo[InHouse[playerid]][Opened] = 0;
    dini_IntSet("Opened.ini", HouseInfo[InHouse[playerid]][HouseNames], 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have now closed your house to everyone");
    return 1;
  }
    if (strcmp("/Clearkeys", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
        new File[100];
        format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[InHouse[playerid]][HouseNames]);
        fremove(File);
        return 1;
  }
  dcmd(Invite, 6, cmdtext);
  dcmd(Givekeys, 8, cmdtext);
  return 0;
}

dcmd_Invite(playerid, params[])
{
    new Pname2[24]; GetPlayerName(playerid, Pname2, 24);
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own!");
    new ID = strval(params);
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, 0xF60000AA, "Player is not connected!");
  Invited[ID] = InHouse[playerid];
  new Pname[24], string[80], string2[80];
  GetPlayerName(ID, Pname, 24);
  format(string, sizeof(string), "Invited %s to your house!", Pname);
  format(string2, sizeof(string2), "%s has invited you to their house!", Pname2);
  SendClientMessage(playerid, 0x00C4F6AA, string);
  SendClientMessage(ID, 0x00C4F6AA, string2);
    return 1;
}

dcmd_Givekeys(playerid, params[])
{
    new Pname2[24]; GetPlayerName(playerid, Pname2, 24);
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own!");
    new ID = strval(params);
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, 0xF60000AA, "Player is not connected!");
  Keys[ID][InHouse[playerid]] = 1;
  new File[65];
    new Pname[24], string[80], string2[80];
    GetPlayerName(ID, Pname, 24);
    format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[InHouse[playerid]][HouseNames]);
    if(!dini_Exists(File))
    {
      dini_Create(File);
    }
  dini_IntSet(File, Pname, 1);
  format(string, sizeof(string), "Gave %s Keys to your house!", Pname);
  format(string2, sizeof(string2), "%s has given you keys to their house!", Pname2);
  SendClientMessage(playerid, 0x00C4F6AA, string);
  SendClientMessage(ID, 0x00C4F6AA, string2);
    return 1;
}

stock SetPlayerMapIconEx(Float:X, Float:Y, Float:Z, Markertype, Color, Float:dist = 100.0)
{
  MarkerID ++; //Marker ID added
  MarkerUsed[MarkerID] = 1; //Enabled = 1 disabled = 0
  MarkerInfo[MarkerID][markertype] = Markertype; //Marker type check https://sampwiki.blast.hk/wiki/SetPlayerMapIcon for them
  MarkerInfo[MarkerID][x] = X; //X of the icon
  MarkerInfo[MarkerID][y] = Y; //Y of the icon
  MarkerInfo[MarkerID][z] = Z; //Z of the icon
  MarkerInfo[MarkerID][color] = Color; //Color of the icon.
  MarkerInfo[MarkerID][Dist] = dist;
  return MarkerID;
}

forward Stream();
public Stream()
{
    for(new i; i<MAX_PLAYERS; i++)//Goes through all players
    {
      if(IsPlayerConnected(i)) //All online players
      {
        for(new S; S<MarkerID+1; S++) //All active Markers
        {
          if(MarkerUsed[S] == 1) //Checks if the Marker is enabled
          {
                    if(IsPlayerInRangeOfPoint(i, MarkerInfo[S][Dist], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z]) && PlayerMarkers[i][S] == 0)//Is the player close enough to the Marker and the player does not already have it streamed
                    {
                        for(new K; K<100; K++)
                        {
                          if(SlotsUsed[i][K] == 0)
                          {
                            SlotsUsed[i][K]++;
                            IconID[i][S] = K;
                            break;
                          }
                        }
                      SetPlayerMapIcon(i, IconID[i][S], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z], MarkerInfo[S][markertype], MarkerInfo[S][color]);//Create the Marker
              PlayerMarkers[i][S] = 1; //Shows the object streamed for the player
                        continue;
                    }
                }
                if(!IsPlayerInRangeOfPoint(i, MarkerInfo[S][Dist], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z]) && PlayerMarkers[i][S] == 1) //If the player falls out of that distance the marker is destroyed
                {
                  SlotsUsed[i][IconID[i][S]] = 0;
                PlayerMarkers[i][S] = 0;
                  RemovePlayerMapIcon(i, IconID[i][S]);
                  continue;
                }
            }
        }
    }
    return 1;
}

forward Kicked(playerid);
public Kicked(playerid)
{
    SetPlayerPos(playerid, HouseInfo[InHouse[playerid]][PickupX], HouseInfo[InHouse[playerid]][PickupY], HouseInfo[InHouse[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have been kicked from this house for staying longer than 2 minutes");
    InHouse[playerid] = -1;
    Visiting[playerid] = -1;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    if(InHouse[playerid] == 1 && House[playerid] == InHouse[playerid])
    {
      new Pname[24];
      GetPlayerName(playerid, Pname, 24);
        dini_Set("HouseSave.ini", Pname, HouseInfo[House[playerid]][HouseNames]);
    }
    return 1;
}

public OnPlayerConnect(playerid)
{
    HouseSpawn[playerid] = -1;
    new Pname[24];
    GetPlayerName(playerid, Pname, 24);
    if(strlen(dini_Get("HouseSave.ini", Pname)) != 0)
    {
      for(new S; S < HouseCount + 1; S++)
      {
        GetPlayerName(playerid, Pname, 24);
        if(!strcmp(dini_Get("HouseSave.ini", Pname), HouseInfo[S][HouseNames]))
        {
          HouseSpawn[playerid] = S;
        }
      }
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(HouseSpawn[playerid] != -1)
    {
      new i = HouseSpawn[playerid];
    SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
    SetPlayerInterior(playerid, HouseInfo[i][Interior]);
    Invited[playerid] = -1;
        InHouse[playerid] = i;
        SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
        SendClientMessage(playerid, 0x00C4F6AA, "You have spawned at your house");
    }
    return 1;
}
It Doesnt work i compile with no errors, but houses arent created
This, is [HIC]TheKiller's tut right? If, so, it works perfectly fine for me
Reply
#8

Quote:
Originally Posted by ViruZZzZ_ChiLLL
Quote:
Originally Posted by alenblue
pawn Код:
#include <a_samp>
#include <dini>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //CREDIT: DracoBlue

#define MAX_MARKERS 1000 //Max amount of markers (Increasing causes the file to be larger decreasing does the opposite.

enum Info
{
  Float:x, //XPos
  Float:y, //YPos
  Float:z, //ZPos
  markertype, //Marker type
  color, //Color of the marker
  Float:Dist
};


#define MAX_HOUSES 400

enum houseinfo
{
    HouseNames[60], //To save into the file
    HouseCost, //The house cost
    HouseOwner[24], // The house owners Name
    Float:PickupX, // PickupX
  Float:PickupY, //PickupY
  Float:PickupZ, //PickupZ
  Float:TeleX, //The house location
  Float:TeleY, //The house location
  Float:TeleZ, //The house location
    Interior, //The house Interior
    HouseSell, //House sell price
    Owned,
  Virtual,
  Icon,
  Opened
};

new HouseInfo[MAX_HOUSES][houseinfo]; //It saves all the info in this variable.
new HouseCount = -1; //House count
new PickupID[MAX_HOUSES];
new InHouse[MAX_PLAYERS] = -1;
new Invited[MAX_PLAYERS] = -1;
new House[MAX_PLAYERS] = -1;
new Keys[MAX_PLAYERS][MAX_HOUSES];
new MarkerInfo[MAX_MARKERS][Info];
new MarkerID = -1;
new PlayerMarkers[MAX_PLAYERS][MAX_MARKERS];
new MarkerUsed[MAX_MARKERS];
new IconID[MAX_PLAYERS][MAX_MARKERS];
new SlotsUsed[MAX_PLAYERS][100];
new Visiting[MAX_PLAYERS];
new TimeR[MAX_PLAYERS];
new HouseSpawn[MAX_PLAYERS];
public OnGameModeInit()
{
    CreateHouse("TestHouse1", 1, 1539.9032,-851.7039,64.3361, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHouse2", 1, 2346.872802, 692.999267, 11.460937, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHouse3", 1, 2396.482666, 691.487060, 11.453125, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse4", 1, 2398.476074, 735.344665, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse5", 1, 2368.863525, 733.627502, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHouse6", 1, 2013.253906, 731.041870, 11.453125, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHouse7", 1, 2449.826660, 742.588806, 11.460937, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHouse8", 1, 2449.662353, 714.210693, 11.468292, 266.857757, 305.001586, 999.148437, 5, 1);
    return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
  Invited[playerid] = -1;
  InHouse[playerid] = -1;
  House[playerid] = -1;
  new Pname[24], File[65]; GetPlayerName(playerid, Pname, 24);
  for(new V=0; V<HouseCount + 1; V++)
  {
    if(!strcmp(HouseInfo[V][HouseOwner], Pname, true))
    {
            House[playerid] = V;
            break;
    }
    }
  if(dini_Exists(File))
  {
      for(new K=0; K<HouseCount + 1; K++)
      {
        format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[K][HouseNames]);
            if(dini_Int(File, Pname) == 1) Keys[playerid][K] = 1;
      }
    }

    return 1;
}


public OnFilterScriptInit()
{
    //CreateHouse(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell)
  SetTimer("Stream", 500, true);
    if(!dini_Exists("Owners.ini"))
    {
        dini_Create("Owners.ini");
    }
    if(!dini_Exists("Opened.ini"))
    {
        dini_Create("Opened.ini");
    }
    if(!dini_Exists("HouseSave.ini"))
    {
        dini_Create("HouseSave.ini");
    }
    return 1;
}

stock CreateHouse(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell)
{
  HouseCount ++;
  new ID = HouseCount; //HouseID
  format(HouseInfo[ID][HouseNames], 60, "%s", Filename); //Saves the HouseName into a variable
  HouseInfo[ID][HouseCost] = Cost;
  HouseInfo[ID][PickupX] = Pickupx;
  HouseInfo[ID][Virtual] = 2520000 + ID;
  HouseInfo[ID][PickupY] = Pickupy;
  HouseInfo[ID][PickupZ] = Pickupz;
  HouseInfo[ID][TeleX] = Telex;
  HouseInfo[ID][TeleY] = Teley;
  HouseInfo[ID][TeleZ] = Telez;
  HouseInfo[ID][Interior] = interior;
  HouseInfo[ID][HouseSell] = sell;
  format(HouseInfo[ID][HouseOwner], 24, "gj9043jg-er)((23");
    if(strlen(dini_Get("Owners.ini", Filename))) //This is to see if there is any owner.
    {
   
    format(HouseInfo[ID][HouseOwner], 24, "%s", dini_Get("Owners.ini", Filename));
    HouseInfo[ID][Owned] = 1;
    HouseInfo[ID][Icon] = SetPlayerMapIconEx(Pickupx, Pickupy, Pickupz, 32, 1);
    if(dini_Int("Opened.ini", HouseInfo[ID][HouseNames]) == 1) HouseInfo[ID][Opened] = 1;
   
    }
  PickupID[ID] = CreatePickup(1273, 23, Pickupx, Pickupy, Pickupz, -1); //Creates the pickup :).
  Create3DTextLabel("House", 0x00A0F6AA, Pickupx, Pickupy, Pickupz + 0.75, 15.0, 0, 1);
  if(HouseInfo[ID][Owned] == 0) HouseInfo[ID][Icon] = SetPlayerMapIconEx(Pickupx, Pickupy, Pickupz, 31, 1);
}

public OnPlayerPickUpPickup(playerid, pickupid) //Pickup callback
{
  for(new J; J<MAX_HOUSES; J++) //Loops through all houses
  {
    if(pickupid == PickupID[J]) //If the pickupid is one of our house ones
    {
      new str[75];
      if(HouseInfo[J][Owned] == 1)
      {
        format(str, sizeof(str), "~r~House Info~n~~g~Owner: ~w~%s", HouseInfo[J][HouseOwner]);
        SendClientMessage(playerid, 0x67F6F6AA, "/enter to enter this house!");
            }
      if(HouseInfo[J][Owned] == 0)
      {
        format(str, sizeof(str), "~r~House Info~n~~g~Owner: ~w~Nobody");
        SendClientMessage(playerid, 0x67F6F6AA, "This house is up for sale! Type /buy to buy it");
      }
      new str2[100];
      format(str2, sizeof(str2), "~g~Cost price:~w~ %d ~n~~g~Sell Price:~w~ %d", HouseInfo[J][HouseCost], HouseInfo[J][HouseSell]);
      new str3[175];
      format(str3, sizeof(str3), "%s~n~%s", str, str2);
      GameTextForPlayer(playerid, str3, 3500, 3);
      break;
    }
  }
  return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
  if (strcmp("/buy", cmdtext, true, 10) == 0)
  {
    if(House[playerid] != -1) return SendClientMessage(playerid, 0xF60000AA, "You already have a house!");
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
          new Pname[24];
                if(GetPlayerMoney(playerid) < HouseInfo[i][HouseCost]) return SendClientMessage(playerid, 0xF60000AA, "You don't have enough money to buy this house");
                if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "This house is already owned!");
                GivePlayerMoney(playerid, - HouseInfo[i][HouseCost]);
        GameTextForPlayer(playerid, "~r~House Purchased!", 2000, 3);
        MarkerInfo[HouseInfo[i][Icon]][markertype] = 31;
        HouseInfo[i][Owned] = 1;
        House[playerid] = i;
        GetPlayerName(playerid, Pname, 24);
        format(HouseInfo[i][HouseOwner], 24, "%s", Pname);
        dini_Set("Owners.ini", HouseInfo[i][HouseNames], Pname);
        return 1;
      }
        }
        SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
    return 1;
  }
  if (strcmp("/sell", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(House[playerid] != i) return SendClientMessage(playerid, 0xF60000AA, "You don't own this house!");
        GivePlayerMoney(playerid, HouseInfo[i][HouseSell]);
        GameTextForPlayer(playerid, "~r~House Sold!", 2000, 3);
        HouseInfo[i][Owned] = 0;
        House[playerid] = -1;
        format(HouseInfo[i][HouseOwner], 24, "0943jt3u9*egjlfd");
        MarkerInfo[HouseInfo[i][Icon]][markertype] = 32;
        dini_Unset("Owners.ini", HouseInfo[i][HouseNames]);
        return 1;
            }
        }
    SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
        return 1;
  }
  if (strcmp("/enter", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
        {
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(House[playerid] != i && Invited[playerid] != i && Keys[playerid][i] == 0 && HouseInfo[i][Opened] == 0) return SendClientMessage(playerid, 0xF60000AA, "You don't own this house and you have no invite!");
                SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
        SetPlayerInterior(playerid, HouseInfo[i][Interior]);
        Invited[playerid] = -1;
                InHouse[playerid] = i;
        SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
        SendClientMessage(playerid, 0x00C4F6AA, "You have entered a house");
        return 1;
      }
    }
    SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
    return 1;
  }
  if (strcmp("/Visit", cmdtext, true, 10) == 0)
  {
    for(new i; i<MAX_HOUSES; i++)
        {
      if(!IsPlayerInRangeOfPoint(playerid, 3, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ])) return SendClientMessage(playerid, 0xF60000AA, "You are not close enough to a house");
        new Pname[24]; GetPlayerName(playerid, Pname, 24);
        if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "You cannot visit a house that has a owner!");
            SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
            SetPlayerInterior(playerid, HouseInfo[i][Interior]);
            InHouse[playerid] = i;
            SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
            SendClientMessage(playerid, 0x00C4F6AA, "You are visiting this house, you have 2 minutes until you are kicked out!");
            Visiting[playerid] = i;
            TimeR[playerid] = SetTimerEx("Kicked", 120000, false, "d", playerid);
            return 1;
    }
    return 1;
  }
  if (strcmp("/exit", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house");
    SetPlayerPos(playerid, HouseInfo[InHouse[playerid]][PickupX], HouseInfo[InHouse[playerid]][PickupY], HouseInfo[InHouse[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have exited a house");
    InHouse[playerid] = -1;
    if(Visiting[playerid] != -1)
    {
      Visiting[playerid] = -1;
            KillTimer(TimeR[playerid]);
    }
    return 1;
  }
  /*if (strcmp("/gotomyhouse", cmdtext, true) == 0)
  {
    if(House[playerid] == -1) return SendClientMessage(playerid, 0xF60000AA, "You don't own a house");
    SetPlayerPos(playerid, HouseInfo[House[playerid]][PickupX], HouseInfo[House[playerid]][PickupY], HouseInfo[House[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid, 0x00C4F6AA, "You have teled to your house");
    InHouse[playerid] = -1;
    return 1;
  }*/

    if (strcmp("/Openhouse", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
    HouseInfo[InHouse[playerid]][Opened] = 1;
    dini_IntSet("Opened.ini", HouseInfo[InHouse[playerid]][HouseNames], 1);
    SendClientMessage(playerid, 0x00C4F6AA, "You have now opened your house to everyone");
    return 1;
  }
 
    if (strcmp("/Closehouse", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
    HouseInfo[InHouse[playerid]][Opened] = 0;
    dini_IntSet("Opened.ini", HouseInfo[InHouse[playerid]][HouseNames], 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have now closed your house to everyone");
    return 1;
  }
    if (strcmp("/Clearkeys", cmdtext, true, 10) == 0)
  {
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own");
        new File[100];
        format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[InHouse[playerid]][HouseNames]);
        fremove(File);
        return 1;
  }
  dcmd(Invite, 6, cmdtext);
  dcmd(Givekeys, 8, cmdtext);
  return 0;
}

dcmd_Invite(playerid, params[])
{
    new Pname2[24]; GetPlayerName(playerid, Pname2, 24);
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own!");
    new ID = strval(params);
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, 0xF60000AA, "Player is not connected!");
  Invited[ID] = InHouse[playerid];
  new Pname[24], string[80], string2[80];
  GetPlayerName(ID, Pname, 24);
  format(string, sizeof(string), "Invited %s to your house!", Pname);
  format(string2, sizeof(string2), "%s has invited you to their house!", Pname2);
  SendClientMessage(playerid, 0x00C4F6AA, string);
  SendClientMessage(ID, 0x00C4F6AA, string2);
    return 1;
}

dcmd_Givekeys(playerid, params[])
{
    new Pname2[24]; GetPlayerName(playerid, Pname2, 24);
    if(InHouse[playerid] == -1 || House[playerid] != InHouse[playerid]) return SendClientMessage(playerid, 0xF60000AA, "You are not in a house that you own!");
    new ID = strval(params);
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, 0xF60000AA, "Player is not connected!");
  Keys[ID][InHouse[playerid]] = 1;
  new File[65];
    new Pname[24], string[80], string2[80];
    GetPlayerName(ID, Pname, 24);
    format(File, sizeof(File), "HouseKeys/%s.ini", HouseInfo[InHouse[playerid]][HouseNames]);
    if(!dini_Exists(File))
    {
      dini_Create(File);
    }
  dini_IntSet(File, Pname, 1);
  format(string, sizeof(string), "Gave %s Keys to your house!", Pname);
  format(string2, sizeof(string2), "%s has given you keys to their house!", Pname2);
  SendClientMessage(playerid, 0x00C4F6AA, string);
  SendClientMessage(ID, 0x00C4F6AA, string2);
    return 1;
}

stock SetPlayerMapIconEx(Float:X, Float:Y, Float:Z, Markertype, Color, Float:dist = 100.0)
{
  MarkerID ++; //Marker ID added
  MarkerUsed[MarkerID] = 1; //Enabled = 1 disabled = 0
  MarkerInfo[MarkerID][markertype] = Markertype; //Marker type check https://sampwiki.blast.hk/wiki/SetPlayerMapIcon for them
  MarkerInfo[MarkerID][x] = X; //X of the icon
  MarkerInfo[MarkerID][y] = Y; //Y of the icon
  MarkerInfo[MarkerID][z] = Z; //Z of the icon
  MarkerInfo[MarkerID][color] = Color; //Color of the icon.
  MarkerInfo[MarkerID][Dist] = dist;
  return MarkerID;
}

forward Stream();
public Stream()
{
    for(new i; i<MAX_PLAYERS; i++)//Goes through all players
    {
      if(IsPlayerConnected(i)) //All online players
      {
        for(new S; S<MarkerID+1; S++) //All active Markers
        {
          if(MarkerUsed[S] == 1) //Checks if the Marker is enabled
          {
                    if(IsPlayerInRangeOfPoint(i, MarkerInfo[S][Dist], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z]) && PlayerMarkers[i][S] == 0)//Is the player close enough to the Marker and the player does not already have it streamed
                    {
                        for(new K; K<100; K++)
                        {
                          if(SlotsUsed[i][K] == 0)
                          {
                            SlotsUsed[i][K]++;
                            IconID[i][S] = K;
                            break;
                          }
                        }
                      SetPlayerMapIcon(i, IconID[i][S], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z], MarkerInfo[S][markertype], MarkerInfo[S][color]);//Create the Marker
              PlayerMarkers[i][S] = 1; //Shows the object streamed for the player
                        continue;
                    }
                }
                if(!IsPlayerInRangeOfPoint(i, MarkerInfo[S][Dist], MarkerInfo[S][x], MarkerInfo[S][y], MarkerInfo[S][z]) && PlayerMarkers[i][S] == 1) //If the player falls out of that distance the marker is destroyed
                {
                  SlotsUsed[i][IconID[i][S]] = 0;
                PlayerMarkers[i][S] = 0;
                  RemovePlayerMapIcon(i, IconID[i][S]);
                  continue;
                }
            }
        }
    }
    return 1;
}

forward Kicked(playerid);
public Kicked(playerid)
{
    SetPlayerPos(playerid, HouseInfo[InHouse[playerid]][PickupX], HouseInfo[InHouse[playerid]][PickupY], HouseInfo[InHouse[playerid]][PickupZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SendClientMessage(playerid, 0x00C4F6AA, "You have been kicked from this house for staying longer than 2 minutes");
    InHouse[playerid] = -1;
    Visiting[playerid] = -1;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    if(InHouse[playerid] == 1 && House[playerid] == InHouse[playerid])
    {
      new Pname[24];
      GetPlayerName(playerid, Pname, 24);
        dini_Set("HouseSave.ini", Pname, HouseInfo[House[playerid]][HouseNames]);
    }
    return 1;
}

public OnPlayerConnect(playerid)
{
    HouseSpawn[playerid] = -1;
    new Pname[24];
    GetPlayerName(playerid, Pname, 24);
    if(strlen(dini_Get("HouseSave.ini", Pname)) != 0)
    {
      for(new S; S < HouseCount + 1; S++)
      {
        GetPlayerName(playerid, Pname, 24);
        if(!strcmp(dini_Get("HouseSave.ini", Pname), HouseInfo[S][HouseNames]))
        {
          HouseSpawn[playerid] = S;
        }
      }
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(HouseSpawn[playerid] != -1)
    {
      new i = HouseSpawn[playerid];
    SetPlayerPos(playerid, HouseInfo[i][TeleX], HouseInfo[i][TeleY], HouseInfo[i][TeleZ]);
    SetPlayerInterior(playerid, HouseInfo[i][Interior]);
    Invited[playerid] = -1;
        InHouse[playerid] = i;
        SetPlayerVirtualWorld(playerid, HouseInfo[i][Virtual]);
        SendClientMessage(playerid, 0x00C4F6AA, "You have spawned at your house");
    }
    return 1;
}
It Doesnt work i compile with no errors, but houses arent created
This, is [HIC]TheKiller's tut right? If, so, it works perfectly fine for me
Show the errors maybe it cannot read from the dini file.
Reply
#9

Quote:
Originally Posted by xxjackoxx
Thanks but i was looking for one that the players can enter,also i tried it but i couldn't enter lol.I found a good tutorial today.But thanks jacko
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)