Raised This Month: $51 Target: $400
 12% 

Solved [GunXP MOD] Native Runtime ERRORS


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
MeDo_17
New Member
Join Date: Jun 2020
Old 07-07-2022 , 16:27   [GunXP MOD] Native Runtime ERRORS
Reply With Quote #1

Hello , i have trouble with native runtime errors at GunXP Level,Prestiges.

I tried few ways to fix but it still give me these errors, i also search on google for help but i got nothing there so if someone can help me here it would be really nice.

Code:
L 07/07/2022 - 22:13:18: Function "native_get_user_xp" was not found
L 07/07/2022 - 22:13:18: [AMXX] Run time error 19 (plugin "gunxp_prestiges.amxx") - debug not enabled!
L 07/07/2022 - 22:13:18: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 07/07/2022 - 22:13:18: [AMXX] Run time error -1 (plugin "gunxp_prestiges.amxx") - debug not enabled!
L 07/07/2022 - 22:13:18: An error occurred in plugin_natives. This is dangerous!
L 07/07/2022 - 22:13:18: [AMXX] Plugin "gunxp_prestiges.amxx" failed to load: Plugin uses an unknown function (name "set_user_prestige") - check your modules.in

Here is Code

Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <hamsandwich>
#include <fun>
#include <gunxpmod>

#define PLUGIN "Prestige System"
#define VERSION "1.0"
#define AUTHOR "xbatista"

#define MAXP 10000000
#define MAX_LEVEL 6
#define PowerNum 5

native native_get_user_ever_prestige(id)
native native_get_user_xp(id)
native native_set_user_xp(id, amount)
native native_set_user_prestige(id, amount)
native native_get_user_prestige(id)


new PrestigeVault
new SpeedLevel[33], HealthLevel[33], DamageLevel[33], GravityLevel[33], RegenLevel[33], MaxHealth[33], Refreshing[33]
new save

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /power", "CMD_Prestige")
	register_clcmd("say /powers", "CMD_Prestige")
	register_clcmd("set_prestige", "set_prestige", ADMIN_RCON, "<name> <amount>")

	register_clcmd("say /prs", "CmdPrestigeMenu");
	register_clcmd("say /prestige", "CmdPrestigeMenu");
	
	register_clcmd("say prs", "CmdPrestigeMenu");
	register_clcmd("say prestige", "CmdPrestigeMenu");
	
	register_event("CurWeapon","event_curweapon","be", "1=1")
	
	RegisterHam(Ham_Spawn, "player", "CheckSpawn")
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage")
	set_task(1.0, "NeverEndingRegen",_,_,_,"b")
	
	save = register_cvar("prs_save","0")
}

public plugin_cfg()
{
	PrestigeVault = nvault_open( "PrestigeSystem" );
	
	if ( PrestigeVault == INVALID_HANDLE )
		set_fail_state( "Error opening Prestige System nVault, file does not exist!" );
}
public plugin_natives()
{
	register_native("get_user_xp", "native_get_user_xp", 1);
	register_native("set_user_xp", "native_set_user_xp", 1);
	register_native("get_user_level", "native_get_user_level", 1);
	register_native("set_user_level", "native_set_user_level", 1);
	register_native("get_user_max_level", "native_get_user_max_level", 1);
	register_native("get_user_prestige", "native_get_user_prestige", 1);
	register_native("set_user_prestige", "native_set_user_prestige", 1);
	register_native("get_user_ever_prestige", "native_get_user_ever_prestige", 1);
}
public plugin_end()
{
	nvault_close(PrestigeVault)	
}
public client_authorized(id)
{
	LoadPowers(id)
}

public client_disconnect(id)
{
	SavePowers(id)
	
	SpeedLevel[id] = 0
	HealthLevel[id] = 0
	DamageLevel[id] = 0
	GravityLevel[id] = 0
	RegenLevel[id] = 0
}

public CheckSpawn(id)
{
	MaxHealth[id] = 100
	Refreshing[id] = true
	set_task(0.5, "AddHealth", id)
	
	if(GravityLevel[id] > 0)
		set_task(0.5, "AddGravity", id)
}

public AddHealth(id)
{
	set_user_health(id, get_user_health(id) + (20*HealthLevel[id]))
	
	if(get_user_health(id) > 100.0)
		MaxHealth[id] = get_user_health(id)
		
	else
		MaxHealth[id] = 100
		
	Refreshing[id] = false
}

public AddGravity(id)
{
	new Num = (800 - GravityLevel[id]*30)/800
	set_user_gravity(id, 1.0 * Num)
}

public event_curweapon(id)
{
	if(SpeedLevel[id] > 0)
		set_task(0.5, "SetSpeed", id)
}

public SetSpeed(id)
{
	set_user_maxspeed(id, get_user_maxspeed(id) +(20*SpeedLevel[id]))	
}

public TakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(victim != attacker)
	{
		if(DamageLevel[attacker] > 0)
		{
			SetHamParamFloat(4, damage * (1.0 + (DamageLevel[attacker] * 0.2)))
		}
	}
}

public NeverEndingRegen()
{
	new players[32], num
	get_players(players, num, "ach")
	
	for(new id;id < num;id++)
	{
		new i = players[id]
		if(RegenLevel[i] > 0 && !Refreshing[id])
		{
			if((get_user_health(i) + RegenLevel[i]) > MaxHealth[i]) set_user_health(i, MaxHealth[i])
			else set_user_health(i, get_user_health(i) + RegenLevel[i])
		}
	}
}

public CMD_Prestige(id)
{
	new Format[100], StrFloat[4]
	
	formatex(Format, charsmax(Format), "Powers: [Prestiges: %i ( Total: %i )]", get_user_prestige(id), native_get_user_ever_prestige(id))
	
	new PrestigeMenu = menu_create(Format, "HandleCMD_Prestige")
	
	float_to_str(250.0 + (20*(SpeedLevel[id]+1)), StrFloat, charsmax(StrFloat))
	
	formatex(Format, charsmax(Format), "%sSpeed \d[\yLevel %i\d][\r%s units\d] - %i Prestige%s%s", get_user_prestige(id) >= Price(SpeedLevel[id]) ? "\w" : "\d", SpeedLevel[id], StrFloat, Price(SpeedLevel[id]), Price(SpeedLevel[id]) == 1 ? "" : "s", SpeedLevel[id] < MAX_LEVEL-1 ? "" : "\d[\rMAXED\d]" )
	menu_additem(PrestigeMenu, Format)
	
	formatex(Format, charsmax(Format), "%sHealth \d[\yLevel %i\d][\r+%i health\d] - %i Prestige%s%s", get_user_prestige(id) >= Price(HealthLevel[id]) ? "\w" : "\d", HealthLevel[id], (HealthLevel[id]+1)*20, Price(HealthLevel[id]), Price(HealthLevel[id]) == 1 ? "" : "s", HealthLevel[id] < MAX_LEVEL-1 ? "" : "\d[\rMAXED\d]" )
	menu_additem(PrestigeMenu, Format)
	
	float_to_str(1.0 + (0.2*(DamageLevel[id]+1)), StrFloat, charsmax(StrFloat))
	formatex(Format, charsmax(Format), "%sDamage \d[\yLevel %i\d][\r%sx\d] - %i Prestige%s%s", get_user_prestige(id) >= Price(DamageLevel[id]) ? "\w" : "\d", DamageLevel[id], StrFloat, Price(DamageLevel[id]), Price(DamageLevel[id]) == 1 ? "" : "s", DamageLevel[id] < MAX_LEVEL-1 ? "" : "\d[\rMAXED\d]" )
	menu_additem(PrestigeMenu, Format)
	
	float_to_str((800.0 - GravityLevel[id]*30)/800, StrFloat, charsmax(StrFloat))
	formatex(Format, charsmax(Format), "%sGravity \d[\yLevel %i\d][\r%s Gravity\d] - %i Prestige%s%s", get_user_prestige(id) >= Price(GravityLevel[id]) ? "\w" : "\d", GravityLevel[id], 800-(30*GravityLevel[id]), Price(GravityLevel[id]), Price(GravityLevel[id]) == 1 ? "" : "s", GravityLevel[id] < MAX_LEVEL-1 ? "" : "\d[\rMAXED\d]" )
	menu_additem(PrestigeMenu, Format)
	
	formatex(Format, charsmax(Format), "%sHP Regeneration \d[\yLevel %i\d][\r%i HP/Sec\d] - %i Prestige%s%s", get_user_prestige(id) >= Price(RegenLevel[id]) ? "\w" : "\d", RegenLevel[id], RegenLevel[id], Price(RegenLevel[id]), Price(RegenLevel[id]) == 1 ? "" : "s", RegenLevel[id] < MAX_LEVEL-1 ? "" : "\d[\rMAXED\d]" )
	menu_additem(PrestigeMenu, Format)
	
	formatex(Format, charsmax(Format), "Reset Powers \d[\rFree\d]")
	menu_additem(PrestigeMenu, Format)
	
	menu_display(id, PrestigeMenu)

}

public HandleCMD_Prestige(id, PrestigeMenu, item)
{
	if(item == MENU_EXIT) return;
	
	switch(item+1)
	{	
		case 1:
		{
			if(get_user_prestige(id) >= Price(SpeedLevel[id]) && SpeedLevel[id] < MAX_LEVEL-1)
			{
				set_user_prestige(id, get_user_prestige(id) - Price(SpeedLevel[id]))
				SpeedLevel[id]++;
				ColorChat(id, "^4Congratulations on buying Speed Upgrade!")
			}
		}
		
		case 2:
		{	
			if(get_user_prestige(id) >= Price(HealthLevel[id]) && HealthLevel[id] < MAX_LEVEL-1)
			{
				set_user_prestige(id, get_user_prestige(id) - Price(HealthLevel[id]))
				HealthLevel[id]++;
				ColorChat(id, "^4Congratulations on buying Health Upgrade!")
			}
		}
		
		case 3:
		{
			if(get_user_prestige(id) >= Price(DamageLevel[id]) && DamageLevel[id] < MAX_LEVEL-1)
			{
				set_user_prestige(id, get_user_prestige(id) - Price(DamageLevel[id]))
				DamageLevel[id]++;
				ColorChat(id, "^4Congratulations on buying Health Upgrade!")
			}
		}
		
		case 4:
		{
			if(get_user_prestige(id) >= Price(GravityLevel[id]) && GravityLevel[id] < MAX_LEVEL-1)
			{
				set_user_prestige(id, get_user_prestige(id) - Price(GravityLevel[id]))
				GravityLevel[id]++;
				ColorChat(id, "^4Congratulations on buying Gravity Upgrade!")
			}
		}
		
		case 5:
		{
			if(get_user_prestige(id) >= Price(RegenLevel[id]) && RegenLevel[id] < MAX_LEVEL-1)
			{
				set_user_prestige(id, get_user_prestige(id) - Price(RegenLevel[id]))
				RegenLevel[id]++;
				ColorChat(id, "^4Congratulations on buying HP Regeneration Upgrade!")
			}
		}
		case PowerNum+1:
		{
			HealthLevel[id] = 0
			SpeedLevel[id] = 0
			DamageLevel[id] = 0
			GravityLevel[id] = 0
			RegenLevel[id] = 0
			set_user_prestige(id, native_get_user_ever_prestige(id))
			ColorChat(id, "^4You have successfuly reset your powers!")
		}
	}
	if(item != MENU_EXIT)
	{
		CMD_Prestige(id)
		SavePowers(id)
	}
	
}
public CmdPrestigeMenu(id)
{
	new Title[128], Menu
	formatex(Title, sizeof(Title)-1, "\r[\yGunXP\r] \wPrestige Shop^n\yAvailable XP: \r%d", get_user_xp(id))
	Menu = menu_create(Title, "CmdBuyPrestige")
	
	if(get_user_xp(id) >= 150000) 
		menu_additem(Menu, "\w1 Prestige - \r150000\y XP", "1", 0)
	else 
		menu_additem(Menu, "\d1 Prestige - \r150000 XP", "1", 0)
		
	if(get_user_xp(id) >= 450000)
		menu_additem(Menu, "\w3 Prestige - \r450000\y XP", "2", 0)
	else 
		menu_additem(Menu, "\d3 Prestige - \r450000 XP", "2", 0)
		
	if(get_user_xp(id) >= 750000) 
		menu_additem(Menu, "\w5 Prestige - \r750000\y XP", "3", 0)
	else 
		menu_additem(Menu, "\d5 Prestige - \r750000 XP", "3", 0)		

	if(get_user_xp(id) >= 1500000) 
		menu_additem(Menu, "\w10 Prestige - \r1500000\y XP", "4", 0)
	else 
		menu_additem(Menu, "\d10 Prestige - \r1500000 XP", "4", 0)
		
	menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, Menu, 0);
}

public CmdBuyPrestige(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {
		case 1:
		{
			new PrestigeCost = get_user_xp(id) - 150000
			if(PrestigeCost < 0) 
				ColorChat(id, "!t[GunXP]!y You dont have enought !tXP!n to buy!g 1 prestige!g !")
			else {
				set_user_prestige(id, get_user_prestige(id) + 1) 
				set_user_xp(id, PrestigeCost)
				ColorChat(id, "!t[GunXP]!1 You buyed !g1 prestige !")
			}
		}
		case 2:
		{
			new PrestigeCost = get_user_xp(id) - 450000
			if(PrestigeCost < 0) 
				ColorChat(id, "!t[GunXP]!y You dont have enought !tXP!n to buy!g 3 prestige!g !")
			else {
				set_user_prestige(id, get_user_prestige(id) + 3) 
				set_user_xp(id, PrestigeCost)
				ColorChat(id, "!t[GunXP]!1 You buyed !g3 prestige !")
			}
		}
		case 3:
		{
			new PrestigeCost = get_user_xp(id) - 750000
			if(PrestigeCost < 0) 
				ColorChat(id, "!t[GunXP]!y You dont have enought !tXP!n to buy!g 5 prestige!g !")
			else {
				set_user_prestige(id, get_user_prestige(id) + 5) 
				set_user_xp(id, PrestigeCost)
				ColorChat(id, "!t[GunXP]!1 You buyed !g5 prestige !")
			}
		}
		case 4:
		{
			new PrestigeCost = get_user_xp(id) - 1500000
			if(PrestigeCost < 0) 
				ColorChat(id, "!t[GunXP]!y You dont have enought !tXP!n to buy!g 10 prestige!g !")
			else {
				set_user_prestige(id, get_user_prestige(id) + 10) 
				set_user_xp(id, PrestigeCost)
				ColorChat(id, "!t[GunXP]!1 You buyed !g10 prestige !")
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

// Give Prestige
public set_prestige (id, level, cid) {

    if(!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED;

    new arg[32], arg2[32];
    read_argv(1, arg, 32);
    read_argv(2, arg2, 31);
    
    new player = cmd_target(id,arg,2);
    if(!player) return PLUGIN_HANDLED;
    
    new prestigeamount = str_to_num(arg2);
    set_user_prestige(player, get_user_prestige(player) + prestigeamount);
    
    if( prestigeamount < 0 )
    {
        console_print(id, "You can't give player prestige lower that 0");
        return PLUGIN_HANDLED;
    }
    
    new player_name[32], admin_name[32];
    get_user_name(player, player_name, 31);
    get_user_name(id, admin_name, 31);
    
    switch(get_cvar_num("amx_show_activity"))
    {
        case 2: ColorChat(id, "!gADMIN !y%s: give !t%s %i !gPrestige", admin_name, player_name, prestigeamount);
        case 1: ColorChat(id, "!gADMIN: !ygive !t%s %i !gPrestige", player_name, prestigeamount);
    }
    
    return PLUGIN_HANDLED;
}

SavePowers(id)
{ 
	new szNameP[32];
	new szNameA[32];
	new szAuth[33];
	new szKey[64];

	if ( get_pcvar_num(save) == 0)
	{
		get_user_ip( id, szAuth , charsmax(szAuth), 1);
		formatex( szKey , 63 , "%s-IP" , szAuth);
	}
	else if ( get_pcvar_num(save) == 1 )
	{
		get_user_authid( id , szAuth , charsmax(szAuth) );
		formatex( szKey , 63 , "%s-ID" , szAuth);
	}
	else if ( get_pcvar_num(save) == 0 )
	{
		get_user_name( id , szNameA , charsmax(szNameP) );
		formatex( szNameA , 63 , "%s-Nick" , szNameP);
	}
	new szData[256];
	
	formatex(szData, 255, "%i#%i#%i#%i#%i#", SpeedLevel[id], HealthLevel[id], DamageLevel[id], GravityLevel[id], RegenLevel[id])
		
	nvault_set( PrestigeVault , szKey , szData );
}

LoadPowers(id)
{
	new szAuth[33];
	new szKey[40], szKey2[40];
	new Best, Best2
	// Best save is loaded
	get_user_ip( id, szAuth , charsmax(szAuth), 1);
	formatex( szKey , 63 , "%s-IP" , szAuth);
	
	get_user_authid( id , szAuth , charsmax(szAuth) );
	formatex( szKey2 , 63 , "%s-ID" , szAuth);
	
	new szData[256], szData2[256];

	formatex(szData, 255, "%i#%i#%i#%i#%i#", SpeedLevel[id], HealthLevel[id], DamageLevel[id], GravityLevel[id], RegenLevel[id]) 
	formatex(szData2, 255, "%i#%i#%i#%i#%i#", SpeedLevel[id], HealthLevel[id], DamageLevel[id], GravityLevel[id], RegenLevel[id]) 
		
	nvault_get(PrestigeVault, szKey, szData, 255)
	replace_all(szData , 255, "#", " ")
	
	nvault_get(PrestigeVault, szKey2, szData2, 255)
	replace_all(szData2 , 255, "#", " ")
	
	new speed[32], health[32], damage[32], gravity[32], regen[32], speed2[32], health2[32], damage2[32], gravity2[32], regen2[32]
	parse(szData, speed, 31, health, 31, damage, 31, gravity, 31, regen, 31)
	parse(szData2, speed2, 31, health2, 31, damage2, 31, gravity2, 31, regen2, 31)
	
	Best = str_to_num(speed) + str_to_num(health) + str_to_num(damage) + str_to_num(gravity) + str_to_num(regen)
	Best2 = str_to_num(speed2) + str_to_num(health2) + str_to_num(damage2) + str_to_num(gravity2) + str_to_num(regen2)
	
	if(Best > Best2)
	{
		SpeedLevel[id] = str_to_num(speed)
		HealthLevel[id] = str_to_num(health)
		DamageLevel[id] = str_to_num(damage)
		GravityLevel[id] = str_to_num(gravity)
		RegenLevel[id] = str_to_num(regen)
	}
	else
	{
		SpeedLevel[id] = str_to_num(speed2)
		HealthLevel[id] = str_to_num(health2)
		DamageLevel[id] = str_to_num(damage2)
		GravityLevel[id] = str_to_num(gravity2)
		RegenLevel[id] = str_to_num(regen2)
	}
}
stock Price(LevelAmount)
{
	new Value = 1
	Value = Value + (LevelAmount*2)
	
	return Value
}

stock ColorChat(const index, const string[], {Float, Sql, Resul,_}:...) 
{
	new msg[191], players[32], count = 1, Prefix[32];
	get_cvar_string("amx_prefix_cvar", Prefix, 31);
	
	static len;
	len = formatex(msg, charsmax(msg), "^4[ %s ]^1 ", Prefix);
	vformat(msg[len], charsmax(msg) - len, string, 3);
	replace_all(msg,190,"/g","^4");// green txt
	replace_all(msg,190,"/y","^1");// orange txt
	replace_all(msg,190,"/ctr","^3");// team txt
	replace_all(msg,190,"/w","^0");// team txt
	
	if(index)    players[0] = index;
	else    get_players(players,count,"ch");
	
	for (new i = 0; i < count; i++)
	{
		if(is_user_connected(players[i]))
		{
			message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, players[i]);
			write_byte(players[i]);
			write_string(msg);
			message_end();
		}
	}
}



Here is my Include
Code:
// Gun Xp Mod Include File //
#if defined _gunxpmod_included
  #endinput
#endif
#define _gunxpmod_included

#if !defined charsmax
    #define charsmax(%1) sizeof(%1)-1
#endif 

//Unlocks levels defined
#define GUN_SECTION_KNIFE 1
#define GUN_SECTION_PISTOL 2
#define GUN_SECTION_RIFLE 3
#define GUN_SECTION_GRENADES 4
#define GUN_SECTION_ITEMS 5
#define GUN_SECTION_VIP 6 

//Access unlocks
#define GUN_FIRST_ACCESS_ID 1
#define GUN_FIRST_ACCESS ADMIN_LEVEL_H
#define GUN_FIRST_ACCESS_TEXT "Require VIP access"

#define GUN_SECOND_ACCESS_ID 2
#define GUN_SECOND_ACCESS ADMIN_BAN
#define GUN_SECOND_ACCESS_TEXT "Require ADMIN access"

#define GUN_THIRD_ACCESS_ID 3
#define GUN_THIRD_ACCESS ADMIN_IMMUNITY
#define GUN_THIRD_ACCESS_TEXT "Require SADMIN access"

//Class PIRCES
#define CLASS_PRICE_XP 1
#define CLASS_PRICE_PR 2

//Unlocks CSW
#define CSW_SANDBAGS 33

//POWERS******
native load_powers();

native get_bonus_xp(id); //Get bonus XP
native get_k1asus(id); //Get k1asus count
native get_supp_box(id); //Get supply box XP from
native get_forcefield_time(id); //Get force field additional time
native get_pipe_radius(id); //Get percent of additional radius
//************

//get if loaded levels
native gxm_level_loaded(id);

//save user level/xp/prestige
native gxm_save_level(id);

//get user save type
native get_user_save_type(id);

// Returns player Experience.
native get_user_xp(id)

// Sets player Experience.
native set_user_xp(id, amount)

// Returns player Prestige.
native get_user_prestige(id)

// Sets player Prestige.
native set_user_prestige(id, amount)

// Returns player Level.
native get_user_level(id)

// Sets player Level.
native set_user_level(id, amount)

// Returns player Level by Xp.
native get_user_max_level(id)

// Register Item.
stock find_itemplugin()
{
	for(new i = 0; i < get_pluginsnum(); ++i)
	{
		new temp[2], name[64]
		get_plugin(i, name, 63, temp, 1, temp, 1, temp, 1, temp, 1)
 		if(equali(name, "gunxpmod_shop.amxx")) {
 			return i;
		}
	}
 	return -1;
}

stock find_itemindex()
{
	new temp[2], name[64], pluginname[64]
	get_plugin(-1, pluginname, 63, temp, 1, temp, 1, temp, 1, temp, 1)
	for (new i = 0; i < get_pluginsnum(); ++i)
	{
		get_plugin(i, name, 63, temp, 1, temp, 1, temp, 1, temp, 1)
 		if(equal(name, pluginname))
		{
 			return i
		}
	}
 	return -1
}

native register_gxm_item(item_name[], item_desc[], item_cost, item_level, item_section, item_access, weapon)
native register_item_gxm(item_name[], item_desc[], item_cost, item_level, item_section, item_access)

// Register Skills.
stock find_skillplugin()
{
	for(new i = 0; i < get_pluginsnum(); ++i)
	{
		new temp[2], name[64]; get_plugin(i, name, 63, temp, 1, temp, 1, temp, 1, temp, 1);
 		if(equali(name, "gunxp_prestiges.amxx")) { return i; }
	}
 	return -1;
}

stock find_skillindex()
{
	new temp[2], name[64], pluginname[64];
	get_plugin(-1, pluginname, 63, temp, 1, temp, 1, temp, 1, temp, 1);
	for (new i = 0; i < get_pluginsnum(); ++i) {
		get_plugin(i, name, 63, temp, 1, temp, 1, temp, 1, temp, 1);
 		if(equal(name, pluginname)) { return i; }
	}
 	return -1
}

stock register_gxm_apwr(skill_name[], skill_desc[], skill_cost, skill_level, skill_access)
{
	new skill_index = find_skillindex(), skillplugin = find_skillplugin();
	new itemregfunc = get_func_id("register_apwr_gxm", skillplugin);

	new temp = callfunc_begin_i(itemregfunc, skillplugin);
	if(temp == -1 || temp == -2)
	{
		if(temp == -2) { log_amx("You have to many skill and need to increase the MAX_SKILLS define!"); }
		else { log_amx("A unkown error has happend, make sure the Skills plugin is loaded!"); }
		
		return PLUGIN_HANDLED;
	}

	callfunc_push_int(skill_index);
	callfunc_push_str(skill_name);
	callfunc_push_str(skill_desc);
	callfunc_push_int(skill_cost);
	callfunc_push_int(skill_level);
	callfunc_push_int(skill_access);
	
	temp = callfunc_end();
	if(temp == -1 || temp == -2) { return PLUGIN_HANDLED; }
	
	return temp;
}

Last edited by MeDo_17; 08-02-2022 at 08:16.
MeDo_17 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 09:28.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode