Raised This Month: $ Target: $400
 0% 

sql


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
lexzor
Veteran Member
Join Date: Nov 2020
Old 08-05-2021 , 05:00   sql
Reply With Quote #1

hello. i want to make a plugin but first i have to be sure that i use sql correct.

I have a piece of code that works without problems. Can someone look over it and tell me what i can improve or if i did something that can cause bugs?

PHP Code:
#include <amxmodx>
#include <sqlx>

#define VERSION "1.0"

#if !defined MAX_IP_LENGTH_WITHOUT_PORT
    #define MAX_IP_LENGTH_WITHOUT_PORT 16
#endif

#pragma semicolon 1

///// ENUM
enum _:PDATA
{
    
NAME[MAX_NAME_LENGTH],
    
STEAMID[MAX_AUTHID_LENGTH],
    
IP[MAX_IP_LENGTH_WITHOUT_PORT],
    
CASH,
    
DONATE
};

//// SQL
new Handle:g_SqlTuple;
new 
g_Error[512];
new const 
g_szTable [] = "bank";

new const 
g_szSqlData[][] =  
{
    
"",
    
"",
    
"",
    
""
};

//// VARIABLES
new const g_szPluginName[] = "BANK";
new 
g_PlayerData[MAX_PLAYERS 1][PDATA];

public 
plugin_init()
{
    
register_plugin("Bank System"VERSION"lexzor");

    
register_clcmd("points""add_points");

    
set_task(0.1"MySql_Init");
}
public 
MySql_Init()
{
    
g_SqlTuple SQL_MakeDbTuple(g_szSqlData[0], g_szSqlData[1],g_szSqlData[2], g_szSqlData[3]);
       
    new 
ErrorCode,Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error));
       
    if(
SqlConnection == Empty_Handle)
    {
        
set_fail_state(g_Error);
    }
    
    new 
Handle:Queries;
    new 
szQuery[1024];
    
    
formatex(szQuerycharsmax(szQuery), "CREATE TABLE IF NOT EXISTS %s ( `id` INT(11) NOT NULL AUTO_INCREMENT , `steamid` VARCHAR(36) NOT NULL , `points` INT(11) NOT NULL, PRIMARY KEY (`id`))"g_szTable);
    
Queries SQL_PrepareQuery(SqlConnectionszQuery);

    if(!
SQL_Execute(Queries))
    {
        
SQL_QueryError(Queries,g_Error,charsmax(g_Error));
        
set_fail_state(g_Error);
    }        
    
    
SQL_FreeHandle(Queries);
    
SQL_FreeHandle(SqlConnection);

public 
plugin_end()
{
    
SQL_FreeHandle(g_SqlTuple);
}
public 
client_authorized(id)
{
    
get_user_authid(idg_PlayerData[id][STEAMID], charsmax(g_PlayerData[][STEAMID]));
    
get_user_name(idg_PlayerData[id][NAME], charsmax(g_PlayerData[][NAME]));
}
public 
client_putinserver(id)
{
    new 
szQuery[512];
    new 
szData[1];

    
szData[0] = id;

    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `steamid` = '%s'"g_szTableg_PlayerData[id][STEAMID]);
    
SQL_ThreadQuery(g_SqlTuple"GetPoints"szQueryszData1);
}
public 
GetPoints(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
    {
        
server_print(" ");
        
server_print("[%s] SQL ERROR: %s"szErrorg_szPluginName);
        
server_print(" ");
    }

    new 
id szData[0];

    if(
SQL_NumResults(Query) != 0)
    {
        
g_PlayerData[id][CASH] = SQL_ReadResult(Query2);
    }
    else 
    {
        
g_PlayerData[id][CASH] = 0;
    }

    
server_print("[%s] %s has %i points."g_szPluginNameg_PlayerData[id][STEAMID], g_PlayerData[id][CASH]);
}

public 
add_points(id)
{
    new 
iArg read_argv_int(id);
    
server_print("%i"iArg);

    switch(
iArg)
    {
        case 
1g_PlayerData[id][CASH] += 300;
        case 
2g_PlayerData[id][CASH] -= 300;
    }

    new 
szQuery[512];
    new 
szData[2];

    
szData[0] = id;
    
szData[1] = g_PlayerData[id][CASH];

    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `steamid` = '%s'"g_szTableg_PlayerData[id][STEAMID]);
    
SQL_ThreadQuery(g_SqlTuple"Points"szQueryszData2);
}

public 
Points(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
    {
        
server_print(" ");
        
server_print("[%s] SQL ERROR: %s"szErrorg_szPluginName);
        
server_print(" ");
    }

    new 
szQuery[512];
    new 
id szData[0];
    new 
iCash szData[1];

    if(
SQL_NumResults(Query) != 0)
    {
        
formatex(szQuerycharsmax(szQuery), "UPDATE `%s` SET `points` = '%i' WHERE `steamid` = '%s'"g_szTableiCashg_PlayerData[id][STEAMID]);
    }
    else 
    {
        
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` (`steamid`,`points`) VALUES ('%s','%i')"g_szTableg_PlayerData[id][STEAMID], g_PlayerData[id][CASH]);
    }

    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);
}

public 
FreeHandle(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
    {
        
server_print(" ");
        
server_print("[%s] SQL ERROR: %s"szErrorg_szPluginName);
        
server_print(" ");
    }
    
    
SQL_FreeHandle(Query);

Thanks!

Last edited by lexzor; 08-05-2021 at 05:01.
lexzor is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 02:39.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode