Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - QUITTED_VCMP

#1
Or use this

#include <a_samp>
#include <sqlitei> // Include SQLite plugin

// Constants
#define MAX_PROPERTIES 100
#define MAX_PROPERTY_NAME 32

// Variables
enum E_PROPERTY_DATA
{
    PropertyID,
    PropertyName[MAX_PROPERTY_NAME],
    Float:PropertyX,
    Float:PropertyY,
    Float:PropertyZ,
    PropertyPrice,
    PropertyOwner[MAX_PLAYER_NAME]
};
new PropertyData[MAX_PROPERTIES][E_PROPERTY_DATA];
new TotalProperties = 0;

new DB:PropertyDB;

// Forward declarations
forward LoadProperties();
forward OnPropertyDataLoaded();

// Main function
main()
{
    print("Property System Loaded.");
}

// OnGameModeInit
public OnGameModeInit()
{
    // Open the SQLite database
    PropertyDB = db_open("properties.db");

    // Create the properties table if it doesn't exist
    db_query(PropertyDB, "CREATE TABLE IF NOT EXISTS properties (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, x FLOAT, y FLOAT, z FLOAT, price INTEGER, owner TEXT)");

    // Load properties from the database
    LoadProperties();
    return 1;
}

// OnGameModeExit
public OnGameModeExit()
{
    // Close the database connection
    db_close(PropertyDB);
    return 1;
}

// Function to load properties from the database
public LoadProperties()
{
    new DBResult:result = db_query(PropertyDB, "SELECT * FROM properties");
    if (db_num_rows(result) > 0)
    {
        for (new i = 0; i < db_num_rows(result); i++)
        {
            PropertyData[PropertyID] = db_get_field_int(result, 0);
            db_get_field(result, 1, PropertyData[PropertyName], MAX_PROPERTY_NAME);
            PropertyData[PropertyX] = db_get_field_float(result, 2);
            PropertyData[PropertyY] = db_get_field_float(result, 3);
            PropertyData[PropertyZ] = db_get_field_float(result, 4);
            PropertyData[PropertyPrice] = db_get_field_int(result, 5);
            db_get_field(result, 6, PropertyData[PropertyOwner], MAX_PLAYER_NAME);

            db_next_row(result);
            TotalProperties++;
        }
    }
    db_free_result(result);

    // Callback when properties are loaded
    OnPropertyDataLoaded();
    return 1;
}

// Callback when property data is loaded
public OnPropertyDataLoaded()
{
    printf("Loaded %d properties from the database.", TotalProperties);
    return 1;
}

// Command to create a property
CMD:createproperty(playerid, params[])
{
    new name[MAX_PROPERTY_NAME], price;
    if (sscanf(params, "s[32]d", name, price))
        return SendClientMessage(playerid, 0xFF0000AA, "Usage: /createproperty [name] [price]");

    if (TotalProperties >= MAX_PROPERTIES)
        return SendClientMessage(playerid, 0xFF0000AA, "Maximum properties reached!");

    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);

    // Save property to the database
    new query[256];
    format(query, sizeof(query), "INSERT INTO properties (name, x, y, z, price, owner) VALUES ('%s', %f, %f, %f, %d, 'None')", name, x, y, z, price);
    db_query(PropertyDB, query);

    // Add property to the in-memory array
    PropertyData[TotalProperties][PropertyID] = db_last_insert_rowid(PropertyDB);
    strcpy(PropertyData[TotalProperties][PropertyName], name);
    PropertyData[TotalProperties][PropertyX] = x;
    PropertyData[TotalProperties][PropertyY] = y;
    PropertyData[TotalProperties][PropertyZ] = z;
    PropertyData[TotalProperties][PropertyPrice] = price;
    strcpy(PropertyData[TotalProperties][PropertyOwner], "None");

    TotalProperties++;

    SendClientMessage(playerid, 0x00FF00AA, "Property created successfully!");
    return 1;
}

// Command to buy a property
CMD:buyproperty(playerid, params[])
{
    new propertyid;
    if (sscanf(params, "d", propertyid))
        return SendClientMessage(playerid, 0xFF0000AA, "Usage: /buyproperty [propertyid]");

    if (propertyid < 0 || propertyid >= TotalProperties)
        return SendClientMessage(playerid, 0xFF0000AA, "Invalid property ID!");

    if (strcmp(PropertyData[propertyid][PropertyOwner], "None") != 0)
        return SendClientMessage(playerid, 0xFF0000AA, "This property is already owned!");

    // Check if the player has enough money
    if (GetPlayerMoney(playerid) < PropertyData[propertyid][PropertyPrice])
        return SendClientMessage(playerid, 0xFF0000AA, "You don't have enough money to buy this property!");

    // Deduct money and assign ownership
    GivePlayerMoney(playerid, -PropertyData[propertyid][PropertyPrice]);
    strcpy(PropertyData[propertyid][PropertyOwner], GetPlayerName(playerid));

    // Update the database
    new query[128];
    format(query, sizeof(query), "UPDATE properties SET owner = '%s' WHERE id = %d", GetPlayerName(playerid), PropertyData[propertyid][PropertyID]);
    db_query(PropertyDB, query);

    SendClientMessage(playerid, 0x00FF00AA, "You have successfully bought this property!");
    return 1;
}

// Command to list properties
CMD:properties(playerid, params[])
{
    for (new i = 0; i < TotalProperties; i++)
    {
        new msg[128];
        format(msg, sizeof(msg), "Property ID: %d | Name: %s | Price: $%d | Owner: %s", i, PropertyData[PropertyName], PropertyData[PropertyPrice], PropertyData[PropertyOwner]);
        SendClientMessage(playerid, 0xFFFFFFAA, msg);
    }
    return 1;
}

// Helper function to get player name
stock GetPlayerName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    return name;
}




It will save to db
   
#2
Bro check your database ;D
#3
Script Showroom / Re: Vcmp my new script
Feb 06, 2025, 03:16 PM
Is this working ???
#4
Script Showroom / Vcmp my new script
Feb 06, 2025, 11:04 AM
PLS ANY ONE TRY THIS SCRIPT AND TELL ME ITS WORK OR NOT ;D .Coz i quitted vcmp :'(
   
Script by: =PK=NO

        The script
 

#include <a_samp> // Include the VC:MP server library

#define MAX_PLAYERS 100

enum PlayerData {
    bool:IsRegistered,
    bool:IsLoggedIn,
    Password[129], // Hashed password
    Kills,
    Deaths,
    Money
};

new PlayerInfo[MAX_PLAYERS][PlayerData];

public OnPlayerConnect(playerid) {
    // Reset player data on connect
    PlayerInfo[playerid][IsRegistered] = false;
    PlayerInfo[playerid][IsLoggedIn] = false;
    PlayerInfo[playerid][Password] = "";
    PlayerInfo[playerid][Kills] = 0;
    PlayerInfo[playerid][Deaths] = 0;
    PlayerInfo[playerid][Money] = 0;

    // Load player data from file (if registered)
    LoadPlayerData(playerid);

    // Show registration/login dialog
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Welcome!", "Do you have an account?", "Login", "Register");
    return 1;
}

public OnPlayerDisconnect(playerid, reason) {
    // Save player data on disconnect
    SavePlayerData(playerid);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    if (dialogid == 1) {
        if (response) {
            // Login
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login", "Enter your password:", "Submit", "Cancel");
        } else {
            // Register
            ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "Register", "Choose a password:", "Submit", "Cancel");
        }
    } else if (dialogid == 2) {
        // Check login password
        if (strcmp(inputtext, PlayerInfo[playerid][Password], true) == 0) {
            PlayerInfo[playerid][IsLoggedIn] = true;
            SendClientMessage(playerid, 0x00FF00FF, "Login successful!");
        } else {
            SendClientMessage(playerid, 0xFF0000FF, "Incorrect password!");
        }
    } else if (dialogid == 3) {
        // Register new player
        if (strlen(inputtext) < 6) {
            SendClientMessage(playerid, 0xFF0000FF, "Password must be at least 6 characters long!");
            return 1;
        }

        PlayerInfo[playerid][IsRegistered] = true;
        PlayerInfo[playerid][Password] = inputtext; // In a real script, hash the password!
        PlayerInfo[playerid][IsLoggedIn] = true;
        SendClientMessage(playerid, 0x00FF00FF, "Registration successful!");
    }
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason) {
    if (killerid != INVALID_PLAYER_ID) {
        PlayerInfo[killerid][Kills]++;
        PlayerInfo[playerid][Deaths]++;
        PlayerInfo[killerid][Money] += 100; // Reward for kill
        SendClientMessage(killerid, 0x00FF00FF, "You killed a player! +$100");
    }
    return 1;
}

LoadPlayerData(playerid) {
    // Load player data from a file (e.g., using INI or SQLite)
    // Example: Load kills, deaths, money, and password
    // This is a placeholder; implement file handling as needed
}

SavePlayerData(playerid) {
    // Save player data to a file (e.g., using INI or SQLite)
    // Example: Save kills, deaths, money, and password
    // This is a placeholder; implement file handling as needed
}




2.0 script
       



#include <a_samp> // Include the VC:MP server library

#define MAX_PLAYERS 100
#define MAX_ADMIN_LEVEL 3 // Define admin levels (e.g., 1 = Moderator, 2 = Admin, 3 = Super Admin)

enum PlayerData {
    bool:IsRegistered,
    bool:IsLoggedIn,
    Password[129], // Hashed password
    Kills,
    Deaths,
    Money,
    AdminLevel // Admin level (0 = Regular player, 1-3 = Admin levels)
};

new PlayerInfo[MAX_PLAYERS][PlayerData];

public OnPlayerConnect(playerid) {
    // Reset player data on connect
    PlayerInfo[playerid][IsRegistered] = false;
    PlayerInfo[playerid][IsLoggedIn] = false;
    PlayerInfo[playerid][Password] = "";
    PlayerInfo[playerid][Kills] = 0;
    PlayerInfo[playerid][Deaths] = 0;
    PlayerInfo[playerid][Money] = 0;
    PlayerInfo[playerid][AdminLevel] = 0; // Default to no admin privileges

    // Load player data from file (if registered)
    LoadPlayerData(playerid);

    // Show registration/login dialog
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Welcome!", "Do you have an account?", "Login", "Register");
    return 1;
}

public OnPlayerDisconnect(playerid, reason) {
    // Save player data on disconnect
    SavePlayerData(playerid);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    if (dialogid == 1) {
        if (response) {
            // Login
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login", "Enter your password:", "Submit", "Cancel");
        } else {
            // Register
            ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "Register", "Choose a password:", "Submit", "Cancel");
        }
    } else if (dialogid == 2) {
        // Check login password
        if (strcmp(inputtext, PlayerInfo[playerid][Password], true) == 0) {
            PlayerInfo[playerid][IsLoggedIn] = true;
            SendClientMessage(playerid, 0x00FF00FF, "Login successful!");
        } else {
            SendClientMessage(playerid, 0xFF0000FF, "Incorrect password!");
        }
    } else if (dialogid == 3) {
        // Register new player
        if (strlen(inputtext) < 6) {
            SendClientMessage(playerid, 0xFF0000FF, "Password must be at least 6 characters long!");
            return 1;
        }

        PlayerInfo[playerid][IsRegistered] = true;
        PlayerInfo[playerid][Password] = inputtext; // In a real script, hash the password!
        PlayerInfo[playerid][IsLoggedIn] = true;
        SendClientMessage(playerid, 0x00FF00FF, "Registration successful!");
    }
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason) {
    if (killerid != INVALID_PLAYER_ID) {
        PlayerInfo[killerid][Kills]++;
        PlayerInfo[playerid][Deaths]++;
        PlayerInfo[killerid][Money] += 100; // Reward for kill
        SendClientMessage(killerid, 0x00FF00FF, "You killed a player! +$100");
    }
    return 1;
}

LoadPlayerData(playerid) {
    // Load player data from a file (e.g., using INI or SQLite)
    // Example: Load kills, deaths, money, password, and admin level
    // This is a placeholder; implement file handling as needed
}

SavePlayerData(playerid) {
    // Save player data to a file (e.g., using INI or SQLite)
    // Example: Save kills, deaths, money, password, and admin level
    // This is a placeholder; implement file handling as needed
}

// Admin commands
public OnPlayerCommandText(playerid, cmdtext[]) {
    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);

    if (strcmp(cmd, "/kick", true) == 0) {
        if (PlayerInfo[playerid][AdminLevel] < 1) {
            SendClientMessage(playerid, 0xFF0000FF, "You do not have permission to use this command!");
            return 1;
        }

        new targetid, reason[128];
        targetid = strval(strtok(cmdtext, idx));
        reason = strtok(cmdtext, idx);

        if (!IsPlayerConnected(targetid)) {
            SendClientMessage(playerid, 0xFF0000FF, "Player is not connected!");
            return 1;
        }

        if (strlen(reason) == 0) {
            SendClientMessage(playerid, 0xFF0000FF, "Usage: /kick <playerid> <reason>");
            return 1;
        }

        Kick(targetid);
        SendClientMessageToAll(0xFF0000FF, sprintf("%s has been kicked by an admin. Reason: %s", GetPlayerName(targetid), reason));
        return 1;
    }

    if (strcmp(cmd, "/ban", true) == 0) {
        if (PlayerInfo[playerid][AdminLevel] < 2) {
            SendClientMessage(playerid, 0xFF0000FF, "You do not have permission to use this command!");
            return 1;
        }

        new targetid, reason[128];
        targetid = strval(strtok(cmdtext, idx));
        reason = strtok(cmdtext, idx);

        if (!IsPlayerConnected(targetid)) {
            SendClientMessage(playerid, 0xFF0000FF, "Player is not connected!");
            return 1;
        }

        if (strlen(reason) == 0) {
            SendClientMessage(playerid, 0xFF0000FF, "Usage: /ban <playerid> <reason>");
            return 1;
        }

        Ban(targetid);
        SendClientMessageToAll(0xFF0000FF, sprintf("%s has been banned by an admin. Reason: %s", GetPlayerName(targetid), reason));
        return 1;
    }

    if (strcmp(cmd, "/givemoney", true) == 0) {
        if (PlayerInfo[playerid][AdminLevel] < 3) {
            SendClientMessage(playerid, 0xFF0000FF, "You do not have permission to use this command!");
            return 1;
        }

        new targetid, amount;
        targetid = strval(strtok(cmdtext, idx));
        amount = strval(strtok(cmdtext, idx));

        if (!IsPlayerConnected(targetid)) {
            SendClientMessage(playerid, 0xFF0000FF, "Player is not connected!");
            return 1;
        }

        if (amount <= 0) {
            SendClientMessage(playerid, 0xFF0000FF, "Usage: /givemoney <playerid> <amount>");
            return 1;
        }

        PlayerInfo[targetid][Money] += amount;
        SendClientMessage(targetid, 0x00FF00FF, sprintf("You have received $%d from an admin.", amount));
        SendClientMessage(playerid, 0x00FF00FF, sprintf("You have given $%d to %s.", amount, GetPlayerName(targetid)));
        return 1;
    }

    if (strcmp(cmd, "/tp", true) == 0) {
        if (PlayerInfo[playerid][AdminLevel] < 1) {
            SendClientMessage(playerid, 0xFF0000FF, "You do not have permission to use this command!");
            return 1;
        }

        new targetid;
        targetid = strval(strtok(cmdtext, idx));

        if (!IsPlayerConnected(targetid)) {
            SendClientMessage(playerid, 0xFF0000FF, "Player is not connected!");
            return 1;
        }

        new Float:x, Float:y, Float:z;
        GetPlayerPos(targetid, x, y, z);
        SetPlayerPos(playerid, x, y, z);
        SendClientMessage(playerid, 0x00FF00FF, sprintf("You have teleported to %s.", GetPlayerName(targetid)));
        return 1;
    }

    if (strcmp(cmd, "/setadmin", true) == 0) {
        if (PlayerInfo[playerid][AdminLevel] < 3) {
            SendClientMessage(playerid, 0xFF0000FF, "You do not have permission to use this command!");
            return 1;
        }

        new targetid, level;
        targetid = strval(strtok(cmdtext, idx));
        level = strval(strtok(cmdtext, idx));

        if (!IsPlayerConnected(targetid)) {
            SendClientMessage(playerid, 0xFF0000FF, "Player is not connected!");
            return 1;
        }

        if (level < 0 || level > MAX_ADMIN_LEVEL) {
            SendClientMessage(playerid, 0xFF0000FF, "Invalid admin level!");
            return 1;
        }

        PlayerInfo[targetid][AdminLevel] = level;
        SendClientMessage(playerid, 0x00FF00FF, sprintf("You have set %s's admin level to %d.", GetPlayerName(targetid), level));
        SendClientMessage(targetid, 0x00FF00FF, sprintf("Your admin level has been set to %d by an admin.", level));
        return 1;
    }

    return 0;
}