AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   vip (https://forums.alliedmods.net/showthread.php?t=205414)

GhostMan 01-10-2013 11:50

vip
 
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 :D Especialy "public client_spawn" part :D

AngeIII 01-10-2013 13:30

Re: vip
 
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"


GhostMan 01-13-2013 13:39

Re: vip
 
Anything else?

AngeIII 01-13-2013 17:01

Re: vip
 
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")


All times are GMT -4. The time now is 13:45.

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