а куда вписать логин и пароль дял подключения к базе MySQL... не как не могу поставить данный плагин.. пишет ошибка к подключению к базе MySQL в коде искал искал так и н епонял куда вводить
я оттуда выписал данные и вписал их в код плагина.. только вот я не пойму куда их именнно в плагине вписывать!?
вот код
Код:
#include <amxmodx>
#include <csx>
#include <fakemeta>
#include <hamsandwich>
#include <sqlx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
#pragma semicolon 1
#define CHAT_PREFIX "^1[^4ГороД ГрехоВ Shop^1]" // Префикс в чате
#define SYS_MONEY 250 // Сколько давать сис денег за убийства/установку/дифуз бмб
/* Стоимость плюшек */
#define COAST_AK47 5000 // стоимость голд АК
#define COAST_M4A1 5000 // стоимость голд м4а1
#define COAST_UAMMO 18000 // стоимость анлим аммо
#define COAST_HP 15000 // стоимость 95HP
#define COAST_HSPEED 10000 // стоимость высокой скорости
#define COAST_LGRAV 10000 // стоимость низкой гравитации
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
#define is_user_valid(%1) (1 <= %1 <= 32)
new const MAXCLIP[] = { -1, 13, -1, 10, -1, 7, -1, 30, 30, -1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, -1, 7, 30, 30, -1, 50 };
enum _:ques { INSTALL_PLUGIN, LOAD_CASH, SAVE_CASH, INSERT_CASH };
enum DATA { STATUSLOAD, STEAMID[24], SYSMONEY, CASHBACK };
new Handle:g_sql, data[2], szQuery[512];
new g_iPlayerData[33][DATA], iIgnoreClient;
new iBuyShop, iUseUnlimAmmo, iUseLowGravity, iUseHighSpeed;
new iMainMenu, iBankMenu;
new const szMainItemName[][] = { "Gold AK-47", "Gold M4A1", "Unlim Ammo", "+95HP", "Высокая скорость", "Низкая гравитация" };
new const szMainItemCoast[][] = { COAST_AK47, COAST_M4A1, COAST_UAMMO, COAST_HP, COAST_HSPEED, COAST_LGRAV };
new fwd, ret;
public plugin_init()
{
#define VERSION "1.1b"
register_plugin("CS Shop", VERSION, "neygomon");
register_cvar("sp_neygomon", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("say /shop", "clcmd_Shop");
register_clcmd("say_team /shop", "clcmd_Shop");
register_clcmd("say /bank", "clcmd_Bank");
register_clcmd("say_team /bank", "clcmd_Bank");
register_clcmd("say /money", "clcmd_Money");
register_clcmd("say_team /money", "clcmd_Money");
register_clcmd("say /credit", "clcmd_Credit");
register_clcmd("say_team /credit", "clcmd_Credit");
register_clcmd("say /help", "clcmd_Help");
register_clcmd("say_team /help", "clcmd_Help");
register_event("CurWeapon", "UnlimAmmo", "be", "1=1");
RegisterHam(Ham_Killed, "player", "fwd_PlrKilled", true);
fwd = CreateMultiForward("shop_weapons", ET_IGNORE, FP_CELL, FP_CELL);
}
public plugin_cfg()
{
set_task(1.5, "SQL_Init");
iMainMenu = menu_create("MAIN_MENU", "menu_handler");
iBankMenu = menu_create("BANK_MENU", "bankmenu_handler");
menu_setprop(iMainMenu, MPROP_EXITNAME, "Выход");
menu_setprop(iBankMenu, MPROP_EXITNAME, "Выход");
new strItem[64];
for(new i; i < sizeof(szMainItemName); i++)
{
formatex(strItem, charsmax(strItem), "%s \d[\r%d\y$\d]", szMainItemName[i], szMainItemCoast[i]);
menu_additem(iMainMenu, strItem);
}
menu_additem(iBankMenu, "+1000 cash", "1000");
menu_additem(iBankMenu, "+3000 cash", "3000");
menu_additem(iBankMenu, "+5000 cash", "5000");
}
public client_putinserver(id)
{
if(is_user_bot(id) || is_user_hltv(id))
{
set_bit(iIgnoreClient, id);
return;
}
Load_Money(id);
}
public client_disconnect(id)
{
if(get_bit(iIgnoreClient, id))
{
clr_bit(iIgnoreClient, id);
return;
}
if(get_bit(iBuyShop, id))
{
clr_bit(iBuyShop, id);
clr_bit(iUseUnlimAmmo, id);
clr_bit(iUseLowGravity, id);
clr_bit(iUseHighSpeed, id);
}
Save_Money(id);
}
public bomb_planted(planter)
OpersMoney(planter);
public bomb_defused(defuser)
OpersMoney(defuser);
public fwd_PlrKilled(iVictim, iKiller)
{
if(!is_user_valid(iKiller) || iVictim == iKiller) return;
OpersMoney(iKiller);
if(get_bit(iBuyShop, iVictim))
{
clr_bit(iBuyShop, iVictim);
if(get_bit(iUseUnlimAmmo, iVictim))
clr_bit(iUseUnlimAmmo, iVictim);
if(get_bit(iUseLowGravity, iVictim))
{
clr_bit(iUseLowGravity, iVictim);
set_pev(iVictim, pev_gravity, 0.0);
}
if(get_bit(iUseHighSpeed, iVictim))
{
clr_bit(iUseHighSpeed, iVictim);
ExecuteHam(Ham_Item_PreFrame, iVictim);
}
}
}
public UnlimAmmo(id)
{
if(get_bit(iUseUnlimAmmo, id))
{
static pAmmo, pWeapon; get_user_weapon(id, pAmmo);
if(pAmmo < 3)
{
pWeapon = get_pdata_cbase(id, 373);
set_pdata_int(pWeapon, 51, MAXCLIP[get_pdata_int(pWeapon, 43, 4)]);
}
}
}
public clcmd_Shop(id)
{
if(!is_user_alive(id))
return client_print_color(id, 0, "%s ^4Магазин ^3недоступен^4! Вы мертвы!", CHAT_PREFIX);
Func_Menu(id);
return PLUGIN_HANDLED;
}
public clcmd_Bank(id)
{
if(g_iPlayerData[id][CASHBACK])
return client_print_color(id, 0, "%s ^4Вы не вернули свой старый долг! Осталось вернуть ^3%d$^4. Используйте команду ^3/credit", CHAT_PREFIX, g_iPlayerData[id][CASHBACK]);
Bank_Menu(id);
return PLUGIN_HANDLED;
}
public clcmd_Money(id)
{
client_print_color(id, 0, "%s ^4В Вашем кошельке ^3%d$", CHAT_PREFIX, g_iPlayerData[id][SYSMONEY]);
return PLUGIN_HANDLED;
}
public clcmd_Credit(id)
{
if(g_iPlayerData[id][CASHBACK])
{
if(g_iPlayerData[id][SYSMONEY] - g_iPlayerData[id][CASHBACK] >= 0)
{
g_iPlayerData[id][SYSMONEY] -= g_iPlayerData[id][CASHBACK];
g_iPlayerData[id][CASHBACK] = 0;
client_print_color(id, 0, "%s ^4Вы вернули Ваш долг. Спасибо!", CHAT_PREFIX);
}
else
{
g_iPlayerData[id][CASHBACK] -= g_iPlayerData[id][SYSMONEY];
client_print_color(id, 0, "%s ^4Вы вернули часть Вашего долга. Осталось вернуть ^3%d$", CHAT_PREFIX, g_iPlayerData[id][CASHBACK]);
}
} else client_print_color(id, 0, "%s ^4У Вас нет долгов. ^3Радуйтесь :D", CHAT_PREFIX);
return PLUGIN_HANDLED;
}
public clcmd_Help(id)
{
static const szMessages[][] =
{
"^1Доступные команды: ^3/shop^4, ^3/bank^4, ^3/money^4, ^3/credit",
"^4Команда ^3/shop ^4откроет перед Вами магазин доп возможностей. Весь товар действует ^3до смерти",
"^4Команда ^3/bank ^4позволяет взять ^1в долг ^4некую сумму денег для покупки возможностей в магазине",
"^4Команда ^3/money ^4позволяет узнать Ваш капитал для использования его в нашем магазине",
"^4Команда ^3/credit ^4позволяет вернуть часть или весь долг, если Вы брали деньги в банке"
};
for(new i; i < sizeof szMessages; i++)
client_print_color(id, 0, "%s %s", CHAT_PREFIX, szMessages[i]);
return PLUGIN_HANDLED;
}
Func_Menu(id)
{
static szStrMenuName[64]; formatex(szStrMenuName, charsmax(szStrMenuName), "\d[\rShop\d] \wВ Вашем кошельке \r%d\y$", g_iPlayerData[id][SYSMONEY]);
menu_setprop(iMainMenu, MPROP_TITLE, szStrMenuName);
return menu_display(id, iMainMenu);
}
public menu_handler(id, menu, item)
{
switch(item)
{
case MENU_EXIT: return PLUGIN_HANDLED;
case 0:
{
// COAST_AK47
if(g_iPlayerData[id][SYSMONEY] < COAST_AK47)
return client_print_color(id, 0, "%s ^4У Вас ^3недостаточно ^4денег!", CHAT_PREFIX);
g_iPlayerData[id][SYSMONEY] -= COAST_AK47;
ExecuteForward(fwd, ret, id, 1);
client_print_color(id, 0, "%s ^4Вы купили ^3Золотой AK-47^4!", CHAT_PREFIX);
}
case 1:
{
// COAST_M4A1
if(g_iPlayerData[id][SYSMONEY] < COAST_M4A1)
return client_print_color(id, 0, "%s ^4У Вас ^3недостаточно ^4денег!", CHAT_PREFIX);
g_iPlayerData[id][SYSMONEY] -= COAST_M4A1;
ExecuteForward(fwd, ret, id, 2);
client_print_color(id, 0, "%s ^4Вы купили ^3Золотую M4A1^4!", CHAT_PREFIX);
}
case 2:
{
if(g_iPlayerData[id][SYSMONEY] < COAST_UAMMO)
return client_print_color(id, 0, "%s ^4У Вас ^3недостаточно ^4денег!", CHAT_PREFIX);
g_iPlayerData[id][SYSMONEY] -= COAST_UAMMO;
set_bit(iUseUnlimAmmo, id);
client_print_color(id, 0, "%s ^4Вы купили ^3бесконечные патроны^4!", CHAT_PREFIX);
}
case 3:
{
if(g_iPlayerData[id][SYSMONEY] < COAST_HP)
return client_print_color(id, 0, "%s ^4У Вас ^3недостаточно ^4денег!", CHAT_PREFIX);
g_iPlayerData[id][SYSMONEY] -= COAST_HP;
set_pev(id, pev_health, pev(id, pev_health) + 95.0);
client_print_color(id, 0, "%s ^4Вы купили ^3+95HP^4!", CHAT_PREFIX);
}
case 4:
{
if(g_iPlayerData[id][SYSMONEY] < COAST_HSPEED)
return client_print_color(id, 0, "%s ^4У Вас ^3недостаточно ^4денег!", CHAT_PREFIX);
g_iPlayerData[id][SYSMONEY] -= COAST_HSPEED;
set_bit(iUseHighSpeed, id);
set_pev(id, pev_maxspeed, 420.0);
client_print_color(id, 0, "%s ^4Вы купили ^3высокую скорость^4!", CHAT_PREFIX);
}
case 5:
{
if(g_iPlayerData[id][SYSMONEY] < COAST_LGRAV)
return client_print_color(id, 0, "%s ^4У Вас ^3недостаточно ^4денег!", CHAT_PREFIX);
g_iPlayerData[id][SYSMONEY] -= COAST_LGRAV;
set_bit(iUseLowGravity, id);
set_pev(id, pev_gravity, 0.4);
client_print_color(id, 0, "%s ^4Вы купили ^3низкую гравитацию^4!", CHAT_PREFIX);
}
}
return set_bit(iBuyShop, id);
}
Bank_Menu(id)
{
static szStrTitle[64]; formatex(szStrTitle, charsmax(szStrTitle), "\d[\rBank\d] \wВ Вашем кошельке \r%d\y$", g_iPlayerData[id][SYSMONEY]);
menu_setprop(iBankMenu, MPROP_TITLE, szStrTitle);
return menu_display(id, iBankMenu);
}
public bankmenu_handler(id, menu, item)
{
if(item == MENU_EXIT) return PLUGIN_HANDLED;
static _access, item_num[5], callback, addmoney;
menu_item_getinfo(menu, item, _access, item_num, charsmax(item_num), _, _, callback);
addmoney = str_to_num(item_num);
g_iPlayerData[id][SYSMONEY] += addmoney;
g_iPlayerData[id][CASHBACK] = addmoney;
return client_print_color(id, 0, "%s ^4Вы взяли ^1в кредит ^3%d$^4!", CHAT_PREFIX, addmoney);
}
public SQL_Init()
{
new g_SqlHost[32], g_SqlUser[32], g_SqlPass[32], g_SqlDb[32];
get_cvar_string("amx_sql_host", g_SqlHost, charsmax(g_SqlHost));
get_cvar_string("amx_sql_user", g_SqlUser, charsmax(g_SqlUser));
get_cvar_string("amx_sql_pass", g_SqlPass, charsmax(g_SqlPass));
get_cvar_string("amx_sql_db", g_SqlDb, charsmax(g_SqlDb));
g_sql = SQL_MakeDbTuple(g_SqlHost, g_SqlUser, g_SqlPass, g_SqlDb);
if(g_sql == Empty_Handle)
set_fail_state("unable to create SQL handler");
new err, error[256];
new Handle:g_checksql = SQL_Connect(g_sql, err, error, 255);
if(g_checksql == Empty_Handle)
{
log_amx("failed to connect to MySQL database");
log_amx("[ %d ] %s", err, error);
set_fail_state("mysql connection failed");
}
SQL_FreeHandle(g_checksql);
InstallPlugin();
}
public SQL_Handler(failstate, Handle:que, err[], errcode, data[], datasize)
{
switch(failstate)
{
case TQUERY_CONNECT_FAILED:
{
log_amx("MySQL connection failed");
log_amx("[ %d ] %s",errcode, err);
log_amx("Query state: %d", data[0]);
return PLUGIN_CONTINUE;
}
case TQUERY_QUERY_FAILED:
{
log_amx("MySQL query failed");
log_amx("[ %d ] %s", errcode, err);
log_amx("Query state: %d", data[0]);
return PLUGIN_CONTINUE;
}
}
new id = data[1];
switch(data[0])
{
case LOAD_CASH:
{
if(SQL_NumResults(que) <= 0)
{
g_iPlayerData[id][STATUSLOAD] = 2;
return PLUGIN_CONTINUE;
}
g_iPlayerData[id][SYSMONEY] = SQL_ReadResult(que, 0);
g_iPlayerData[id][CASHBACK] = SQL_ReadResult(que, 1);
g_iPlayerData[id][STATUSLOAD] = 1;
}
case INSERT_CASH:
{
if(SQL_AffectedRows(que) > 0)
g_iPlayerData[id][STATUSLOAD] = 1;
}
case INSTALL_PLUGIN, SAVE_CASH: { }
}
return PLUGIN_CONTINUE;
}
InstallPlugin()
{
data[0] = INSTALL_PLUGIN;
formatex(szQuery, 511, "CREATE TABLE IF NOT EXISTS `cs_shop` ( `steamid` varchar(25) DEFAULT NULL, `cash` int(5) DEFAULT NULL, `credit` int(5) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
SQL_ThreadQuery(g_sql, "SQL_Handler", szQuery, data, 2);
}
Load_Money(id)
{
data[0] = LOAD_CASH; data[1] = id;
get_user_authid(id, g_iPlayerData[id][STEAMID], charsmax(g_iPlayerData[][STEAMID]));
formatex(szQuery, 511, "SELECT `cash`, `credit` FROM `cs_shop` WHERE `steamid` = '%s'", g_iPlayerData[id][STEAMID]);
SQL_ThreadQuery(g_sql, "SQL_Handler", szQuery, data, 2);
}
Save_Money(id)
{
switch(g_iPlayerData[id][STATUSLOAD])
{
case 1:
{
data[0] = SAVE_CASH;
formatex(szQuery, 511, "UPDATE `cs_shop` SET `cash` = '%d', `credit` = '%d' WHERE `steamid` = '%s'", g_iPlayerData[id][SYSMONEY], g_iPlayerData[id][CASHBACK], g_iPlayerData[id][STEAMID]);
}
case 2:
{
data[0] = INSERT_CASH;
formatex(szQuery, 511, "INSERT INTO `cs_shop` (`steamid`, `cash`, `credit` ) VALUES('%s', '%d', '%d')", g_iPlayerData[id][STEAMID], g_iPlayerData[id][SYSMONEY], g_iPlayerData[id][CASHBACK]);
}
}
data[1] = id; SQL_ThreadQuery(g_sql, "SQL_Handler", szQuery, data, 2);
}
OpersMoney(id)
{
if(g_iPlayerData[id][CASHBACK])
{
if(g_iPlayerData[id][CASHBACK] - SYS_MONEY <= 0) g_iPlayerData[id][CASHBACK] = 0;
else g_iPlayerData[id][CASHBACK] -= SYS_MONEY;
}
else g_iPlayerData[id][SYSMONEY] += SYS_MONEY;
}
| i |
| Уведомление: Для оформления кода используйте тег PAWN или CODE + SPOILER  |
Отредактировал: iShot, - 5.8.2016, 6:34