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

Menu knife


  
 
 
Thread Tools Display Modes
Author Message
Podbot
Senior Member
Join Date: Apr 2010
Old 12-07-2010 , 13:15   Menu knife
#1

Bonjour à tous, j'aimerais créer un plugin à partie de se lien: https://forums.alliedmods.net/showthread.php?t=108182
Je voudrais un plugin qui permette de taper /knife et qu'un menu avec différents couteau s'ouvre. En sélectionnant le cut 1, on pourrait avoir un cut qui à été auparavant installé sur le serveur.
Podbot is offline
bboygrun
CHOMP
Join Date: May 2010
Location: France
Old 12-07-2010 , 13:35   Re: Menu knife
#2

Le code de Benji est bien codé, https://forums.alliedmods.net/showpo...93&postcount=7

Tu as juste à remplacer le(s) dossier(s) dans lequel(s) se trouve(nt) ton/tes ancien(s) couteau(x)
__________________
bboygrun is offline
Podbot
Senior Member
Join Date: Apr 2010
Old 12-07-2010 , 16:10   Re: Menu knife
#3

Ok, et dans cette partie:
Quote:
public plugin_precache()
{
precache_model("models/v_matraque.mdl")
precache_model("models/v_tazer.mdl")
precache_model("models/v_knife.mdl")
}

public choix_couteau(id)
{
if(is_user_alive(id) && get_user_team(id) == 2)
{
new menu = menu_create("\w Choisi ton couteau", "menucut_handler");
menu_additem(menu, "\wCouteau !", "1", 0);
menu_additem(menu, "\wMatraque !", "2", 0);
menu_additem(menu, "\wTazer !", "3", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
Le couteau c'est bien le fichier knife.mdl ? Et le v_knife.mdl ne devrait pas être avant le matraque.mdl ? Cela n'a pas d'importance pour l'ordre des .mdl ?
Et jusqu'a combien de cut puis-je mettre ?

PS: bboygrun, je kiff ton image o_O <3
Podbot is offline
Old 12-07-2010, 16:19
bboygrun
This message has been deleted by bboygrun. Reason: Lag
bboygrun
CHOMP
Join Date: May 2010
Location: France
Old 12-07-2010 , 16:21   Re: Menu knife
#4

Ben par exemple tu pourrais mettre 75 models de couteaux, mais je pense que tu ne vas pas mettre 75 models ^^, dis moi combien de model tu vas faire en tout et je te continuerai ce plugin ^^.

Oui le couteau est bien le fichier v_knife.mdl
L'ordre n'a aucune importance plugin_precache( ) représente ce qui va être télécharger, donc tu peux le mettre dans n'importe quel ordre ça n'a pas d'importance ^^.

HS : Merci (: .
__________________
bboygrun is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 12-07-2010 , 18:20   Re: Menu knife
#5

Non, le plugin est pas super bien codé... plusieurs erreurs
Le mieux serait d'ajouter dynamiquement les models, en les renseignant dans un fichier .ini
__________________
- tired and retired -

- my plugins -

Last edited by ConnorMcLeod; 12-08-2010 at 16:26.
ConnorMcLeod is offline
renard26
Member
Join Date: Nov 2010
Old 12-08-2010 , 00:37   Re: Menu knife
#6

J'ai essaye mais ça marche juste pour les ct.

Code:
#include <amxmodx>
#include <engine> 
#include <fun>
#include <cstrike>

new Choix 

public plugin_init()
{
    register_clcmd("say /knife", "choix_couteau")
    register_clcmd("/knife", "choix_couteau")
    register_clcmd("knife", "choix_couteau")
    register_clcmd("say /cut", "choix_couteau")
    register_clcmd("cut", "choix_couteau")
    register_clcmd("/cut", "choix_couteau")  
    register_event("CurWeapon", "curweapon", "be", "1=1")
}

public plugin_precache() 
{ 
    precache_model("models/v_halove.mdl") 
    precache_model("models/v_halobl.mdl")
} 

public choix_couteau(id)
{
    if(is_user_alive(id) && get_user_team(id) == 2)
    {
        new menu = menu_create("\w Choisi ton couteau", "menucut_handler");
        menu_additem(menu, "\wHalo Bleu !", "1", 0);
        menu_additem(menu, "\wHalo Vert !", "2", 0);
        menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
        menu_display(id, menu, 0);
    }
}

public menucut_handler(id, menu, item)
{
    if( item == MENU_EXIT )
        return PLUGIN_HANDLED;
    
    new data[6], iName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);    
    
    switch(str_to_num(data))
    {
        case 1:
        {
            Choix = 1
        }
        case 2:
        {        
            Choix = 2
        }
    }
    engclient_cmd(id,"weapon_knife")
    return PLUGIN_HANDLED;
}

public curweapon(id)
{
    new clip, ammo
    if(get_user_team(id) == 2 && get_user_weapon(id,clip,ammo) == CSW_KNIFE)
    {
        switch(Choix)
        {
            case 1: entity_set_string(id, EV_SZ_viewmodel, "models/v_halobl.mdl");
            case 2: entity_set_string(id, EV_SZ_viewmodel, "models/v_halove.mdl");
        }
    }
}
Merci de votre aide
renard26 is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 12-08-2010 , 01:17   Re: Menu knife
#7

Voir plus bas.
__________________
- tired and retired -

- my plugins -

Last edited by ConnorMcLeod; 12-08-2010 at 16:27.
ConnorMcLeod is offline
renard26
Member
Join Date: Nov 2010
Old 12-08-2010 , 02:44   Re: Menu knife
#8

ok J'essayerai merci.
renard26 is offline
Fr33m@n
Veteran Member
Join Date: May 2008
Location: France Marne
Old 12-08-2010 , 04:09   Re: Menu knife
#9

CurWeapon --> Ham_Item_Deploy
Fr33m@n is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 12-08-2010 , 11:07   Re: Menu knife
#10

Quote:
Originally Posted by Fr33m@n View Post
CurWeapon --> Ham_Item_Deploy
Convernant le couteau, ça revient au même car le message CurWeapon n'est envoyé qu'1 seule fois au deploy, donc dans ce cas précis il faudrait ensuite retrouver l'id du joueur en partant de l'index du couteau, c'est donc très bien comme ça

Si on voulait par exemple bloquer le précache du model par défaut, il faudrait changer le model dès le deploy mais ici ce n'est pas le cas.


Edit :

Ca a l'air de fonctionner plutôt pas mal :
J'ai utilisé Ham pour ajouter l'effet Deploy et du coup j'ai utilisé Deploy pour définir le model.

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

#define MAX_MODEL_PATH_LENGTH 64
#define MAX_MODEL_DESCRIPTION 32

#define XO_WEAPON             4
#define m_pPlayer             41
#define m_fWeaponState        74
#define m_flDeployedTime    76

#define XO_PLAYER         5
#define m_pActiveItem    373
#define m_iUserPrefs     510

const HAS_SHIELD 1<<24

#define HasShield(%0)    ( get_pdata_int(%0, m_iUserPrefs, XO_PLAYER) & HAS_SHIELD )

#define KNIFE_DRAW            3

#define MAX_PLAYERS        32
new g_iKnifeModel[MAX_PLAYERS+1]

new 
g_iMenu = -1
new Array:g_aKnivesModels

public plugin_init()
{
    
register_plugin("Knife Models""0.3.2""ConnorMcLeod")
}

public 
plugin_end()
{
    if( 
g_aKnivesModels != Invalid_Array )
    {
        
ArrayDestroy(g_aKnivesModels)
    }
}

public 
plugin_precache() 
{
    new 
szConfigFile[64]
    
get_localinfo("amxx_configsdir"szConfigFilecharsmax(szConfigFile))
    
add(szConfigFilecharsmax(szConfigFile), "/knives_models.ini")
    new 
fp fopen(szConfigFile"r")
    if( 
fp )
    {
        new 
szDatas[MAX_MODEL_PATH_LENGTH+MAX_MODEL_DESCRIPTION+8], 
            
szModel[MAX_MODEL_PATH_LENGTH], 
            
szModelName[MAX_MODEL_DESCRIPTION],
            
szDefaultModel[4]
        new 
szData[6], iModelsCountiParsed
        
while( !feof(fp) )
        {
            
fgets(fpszDatascharsmax(szDatas))
            
trimszDatas )
            if( !
szDatas[0] || szDatas[0] == '/' || szDatas[0] == '#' )
            {
                continue
            }
            
iParsed parse(    szDatas
                        
szModelcharsmax(szModel), 
                        
szModelNamecharsmax(szModelName),
                        
szDefaultModelcharsmax(szDefaultModel))

            if( (
iParsed == && szDefaultModel[0] == '1') || file_exists(szModel) )
            {
                if( 
g_iMenu == -)
                {
                    
EnablePlugin()
                }
                
formatex(szDatacharsmax(szData), "%d", ++iModelsCount)
                
menu_additem(g_iMenuszModelNameszData)
                
ArrayPushString(g_aKnivesModelsszModel)
                
precache_model(szModel)
            }
        }
        if( 
g_aKnivesModels != Invalid_Array && ArraySize(g_aKnivesModels) < 10 )
        {
            
menu_setprop(g_iMenuMPROP_PERPAGE9)
        }
        
fclose(fp)
    }
}

EnablePlugin()
{
    
g_iMenu menu_create("Knife Model Menu :""KnifeModelMenuCallBack")
    
menu_setprop(g_iMenuMPROP_NUMBER_COLOR"\y")

    
g_aKnivesModels ArrayCreateMAX_MODEL_PATH_LENGTH )

    
RegisterHam(Ham_Item_Deploy"weapon_knife""CKnife_Deploy"1)

    
register_clcmd("say /knife""ClCmd_OpenKnifeMenu")
    
register_clcmd("say_team /knife""ClCmd_OpenKnifeMenu")
}

public 
client_putinserverid )
{
    
g_iKnifeModel[id] = 0
}

public 
ClCmd_OpenKnifeMenu(id)
{
    
menu_display(idg_iMenu)
}

public 
KnifeModelMenuCallBack(idiMenuiItem)
{
    if( 
iItem != MENU_EXIT )
    {
        new 
szData[6], szName[2]
        new 
iAccesscallback
        menu_item_getinfo
(g_iMenuiItemiAccessszDatacharsmax(szData), szNamecharsmax(szName), callback)   

        
g_iKnifeModel[id] = str_to_num(szData)-1
        
new szModel[MAX_MODEL_PATH_LENGTH]
        
ArrayGetString(g_aKnivesModelsg_iKnifeModel[id], szModelcharsmax(szModel))
        if( 
get_user_weapon(id) == CSW_KNIFE && !HasShield(id) )
        {
            new 
iWeapon get_pdata_cbase(idm_pActiveItemXO_PLAYER)
            if( 
get_gametime() - get_pdata_float(iWeaponm_flDeployedTimeXO_WEAPON) <= 1.5 )
            {
                
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player=id)
                {
                    
write_byte(KNIFE_DRAW)
                    
write_bytepev(idpev_body) )
                }
                
message_end()
            }

            
ExecuteHamB(Ham_Item_DeployiWeapon)
        }
        new 
iCurrentPageosef
        player_menu_info
(idosefosefiCurrentPage)
        
menu_display(idg_iMenuiCurrentPage)
    }
    return 
PLUGIN_HANDLED
}

public 
CKnife_DeployiKnife )
{
    new 
id get_pdata_cbase(iKnifem_pPlayerXO_WEAPON)
    if( !
HasShield(id) )
    {
        new 
szModel[MAX_MODEL_PATH_LENGTH]
        
ArrayGetString(g_aKnivesModelsg_iKnifeModel[id], szModelcharsmax(szModel))
        
set_pev(idpev_viewmodel2szModel)
    }

Code:
// "Fichier" "Description" "0/1" 1 indique que le fichier existe par défaut, models/v_knife_r.mdl par exemple

"models/v_knife.mdl" "Default Model" "1"
"models/v_crowbar.mdl" "Barre a Mine Half-Life" "1"
"models/v_knife_r.mdl" "Couteau Cs1.5" "1"
"models/v_halobl.mdl" "Halo Bleu"
"models/v_halove.mdl" "Halo Vert"
__________________
- tired and retired -

- my plugins -

Last edited by ConnorMcLeod; 12-09-2010 at 02:08.
ConnorMcLeod is offline
 



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 14:00.


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