Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Czysty zapis sql


Najlepsza odpowiedź Danny OK, 04.07.2014 16:00

Pomoże ktoś?

public SelectHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) {
	//Check for errors and then process loading from table queries
	if ( FailState )
	{
		if ( FailState == TQUERY_CONNECT_FAILED )
		{
			log_amx("Ladowanie - Nie mozna polaczyc sie z baza SQL.  [%d] %s", Errcode, Error);
		log_amx("WAZNY LOG#18");
		}
		else if ( FailState == TQUERY_QUERY_FAILED )
		{
			log_amx("Ladowanie - Zapytanie nie powiodlo sie. [%d] %s", Errcode, Error);
		log_amx("WAZNY LOG#19");
		}

		log_amx("WAZNY LOG#20");
		return;
	}
		log_amx("WAZNY LOG#21");

	new id = Data[0];

	if ( !SQL_NumResults(Query) ) // No more results - User not found, create them a blank entry in the table. and zero their variables
	{
		totalkills[id] = 0;
		totaldeath[id] = 0;
		knifekills[id] = 0;
		pistolkills[id] = 0;
		smgkills[id] = 0;
		shotgunkills[id] = 0;
		riflekills[id] = 0;
		sniperkills[id] = 0;
		parakills[id] = 0;
		grenadekills[id] = 0;
		accuracy[id] = 0;
		bronze[id] = 0;
		silver[id] = 0;
		gold[id] = 0;

		//Escape ' character incase save key is a name
		new tempSaveKey[63];
		copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
		replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );

		formatex(g_Cache, charsmax(g_Cache), "INSERT INTO bf4onlyrank VALUES('%s', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0')", tempSaveKey);
		SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
		log_amx("WAZNY LOG#22");
	}
	else
	{
		//Player must have been found. Loop through and load the columns into the global vars
		totalkills[id] = SQL_ReadResult(Query, 0);
		totaldeath[id] = SQL_ReadResult(Query, 1);
		knifekills[id] = SQL_ReadResult(Query, 2);
		pistolkills[id] =SQL_ReadResult(Query, 3);
		smgkills[id] = SQL_ReadResult(Query, 4);
		shotgunkills[id] = SQL_ReadResult(Query, 5);
		riflekills[id] = SQL_ReadResult(Query, 6);
		sniperkills[id] = SQL_ReadResult(Query, 7);
		parakills[id] = SQL_ReadResult(Query, 8);
		grenadekills[id] = SQL_ReadResult(Query, 9);
		accuracy[id] = SQL_ReadResult(Query, 10);
		bronze[id] = SQL_ReadResult(Query, 11);
		silver[id] = SQL_ReadResult(Query, 12);
		gold[id] = SQL_ReadResult(Query, 13);
		log_amx("WAZNY LOG#23");
	}
		log_amx("WAZNY LOG#24");

	gStatsLoaded[id]++;
}

Log:

L 07/04/2014 - 16:51:15: World triggered "Round_Start"
L 07/04/2014 - 16:51:19: [bf4rank.amxx] WAZNY LOG#5
L 07/04/2014 - 16:51:19: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:20: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:20: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:20: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:27: [bf4rank.amxx] WAZNY LOG#13
L 07/04/2014 - 16:51:27: [bf4rank.amxx] WAZNY LOG#1
L 07/04/2014 - 16:51:27: [bf4rank.amxx] WAZNY LOG#2
L 07/04/2014 - 16:51:28: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#19
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#20
L 07/04/2014 - 16:51:28: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank2 WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#13
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#1
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#2
L 07/04/2014 - 16:51:28: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank3 WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:29: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank4 WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:29: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank WHERE playerid='Danny'' w linii 1
L 07/04/2014 - 16:51:29: [bf4rank.amxx] WAZNY LOG#19
L 07/04/2014 - 16:51:29: [bf4rank.amxx] WAZNY LOG#20
L 07/04/2014 - 16:51:29: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank2 WHERE playerid='Danny'' w linii 1
L 07/04/2014 - 16:51:30: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank3 WHERE playerid='Danny'' w linii 1
L 07/04/2014 - 16:51:30: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank4 WHERE playerid='Danny'' w linii 1

Wyraźnie widać że błąd wynika w tej części:

		else if ( FailState == TQUERY_QUERY_FAILED )
		{
			log_amx("Ladowanie - Zapytanie nie powiodlo sie. [%d] %s", Errcode, Error);
		log_amx("WAZNY LOG#19");
		}

Czym to może być spowodowane?

Przejdź do postu


  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 Danny OK

    Zaawansowany

  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 04.07.2014 13:38

Witam,

Czy ma ktoś czysty zapis sql gotowy do wstawienia do nowego pluginu i edytowania? 
Ponieważ sam nigdy nie robiłem od podstaw zapisu sql i pewnie coś zapomnę dodać :D

 

Proszę gotową funkcję samego zapisu, może być razem z jakimś pluginem nie za dużym

Z góry dziękuję.

Pozdrawiam, Danny.


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#2 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1662
Godlike

  • Postów:2495
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 04.07.2014 13:47

jak plugin ma byc na serwery only steam to polecam uzyc: http://amxx.pl/topic...4-database-orm/
 
jak nie to możesz coś z tego wykombinować:

#include < amxmodx >
#include < sqlx >

new sqlConfig[ ][ ] = {
	"127.0.0.1",
	"root",
	"password",
	"database"
}

enum playerData {
	SteamID[ 33 ],
	IP[ 16 ],
	Nick[ 64 ],
	HS
};

new Handle: gSqlTuple;
new gPlayer[ 33 ][ playerData ];

public SqlInit( ) {
	gSqlTuple = SQL_MakeDbTuple( sqlConfig[ 0 ], sqlConfig[ 1 ], sqlConfig[ 2 ], sqlConfig[ 3 ] );
	
	if( gSqlTuple == Empty_Handle )
		set_fail_state( "Nie mozna utworzyc uchwytu do polaczenia" );
	
	new iErr, szError[ 32 ];
	new Handle:link = SQL_Connect( gSqlTuple, iErr, szError, 31 );
	
	if( link == Empty_Handle ) {
		log_amx( "Error (%d): %s", iErr, szError );
		set_fail_state( "Brak polaczenia z baza danych" );
	}
	
	new Handle: query;
	query = SQL_PrepareQuery( link, "CREATE TABLE IF NOT EXISTS `players_hs` (\
		`id` int(11) NOT NULL AUTO_INCREMENT,\
		`steamid` varchar(33) NOT NULL,\
		`nick` varchar(64) NOT NULL,\
		`ip` varchar(16) NOT NULL,\
		`hs` int(16) NOT NULL,\
		PRIMARY KEY (`id`),\
		UNIQUE KEY `authid` (`nick`)\
	)" );
	
	SQL_Execute( query );
	SQL_FreeHandle( query );
	SQL_FreeHandle( link );
}

public Query( failstate, Handle:query, error[ ] ) {
	if( failstate != TQUERY_SUCCESS ) {
		log_amx( "SQL query error: %s", error );
		return;
	}
}

public plugin_init() {
	register_plugin( "Zapis HS", "1.0", "AMXX.pl" );
	register_event( "DeathMsg", "eventDeathMsg", "ae" );
	
	set_task( 0.1, "SqlInit" );
}

public eventDeathMsg( ) {
	if( read_data( 3 ) ) {
		gPlayer[ read_data( 1 ) ][ HS ]++;
	}	
}

public client_connect( id ) {
	gPlayer[ id ][ HS ] = 0;	
	get_user_authid( id, gPlayer[ id ][ SteamID ], 32 );
	get_user_ip( id, gPlayer[ id ][ IP ], 15, 1 );
	get_user_name( id, gPlayer[ id ][ Nick ], 63 );	
	SQL_PrepareString( gPlayer[ id ][ Nick ], gPlayer[ id ][ Nick ], 63 );
}

public client_disconnect( id ) {
	save( id );	
	gPlayer[ id ][ HS ] = 0;
}

stock SQL_PrepareString( const szQuery[], szOutPut[], size ) {
	copy( szOutPut, size, szQuery );
	replace_all( szOutPut, size, "'", "\'" );
	replace_all( szOutPut, size, "`", "\`" );    
	replace_all( szOutPut, size, "\\", "\\\\" );
	replace_all( szOutPut, size, "^0", "\0");
	replace_all( szOutPut, size, "^n", "\n");
	replace_all( szOutPut, size, "^r", "\r");
	replace_all( szOutPut, size, "^x1a", "\Z");	
}

stock save( id ) {
	new query[ 1024 ]	
	formatex( query, charsmax( query ), "INSERT IGNORE INTO `players_hs` ( `steamid`, `nick`, `ip`, `hs`) VALUES ( '%s', '%s', '%s', %d ) ON DUPLICATE KEY UPDATE `hs` = `hs` + %d", 
	gPlayer[ id ][ SteamID ], gPlayer[ id ][ Nick ], gPlayer[ id ][ IP ], gPlayer[ id ][ HS ] );
	
	if( gSqlTuple )
		SQL_ThreadQuery (gSqlTuple, "Query", query );
}

  • +
  • -
  • 1

#3 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 04.07.2014 14:29

Właśnie chciałem z tego to nie tworzy tabeli w bazie :D


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#4 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 04.07.2014 16:00   Najlepsza odpowiedź

Pomoże ktoś?

public SelectHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) {
	//Check for errors and then process loading from table queries
	if ( FailState )
	{
		if ( FailState == TQUERY_CONNECT_FAILED )
		{
			log_amx("Ladowanie - Nie mozna polaczyc sie z baza SQL.  [%d] %s", Errcode, Error);
		log_amx("WAZNY LOG#18");
		}
		else if ( FailState == TQUERY_QUERY_FAILED )
		{
			log_amx("Ladowanie - Zapytanie nie powiodlo sie. [%d] %s", Errcode, Error);
		log_amx("WAZNY LOG#19");
		}

		log_amx("WAZNY LOG#20");
		return;
	}
		log_amx("WAZNY LOG#21");

	new id = Data[0];

	if ( !SQL_NumResults(Query) ) // No more results - User not found, create them a blank entry in the table. and zero their variables
	{
		totalkills[id] = 0;
		totaldeath[id] = 0;
		knifekills[id] = 0;
		pistolkills[id] = 0;
		smgkills[id] = 0;
		shotgunkills[id] = 0;
		riflekills[id] = 0;
		sniperkills[id] = 0;
		parakills[id] = 0;
		grenadekills[id] = 0;
		accuracy[id] = 0;
		bronze[id] = 0;
		silver[id] = 0;
		gold[id] = 0;

		//Escape ' character incase save key is a name
		new tempSaveKey[63];
		copy(tempSaveKey, charsmax(tempSaveKey), gSaveKey[id]);
		replace_all(tempSaveKey, charsmax(tempSaveKey), "'", "\'" );

		formatex(g_Cache, charsmax(g_Cache), "INSERT INTO bf4onlyrank VALUES('%s', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0')", tempSaveKey);
		SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache);
		log_amx("WAZNY LOG#22");
	}
	else
	{
		//Player must have been found. Loop through and load the columns into the global vars
		totalkills[id] = SQL_ReadResult(Query, 0);
		totaldeath[id] = SQL_ReadResult(Query, 1);
		knifekills[id] = SQL_ReadResult(Query, 2);
		pistolkills[id] =SQL_ReadResult(Query, 3);
		smgkills[id] = SQL_ReadResult(Query, 4);
		shotgunkills[id] = SQL_ReadResult(Query, 5);
		riflekills[id] = SQL_ReadResult(Query, 6);
		sniperkills[id] = SQL_ReadResult(Query, 7);
		parakills[id] = SQL_ReadResult(Query, 8);
		grenadekills[id] = SQL_ReadResult(Query, 9);
		accuracy[id] = SQL_ReadResult(Query, 10);
		bronze[id] = SQL_ReadResult(Query, 11);
		silver[id] = SQL_ReadResult(Query, 12);
		gold[id] = SQL_ReadResult(Query, 13);
		log_amx("WAZNY LOG#23");
	}
		log_amx("WAZNY LOG#24");

	gStatsLoaded[id]++;
}

Log:

L 07/04/2014 - 16:51:15: World triggered "Round_Start"
L 07/04/2014 - 16:51:19: [bf4rank.amxx] WAZNY LOG#5
L 07/04/2014 - 16:51:19: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:20: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:20: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:20: [bf4rank.amxx] WAZNY LOG#7
L 07/04/2014 - 16:51:27: [bf4rank.amxx] WAZNY LOG#13
L 07/04/2014 - 16:51:27: [bf4rank.amxx] WAZNY LOG#1
L 07/04/2014 - 16:51:27: [bf4rank.amxx] WAZNY LOG#2
L 07/04/2014 - 16:51:28: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#19
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#20
L 07/04/2014 - 16:51:28: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank2 WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#13
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#1
L 07/04/2014 - 16:51:28: [bf4rank.amxx] WAZNY LOG#2
L 07/04/2014 - 16:51:28: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank3 WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:29: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank4 WHERE playerid='Winter'' w linii 1
L 07/04/2014 - 16:51:29: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank WHERE playerid='Danny'' w linii 1
L 07/04/2014 - 16:51:29: [bf4rank.amxx] WAZNY LOG#19
L 07/04/2014 - 16:51:29: [bf4rank.amxx] WAZNY LOG#20
L 07/04/2014 - 16:51:29: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank2 WHERE playerid='Danny'' w linii 1
L 07/04/2014 - 16:51:30: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank3 WHERE playerid='Danny'' w linii 1
L 07/04/2014 - 16:51:30: [bf4rank.amxx] Ladowanie - Zapytanie nie powiodlo sie. [1064] Something is wrong in your syntax obok 'FROM bf4onlyrank4 WHERE playerid='Danny'' w linii 1

Wyraźnie widać że błąd wynika w tej części:

		else if ( FailState == TQUERY_QUERY_FAILED )
		{
			log_amx("Ladowanie - Zapytanie nie powiodlo sie. [%d] %s", Errcode, Error);
		log_amx("WAZNY LOG#19");
		}

Czym to może być spowodowane?


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych