| 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 }
*/
|