AMX MOD X
Вторник, 27.01.2026, 01:29:56



Приветствую Вас Гость | RSS
[ Главная ] [ txt to db - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
txt to db
manyДата: Четверг, 27.11.2008, 15:44:56 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
Есть такой плагин KZ Records который скачивает файл рекордов разных стран в формате txt. мне понадобилось засунуть этот txt в БД и я решил написать плагин. Но debug выводит:
Code
db_records_update
L 11/27/2008 - 15:34:16: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 15:34:16: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 15:34:16: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 15:34:16: [AMXX]    [0] phpds88HJ.sma::make_wr_table (line 76)
L 11/27/2008 - 15:34:20: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 15:34:20: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 15:34:20: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 15:34:20: [AMXX]    [0] phpds88HJ.sma::make_ru_table (line 100)

Помогите плз исправить.
Вот сам код:
Code

/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#define PLUGIN    "txt to db"
#define AUTHOR    "many"
#define VERSION    "1.0"

new Handle:DB_TUPLE

new demos_wr[512]
new demos_ru[512]

public plugin_init()
{
  register_plugin(PLUGIN, VERSION, AUTHOR)
   
  register_srvcmd( "db_records_update", "cmd_update" )
  register_cvar( "rec_db_host", "127.0.0.1:4019" )
  register_cvar( "rec_db_user", "lala" )
  register_cvar( "rec_db_pass", "lala" )
  register_cvar( "rec_db_name", "lala" )
   
  new data[128];
  get_localinfo( "amxx_datadir", data, sizeof(data) - 1 )
  format( demos_wr, sizeof(demos_wr)-1, "%s/demos_wr.txt", data);
  format( demos_ru, sizeof(demos_ru)-1, "%s/demos_ru.txt", data);
   
}

public db_init( )
{
   
  static host[32], user[32], pass[32], name[32]
   
  get_cvar_string( "rec_db_host", host, 31 )
  get_cvar_string( "rec_db_user", user, 31 )
  get_cvar_string( "rec_db_pass", pass, 31 )
  get_cvar_string( "rec_db_name", name, 31 )
   
  DB_TUPLE=SQL_MakeDbTuple(host,user,pass,name)
   
  new query[1024]
   
  formatex( query, 1023, "create table if not exists rec_wr (map_name varchar(32), fin_time float, name varchar(32) unique)")
  SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
   
  formatex( query, 1023, "create table if not exists rec_ru (map_name varchar(32), fin_time float, name varchar(32) unique)")
  SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
   
}

public cmd_update()
{
  set_task(1.0, "make_wr_table")
  set_task(5.0, "make_ru_table")
}

public make_wr_table()
{
  if(file_exists(demos_wr))  
  {  
   new line, stxtsize  
   new data[256]  
   new map_name[32], name[32]
   new Float:fin_time
   new query[1024]
          
   while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
   {  
    parse(data, map_name, 31, fin_time, 7, name, 31)
     
    formatex( query, 1023, "INSERT INTO `rec_wr` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
    SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
   }
  }
  else
  {
   log_amx("Failed To Load demos_wr.txt !")
  }
}

public make_ru_table()
{  
  if(file_exists(demos_ru))  
  {  
   new line, stxtsize  
   new data[256]  
   new map_name[32], name[32]
   new Float:fin_time
   new query[1024]
    
   while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
   {  
    parse(data, map_name, 31, fin_time, 7, name, 31)
     
    formatex( query, 1023, "INSERT INTO `rec_ru` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
    SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
   }
  }
  else
  {
   log_amx("Failed To Load demos_ru.txt !")
  }
}

public db_generic_handler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime)
{
  return query_failed( failstate, error, errnum )
}

public db_save_handler( failstate, Handle:query, error[], errnum, data[], size, Float:queuetime )
{
  return query_failed( failstate, error, errnum )
}

public query_failed( failstate, error[], errnum )
{
  if( failstate == TQUERY_CONNECT_FAILED )
  {
   log_amx( "Rec to DB: Couldn't connect to database: %s", error )
   return 1
  }
  else if( failstate == TQUERY_QUERY_FAILED )
  {
   log_amx( "Rec to DB: Query failed: %s", error )
   return 1
  }
   
  if( errnum )
  {
   log_amx( "Rec to DB: Query Error: %s", error )
   return 1
  }
   
  return 0
}
 
PomanoBДата: Четверг, 27.11.2008, 16:06:42 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Выложи сюда файл txt формат записей посмотреть
PS Я для таких вещей использую PHP, зачем плагин писать ???


http://romanov4400.mybrute.com
 
manyДата: Четверг, 27.11.2008, 16:37:24 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
что бы потом сделать при обновлении рекордов плагина KZ Records автоматическое обновление БД
Прикрепления: demos_ru.txt (11.7 Kb) · demos_wr.txt (13.0 Kb)


Сообщение отредактировал many - Четверг, 27.11.2008, 16:39:18
 
DaTaДата: Четверг, 27.11.2008, 17:58:18 | Сообщение # 4
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote
/**
* Creates a connection information tuple.
* This tuple must be passed into connection routines.
* Freeing the tuple is not necessary, but is a good idea if you
*  create many of them.  You can cache these handles globally.
* !!NOTE!! I have seen most people think that this connects to the DB.
*   Nowhere does it say this, and in fact it does not.  It only caches
*   the connection information, the host/user/pass/etc.

*
* The optional timeout parameter specifies how long connections should wait before
* giving up.  If 0, the default (which is undefined) is used.
*
*/
native Handle:SQL_MakeDbTuple(const host[], const user[], const pass[], const db[], timeout=0);

Code
/**
    * Opens a database connection.
    * Returns an SQL handle, which must be freed.
    * Returns Empty_Handle on failure.
    */
native Handle:SQL_Connect(Handle:cn_tuple, &errcode, error[], maxlength);
 
manyДата: Четверг, 27.11.2008, 19:59:51 | Сообщение # 5
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
вообщем я изменил но ничего не произошло, таже ошибка
код щас такой:
Code

/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#define PLUGIN    "txt to db"
#define AUTHOR    "many"
#define VERSION    "1.0"

new Handle:DB_TUPLE
new error[512]
new error_code
new Handle:DB_CONNECT

new demos_wr[512]
new demos_ru[512]

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
     
   register_srvcmd( "db_records_update", "cmd_update" )
   register_cvar( "rec_db_host", "127.0.0.1:4019" )
   register_cvar( "rec_db_user", "lala" )
   register_cvar( "rec_db_pass", "lala" )
   register_cvar( "rec_db_name", "lalaq" )
     
   new data[128];
   get_localinfo( "amxx_datadir", data, sizeof(data) - 1 )
   format( demos_wr, sizeof(demos_wr)-1, "%s/demos_wr.txt", data);
   format( demos_ru, sizeof(demos_ru)-1, "%s/demos_ru.txt", data);
     
}

public db_init( )
{
     
   static host[32], user[32], pass[32], name[32]
     
   get_cvar_string( "rec_db_host", host, 31 )
   get_cvar_string( "rec_db_user", user, 31 )
   get_cvar_string( "rec_db_pass", pass, 31 )
   get_cvar_string( "rec_db_name", name, 31 )
     
   DB_TUPLE=SQL_MakeDbTuple(host,user,pass,name)
   DB_CONNECT=SQL_Connect(DB_TUPLE, error_code, error, 511);
     
   if(DB_CONNECT == Empty_Handle)
          set_fail_state(error)
     
   new query[1024]
     
   formatex( query, 1023, "create table if not exists rec_wr (map_name varchar(32), fin_time float, name varchar(32) unique)")
   SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
     
   formatex( query, 1023, "create table if not exists rec_ru (map_name varchar(32), fin_time float, name varchar(32) unique)")
   SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
     
     
     
}

public cmd_update()
{
   set_task(1.0, "make_wr_table")
   set_task(5.0, "make_ru_table")
}

public make_wr_table()
{
   if(file_exists(demos_wr))   
   {   
    new line, stxtsize   
    new data[256]   
    new map_name[32], name[32]
    new Float:fin_time[8]
    new query[1024]
            
    while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
    {   
     parse(data, map_name, 31, fin_time, 7, name, 31)
       
     formatex( query, 1023, "INSERT INTO `rec_wr` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
     SQL_ThreadQuery(DB_CONNECT,"db_save_handler",query)
    }
   }
   else
   {
    log_amx("Failed To Load demos_wr.txt !")
   }
}

public make_ru_table()
{   
   if(file_exists(demos_ru))   
   {   
    new line, stxtsize   
    new data[256]   
    new map_name[32], name[32]
    new Float:fin_time[8]
    new query[1024]
      
    while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
    {   
     parse(data, map_name, 31, fin_time, 7, name, 31)
       
     formatex( query, 1023, "INSERT INTO `rec_ru` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
     SQL_ThreadQuery(DB_CONNECT,"db_save_handler",query)
    }
   }
   else
   {
    log_amx("Failed To Load demos_ru.txt !")
   }
}

public db_generic_handler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime)
{
   return query_failed( failstate, error, errnum )
}

public db_save_handler( failstate, Handle:query, error[], errnum, data[], size, Float:queuetime )
{
   return query_failed( failstate, error, errnum )
}

public query_failed( failstate, error[], errnum )
{
   if( failstate == TQUERY_CONNECT_FAILED )
   {
    log_amx( "Rec to DB: Couldn't connect to database: %s", error )
    return 1
   }
   else if( failstate == TQUERY_QUERY_FAILED )
   {
    log_amx( "Rec to DB: Query failed: %s", error )
    return 1
   }
     
   if( errnum )
   {
    log_amx( "Rec to DB: Query Error: %s", error )
    return 1
   }
     
   return 0
}

public plugin_end()
{
      SQL_FreeHandle(DB_TUPLE)
}

помогите)


Сообщение отредактировал many - Четверг, 27.11.2008, 20:00:21
 
DaTaДата: Четверг, 27.11.2008, 20:27:52 | Сообщение # 6
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
скопируй ту же ошибку для начала
 
manyДата: Четверг, 27.11.2008, 20:44:06 | Сообщение # 7
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
Code

db_records_update
L 11/27/2008 - 20:37:50: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 20:37:50: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 20:37:50: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 20:37:50: [AMXX]    [0] phpy3rWFT.sma::make_wr_table (line 85)
L 11/27/2008 - 20:37:54: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 20:37:54: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 20:37:54: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 20:37:54: [AMXX]    [0] phpy3rWFT.sma::make_ru_table (line 109)
 
DaTaДата: Четверг, 27.11.2008, 21:37:43 | Сообщение # 8
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote
/**
* Prepares and executes a threaded query.
* This will not interrupt gameplay in the event of a poor/lossed
* connection, however, the interface is more complicated and
* asynchronous. Furthermore, a new connection/disconnection is
* made for each query to simplify driver support.
* The handler should look like:
*
* @param failstate - One of the three TQUERY_ defines.
* @param query - Handle to the query, do not free it.
* @param error - An error message, if any.
* @param errnum - An error code, if any.
* @param data - Data array you passed in.
* @param size - Size of the data array you passed in.
* @param queuetime - Amount of gametime that passed while the query was resolving.
*
* public QueryHandler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime)
*
* Note! The handle you pass in is a DB Tuple, NOT an active connection!
* Note! The handle does not need to be freed.
* Also note: This function is not guaranteed to be in another thread
* (in fact - it's not). You're seeing data "after the fact",
* and as such to execute another query you should run
* SQL_ThreadQuery again with new data.
*/
native SQL_ThreadQuery(Handle:db_tuple, const handler[], const query[], const data[]="", dataSize=0);

Хоть иногда читайте описание функций

Code
     SQL_ThreadQuery(DB_CONNECT,"db_save_handler",query)
      //...
      SQL_ThreadQuery(DB_CONNECT,"db_save_handler",query)

->
Code
     SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
      //...
      SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
 
manyДата: Четверг, 27.11.2008, 22:02:09 | Сообщение # 9
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
Тоже самое...
Code

db_records_update
L 11/27/2008 - 21:53:55: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 21:53:55: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 21:53:55: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 21:53:55: [AMXX]    [0] phpy3rWFT.sma::make_wr_table (line 85)
L 11/27/2008 - 21:53:59: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 21:53:59: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 21:53:59: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 21:53:59: [AMXX]    [0] phpy3rWFT.sma::make_ru_table (line 109)

Плагин:

Code

/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#define PLUGIN    "txt to db"
#define AUTHOR    "many"
#define VERSION    "1.0"

new Handle:DB_TUPLE
new error[512]
new error_code
new Handle:DB_CONNECT

new demos_wr[512]
new demos_ru[512]

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
     
   register_srvcmd( "db_records_update", "cmd_update" )
   register_cvar( "rec_db_host", "lala" )
   register_cvar( "rec_db_user", "lala" )
   register_cvar( "rec_db_pass", "lala" )
   register_cvar( "rec_db_name", "lala" )
     
   new data[128];
   get_localinfo( "amxx_datadir", data, sizeof(data) - 1 )
   format( demos_wr, sizeof(demos_wr)-1, "%s/demos_wr.txt", data);
   format( demos_ru, sizeof(demos_ru)-1, "%s/demos_ru.txt", data);
     
}

public db_init( )
{
     
   static host[32], user[32], pass[32], name[32]
     
   get_cvar_string( "rec_db_host", host, 31 )
   get_cvar_string( "rec_db_user", user, 31 )
   get_cvar_string( "rec_db_pass", pass, 31 )
   get_cvar_string( "rec_db_name", name, 31 )
     
   DB_TUPLE=SQL_MakeDbTuple(host,user,pass,name)
   DB_CONNECT=SQL_Connect(DB_TUPLE, error_code, error, 511);
     
   if(DB_CONNECT == Empty_Handle)
          set_fail_state(error)
     
   new query[1024]
     
   formatex( query, 1023, "create table if not exists rec_wr (map_name varchar(32), fin_time float, name varchar(32) unique)")
   SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
     
   formatex( query, 1023, "create table if not exists rec_ru (map_name varchar(32), fin_time float, name varchar(32) unique)")
   SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
     
     
     
}

public cmd_update()
{
   set_task(1.0, "make_wr_table")
   set_task(5.0, "make_ru_table")
}

public make_wr_table()
{
   if(file_exists(demos_wr))   
   {   
    new line, stxtsize   
    new data[256]   
    new map_name[32], name[32]
    new Float:fin_time[8]
    new query[1024]
            
    while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
    {   
     parse(data, map_name, 31, fin_time, 7, name, 31)
       
     formatex( query, 1023, "INSERT INTO `rec_wr` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
     SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
    }
   }
   else
   {
    log_amx("Failed To Load demos_wr.txt !")
   }
}

public make_ru_table()
{   
   if(file_exists(demos_ru))   
   {   
    new line, stxtsize   
    new data[256]   
    new map_name[32], name[32]
    new Float:fin_time[8]
    new query[1024]
      
    while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
    {   
     parse(data, map_name, 31, fin_time, 7, name, 31)
       
     formatex( query, 1023, "INSERT INTO `rec_ru` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
     SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
    }
   }
   else
   {
    log_amx("Failed To Load demos_ru.txt !")
   }
}

public db_generic_handler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime)
{
   return query_failed( failstate, error, errnum )
}

public db_save_handler( failstate, Handle:query, error[], errnum, data[], size, Float:queuetime )
{
   return query_failed( failstate, error, errnum )
}

public query_failed( failstate, error[], errnum )
{
   if( failstate == TQUERY_CONNECT_FAILED )
   {
    log_amx( "Rec to DB: Couldn't connect to database: %s", error )
    return 1
   }
   else if( failstate == TQUERY_QUERY_FAILED )
   {
    log_amx( "Rec to DB: Query failed: %s", error )
    return 1
   }
     
   if( errnum )
   {
    log_amx( "Rec to DB: Query Error: %s", error )
    return 1
   }
     
   return 0
}

public plugin_end()
{
      SQL_FreeHandle(DB_TUPLE)
}


Сообщение отредактировал many - Четверг, 27.11.2008, 22:34:55
 
DaTaДата: Четверг, 27.11.2008, 22:40:06 | Сообщение # 10
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote (DaTa)
скопируй ту же ошибку для начала

Добавлено (2008-11-27, 10:40 Pm)
---------------------------------------------
public db_init( ) не вызывается

 
manyДата: Четверг, 27.11.2008, 23:03:24 | Сообщение # 11
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
Code

db_records_update
L 11/27/2008 - 22:55:48: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 22:55:48: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 22:55:48: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 22:55:48: [AMXX]    [0] phpy3rWFT.sma::make_wr_table (line 85)
L 11/27/2008 - 22:55:52: [MySQL] Invalid info tuple handle: 0
L 11/27/2008 - 22:55:52: [AMXX] Displaying debug trace (plugin "txttodb.amxx")
L 11/27/2008 - 22:55:52: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
L 11/27/2008 - 22:55:52: [AMXX]    [0] phpy3rWFT.sma::make_ru_table (line 109)

Code

/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#define PLUGIN    "txt to db"
#define AUTHOR    "many"
#define VERSION    "1.0"

new Handle:DB_TUPLE
new error[512]
new error_code
new Handle:DB_CONNECT

new demos_wr[512]
new demos_ru[512]

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
     
   register_srvcmd( "db_records_update", "cmd_update" )
   register_cvar( "rec_db_host", "127.0.0.1:4019" )
   register_cvar( "rec_db_user", "xxx" )
   register_cvar( "rec_db_pass", "xxx" )
   register_cvar( "rec_db_name", "cs" )
     
   new data[128];
   get_localinfo( "amxx_datadir", data, sizeof(data) - 1 )
   format( demos_wr, sizeof(demos_wr)-1, "%s/demos_wr.txt", data);
   format( demos_ru, sizeof(demos_ru)-1, "%s/demos_ru.txt", data);
     
   static host[32], user[32], pass[32], name[32]
     
   get_cvar_string( "rec_db_host", host, 31 )
   get_cvar_string( "rec_db_user", user, 31 )
   get_cvar_string( "rec_db_pass", pass, 31 )
   get_cvar_string( "rec_db_name", name, 31 )
     
   DB_TUPLE=SQL_MakeDbTuple(host,user,pass,name)
   DB_CONNECT=SQL_Connect(DB_TUPLE, error_code, error, 511);
     
   if(DB_CONNECT == Empty_Handle)
          set_fail_state(error)
     
   new query[1024]
     
   formatex( query, 1023, "create table if not exists rec_wr (map_name varchar(32), fin_time float, name varchar(32) unique)")
   SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
     
   formatex( query, 1023, "create table if not exists rec_ru (map_name varchar(32), fin_time float, name varchar(32) unique)")
   SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )   
}

public cmd_update()
{
   set_task(1.0, "make_wr_table")
   set_task(5.0, "make_ru_table")
}

public make_wr_table()
{
   if(file_exists(demos_wr))   
   {   
    new line, stxtsize   
    new data[256]   
    new map_name[32], name[32]
    new Float:fin_time[8]
    new query[1024]
            
    while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
    {   
     parse(data, map_name, 31, fin_time, 7, name, 31)
       
     formatex( query, 1023, "INSERT INTO `rec_wr` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
     SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
    }
   }
   else
   {
    log_amx("Failed To Load demos_wr.txt !")
   }
}

public make_ru_table()
{   
   if(file_exists(demos_ru))   
   {   
    new line, stxtsize   
    new data[256]   
    new map_name[32], name[32]
    new Float:fin_time[8]
    new query[1024]
      
    while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
    {   
     parse(data, map_name, 31, fin_time, 7, name, 31)
       
     formatex( query, 1023, "INSERT INTO `rec_ru` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
     SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
    }
   }
   else
   {
    log_amx("Failed To Load demos_ru.txt !")
   }
}

public db_generic_handler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime)
{
   return query_failed( failstate, error, errnum )
}

public db_save_handler( failstate, Handle:query, error[], errnum, data[], size, Float:queuetime )
{
   return query_failed( failstate, error, errnum )
}

public query_failed( failstate, error[], errnum )
{
   if( failstate == TQUERY_CONNECT_FAILED )
   {
    log_amx( "Rec to DB: Couldn't connect to database: %s", error )
    return 1
   }
   else if( failstate == TQUERY_QUERY_FAILED )
   {
    log_amx( "Rec to DB: Query failed: %s", error )
    return 1
   }
     
   if( errnum )
   {
    log_amx( "Rec to DB: Query Error: %s", error )
    return 1
   }
     
   return 0
}

public plugin_end()
{
      SQL_FreeHandle(DB_TUPLE)
}


Сообщение отредактировал many - Четверг, 27.11.2008, 23:04:02
 
DaTaДата: Четверг, 27.11.2008, 23:08:22 | Сообщение # 12
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
На 85й строке в представоенном плагине пустота, перекомпилируй.
 
manyДата: Пятница, 28.11.2008, 12:25:15 | Сообщение # 13
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
сейчас код такой
Code

/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#define PLUGIN    "txt to db"
#define AUTHOR    "many"
#define VERSION    "1.0"

new Handle:DB_TUPLE
new error[512]
new error_code
new Handle:DB_CONNECT

new demos_wr[512]
new demos_ru[512]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
       
    register_srvcmd( "make_wr_table", "make_wr_table" )
    register_srvcmd( "make_ru_table", "make_ru_table" )
    register_cvar( "rec_db_host", "127.0.0.1:4019" )
    register_cvar( "rec_db_user", "xxx" )
    register_cvar( "rec_db_pass", "xxx" )
    register_cvar( "rec_db_name", "xxx" )
       
    new data[128];
    get_localinfo( "amxx_datadir", data, sizeof(data) - 1 )
    format( demos_wr, sizeof(demos_wr)-1, "%s/demos_wr.txt", data);
    format( demos_ru, sizeof(demos_ru)-1, "%s/demos_ru.txt", data);
       
    static host[32], user[32], pass[32], name[32]
       
    get_cvar_string( "rec_db_host", host, 31 )
    get_cvar_string( "rec_db_user", user, 31 )
    get_cvar_string( "rec_db_pass", pass, 31 )
    get_cvar_string( "rec_db_name", name, 31 )
       
    DB_TUPLE=SQL_MakeDbTuple(host,user,pass,name)
    DB_CONNECT=SQL_Connect(DB_TUPLE, error_code, error, 511);
       
    if(DB_CONNECT == Empty_Handle)
           set_fail_state(error)
       
    new query[1024]
       
    formatex( query, 1023, "create table if not exists rec_wr (map_name varchar(32), fin_time float, name varchar(32) unique)")
    SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )
       
    formatex( query, 1023, "create table if not exists rec_ru (map_name varchar(32), fin_time float, name varchar(32) unique)")
    SQL_ThreadQuery( DB_TUPLE, "db_generic_handler", query )    
}

public make_wr_table()
{
    if(file_exists(demos_wr))    
    {    
     new line, stxtsize    
     new data[256]    
     new map_name[32], name[32]
     new fin_time[8]
     new query[1024]
              
     while((line=read_file(demos_wr,line,data,255,stxtsize))!=0)
     {    
      parse(data, map_name, 31, fin_time, 7, name, 31)
         
      formatex( query, 1023, "INSERT INTO `rec_wr` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
      SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
     }
    }
    else
    {
     log_amx("Failed To Load demos_wr.txt !")
    }
}

public make_ru_table()
{    
    if(file_exists(demos_ru))    
    {    
     new line, stxtsize    
     new data[256]    
     new map_name[32], name[32]
     new fin_time[8]
     new query[1024]
        
     while((line=read_file(demos_ru,line,data,255,stxtsize))!=0)
     {    
      parse(data, map_name, 31, fin_time, 7, name, 31)
         
      formatex( query, 1023, "INSERT INTO `rec_ru` VALUES ('%s', '%s', '%s')", map_name, fin_time, name )
      SQL_ThreadQuery(DB_TUPLE,"db_save_handler",query)
     }
    }
    else
    {
     log_amx("Failed To Load demos_ru.txt !")
    }
}

public db_generic_handler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime)
{
    return query_failed( failstate, error, errnum )
}

public db_save_handler( failstate, Handle:query, error[], errnum, data[], size, Float:queuetime )
{
    return query_failed( failstate, error, errnum )
}

public query_failed( failstate, error[], errnum )
{
    if( failstate == TQUERY_CONNECT_FAILED )
    {
     log_amx( "Rec to DB: Couldn't connect to database: %s", error )
     return 1
    }
    else if( failstate == TQUERY_QUERY_FAILED )
    {
     log_amx( "Rec to DB: Query failed: %s", error )
     return 1
    }
       
    if( errnum )
    {
     log_amx( "Rec to DB: Query Error: %s", error )
     return 1
    }
       
    return 0
}

public plugin_end()
{
       SQL_FreeHandle(DB_TUPLE)
}

весь файл в БД переписываеться но при записи каждой строчки в консоль сервера он пишет

Code

L 11/28/2008 - 12:16:34: [txttodb.amxx] Rec to DB: Query failed: Duplicate entry 'ZzdNk' for key 1
L 11/28/2008 - 12:16:34: [txttodb.amxx] Rec to DB: Query failed: Duplicate entry 'ZzdNk' for key 1
L 11/28/2008 - 12:16:34: [txttodb.amxx] Rec to DB: Query failed: Duplicate entry 'slaip' for key 1
L 11/28/2008 - 12:16:35: [txttodb.amxx] Rec to DB: Query failed: Duplicate entry 'DotAntipro' for key 1
L 11/28/2008 - 12:16:35: [txttodb.amxx] Rec to DB: Query failed: Duplicate entry 'slaip' for key 1
......

'slaip', 'DotAntipro', 'ZzdNk' это все ники

Да и еще переписывает не все строки

Сообщение отредактировал many - Пятница, 28.11.2008, 12:33:37
 
PomanoBДата: Пятница, 28.11.2008, 12:47:38 | Сообщение # 14
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
У тебя имя уникальный идентификатор, но в рекордах он повторяется
Сделай поле id в таблице


http://romanov4400.mybrute.com
 
manyДата: Пятница, 28.11.2008, 13:01:39 | Сообщение # 15
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
спс)) я просто таблицы заного сделал без unique
Вроде все работает)
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026