Skocz do zawartości

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

Zapis mysql - znikające punkty niektórym graczom


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Qes

    Profesjonalista

  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:204
  • Lokalizacja:Polska
Offline

Napisano 13.09.2016 15:42

Witam,

Może mi ktos powiedzieć co jest nie tak w tym zapisie? Chodzi oto, że niektórym użytkownikom usuwa punkty, które zdobyli (nie zawsze, ale czasem, zazwyczaj następnego dnia znikają)

Wszystko zapisuje normalnie, ale niektórym graczom po prostu znikają te punkty co jakiś czas (zerują się)

 

plugn_init

public plugin_init() {
	/* JAKIŚ TA KOD*/

	g_SqlTuple = SQL_MakeDbTuple("HOST","LOGIN","HASŁO","NAZWA_BAZY")
	
	if(g_SqlTuple == Empty_Handle)
		set_fail_state("Nie mozna utworzyc uchwytu do polaczenia.");
	
	new iErr, szError[32];
	new Handle:link = SQL_Connect(g_SqlTuple, 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 `BBB` ( \
		`id` int(5) NOT NULL auto_increment, \
		`nick` varchar(36) NOT NULL, \
		`punkty` INT(11) NOT NULL  DEFAULT 0, \
		PRIMARY KEY  (`id`) \
	)");
	SQL_Execute(query);
	SQL_FreeHandle(query);
}

plugin_end

public plugin_end() SQL_FreeHandle(g_SqlTuple);

client_putinserver

public client_putinserver(id) {
	player_points[id] = 0;		
	wczytane_dane[id] = false;
	get_user_name(id, gNick[id], 32);
	
	formatex(gQuery, charsmax(gQuery), "SELECT * FROM `BBB` WHERE `nick` = ^"%s^" ORDER BY `id` LIMIT 1", gNick[id]);
	new ids[1]; ids[0] = id;
	SQL_ThreadQuery(g_SqlTuple, "handleLoadData", gQuery, ids, 1);
}

client_disconnect

public client_disconnect(id) {
	if(!wczytane_dane[id])
		return;
	
	formatex(gQuery, charsmax(gQuery), "UPDATE `BBB` SET `punkty` = %d WHERE `nick` = ^"%s^"", player_points[id], gNick[id]);
	SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery);
	player_points[id] = 0;
}

Reszta

public handleLoadData(failstate, Handle:query, error[], errnum, data[], size){
	if(failstate != TQUERY_SUCCESS){
		log_amx("SQL Load error: %s",error);
		return;
	}
	
	new id = data[0];
	if(!is_user_connected(id)) return;
	
	if(SQL_MoreResults(query)) {
		player_points[id]		= SQL_ReadResult(query, 2);
	} else {		
		formatex(gQuery, charsmax(gQuery), "INSERT INTO `BBB` (`nick`) VALUES (^"%s^")", gNick[id]);
		SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery);
	}
	wczytane_dane[id] = true;
}

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

Użytkownik Qes edytował ten post 13.09.2016 15:43

  • +
  • -
  • 0

Polecam serdecznie

cs1.6download.png

Zapraszam!





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

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