Add Mysql in plugins for rank

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
lantimilan
Извън линия
Foreigner
Foreigner
Мнения: 424
Регистриран на: 29 Ное 2017, 22:49
Се отблагодари: 31 пъти
Получена благодарност: 3 пъти

Add Mysql in plugins for rank

Мнение от lantimilan » 05 Апр 2018, 11:00

Hi who can help me to connect one my plugin with database because i need to save more good all stats because sometimes server lost rank players or level and i think its more good to save in mysql it is possible to connect

Plugin :

Код за потвърждение: Избери целия код

/*
	Автор плагина: Анатолий (AcE) Бойко.
	Моя страничка: https://vk.com/e1337ace
	Профиль Steam: http://steamcommunity.com/profiles/76561198038775603/
*/

#define AUTHOR "AcE"
#define VERSION	"1.5.1 HLDS"
#define PLUGIN "LS RANK"
#define LASTUPDATE "07, January (01), 2018"

#define HUD_SKILL 	// Skill - The ELO Method.
#define STATUS_VALUE 	// Информация о игроке возле прицела.
#define HUD_POSITION 	// Позиция игрока (На худе) в статистике.

#include <amxmodx>
#include <fakemeta>
#include <nvault>

#if defined HUD_POSITION
#include <csx>
#endif

#if AMXX_VERSION_NUM < 183
	#include <colorchat>
	#define argbreak strbreak
	#define client_disconnected client_disconnect
#endif

#if defined STATUS_VALUE
enum _:MAX_TYPES {TYPE_NONE, TYPE_RELATION, TYPE_PLAYER}
enum {LOOK_FRIEND = 1, LOOK_ENEMY, LOOK_HOSTAGE}
enum _:MAX_REPLACES {RE_HP, RE_RANK, RE_NAME}
new const Replaces[MAX_REPLACES][] = {"%hp%", "%rank%", "%name%"}
new status_value[MAX_TYPES], gStatusText
#endif

enum _:udata
{
	level, exp, informer, kills, Float:Skill
}

new UserData[33][udata]
new Float:HudUpdateInterval
new g_Cvar[14], LEVELS[22], g_Connected
new s_Get_Buffer[40], s_Level[64], s_Exp[64], s_Skill[64]
new g_Steam[33][35], nvault_name[128], g_Vault

#define IsUserValid(%1) (1 <= %1 <= 32)
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

new const g_arrItemSkills[] =
{
	0, 60, 75, 85, 100, 115, 130, 140, 150, 165, 180, 195, 210
}

new const g_arrViewSkills[][] =
{
	"Dobet-", "Dobet", "Dobet+",
	"Mesatar-", "Mesatar", "Mesatar+",
	"Fort-", "Fort", "Fort+",
	"Pro-", "Pro", "Pro+", "Godlike"
}

new const CLASSES[][] =
{
	"", "NOOB", "EKSPERT", "POLIC",
	"OFFICIER", "LEJTNANT", "KADET",
	"USHTAR", "NENTETAR", "TETAR",
	"RRESHTER", "KAPTER", "KRYEKAPTER",
	"NENTOGER", "TOGER", "KAPITEN",
	"MAJOR", "NENKOLONEL", "KOLONEL",
	"GJENERAL BRIGADE", "GJENERAL MAJOR", "ADMIRAL"
}

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar("lrs_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_UNLOGGED)

	#if defined STATUS_VALUE
	gStatusText = get_user_msgid("StatusText")
	register_event("StatusValue", "StatusValueShow", "be")
	#endif

	register_event("DeathMsg", "EventDeath", "a", "1>0")
	register_forward(FM_Sys_Error, "server_down")
	register_forward(FM_GameShutdown, "server_down")
	register_forward(FM_ServerDeactivate, "server_down")
	register_forward(FM_ChangeLevel, "server_down")
	register_logevent("lrs_save_base", 2, "1=Round_End")
	register_cvar("lrs_vault_name", "lr_system")

	register_clcmd("say /lrshud", "informer_switch", 0, "switch experience informer on/off")
	g_Cvar[1] = register_cvar("lrs_add_exp", "2")
	g_Cvar[2] = register_cvar("lrs_add_exp_hs", "3")
	g_Cvar[3] = register_cvar("lrs_levels", "0 40 70 100 200 350 450 550 650 800 1200 1900 3000 4500 6000 7500 9000 10000 12000 15000 22000")
	g_Cvar[4] = register_cvar("lrs_hud_exp_type", "1")
	g_Cvar[5] = register_cvar("lrs_hud_xypos", "0.01 0.22")
	g_Cvar[6] = register_cvar("lrs_hud_color", "150 150 150")
	g_Cvar[7] = register_cvar("lrs_hud_random_color", "0")
	g_Cvar[8] = register_cvar("lrs_hud_update", "1.5")

	g_Cvar[9] = register_cvar("lrs_start_skill", "100")
	g_Cvar[10] = register_cvar("lrs_remove_exp_on", "0")
	g_Cvar[11] = register_cvar("lrs_remove_exp_days", "0")
	g_Cvar[12] = register_cvar("lrs_auto_clear_stats_days", "0")
	g_Cvar[13] = register_cvar("lrs_min_exp_add_players_stats", "15")

	HudUpdateInterval = get_pcvar_float(g_Cvar[8])
	set_task(HudUpdateInterval, "lrs_informer", _, _, _, "b")

	server_print(""); server_print("   %s Copyright (c) 2017 %s", PLUGIN, AUTHOR)
	server_print("   Version %s build on %s", VERSION, LASTUPDATE); server_print("")
}

public plugin_cfg()
{
	new LVL[22][16], cvLevels[256]
	get_pcvar_string(g_Cvar[3], cvLevels, 255); trim(cvLevels)
	parse(cvLevels, LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15, LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15, LVL[20], 15, LVL[21], 15)
	for (new i = 0; i < 21; i ++)
		LEVELS[i +1] = str_to_num(LVL[i])

	get_cvar_string("lrs_vault_name", nvault_name, 63)
	g_Vault = nvault_open(nvault_name)

	if (g_Vault == INVALID_HANDLE)
		set_fail_state("Gabim ne hapjen nVault!")

	if (get_pcvar_num(g_Cvar[10]) == 1)
		nvault_prune(g_Vault, 0, get_systime() - (86400 * get_pcvar_num(g_Cvar[11])))

	new date[255]; get_time("%d", date, 254)
	if (equal(date, "get_pcvar_num(g_Cvar[12])"))
	{
		nvault_prune(g_Vault, 0, get_systime())
		new map[33]; get_mapname(map, charsmax(map))
		set_task(1.0, "changelevel", _, map, sizeof(map), "a", 1)
		log_to_file("lrs_main.txt", "Statistikat u fshin me sukses!")
	}
}

public plugin_end() return nvault_close(g_Vault)
public client_authorized(id) return get_user_authid(id, g_Steam[id], charsmax(g_Steam[]))
public changelevel(map[]) return server_cmd("changelevel %s", map)

public client_putinserver(id)
{
	set_bit(g_Connected, id)
	arrayset(UserData[id], 0, udata)
	lrs_check_base(id)
}

public server_down()
{
	new players[32], pnum
	get_players(players, pnum)
	for (new i; i < pnum; i ++)
	{
		lrs_save_base(players[i])
	}
}

public client_disconnected(id)
{
	reset_bit(g_Connected, id)
	lrs_save_base(id)
}

public lrs_check_base(id)
{
	if (is_user_hltv(id)) return
	if (!get_bit(g_Connected, id)) return

	UserData[id][exp] = 0
	UserData[id][level] = 1
	UserData[id][Skill] = 0.0

	formatex(s_Get_Buffer, charsmax(s_Get_Buffer), "%sEXP", g_Steam[id])
	new s_Exp = nvault_get(g_Vault, s_Get_Buffer)

	formatex(s_Get_Buffer, charsmax(s_Get_Buffer), "%sLEVEL", g_Steam[id])
	new s_Level = nvault_get(g_Vault, s_Get_Buffer)

	formatex(s_Get_Buffer, charsmax(s_Get_Buffer), "%sSKILL", g_Steam[id])
	new s_Skill = nvault_get(g_Vault, s_Get_Buffer)

	if (s_Skill)
	{
		UserData[id][exp] = s_Exp
		UserData[id][level] = s_Level
		UserData[id][Skill] = Float:s_Skill
	}
	else
	{
		UserData[id][Skill] = float(get_pcvar_num(g_Cvar[9]))
		lrs_save_base(id)
	}
}

public lrs_save_base(id)
{
	if (is_user_hltv(id)) return
	if (UserData[id][exp] < get_pcvar_num(g_Cvar[13])) return

	format(s_Get_Buffer, charsmax(s_Get_Buffer) , "%sEXP", g_Steam[id])
	format(s_Exp, charsmax(s_Exp), "%d", UserData[id][exp])
	nvault_set(g_Vault, s_Get_Buffer, s_Exp)

	format(s_Get_Buffer, charsmax(s_Get_Buffer) , "%sLEVEL", g_Steam[id])
	format(s_Level, charsmax(s_Level), "%d", UserData[id][level])
	nvault_set(g_Vault, s_Get_Buffer, s_Level)

	format(s_Get_Buffer, charsmax(s_Get_Buffer), "%sSKILL", g_Steam[id])
	format(s_Skill, charsmax(s_Skill), "%d", UserData[id][Skill])
	nvault_set(g_Vault, s_Get_Buffer, s_Skill)
}

