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

Model changer


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
jakub1411
Member
Join Date: Jul 2012
Old 08-04-2017 , 21:57   Model changer
Reply With Quote #1

Hello.
If I open menu, I can change my models but this menu switch in two buttons,
button 1. default models,
button 2. new models

and I want switch models in one button,
button 1. new/defalut

Can someone help me please? I would be very grateful. Thanks.

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

new const default1[] = "models/v_ak47.mdl"
new const default2[] = "models/v_m4a1.mdl"
new const default3[] = "models/v_awp.mdl"
new const default4[] = "models/v_deagle.mdl"

new const changed1[] = "models/newskins/v_ak47.mdl"
new const changed2[] = "models/newskins/v_m4a1.mdl"
new const changed3[] = "models/newskins/v_awp.mdl"
new const changed4[] = "models/newskins/v_deagle.mdl"

new bool:classic[33]
new 
bool:changed[33]

new const 
WEAPONENTNAMES[ ][ ] = 
{
    
"weapon_m4a1""weapon_deagle""weapon_awp""weapon_ak47"
}

public 
plugin_precache() 

    
precache_model(changed1)
    
precache_model(changed2)
    
precache_model(changed3
    
precache_model(changed4)


public 
plugin_init()
{
    
register_plugin("Skin changer""1.0""author");
    
register_clcmd("say /skins""ShowMenu"_"");
    for( new 
0sizeof WEAPONENTNAMESi++ )
        if( 
WEAPONENTNAMES][ ] ) RegisterHamHam_Item_DeployWEAPONENTNAMES], "ham_Item_Deploy_Post");        
}

public 
ham_Item_Deploy_Postweapon_ent )
{
    static 
idid fm_cs_get_weapon_ent_ownerweapon_ent );
    
    if( !
pev_validid ) )
        return;
        
    static 
weaponidweaponid cs_get_weapon_idweapon_ent );
    
    
replace_weapon_modelsidweaponid );
}
public 
client_putinserver(id)
{
    
classic[id] = true
    changed
[id] = false
}
public 
ShowMenu(id)
{
    new 
menu menu_create("Skin menu""mh_MyMenu");
    
    if(
classic[id])
        
menu_additem(menu"Default skins \w[\yON\w]"""0); // case 0
    
else
        
menu_additem(menu"Default skins \w[\rOFF\w]"""0); // case 0
    
if(changed[id])
        
menu_additem(menu"New skins \w[\yON\w]"""0); // case 1
    
else
        
menu_additem(menu"New skins \w[\rOFF\w]"""0); // case 1

    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_setprop(menuMPROP_EXITNAME"Exit");

    
menu_display(idmenu0);

    return 
PLUGIN_HANDLED;
}

public 
mh_MyMenu(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_cancel(id);
        return 
PLUGIN_HANDLED;
    }

    new 
command[6], name[64], accesscallback;

    
menu_item_getinfo(menuitemaccesscommandsizeof command 1namesizeof name 1callback);
    switch(
item)
    {
        case 
0
        {
            if(!
classic[id])
            {
                
classic[id] = true
                changed
[id] = false
                ChatColor
(id"!gINFO:!y You select default skins."name);
                new 
weapon_entweapon_ent fm_cs_get_current_weapon_ent(id);
                if(
pev_valid(weapon_ent))
                    
replace_weapon_models(idcs_get_weapon_id(weapon_ent));
            }
            else
            {
                
ChatColor(id"!gINFO:!y You have already selected default skins."name);
            }
        }
        case 
1
        {
            if(!
changed[id])
            {
                
classic[id] = false
                changed
[id] = true
                ChatColor
(id"!gINFO:!y You select new skins."name);
                new 
weapon_entweapon_ent fm_cs_get_current_weapon_ent(id);
                if(
pev_valid(weapon_ent))
                    
replace_weapon_models(idcs_get_weapon_id(weapon_ent));
            }
            else
            {
                
ChatColor(id"!gINFO:!y You have already selected new skins."name);
            }
            
        }
    }
    
ShowMenu(id)

    return 
PLUGIN_HANDLED;
}
replace_weapon_modelsidweaponid )
{
    if( !
is_user_connected(id) )
        return;
    
    if(
classic[id])
    {
        switch(
weaponid)
        {
            case 
CSW_AK47:
            {
            
                
set_pev(idpev_viewmodel2default1)
            }
            case 
CSW_M4A1:
            {
            
                
set_pev(idpev_viewmodel2default2)
            }
            case 
CSW_AWP:
            {
            
                
set_pev(idpev_viewmodel2default3)
            }
            case 
CSW_DEAGLE:
            {
            
                
set_pev(idpev_viewmodel2default4)
            }
        }
    }
    if(
changed[id])
    {
        switch( 
weaponid )
        {
            case 
CSW_AK47:
            {
            
                
set_pev(idpev_viewmodel2changed1)
            }
            case 
CSW_M4A1:
            {
            
                
set_pev(idpev_viewmodel2changed2)
            }
            case 
CSW_AWP:
            {
            
                
set_pev(idpev_viewmodel2changed3)
            }
            case 
CSW_DEAGLE:
            {
            
                
set_pev(idpev_viewmodel2changed4)
            }
        }
    }
}

stock fm_cs_get_current_weapon_ent(id)
{
    if(
pev_valid(id) != 2)
        return -
1
    
    
return get_pdata_cbase(id3735)
}

stock fm_cs_get_weapon_ent_ownerent )
{
    if(
pev_valid(ent) != 2)
        return -
1
    
    
return get_pdata_cbase(ent414)
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!team""^3"// Team Color
    
replace_all(msg190"!team2""^0"// Team2 Color
    
    
if(idplayers[0] = id; else get_players(playerscount"ch")
    {
        for(new 
0counti++)
        {
            if(
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i])
                
write_string(msg)
                
message_end()
            }
        }
    }


Last edited by jakub1411; 08-06-2017 at 11:51.
jakub1411 is offline
jakub1411
Member
Join Date: Jul 2012
Old 08-21-2017 , 08:53   Re: Model changer
Reply With Quote #2

I try edit code but now if i choose replace models i cant replace it back to default. Can someone help?

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

new const default1[] = "models/v_ak47.mdl"
new const default2[] = "models/v_m4a1.mdl"
new const default3[] = "models/v_awp.mdl"
new const default4[] = "models/v_deagle.mdl"

new const changed1[] = "models/newskins/v_ak47.mdl"
new const changed2[] = "models/newskins/v_m4a1.mdl"
new const changed3[] = "models/newskins/v_awp.mdl"
new const changed4[] = "models/newskins/v_deagle.mdl"

new bool:classic[33]
new 
bool:changed[33]
new 
bool:onoff[33]

new const 
WEAPONENTNAMES[ ][ ] = 
{
    
"weapon_m4a1""weapon_deagle""weapon_awp""weapon_ak47"
}

public 
plugin_precache() 

    
precache_model(changed1)
    
precache_model(changed2)
    
precache_model(changed3
    
precache_model(changed4)


public 
plugin_init()
{
    
register_plugin("Skin changer""1.0""author");
    
register_clcmd("say /skins""ShowMenu"_"");
    for( new 
0sizeof WEAPONENTNAMESi++ )
        if( 
WEAPONENTNAMES][ ] ) RegisterHamHam_Item_DeployWEAPONENTNAMES], "ham_Item_Deploy_Post");        
}

public 
ham_Item_Deploy_Postweapon_ent )
{
    static 
idid fm_cs_get_weapon_ent_ownerweapon_ent );
    
    if( !
pev_validid ) )
        return;
        
    static 
