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

Owner Knife Only When CT


Post New Thread Reply   
 
Thread Tools Display Modes
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 11-05-2021 , 23:58   Re: Owner Knife Only When CT
Reply With Quote #11

Quote:
Originally Posted by Bugsy View Post
Use sizeof() in OnCurWeapon as well. Any time you are looping through an array, use sizeof(). charsmax() should only be used in string functions/natives to set the max chars.

You should probably also check that a model exists in the string here. Or atleast for model P
Code:
    for( new i = 0 ; i < charsmax( g_szWeapons ); i++ )
    {         if( get_user_team( id ) == g_szWeapons[ i ][ Teams ] && ( get_user_flags( id ) & g_szWeapons[ i ][ Access ] == g_szWeapons[ i ][ Access ] ) && iWeapon == g_szWeapons[ i ][ WeaponsID ] )         {
            if ( g_szWeapons[ i ][ ModelV ][ 0 ] != EOS )
                        set_pev( id, pev_viewmodel2, g_szWeapons[ i ][ ModelV ] )
            if ( g_szWeapons[ i ][ ModelP ][ 0 ] != EOS )
                        set_pev( id, pev_weaponmodel2, g_szWeapons[ i ][ ModelP ] )                         break;         }     }
Well, why here you use EOS not [0]
__________________
Youtube.com/Supremache

Bank System [Nvault - SQL Support]
VIP System
  • If you think it's that simple, then do it yourself.
Supremache is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 11-06-2021 , 00:05   Re: Owner Knife Only When CT
Reply With Quote #12

Technically either works, since EOS is equal to 0. What you have is fine.

EOS means end of string, so the intent is to check if the first character is not equal to end of string, aka the string is not empty.

g_szWeapons[ i ][ ModelV ][ 0 ] != EOS
means
First character of g_szWeapons[ i ][ Model V ] is not end of string
__________________
Bugsy is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 11-06-2021 , 00:27   Re: Owner Knife Only When CT
Reply With Quote #13

Quote:
Originally Posted by Bugsy View Post
Technically either works, since EOS is equal to 0. What you have is fine.

EOS means end of string, so the intent is to check if the first character is not equal to end of string, aka the string is not empty.

g_szWeapons[ i ][ ModelV ][ 0 ] != EOS
means
First character of g_szWeapons[ i ][ Model V ] is not end of string
Edit: i understood!
__________________
Youtube.com/Supremache

Bank System [Nvault - SQL Support]
VIP System
  • If you think it's that simple, then do it yourself.

Last edited by Supremache; 11-06-2021 at 00:37.
Supremache is offline
SHIFT0
Senior Member
Join Date: Apr 2021
Location: Palestine
Old 11-06-2021 , 08:06   Re: Owner Knife Only When CT
Reply With Quote #14

Thanks you Guys !
SHIFT0 is offline
SHIFT0
Senior Member
Join Date: Apr 2021
Location: Palestine
Old 11-06-2021 , 08:14   Re: Owner Knife Only When CT
Reply With Quote #15

Quote:
Originally Posted by Supremache View Post
I used get_user_team because when using cs_get_user_team the plugin will not work with zp mod, bb mod or it will give bug:

PHP Code:
#include <amxmodx>
#include <fakemeta>

// Credits : @Bugsy for some optimizations
enum
{
    
TEAM_UNASSIGNED 0,
    
TEAM_T,
    
TEAM_CT,
    
TEAM_SPEC
}

enum pWeapons
{
    
WeaponsID,
    
ModelV64 ],
    
ModelP64 ],
    
Access,
    
Teams
}

new 
g_szWeapons[ ][ pWeapons ] = 
{
    
/* Weapon ID,         Model V,            Model P            Access */
    
CSW_KNIFE"models/vipweapons/knife.mdl""models/vipweapons/knife.mdl"ADMIN_LEVEL_ATEAM_CT },// Owner knife model
    
CSW_KNIFE"models/vipweapons/knife.mdl""models/vipweapons/knife.mdl"ADMIN_LEVEL_HTEAM_CT }, // Vip knife model
    
CSW_AK47"models/vipweapons/ak47.mdl"""ADMIN_LEVEL_HTEAM_CT },
    { 
CSW_M4A1"models/vipweapons/m4a1.mdl"""ADMIN_LEVEL_HTEAM_CT },
    { 
CSW_AWP"models/vipweapons/awp.mdl"""ADMIN_LEVEL_HTEAM_CT  }
}

public 
plugin_init() 
{
    
register_plugin("Weapon models""1.0.2""Supremache")
    
register_event("CurWeapon""OnCurWeapon""be""1=1");
}

public 
plugin_precache( )
{
    for( new 
sizeofg_szWeapons ); i++ )
    {
        if( 
g_szWeapons][ ModelV ][ ])
        {
            
precache_modelg_szWeapons][ ModelV ] )
        }
        
        if( 
g_szWeapons][ ModelP ][ ] )
        {
            
precache_modelg_szWeapons][ ModelP ] )
        }
    }
}

public 
OnCurWeaponid )
{
    if( !
is_user_aliveid ) ) 
    {
        return;
    }
    
    new 
iWeapon read_data(2);
    
    for(new 
sizeofg_szWeapons ); i++ )
    {
        if( 
get_user_teamid ) == g_szWeapons][ Teams ] && ( get_user_flagsid ) & g_szWeapons][ Access ] == g_szWeapons][ Access ] ) && iWeapon == g_szWeapons][ WeaponsID ] )
        {
            if( 
g_szWeapons][ ModelV ][ ] != EOS )                        
                
set_pevidpev_viewmodel2g_szWeapons][ ModelV ] )
        
            if( 
g_szWeapons][ ModelP ][ ] != EOS )
                
set_pevidpev_weaponmodel2g_szWeapons][ ModelP ] )
                
            break;
        }
    }

I edited it like this knife & m4a1 & ak47 weapons of OWNER ADMIN_IMMUNITY is right ?
PHP Code:
#include <amxmodx>
#include <fakemeta>

// Credits : @Bugsy for some optimizations
enum
{
    
TEAM_UNASSIGNED 0,
    
TEAM_T,
    
TEAM_CT,
    
TEAM_SPEC
}

enum pWeapons
{
    
WeaponsID,
    
ModelV64 ],
    
ModelP64 ],
    
Access,
    
Teams
}

new 
g_szWeapons[ ][ pWeapons ] = 
{
    
/* Weapon ID,         Model V,            Model P            Access */
    
CSW_KNIFE"models/ownerweapons/v_knife.mdl""models/vipweapons/p_knife.mdl"ADMIN_IMMUNITYTEAM_CT },// Owner knife model
    
CSW_AK47"models/ownerweapons/v_ak47.mdl"""ADMIN_IMMUNITYTEAM_CT },
    { 
CSW_M4A1"models/ownerweapons/v_m4a1.mdl"""ADMIN_IMMUNITYTEAM_CT }
}

public 
plugin_init() 
{
    
register_plugin("Weapon models""1.0.2""Supremache")
    
register_event("CurWeapon""OnCurWeapon""be""1=1");
}

public 
plugin_precache( )
{
    for( new 
sizeofg_szWeapons ); i++ )
    {
        if( 
g_szWeapons][ ModelV ][ ])
        {
            
precache_modelg_szWeapons][ ModelV ] )
        }
        
        if( 
g_szWeapons][ ModelP ][ ] )
        {
            
precache_modelg_szWeapons][ ModelP ] )
        }
    }
}

public 
OnCurWeaponid )
{
    if( !
is_user_aliveid ) ) 
    {
        return;
    }
    
    new 
iWeapon read_data(2);
    
    for(new 
sizeofg_szWeapons ); i++ )
    {
        if( 
get_user_teamid ) == g_szWeapons][ Teams ] && ( get_user_flagsid ) & g_szWeapons][ Access ] == g_szWeapons][ Access ] ) && iWeapon == g_szWeapons][ WeaponsID ] )
        {
            if( 
g_szWeapons][ ModelV ][ ] != EOS )                        
                
set_pevidpev_viewmodel2g_szWeapons][ ModelV ] )
        
            if( 
g_szWeapons][ ModelP ][ ] != EOS )
                
set_pevidpev_weaponmodel2g_szWeapons][ ModelP ] )
                
            break;
        }
    }

SHIFT0 is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 11-06-2021 , 12:03   Re: Owner Knife Only When CT
Reply With Quote #16

Made a few minor optimizations:
  • Eliminated redundant native calls in OnCurWeapon
  • Made OnCurWeapon only fire on weapon change (assuming this is the intent with the plugin). It was previously getting called on each weapon fire.

PHP Code:
#include <amxmodx>
#include <fakemeta>

// Credits : @Bugsy for some optimizations

#define MAX_PLAYERS 32

enum CSTeam
{
    
TEAM_UNASSIGNED 0,
    
TEAM_T,
    
TEAM_CT,
    
TEAM_SPEC
}

enum pWeapons
{
    
WeaponsID,
    
ModelV64 ],
    
ModelP64 ],
    
Access,
    
CSTeam:Teams
}

new const 
g_szWeapons[ ][ pWeapons ] = 
{
    
/* Weapon ID,         Model V,            Model P            Access */
    
CSW_KNIFE"models/ownerweapons/v_knife.mdl""models/vipweapons/p_knife.mdl"ADMIN_IMMUNITYTEAM_CT },// Owner knife model
    
CSW_AK47"models/ownerweapons/v_ak47.mdl"""ADMIN_IMMUNITYTEAM_CT },
    { 
CSW_M4A1"models/ownerweapons/v_m4a1.mdl"""ADMIN_IMMUNITYTEAM_CT }
};

new 
g_CurrentWeaponIDMAX_PLAYERS ];

public 
plugin_init() 
{
    
register_plugin("Weapon models""1.0.2""Supremache");
    
    
register_event("CurWeapon""OnCurWeapon""be""1=1");
}

public 
plugin_precache()
{
    for ( new 
sizeofg_szWeapons ) ; i++ )
    {
        if ( 
g_szWeapons][ ModelV ][ ] != EOS )
        {
            
precache_modelg_szWeapons][ ModelV ] )
        }
        
        if ( 
g_szWeapons][ ModelP ][ ] != EOS )
        {
            
precache_modelg_szWeapons][ ModelP ] )
        }
    }
}

public 
client_connectid )
{
    
g_CurrentWeaponIDid ] = 0;
}

public 
OnCurWeaponid )
{
    if( 
is_user_aliveid ) ) 
    {
        new 
iWeapon read_data);
        
        if ( 
iWeapon != g_CurrentWeaponIDid ] )
        {
            new 
CSTeam:csTeam CSTeam:get_user_teamid );
            new 
iFlags get_user_flagsid );
            
            for(new 
sizeofg_szWeapons ); i++ )
            {
                if( 
csTeam == g_szWeapons][ Teams ] && ( iFlags g_szWeapons][ Access ] == g_szWeapons][ Access ] ) && iWeapon == g_szWeapons][ WeaponsID ] )
                {
                    if( 
g_szWeapons][ ModelV ][ ] != EOS )                        
                        
set_pevidpev_viewmodel2g_szWeapons][ ModelV ] )
                
                    if( 
g_szWeapons][ ModelP ][ ] != EOS )
                        
set_pevidpev_weaponmodel2g_szWeapons][ ModelP ] )
                
                    break;
                }
            }
        }
        
        
g_CurrentWeaponIDid ] = iWeapon;
    }

__________________

Last edited by Bugsy; 11-06-2021 at 12:23.
Bugsy is offline
SHIFT0
Senior Member
Join Date: Apr 2021
Location: Palestine
Old 11-06-2021 , 14:11   Re: Owner Knife Only When CT
Reply With Quote #17

Quote:
Originally Posted by Bugsy View Post
Made a few minor optimizations:
  • Eliminated redundant native calls in OnCurWeapon
  • Made OnCurWeapon only fire on weapon change (assuming this is the intent with the plugin). It was previously getting called on each weapon fire.

PHP Code:
#include <amxmodx>
#include <fakemeta>

// Credits : @Bugsy for some optimizations

#define MAX_PLAYERS 32

enum CSTeam
{
    
TEAM_UNASSIGNED 0,
    
TEAM_T,
    
TEAM_CT,
    
TEAM_SPEC
}

enum pWeapons
{
    
WeaponsID,
    
ModelV64 ],
    
ModelP64 ],
    
Access,
    
CSTeam:Teams
}

new const 
g_szWeapons[ ][ pWeapons ] = 
{
    
/* Weapon ID,         Model V,            Model P            Access */
    
CSW_KNIFE"models/ownerweapons/v_knife.mdl""models/vipweapons/p_knife.mdl"ADMIN_IMMUNITYTEAM_CT },// Owner knife model
    
CSW_AK47"models/ownerweapons/v_ak47.mdl"""ADMIN_IMMUNITYTEAM_CT },
    { 
CSW_M4A1"models/ownerweapons/v_m4a1.mdl"""ADMIN_IMMUNITYTEAM_CT }
};

new 
g_CurrentWeaponIDMAX_PLAYERS ];

public 
plugin_init() 
{
    
register_plugin("Weapon models""1.0.2""Supremache");
    
    
register_event("CurWeapon""OnCurWeapon""be""1=1");
}

public 
plugin_precache()
{
    for ( new 
sizeofg_szWeapons ) ; i++ )
    {
        if ( 
g_szWeapons][ ModelV ][ ] != EOS )
        {
            
precache_modelg_szWeapons][ ModelV ] )
        }
        
        if ( 
g_szWeapons][ ModelP ][ ] != EOS )
        {
            
precache_modelg_szWeapons][ ModelP ] )
        }
    }
}

public 
client_connectid )
{
    
g_CurrentWeaponIDid ] = 0;
}

public 
OnCurWeaponid )
{
    if( 
is_user_aliveid ) ) 
    {
        new 
iWeapon read_data);
        
        if ( 
iWeapon != g_CurrentWeaponIDid ] )
        {
            new 
CSTeam:csTeam CSTeam:get_user_teamid );
            new 
iFlags get_user_flagsid );
            
            for(new 
sizeofg_szWeapons ); i++ )
            {
                if( 
csTeam == g_szWeapons][ Teams ] && ( iFlags g_szWeapons][ Access ] == g_szWeapons][ Access ] ) && iWeapon == g_szWeapons][ WeaponsID ] )
                {
                    if( 
g_szWeapons][ ModelV ][ ] != EOS )                        
                        
set_pevidpev_viewmodel2g_szWeapons][ ModelV ] )
                
                    if( 
g_szWeapons][ ModelP ][ ] != EOS )
                        
set_pevidpev_weaponmodel2g_szWeapons][ ModelP ] )
                
                    break;
                }
            }
        }
        
        
g_CurrentWeaponIDid ] = iWeapon;
    }

Thanks
SHIFT0 is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 11-06-2021 , 14:35   Re: Owner Knife Only When CT
Reply With Quote #18

Quote:
Originally Posted by Bugsy View Post
Made a few minor optimizations:
  • Eliminated redundant native calls in OnCurWeapon
  • Made OnCurWeapon only fire on weapon change (assuming this is the intent with the plugin). It was previously getting called on each weapon fire.

PHP Code:
#include <amxmodx>
#include <fakemeta>

// Credits : @Bugsy for some optimizations

#define MAX_PLAYERS 32

enum CSTeam
{
    
TEAM_UNASSIGNED 0,
    
TEAM_T,
    
TEAM_CT,
    
TEAM_SPEC
}

enum pWeapons
{
    
WeaponsID,
    
ModelV64 ],
    
ModelP64 ],
    
Access,
    
CSTeam:Teams
}

new const 
g_szWeapons[ ][ pWeapons ] = 
{
    
/* Weapon ID,         Model V,            Model P            Access */
    
CSW_KNIFE"models/ownerweapons/v_knife.mdl""models/vipweapons/p_knife.mdl"ADMIN_IMMUNITYTEAM_CT },// Owner knife model
    
CSW_AK47"models/ownerweapons/v_ak47.mdl"""ADMIN_IMMUNITYTEAM_CT },
    { 
CSW_M4A1"models/ownerweapons/v_m4a1.mdl"""ADMIN_IMMUNITYTEAM_CT }
};

new 
g_CurrentWeaponIDMAX_PLAYERS ];

public 
plugin_init() 
{
    
register_plugin("Weapon models""1.0.2""Supremache");
    
    
register_event("CurWeapon""OnCurWeapon""be""1=1");
}

public 
plugin_precache()
{
    for ( new 
sizeofg_szWeapons ) ; i++ )
    {
        if ( 
g_szWeapons][ ModelV ][ ] != EOS )
        {
            
precache_modelg_szWeapons][ ModelV ] )
        }
        
        if ( 
g_szWeapons][ ModelP ][ ] != EOS )
        {
            
precache_modelg_szWeapons][ ModelP ] )
        }
    }
}

public 
client_connectid )
{
    
g_CurrentWeaponIDid ] = 0;
}

public 
OnCurWeaponid )
{
    if( 
is_user_aliveid ) ) 
    {
        new 
iWeapon read_data);
        
        if ( 
iWeapon != g_CurrentWeaponIDid ] )
        {
            new 
CSTeam:csTeam CSTeam:get_user_teamid );
            new 
iFlags get_user_flagsid );
            
            for(new 
sizeofg_szWeapons ); i++ )
            {
                if( 
csTeam == g_szWeapons][ Teams ] && ( iFlags g_szWeapons][ Access ] == g_szWeapons][ Access ] ) && iWeapon == g_szWeapons][ WeaponsID ] )
                {
                    if( 
g_szWeapons][ ModelV ][ ] != EOS )                        
                        
set_pevidpev_viewmodel2g_szWeapons][ ModelV ] )
                
                    if( 
g_szWeapons][ ModelP ][ ] != EOS )
                        
set_pevidpev_weaponmodel2g_szWeapons][ ModelP ] )
                
                    break;
                }
            }
        }
        
        
g_CurrentWeaponIDid ] = iWeapon;
    }

You are focus to the small details, perfect
__________________
Youtube.com/Supremache

Bank System [Nvault - SQL Support]
VIP System
  • If you think it's that simple, then do it yourself.
Supremache is offline
SHIFT0
Senior Member
Join Date: Apr 2021
Location: Palestine
Old 11-06-2021 , 14:39   Re: Owner Knife Only When CT
Reply With Quote #19

Supremache
can u edit ur script ?
Explosive Grenade
SHIFT0 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 16:05.


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