Solved Level/XP Didn't Save

Coding Help/Re-API Supported
Post Reply
Nodes
Member
Member
Egypt
Posts: 4
Joined: 2 years ago
Contact:

Level/XP Didn't Save

#1

Post by Nodes » 2 years ago

Hello I'm using Level/xp system

i have some problem in save i tried to use mysql but the same problem Level/xp didn't save

Code: Select all

#include <zombie_escape>

// Defines
#define MAX_LEVEL 50
#define maxranks 43 
#define MAX_XP 500000
#define TASK_SHOWHUD 2020
#define ID_SHOWHUD (taskid - TASK_SHOWHUD)
#define LEVELUP "levelup_ZE/ze_levelup.wav"
 

#define RANKS_Noobest 0
#define RANKS_Noob 1
#define RANKS_Newbiee 2
#define RANKS_Easy 3
#define RANKS_Normal 4
#define RANKS_Hard 5
#define RANKS_Expert 6
#define RANKS_SuperExpert 7
#define RANKS_Specialist 8
#define RANKS_Leader 9
#define RANKS_Mayor 10
#define RANKS_Pro 11
#define RANKS_SuperPro 12
#define RANKS_Heroic 13
#define RANKS_God 14
#define RANKS_15	15
#define RANKS_16	16
#define RANKS_17	17
#define RANKS_18	18
#define RANKS_19	19
#define RANKS_20	20
#define RANKS_21	21
#define RANKS_22	22
#define RANKS_23	23
#define RANKS_24	24
#define RANKS_25	25
#define RANKS_26	26
#define RANKS_27	27
#define RANKS_28	28
#define RANKS_29	29
#define RANKS_30	30
#define RANKS_31	31
#define RANKS_32	32
#define RANKS_33	33
#define RANKS_34	34
#define RANKS_35	35
#define RANKS_36	36
#define RANKS_37	37
#define RANKS_38	38
#define RANKS_39	39
#define RANKS_vip vip
#define RANKS_admin admin
#define RANKS_co co
#define RANKS_owner owner

new const ranks_names[maxranks][]=
{
	"Newborn",
	"Learner ",
	"KilleR ",
	"HitMAN ",
	"Ass@ss1n ",
	"Ninja ",
	"Scarecr0w ",
	"SWAT ",
	"NegoT1aTor ",
	"Wind FighTeR",
	"Spy ",
	"M@dm@n ",
	"LuckY 13",
	"X7r3m3 ",
	"CreeD ",
	"SAVaGE ",
	"ManiPulaToR ",
	"DeViL ",
	"GuardiaN ",
	"RespecteD ",
	"HeadtakeR ",
	"Dragon Slayer",
	"10K Champion",
	"SkyFaLL ",
	"RocketmaN ",
	"MonsteR ",
	"DominatoR ",
	"DemoN SlayeR",
	"Legendary Player",
	"ELiTE MasteR",
	"Global DS",
	"Global DS I",
	"Global DS II",
	"Global DS III",
	"Global DS Master",
	"Super Hero I",
	"Super Hero II",
	"Super Hero III",
	"V.I.P",
	"Admin",
	"Head-Admin",
	"Co-Owner",
	"Owner",
}

enum
{
	Host = 0,
	User,
	Pass,
	DB
}

// Constants
new const g_szLevelsVault[] = "Levels"
new const g_szRanksVault[] = "Ranks"
new const g_szLogFile[] = "Levels.log" // MySQL Errors log file
new const g_szTable[] =

" \
	ALTER TABLE `test` \
	ADD IF NOT EXISTS `Level` int(20) NOT NULL DEFAULT '0', \
	ADD IF NOT EXISTS `XP` int(20) NOT NULL DEFAULT '0', \
	ADD IF NOT EXISTS `Max_XP` int(20) NOT NULL DEFAULT '0'; \
"

// Messages
const Float:HUD_SPECT_X = -1.0
const Float:HUD_SPECT_Y = 0.2
const Float:HUD_STATS_X = -1.0
const Float:HUD_STATS_Y = -0.2

const HUD_STATS_ZOMBIE_R = 255
const HUD_STATS_ZOMBIE_G = 255
const HUD_STATS_ZOMBIE_B = 255

const HUD_STATS_HUMAN_R = 255
const HUD_STATS_HUMAN_G = 255
const HUD_STATS_HUMAN_B = 255

const HUD_STATS_SPEC_R = 255
const HUD_STATS_SPEC_G = 255
const HUD_STATS_SPEC_B = 255

// Variables
new g_iLevel[33], 
	g_iXP[33], 
	g_iMaxXP[33],
	rank[43],
	Float:g_fDamage[33],
	g_MsgSync, 
	g_iLevelsVaultHandle, 
	g_iRanksVaultHandle,
	Handle:g_hTuple,
	Fw_LevelUP,
	ForwardReturn

// Cvars
new g_pCvarZombieInfect, 
	g_pCvarEscapeSuccess, 
	g_pCvarEnableDamage, 
	g_pCvarRequiredDamage, 
	g_pCvarDamageAward, 
	g_pCvarStartXP, 
	g_pCvarMaxLevelsIncrement, 
	g_pCvarMaxXPFirstLevel,
	g_pCvarPercentageStyle, 
	g_pCvarStartFromZero, 
	g_pCvarAddCommas, 
	g_pCvarLevelEffects,
	g_pCvarSaveType,
	g_pCvarDBInfo[4]

public plugin_natives()
{
	register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
	register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
	register_native("ze_get_user_level", "native_ze_get_user_level", 1)
	register_native("ze_get_user_rank", "native_ze_get_user_rank", 1)
	register_native("ze_set_user_level", "native_ze_set_user_level", 1)
	register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
	register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
}

public plugin_precache()
{
	precache_sound(LEVELUP)
}

public plugin_init()
{
	register_plugin("[ZE] Level-XP System", "1.9", "Raheem/JaCk")
	
	// Hook Chains
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)

	Fw_LevelUP = CreateMultiForward("ze_on_levelup", ET_IGNORE, FP_CELL)
	
	// Cvars
	g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
	g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
	g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
	g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
	g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
	g_pCvarStartXP = register_cvar("ze_start_xp", "50")
	g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
	g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
	g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
	g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
	g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
	g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
	g_pCvarSaveType = register_cvar("ze_levels_save_type", "0")
	g_pCvarDBInfo[Host] = register_cvar("ze_levels_host", "127.0.0.1")
	g_pCvarDBInfo[User] = register_cvar("ze_levels_user", "root")
	g_pCvarDBInfo[Pass] = register_cvar("ze_levels_pass", "password")
	g_pCvarDBInfo[DB] = register_cvar("ze_levels_dbname", "levels_db")
	
	// Messages
	g_MsgSync = CreateHudSyncObj()

	if (get_pcvar_num(g_pCvarSaveType))
	{
		set_task(0.1, "Delay_MySQL_Init")
	}
}

public plugin_end()
{
	if (get_pcvar_num(g_pCvarSaveType))
	{
		if (g_hTuple != Empty_Handle)
		{
			SQL_FreeHandle(g_hTuple)
		}
	}
}

public Delay_MySQL_Init()
{
	MySQL_Init()
}

public MySQL_Init()
{
	if (!get_pcvar_num(g_pCvarSaveType))
		return
	
	new szHost[64], szUser[32], szPass[32], szDB[128]
	
	get_pcvar_string(g_pCvarDBInfo[Host], szHost, charsmax(szHost))
	get_pcvar_string(g_pCvarDBInfo[User], szUser, charsmax(szUser))
	get_pcvar_string(g_pCvarDBInfo[Pass], szPass, charsmax(szPass))
	get_pcvar_string(g_pCvarDBInfo[DB], szDB, charsmax(szDB))
	
	g_hTuple = SQL_MakeDbTuple(szHost, szUser, szPass, szDB)
	
	// Let's ensure that the g_hTuple will be valid, we will access the database to make sure
	new iErrorCode, szError[512], Handle:hSQLConnection
	
	hSQLConnection = SQL_Connect(g_hTuple, iErrorCode, szError, charsmax(szError))
	
	if (hSQLConnection != Empty_Handle)
	{
		log_amx("[MySQL][LVL] Successfully connected to host: %s (ALL IS OK).", szHost)
		SQL_FreeHandle(hSQLConnection)
	}
	else
	{
		// Disable plugin
		set_fail_state("[LVL] Failed to connect to MySQL database: %s.", szError)
	}
	
	SQL_ThreadQuery(g_hTuple, "QueryCreateTable", g_szTable)
}

public QueryCreateTable(iFailState, Handle:hQuery, szError[], iError, szData[], iSize, Float:flQueueTime) 
{
	SQL_IsFail(iFailState, iError, szError, g_szLogFile)
}

public client_putinserver(id)
{
	if(is_user_hltv(id) || is_user_bot(id))
		return
	
	// Just 1 second delay
	set_task(1.0, "DelayLoad", id)

	// Other tasks
	set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
	set_task(0.1, "Check_MaxXP", id, _, _, "b")
}

public DelayLoad(id)
{
	// Load his data
	LoadData(id)
}

public client_disconnected(id) 
{
	if(is_user_hltv(id) || is_user_bot(id))
		return
		
	remove_task(id+TASK_SHOWHUD)
	remove_task(id)
}

public Check_MaxXP(id)
{
	new iCurrentMaxXP = g_iMaxXP[id]
	
	new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
	
	for (new i = 1; i <= g_iLevel[id]; i++)
	{
		iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
	}
	
	if (iCurrentMaxXP != iMaxXP)
	{
		g_iMaxXP[id] = iMaxXP
	}
}

public Show_Hud(taskid)
{	
	new iPlayer = ID_SHOWHUD
	
	if (!is_user_alive(iPlayer))
	{
		iPlayer = pev(iPlayer, pev_iuser2)
		
		if (!is_user_alive(iPlayer))
			return
	}
	
	if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
	{
		if(iPlayer != ID_SHOWHUD)
		{
			set_hudmessage(random(255), random(255), random(255), HUD_SPECT_X, HUD_SPECT_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
			ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
		}
		else if (ze_is_user_zombie(iPlayer))
		{
			set_hudmessage(random(255), random(255), random(255), HUD_STATS_X, HUD_STATS_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
			ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
		}
		else
		{
			set_hudmessage(random(255), random(255), random(255), HUD_STATS_X, HUD_STATS_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
			ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
		}
	}

	else
	{
		if(iPlayer != ID_SHOWHUD)
		{
			if (get_pcvar_num(g_pCvarAddCommas) == 1)
			{
				new szSpecXP[15], szSpecMaxXP[15]
				
				AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
				AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
				
				set_hudmessage(random(255), random(255), random(255), HUD_SPECT_X, HUD_SPECT_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
				ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "[ Level: %d | XP: %s/%s: %s ]", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP, ranks_names[rank[iPlayer]])
			}
			else
			{
				set_hudmessage(random(255), random(255), random(255), HUD_SPECT_X, HUD_SPECT_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
				ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "[ Level: %d | XP: %d/%d: %s ]", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer], ranks_names[rank[iPlayer]])
			}	
		}
		else if (ze_is_user_zombie(iPlayer))
		{
			if (get_pcvar_num(g_pCvarAddCommas) == 1)
			{
				new szZombieXP[15], szZombieMaxXP[15]
				
				AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
				AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
				
				set_hudmessage(random(255), random(255), random(255), HUD_STATS_X, HUD_STATS_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
				ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "[ Level: %d | XP: %s/%s: %s ]", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP, ranks_names[rank[ID_SHOWHUD]])
			}
			else
			{
				set_hudmessage(random(255), random(255), random(255), HUD_STATS_X, HUD_STATS_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
				ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "[ Level: %d | XP: %d/%d: %s ]", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD], ranks_names[rank[ID_SHOWHUD]])
			}
		}
		else
		{
			if (get_pcvar_num(g_pCvarAddCommas) == 1)
			{
				new szHumanXP[15], szHumanMaxXP[15]
				
				AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
				AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))

				set_hudmessage(random(255), random(255), random(255), HUD_STATS_X, HUD_STATS_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
				ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "[ Level: %d | XP: %s/%s | %s ]", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP, ranks_names[rank[ID_SHOWHUD]])
			}
			else
			{
				set_hudmessage(random(255), random(255), random(255), HUD_STATS_X, HUD_STATS_Y, 0, 1.0, 1.0, 0.0, 0.0, -1)
				ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "[ Level: %d | XP: %d/%d | %s ]", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD], ranks_names[rank[ID_SHOWHUD]])
			}
		}
	}
}


