WeaponList SlotID

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
Dennis
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 177
Регистриран на: 25 Дек 2018, 04:14
Се отблагодари: 4 пъти
Получена благодарност: 10 пъти

WeaponList SlotID

Мнение от Dennis » 10 Мар 2019, 02:08

Здравейте,

Бих ли могъл под SlotID (5 - c4) да създам други други итеми ?

Код за потвърждение: Избери целия код

string	 WeaponName
byte	 PrimaryAmmoID
byte	 PrimaryAmmoMaxAmount
byte	 SecondaryAmmoID
byte	 SecondaryAmmoMaxAmount
byte	 SlotID
byte	 NumberInSlot
byte	 WeaponID
byte	 Flags
Както бих могъл "Custom Sprite" да създам за определените SlotID "Weapons", бих ли могъл да създам примерно друг итем в SlotID-5 ?

Ако имах мод който би имал "раница" и в нея да има употреби, бих ли могъл да ги инвентаризирам някъде из WeaponList ?

Код за потвърждение: Избери целия код

new MsgIndexWeaponList;

public plugin_init()
{
    RegisterHam( Ham_Item_AddToPlayer, "weapon_knife", "OnAddToPlayerKnife", .Post = true );
    RegisterHam( Ham_Item_ItemSlot, "weapon_knife", "OnItemSlotKnife" );
    
    MsgIndexWeaponList = get_user_msgid( "WeaponList" );
}

public OnAddToPlayerKnife( const item, const player )
{
    if( pev_valid( item ) && is_user_alive( player ) ) // just for safety.
    {
        message_begin( MSG_ONE, MsgIndexWeaponList, .player = player );
        {
            write_string("weapon_ArkFlare");    // WeaponName
            write_byte( -1 );                   // PrimaryAmmoID
            write_byte( -1 );                   // PrimaryAmmoMaxAmount
            write_byte( -1 );                   // SecondaryAmmoID
            write_byte( -1 );                   // SecondaryAmmoMaxAmount
            write_byte(4);                    // SlotID (0...N)    <== Changed here (was 2)
            write_byte( 1 );                    // NumberInSlot (1...N)
            write_byte( CSW_KNIFE );            // WeaponID
            write_byte( 0 );                    // Flags
        }
        message_end();
    }
}

public OnItemSlotKnife( const item )
{
    SetHamReturnInteger(5);
    return HAM_SUPERCEDE;
}
Това което намерих е..
https://forums.alliedmods.net/showthread.php?t=175632
https://wiki.alliedmods.net/Half-Life_1 ... WeaponList

Код за потвърждение: Избери целия код

#include <amxmodx>  
#include <hamsandwich>  
#include <fakemeta>  

new MsgIndexWeaponList;  

public plugin_precache()  
{  
    precache_generic( "sprites/weapon_ArkFlare.txt" );  
    precache_generic( "sprites/640hud19.spr" );  
    precache_generic( "sprites/640hud20.spr" );  
}  

public plugin_init()  
{  
    RegisterHam( Ham_Item_AddToPlayer, "weapon_knife", "OnAddToPlayerKnife", .Post = true );  
    RegisterHam( Ham_Item_ItemSlot, "weapon_knife", "OnItemSlotKnife" );  

    register_clcmd( "weapon_ArkFlare", "ClientCommand_SelectFlare" );  

    MsgIndexWeaponList = get_user_msgid( "WeaponList" );  
}  

public ClientCommand_SelectFlare( const client )  
{  
    engclient_cmd( client, "weapon_knife" );  
}  

public OnAddToPlayerKnife( const item, const player )  
{  
    if( pev_valid( item ) && is_user_alive( player ) ) // just for safety.  
    {  
        message_begin( MSG_ONE, MsgIndexWeaponList, .player = player );  
        {  
            write_string( "weapon_ArkFlare" );  // WeaponName  
            write_byte( -1 );                   // PrimaryAmmoID  
            write_byte( -1 );                   // PrimaryAmmoMaxAmount  
            write_byte( -1 );                   // SecondaryAmmoID  
            write_byte( -1 );                   // SecondaryAmmoMaxAmount  
            write_byte( 4 );                    // SlotID (0...N)  
            write_byte( 1 );                    // NumberInSlot (1...N)  
            write_byte( CSW_KNIFE );            // WeaponID  
            write_byte( 0 );                    // Flags  
        }  
        message_end();  
    }  
}  

public OnItemSlotKnife( const item )  
{  
    SetHamReturnInteger( 5 );  
    return HAM_SUPERCEDE;  
}  
Но..
The drawbacks are :
Must be based on an original weapon - Meaning you replace an existing weapon, you can't add
Therefore you can have only 29 new weapons at once - which is actually good and you could handle different set of weapons per player
Slot redirection might not work always properly - Discovered while writing the tutorial, it doesn't work well

Аватар
<VeCo>
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 145
Регистриран на: 28 Яну 2019, 19:01
Се отблагодари: 11 пъти
Получена благодарност: 80 пъти
Обратна връзка:

WeaponList SlotID

Мнение от <VeCo> » 10 Мар 2019, 02:53

Едва ли ще намериш по-добър метод от това.
Замества друго оръжие, CSW_GLOCK с индекс 2 не се използва от играта, интересно дали може да заместиш него (сигурно не).
В твоя случай ще трябва и да блокираш стрелянето. Промяната на слота може да не работи винаги, както пише в цитата, но все пак, оръжието ще го има.
:pepo_think3:

Публикувай отговор

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта