AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Add mysql save to plugin, Compile errors (https://forums.alliedmods.net/showthread.php?t=147594)

PimP517 01-11-2011 09:00

Add mysql save to plugin, Compile errors
 
[IMG]http://img46.**************/img46/6941/zmiana.png[/IMG]

Line 2987:
Code:

    format(szTemp,charsmax(szTemp),"UPDATE `cod_stats` SET  `doswiadczenie` = '%i', `poziom` = '%i', `inteligencja` = '%i',  `zdrowie` = '%i', `wytrzymalosc` = '%i', `kondycja` = '%i',  `wytrzymaloscitemu` = '%i' WHERE `cod_stats`.`nazwa` = '%s', `klasa` =  '%s';", doswiadczenie_gracza[id],  poziom_gracza[id],  inteligencja_gracza[id], zdrowie_gracza[id],  wytrzymalosc_gracza[id],  kondycja_gracza[id],  wytrzymaloscitemu_gracza[id]), nazwa_gracza[id],  klasa_gracza[id]);

Sylwester 01-11-2011 09:37

Re: Add mysql save to plugin, Compile errors
 
try this:
Code:

    format(szTemp,charsmax(szTemp),"UPDATE `cod_stats` SET  `doswiadczenie` = '%i', `poziom` = '%i', `inteligencja` = '%i',  `zdrowie` = '%i', `wytrzymalosc` = '%i', `kondycja` = '%i',  `wytrzymaloscitemu` = '%i' WHERE `cod_stats`.`nazwa` = '%s', `klasa` =  '%s';", doswiadczenie_gracza[id],  poziom_gracza[id],  inteligencja_gracza[id], zdrowie_gracza[id],  wytrzymalosc_gracza[id],  kondycja_gracza[id],  wytrzymaloscitemu_gracza[id], nazwa_gracza[id],  klasa_gracza[id]);

PimP517 01-11-2011 13:08

Re: Add mysql save to plugin, Compile errors
 
Works.
But is not saving.
Can u check

Table is created
Code:

public MySql_Init()
{
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
    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
    Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS cod_stats (nazwa varchar(255),klasa varchar(255),doswiadczenie varchar(255),poziom varchar(255),inteligencja varchar(255),zdrowie varchar(255),wytrzymalosc varchar(255),kondycja varchar(255),wytrzymaloscitemu varchar(255),sid varchar(255))")

    if(!SQL_Execute(Queries))
    {
        SQL_QueryError(Queries,g_Error,charsmax(g_Error))
        set_fail_state(g_Error)

    }
    SQL_FreeHandle(Queries)
    SQL_FreeHandle(SqlConnection)
}

Save

Code:

public ZapiszDane(id)
{
  new szTemp[512];

  format(szTemp,charsmax(szTemp),"UPDATE `cod_stats` SET  `doswiadczenie` = '%i', `poziom` = '%i', `inteligencja` = '%i',  `zdrowie` = '%i', `wytrzymalosc` = '%i', `kondycja` = '%i',  `wytrzymaloscitemu` = '%i' WHERE `cod_stats`.`nazwa` = '%s', `klasa` =  '%s';", doswiadczenie_gracza[id],  poziom_gracza[id],  inteligencja_gracza[id], zdrowie_gracza[id],  wytrzymalosc_gracza[id],  kondycja_gracza[id],  wytrzymaloscitemu_gracza[id], nazwa_gracza[id],  klasa_gracza[id]);
  SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp);

}

Load
Code:

public WczytajDane(id, klasa)
{
    new szSteamId[32], szTemp[512]
    get_user_authid(id, szSteamId, charsmax(szSteamId))
   
    new Data[1]
    Data[0] = id

    new doswiadczeniegracza[32], poziomgracza[32], inteligencjagracza[32], silagracza[32], zrecznoscgracza[32], zwinnoscgracza[32], wytrzitemu[32];

    format(szTemp,charsmax(szTemp),"SELECT * FROM `cod_stats` WHERE (`cod_stats`.`nazwa` = '%s', `klasa` = '%s')", nazwa_gracza[id],  klasa_gracza[id]);
    SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)

    doswiadczenie_gracza[id] = str_to_num(doswiadczeniegracza);
    poziom_gracza[id] = str_to_num(poziomgracza)>0?str_to_num(poziomgracza):1;
    inteligencja_gracza[id] = str_to_num(inteligencjagracza);
    zdrowie_gracza[id] = str_to_num(silagracza);
    wytrzymalosc_gracza[id] = str_to_num(zrecznoscgracza);
    kondycja_gracza[id] = str_to_num(zwinnoscgracza);
    wytrzymaloscitemu_gracza[id] = str_to_num(wytrzitemu);
    punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-wytrzymaloscitemu_gracza[id];

}


