New Member
|
07-07-2022
, 16:27
[GunXP MOD] Native Runtime ERRORS
|
#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.
|
|