AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   VIP models - weapon replacement plugin (https://forums.alliedmods.net/showthread.php?t=189113)

gump497 07-03-2012 15:06

VIP models - weapon replacement plugin
 
Hello,
i tried to change the models of weapons, but in vain. Please, could someone correct me and for everything to be VIP?

Code:

PHP Code:

#define VERSION    "1.3"

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define MAX_SOUNDS    50
#define MAX_p_MODELS    50
#define MAX_v_MODELS    50
#define MAX_w_MODELS    50

#define MAP_CONFIGS    1

new Array: vArrayModels;

new 
new_sounds[MAX_SOUNDS][48]
new 
old_sounds[MAX_SOUNDS][48]
new 
sounds_team[MAX_SOUNDS]
new 
soundsnum

new new_p_models[MAX_p_MODELS][48]
new 
old_p_models[MAX_p_MODELS][48]
new 
p_models_team[MAX_p_MODELS]
new 
p_modelsnum

new new_w_models[MAX_w_MODELS][48]
new 
old_w_models[MAX_w_MODELS][48]
new 
w_models_team[MAX_p_MODELS]
new 
w_modelsnum

new maxplayers
new boolbModels33 ];

public 
plugin_init()
{
    
register_plugin("Weapon Model + Sound Replacement",VERSION,"GHW_Chronic & Edited by DarkGL")
    
register_forward(FM_EmitSound,"Sound_Hook")
    
register_forward(FM_SetModel,"W_Model_Hook",1)
    
    
register_event("CurWeapon","Changeweapon_Hook","be","1=1")
    
    
register_logevent("newround",2,"1=Round_Start")
    
    
register_forwardFM_UpdateClientData "fmClientData" );
    
    
maxplayers get_maxplayers()
    
    
register_clcmd"say /models" "modelCommand" );
    
register_clcmd"say_team /models" "modelCommand" );
}

public 
modelCommandid ){
    
bModelsid ]    =    !bModelsid ];
    
    return 
PLUGIN_HANDLED;
}

public 
client_connectid ){
    
bModelsid ]    =    true;
}

public 
plugin_precache()
{
    new 
configfile[200]
    new 
configsdir[200]
    new 
map[32]
    
get_configsdir(configsdir,199)
    
get_mapname(map,31)
    
formatex(configfile,199,"%s/new_weapons_%s.ini",configsdir,map)
    if(
file_exists(configfile))
    {
        
load_models(configfile)
    }
    else
    {
        
formatex(configfile,199,"%s/new_weapons.ini",configsdir)
        
load_models(configfile)
    }
}

public 
load_models(configfile[]){
    
vArrayModels    =    ArrayCreate);
    new 
iArray];
    
    if(
file_exists(configfile))
    {
        new 
read[96], left[48], right[48], right2[32], trashteam
        
for(new i=0;i<file_size(configfile,1);i++)
        {
            
read_file(configfile,i,read,95,trash)
            if(
containi(read,";")!=&& containi(read," ")!=-1)
            {
                
strbreak(read,left,47,right,47)
                
team=0
                
if(containi(right," ")!=-1)
                {
                    
strbreak(right,right,47,right2,31)
                    
replace_all(right2,31,"^"","")
                    if(
                    equali(right2,"
T") ||
                    equali(right2,"
Terrorist") ||
                    equali(right2,"
Terrorists") ||
                    equali(right2,"
Blue") ||
                    equali(right2,"B") ||
                    equali(right2,"
Allies") ||
                    equali(right2,"
1")
                    ) team=1
                    else if(
                    equali(right2,"
CT") ||
                    equali(right2,"
Counter") ||
                    equali(right2,"
Counter-Terrorist") ||
                    equali(right2,"
Counter-Terrorists") ||
                    equali(right2,"
CounterTerrorists") ||
                    equali(right2,"
CounterTerrorist") ||
                    equali(right2,"
Red") ||
                    equali(right2,"
R") ||
                    equali(right2,"
Axis") ||
                    equali(right2,"
2")
                    ) team=2
                    else if(
                    equali(right2,"
Yellow") ||
                    equali(right2,"
Y") ||
                    equali(right2,"
3")
                    ) team=3
                    else if(
                    equali(right2,"
Green") ||
                    equali(right2,"
G") ||
                    equali(right2,"
4")
                    ) team=4
                }
                replace_all(right,47,"
^"","")
                if(
file_exists(right))
                {
                    if(
containi(right,".mdl")==strlen(right)-4)
                    {
                        new 
iPrecache    =    precache_model(right);
                        if(!
iPrecache)
                        {
                            
log_amx("Chyba pri pokuse o precache modelu: ^"%s^" (riadok %d z new_weapons.ini)",right,i+1)
                        }
                        else if(
containi(left,"models/p_")==0)
                        {
                            
formatex(new_p_models[p_modelsnum],47,right)
                            
formatex(old_p_models[p_modelsnum],47,left)
                            
p_models_team[p_modelsnum]=team
                            p_modelsnum
++
                        }
                        else if(
containi(left,"models/v_")==0)
                        {
                            new 
iPrecacheOld    =    precache_modelleft );
                            if( 
iPrecacheOld ){
                                
iArray]    =    iPrecacheOld;
                                
iArray]     =    iPrecache;
                                
iArray]     =    team;
                                
ArrayPushArrayvArrayModels iArray )
                            }
                        }
                        else if(
containi(left,"models/w_")==0)
                        {
                            
formatex(new_w_models[w_modelsnum],47,right)
                            
formatex(old_w_models[w_modelsnum],47,left)
                            
w_models_team[w_modelsnum]=team
                            w_modelsnum
++
                        }
                        else
                        {
                            
log_amx("Model typ (p_ / v_ / w_) neznamy pre model: ^"%s^" (riadok %d z new_weapons.ini)",right,i+1)
                        }
                    }
                    else if(
containi(right,".wav")==strlen(right)-|| containi(right,".mp3")==strlen(right)-4)
                    {
                        
replace(right,47,"sound/","")
                        
replace(left,47,"sound/","")
                        if(!
precache_sound(right))
                        {
                            
log_amx("Chyba pri pokuse o precache zvuk: ^"%s^" (riadok %d z new_weapons.ini)",right,i+1)
                        }
                        else
                        {
                            
formatex(new_sounds[soundsnum],47,right)
                            
formatex(old_sounds[soundsnum],47,left)
                            
sounds_team[soundsnum]=team
                            soundsnum
++
                        }
                    }
                    else
                    {
                        
log_amx("Neplatny subor: ^"%s^" (riadok %d z new_weapons.ini)",right,i+1)
                    }
                }
                else
                {
                    
log_amx("Subor neexistoval: ^"%s^" (riadok %d z new_weapons.ini)",right,i+1)
                }
                
/*if(!file_exists(left))
                {
                    log_amx("Upozornenie: subor neexistoval: ^"%s^" (riadok %d z new_weapons.ini). LEN VAROVANIE. PLUGIN STALE FUNGUJE!!!",left,i+1)
                }*/
            
}
        }
    }
}

public 
fmClientDataidsendweaponscd_handle ){
    if( !
is_user_connectedid ) || !bModelsid ] || get_cdcd_handle CD_ViewModel ) == 0){
        return 
FMRES_IGNORED;
    }
    new 
iArray] ,
        
oldWeapon    =    get_cdcd_handle CD_ViewModel );
        
    for( new 
ArraySizevArrayModels ) ; i++ ){
        
        
ArrayGetArrayvArrayModels iArray );
        
        if( 
iArray]    ==    oldWeapon && ( !iArray] || iArray] == get_user_teamid ) ) ){
            
            
set_cdcd_handle CD_ViewModel iArray] );
            return 
FMRES_HANDLED;
            
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
Changeweapon_Hook(id)
{
    if(!
is_user_alive(id))
    {
        return 
PLUGIN_CONTINUE
    
}
        if(
get_user_flags(id) & ADMIN_LEVEL_H)
        {
    static 
model[32], iteam

    team 
get_user_team(id)

    
pev(id,pev_weaponmodel2,model,31)
    for(
i=0;i<p_modelsnum;i++)
    {
        if(
equali(model,old_p_models[i]))
        {
            if(
p_models_team[i]==team || !p_models_team[i])
            {
                
set_pev(id,pev_weaponmodel2,new_p_models[i])
                break;
            }
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
Sound_Hook(id,channel,sample[])
{
    if(!
is_user_alive(id))
    {
        return 
FMRES_IGNORED
    
}
    if(
channel!=CHAN_WEAPON && channel!=CHAN_ITEM)
    {
        return 
FMRES_IGNORED
    
}
        if(
get_user_flags(id) & ADMIN_LEVEL_H)
        {
    static 
iteam

    team 
get_user_team(id)

    for(
i=0;i<soundsnum;i++)
    {
        if(
equali(sample,old_sounds[i]))
        {
            if(
sounds_team[i]==team || !sounds_team[i])
            {
                
engfunc(EngFunc_EmitSound,id,CHAN_WEAPON,new_sounds[i],1.0,ATTN_NORM,0,PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
        }
    }
    return 
FMRES_IGNORED
}

public 
W_Model_Hook(ent,model[])
{
    if(!
pev_valid(ent))
    {
        return 
FMRES_IGNORED
    
}
        if(
get_user_flags(id) & ADMIN_LEVEL_H)
        {
    static 
i
    
for(i=0;i<w_modelsnum;i++)
    {
        if(
equali(model,old_w_models[i]))
        {
            
engfunc(EngFunc_SetModel,ent,new_w_models[i])
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
newround()
{
    static 
entclassname[8], model[32]
    
ent engfunc(EngFunc_FindEntityInSphere,maxplayers,Float:{0.0,0.0,0.0},4800.0)
    while(
ent)
    {
        if(
pev_valid(ent))
        {
            
pev(ent,pev_classname,classname,7)
            if(
containi(classname,"armoury")!=-1)
            {
                
pev(ent,pev_model,model,31)
                
W_Model_Hook(ent,model)
            }
        }
        
ent engfunc(EngFunc_FindEntityInSphere,ent,Float:{0.0,0.0,0.0},4800.0)
    }



wickedd 07-03-2012 15:14

Re: VIP models - weapon replacement plugin
 
Stop starting multiple threads for the same problem. Here's the first one.

gump497 07-03-2012 15:17

Re: VIP models - weapon replacement plugin
 
sorry, I forgot :( Please lock the first, not because the source code (modified).


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

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