AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved [GunXP MOD] Native Runtime ERRORS (https://forums.alliedmods.net/showthread.php?t=338477)

MeDo_17 07-07-2022 16:27

[GunXP MOD] Native Runtime ERRORS
 
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;
}



All times are GMT -4. The time now is 15:35.

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