• Регистрация на форуме отключена.
    Она будет открываться первого числа каждого месяца на 24 часа.

    Если необходимо - пишите админу группы Dev-CS в Telegram-чате.

Не сохраняются данные!!

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
1
Реакции
-1
Ошибка
Не сохраняются данные в базу SQL
Список плагинов
KD_DonatRybli
Версия SourceMod
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.8.0.712-dev
ОС
Linux
Версия Metamod
Metamod re.1.3.xx
Исходный код
#include AMXMODX 

#include < hamsandwich >
#include < csx >
#include < sqlx >
#include < WPMGPrintChatColor >

#define KEYS (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)

//* * * * * * * * * *
new g_Money[ 33 ] // *
//* * * * * * * * * *
new g_Killer = 1 // * <== Кол-во "Рублей" за убийство
//* * * * * * * * * *
new g_Defuser = 5 // * <== Кол-во "Рублей" за разминирование бомбы
//* * * * * * * * * *
new g_Planter = 5 // * <== Кол-во "Рублей" за плэнт бомбы
//* * * * * * * * * *
new g_30Min = 10 // * /===========================================
new g_1Hour = 25 // * <== Награда за проигранное время на сервере =
new g_2Hour = 45 // * \===========================================
//* * * * * * * * * *

//# # # # # # # # # # # # # # # # #
new Float:g_ThirtyMin = 1800.0 // #(30мин) /=============================================================================
new Float:g_OneHour = 3600.0 // #(60мин) <== Кол-во времени, по окончанию которого будет даваться награда (в секундах) =
new Float:g_TwoHour = 7200.0 // #(120мин) \=============================================================================
//# # # # # # # # # # # # # # # # #

//= = = = = = = = = = = = = = = = =
//new RoundBlock[ 33 ] // ~
//new bool:Unblock[ 33 ] = false // ~
//= = = = = = = = = = = = = = = = =

// [ Start: MYSQL ]

new g_szQuery[ 2048 ] , szSteamID[ 33 ][ 34 ] ;
new Handle: g_hDBTuple , Handle: g_hConnect ;
new pPlayer;

new const szHost[ ] = "" ,
szUser[ ] = "" ,
szPassword[ ] = "" ,
szDataBase[ ] = "" ,
szTableName[ ] = "DonatPyblu"

// [ End: MYSQL ]

// Выдача флагов привилегиям

#define VIP "nt"
#define ADMIN "abcdefjo"
#define HOOK "rz"
#define GRAB "s"
#define IMMUNITY "a"

// Цена привилегий

#define g_VIP 100
#define g_ADMIN 200
#define g_HOOK 300
#define g_GRAB 300
#define g_IMMUNITY 450

// \\ // \\ // \\ // Л О Т Е Р Е Я // \\ // \\ // \\ //

#define g_LOTTERY 25 // Цена лотрейного билета

new Min = 20 // Мин.Выигрыш
new Max = 300 // Макс.Выигрыш

// Шанс выпадения

#define g_LOSS if(10 <= RandomChance < 85) // 75%
#define g_WIN else if(85 <= RandomChance <= 100) // 15%

/*new RandomFlags[5] = { g_VIP, g_ADMIN, g_HOOK, g_GRAB, g_IMMUNITY }*/ // <== Next обнова

// Спустя сколько раундов будет доступно меню..
// Если не нужно, то закомментируй, а так же закомментриуй строки с пометкой ~
// Если нужно расскомментируйте строки с пометкой ~

//#define ROUNDS 3

public plugin_init( ) {
register_plugin("Покупка привилегий", "1.0", "Hozon")

register_clcmd("buy_priv", "OpenMenu")
register_clcmd("say /buy_priv", "OpenMenu")
register_clcmd("say_team /buy_priv", "OpenMenu")

RegisterHam(Ham_Killed, "player", "Killer", 1)
// register_logevent("Round_Block", 2, "1=Round_Start") // ~

register_menucmd(register_menuid("OpenMenu"), KEYS, "KeysMenu")
register_menucmd(register_menuid("OpenLottery"), KEYS, "LotteryMenu")
}

// # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

public plugin_natives()
{
register_native("get_user_rub", "native_get_money", 1)
register_native("set_user_rub", "native_set_money", 1)
}

public native_get_money(iPlayer)
{
return g_Money[iPlayer]
}
public native_set_money(iPlayer, num)
{
g_Money[iPlayer] = num
}

// # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

public OpenMenu( iPlayer )
{
new szMenu[512], TI_PIDOR = KEYS, iLen;

//if(!Unblock[iPlayer]) // ~
//{ // ~
// PrintChatColor(iPlayer, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yЖдите !g%d !yраундов", ROUNDS) // ~
// return PLUGIN_HANDLED // ~
//} // ~

iLen = formatex(szMenu, charsmax(szMenu), "\wМеню покупки привилегий \r|1/2|^n\y| \dВаш баланс: \r%d \wРублей \y|^n^n", g_Money[iPlayer])

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \wАгент \y[\r%d \wРублей\y]^n", g_VIP)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \wВендетта \y[\r%d \wРублей\y]^n", g_ADMIN)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \wХук \y[\r%d \wРублей\y]^n", g_HOOK)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \wГраб \y[\r%d \wРублей\y]^n", g_GRAB)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \wИммунитет \y[\r%d \wРублей\y]^n", g_IMMUNITY)

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[8] \wОбновить меню^n")

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[9] \wДалее^n")
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[0] \wВыход")
return show_menu(iPlayer, TI_PIDOR, szMenu, -1, "OpenMenu")
}

public KeysMenu(iPlayer, TI_PIDOR)
{
switch(TI_PIDOR)
{
case 0:
{
if(g_Money[iPlayer] >= g_VIP)
{
set_user_flags(iPlayer, read_flags(VIP))
g_Money[iPlayer] -= g_VIP

new szName[32]
get_user_name(iPlayer, szName, charsmax(szName))
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yИгрок !g%s!y, купил !tВип !yпривилегию", szName)
}
else
{
OpenMenu(iPlayer)
}
}
case 1:
{
if(g_Money[iPlayer] >= g_ADMIN)
{
set_user_flags(iPlayer, read_flags(ADMIN))
g_Money[iPlayer] -= g_ADMIN

new szName[32]
get_user_name(iPlayer, szName, charsmax(szName))
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yИгрок !g%s!y, купил !tАдмин !yпривилегию", szName)
}
else
{
OpenMenu(iPlayer)
}
}
case 2:
{
if(g_Money[iPlayer] >= g_HOOK)
{
set_user_flags(iPlayer, read_flags(HOOK))
g_Money[iPlayer] -= g_HOOK

new szName[32]
get_user_name(iPlayer, szName, charsmax(szName))
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yИгрок !g%s!y, купил !tХук !yпривилегию", szName)
}
else
{
OpenMenu(iPlayer)
}
}
case 3:
{
if(g_Money[iPlayer] >= g_GRAB)
{
set_user_flags(iPlayer, read_flags(GRAB))
g_Money[iPlayer] -= g_GRAB

new szName[32]
get_user_name(iPlayer, szName, charsmax(szName))
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yИгрок !g%s!y, купил !tГраб !yпривилегию", szName)
}
else
{
OpenMenu(iPlayer)
}
}
case 4:
{
if(g_Money[iPlayer] >= g_IMMUNITY)
{
set_user_flags(iPlayer, read_flags(IMMUNITY))
g_Money[iPlayer] -= g_IMMUNITY

new szName[32]
get_user_name(iPlayer, szName, charsmax(szName))
PrintChatColor(0, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yИгрок !g%s!y, купил !tИммунитет !yпривилегию", szName)
}
else
{
OpenMenu(iPlayer)
}
}
case 7: OpenMenu(iPlayer)
case 8: OpenLottery(iPlayer)
case 9: return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}

public OpenLottery( iPlayer )
{
new szMenu[512], lohotron = KEYS, iLen;
iLen = formatex(szMenu, charsmax(szMenu), "\wМеню лотереи \r|2/2|^n\y| \dВаш баланс: \r%d \wРублей \y|^n^n", g_Money[iPlayer])

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \wИспытать удачу \y[\r%d \wРублей\y]^n", g_LOTTERY)

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n^n^n^n^n^n^n^n^n\y[0] \wНаазд^n")
return show_menu(iPlayer, lohotron, szMenu, -1, "OpenLottery")
}

public LotteryMenu(iPlayer, lohotron)
{
switch(lohotron)
{
case 0:
{
if(g_Money[iPlayer] >= g_LOTTERY)
{
g_Money[iPlayer] -= g_LOTTERY

new RandomChance = random_num(0, 100)
new RandomRub = random_num(Min, Max)
new szName[32] ; get_user_name(iPlayer, szName, charsmax(szName))

g_LOSS
{
PrintChatColor(iPlayer, PRINT_COLOR_PLAYERTEAM, "!g[BP] !g%s!y, ты !tПРОИГРАЛ!", szName)
}

g_WIN
{
g_Money[iPlayer] += RandomRub
PrintChatColor(iPlayer, PRINT_COLOR_PLAYERTEAM, "!g[BP] !g%s!y, ты !tВЫИГРАЛ! - !g%d Рублей", szName, RandomRub)
}
}
else
{
PrintChatColor(iPlayer, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yУ вас недостаточно !gденег")
}
}
case 9: OpenMenu(iPlayer)
}
return PLUGIN_HANDLED
}

// [ Start: MYSQL ]

public plugin_cfg( ) {
new szError[ 512 ] , iErrorCode;

g_hDBTuple = SQL_MakeDbTuple ( szHost , szUser , szPassword , szDataBase );
g_hConnect = SQL_Connect( g_hDBTuple , iErrorCode , szError , charsmax( szError ) );

if ( g_hConnect == Empty_Handle )
set_fail_state( szError );

if ( !SQL_TableExists( g_hConnect , szTableName ) ) {
new Handle: Queries;
new Query [ 1024 ];
format( Query , 1023 , "CREATE TABLE `%s` (SteamID VARCHAR(40) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL, PRIMARY KEY (SteamID))" , szTableName );
Queries = SQL_PrepareQuery( g_hConnect, Query );

if ( !SQL_Execute( Queries ) ) {
SQL_QueryError( Queries , szError ,charsmax( szError ) );
set_fail_state( szError );
}
SQL_FreeHandle ( Queries );
}
SQL_QueryAndIgnore( g_hConnect , "SET NAMES utf8" );
}

public plugin_end ( )
{
if( g_hDBTuple ) SQL_FreeHandle( g_hDBTuple );
if( g_hConnect ) SQL_FreeHandle( g_hConnect );
return;
}

public client_putinserver( iTime )
{
new iParams [ 1 ]; iParams [ 0 ] = pPlayer;
get_user_authid( pPlayer, szSteamID [ pPlayer ] , charsmax( szSteamID[ ] ) );

format( g_szQuery , charsmax( g_szQuery ) ,
"SELECT * FROM `%s` WHERE ( `%s`.`SteamID` = '%s' )", szTableName , szTableName , szSteamID [ pPlayer ]
);

SQL_ThreadQuery( g_hDBTuple, "SQL_QueryConnection", g_szQuery, iParams, sizeof iParams );

set_task(g_ThirtyMin, "ThirtyMin", iTime+0)
set_task(g_OneHour, "OneHour", iTime+1)
set_task(g_TwoHour, "TwoHour", iTime+2)
}

//public Round_Block( iBlock ) // ~
//{ // ~
// RoundBlock[iBlock] += 1 // ~
//
// if(RoundBlock[iBlock] <= ROUNDS) // ~
// Unblock[iBlock] = true // ~
//} // ~

// # # # # # # # # # # # # # # # # # # # # # # # # # #

public Killer( victim, attacker )
{
if(!is_user_connected( attacker ))
return HAM_IGNORED

if(!is_user_alive( attacker ))
return HAM_SUPERCEDE

g_Money[ attacker ] += g_Killer
return HAM_IGNORED
}

public bomb_defused( iDefuser )
{
if(!is_user_connected( iDefuser ))
return

g_Money[ iDefuser ] += g_Defuser
}

public bomb_planted( iPlanter )
{
if(!is_user_connected( iPlanter ))
return

g_Money[ iPlanter ] += g_Planter
}

public ThirtyMin( iTime )
{
iTime -= 0

g_Money[ iTime ] += g_30Min

PrintChatColor(iTime, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yВы играете !t30 !yминут, Ваша награда !g%d !yрублей", g_30Min)
}

public OneHour( iTime )
{
iTime -= 1

g_Money[ iTime ] += g_1Hour

PrintChatColor(iTime, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yВы играете !t60 !yминут, Ваша награда !g%d !yрублей", g_1Hour)
}

public TwoHour( iTime )
{
iTime -= 2

g_Money[ iTime ] += g_2Hour

PrintChatColor(iTime, PRINT_COLOR_PLAYERTEAM, "!g[BP] !yВы играете !t120 !yминут, Ваша награда !g%d !yрублей", g_2Hour)
}

// # # # # # # # # # # # # # # # # # # # # # # # # # #

public client_disconnect( iTime )
{
format( g_szQuery , charsmax( g_szQuery ),
"UPDATE `%s` SET `Money` = '%d' WHERE `%s`.`SteamID` = '%s';",
szTableName , g_Money[ pPlayer ] , szTableName , szSteamID [ pPlayer ]
);

SQL_ThreadQuery( g_hDBTuple, "ThreadQueryHandler", g_szQuery );

remove_task(iTime+0)
remove_task(iTime+1)
remove_task(iTime+2)

g_Money[iTime] = 0
}

public SQL_QueryConnection ( iState , Handle: hQuery , szError [ ] , iErrcode , iParams [ ] , iParamsSize ) {
switch ( iState ) {
case TQUERY_CONNECT_FAILED: log_amx ( "Load - Could not connect to SQL database. [%d] %s" , iErrcode , szError );
case TQUERY_QUERY_FAILED: log_amx ( "Load Query failed. [%d] %s" , iErrcode , szError );
}

new pPlayer = iParams[ 0 ];

if ( SQL_NumResults( hQuery ) < 1 ) {
if ( equal( szSteamID [ pPlayer ] , "ID_PENDING" ) )
return PLUGIN_HANDLED;

g_Money [ pPlayer ] = 0;

format(
g_szQuery , charsmax( g_szQuery ),

"INSERT INTO `%s` ( `SteamID` , `Money` ) VALUES ( '%s' , '%d' );",
szTableName , szSteamID [ pPlayer ] , g_Money[ pPlayer ]
);

SQL_ThreadQuery( g_hDBTuple , "ThreadQueryHandler" , g_szQuery );

return PLUGIN_HANDLED;
}
else {
g_Money [ pPlayer ] = SQL_ReadResult ( hQuery , 1 );
}

return PLUGIN_HANDLED;
}

public ThreadQueryHandler( iState , Handle: hQuery , szError [ ], iError , iParams [ ] , iParamsSize ) {
if ( iState == 0 )
return;

log_amx( "SQL Error: %d (%s)" , iError , szError );
}

stock bool: SQL_TableExists ( Handle: db , const szTable [ ] ) {
new Handle: query = SQL_PrepareQuery ( db , "SELECT * FROM information_schema.tables WHERE table_name = '%s' LIMIT 1;" , szTable );
new g_Error [ 512 ];

if ( !SQL_Execute ( query ) ) {
SQL_QueryError ( query , g_Error , charsmax ( g_Error ) );
set_fail_state ( g_Error );
}
else if ( !SQL_NumResults ( query ) ){
SQL_FreeHandle ( query );
return false;
}
SQL_FreeHandle ( query );
return true;
}
Ребят помогите кто чем может! Скачал плагин закинул в него сохранение по SQL,плагин скомпилировался без ошибок все четко и ровно!В базе таблица создалась,но данные в нее не поступают не steamid не игровая валюта плагина!Помогите решить кто знаком с SQL?
 

Вложения

Ayk

Сообщения
550
Реакции
365
Помог
19 раз(а)
СурсМод?
Форму надо заполнять.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу