[FilterScript] iHouse (MySQL) v1 | ZCMD
#1

iHouse Filterscript v1

Well hello there, partner! I'm back with a new filterscript. This is a house Filterscript that saves the following:
  • Owner
  • Interior positons
  • Sell Price
  • ID

You can do the following:

Move houses IG,
Change House interiors IG,

If you are the owner of a house, you will spawn inside your home.

I wont speak to much about it becasue there isn't much to talk about. But anyway! Hope it becomes useful for those who need it.

pawn Код:
#include <a_samp>
#include <a_mysql>
#include <string>
#include <streamer>
#include <a_zones>

#define mysql_host          "localhost" // MySQL host. Default set.
#define mysql_user          "root" // MySQL user. Default set
#define mysql_password      " " // Password. Default is set.
#define mysql_database      " " // MySQL Database. (Change)

#define ALTCOMMAND:%1->%2;                     \
            COMMAND:%1(playerid, params[])     \
                return cmd_%2(playerid, params);

#define HouseLoop(%1) for(new %1 = 0; %1 <sizeof(House); %1++)

enum iHouse
{
    hID,
    Float:outX, // Exterior
    Float:outY, // Exterior
    Float:outZ, // Exterior
    Float:intX, // Interior
    Float:intY, // Interior
    Float:intZ, // Interior
    intVW, // Interior
    intINT,  // Interior
    Text3D:outLabel,  // House Exterior label
    owner[ 250 ],  // House owner - displays on Label
    sellprice, // If > than 0 it will be classed as on sale!
}

new House[][iHouse] = {
    {0,         0.0,0.0,0.0,    0.0,0.0,0.0,            1},
    {1,         0.0,0.0,0.0,    0.0,0.0,0.0,            2},
    {2,         0.0,0.0,0.0,    0.0,0.0,0.0,            3},
    {3,         0.0,0.0,0.0,    0.0,0.0,0.0,            4},
    {4,         0.0,0.0,0.0,    0.0,0.0,0.0,            5},
    {5,         0.0,0.0,0.0,    0.0,0.0,0.0,            6},
    {6,         0.0,0.0,0.0,    0.0,0.0,0.0,            7},
    {7,         0.0,0.0,0.0,    0.0,0.0,0.0,            8},
    {8,         0.0,0.0,0.0,    0.0,0.0,0.0,            9},
    {9,         0.0,0.0,0.0,    0.0,0.0,0.0,            10},
    {10,        0.0,0.0,0.0,    0.0,0.0,0.0,            11},
    {11,        0.0,0.0,0.0,    0.0,0.0,0.0,            12},
    {12,        0.0,0.0,0.0,    0.0,0.0,0.0,            13},
    {13,        0.0,0.0,0.0,    0.0,0.0,0.0,            14},
    {14,        0.0,0.0,0.0,    0.0,0.0,0.0,            15},
    {15,        0.0,0.0,0.0,    0.0,0.0,0.0,            16},
    {16,        0.0,0.0,0.0,    0.0,0.0,0.0,            17},
    {17,        0.0,0.0,0.0,    0.0,0.0,0.0,            18},
    {18,        0.0,0.0,0.0,    0.0,0.0,0.0,            19},
    {19,        0.0,0.0,0.0,    0.0,0.0,0.0,            20},
    {20,        0.0,0.0,0.0,    0.0,0.0,0.0,            21},
    {21,        0.0,0.0,0.0,    0.0,0.0,0.0,            22},
    {22,        0.0,0.0,0.0,    0.0,0.0,0.0,            23},
    {23,        0.0,0.0,0.0,    0.0,0.0,0.0,            24},
    {24,        0.0,0.0,0.0,    0.0,0.0,0.0,            25},
    {25,        0.0,0.0,0.0,    0.0,0.0,0.0,            26},
    {26,        0.0,0.0,0.0,    0.0,0.0,0.0,            27},
    {27,        0.0,0.0,0.0,    0.0,0.0,0.0,            28},
    {28,        0.0,0.0,0.0,    0.0,0.0,0.0,            29},
    {29,        0.0,0.0,0.0,    0.0,0.0,0.0,            30},
    {30,        0.0,0.0,0.0,    0.0,0.0,0.0,            31},
    {31,        0.0,0.0,0.0,    0.0,0.0,0.0,            32},
    {32,        0.0,0.0,0.0,    0.0,0.0,0.0,            33},
    {33,        0.0,0.0,0.0,    0.0,0.0,0.0,            34},
    {34,        0.0,0.0,0.0,    0.0,0.0,0.0,            35},
    {35,        0.0,0.0,0.0,    0.0,0.0,0.0,            36},
    {36,        0.0,0.0,0.0,    0.0,0.0,0.0,            37},
    {37,        0.0,0.0,0.0,    0.0,0.0,0.0,            38},
    {38,        0.0,0.0,0.0,    0.0,0.0,0.0,            39},
    {39,        0.0,0.0,0.0,    0.0,0.0,0.0,            40},
    {40,        0.0,0.0,0.0,    0.0,0.0,0.0,            41},
    {41,        0.0,0.0,0.0,    0.0,0.0,0.0,            42},
    {42,        0.0,0.0,0.0,    0.0,0.0,0.0,            43},
    {43,        0.0,0.0,0.0,    0.0,0.0,0.0,            44},
    {44,        0.0,0.0,0.0,    0.0,0.0,0.0,            45},
    {45,        0.0,0.0,0.0,    0.0,0.0,0.0,            46},
    {46,        0.0,0.0,0.0,    0.0,0.0,0.0,            47},
    {47,        0.0,0.0,0.0,    0.0,0.0,0.0,            48},
    {48,        0.0,0.0,0.0,    0.0,0.0,0.0,            49},
    {49,        0.0,0.0,0.0,    0.0,0.0,0.0,            50}
};

