AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Help Gunxpmod_shop unlock problems (https://forums.alliedmods.net/showthread.php?t=329761)

XxScripteRxX 01-06-2021 11:11

Help Gunxpmod_shop unlock problems
 
hey all i have this gunxpmod_shop plugin this plugin works fine but wehen i register any item or rifle not showing in /ul i dont know wehere is the problem

Code:


       
Quote:

       
       
               
       
       

                       

                       
                                #include <amxmodx>
#include <gunxpmod>

#define PLUGIN        "Gun Xp Mod Shop"
#define AUTHOR        "badboy"
#define VERSION        "1.4"

#define MAX_UNLOCKS 500
#define MAX_UNLOCKS_NAME_SIZE 64
#define MAX_UNLOCKS_DESC_SIZE 128

new g_menuPosition[33], gSelected[33];

enum _:iUnlocks
{
    UL_Knife,
    UL_Pistol,
    UL_Rifle,
    UL_Grenade,
    UL_Item
};

//all
new g_numberofitems[iUnlocks];
new g_itemname[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_NAME_SIZE+1];
new g_itemdesc[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_DESC_SIZE+1];
new g_itemlevel[iUnlocks][MAX_UNLOCKS+1];
new g_itemcost[iUnlocks][MAX_UNLOCKS+1];
new g_itemindex[iUnlocks][MAX_UNLOCKS+1];
new g_itemaccess[iUnlocks][MAX_UNLOCKS+1];
new g_itemwpn[iUnlocks][MAX_UNLOCKS+1];
new bool:g_PlayerItem[33][iUnlocks][MAX_UNLOCKS+1];

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR);
       
        register_dictionary("gunxpmod.txt");
       
        register_clcmd("say /unlocks", "menus")
        register_clcmd("say unlocks", "menus")
        register_clcmd("say /ul", "menus")
        register_clcmd("say ul", "menus")
        register_clcmd("say /items", "display_items")
    register_clcmd("say items", "display_items")
}

public client_connect(id)
{
        static i, j
        for(i = 0; i < iUnlocks; ++i)
                for(j = 0; j <= MAX_UNLOCKS; ++j)
                        g_PlayerItem[id][i][j] = false;
}

public menus(id)
{
        new menu = menu_create("\r[GunXP] \yUnlocks", "upgrades_menu");
        new call = menu_makecallback("Call_Back");
        gSelected[id] = 0;
        new szMsg[256];
       
        format(szMsg, 255, "Knifes", (GetItemCount(g_PlayerItem[id][UL_Knife], g_numberofitems[UL_Knife]) == g_numberofitems[UL_Knife]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Knife], g_numberofitems[UL_Knife]), g_numberofitems[UL_Knife]);
        menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Knife] ? -1 : call);
       
        format(szMsg, 255, "Pistols", (GetItemCount(g_PlayerItem[id][UL_Pistol], g_numberofitems[UL_Pistol]) == g_numberofitems[UL_Pistol]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Pistol], g_numberofitems[UL_Pistol]), g_numberofitems[UL_Pistol]);
        menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Pistol] ? -1 : call);
       
        format(szMsg, 255, "Rifles ", (GetItemCount(g_PlayerItem[id][UL_Rifle], g_numberofitems[UL_Rifle]) == g_numberofitems[UL_Rifle]) ? "\r" : "\r", GetItemCount(g_PlayerItem[id][UL_Rifle], g_numberofitems[UL_Rifle]), g_numberofitems[UL_Rifle]);
        menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Rifle] ? -1 : call);
       
        format(szMsg, 255, "Granades", (GetItemCount(g_PlayerItem[id][UL_Grenade], g_numberofitems[UL_Grenade]) == g_numberofitems[UL_Grenade]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Grenade], g_numberofitems[UL_Grenade]), g_numberofitems[UL_Grenade]);
        menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Grenade] ? -1 : call);
       
        format(szMsg, 255, "Items", (GetItemCount(g_PlayerItem[id][UL_Item], g_numberofitems[UL_Item]) == g_numberofitems[UL_Item]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Item], g_numberofitems[UL_Item]), g_numberofitems[UL_Item]);
        menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Item] ? -1 : call);
       
        menu_display(id, menu, 0);

        return PLUGIN_HANDLED;
}

public Call_Back(id, menu, item)
    return ITEM_DISABLED;

public upgrades_menu(id, menu, item)
{
        if(item == MENU_BACK)
        {
       
        }
       
        gSelected[id] = item;
        g_menuPosition[id] = 0;
        display_item_upgrades(id, 0, item);
       
}

public plugin_natives()
{
        register_native("register_gxm_item", "register_unlock")
        register_native("register_item_gxm", "register_unlock")
}

public register_unlock(plugin, params)
{
        static item_section
        item_section = get_param(5)-1
       
        g_numberofitems[item_section]++;
        get_string(1, g_itemname[item_section][g_numberofitems[item_section]], MAX_UNLOCKS_NAME_SIZE)
        get_string(2, g_itemdesc[item_section][g_numberofitems[item_section]], MAX_UNLOCKS_DESC_SIZE)
        g_itemlevel[item_section][g_numberofitems[item_section]] = get_param(4);
        g_itemcost[item_section][g_numberofitems[item_section]] = get_param(3);
        g_itemindex[item_section][g_numberofitems[item_section]] = plugin;
        g_itemaccess[item_section][g_numberofitems[item_section]] = get_param(6) ? get_param(6) : 0;
        g_itemwpn[item_section][g_numberofitems[item_section]] = get_param(7);
}

//ALL
public display_item_upgrades(id, pos, selection)
{
        if(!is_user_alive(id))
                return;

        static menuBody[510], len;
        len = 0;
        gSelected[id] = selection;

        if(pos < 0)
                return;
       
        new start = pos * 8
        if(start >= g_numberofitems[selection])
                start = pos = g_menuPosition[id];

        len += formatex(menuBody[len], sizeof menuBody - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_SHOP",  get_user_xp(id), get_user_max_level(id))

        new end = start + 8
        new keys = MENU_KEY_0

        if(end > g_numberofitems[selection])
                end = g_numberofitems[selection];
       
        new b = 0
        for(new a = start; a < end; ++a)
        {
                new i = a + 1
                new money, level

                money = get_user_xp(id)
                level = get_user_level(id)

                if( g_PlayerItem[id][selection][i] )
                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_BOUGHT", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])

                else if(g_itemaccess[selection][i] == GUN_FIRST_ACCESS_ID && !(get_user_flags(id) & GUN_FIRST_ACCESS))
                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS1", ++b, g_itemname[selection][i], GUN_FIRST_ACCESS_TEXT);

                else if(g_itemaccess[selection][i] == GUN_SECOND_ACCESS_ID && !(get_user_flags(id) & GUN_SECOND_ACCESS))
                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS2", ++b, g_itemname[selection][i], GUN_SECOND_ACCESS_TEXT);

                else if(g_itemaccess[selection][i] == GUN_THIRD_ACCESS_ID && !(get_user_flags(id) & GUN_THIRD_ACCESS))
                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS3", ++b, g_itemname[selection][i], GUN_THIRD_ACCESS_TEXT); 

                else if(level < g_itemlevel[selection][i]) 
                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_LEVEL", ++b, g_itemname[selection][i], g_itemlevel[selection][i], g_itemcost[selection][i])
                       
                else if(PatrArTuri(id, g_itemwpn[selection][i]))
                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_NO_MORE", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
               
                else if( money < g_itemcost[selection][i] )
                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
                else
                {
                        keys |= (1<<b)
                       
                        switch(g_itemaccess[selection][i])
                        {
                                case GUN_FIRST_ACCESS_ID:
                                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i], GUN_FIRST_ACCESS_TEXT)

                                case GUN_SECOND_ACCESS_ID:
                                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i], GUN_SECOND_ACCESS_TEXT)

                                case GUN_THIRD_ACCESS_ID:
                                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i], GUN_THIRD_ACCESS_TEXT)
                                       
                                default:
                                        len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
                        }
                }
        }

        if(end != g_numberofitems[selection])
        {
                len += formatex(menuBody[len], sizeof menuBody - 1 - len, "^n\r9. \w%L\r^n0. \w%L", id, "NEXT_MENU", id, pos ? "BACK_MENU" : "EXIT_MENU")
                keys |= MENU_KEY_9
        }
        else
        {
                len += formatex(menuBody[len], sizeof menuBody - 1 - len, "^n\r0. \w%L", id, pos ? "BACK_MENU" : "EXIT_MENU")
        }
       
        show_menu(id, keys, menuBody, -1, "Unlocks Shop")
}

