AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Plugin error (https://forums.alliedmods.net/showthread.php?t=206238)

riscanuc 01-20-2013 04:02

Plugin error
 
Can remove from this plugin everything related to mysql ? Sorry for my bad English..
Code:

#include <amxmodx>
#include <fakemeta_util>
#include <ColorChat>
#include <cstrike>
#include <hamsandwich>
#include <sqlx>
#include <deathrun_stats>

native dr_add_life(id, ile)
   
//#define Mysql
#define TOP_DATA_BUFFER_SIZE 1536

new const g_szPrefix[64] = "1vs1"

new g_iAsker[33], g_iTimeToRace[33];
new g_bUserRacing[33]
new Float:g_fHisTime[33], Float:g_fSpawnOrigin[3]
new finish[33] = false

#if defined Mysql
new wins[33]
new lost[33]
new nazwa_gracza[33][64]
new name[64]
new Handle:g_SqlTuple
new bool:WczytaneDane[33] = {false}
#endif

public plugin_init()
{
    register_plugin(g_szPrefix, "0.1", "MarWit & speedkill")
    register_clcmd("say /race", "cmdRace")
    register_forward(FM_Think, "fwd_Think")
    register_event("DeathMsg", "DeathMsg", "a")
    new iEnt = fm_find_ent_by_class(-1, "info_player_start")
    pev(iEnt, pev_origin, g_fSpawnOrigin)
   
    CreateAdEntitys()
    #if defined Mysql
    RegisterHam(Ham_Spawn, "player", "respawn", 1)
    register_cvar("amx_race_host", "localhost")
    register_cvar("amx_race_user", "root")
    register_cvar("amx_race_pass", "root")
    register_cvar("amx_race_db", "db")
    polacz()
    register_clcmd("say /victorii","show")
    register_clcmd("say /top","Topka")
    #endif
}
#if defined Mysql
public polacz()
{
    new Host[32], User[32], Pass[32], DB[32]
    get_cvar_string("amx_race_host", Host, 31)
    get_cvar_string("amx_race_user", User, 31)
    get_cvar_string("amx_race_pass", Pass, 31)
    get_cvar_string("amx_race_db", DB, 31)
    g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,DB)
   
    new error, szError[128]
    new Handle:hConn = SQL_Connect(g_SqlTuple,error,szError, 127)
    if(error){
        log_amx("Error: %s", szError)
        return;
    }
   
    new Handle:Queries = SQL_PrepareQuery(hConn,"CREATE TABLE IF NOT EXISTS `Race` (name VARCHAR(64) NOT NULL, wins INT(10) NOT NULL DEFAULT 0, lost INT(10) NOT NULL DEFAULT 0, PRIMARY KEY(name))")
   
    SQL_Execute(Queries)
    SQL_FreeHandle(Queries)
    SQL_FreeHandle(hConn)
}
#endif
public fwd_Think(iEnt)
{
    new iNum, iTemp[33], bool:bContinue
    new szBuffer[1024]
    pev(iEnt, pev_classname, szBuffer, 1023)
   
    if(equal(szBuffer, "msgent"))
    {
        switch(random_num(1, 4))
        {
            case 1: ColorChat(0, RED, "[%s]^x01 Vrei să provoci pe cineva la cursa? Tastați /race și selectați un jucător!", g_szPrefix)
                case 2: ColorChat(0, RED, "[%s]^x01 Daca castigi cursa poti obtine 3 vieti sau 10.000 $ :]", g_szPrefix)
                #if defined Mysql
            case 3: ColorChat(0, RED, "[%s]^x01 Clasament si nr. de victorii puteti vedea tastand /victorii", g_szPrefix)
                case 4: ColorChat(0, RED, "[%s]^x01 Vrei sa vezi 10 cele mai bune timpuri ? Tasteaza /castigatori", g_szPrefix)
                #endif
        }
        set_pev(iEnt, pev_nextthink, get_gametime() + 45.0)
    }
    else if(equal(szBuffer, "racesent"))
    {
        new szName[2][64]
       
        ColorChat(0, RED, "[%s]^x01 Curent de curse:", g_szPrefix)
       
        for(new i=1; i<=33; i++)
        {
            bContinue = false
           
            for(new iID=0; iID<33; iID++)
            {
                if(iTemp[iID] == i)
                    bContinue = true
            }
           
            if(!is_user_connected(i) || !g_bUserRacing[i] || bContinue)
                continue;
           
            get_user_name(i, szName[0], 63)   
            get_user_name(g_iAsker[i], szName[1], 63)
           
            ColorChat(0, RED, "[%s]^x04 %s^x01 ||^x04 %s", g_szPrefix, szName[0], szName[1])
           
            iTemp[iNum] = i
            iNum++
            iTemp[iNum] = g_iAsker[i]
            iNum++
        }
       
        if(iNum < 2)
            ColorChat(0, RED, "[%s]^x04 Brak!", g_szPrefix)
       
        set_pev(iEnt, pev_nextthink, get_gametime() + 90.0)
    }
   
    return FMRES_IGNORED
}
#if defined Mysql
public Topka(id)
{
        ColorChat(id, RED, "[%s]^x01 Incarcaturi ...", g_szPrefix)
        new szTemp[512],data[1]
        data[0] = id
        formatex(szTemp,charsmax(szTemp),"SELECT * FROM `Race` ORDER BY wins DESC LIMIT 10")
        SQL_ThreadQuery(g_SqlTuple,"top",szTemp,data,1)
}
public top(FailState,Handle:Query,Error[],Errcode,data[],DataSize)
{
    if(FailState!= TQUERY_SUCCESS)
    {
        log_amx("SQL Insert error: %s",Error)
    }
   
    new id = data[0]
   
    static Data[TOP_DATA_BUFFER_SIZE],Title[33],Len,Place,name[64],wins,lost
   
    Place = 0
   
    Len = formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<html><body bgcolor=Black><br>")                               
    Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<center><table frame=^"border^" width=^"600^" cellspacing=^"0^" bordercolor=#4A4344 style=^"color:#56A5EC;text-align:center;^">")
    Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<tr><td><b>#</b></td><td><b>Nick</b></td><td><b>Zwyciestwa</b></td></td><td><b>Przegrane</b></td></td></tr>")
   
    while(SQL_MoreResults(Query))
    {
        Place++
        SQL_ReadResult(Query,0,name,63)
        wins = SQL_ReadResult(Query,1)   
        lost = SQL_ReadResult(Query,2)
       
        replace_all(name, 63, "<", "")
        replace_all(name, 63, ">", "")
       
        Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<tr>")
        Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td><font color=Red>%d</font></td>", Place)
        Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%s</td>", name)
        Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%d</td>", wins)
        Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "<td>%d</td>", lost)
        Len += formatex(Data[Len], TOP_DATA_BUFFER_SIZE - Len, "</tr>")
       
        SQL_NextRow(Query)
    }
   
    Len += formatex(Data[Len],TOP_DATA_BUFFER_SIZE - Len,"</center></body></html>")
   
    formatex(Title, 32, "Top Winners")
    show_motd(id, Data, Title)
   
    return PLUGIN_HANDLED
}

public show(id)
{
    new Data[1]
    Data[0] = id
   
    if(is_user_connected(id))
    {
        new szTemp[512]
        format(szTemp,charsmax(szTemp),"SELECT COUNT(*) FROM `Race` WHERE `wins` >= %d", wins[id])
        SQL_ThreadQuery(g_SqlTuple,"Rank",szTemp,Data,1)
    }
    return PLUGIN_CONTINUE
}

public Rank(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    new count = 0
    count = SQL_ReadResult(Query,0)
    if(count == 0)
        count = 1
   
    new id
    id = Data[0]
    ColorChat(id, RED, "[%s]^x01 Angajament %i si locul de %d castiga curse si %d pierzatori.", g_szPrefix,count,wins[id],lost[id])
   
    return PLUGIN_HANDLED
}

public plugin_end()
{
    SQL_FreeHandle(g_SqlTuple)
}
#endif
public client_connect(id)
{
    finish[id] = false
    #if defined Mysql
    new name[64];
    get_user_name(id, name, charsmax(name))
    if(strcmp(nazwa_gracza[id], name))
    {
        wins[id] = 0
        WczytaneDane[id] = false
        load(id)
    }
    #endif
    if(task_exists(id)) remove_task(id)
   
    g_bUserRacing[id] = false
   
    if(1 <= g_iAsker[g_iAsker[id]] <= 32)
    {
        g_iAsker[g_iAsker[id]] = 0;
        g_fHisTime[g_iAsker[id]] = 0.0
    }
   
    g_fHisTime[id] = 0.0
    g_iAsker[id] = 0   
}

public client_disconnect(id)
{
    if(task_exists(id)) remove_task(id)
    #if defined Mysql
    save(id)
    #endif
    g_bUserRacing[id] = false
   
    if(1 <= g_iAsker[g_iAsker[id]] <= 32)
    {
        g_iAsker[g_iAsker[id]] = 0;
        g_fHisTime[g_iAsker[id]] = 0.0
    }
   
    g_fHisTime[id] = 0.0
    g_iAsker[id] = 0
}
#if defined Mysql
public client_authorized(id)
{
    get_user_name(id, nazwa_gracza[id], charsmax(nazwa_gracza[]))
}
#endif
public DeathMsg()
{
    static id
    id = read_data(2)
   
    if(g_bUserRacing[id] && is_user_connected(id) && is_user_connected(g_iAsker[id]))
    {
        new szName[64]
        get_user_name(g_iAsker[id], szName, 63)
       
        ColorChat(0, RED, "[%s]^x04 %s^x01 a cāștigat pentru că adversarul său a fost ucis!", g_szPrefix, szName)
        ColorChat(id, RED, "[%s] ^x01Przegrales! :F", g_szPrefix)
        ColorChat(g_iAsker[id], RED, "[%s] ^x01Wygrales! :]", g_szPrefix)
        #if defined Mysql
        lost[id]++
        wins[g_iAsker[id]]++
        #endif
        switch(random_num(1, 2))
        {
            case 1:
            {
                ColorChat(g_iAsker[id], RED, "[%s] ^x01Ai cāștigat trei vieți.", g_szPrefix)
                dr_add_life(g_iAsker[id],3)
            }
            case 2:
            {
                ColorChat(g_iAsker[id], RED, "[%s] ^x01Ai cāștigat 10000 $.", g_szPrefix)
                cs_set_user_money(g_iAsker[id],cs_get_user_money(g_iAsker[id]) + 10000)
            }
        }
        g_bUserRacing[id] = false
        g_bUserRacing[g_iAsker[id]] = false
       
        g_iAsker[g_iAsker[id]] = 0
        g_iAsker[id] = 0
    }
   
    return PLUGIN_CONTINUE
}
public fwPlayerFinished(id)
{
    finish[id] = true
    if(!g_bUserRacing[id])
        return PLUGIN_CONTINUE
   
    new szBuffer[64];
    get_user_name(id, szBuffer, 63)
   
    g_fHisTime[id] = get_gametime() - g_fHisTime[id]
   
    ColorChat(0, RED, "[%s]^x04 %s^x01 A castigat cursa impotriva timpului %d:%.2f. Felicitari!!", g_szPrefix, szBuffer, floatround(g_fHisTime[id]/60.0) >= 1 ? floatround(g_fHisTime[id]/60) : 0, g_fHisTime[id] >= 60.0 ? g_fHisTime[id] - ( 60.0 * ( g_fHisTime[id]/60.0 ) )  : g_fHisTime[id])
    ColorChat(id, RED, "[%s] ^x01Ai castigat ! :]", g_szPrefix)
    ColorChat(g_iAsker[id], RED, "[%s] ^x01Ai pierdut! :F", g_szPrefix)
    switch(random_num(1, 2))
    {
        case 1:
        {
            ColorChat(id, RED, "[%s] ^x01Ai cāștigat trei vieți.", g_szPrefix)
            dr_add_life(id,3)
        }
        case 2:
        {
            ColorChat(id, RED, "[%s] ^x01Ai cāștigat 10000 $.", g_szPrefix)
            cs_set_user_money(id,cs_get_user_money(id) + 10000)
        }
    }
    #if defined Mysql
    lost[g_iAsker[id]]++
    wins[id]++
    #endif
   
    g_bUserRacing[id] = false
    g_bUserRacing[g_iAsker[id]] = false
   
    g_fHisTime[id] = 0.0
    g_fHisTime[g_iAsker[id]] = 0.0
   
    g_iAsker[g_iAsker[id]] = 0
    g_iAsker[id] = 0
   
    return PLUGIN_CONTINUE
}
public cmdRace(id)
{
    if(g_bUserRacing[id] || cs_get_user_team(id) == CS_TEAM_T || !is_user_alive(id) || finish[id])
    {
        ColorChat(id, RED, "[%s] ^x01Nu puteti urmari acum !", g_szPrefix)
        return PLUGIN_CONTINUE
    }
   
    new iMenu = menu_create("\rSelectați un jucator:", "SelectPlayer_Handle");
    new szBuffer[2][64]
   
    for(new i=1; i<33; i++)
    {
        if(!is_user_alive(i) || !is_user_connected(i) || get_user_team(i) != 2 || g_bUserRacing[i] || i == id)
            continue
       
        get_user_name(i, szBuffer[0], 63)
        num_to_str(i, szBuffer[1], 63)
       
        menu_additem(iMenu, szBuffer[0], szBuffer[1])
    }
   
    menu_setprop(iMenu, MPROP_EXITNAME, "Wyjdz")
    menu_display(id, iMenu)
   
    return PLUGIN_CONTINUE
}
public SelectPlayer_Handle(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
   
    new iAccess, iTarget, iCallBack
    new szInfo[64]
   
    menu_item_getinfo(menu, item, iAccess, szInfo, 63, _, _, iCallBack)
    iTarget = str_to_num(szInfo)
   
    if(!is_user_alive(iTarget) || !is_user_connected(iTarget) || get_user_team(iTarget) != 2 || g_bUserRacing[iTarget])
    {
        menu_destroy(menu)
        cmdRace(id)
        return PLUGIN_HANDLED
    }
   
    AskPlayer(iTarget, id)
    return PLUGIN_CONTINUE
   
}

public AskPlayer(id, iAsker)
{
    if(!is_user_connected(id) || !is_user_connected(iAsker) || g_bUserRacing[id] || g_bUserRacing[iAsker] || finish[id] || finish[iAsker])
        return PLUGIN_HANDLED
   
    new szBuffer[128]
    get_user_name(iAsker, szBuffer, 127)
    format(szBuffer, 127, "Vrei sa concurezi cu %s ?", szBuffer)
   
    new iMenu = menu_create(szBuffer, "AskPlayer_Handle")
   
    menu_additem(iMenu, "Tak")
    menu_additem(iMenu, "Nie")
   
    menu_display(id, iMenu)
   
    g_iAsker[id] = iAsker
   
    return PLUGIN_CONTINUE
}

public AskPlayer_Handle(id, menu, item)
{
    if(!is_user_connected(g_iAsker[id]) || g_bUserRacing[id] || g_bUserRacing[g_iAsker[id]])
        return PLUGIN_HANDLED
   
    switch(item)
    {
        case 0:
        {
            ColorChat(g_iAsker[id], RED, "[%s]^x01 Jucătorul a acceptat cursa cu tine!", g_szPrefix)
           
            g_iTimeToRace[id] = 3
            g_iAsker[g_iAsker[id]] = id
            g_bUserRacing[id] = true
            g_bUserRacing[g_iAsker[id]] = true
           
            set_pev(id, pev_origin, g_fSpawnOrigin)
            set_pev(g_iAsker[id], pev_origin, g_fSpawnOrigin)
           
            set_pev(id, pev_fixangle, 1)
            set_pev(g_iAsker[id], pev_fixangle, 1)
           
            set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN)
            set_pev(g_iAsker[id], pev_flags, pev(g_iAsker[id], pev_flags) | FL_FROZEN)
           
            set_task(1.0, "StartRace", id, _, _, "a", g_iTimeToRace[id])
        }
       
        case 1:
        {
            ColorChat(g_iAsker[id], RED, "[%s]^x01 Jucatorul nu a acceptat cursa cu tine!", g_szPrefix)
           
            g_iAsker[id] = 0
        }
    }
   
    return PLUGIN_CONTINUE
}

public StartRace(id)
{
    g_iTimeToRace[id]--
   
    if(g_iTimeToRace[id] > 0)
    {
        ColorChat(id, RED, "[%s] ^x01Cursa īncepe la %d secunde!", g_szPrefix, g_iTimeToRace[id])
        ColorChat(g_iAsker[id], RED, "[%s] ^x01Cursa īncepe la %d secunde!", g_szPrefix, g_iTimeToRace[id])
       
    }
    else
    {
        ColorChat(id, RED, "[%s] ^x01Go Go Go! Noroc :]", g_szPrefix, g_iTimeToRace[id])
        ColorChat(g_iAsker[id], RED, "[%s] ^x01Go Go Go! Noroc :]", g_szPrefix, g_iTimeToRace[id])
        set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN)
        set_pev(g_iAsker[id], pev_flags, pev(g_iAsker[id], pev_flags) & ~FL_FROZEN)
       
        g_fHisTime[id] = get_gametime()
        g_fHisTime[g_iAsker[id]] = get_gametime()
       
        if(task_exists(id)) remove_task(id)
    }
   
    return PLUGIN_CONTINUE
}
public CreateAdEntitys()
{
    new iEnt[2];
   
    iEnt[0] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
    set_pev(iEnt[0], pev_classname, "msgent")
    set_pev(iEnt[0], pev_nextthink, get_gametime() + 120.0)
   
    iEnt[1] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
    set_pev(iEnt[1], pev_classname, "racesent")
    set_pev(iEnt[1], pev_nextthink, get_gametime() + 90.0)
   
    dllfunc(DLLFunc_Think, iEnt[0])
    dllfunc(DLLFunc_Think, iEnt[1])
}
#if defined Mysql
public load(id)
{
    new name[64], szTemp[512]
    get_user_name(id, name, 63)
    replace_all(name, 63, "'", "\'")
    replace_all(name, 63, "`", "\`")
   
    new data[1]
    data[0] = id
   
    formatex(szTemp,charsmax(szTemp),"SELECT * FROM `Race` WHERE `name` = '%s'", name)
    SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp, data, sizeof(data))
}

public register_client(failstate, Handle:query, error[],errcode, data[], datasize)
{
    if(failstate != TQUERY_SUCCESS){
        log_amx("<Query> Error: %s", error)
        return;
    }
    new id = data[0]
    if(!is_user_connected(id) && !is_user_connecting(id))
        return;
   
    if(SQL_NumRows(query))
    {
        SQL_ReadResult(query,SQL_FieldNameToNum(query,"name"), name, 63)
        wins[id]  = SQL_ReadResult(query, SQL_FieldNameToNum(query,"wins"))
        lost[id]  = SQL_ReadResult(query, SQL_FieldNameToNum(query,"lost"))
        WczytaneDane[id] = true;
    }
    else
    {
        new name[64]
        get_user_name(id, name, 63)
        replace_all(name, 63, "'", "\'")
        replace_all(name, 63, "`", "\`")
       
        new szTemp[512], data[1]
        data[0] = id
        formatex(szTemp,charsmax(szTemp),"INSERT INTO `Race` (`name`, `wins`,`lost`) VALUES ('%s','%d','%d')", name, wins[id],lost[id])
        SQL_ThreadQuery(g_SqlTuple,"IgnoreHandleInsert",szTemp,data, 1)
    }
}
public save(id)
{   
    if(!WczytaneDane[id])
    {
        load(id)
        return PLUGIN_HANDLED
    }
    new szTemp[512]
    new name[64]
    get_user_name(id, name, 63)
    replace_all(name, 63, "'", "\'")
    replace_all(name, 63, "`", "\`")
   
    formatex(szTemp,charsmax(szTemp),"UPDATE `Race` SET `wins` = '%d',`lost` = '%d' WHERE `name` = '%s'",wins[id],lost[id], name)
    SQL_ThreadQuery(g_SqlTuple,"IgnoreHandleSave",szTemp)
   
    return PLUGIN_CONTINUE
}

public IgnoreHandleInsert(failstate, Handle:query, error[], errnum, data[], size){
    if(failstate != TQUERY_SUCCESS){
        log_amx("<Query> Error: %s", error)
        return
    }
    WczytaneDane[data[0]] = true
}

public IgnoreHandleSave(failstate, Handle:query, error[], errnum, data[], size){
    if(failstate != TQUERY_SUCCESS){
        log_amx("<Query> Error: %s", error)
        return;
    }
}
public respawn(id)
{
    if(is_user_alive(id))
    {
        save(id)
        finish[id] = false
    }
}
#endif
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/


fysiks 01-20-2013 13:48

Re: Plugin error
 
Code:

//#define Mysql
This already removes SQL code from the compiled plugin.

riscanuc 01-21-2013 00:30

Re: Plugin error
 
It gives compilation error
Code:

amx/include/xs.inc(119) : fatal error 110: assertion failed: 0
You can compile without error , thanks.


All times are GMT -4. The time now is 13:42.

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