Raised This Month: $ Target: $400
 0% 

vip


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
GhostMan
Senior Member
Join Date: Jun 2012
Old 01-10-2013 , 11:50   vip
Reply With Quote #1

What optimisation suggestions you could give me?

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

#define PLUGIN "VIP Model"
#define VERSION "1.0"
#define AUTHOR "Gh0stMan"

#define VIP_ACCESS ADMIN_LEVEL_H

new bool:vip_model[33]
new 
bool:def_model[33]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_Spawn"player""client_spawn"1)
    
    
register_clcmd("say /model""vipmodelmenu");
    
    
register_dictionary("vipmodel.txt");
}

public 
plugin_precache()
{
    
precache_model("models/player/leet_t_vip/leet_t_vip.mdl")
    
precache_model("models/player/gign_ct_vip/gign_ct_vip.mdl")
}

public 
client_putinserver(id)
{
    
vip_model[id] = true
    def_model
[id] = false
}

public 
client_disconnect(id)
{
    
vip_model[id] = false
    def_model
[id] = false
}

public 
client_spawn(id)
{
    if(!
is_user_connected(id) || !is_user_alive(id))
        return
    
    if(
get_user_flagsid ) & VIP_ACCESS)
    {
        if(
def_model[id])
        {
            
cs_reset_player_model(id)
        }
        else if(
vip_model[id])
        {
            switch(
cs_get_user_team(id))
            {
                case 
CS_TEAM_T:
                    
cs_set_player_model(id"leet_t_vip")
                    
                case 
CS_TEAM_CT:
                    
cs_set_player_model(id"gign_ct_vip")
            }
        }
    }
    else
    {
        
cs_reset_player_model(id)
    }
}

public 
vipmodelmenu(id)
{
    if(
get_user_flagsid ) & VIP_ACCESS)
    {
        static 
ItemMenu[64];
        
        
formatex(ItemMenucharsmaxItemMenu ), "%L"id"MENU_NAME")
        new 
iMenu menu_create(ItemMenu"menu_handler");
        
        if (!
vip_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_VIP")
            
menu_additem(iMenuItemMenu"1")
        }
        else if (
vip_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_VIP_INUSE")
            
menu_additem(iMenuItemMenu"1")
        }
        
        if (!
def_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_DEF")
            
menu_additem(iMenuItemMenu"2")
        }
        else if (
def_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_DEF_INUSE")
            
menu_additem(iMenuItemMenu"2")
        }
        
        
menu_setpropiMenuMPROP_EXITMEXIT_ALL );
        
menu_setpropiMenuMPROP_NUMBER_COLOR"\r" );
        
menu_setpropiMenuMPROP_BACKNAME"Back" );
        
menu_setpropiMenuMPROP_NEXTNAME"Next" );
        
menu_setpropiMenuMPROP_EXITNAME"Quit" );
        
menu_setpropiMenuMPROP_PERPAGE);
        
menu_displayidiMenu );
    }
    else
    {
        
client_print(idprint_chat"%L"id"VIP_NOACCESS");
    }
}

public 
menu_handler (idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        
        return 
PLUGIN_HANDLED;
    }
        
    new 
data[6], iName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,5iName63callback);
    
    new 
key str_to_num(data);
    switch(
key)
    {
        case 
1:
        {
            if(!
vip_model[id])
            {
                
client_print(idprint_chat"%L"id"VIP_MODEL_NEXT");
            }
            
            
vip_model[id] = true
            def_model
[id] = false
        
}
        case 
2:
        {
            if(!
def_model[id])
            {
                
client_print(idprint_chat"%L"id"DEF_MODEL_NEXT");
            }
            
            
vip_model[id] = false
            def_model
[id] = true
        
}
    }
    return 
PLUGIN_HANDLED;

Code works, but it's a little bit messy Especialy "public client_spawn" part

Last edited by GhostMan; 01-10-2013 at 11:52.
GhostMan is offline
AngeIII
Senior Member
Join Date: Sep 2007
Location: Latvia
Old 01-10-2013 , 13:30   Re: vip
Reply With Quote #2

if(!is_user_connected(id) || !is_user_alive(id))
return
is_user_alive also check if is user connected

you are using new menu system
so you should delete the menu in handler before return.

PHP Code:
...           
            
vip_model[id] = false
            def_model
[id] = true
        
}
    }
    return 
PLUGIN_HANDLED


change to:

PHP Code:
            vip_model[id] = false
            def_model
[id] = true
        
}
    }
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED
also no need to clear on client_disconnect

public
client_disconnect(id)
{
vip_model[id] = false
def_model
[id] = false
}

cause anyway when user connecting you set new values. so you can delete them

also:

PHP Code:
        if (!vip_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_VIP")
            
menu_additem(iMenuItemMenu"1")
        }
        else if (
vip_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_VIP_INUSE")
            
menu_additem(iMenuItemMenu"1")
        }
        
        if (!
def_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_DEF")
            
menu_additem(iMenuItemMenu"2")
        }
        else if (
def_model[id])
        {
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id"MENU_DEF_INUSE")
            
menu_additem(iMenuItemMenu"2")
        } 
can be changed to(not tested):

PHP Code:
        
            formatex
(ItemMenucharsmax(ItemMenu), "%L"id,(vip_model[id])?"MENU_VIP_INUSE":"MENU_VIP")
            
menu_additem(iMenuItemMenu"1")
            
formatex(ItemMenucharsmax(ItemMenu), "%L"id,(def_model[id])?"MENU_DEF_INUSE":"MENU_DEF")
            
menu_additem(iMenuItemMenu"2"
__________________
skype: pavle_ivanof
-=ThQ=-
PRIVATE SUPPORT = PAID SUPPORT

Last edited by AngeIII; 01-10-2013 at 13:38.
AngeIII is offline
Send a message via Skype™ to AngeIII
GhostMan
Senior Member
Join Date: Jun 2012
Old 01-13-2013 , 13:39   Re: vip
Reply With Quote #3

Anything else?
GhostMan is offline
AngeIII
Senior Member
Join Date: Sep 2007
Location: Latvia
Old 01-13-2013 , 17:01   Re: vip
Reply With Quote #4

you can use only one boolean array.
for example
new bool:vip_model[33];
if they want to use VIP model so boolean equals to TRUE
if not FALSE.

and if you do this:
you can change:
formatex(ItemMenu, charsmax(ItemMenu), "VIP MODEL[%s]",(vip_model[id])?"\rON\w":"OFF")
menu_additem(iMenu, ItemMenu, "1")
__________________
skype: pavle_ivanof
-=ThQ=-
PRIVATE SUPPORT = PAID SUPPORT
AngeIII is offline
Send a message via Skype™ to AngeIII
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 13:45.


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