Raised This Month: $32 Target: $400
 8% 

Improving and optimizing this thing


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Krystek.
Member
Join Date: May 2022
Old 05-29-2022 , 10:35   Improving and optimizing this thing
Reply With Quote #1

Hello, would someone be so kind and point out how to improve "this thing?", since it can't be called a plugin due to the rather clunky code ;DD

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

new const PLUGIN[] = "Skins"
new const VERSION[] = "1.0.0"
new const AUTHOR[] = ""

new const gcCommands[][] = { "say /skins""say /skiny""say /skin""say /modele""say /model""say /models" };

new 
KnifeNames[][] = {
    
"Default"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins",
    
"Knife \d×\w Skins"
    
"Knife \d×\w Skins",
    
"Knife \d×\w Skins"            
};
new const 
KnifeModels[][] = {
    
"models/v_knife.mdl",
    
"models/v_knife_boreal_forest.mdl",
    
"models/v_knife_safari_mesh.mdl",
    
"models/v_falchion_slaughter.mdl",
    
"models/v_bayonet_doppler_saphire.mdl",
    
"models/v_bayonet_lore.mdl",
    
"models/v_butterfly_case_hardened.mdl",
    
"models/v_butterfly_doppler_ruby.mdl",
    
"models/v_huntsman_fade.mdl",
    
"models/v_huntsman_tiger_tooth.mdl",
    
"models/v_navaja_forestddpat.mdl",
    
"models/v_navaja_night.mdl",
    
"models/v_bowie_damascus_steel.mdl",
    
"models/v_bowie_marble_fade.mdl",
    
"models/v_noz_miku.mdl"
};
new 
FlagsKnife[] = { 0000ADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_D };

new 
P90Names[][] = {
    
"Kroliczek"
    
"P90 \d×\w Skins"
    
"P90 \d×\w Skins"
    
"P90 \d×\w Skins"
    
"P90 \d×\w Skins"
    
"P90 \d×\w Skins",
    
"P90 \d×\w Skins",
    
"P90 \d×\w Skins",
    
"P90 \d×\w Skins",
    
"P90 \d×\w Skins"        
};
new const 
P90Models[][] = {
    
"models/v_p90_rabbit.mdl",
    
"models/v_p90_assimov.mdl",
    
"models/v_p90_chicken_of_war.mdl",
    
"models/v_p90_chopper.mdl",
    
"models/v_p90_death_by_kitty.mdl",
    
"models/v_p90_emerald_dragon.mdl",
    
"models/v_p90_grim.mdl",
    
"models/v_p90_puzzle.mdl",
    
"models/v_p90_trigon.mdl",
    
"models/v_p90_miku.mdl"
};
new 
FlagsP90[] = { 0ADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_HADMIN_LEVEL_D };

new const 
weaponSOUND[][] = {
    
"sound/weapons/blockas1_change1.wav",
    
"sound/weapons/blockas1_change2.wav",
    
"sound/weapons/blockas1_reload_loop.wav",
    
"sound/weapons/blockas2_change1_1.wav",
    
"sound/weapons/blockas2_change2_1.wav",
    
"sound/weapons/blockas2_draw.wav",
    
"sound/weapons/blockas2_idle.wav",
    
"sound/weapons/blockas2_reload.wav",
    
"sound/weapons/blockas2_shoot_end.wav",
    
"sound/weapons/blockas2_shoot_start.wav"
};

new 
player_item[7][MAX_PLAYERS 1]
new 
g_vault

public plugin_init() {
    
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_event("CurWeapon""CurWeapon""be""1=1");

    
register_menucmd(register_menuid("MENU_MAIN"), 1023"MENU_MAIN_Handler");

    
register_menucmd(register_menuid("@MENU_KNIFE"), 1023"@MENU_KNIFE_Handler");
    
register_menucmd(register_menuid("@MENU_P90"), 1023"@MENU_P90_Handler");

    for(new 
0sizeof(gcCommands); i++) 
        
register_clcmd(gcCommands[i], "Command_MainMenu");
    
    
g_vault nvault_open("Skins");
}

public 
client_connect(id) {
    
LoadsModels(id);
}

public 
client_disconnected(id)
{
    
player_item[1][id] = 0;
    
player_item[2][id] = 0;
}

public 
plugin_end()
    
nvault_close(g_vault);

public 
plugin_precache() {
    
    for (new 
0sizeof KnifeModelsi++)
    
precache_model(KnifeModels[i]);
    
    for (new 
0sizeof P90Modelsi++)
    
precache_model(P90Models[i]);
}

public 
Command_MainMenu(id){
    new 
szMenu[512], len 0;
    
    
len formatex(szMenu[len], charsmax(szMenu) - len"\dSkins Menu^n^n");
    
    
len += formatex(szMenu[len], charsmax(szMenu) - len"\r1. \d» \wSkins \rKnife^n^n");
    
len += formatex(szMenu[len], charsmax(szMenu) - len"\r2. \d» \wSkins \rP90 \y(VIP)^n");
    
len += formatex(szMenu[len], charsmax(szMenu) - len"^n^n\r0. \wExit");
    
    
show_menu(id, (<< 0)|(<< 1)|(<< 2)|(<< 3)|(<< 4)|(<< 5)|(<< 9), szMenu, -1"MENU_MAIN");
    return 
PLUGIN_HANDLED;    
}

public 
MENU_MAIN_Handler(idkey)
{
    switch(
key)
    {
        case 
0: @MENU_KNIFE(id);
        case 
1: @MENU_P90(id);
        case 
2: @MENU_M249(id);
        case 
3: @MENU_XM1014(id);        
        case 
4: @MENU_MP5_TT(id);
        case 
5: @MENU_MP5_CT(id);
    }
}

@
MENU_KNIFE(id) {
    
    new 
Knife menu_create(fmt("\dSkins \rKnifes\d"), "@MENU_KNIFE_Handler")
    
    for(new 
0sizeof(KnifeNames); i++){
        if(
FlagsKnife[i] == ADMIN_LEVEL_H){
            
menu_additem(Knife fmt("\d» %s %s"get_user_flags(id) & ADMIN_LEVEL_H "\y(VIP)\w" "\d(VIP)\d"KnifeNames[i]), ""FlagsKnife[i], -1);
        }
        if(
FlagsKnife[i] == ADMIN_LEVEL_D){
            
menu_additem(Knife fmt("\d» %s %s"get_user_flags(id) & ADMIN_LEVEL_D "\y(MODEL MIKU)\w" "\d(MODEL MIKU)\d"KnifeNames[i]), ""FlagsKnife[i], -1);            
        }
        if(
FlagsKnife[i] == 0){
            
menu_additem(Knife fmt("\d»\w %s"KnifeNames[i]), ""FlagsKnife[i], -1);
        }
    }
    
menu_setprop(KnifeMPROP_EXITNAME"Exit");

    
menu_display(idKnife);

    return 
PLUGIN_HANDLED;
}
@
MENU_KNIFE_Handler(idKnifeitem) {
    if (
item == MENU_EXIT) {
        
menu_destroy(Knife);
        return 
PLUGIN_HANDLED;
    }
    
    if(
FlagsKnife[item] == 0){
        
player_item[1][id] = item
    
}
    else if(
FlagsKnife[item] > && get_user_flags(id) & FlagsKnife[item]){
        
player_item[1][id] = item
    
}

    
Set_Model(id);
    
SaveModels(id)    

    
menu_destroy(Knife);

    return 
PLUGIN_HANDLED;
}

@
MENU_P90(id) {
    
    new 
P90 menu_create(fmt("\dSkins \rP90\d"), "@MENU_P90_Handler")
    
    for(new 
0sizeof(P90Names); i++){
        if(
FlagsP90[i] == ADMIN_LEVEL_H){
            
menu_additem(P90 fmt("\d»\w %s %s"get_user_flags(id) & ADMIN_LEVEL_H "\y(VIP)\w" "\d(VIP)\d"P90Names[i]), ""FlagsP90[i], -1);
        }
        if(
FlagsP90[i] == ADMIN_LEVEL_D){
            
menu_additem(P90 fmt("\d»\w %s %s"get_user_flags(id) & ADMIN_LEVEL_D "\y(MODEL MIKU)\w" "\d(MODEL MIKU)\d"P90Names[i]), ""FlagsP90[i], -1);
        }        
        if(
FlagsP90[i] == 0){
            
menu_additem(P90 fmt("\d»\w %s"P90Names[i]), ""FlagsP90[i], -1);
        }
    }
    
menu_setprop(P90MPROP_EXITNAME"Exit");

    
menu_display(idP90);

    return 
PLUGIN_HANDLED;
}
@
MENU_P90_Handler(idP90item) {
    if (
item == MENU_EXIT) {
        
menu_destroy(P90);
        return 
PLUGIN_HANDLED;
    }
    
    if(
FlagsP90[item] == 0){
        
player_item[2][id] = item
    
}
    else if(
FlagsP90[item] > && get_user_flags(id) & FlagsP90[item]){
        
player_item[2][id] = item
    
}

    
Set_Model(id);
    
SaveModels(id);

    
menu_destroy(P90);

    return 
PLUGIN_HANDLED;
}

public 
LoadsModels(id){
    
    new 
pszName[33][64]; get_user_name(idpszName[id], charsmax(pszName));
    new 
pszValue[128];    
    
    if(
nvault_get(g_vaultfmt("%s"pszName[id]), pszValuecharsmax(pszValue))) 
    {
        new 
skinUser[7][32];
        
parse(pszValueskinUser[1], charsmax(skinUser), skinUser[2]);

        
player_item[1][id] = str_to_num(skinUser[1]);
        
player_item[2][id] = str_to_num(skinUser[2]);        
    }
    return 
PLUGIN_CONTINUE;
}
public 
SaveModels(id){
    
    new 
pszName[33][64]; get_user_name(idpszName[id], charsmax(pszName));

    
nvault_set(g_vaultfmt("%s"pszName[id]), fmt("%i %i"player_item[1][id], player_item[2][id]));
    
    return 
PLUGIN_CONTINUE;
}

public 
Set_Model(id) {
    
    new 
piWeapon get_user_weapon(id);
    
    if (
piWeapon == CSW_KNIFE) {
        
        
set_pev(idpev_viewmodel2KnifeModels[player_item[1][id]]);
    }
    if(
piWeapon == CSW_P90) {
        
        
set_pev(idpev_viewmodel2P90Models[player_item[2][id]]);
    }

    return 
PLUGIN_CONTINUE;
}

public 
CurWeapon(id) {
    if (!
is_user_alive(id)) {
        return 
PLUGIN_HANDLED;
    }
    
    new 
weapon get_user_weapon(id);
    
    switch (
weapon) {
        case 
CSW_KNIFE: {
            
Set_Model(id)
        }
        case 
CSW_P90: {
            
Set_Model(id)
        }        
    }

    return 
PLUGIN_CONTINUE;

It's about:
- Using code more wisely,
- optimization,
- shortening the insane functions and lines.

I know, I know, the code is tragic and you can cry over it.
Krystek. is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 05-29-2022 , 11:08   Re: Improving and optimizing this thing
Reply With Quote #2

Why are all KnifeNames and P90Names the same?
__________________
Bugsy is offline
Krystek.
Member
Join Date: May 2022
Old 05-29-2022 , 11:10   Re: Improving and optimizing this thing
Reply With Quote #3

Quote:
Originally Posted by Bugsy View Post
Why are all KnifeNames and P90Names the same?
This is a working name.
Krystek. is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 05-29-2022 , 11:13   Re: Improving and optimizing this thing
Reply With Quote #4

You don't need an array then

PHP Code:
menu_additem(Knife fmt("\d» %s %s"get_user_flags(id) & ADMIN_LEVEL_H "\y(VIP)\w" "\d(VIP)\d"
 
== "Default" "Knife \d×\w Skins"), ""FlagsKnife[i], -1); 
__________________

Last edited by Bugsy; 05-29-2022 at 11:13.
Bugsy is offline
Krystek.
Member
Join Date: May 2022
Old 05-29-2022 , 11:14   Re: Improving and optimizing this thing
Reply With Quote #5

Quote:
Originally Posted by Bugsy View Post
You don't need an array then

PHP Code:
menu_additem(Knife fmt("\d» %s %s"get_user_flags(id) & ADMIN_LEVEL_H "\y(VIP)\w" "\d(VIP)\d"
 
== "Default" "Knife \d×\w Skins"), ""FlagsKnife[i], -1); 
This is a working name, other names will follow later.
Krystek. is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 05-29-2022 , 11:22   Re: Improving and optimizing this thing
Reply With Quote #6

I'd consolidate item data into an enum sized array:

Edit: Added flags
PHP Code:
enum Knives
{
    
DefaultKnife,
    
SomeKnife1,
    
SomeKnife2
}
enum P90s
{
    
DefaultP90,
    
SomeP901,
    
SomeP902
}
enum ItemData
{
    
ItemName64 ],
    
ItemModel64 ],
    
ItemFlags
}

new const 
KnivesItemsKnives ][ ItemData ] =
{
    { 
"Default" "models/v_knife.mdl" },
    { 
"Knife \d×\w Skins" "models/v_knife_boreal_forest.mdl" },
    { 
"Knife \d×\w Skins" "models/v_knife_safari_mesh.mdl" }
};
new const 
P90ItemsP90s ][ ItemData ] =
{
    { 
"Default" "models/v_p90_rabbit.mdl" },
    { 
"P90 \d×\w Skins" "models/v_p90_assimov.mdl" },
    { 
"P90 \d×\w Skins" "models/v_p90_chicken_of_war.mdl" }
};

public 
plugin_precache() 
{
    for ( new 
Knives:kKnifeID DefaultKnife kKnifeID Knives kKnifeID++ )
    {
        
precache_modelKnivesItemskKnifeID ][ ItemModel ] );
    }
    
    for ( new 
P90s:pP90ID DefaultP90 pP90ID P90s pP90ID++ )
    {
        
precache_modelP90ItemspP90ID ][ ItemModel ] );
    }

__________________

Last edited by Bugsy; 05-29-2022 at 19:34.
Bugsy is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 05-29-2022 , 11:31   Re: Improving and optimizing this thing
Reply With Quote #7

CurWeapon
PHP Code:
    switch ( get_user_weapon(id) ) 
    {
        case 
CSW_KNIFE CSW_P90
        {
            
Set_Model(id)
        }    
    } 
Set_Model
PHP Code:
public Set_Model(id
{
    switch ( 
get_user_weapon(id) )
    {
        case 
CSW_KNIFE:
        {
            
set_pev(idpev_viewmodel2KnifeModels[player_item[1][id]]);
        }
        case 
CSW_P90
        {
            
set_pev(idpev_viewmodel2P90Models[player_item[2][id]]);
        }
    }
    
    return 
PLUGIN_CONTINUE;

__________________
Bugsy is offline
Krystek.
Member
Join Date: May 2022
Old 05-29-2022 , 11:57   Re: Improving and optimizing this thing
Reply With Quote #8

Quote:
Originally Posted by Bugsy View Post
I'd consolidate item data into an enum sized array:
PHP Code:
enum Knives
{
    
DefaultKnife,
    
SomeKnife1,
    
SomeKnife2
}
enum P90s
{
    
DefaultP90,
    
SomeP901,
    
SomeP902
}
enum ItemData
{
    
ItemName64 ],
    
ItemModel64 ]
}

new const 
KnivesItemsKnives ][ ItemData ] =
{
    { 
"Default" "models/v_knife.mdl" },
    { 
"Knife \d×\w Skins" "models/v_knife_boreal_forest.mdl" },
    { 
"Knife \d×\w Skins" "models/v_knife_safari_mesh.mdl" }
};
new const 
P90ItemsP90s ][ ItemData ] =
{
    { 
"Default" "models/v_p90_rabbit.mdl" },
    { 
"P90 \d×\w Skins" "models/v_p90_assimov.mdl" },
    { 
"P90 \d×\w Skins" "models/v_p90_chicken_of_war.mdl" }
};

public 
plugin_precache() 
{
    for ( new 
Knives:kKnifeID DefaultKnife kKnifeID Knives kKnifeID++ )
    {
        
precache_modelKnivesItemskKnifeID ][ ItemModel ] );
    }
    
    for ( new 
P90s:pP90ID DefaultP90 pP90ID P90s pP90ID++ )
    {
        
precache_modelP90ItemspP90ID ][ ItemModel ] );
    }

And how do you see it, for example in @MENU?
Krystek. is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 05-29-2022 , 15:25   Re: Improving and optimizing this thing
Reply With Quote #9

Quote:
Originally Posted by Krystek. View Post
And how do you see it, for example in @MENU?
the same way you precache the model, but instead of ItemModel you use ItemName

Last edited by lexzor; 05-29-2022 at 15:25.
lexzor is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 05-29-2022 , 19:34   Re: Improving and optimizing this thing
Reply With Quote #10

I didnt realize you also had separate flags for each, I added that to the above code. If you have any questions on using this, let me know.
__________________
Bugsy is offline
Reply


Thread Tools
Display Modes

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 02:54.


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