public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(FailState == TQUERY_CONNECT_FAILED)
    {
        log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
    }
    else if(FailState == TQUERY_QUERY_FAILED)
    {
        log_amx("Load Query failed. [%d] %s", Errcode, Error)
    }

    new id
    id = Data[0]
   
    if(SQL_NumResults(Query) < 1)
    {

        new szTemp[512]
       
        // now we will insturt the values into our table.
        format(szTemp,charsmax(szTemp),"INSERT IF NOT EXISTS INTO `cod_stats` (`nazwa`, klasa`, `doswiadczenie`, `poziom`, `inteligencja`, `zdrowie`, `wytrzymalosc`, `kondycja`, `wytrzymaloscitemu`)VALUES ('%s','%s','0','0','0','0','0','0','0');",nazwa_gracza[id], klasa_gracza[id])
        SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)

    }
    else
    {
    doswiadczenie_gracza[id]=SQL_ReadResult(Query, 1)
    poziom_gracza[id]=SQL_ReadResult(Query, 1)
    inteligencja_gracza[id]=SQL_ReadResult(Query, 1)
    zdrowie_gracza[id]=SQL_ReadResult(Query, 1)
    wytrzymalosc_gracza[id]=SQL_ReadResult(Query, 1)
    kondycja_gracza[id]=SQL_ReadResult(Query, 1)
    wytrzymaloscitemu_gracza[id]=SQL_ReadResult(Query, 1)
    }
   
    return PLUGIN_HANDLED


public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    SQL_FreeHandle(Query)
   
    return PLUGIN_HANDLED
}


public plugin_end()
{
    SQL_FreeHandle(g_SqlTuple)
}


Sylwester 01-11-2011 14:06

Re: Add mysql save to plugin, Compile errors
 
What a mess...

Create table:
PHP Code:

public MySql_Init()
{
    
g_SqlTuple SQL_MakeDbTuple(Host,User,Pass,Db)
    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
    Queries 
SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS cod_stats (nazwa varchar(64),klasa varchar(64),doswiadczenie INT(11),poziom INT(11),inteligencja INT(11),zdrowie INT(11),wytrzymalosc INT(11),kondycja INT(11),wytrzymaloscitemu INT(11), PRIMARY KEY (nazwa, klasa));")

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


Save:
PHP Code:

public ZapiszDane(id)
{
    new 
szTemp[512];
    
format(szTemp,charsmax(szTemp),"REPLACE INTO cod_stats (nazwa, klasa, doswiadczenie, poziom, inteligencja, zdrowie, wytrzymalosc, kondycja, wytrzymaloscitemu) VALUES ('%s','%s','%d','%d','%d','%d','%d','%d','%d');"nazwa_gracza[id], klasa_gracza[id], doswiadczenie_gracza[id],  poziom_gracza[id],  inteligencja_gracza[id], zdrowie_gracza[id],  wytrzymalosc_gracza[id],  kondycja_gracza[id], wytrzymaloscitemu_gracza[id])
    
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp);


Load:
PHP Code:


public WczytajDane(idklasa)
{
    new 
szTemp[512], Data[1]
    
Data[0] = id

    format
(szTemp,charsmax(szTemp),"SELECT * FROM cod_stats WHERE (nazwa = '%s' AND klasa = '%s');"nazwa_gracza[id], klasa_gracza[id])
    
SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
}


public 
register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(
FailState)
    {
        
log_amx("SQL Error: %s (%d)"ErrorErrcode)
        return 
PLUGIN_HANDLED
    
}

    new 
id Data[0]
    if(!
SQL_NumResults(Query))
    {
        
doswiadczenie_gracza[id] = 0
        poziom_gracza
[id] = 1
        inteligencja_gracza
[id] = 0
        zdrowie_gracza
[id] = 0
        wytrzymalosc_gracza
[id] = 0
        kondycja_gracza
[id] = 0
        wytrzymaloscitemu_gracza
[id] = 0
        punkty_gracza
[id] = 0
        
return PLUGIN_HANDLED
    
}

    
doswiadczenie_gracza[id] = SQL_ReadResult(QuerySQL_FieldNameToNum(Query,"doswiadczenie"))
    
poziom_gracza[id] = SQL_ReadResult(QuerySQL_FieldNameToNum(Query,"poziom"))
    
inteligencja_gracza[id] = SQL_ReadResult(QuerySQL_FieldNameToNum(Query,"inteligencja"))
    
zdrowie_gracza[id] = SQL_ReadResult(QuerySQL_FieldNameToNum(Query,"zdrowie"))
    
wytrzymalosc_gracza[id] = SQL_ReadResult(QuerySQL_FieldNameToNum(Query,"wytrzymalosc"))
    
kondycja_gracza[id] = SQL_ReadResult(QuerySQL_FieldNameToNum(Query,"kondycja"))
    
wytrzymaloscitemu_gracza[id] = SQL_ReadResult(QuerySQL_FieldNameToNum(Query,"wytrzymaloscitemu"))
    
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-wytrzymaloscitemu_gracza[id]
    return 
PLUGIN_HANDLED



public 
IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(
FailState)
    {
        
log_amx("SQL Error: %s (%d)"ErrorErrcode)
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED



public 
plugin_end()
{
    
SQL_FreeHandle(g_SqlTuple)


Make sure that player name (nazwa_gracza[]) is a backquoted player name, otherwise any player will be able to destroy your database.

PimP517 01-11-2011 21:33

Re: Add mysql save to plugin, Compile errors
 
It should be

Code:

REPLACE INTO cod_stats
or
Code:

UPDATE cod_stats
[IMG]http://img143.**************/img143/7964/coss.png[/IMG]
Because all is saving for one map.
Or maybe it should be

Code:

format(szTemp,charsmax(szTemp),"REPLACE INTO cod_stats (doswiadczenie, poziom, inteligencja, zdrowie, wytrzymalosc, kondycja, wytrzymaloscitemu) VALUES ('%s','%s','%d','%d','%d','%d','%d','%d','%d') WHERE (nazwa='%s', klasa='%s');",doswiadczenie_gracza[id],  poziom_gracza[id],  inteligencja_gracza[id], zdrowie_gracza[id],  wytrzymalosc_gracza[id],  kondycja_gracza[id], wytrzymaloscitemu_gracza[id], nazwa_gracza[id], klasa_gracza[id],)

Thx.
If u need something ask on steam, pimp517pl.

Sylwester 01-13-2011 00:26

Re: Add mysql save to plugin, Compile errors
 
If it saves your stats and you can see them in mysql database, but then it resets them when you connect again, then it means that there is a problem with loading, not saving. It's not hard to fix such problem.
I'm not sure if it's the cause but try to change:
PHP Code:

    if(!SQL_NumResults(Query)) 

to
PHP Code:

    if(!SQL_MoreResults(Query)) 


PimP517 01-13-2011 11:37

Re: Add mysql save to plugin, Compile errors
 
And why is saving row "klasa" with somthign like that .

Sylwester 01-13-2011 13:00

Re: Add mysql save to plugin, Compile errors
 
How should I know? You can't tell what is causing that problem with only those fragments of code.

PimP517 01-14-2011 12:17

Re: Add mysql save to plugin, Compile errors
 
1 Attachment(s)
Can u check please. In row 'klasa' is repleacing every map this  with  after with  after ....

Sylwester 01-14-2011 16:14

Re: Add mysql save to plugin, Compile errors
 
1 Attachment(s)
I think I fixed it (not tested). You need to drop cod_stats table and let the plugin create it again.


All times are GMT -4. The time now is 01:57.

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