public action_item_upgrades(id, key)
{
        switch(key)
        {
                case 8: display_item_upgrades(id, ++g_menuPosition[id], gSelected[id]);
                case 9: display_item_upgrades(id, --g_menuPosition[id], gSelected[id]);
                default:
                {
                        if(!is_user_alive(id))
                                return PLUGIN_HANDLED;
                       
                        ++key
                        new money
                        new plugin_id = g_itemindex[gSelected[id]][g_menuPosition[id] * 8 + key]
                        new item_id = g_menuPosition[id] * 8 + key
                        new func = get_func_id("gxm_item_enabled", plugin_id)

                        money = get_user_xp(id)
                        new cost = g_itemcost[gSelected[id]][item_id];
                       
                        if(money >= cost)
                        {
                                callfunc_begin_i(func, plugin_id)
                                callfunc_push_int(id)
                                callfunc_end()

                                g_PlayerItem[id][gSelected[id]][item_id] = true

                                new overall = money - cost
                                set_user_xp(id, overall)

                                client_printcolor(1, "/yItem Bought, Item: /g%s.", g_itemname[gSelected[id]][item_id])
                                client_printcolor(1, "/yDescripcion: /g%s.", g_itemdesc[gSelected[id]][item_id])
                                display_item_upgrades(id, g_menuPosition[id], gSelected[id]);
                        }
                }
        }
        return PLUGIN_HANDLED;
}

stock client_printcolors ( const id, const input[], any:... )
{
    new iCount = 1, iPlayers[32]
   
    new sNewMsg[191]
    vformat( sNewMsg, charsmax ( sNewMsg ), input, 3 )
    //format ( sNewMsg, charsmax ( sNewMsg ), "^4[x^1 %s", sNewMsg )
   
    replace_all ( sNewMsg, charsmax ( sNewMsg ), "/g", "^4") // green txt
    replace_all ( sNewMsg, charsmax ( sNewMsg ), "/y", "^1") // orange txt
    replace_all ( sNewMsg, charsmax ( sNewMsg ), "/t", "^3") // team txt
   
    if ( id )
        iPlayers[0] = id
    else
        get_players ( iPlayers, iCount, "ch" )
       
    for ( new i; i < iCount; i++ )
    {
        if ( is_user_connected ( iPlayers[i] ) )
        {
            message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "SayText" ), _, iPlayers[i] )
            write_byte ( iPlayers[i])
            write_string ( sNewMsg)
            message_end ()
        }
    }
}

stock bool:PatrArTuri(id, wpn)
{
        static i, j
        for(i = 0; i < iUnlocks; ++i)
        {
                for(j = 0; j <= MAX_UNLOCKS; ++j)
                {
                        if(g_PlayerItem[id][i][j])
                        {
                                if(g_itemwpn[i][j] == wpn)
                                        return true
                        }
                }
        }
       
        return false
}

GetItemCount(array[], size)
{
    new count = 0;

    for(new i = 1; i <= size; i++)
        if(array[i])
            count++;
   
    return count;
}
                       
                       

               


unlock >
Code:


       
Quote:

       
       
               
       
       

                       

                       
                                #include <amxmodx>
#include <fakemeta>
#include <engine>
#include <gunxpmod>

new PLUGIN_NAME[]        = "Unlock : Parachute"
new PLUGIN_AUTHOR[]        = "xbatista"
new PLUGIN_VERSION[]        = "1.0"

new const parachute_model[] = "models/parachute.mdl"

new bool:has_parachute[33]
new para_ent[33]
new g_parachute_FallSpeed, g_parachute_Detach
public plugin_init()
{
        register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
        register_gxm_item("Parachute VIP", "Gives you parachute", 100, 1, GUN_SECTION_ITEMS, 1, 2)

        g_parachute_FallSpeed = register_cvar("gxm_parachute_fallspeed", "20")
        g_parachute_Detach = register_cvar("gxm_parachute_detach", "1")

        register_forward(FM_PlayerPreThink,"PlayerPree_Think");
}
public plugin_precache()
        engfunc(EngFunc_PrecacheModel, parachute_model)
public gxm_item_enabled(id) {
        has_parachute[id] = true
}
public client_connect(id)
{
        parachute_reset(id)
        has_parachute[id] = false
}
parachute_reset(id)
{
        if (para_ent[id] > 0)
        {
                if ( pev_valid(para_ent[id]) )
                        engfunc(EngFunc_RemoveEntity, para_ent[id])
        }

        has_parachute[id] = false
        para_ent[id] = 0
}
public PlayerPree_Think(id)
{
        //parachute.mdl animation information
        //0 - deploy - 84 frames
        //1 - idle - 39 frames
        //2 - detach - 29 frames
       
        if (!is_user_alive(id) || !has_parachute[id] )
                return

        new Float:fallspeed = get_pcvar_float(g_parachute_FallSpeed) * -1.0
        new Float:frame

        new button = pev(id, pev_button)
        new oldbutton = pev(id, pev_oldbuttons)
        new flags = pev(id, pev_flags)

        if (para_ent[id] > 0 && (flags & FL_ONGROUND))
        {
                set_view(id, CAMERA_NONE)
               
                if (get_pcvar_num(g_parachute_Detach))
                {
                        if ( pev(para_ent[id],pev_sequence) != 2 )
                        {
                                set_pev(para_ent[id], pev_sequence, 2)
                                set_pev(para_ent[id], pev_gaitsequence, 1)
                                set_pev(para_ent[id], pev_frame, 0.0)
                                set_pev(para_ent[id], pev_fuser1, 0.0)
                                set_pev(para_ent[id], pev_animtime, 0.0)
                                return
                        }
                       
                        pev(para_ent[id],pev_fuser1, frame)
                        frame += 2.0
                        set_pev(para_ent[id],pev_fuser1,frame)
                        set_pev(para_ent[id],pev_frame,frame)
                       
                        if ( frame > 254.0 )
                        {
                                engfunc(EngFunc_RemoveEntity, para_ent[id])
                                para_ent[id] = 0
                        }
                }
                else
                {
                        engfunc(EngFunc_RemoveEntity, para_ent[id])
                        para_ent[id] = 0
                }
                return
        }

        if (button & IN_USE && get_user_team(id) == 2)
        {
                new Float:velocity[3]
                pev(id, pev_velocity, velocity)
               
                if (velocity[2] < 0.0)
                {
                        if(para_ent[id] <= 0)
                        {
                                para_ent[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
                               
                                if(para_ent[id] > 0)
                                {
                                        set_pev(para_ent[id],pev_classname,"parachute")
                                        set_pev(para_ent[id], pev_aiment, id)
                                        set_pev(para_ent[id], pev_owner, id)
                                        set_pev(para_ent[id], pev_movetype, MOVETYPE_FOLLOW)
                                        engfunc(EngFunc_SetModel, para_ent[id], parachute_model)
                                        set_pev(para_ent[id], pev_sequence, 0)
                                        set_pev(para_ent[id], pev_gaitsequence, 1)
                                        set_pev(para_ent[id], pev_frame, 0.0)
                                        set_pev(para_ent[id], pev_fuser1, 0.0)
                                }
                        }
                       
                        if (para_ent[id] > 0)
                        {
                                set_pev(id, pev_sequence, 3)
                                set_pev(id, pev_gaitsequence, 1)
                                set_pev(id, pev_frame, 1.0)
                                set_pev(id, pev_framerate, 1.0)
                       
                                velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
                                set_pev(id, pev_velocity, velocity)
                               
                                if (pev(para_ent[id],pev_sequence) == 0)
                                {
                                        pev(para_ent[id],pev_fuser1, frame)
                                        frame += 1.0
                                        set_pev(para_ent[id],pev_fuser1,frame)
                                        set_pev(para_ent[id],pev_frame,frame)
                                       
                                        if (frame > 100.0)
                                        {
                                                set_pev(para_ent[id], pev_animtime, 0.0)
                                                set_pev(para_ent[id], pev_framerate, 0.4)
                                                set_pev(para_ent[id], pev_sequence, 1)
                                                set_pev(para_ent[id], pev_gaitsequence, 1)
                                                set_pev(para_ent[id], pev_frame, 0.0)
                                                set_pev(para_ent[id], pev_fuser1, 0.0)
                                        }
                                }
                        }
                }
               
                else if (para_ent[id] > 0)
                {
                        engfunc(EngFunc_RemoveEntity, para_ent[id])
                        para_ent[id] = 0
                }
        }
       
        else if ((oldbutton & IN_USE) && para_ent[id] > 0 )
        {
                engfunc(EngFunc_RemoveEntity, para_ent[id])
                para_ent[id] = 0
        }
}
                       
                       

               



Cristian505 01-13-2021 09:42

Re: Help Gunxpmod_shop unlock problems
 
[CODE]register_gxm_item("Parachute VIP", "Gives you parachute", 100, 1, GUN_SECTION_ITEMS, 1, 0)[CODE] // 0

OciXCrom 01-13-2021 09:59

Re: Help Gunxpmod_shop unlock problems
 
Did you add the extra item before or after the main plugin in plugins.ini?


All times are GMT -4. The time now is 14:12.

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