forward mysql_start();
public mysql_start()
{
    mysql_debug(1);
    if(mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password))
    {
        print("[MYSQL] Connection successful!");
    }
    else
    {
        print("[MYSQL] There was an error connecting to the MYSQL server");
    }
    return 1;
}

public OnFilterScriptInit()
{
    mysql_start();
 /*     mysql_query("CREATE TABLE IF NOT EXISTS HouseInfo (\
    hID INT(150) UNSIGNED NOT NULL DEFAULT 0,\
    outX float NOT NULL DEFAULT '0',\
    outY float NOT NULL DEFAULT '0',\
    outZ float NOT NULL DEFAULT '0',\
    intX float NOT NULL DEFAULT '0',\
    intY float NOT NULL DEFAULT '0',\
    intZ float NOT NULL DEFAULT '0',\
    intINT INT(25) UNSIGNED NOT NULL DEFAULT 0,\
    intVW INT(25) UNSIGNED NOT NULL DEFAULT 0,\
    sellprice INT(225) UNSIGNED NOT NULL DEFAULT 0,\
    owner VARCHAR(225) NOT NULL DEFAULT 'Noone')");*/

    LoadHouse();
    new avayable, tmps[250], string[250];
    HouseLoop(h)
    {
        if(House[h][sellprice] >= 1) { avayable = House[h][sellprice]; }
        else { avayable = 0; }
        new zone[60];
        GetZone(House[h][outX],House[h][outY],House[h][outZ], zone);
        format(tmps, 256, "{FF0000}[ {FFDAB9}%d, %s{FF0000}]\n{FFDAB9}Owner: {FF0000}%s", h, zone, House[h][owner]);
        format(string, sizeof(string), "\n{FFDAB9}For Sale: {FF0000}$%s", House[h][sellprice]);
        if(avayable) { strcat(tmps, string); }
        House[h][outLabel] = CreateDynamic3DTextLabel(tmps, -1, House[h][outX], House[h][outY], House[h][outZ]+0.3, 20.0);
    }
    return 1;
}

public OnFilterScriptExit()
{
    HouseLoop(h)
    {
        SaveHouses(h);
    }
    mysql_close();
    return 1;
}
/*
From other people....
*/

stock myStrcpy(dest[], src[])
{
    new i = 0;
    while ((dest[i] = src[i])) i++;
}

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

stock IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    {
                if (string[i] > '9' || string[i] < '0')
        {
            return 0;
        }
    }
    return 1;
}
/*
Finish
*/

main()
{
    print("\n---------------------------------------");
    print(" Player house System by your boy GiGi!");
    print("---------------------------------------\n");
}

public OnPlayerSpawn(playerid)
{
    HouseLoop(h)
    {
        new owner1[24], pname[24];
        GetPlayerName(playerid, pname, sizeof(pname));
        format(owner1, sizeof(owner1),"%s",pname);
       
        myStrcpy(owner1, House[h][owner]);
        if(strcmp(pname,owner1,false)==0)
        {
            SetPlayerVirtualWorld(playerid, House[h][intVW]);
            SetPlayerInterior(playerid, House[h][intINT]);
            SetPlayerPos(playerid, House[h][intX], House[h][intY], House[h][intZ]);
        }
        else
        {
            SetPlayerVirtualWorld(playerid, 0);
            SetPlayerInterior(playerid, 0);
            SetPlayerPos(playerid,2771.63770, -1616.57593, 10.88870); // Some random spawn from Grand Lanrc :S
        }
    }
    return 1;
}

stock HouseExitOrEnter(playerid)
{
    HouseLoop(h)
    {
        if(IsPlayerInRangeOfPoint(playerid, 5.0, House[h][intX], House[h][intY], House[h][intZ]))
        {
            new playerINT = GetPlayerInterior(playerid), playerVW = GetPlayerVirtualWorld(playerid);
            if(playerINT == House[h][intINT])
            {
                if(playerVW == House[h][intVW])
                {
                    SetPlayerInterior(playerid, 0);
                    SetPlayerVirtualWorld(playerid, 0);
                    SetPlayerPos(playerid, House[h][outX], House[h][outY], House[h][outZ]);
                }
            }
        }
        if(IsPlayerInRangeOfPoint(playerid, 5.0, House[h][outX], House[h][outY], House[h][outZ]))
        {
            new playerINT = GetPlayerInterior(playerid), playerVW = GetPlayerVirtualWorld(playerid);
            if(playerINT == 0)
            {
                if(playerVW == 0)
                {
                    SetPlayerInterior(playerid, House[h][intINT]);
                    SetPlayerVirtualWorld(playerid, House[h][intVW]);
                    SetPlayerPos(playerid, House[h][intX], House[h][intY], House[h][intZ]);
                }
            }
        }
    }
    return 1;
}

stock SaveHouses(h) // Saved every variable sepratly. - More simple.
{
    new query[750];
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `outX`='%f' WHERE `hID`=%d", House[h][outX], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `outY`='%f' WHERE `hID`=%d", House[h][outY], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `outZ`='%f' WHERE `hID`=%d", House[h][outZ], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `intX`='%f' WHERE `hID`=%d", House[h][intX], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `intY`='%f' WHERE `hID`=%d", House[h][intY], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `intZ`='%f' WHERE `hID`=%d", House[h][intZ], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `intVW`='%d' WHERE `hID`=%d", House[h][intVW], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `intINT`='%d' WHERE `hID`=%d", House[h][intINT], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `owner`='%s' WHERE `hID`=%d", House[h][owner], h);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `HouseInfo` SET `sellprice`='%d' WHERE `hID`=%d", House[h][sellprice], h);
    mysql_query(query);
    return 1;
}

stock LoadHouse() //FAILED!
{
    HouseLoop(h)
    {
        new query[250];
        format(query, sizeof(query),"SELECT * FROM `HouseInfo` WHERE `hID`=%d", h);
        mysql_query(query);
        mysql_store_result();
        new rows = mysql_num_rows();
        if(rows == 1)
        {
            ReloadHouse(h);
        }
        if(!rows)
        {
            format(query,sizeof(query),"INSERT INTO `HouseInfo` (hID) VALUES (%d);", h);
            mysql_query(query);
//==============================================================================
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `intX`='0.0' WHERE `hID`=%d", House[h][intX], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `intY`='0.0' WHERE `hID`=%d", House[h][intY], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `intZ`='0.0' WHERE `hID`=%d", House[h][intZ], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `outX`='%f' WHERE `hID`=%d", House[h][intX], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `outY`='%f' WHERE `hID`=%d", House[h][intY], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `outZ`='%f' WHERE `hID`=%d", House[h][intZ], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `intVW`='%d' WHERE `hID`=%d", House[h][intVW], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `intINT`='%d' WHERE `hID`=%d", House[h][intINT], h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `owner`='None' WHERE `hID`=%d", h);
            mysql_query(query);
            format(query, sizeof(query), "UPDATE `HouseInfo` SET `sellprice`='%d' WHERE `hID`=%d", House[h][sellprice], h);
            mysql_query(query);
            ReloadHouse(h);
        }
        mysql_free_result();
    }
}

stock ReloadHouse(i) //FAILED!
{
    DestroyDynamic3DTextLabel(House[i][outLabel]);

    new query[300], savingstring[20];
    format(query, sizeof(query), "SELECT * FROM `HouseInfo` WHERE `hID`=%d", i);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
        mysql_fetch_field_row(savingstring, "hID");
        House[i][hID] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "outX");
        House[i][outX] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "outY");
        House[i][outY] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "outZ");
        House[i][outZ] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "intX");
        House[i][intX] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "intY");
        House[i][intY] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "intZ");
        House[i][intZ] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "intVW");
        House[i][intVW] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "intINT");
        House[i][intINT] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "owner");
        strmid(House[i][owner], savingstring, 0, strlen(savingstring), 50);
        mysql_fetch_field_row(savingstring, "sellprice");
        House[i][sellprice] = strval(savingstring);
    }
    mysql_free_result();
    new avayable, string[250], tmps[100];
    if(House[i][sellprice] >= 1) { avayable = House[i][sellprice]; }
    else { avayable = 0; }
    new zone[60];
    GetZone(House[i][outX],House[i][outY],House[i][outZ], zone);
    format(tmps, 256, "{FF0000}[ {FFDAB9}%d, %s{FF0000}]\n{FFDAB9}Owner: {FF0000}%s", i, zone, House[i][owner]);
    format(string, sizeof(string), "\n{FFDAB9}For Sale: {FF0000}$%s", House[i][sellprice]);
    if(avayable) { strcat(tmps, string); }
    House[i][outLabel] = CreateDynamic3DTextLabel(tmps, -1, House[i][outX], House[i][outY], House[i][outZ]+0.3, 20.0);
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & 16 && !IsPlayerInAnyVehicle(playerid))
    {
        HouseExitOrEnter(playerid);
    }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    new cmd[256];
    new query[250];
    new where[150];

    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/move", true) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "You are not a RCON admin");
        new iHouse1;
        new Float:ok[3];
        GetPlayerPos(playerid, ok[0], ok[1], ok[2]);
        format(query, sizeof(query), "UPDATE HouseInfo SET outX=%f, outY=%f, outZ=%f WHERE hID=%d", ok[0], ok[1], ok[2], iHouse1);
        mysql_query(query);
        format(where, sizeof(where),"[House] %d house has been moved to the coords: %f,%f,%f",ok[0],ok[1],ok[2]);
        SendClientMessage(playerid, -1, where);
        ReloadHouse(iHouse1);
    }
    if(strcmp(cmd, "/setinterior", true) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "You are not a RCON admin");
        new iHouse1;
        new Float:ok[3];
        GetPlayerPos(playerid, ok[0], ok[1], ok[2]);
        new playerint = GetPlayerInterior(playerid), playervw = GetPlayerVirtualWorld(playerid);
        format(query, sizeof(query), "UPDATE HouseInfo SET intX=%f, intY=%f, intZ=%f, intINT=%d, intVW=%d WHERE hID=%d", ok[0], ok[1], ok[2], playerint, playervw, iHouse1);
        mysql_query(query);
        format(where, sizeof(where),"[House] %d interior has been set to the coords: %f,%f,%f",ok[0],ok[1],ok[2]);
        SendClientMessage(playerid, -1, where);
        ReloadHouse(iHouse1);
    }
    if(strcmp(cmd, "/reloadall", true) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "You are not a RCON admin");
        HouseLoop(i)
        {
            ReloadHouse(i);
        }
        return 1;
    }
    return 0;
}
Preview:


* Note: This is a very basic script. Suitable for people of all levels. I have done this script strictly for revision.
* Note: I HAVE NOT FULLY TESTED EVERYTHING. IF BUGS FOUND! Please report to me for future updates or revisions.
Reply
#2

Good
Reply
#3

Thank you.
Reply
#4

Please paste GetZone stock OR public..
Reply
#5

How i can add Interior
Reply
#6

Wow awesome!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)