AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [Script] Knife Menu (https://forums.alliedmods.net/showthread.php?t=334979)

Yusochan 10-31-2021 11:17

[Script] Knife Menu
 
Hello !

I would like to add a limit. you can choose a knife once per round and the knife will come back to default and after that they will be able to choose a knife.

The code :

PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <fun>
#include <cromchat>
#include <fakemeta>

new g_PLUGIN[] = "Knife Menu"g_VERSION[] = "1.0"g_AUTHOR[] = "L.O.F.I";

new 
FirstKnife[] = "models/frknife/v_firstknife.mdl"SecondKnife[] = "models/frknife/v_secondknife.mdl"TheirdKnife[] = "models/frknife/v_theirdknife.mdl"FourthKnife[] = "models/frknife/v_fourthknife.mdl"DanyKnife[] = "models/frknife/v_danyk.mdl";
new 
boolHaveFirstKf[33], HaveSecondKf[33], HaveTheirdKf[33], HaveFourthKf[33], HaveDanyK[33];

new 
g_pPrefix;

public 
plugin_init() {
    
register_plugin(g_PLUGINg_VERSIONg_AUTHOR);

    
CC_SetPrefix("&x01[&x04FURIEN.NPOWERED.RO&x01]");

    
register_clcmd("say /mknife""Suit");
    
register_clcmd("say_team /mknife""Suit");
    
register_clcmd("say /danyk""DanyKnifeSK");
    
    
register_event("CurWeapon""EVENT_CurWeapon""be""1=1")
}

public 
plugin_precache() {
    
precache_model(FirstKnife);
    
precache_model(SecondKnife);
    
precache_model(TheirdKnife);
    
precache_model(FourthKnife);
    
precache_model(DanyKnife);
}

public 
client_connect(id) {
    
HaveFirstKf[id] = false;
    
HaveSecondKf[id] = false;
    
HaveTheirdKf[id] = false;
    
HaveFourthKf[id] = false;
    
HaveDanyK[id] = false;
    
}

public 
client_disconnect(id) {
    
HaveFirstKf[id] = false;
    
HaveSecondKf[id] = false;
    
HaveTheirdKf[id] = false;
    
HaveFourthKf[id] = false;
    
HaveDanyK[id] = false;
}
public 
client_putinserver(id) {
    
HaveFirstKf[id] = false;
    
HaveSecondKf[id] = false;
    
HaveTheirdKf[id] = false;
    
HaveFourthKf[id] = false;
    
HaveDanyK[id] = false;
}

public 
EVENT_CurWeapon(id) {
    if(
is_user_connected(id)) {
        if(
get_user_weapon(id) == CSW_KNIFE) {
            if(
HaveFirstKf[id]) 
            
set_pev(idpev_viewmodel2FirstKnife)
        }
        if(
get_user_weapon(id) == CSW_KNIFE) {
            if(
HaveSecondKf[id]) 
            
set_pev(idpev_viewmodel2SecondKnife)
        }
        if(
get_user_weapon(id) == CSW_KNIFE) {
            if(
HaveTheirdKf[id]) 
            
set_pev(idpev_viewmodel2TheirdKnife)
        }
        if(
get_user_weapon(id) == CSW_KNIFE) {
            if(
HaveFourthKf[id]) 
            
set_pev(idpev_viewmodel2FourthKnife)
        }
        if(
get_user_weapon(id) == CSW_KNIFE) {
            if(
HaveDanyK[id]) 
            
set_pev(idpev_viewmodel2DanyKnife)
        }
    }
}

public 
DanyKnifeSK(id) {
    new 
name[33];
    
get_user_name(idname32);

    
HaveDanyK[id] = true;
    
EVENT_CurWeapon(id)
    
give_item(id"weapon_knife");
    
//Chat
    
CC_SendMessage(id"%s &x03Here is your knife &x04%s &x01Enjoy !"g_pPrefixname);
}


public 
Suit(id)  
{
    if(!
is_user_alive(id))
    return
    
    new 
menu menu_create("\w[\yFURIEN.NPOWERED.RO\w] \rCHOOSE YOUR KNIFE SKIN !""SettingsKnife")
    
    
menu_additemmenu"\rKnife Skin \w[\yLUMINE\w]""1");  
    
menu_additemmenu"\rKnife Skin \w[\ySLAUGHTER\w]""2");
    
menu_additemmenu"\rKnife Skin \w[\yDEIDARA\w]""3");  
    
menu_additemmenu"\rKnife Skin \w[\yMANTIS\w]""4");

    
menu_setpropmenuMPROP_EXITMEXIT_ALL );   
    
menu_displayidmenu);
}

public 
SettingsKnife(idmenuitem
{
    if (
item == MENU_EXIT
    {
        
menu_destroy(menu
        return 
PLUGIN_HANDLED
    }
    
    new 
data[6], szName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    
    if(!
is_user_alive(id))
    return 
PLUGIN_HANDLED
        
    
switch(key)
    {
        case 
1
        {
            
strip_user_weapons(id);
            
HaveFirstKf[id] = true
            
EVENT_CurWeapon(id)
            
rg_give_item(id"weapon_knife");
            
//Chat
            
CC_SendMessage(id"%s &x03You choosed the &x04LUMINE !"g_pPrefix);
        }
        
        case 
2
        {
            
strip_user_weapons(id);
            
HaveSecondKf[id] = true
            
EVENT_CurWeapon(id)
            
rg_give_item(id"weapon_knife");
            
//Chat
            
CC_SendMessage(id"%s &x03You choosed the &x04SLAUGHTER !"g_pPrefix);
        }
        
        case 
3
        {
            
strip_user_weapons(id);
            
HaveTheirdKf[id] = true
            
EVENT_CurWeapon(id)
            
rg_give_item(id"weapon_knife");
            
//Chat
            
CC_SendMessage(id"%s &x03You choosed the &x04DEIDARA !"g_pPrefix);
        }
        
        case 
4
        {
            
strip_user_weapons(id);
            
HaveFourthKf[id] = true
            
EVENT_CurWeapon(id)
            
rg_give_item(id"weapon_knife");
            
//Chat
            
CC_SendMessage(id"%s &x03You choosed the &x04MANTIS !"g_pPrefix);
        }
    }
    return 
PLUGIN_HANDLED;



Napoleon_be 10-31-2021 12:11

Re: [Script] Knife Menu
 
U only need one boolean for that. Set it to true whenever someone has choosen a knife and set it back to false when a new round is called / player spawns again.

To clean up your code, u could use 1 array to hold all your modelpaths. To precache them, simply use a loop.

PHP Code:

new const szModel[] = {
    
"models/frknife/v_firstknife.mdl",
    
"models/frknife/v_secondknife.mdl"
}; 

PHP Code:

public plugin_precache() {
    for(new 
isizeof(szModel); i++) {
        
precache_model(szModel[i]);
    }



Yusochan 10-31-2021 19:04

Re: [Script] Knife Menu
 
Thank you so much ! i didn't know this one. really !


All times are GMT -4. The time now is 11:34.

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