OciXCrom's Rank System [XP|Levels|Ranks]

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5480
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 99 пъти
Получена благодарност: 629 пъти
Години: 22
Контакти:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom TM » 01 дек 2018, 17:27

Промени името на файла където се запазва XP-то (настройката VAULT_NAME в конфигурационния файл).

Потребителски аватар

viewsonic
Потребител
Потребител
Мнения: 135
Регистриран: 09 юни 2018, 17:46
Се отблагодари: 22 пъти
Контакти:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от viewsonic » 01 дек 2018, 22:59

благодаря !!!

Код: Избери всички

93.123.18.76:27016

Потребителски аватар

mar1anx Ciungea
Foreigner
Foreigner
Мнения: 36
Регистриран: 17 сеп 2018, 00:56
Се отблагодари: 4 пъти
Получена благодарност: 2 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от mar1anx Ciungea » 04 дек 2018, 15:25

I have a problem with save xp on name.

I change map i have level 0.

I change the vault_name, is save xp only if you type retry in console and after change map.


EDIT :

I have solved, I changed amxmodx

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5480
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 99 пъти
Получена благодарност: 629 пъти
Години: 22
Контакти:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom TM » 05 дек 2018, 13:44

mar1anx написа:
04 дек 2018, 15:25
I have a problem with save xp on name.

I change map i have level 0.

I change the vault_name, is save xp only if you type retry in console and after change map.


EDIT :

I have solved, I changed amxmodx
Can you please tell me how you solved so I can work on improving the plugin? Which AMXX version were you using when the bug occured and which one fixed it?

Потребителски аватар

mar1anx Ciungea
Foreigner
Foreigner
Мнения: 36
Регистриран: 17 сеп 2018, 00:56
Се отблагодари: 4 пъти
Получена благодарност: 2 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от mar1anx Ciungea » 06 дек 2018, 06:48

amxx 1.8.3 last build - problem with save
amxx 1.9 last build - solved


EDIT: I think it was not from amxmodx I think it was from the nvault module

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5480
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 99 пъти
Получена благодарност: 629 пъти
Години: 22
Контакти:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom TM » 12 дек 2018, 22:18

Изображение
  • Добавена е MySQL поддръжка. Вече можете да ползвате MySQL за запазване на XP-то, вместо nVault.
  • При неуспешна връзка с MySQL сървъра, плъгинът автоматично ще се прехвърли да ползва nVault за запазване на XP-то, вместо напълно да спре да работи.
  • За да ъпдетйнете от версия 2.7.1 до най-новата версия 3.0 без да загубите настройките в RankSystem.ini, заместете всички останали файлове, а в конфигурационния файл добавете следните неща в раздела [Settings] под настройката SAVE_TYPE:

    Код: Избери всички

    # If set to 1, player XP will be saved and loaded using MySQL rather than nVault.
    # If the MySQL connection fails, the plugin will automatically switch to using nVault.
    USE_MYSQL = 0
    
    # SQL information to use if USE_MYSQL is set to 1.
    SQL_HOST = 127.0.0.1
    SQL_USER = root
    SQL_PASSWORD = 
    SQL_DATABASE = amx
    SQL_TABLE = CRXRanks
  • Сложете настройката USE_MYSQL на 1 и настройте си данните за да ползвате MySQL опцията.
  • Интересна идея: можете да ползвате същите MySQL данни в повече от един сървър за играчите да имат същото XP във всички налични сървъри.
Благодаря на HueHue за написването на примерния SQL код който ползвах в плъгина.

Потребителски аватар

mar1anx Ciungea
Foreigner
Foreigner
Мнения: 36
Регистриран: 17 сеп 2018, 00:56
Се отблагодари: 4 пъти
Получена благодарност: 2 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от mar1anx Ciungea » 13 дек 2018, 00:22

Can you make a plugin to transfer from nvault in mysql ?
Like this

Код: Избери всички

#include <amxmodx>
#include <sqlx>

new g_host, g_user, g_pass, g_db;
new Host[64], User[32], Pass[32], DB[128];
new Handle:g_SQLTuple, Handle:SqlConnection;
new g_error[512], errorcode;
new reg_file[256], text[128], name[32], pass[34], status[11], query[512], counter = 0;

public plugin_init()
{
	register_plugin("Register System Data Transferor", "1.0", "m0skVi4a ;]")

	g_host = get_cvar_pointer("rs_host")
	g_user = get_cvar_pointer("rs_user")
	g_pass = get_cvar_pointer("rs_pass")
	g_db = get_cvar_pointer("rs_db")

	register_srvcmd("file_to_mysql", "FileToMYSQL")
	register_srvcmd("mysql_to_file", "MYSQLToFile")

	new configs_dir[64];

	get_localinfo("amxx_configsdir", configs_dir, charsmax(configs_dir))	
	formatex(reg_file, charsmax(reg_file), "%s/regusers.ini", configs_dir)
}

public MYSQLToFile()
{
	server_print("Connecting to MYSQL...")

	get_pcvar_string(g_host, Host, charsmax(Host))
	get_pcvar_string(g_user, User, charsmax(User))
	get_pcvar_string(g_pass, Pass, charsmax(Pass))
	get_pcvar_string(g_db, DB, charsmax(DB))

	g_SQLTuple = SQL_MakeDbTuple(Host, User, Pass, DB)

	SqlConnection = SQL_Connect(g_SQLTuple, errorcode, g_error, charsmax(g_error))

	if(SqlConnection == Empty_Handle) 
	{
		server_print("MYSQL connection failed!")
		server_print(g_error)
		return PLUGIN_HANDLED
	}
	else
	{
		server_print("MYSQL connection succesful!")
	}

	server_print("Checking Register System file...")

	if(!file_exists(reg_file))
	{
		server_print("Register System file -  %s   not found! Creating new...", reg_file)
		write_file(reg_file,";Register System file^n;Modifying may cause the clients to can not Login!^n^n")
	}
	else
	{
		server_print("Register System file found!")
	}

	server_print("Starting to transfer!")

	formatex(query, charsmax(query), "SELECT * FROM `registersystem`;")
	SQL_ThreadQuery(g_SQLTuple, "QuerySelectData", query)

	return PLUGIN_CONTINUE	
}

public QuerySelectData(FailState, Handle:Query, error[], errorcode, data[], datasize, Float:fQueueTime)
{ 
	if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
	{
		server_print(error)
		return
	}
	else
	{
		new col_name = SQL_FieldNameToNum(Query, "Name")
		new col_pass = SQL_FieldNameToNum(Query, "Password")
		new col_status = SQL_FieldNameToNum(Query, "Status")

		new file_pointer = fopen(reg_file, "a")

		counter = 0

		while(SQL_MoreResults(Query)) 
		{
			SQL_ReadResult(Query, col_name, name, charsmax(name))
			SQL_ReadResult(Query, col_pass, pass, charsmax(pass))
			SQL_ReadResult(Query, col_status, status, charsmax(status))

			if(!equal(status, "LOGGED_IN"))
			{
				status = "LOGGED_OUT"
			}			

			formatex(text, charsmax(text), "^n^"%s^" ^"%s^" ^"%s^"", name, pass, status)
			fprintf(file_pointer, text)
			counter++
			server_print("%d. Transfering  %s  's registration, password hash: %s  Status: %s", counter, name, pass, status)
			SQL_NextRow(Query)
		}
		fclose(file_pointer)
		server_print("Transfer finished!  %d registration were transferred!", counter)
	}
}

public FileToMYSQL()
{
	server_print("Checking Register System file...")

	if(!file_exists(reg_file))
	{
		server_print("Register System file -  %s   not find!", reg_file)
		return PLUGIN_HANDLED
	}
	else
	{
		server_print("Register System file found!")
	}

	server_print("Connecting to MYSQL...")

	get_pcvar_string(g_host, Host, charsmax(Host))
	get_pcvar_string(g_user, User, charsmax(User))
	get_pcvar_string(g_pass, Pass, charsmax(Pass))
	get_pcvar_string(g_db, DB, charsmax(DB))

	g_SQLTuple = SQL_MakeDbTuple(Host, User, Pass, DB)

	SqlConnection = SQL_Connect(g_SQLTuple, errorcode, g_error, charsmax(g_error))

	if(SqlConnection == Empty_Handle) 
	{
		server_print("MYSQL connection failed!")
		server_print(g_error)
		return PLUGIN_HANDLED
	}
	else
	{
		server_print("MYSQL connection succesful!")
	}

	new Handle:Query

	Query = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS registersystem (Name VARCHAR(32), Password VARCHAR(34), Status VARCHAR(11))")

	if(!SQL_Execute(Query)) 
	{
		SQL_QueryError(Query, g_error, charsmax(g_error))
		server_print(g_error)
	}

	SQL_FreeHandle(Query)
	SQL_FreeHandle(SqlConnection)

	server_print("Starting to transfer!")

	new length, line = 0;
	counter = 0

	while(read_file(reg_file, line++ , text, charsmax(text), length))
	{
		if(!text[0] || text[0] == '^n' || text[0] == ';')
			continue

		parse(text, name, charsmax(name), pass, charsmax(pass), status, charsmax(status))

		if(!equal(status, "LOGGED_IN"))
		{
			status = "LOGGED_OUT"
		}

		formatex(query, charsmax(query), "INSERT INTO `registersystem` (`Name`, `Password`, `Status`) VALUES (^"%s^", ^"%s^", ^"%s^");", name, pass, status)
		SQL_ThreadQuery(g_SQLTuple, "QuerySetData", query)
		counter++
		server_print("%d. Transfering  %s  's registration, password hash: %s  Status: %s", counter, name, pass, status)
	}

	server_print("Transfer finished!  %d registration were transferred!", counter)

	return PLUGIN_CONTINUE
}

public QuerySetData(FailState, Handle:Query, error[],errcode, data[], datasize)
{
	if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
	{
		server_print(error)
		return
	}
}

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5480
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 99 пъти
Получена благодарност: 629 пъти
Години: 22
Контакти:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom TM » 14 дек 2018, 14:34

I'll try to make a transfer plugin soon.

Потребителски аватар

esc-Fiv3
Foreigner
Foreigner
Мнения: 110
Регистриран: 24 ное 2018, 19:19
Се отблагодари: 16 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от esc-Fiv3 » 14 дек 2018, 14:55

Updated? It works good the last one too. What is the difference between 2.7 to 3.0? Should I update it too? It works great the last one and I have amxx 1.8.2

Потребителски аватар

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5480
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 99 пъти
Получена благодарност: 629 пъти
Години: 22
Контакти:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom TM » 14 дек 2018, 14:59

Look at the changelog above. In 3.0 you can use MySQL to save the XP - this was a highly requested feature. In 2.7 you can only use nVault which doesn't allow any actions outside the server. With MySQL you can connect the XP with your website for example.

Отговори

Върни се в “Одобрени плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Yandex [Bot] и 1 гост