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

Save by nick, not by steamid


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 StrikerRus

    Początkujący

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:14
  • Lokalizacja:Moskow / New York
Offline

Napisano 20.10.2011 19:02

Hi!

Can someone make this plugin to save nick, not by steamid.

#include <amxmodx>
#include <sqlx>

new Handle:g_SqlTuple
new bool:g_HasSaved[33]

public plugin_init()
{
	register_event("DeathMsg", "event_death", "a")
}

public plugin_cfg()
{
	g_SqlTuple = SQL_MakeStdTuple()
	
	if (g_SqlTuple == Empty_Handle)
		log_amx("Invalid SQL info.")
	else
	{
		new errcode, error[128]
		new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
		
		if (db == Empty_Handle)
			log_amx("Could not connect to SQL: %s", error)
		else
		{
			new Handle:query = SQL_PrepareQuery(db,
				"CREATE TABLE IF NOT EXISTS player_stats \
				(name VARCHAR(32) NOT NULL, \
				steamid VARCHAR(35) NOT NULL PRIMARY KEY, \
				kills INT(11) NOT NULL, \
				deaths INT(11) NOT NULL);"
				)
			
			if (!SQL_Execute(query))
			{
				SQL_QueryError(query, error, 127)
				log_amx("Query error for create table: %s", error)
			}
			else
				state sql_enabled
			
			SQL_FreeHandle(query)
			
			new players[32], num
			get_players(players, num, "ch")
			
			for (new i = 0; i < num; i++)
			{
				handle_player_connect(db, players[i])
			}
			
			SQL_FreeHandle(db)
		}
	}
}

handle_player_connect(Handle:db, id)
{
	if (g_HasSaved[id])
		return;
	
	new steamid[35]
	get_user_authid(id, steamid, 34)
	
	new Handle:query = SQL_PrepareQuery(db, "SELECT * FROM player_stats WHERE steamid = ^"%s^";", steamid)
	
	if (!SQL_Execute(query))
	{
		new error[128]
		SQL_QueryError(query, error, 127)
		log_amx("Query error for select player stats: %s", error)
	}
	else if (SQL_NumResults(query))
	{
		SQL_FreeHandle(query)
		
		new name[32]
		get_user_name(id, name, 31)
		
		query = SQL_PrepareQuery(db, "UPDATE player_stats SET name = ^"%s^" WHERE steamid = ^"%s^";", name, steamid)
		
		if (!SQL_Execute(query))
		{
			new error[128]
			SQL_QueryError(query, error, 127)
			log_amx("Query error for update player name: %s", error)
		}
		
		g_HasSaved[id] = true
	}
	else
	{
		SQL_FreeHandle(query)
		
		new name[32]
		get_user_name(id, name, 31)
		
		query = SQL_PrepareQuery(db, "INSERT INTO player_stats (name, steamid, kills, deaths) VALUES (^"%s^", ^"%s^", 0, 0);", name, steamid)
		
		if (!SQL_Execute(query))
		{
			new error[128]
			SQL_QueryError(query, error, 127)
			log_amx("Query error for insert player: %s", error)
		}
		else
			g_HasSaved[id] = true
	}
	
	SQL_FreeHandle(query)
}

public client_putinserver(id) <> { }
public client_putinserver(id) <sql_enabled>
{
	if (g_HasSaved[id])
		return;
	
	new errcode, error[128]
	new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
	
	if (db == Empty_Handle)
		return;
	
	handle_player_connect(db, id)
	
	SQL_FreeHandle(db);
}

public client_disconnect(id)
{
	g_HasSaved[id] = false
}

public client_infochanged(id) <> { }
public client_infochanged(id) <sql_enabled>
{
	new oldname[32], newname[32]
	get_user_name(id, oldname, 31)
	get_user_info(id, "name", newname, 31)
	
	if (!equal(oldname, newname) && g_HasSaved[id])
	{
		new errcode, error[128]
		new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
		
		if (db == Empty_Handle)
			return;
		
		new steamid[35]
		get_user_authid(id, steamid, 34)
		
		new Handle:query = SQL_PrepareQuery(db, "UPDATE player_stats SET name = ^"%s^" WHERE steamid = ^"%s^";", newname, steamid)
		
		if (!SQL_Execute(query))
		{
			SQL_QueryError(query, error, 127)
			log_amx("Query error for update player in client_putinserver(): %s", error)
		}
		
		SQL_FreeHandle(query);
		
		SQL_FreeHandle(db);
	}
}

public event_death() <> { }
public event_death() <sql_enabled>
{
	new killer = read_data(1)
	new victim = read_data(2)
	
	save_stats(killer, "kills", 1)
	save_stats(victim, "deaths", 1)
}

save_stats(id, stat[], addvalue)
{
	if (is_user_connected(id) && g_HasSaved[id])
	{
		new errcode, error[128]
		new Handle:db = SQL_Connect(g_SqlTuple, errcode, error, 127)
		
		if (db == Empty_Handle)
			return;
		
		new steamid[35]
		get_user_authid(id, steamid, 34)
		
		new Handle:query = SQL_PrepareQuery(db, "UPDATE player_stats SET %s = %s + %i WHERE steamid = ^"%s^";", stat, stat, addvalue, steamid)
		
		if (!SQL_Execute(query))
		{
			SQL_QueryError(query, error, 127)
			log_amx("Query error for update player stat: %s", error)
		}
		
		SQL_FreeHandle(query);
		
		SQL_FreeHandle(db);
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/

Thanks ;]

Someone? Please. :(
  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Online

Napisano 21.10.2011 17:21

check
Spoiler

  • +
  • -
  • 0

#3 StrikerRus

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:14
  • Lokalizacja:Moskow / New York
Offline

Napisano 21.10.2011 19:17

Not working. :( And if you can to doesn't saving steamid.
  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Online

Napisano 21.10.2011 19:21

Spoiler

  • +
  • -
  • 0




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

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