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

[HELP] Custom back weapons


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
sekac
Senior Member
Join Date: Nov 2016
Old 06-17-2018 , 09:52   [HELP] Custom back weapons
Reply With Quote #1

So I found this plugin that adds custom weapons to your back. The thing is I tried everything but it's not working. I know that my pev_impulse and pev_body are correct.

Here is the plugin:
PHP Code:
/*
  ____             _       _____          _                   __          __                              
 |  _ \           | |     / ____|        | |                  \ \        / /                              
 | |_) | __ _  ___| | __ | |    _   _ ___| |_ ___  _ __ ___    \ \  /\  / /__  __ _ _ __   ___  _ __  ___ 
 |  _ < / _` |/ __| |/ / | |   | | | / __| __/ _ \| '_ ` _ \    \ \/  \/ / _ \/ _` | '_ \ / _ \| '_ \/ __|
 | |_) | (_| | (__|   <  | |___| |_| \__ \ || (_) | | | | | |    \  /\  /  __/ (_| | |_) | (_) | | | \__ \
 |____/ \__,_|\___|_|\_\  \_____\__,_|___/\__\___/|_| |_| |_|     \/  \/ \___|\__,_| .__/ \___/|_| |_|___/
                                                                                   | |                    
                                                                                   |_|                    

    [1.0] 
        - ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ·

        [1.0.1]
            - Bugfix. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½Π΅ Ρ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΡŒΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹.

*/

// Original: https://forums.alliedmods.net/showthread.php?p=359356
// Help: D34
// Idea: hoboman313/cheap_suit & cvf0n

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define REMOVE_ENTITY(%1) set_pev(%1, pev_flags, FL_KILLME)
#define PRECACHE_MODEL(%1) engfunc(EngFunc_PrecacheModel, %1)

#define MAX_CLIENTS 32

// Linux extra offsets
#define linux_diff_weapon 4
#define linux_diff_player 5

// CBasePlayerItem
#define m_pPlayer 41

// CBasePlayer
#define m_pActiveItem 373
#define m_rpgPlayerItems 367
#define m_iAutoWepSwitch 509

new const g_szWeaponEntNames[][] =
{    
    
"weapon_p228",
    
"weapon_scout",
    
"weapon_hegrenade",
    
"weapon_xm1014",
    
"weapon_c4",
    
"weapon_mac10",
    
"weapon_aug",
    
"weapon_smokegrenade",
    
"weapon_elite",
    
"weapon_fiveseven",
    
"weapon_ump45",
    
"weapon_sg550",
    
"weapon_galil",
    
"weapon_famas",
    
"weapon_usp",
    
"weapon_glock18",
    
"weapon_awp",
    
"weapon_mp5navy",
    
"weapon_m249",
    
"weapon_m3",
    
"weapon_m4a1",
    
"weapon_tmp",
    
"weapon_g3sg1",
    
"weapon_flashbang",
    
"weapon_deagle",
    
"weapon_sg552",
    
"weapon_ak47",
    
"weapon_knife",
    
"weapon_p90"
};

enum _e_WeaponData
{
    
DATA[16],
    
MODEL[64],
    
BODY[16]
};

#define FILE_NAME "/addons/amxmodx/configs/api_backweapons.ini"

new Array: g_aWeaponData;
new 
g_iUserBackWeaponEntity[MAX_CLIENTS 1];

public 
plugin_init()
{
    
register_plugin("[AMXX] API: Back Weapons""1.0.1""xUnicorn (t3rkecorejz)");

    
RegisterHam(Ham_Spawn"player""CPlayer__Spawn_Post"true);
    
RegisterHam(Ham_AddPlayerItem"player""CPlayer__AddPlayerItem_Pre"false);
    
RegisterHam(Ham_RemovePlayerItem"player""CPlayer__RemovePlayerItem_Pre"false);

    for(new 
0sizeof g_szWeaponEntNamesi++)
    {
        
RegisterHam(Ham_Item_Deployg_szWeaponEntNames[i], "CWeapon__Item_Deploy_Post"true);
    }
}