public EventDeath()
{
	static killer, victim
	killer = read_data(1)
	victim = read_data(2)

	if (!get_bit(g_Connected, killer)) return
	if (!IsUserValid(killer) || !IsUserValid(victim) || killer == victim) return

	if (UserData[killer][level] < 21)
	{
		static TempEXP
		TempEXP = (read_data(3) == 1) ? get_pcvar_num(g_Cvar[2]) : get_pcvar_num(g_Cvar[1])
		UserData[killer][exp] += TempEXP; lrs_check_level(killer)
	}
	new Float:delta = 1.0 / (1.0 + floatpower(10.0, (UserData[killer][Skill] - UserData[victim][Skill]) / 100.0))
	UserData[killer][Skill] += (UserData[killer][kills] < 100) ? (delta * 2.0) : (delta * 1.5)
	UserData[victim][Skill] -= (UserData[victim][kills] < 100) ? (delta * 2.0) : (delta * 1.5)

	if (UserData[victim][Skill] < 0.0)
		UserData[victim][Skill] = 0.0

	if (UserData[killer][Skill] > 220.0)
		UserData[killer][Skill] = 220.0
}

public lrs_check_level(id)
{
	if (!get_bit(g_Connected, id)) return

	if (UserData[id][level] < 1)
		UserData[id][level] = 1

	if (UserData[id][exp] < 0)
		UserData[id][exp] = 0

	static szName[32]
	get_user_name(id, szName, 31)

	if (UserData[id][exp] >= LEVELS[UserData[id][level] +1])
	{
		UserData[id][level] ++
		client_cmd(0, "spk events/task_complete")
		client_print_color(0, print_team_default, "^1[^4LS^1] Lojtari ^3%s ^1mori nje titull te ri - ^4%s^1. Urime !", szName, CLASSES[UserData[id][level]])
	}
}

stock get_skill_id(Float:skill)
{
	for (new i, sk = floatround(skill, floatround_tozero); i < sizeof g_arrViewSkills; i ++)
	{
		if (i && g_arrItemSkills[i] > sk)
			return i -1
		else if ((!i && g_arrItemSkills[i] > sk) || i == charsmax(g_arrViewSkills))
			return i
	}
	return 0
}

public lrs_informer()
{
	static live, id, target
	static buffer[192], len, SyncHudMsg
	if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()

	for (id = 1; id <= 32; id ++)
	{
		live = is_user_alive(id)
		if (!get_bit(g_Connected, id) && is_user_ignore(id)) continue
		if (UserData[id][informer]) continue
		target = pev(id, pev_iuser2)

	#if defined HUD_POSITION
		static st[8], bh[8], g_rank[33]
		g_rank[id] = get_user_stats(id, st, bh)
		g_rank[target] = get_user_stats(target, st, bh)
	#endif

		if (live)
		{
			len = format(buffer, charsmax(buffer), "Titulli: %s", CLASSES[UserData[id][level]])
			if (UserData[id][level] < 21)
			{
				if (get_pcvar_num(g_Cvar[4]) == 0)
					len += format(buffer[len], charsmax(buffer) - len, "^nPervoja: [%d/%d]", UserData[id][exp], LEVELS[UserData[id][level] +1])
				else len += format(buffer[len], charsmax(buffer) - len, "^nPervoja: [%d/%d][+%d]", UserData[id][exp], LEVELS[UserData[id][level] +1], (LEVELS[UserData[id][level] +1] - UserData[id][exp]))
			}
			else len += format(buffer[len], charsmax(buffer) - len, "^nPervoja: Maksimum")
		#if defined HUD_POSITION
			len += format(buffer[len], charsmax(buffer) - len, "^nPozita: [%d prej %d]", g_rank[id], get_statsnum())
		#endif
		#if defined HUD_SKILL
			new Float:szSkill = UserData[id][Skill]
			len += format(buffer[len], charsmax(buffer) - len, "^nAftesia: [%s|%.2f]", g_arrViewSkills[get_skill_id(szSkill)], szSkill)
		#endif
		}
		else
		{
			if (target > 0 && !live)
			{
				static szName[32]; get_user_name(target, szName, 31)
				len = format(buffer, charsmax(buffer), "Emri: %s", szName)
				len += format(buffer[len], charsmax(buffer) - len, "^nTitulli: %s", CLASSES[UserData[target][level]])
				if (UserData[target][level] < 21)
				{
					if (get_pcvar_num(g_Cvar[4]) == 0)
						len += format(buffer[len], charsmax(buffer) - len, "^nPervoja: [%d/%d]", UserData[target][exp], LEVELS[UserData[target][level] +1])
					else len += format(buffer[len], charsmax(buffer) - len, "^nPervoja: [%d/%d][+%d]", UserData[target][exp], LEVELS[UserData[target][level] +1], (LEVELS[UserData[target][level] +1] - UserData[target][exp]))
				}
				else len += format(buffer[len], charsmax(buffer) - len, "^nPervoja: Maksimum")
			#if defined HUD_POSITION
				len += format(buffer[len], charsmax(buffer) - len, "^nPozita: [%d prej %d]", g_rank[target], get_statsnum())
			#endif
			#if defined HUD_SKILL
				new Float:szSkill = UserData[target][Skill]
				len += format(buffer[len], charsmax(buffer) - len, "^nAftesia: [%s|%.2f]", g_arrViewSkills[get_skill_id(szSkill)], szSkill)
			#endif
			}
		}
		static r, g, b, Float:x, Float:y
		HudMsgPos(x, y); HudMsgColor(g_Cvar[6], r, g, b)
		if (get_pcvar_num(g_Cvar[7]) == 0)
			set_hudmessage(r, g, b, x, y, 0, 0.0, HudUpdateInterval, _, _, -1)
		else set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), x, y, 0, 0.0, HudUpdateInterval, _, _, -1)
		ShowSyncHudMsg(id, SyncHudMsg, "%s", buffer)
	}
}

public informer_switch(id)
{
	if (!get_bit(g_Connected, id) && is_user_ignore(id)) return

	if (UserData[id][informer])
	{
		UserData[id][informer] = 0
		client_cmd(id, "spk fvox/activated")
		client_print_color(id, print_team_default, "^1[^4LS^1] ^3Informatat jane ^1<^4Aktive^1>")
	}
	else
	{
		UserData[id][informer] = 1
		client_cmd(id, "spk fvox/deactivated")
		client_print_color(id, print_team_default, "^1[^4LS^1] ^3Informatat jane te ^1<^4Ndaluara^1>")
	}
}

#if defined STATUS_VALUE
public StatusValueShow(id)
{
	new num = read_data(1)
	if (num <= 0 || num >= MAX_TYPES) return
	new update = status_value[num] = read_data(2)
	switch(num)
	{
		case TYPE_RELATION:
		{
			if (!update && is_user_alive(id))
			{
				message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
				write_byte(0); write_string(""); message_end()
			}
		}
		case TYPE_PLAYER:
		{
			if (is_user_alive(id))
			{
				new message[192]
				switch(status_value[TYPE_RELATION])
				{
					case LOOK_FRIEND:
					{
						copy(message, charsmax(message), "Shoku: %name%|HP: %hp%|Titulli: %rank%")
					}
					case LOOK_ENEMY:
					{
						copy(message, charsmax(message), "Armiku: %name%|Titulli: %rank%")
					}
					case LOOK_HOSTAGE:
					{
						return
					}
				}
				EditMessage(message, update, true, get_user_health(update))
				message_begin(MSG_ONE_UNRELIABLE, gStatusText, _, id)
				write_byte(0); write_string(message); message_end()
			}
		}
	}
}

EditMessage(message[192], player, bool:status_text, hp)
{
	new temp[64]
	if (is_user_alive(player))
	{
		for (new i; i < MAX_REPLACES; i ++)
		{
			switch(i)
			{
				case RE_HP:
				{
					num_to_str(hp, temp, charsmax(temp))
				}
				case RE_RANK:
				{
					format(temp, charsmax(temp), "%s", CLASSES[UserData[player][level]])
				}
				case RE_NAME:
				{
					if (status_text)
						copy(temp, charsmax(temp), "%p2")
					else
						get_user_name(player, temp, charsmax(temp))
				}
				default:
				{
					copy(temp, charsmax(temp), "")
				}
			}
			replace(message, charsmax(message), Replaces[i], temp)
		}
	}
	trim(message)
}
#endif

public plugin_natives()
	register_native("lrs_get_level_name", "_lrs_get_level_name")

public _lrs_get_level_name(plugin, params)
{
	new buffer[192]
	new id = get_param(1)
	new len = get_param(3)
	format(buffer, len, "%s", CLASSES[UserData[id][level]])
	set_string(2, buffer, len)
}

stock HudMsgPos(&Float:x, &Float:y)
{
	static coords[16], piece[10]
	get_pcvar_string(g_Cvar[5], coords, 15)
	argbreak(coords, piece, 9, coords, 15)
	x = str_to_float(piece)
	y = str_to_float(coords)
}

stock HudMsgColor(cvar, &r, &g, &b)
{
	static color[16], piece[5]
	get_pcvar_string(cvar, color, 15)
	argbreak(color, piece, 4, color, 15)
	r = str_to_num(piece)
	argbreak(color, piece, 4, color, 15)
	g = str_to_num(piece)
	b = str_to_num(color)
}

is_user_ignore(id)
	return is_user_bot(id) || is_user_hltv(id)

  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

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