public set_ranks(id)
{
	if(g_iLevel[id] <= 2) rank[id] = RANKS_Noobest
	if(g_iLevel[id] >= 2) rank[id] = RANKS_Noob
	if(g_iLevel[id] >= 3) rank[id] = RANKS_Newbiee
	if(g_iLevel[id] >= 4) rank[id] = RANKS_Easy
	if(g_iLevel[id] >= 5) rank[id] = RANKS_Normal
	if(g_iLevel[id] >= 6) rank[id] = RANKS_Hard
	if(g_iLevel[id] >= 7) rank[id] = RANKS_Expert
	if(g_iLevel[id] >= 8) rank[id] = RANKS_SuperExpert
	if(g_iLevel[id] >= 9) rank[id] = RANKS_Specialist
	if(g_iLevel[id] >= 10) rank[id] = RANKS_Leader
	if(g_iLevel[id] >= 11) rank[id] = RANKS_Mayor
	if(g_iLevel[id] >= 12) rank[id] = RANKS_Pro
	if(g_iLevel[id] >= 13) rank[id] = RANKS_SuperPro
	if(g_iLevel[id] >= 14) rank[id] = RANKS_Heroic
	if(g_iLevel[id] >= 15) rank[id] = RANKS_God

}
public ze_roundend(WinTeam)
{
	if (WinTeam == ZE_TEAM_HUMAN)
	{
		for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
		{
			if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
				continue
			
			g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
			SaveData(id)
			Check_User_Level(id)
		}
	}
	
	remove_task(TASK_SHOWHUD)
}

public Check_User_Level(id)
{
	if(!is_user_connected(id))
		return

	if(g_iXP[id] >= g_iMaxXP[id])
	{
		if (get_pcvar_num(g_pCvarStartFromZero) == 1)
		{
			g_iXP[id] = 0
		}
		
		new szName[32]
		g_iLevel[id] ++
		rank[id] ++
		g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
		get_user_name(id, szName, charsmax(szName))
		ze_colored_print(0, "!g%s !tNow in Level !g%i [!g%s!t]!", szName, g_iLevel[id], ranks_names[rank[id]])
		ExecuteForward(Fw_LevelUP, ForwardReturn, id)
		
		SaveData(id)
		
		PlaySound(id, LEVELUP)
		
		if (get_pcvar_num(g_pCvarLevelEffects) != 0)
		{
			// Screen Fade
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
			write_short(4096*2)
			write_short(4096*5)
			write_short(0x0001) 
			write_byte(random(256))
			write_byte(random(256))
			write_byte(random(256))
			write_byte(150)
			message_end()
			
			// Screen Shake
			message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
			write_short(255<<14)
			write_short(10<<14)
			write_short(255<<14)
			message_end()
		}
	}
}

public ze_user_infected(iVictim, iInfector)
{
	if (iInfector == 0)
		return
	
	g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
	SaveData(iInfector)
	Check_User_Level(iInfector)
}

public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
{
	// Player Damage Himself
	if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
		return HC_CONTINUE
	
	// Same Team?
	if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
		return HC_CONTINUE
	
	// Store Damage For every Player
	g_fDamage[iAttacker] += fDamage
	
	// Damage Calculator Equal or Higher than needed damage
	if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
	{
		// Give Player The Coins
		g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
		SaveData(iAttacker)
		Check_User_Level(iAttacker)
		
		// Rest The Damage Calculator
		g_fDamage[iAttacker] = 0.0
	}
	return HC_CONTINUE
}

public SaveData(id)
{
	new szAuthID[35], szName[32]
	get_user_authid(id, szAuthID, charsmax(szAuthID))
	get_user_name(id, szName, charsmax(szName))
	
	// Set Him to max if he Higher than Max Value
	if (g_iLevel[id] > MAX_LEVEL)
	{
		g_iLevel[id] = MAX_LEVEL
	}
	
	if (g_iXP[id] > MAX_XP)
	{
		g_iXP[id] = MAX_XP
	}

	if (!get_pcvar_num(g_pCvarSaveType))
	{
		new szData[256]
		formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
		
		// Open the Vaults
		g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
		g_iRanksVaultHandle = nvault_open(g_szRanksVault)

		// Saves His Data
		nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
		nvault_set(g_iRanksVaultHandle, szAuthID, szName)
		
		// Close Vaults
		nvault_close(g_iLevelsVaultHandle)
		nvault_close(g_iRanksVaultHandle)
	}
	else
	{
		new szQuery[128]
		formatex(szQuery, charsmax(szQuery), "UPDATE `zombie_escape` SET `Level` = '%d', `XP` = '%d', `Max_XP` = '%d' WHERE ( `SteamID` = '%s' );", g_iLevel[id], g_iXP[id], g_iMaxXP[id], szAuthID)
		SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery)
	}
}

public QuerySetData(iFailState, Handle:hQuery, szError[], iError, szData[], iSize, Float:flQueueTime) 
{
	SQL_IsFail(iFailState, iError, szError, g_szLogFile)
}

public QuerySetData2(iFailState, Handle:hQuery, szError[], iError, szData[], iSize, Float:flQueueTime) 
{
	SQL_IsFail(iFailState, iError, szError, g_szLogFile)
}

public LoadData(id)
{
	new szData[256], szAuthID[35]
	
	get_user_authid(id, szAuthID, charsmax(szAuthID))
	
	if (!get_pcvar_num(g_pCvarSaveType))
	{
		// Useless Variable
		new iTimestamp, iExists
		
		// Open the Vault
		g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
		
		iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
		
		// Close Vault
		nvault_close(g_iLevelsVaultHandle)
		
		if (!iExists)
		{
			g_iLevel[id] = 0
			g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
			g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
			SaveData(id)
		}
		else
		{
			new iLevel[32], iXP[32], iMaxLevel[32]
			parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
			
			g_iLevel[id] = str_to_num(iLevel)
			g_iXP[id] = str_to_num(iXP)
			g_iMaxXP[id] = str_to_num(iMaxLevel)
		}
	}
	else
	{
		new szQuery[128], szData[5]
		formatex(szQuery, charsmax(szQuery), "SELECT * FROM `Players_Information` WHERE ( `SteamID` = '%s' );", szAuthID)
     
		num_to_str(id, szData, charsmax(szData))
		SQL_ThreadQuery(g_hTuple, "QuerySelectData", szQuery, szData, charsmax(szData))
	}
}

public QuerySelectData(iFailState, Handle:hQuery, szError[], iError, szData[]) 
{
	if (SQL_IsFail(iFailState, iError, szError, g_szLogFile))
		return
	
	new id = str_to_num(szData)
	
	// No results for this query means this is new player
	if (!SQL_NumResults(hQuery))
	{
		new szSteamId[36]
		get_user_authid(id, szSteamId, charsmax(szSteamId))

		g_iLevel[id] = 0
		g_iXP[id] = 0
		g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
		return
	}

	g_iLevel[id] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "Level"))
	g_iXP[id] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "XP"))
	g_iMaxXP[id] = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "Max_XP"))
}

public native_ze_get_user_xp(id)
{
	if(!is_user_connected(id))
	{
		log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
		return false;
	}
	
	return g_iXP[id]
}

public native_ze_set_user_xp(id, amount)
{
	if(!is_user_connected(id))
	{
		log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
		return false;
	}
	
	g_iXP[id] = amount
	
	Check_User_Level(id)
	return true;
}

public native_ze_get_user_level(id)
{
	if(!is_user_connected(id))
	{
		log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
		return false;
	}
	
	return g_iLevel[id]
}

public native_ze_get_user_rank(id)
{
	if(!is_user_connected(id))
	{
		log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
		return false;
	}
	
	return rank[id]
}

public native_ze_set_user_level(id, amount)
{
	if(!is_user_connected(id))
	{
		log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
		return false;
	}
	
	g_iLevel[id] = amount
	
	if (get_pcvar_num(g_pCvarStartFromZero) == 1)
	{
		g_iXP[id] = 0
	}
	
	return true;
}

public native_ze_get_user_max_xp(id)
{
	if(!is_user_connected(id))
	{
		log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
		return false;
	}
	
	return g_iMaxXP[id]
}

public native_ze_set_user_max_xp(id, amount)
{
	if(!is_user_connected(id))
	{
		log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
		return false;
	}
	
	g_iMaxXP[id] = amount
	return true;
}

User avatar
z0h1r-LK
Mod Developer
Mod Developer
Morocco
Posts: 476
Joined: 5 years ago
Location: The Red City ❤
Contact:

#2

Post by z0h1r-LK » 1 year ago

Solved?????

Nodes
Member
Member
Egypt
Posts: 4
Joined: 2 years ago
Contact:

#3

Post by Nodes » 1 year ago

yep

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: No registered users and 0 guests