public 
plugin_precache()
{
    
g_aWeaponData ArrayCreate(e_WeaponData);

    new 
szBuffer[256], szPath[64], iLineiLeniFile fopen(FILE_NAME"r");
    
    if(!
iFile)
    {
        
set_fail_state("| File 'api_backweapons.ini' not found."); 
    }
    
    
get_localinfo("amxx_configsdir"szPathcharsmax(szPath));
    
formatex(szPathcharsmax(szPath), "%s"FILE_NAME);
    
    new 
szData[e_WeaponData];
    
    while(
read_file(szPathiLine++, szBuffercharsmax(szBuffer), iLen))
    {
        if(
szBuffer[0] == '"')
        {
            
parse(szBufferszData[DATA], 15szData[MODEL], 63szData[BODY], 15);

            
formatex(szBuffercharsmax(szBuffer), "%s"szData[MODEL]);
            
PRECACHE_MODEL(szBuffer);

            
ArrayPushArray(g_aWeaponDataszData);
            
        }
        else
        {
            continue;
        }
    }

    
fclose(iFile);
}

public 
client_putinserver(iPlayer)
{
    static 
iReference;

    if(
iReference || (iReference engfunc(EngFunc_AllocString"info_target")))
    {
        
g_iUserBackWeaponEntity[iPlayer] = engfunc(EngFunc_CreateNamedEntityiReference);

        if(
pev_valid(g_iUserBackWeaponEntity[iPlayer]))
        {
            
set_pev(g_iUserBackWeaponEntity[iPlayer], pev_classname"backweapon");
            
set_pev(g_iUserBackWeaponEntity[iPlayer], pev_movetypeMOVETYPE_FOLLOW);
            
set_pev(g_iUserBackWeaponEntity[iPlayer], pev_effectsEF_NODRAW);
            
set_pev(g_iUserBackWeaponEntity[iPlayer], pev_aimentiPlayer);
        }
    }
}

public 
client_disconnect(iPlayer)
{
    if(
g_iUserBackWeaponEntity[iPlayer] > && pev_valid(g_iUserBackWeaponEntity[iPlayer]))
    {
        
REMOVE_ENTITY(g_iUserBackWeaponEntity[iPlayer]);
    }

    
g_iUserBackWeaponEntity[iPlayer] = 0;
}

public 
CPlayer__Spawn_Post(iPlayer)
{
    if(!
is_user_alive(iPlayer))
    {
        return 
HAM_IGNORED;
    }

    static 
iEntityiEntity get_pdata_cbase(iPlayerm_rpgPlayerItems 1linux_diff_player);
    static 
iItemiItem get_pdata_cbase(iPlayerm_pActiveItemlinux_diff_player);

    if(
pev_valid(iEntity) && iEntity)
    {
        if(
ExecuteHamB(Ham_Item_ItemSlotiItem) != 1)
        {
            new 
szData[e_WeaponData];
            for(new 
iPosiPos <= ArraySize(g_aWeaponData) - 1iPos++) 
            {
                
ArrayGetArray(g_aWeaponDataiPosszData);

                if(
pev(iEntitypev_impulse) == str_to_num(szData[DATA]))
                {
                    new 
szBuffer[64];
                    
formatex(szBuffercharsmax(szBuffer), "%s"szData[MODEL]);

                    
engfunc(EngFunc_SetModelg_iUserBackWeaponEntity[iPlayer], szBuffer);
                    
set_pev(g_iUserBackWeaponEntity[iPlayer], pev_bodystr_to_num(szData[BODY]));

                    
fm_set_entity_visibility(g_iUserBackWeaponEntity[iPlayer], 1);
                    return 
HAM_IGNORED;
                }
            }
        }
    }

    
fm_set_entity_visibility(g_iUserBackWeaponEntity[iPlayer], 0);

    return 
HAM_IGNORED;
}

public 
CPlayer__AddPlayerItem_Pre(iPlayeriItem)
{
    if(!
get_pdata_int(iPlayerm_iAutoWepSwitchlinux_diff_player))
    {
        new 
szData[e_WeaponData];
        for(new 
iPosiPos <= ArraySize(g_aWeaponData) - 1iPos++) 
        {
            
ArrayGetArray(g_aWeaponDataiPosszData);

            if(
pev(iItempev_impulse) == str_to_num(szData[DATA]))
            {
                new 
szBuffer[64];
                
formatex(szBuffercharsmax(szBuffer), "%s"szData[MODEL]);

                
engfunc(EngFunc_SetModelg_iUserBackWeaponEntity[iPlayer], szBuffer);
                
set_pev(g_iUserBackWeaponEntity[iPlayer], pev_bodystr_to_num(szData[BODY]));
            }

            
fm_set_entity_visibility(g_iUserBackWeaponEntity[iPlayer], 1);
        }
    }

    if(
ExecuteHamB(Ham_Item_ItemSlotiItem) != 1)
    {
        if(!
get_pdata_int(iPlayerm_iAutoWepSwitchlinux_diff_player))
        {
            
fm_set_entity_visibility(g_iUserBackWeaponEntity[iPlayer], 0);
        }
    }
}

public 
CPlayer__RemovePlayerItem_Pre(iPlayeriItem)
{
    new 
szData[e_WeaponData];
    for(new 
iPosiPos <= ArraySize(g_aWeaponData) - 1iPos++) 
    {
        
ArrayGetArray(g_aWeaponDataiPosszData);

        if(
pev(iItempev_impulse) == str_to_num(szData[DATA]))
        {
            
fm_set_entity_visibility(g_iUserBackWeaponEntity[iPlayer], 0);
        }
    }
}

public 
CWeapon__Item_Deploy_Post(iItem)
{
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayerlinux_diff_weapon);
    static 
iEntityiEntity get_pdata_cbase(iPlayerm_rpgPlayerItems 1linux_diff_player);

    if(
iEntity 0)
    {
        if(
ExecuteHamB(Ham_Item_ItemSlotiItem) != 1)
        {
            new 
szData[e_WeaponData];
            for(new 
iPosiPos <= ArraySize(g_aWeaponData) - 1iPos++) 
            {
                
ArrayGetArray(g_aWeaponDataiPosszData);

                if(
pev(iEntitypev_impulse) == str_to_num(szData[DATA]))
                {
                    new 
szBuffer[64];
                    
formatex(szBuffercharsmax(szBuffer), "%s"szData[MODEL]);

                    
engfunc(EngFunc_SetModelg_iUserBackWeaponEntity[iPlayer], szBuffer);
                    
set_pev(g_iUserBackWeaponEntity[iPlayer], pev_bodystr_to_num(szData[BODY]));

                    
fm_set_entity_visibility(g_iUserBackWeaponEntity[iPlayer], 1);
                    return;
                }
            }
        }
    }

    
fm_set_entity_visibility(g_iUserBackWeaponEntity[iPlayer], 0);
}

stock fm_set_entity_visibility(iEntityiVisible 1
{
    
set_pev(iEntitypev_effectsiVisible == pev(iEntitypev_effects) & ~EF_NODRAW pev(iEntitypev_effects) | EF_NODRAW);

And here is my config:
PHP Code:
; [AMXX APIBack Weapons 1.0.1 by xUnicorn
Weapons on the back of the player on the pulse of weapons (Custom weapons only!)
;
Add form: (Add only primary weapons (1st slot))
"pev_impulse" "weapon model (full path)" "model body pev_body (if any)"
;
Examples:
"591"        "models/x/s_watergun.mdl"    "0"
"592"        "models/x/s_weapons.mdl"    "5"

"131707"    "models/csgo_ports/mag7/w_mag7.mdl"    "0" 
Does it need a special model or what?

Last edited by sekac; 06-18-2018 at 06:41.
sekac is offline
maqi
Senior Member
Join Date: Apr 2017
Location: Serbia
Old 06-17-2018 , 11:14   Re: [HELP] Custom back weapons
Reply With Quote #2

I don't read Russian, but a normal world model should be fine.
__________________
stuff
maqi is offline
sekac
Senior Member
Join Date: Nov 2016
Old 06-18-2018 , 05:26   Re: [HELP] Custom back weapons
Reply With Quote #3

I have tried that but it doesn't show anything...
sekac is offline
Mr.J
Senior Member
Join Date: Sep 2017
Location: cs_assault
Old 06-18-2018 , 06:01   Re: [HELP] Custom back weapons
Reply With Quote #4

i think it will work only for normal weapons :/
Mr.J is offline
sekac
Senior Member
Join Date: Nov 2016
Old 06-18-2018 , 06:40   Re: [HELP] Custom back weapons
Reply With Quote #5

No, because I have found this video: https://www.youtube.com/watch?v=65UqDQyRqzU

Edit: I have also translated my original post with google translate.
sekac is offline
maqi
Senior Member
Join Date: Apr 2017
Location: Serbia
Old 06-18-2018 , 13:34   Re: [HELP] Custom back weapons
Reply With Quote #6

There would be no reason for it to work only for normal weapons.
__________________
stuff
maqi 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 14:09.


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