weaponidweaponid cs_get_weapon_idweapon_ent );
    
    
replace_weapon_modelsidweaponid );
}
public 
client_putinserver(id)
{
    
classic[id] = true
    changed
[id] = false
    onoff
[id] = false
}
public 
ShowMenu(id)
{
    static 
item[64]
    
    new 
menu menu_create("Skin menu""mh_MyMenu");
    
    if(
onoff[id])
    {
        
formatex(itemcharsmax(item), "\yON")
        
menu_additem(menuitem"1"0)
    }
    else
    {
        
formatex(itemcharsmax(item), "\rOFF")
        
menu_additem(menuitem"1"0)
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
menu_setprop(menuMPROP_NUMBER_COLOR"\r")
    
menu_display(idmenu0)
}

public 
mh_MyMenu(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}

    new 
command[6], name[64], accesscallback;

    
menu_item_getinfo(menuitemaccesscommandsizeof command 1namesizeof name 1callback);
    switch(
item)
    {
        case 
0
        {
            if(
onoff[id])
            {
                if(!
classic[id])
                {
                    
classic[id] = true
                    changed
[id] = false
                    ChatColor
(id"!gINFO:!y You have selected default skins."name);
                    new 
weapon_entweapon_ent fm_cs_get_current_weapon_ent(id);
                    if(
pev_valid(weapon_ent))
                        
replace_weapon_models(idcs_get_weapon_id(weapon_ent));
                }
                else
                {
                    
ChatColor(id"!gINFO:!y You have already selected default skins."name);
                }
            }
            else
            {
                if(!
changed[id])
                {
                    
classic[id] = false
                    changed
[id] = true
                    ChatColor
(id"!gINFO:!y You have selected new skins."name);
                    new 
weapon_entweapon_ent fm_cs_get_current_weapon_ent(id);
                    if(
pev_valid(weapon_ent))
                        
replace_weapon_models(idcs_get_weapon_id(weapon_ent));
                }
                else
                {
                    
ChatColor(id"!gINFO:!y You have already selected new skins."name);
                }
            }
        }
    }
    
ShowMenu(id)

    return 
PLUGIN_HANDLED;
}
replace_weapon_modelsidweaponid )
{
    if( !
is_user_connected(id) )
        return;
    if(
onoff[id])
    {
        if(
classic[id])
        {
            switch(
weaponid)
            {
                case 
CSW_AK47:
                {
                
                    
set_pev(idpev_viewmodel2default1)
                }
                case 
CSW_M4A1:
                {
                
                    
set_pev(idpev_viewmodel2default2)
                }
                case 
CSW_AWP:
                {
                
                    
set_pev(idpev_viewmodel2default3)
                }
                case 
CSW_DEAGLE:
                {
                
                    
set_pev(idpev_viewmodel2default4)
                }
            }
        }
    }
    else
    {
        if(
changed[id])
        {
            switch( 
weaponid )
            {
                case 
CSW_AK47:
                {
            
                    
set_pev(idpev_viewmodel2changed1)
                }
                case 
CSW_M4A1:
                {
            
                    
set_pev(idpev_viewmodel2changed2)
                }
                case 
CSW_AWP:
                {
            
                    
set_pev(idpev_viewmodel2changed3)
                }
                case 
CSW_DEAGLE:
                {
            
                    
set_pev(idpev_viewmodel2changed4)
                }
            }
        }
    }
}

stock fm_cs_get_current_weapon_ent(id)
{
    if(
pev_valid(id) != 2)
        return -
1
    
    
return get_pdata_cbase(id3735)
}

stock fm_cs_get_weapon_ent_ownerent )
{
    if(
pev_valid(ent) != 2)
        return -
1
    
    
return get_pdata_cbase(ent414)
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!team""^3"// Team Color
    
replace_all(msg190"!team2""^0"// Team2 Color
    
    
if(idplayers[0] = id; else get_players(playerscount"ch")
    {
        for(new 
0counti++)
        {
            if(
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i])
                
write_string(msg)
                
message_end()
            }
        }
    }


Last edited by jakub1411; 08-21-2017 at 09:02.
jakub1411 is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 08-22-2017 , 06:18   Re: Model changer
Reply With Quote #3

Use 'new' instead of 'static' variables in Ham_Item_Deploy forward. Check if the weapon is valid and if the player is alive.

You can improve your code. Feel free to check this out.
https://forums.alliedmods.net/showthread.php?t=298329
__________________








CrazY. is offline
jakub1411
Member
Join Date: Jul 2012
Old 08-22-2017 , 12:33   Re: Model changer
Reply With Quote #4

Edited, but doesnt work, still do the same problem.
jakub1411 is offline
PRoSToTeM@
Veteran Member
Join Date: Jan 2010
Location: Russia, Ivanovo
Old 08-22-2017 , 12:39   Re: Model changer
Reply With Quote #5

Quote:
Originally Posted by CrazY. View Post
Check if the weapon is valid and if the player is alive.
Weapon must be always valid. Dead players can't have weapons.
__________________
PRoSToTeM@ is offline
Send a message via ICQ to PRoSToTeM@ Send a message via Skype™ to PRoSToTeM@
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 08-22-2017 , 14:03   Re: Model changer
Reply With Quote #6

@PRoSToTeM@, better to prevent it than to remedy it.

@jakub1411, I'll do a example to you.
__________________









Last edited by CrazY.; 08-22-2017 at 14:04.
CrazY. is offline
PRoSToTeM@
Veteran Member
Join Date: Jan 2010
Location: Russia, Ivanovo
Old 08-22-2017 , 14:41   Re: Model changer
Reply With Quote #7

Quote:
Originally Posted by CrazY. View Post
@PRoSToTeM@, better to prevent it than to remedy it.
With these checks you will delay error if problem occurs. If you really like these checks, then do an assertion.
__________________
PRoSToTeM@ is offline
Send a message via ICQ to PRoSToTeM@ Send a message via Skype™ to PRoSToTeM@
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 08-22-2017 , 18:12   Re: Model changer
Reply With Quote #8

Code:
#include <amxmodx> #include <cstrike> #include <engine> #include <hamsandwich> const OFFSET_WEAPONOWNER = 41 const OFFSET_LINUX_WEAPONS = 4 new const WEAPONENTNAMES[][] = { "", "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 _:eWeaponData {     WeaponCSW,     V_NEW_MDL[64], }; new WeaponData[][eWeaponData] = {     { CSW_AK47, "models/v_m4a1.mdl" },     { CSW_M4A1, "models/v_ak47.mdl" } } public plugin_init() {     register_plugin("Custom Weapon Models", "1.0", "Crazy")     // Register ham item deploy on all weapons     new index     for (index = 0; index < sizeof WEAPONENTNAMES; index++)         if (WEAPONENTNAMES[index][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[index], "fw_Item_Deploy_Post", 1) } public plugin_precache() {     // Precache all custom models     new index     for (index = 0; index < sizeof WeaponData; index++)         precache_model(WeaponData[index][V_NEW_MDL]) } public fw_Item_Deploy_Post(entity) {     // Entity exists?     if (!is_valid_ent(entity))         return;     // Get weapon owner     new id = get_pdata_cbase(entity, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);     // Dead player?     if (!is_user_alive(id))         return;     // Get weapon type. Corresponds to CSW_*     new weapon_ent = cs_get_weapon_id(entity)     // Loop through all array items     new index     for (index = 0; index < sizeof WeaponData; index++)     {         // Skip if no custom model registered         if (weapon_ent != WeaponData[index][WeaponCSW])             continue;         // Set custom V_ model         entity_set_string(id, EV_SZ_viewmodel, WeaponData[index][V_NEW_MDL])         // Set custom P_ model         //entity_set_string(id, EV_SZ_weaponmodel, WeaponData[index][P_NEW_MDL])         break;     } }
__________________








CrazY. is offline
jakub1411
Member
Join Date: Jul 2012
Old 08-23-2017 , 11:34   Re: Model changer
Reply With Quote #9

Thank you, works good. But i have last question..I add to plugin function on/off weapon models and If I change models in menu I must replace weapons in game with Q button. Can someone help me how to skip it and change models without Q button replace?
jakub1411 is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 08-23-2017 , 11:49   Re: Model changer
Reply With Quote #10

Code:
new weapon_ent = get_pdata_cbase(id, 373) ExecuteHamB(Ham_Item_Deploy, weapon_ent)
__________________








CrazY. 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 00:09.


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