Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSreturn of the knife model through the native


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello.
Please tell me how to correctly return the model to the player?


There is a plugin "injector" which replenishes the player's health when he holds a knife and presses "G" (drop weapons)
after the healing animation has passed, the player has a standard knife again.

Injector.sma
Code:

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

#pragma semicolon 1

//Настройки
#define HEAL                25.0       
#define MAXHEALTH        100.0       
#define VIP_AMMO        2               
#define PLR_AMMO        1               
#define FLAG        ADMIN_LEVEL_H       

#define ANIM_USE                0
#define OLD_KN_DRAW                3
#define TIME_ANIM_HEAL        2.0
#define TIME_DRAW_KNF        1.1

#define TASK_HEAL                25071973

#define is_valid_player(%0)    (1 <= %0 <= g_maxplayers)
const m_flNextAttack = 83;

new const v_injectorX[]        = "models/v_injectorX.mdl";
new const p_injectorX[]        = "models/p_injectorX.mdl";

new const v_old_knife[]        = "models/v_knife.mdl";
new const p_old_knife[]        = "models/p_knife.mdl";
                                                                                         
new const heal_sound[]        = { "items/medshot4.wav" };

new shpr_ammo[33];
new g_maxplayers;

public plugin_init()
{       
        register_plugin("Injector X", "1.0", "Deadly|Darkness");
        register_clcmd("drop", "use_inj");
       
        RegisterHam(Ham_Spawn, "player", "ham_spawn_post", 1);
        RegisterHam(Ham_Item_Holster, "weapon_knife", "fw_Knife_Holstered", 1);
       
        g_maxplayers = get_maxplayers();
}

public plugin_precache()
{
        precache_model(v_injectorX);
        precache_model(p_injectorX);
        precache_model(v_old_knife);
        precache_model(p_old_knife);
        precache_sound(heal_sound);

}

public ham_spawn_post(id)
{
        if(get_user_flags(id) & FLAG)
                shpr_ammo[id] = VIP_AMMO;
               
        else shpr_ammo[id] = PLR_AMMO;
}

public use_inj(id)
{
        if(!is_user_alive(id))
                return;

        if(get_user_weapon(id) != CSW_KNIFE || !shpr_ammo[id])
                return;
               
        remove_task(id+TASK_HEAL);
        set_pdata_float(id, m_flNextAttack, TIME_ANIM_HEAL+0.1, 5);

        set_pev(id, pev_viewmodel2, v_injectorX);
        set_pev(id, pev_weaponmodel2, p_injectorX);

        play_weapon_animation(id, ANIM_USE);
        set_task(TIME_ANIM_HEAL, "use_inj2", id+TASK_HEAL);
       
}

public use_inj2(id)
{
        id -= TASK_HEAL;

        if(is_user_alive(id))
        {
                shpr_ammo[id]--;
                set_pev(id, pev_viewmodel2, v_old_knife);
                set_pev(id, pev_weaponmodel2, p_old_knife);
                set_pdata_float(id, m_flNextAttack, TIME_DRAW_KNF, 5);
                play_weapon_animation(id, OLD_KN_DRAW);
                set_hp(id);
        }
}

public fw_Knife_Holstered(weapon)
{
        new id = get_pdata_cbase(weapon, 41, 4);
       
        if(!pev_valid(weapon))
                return HAM_IGNORED;

        if(is_valid_player(id))
                remove_task(id+TASK_HEAL);
       
        return HAM_IGNORED;

}

stock set_hp(plr)
{
        new hp = pev(plr, pev_health);

        if(hp < MAXHEALTH)
        {
                if(hp + HEAL > MAXHEALTH)
                        set_pev(plr, pev_health, MAXHEALTH);
                else set_pev(plr, pev_health, hp + HEAL);
                emit_sound(plr, CHAN_BODY, heal_sound, 1.0, ATTN_NORM, 0, PITCH_NORM);
        }
}

stock play_weapon_animation(const Player, const Sequence)
{
        set_pev(Player, pev_weaponanim, Sequence);
       
        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
        write_byte(Sequence);
        write_byte(pev(Player, pev_body));
        message_end();
}


And there is a second plug-in that replaces the knife models for players, depending on the ftag available to them.


knife_models.sma
Code:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>


#define PLUGIN "buy Weapon Model"
#define VERSION "0.1"
#define AUTHOR "RidL"

#define ADMIN_BAN_TEMP                (1<<21)
#define ADMIN_FLAG_W                  (1<<22)
#define ADMIN_FLAG_X                  (1<<23)


/*---------------EDIT ME------------------*/
new const gsznigModelV[] = "models/buyweaponbs/v_bsknife_nig.mdl"      // 1st person view model
new const gsznigModelP[] = "models/buyweaponbs/p_bsknife_nig.mdl"        // 3rd person view model
new const gszkerModelV[] = "models/buyweaponbs/v_bsknife_ker.mdl"            // 1st person view model
new const gszkerModelP[] = "models/buyweaponbs/p_bsknife_ker.mdl"            // 3rd person view model
new const gszbatModelV[] = "models/buyweaponbs/v_bsknife_bat.mdl"    // 1st person view model
new const gszbatModelP[] = "models/buyweaponbs/p_bsknife_bat.mdl"    // 3rd person view model
/*----------------------------------------*/

new gisznigModelV, gisznigModelP
new giszkerModelV, giszkerModelP
new giszbatModelV, giszbatModelP

new g_round

public plugin_init() {
    register_plugin( PLUGIN, VERSION, AUTHOR )

    register_event("HLTV","round_start","a","1=0","2=0")

    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_nig", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_ker", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_bat", 1 )

    gisznigModelV = engfunc(EngFunc_AllocString,gsznigModelV)
    gisznigModelP = engfunc(EngFunc_AllocString,gsznigModelP)
    giszkerModelV = engfunc(EngFunc_AllocString,gszkerModelV)
    giszkerModelP = engfunc(EngFunc_AllocString,gszkerModelP)
    giszbatModelV = engfunc(EngFunc_AllocString,gszbatModelV)
    giszbatModelP = engfunc(EngFunc_AllocString,gszbatModelP)
}

public plugin_precache() {
    precache_model(gsznigModelV)
    precache_model(gsznigModelP)
    precache_model(gszkerModelV)
    precache_model(gszkerModelP)
    precache_model(gszbatModelV)
    precache_model(gszbatModelP)
}

public round_start() { 

        g_round++;     
}
 

public round_restart() {

        g_round = 0;
}


public HamItemDeploy_nig(iItem){
        static iPlayer;
        iPlayer = get_pdata_cbase(iItem, 41, 4)

        if(~get_user_flags(iPlayer) & ADMIN_BAN_TEMP)  return;
        {
        set_pev_string( iPlayer, pev_viewmodel2, gisznigModelV )
        set_pev_string( iPlayer, pev_weaponmodel2, gisznigModelP )
  }
}

public HamItemDeploy_ker(iItem){
        static iPlayer;
        iPlayer = get_pdata_cbase(iItem, 41, 4)

        if(~get_user_flags(iPlayer) & ADMIN_FLAG_X) return;
        {
        set_pev_string( iPlayer, pev_viewmodel2, giszkerModelV )
        set_pev_string( iPlayer, pev_weaponmodel2, giszkerModelP )
  }
}

public HamItemDeploy_bat(iItem){
        static iPlayer;
        iPlayer = get_pdata_cbase(iItem, 41, 4)

        if(~get_user_flags(iPlayer) & ADMIN_FLAG_W) return;
        {
        set_pev_string( iPlayer, pev_viewmodel2, giszbatModelV )
        set_pev_string( iPlayer, pev_weaponmodel2, giszbatModelP )
  }
}

The problem is that after applying the "injector" the standard knife model is returned, and not installed by the second plugin "knife_models.sma"


My try
Code:

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

#pragma semicolon 1

//Настройки
#define HEAL                25.0       
#define MAXHEALTH        100.0       
#define VIP_AMMO        2               
#define PLR_AMMO        1               
#define FLAG        ADMIN_LEVEL_H       

#define ANIM_USE                0
#define OLD_KN_DRAW                3
#define TIME_ANIM_HEAL        2.0
#define TIME_DRAW_KNF        1.1

#define TASK_HEAL                25071973

#define is_valid_player(%0)    (1 <= %0 <= g_maxplayers)
const m_flNextAttack = 83;

new const v_injectorX[]        = "models/dpinjector/v_injectorX.mdl";
new const p_injectorX[]        = "models/dpinjector/p_injectorX.mdl";

new const v_old_knife[]        = "models/v_knife.mdl";
new const p_old_knife[]        = "models/p_knife.mdl";
                                                               
new const heal_sound[]        = { "items/medshot4.wav" };       

new shpr_ammo[33];
new g_maxplayers;

native set_knife_model(id);  //------------here---------------//

public plugin_init()
{       
        register_plugin("Injector X", "1.0", "Deadly|Darkness");
        register_clcmd("drop", "use_inj");
       
        RegisterHam(Ham_Spawn, "player", "ham_spawn_post", 1);
        RegisterHam(Ham_Item_Holster, "weapon_knife", "fw_Knife_Holstered", 1);
       
        g_maxplayers = get_maxplayers();
}

public plugin_precache()
{
        precache_model(v_injectorX);
        precache_model(p_injectorX);
        precache_model(v_old_knife);
        precache_model(p_old_knife);
        precache_sound(heal_sound);

}

public ham_spawn_post(id)
{
        if(get_user_flags(id) & FLAG)
                shpr_ammo[id] = VIP_AMMO;
               
        else shpr_ammo[id] = PLR_AMMO;
}

public use_inj(id)
{
        if(!is_user_alive(id))
                return;

        if(get_user_weapon(id) != CSW_KNIFE || !shpr_ammo[id])
                return;
               
        remove_task(id+TASK_HEAL);
        set_pdata_float(id, m_flNextAttack, TIME_ANIM_HEAL+0.1, 5);

        set_pev(id, pev_viewmodel2, v_injectorX);
        set_pev(id, pev_weaponmodel2, p_injectorX);

        play_weapon_animation(id, ANIM_USE);
        set_task(TIME_ANIM_HEAL, "use_inj2", id+TASK_HEAL);
       
}

public use_inj2(id)
{
        id -= TASK_HEAL;

        if(is_user_alive(id))
        {
                shpr_ammo[id]--;
                set_knife_model(id);  //------------here---------------//
                set_pdata_float(id, m_flNextAttack, TIME_DRAW_KNF, 5);
                play_weapon_animation(id, OLD_KN_DRAW);
                set_hp(id);
        }
}

public fw_Knife_Holstered(weapon)
{
        new id = get_pdata_cbase(weapon, 41, 4);
       
        if(!pev_valid(weapon))
                return HAM_IGNORED;

        if(is_valid_player(id))
                remove_task(id+TASK_HEAL);
       
        return HAM_IGNORED;

}

stock set_hp(plr)
{
        new hp = pev(plr, pev_health);

        if(hp < MAXHEALTH)
        {
                if(hp + HEAL > MAXHEALTH)
                        set_pev(plr, pev_health, MAXHEALTH);
                else set_pev(plr, pev_health, hp + HEAL);
                emit_sound(plr, CHAN_BODY, heal_sound, 1.0, ATTN_NORM, 0, PITCH_NORM);
        }
}

stock play_weapon_animation(const Player, const Sequence)
{
        set_pev(Player, pev_weaponanim, Sequence);
       
        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
        write_byte(Sequence);
        write_byte(pev(Player, pev_body));
        message_end();
}

knife_models.sma
Code:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>


#define PLUGIN "buy Weapon Model"
#define VERSION "0.1"
#define AUTHOR "RidL"

#define ADMIN_FLAG_V                (1<<21)
#define ADMIN_FLAG_W                  (1<<22)
#define ADMIN_FLAG_X                  (1<<23)


/*---------------EDIT ME------------------*/
new const gsznigModelV[] = "models/buyweaponbs/v_bsknife_nig.mdl"      // 1st person view model
new const gsznigModelP[] = "models/buyweaponbs/p_bsknife_nig.mdl"        // 3rd person view model
new const gszkerModelV[] = "models/buyweaponbs/v_bsknife_ker.mdl"            // 1st person view model
new const gszkerModelP[] = "models/buyweaponbs/p_bsknife_ker.mdl"            // 3rd person view model
new const gszbatModelV[] = "models/buyweaponbs/v_bsknife_bat.mdl"    // 1st person view model
new const gszbatModelP[] = "models/buyweaponbs/p_bsknife_bat.mdl"    // 3rd person view model
/*----------------------------------------*/

new gisznigModelV, gisznigModelP
new giszkerModelV, giszkerModelP
new giszbatModelV, giszbatModelP

new g_round

public  plugin_natives ( ){
  register_native("set_knife_model", "HamItemDeploy_nig", 1)
  register_native("set_knife_model", "HamItemDeploy_ker", 1)
  register_native("set_knife_model", "HamItemDeploy_bat", 1)
   
}


public plugin_init() {
    register_plugin( PLUGIN, VERSION, AUTHOR )

    register_event("HLTV","round_start","a","1=0","2=0")

    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_nig", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_ker", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_bat", 1 )

    gisznigModelV = engfunc(EngFunc_AllocString,gsznigModelV)
    gisznigModelP = engfunc(EngFunc_AllocString,gsznigModelP)
    giszkerModelV = engfunc(EngFunc_AllocString,gszkerModelV)
    giszkerModelP = engfunc(EngFunc_AllocString,gszkerModelP)
    giszbatModelV = engfunc(EngFunc_AllocString,gszbatModelV)
    giszbatModelP = engfunc(EngFunc_AllocString,gszbatModelP)
}

public plugin_precache() {
    precache_model(gsznigModelV)
    precache_model(gsznigModelP)
    precache_model(gszkerModelV)
    precache_model(gszkerModelP)
    precache_model(gszbatModelV)
    precache_model(gszbatModelP)
}

public round_start() { 

        g_round++;     
}
 

public round_restart() {

        g_round = 0;
}


public HamItemDeploy_nig(iItem){
        static iPlayer;
        iPlayer = get_pdata_cbase(iItem, 41, 4)

        if(~get_user_flags(iPlayer) & ADMIN_FLAG_V) return;
        {
        set_pev_string( iPlayer, pev_viewmodel2, gisznigModelV )
        set_pev_string( iPlayer, pev_weaponmodel2, gisznigModelP )
  }
}

public HamItemDeploy_ker(iItem){
        static iPlayer;
        iPlayer = get_pdata_cbase(iItem, 41, 4)

        if(~get_user_flags(iPlayer) & ADMIN_FLAG_X) return;
        {
        set_pev_string( iPlayer, pev_viewmodel2, giszkerModelV )
        set_pev_string( iPlayer, pev_weaponmodel2, giszkerModelP )
  }
}

public HamItemDeploy_bat(iItem){
        static iPlayer;
        iPlayer = get_pdata_cbase(iItem, 41, 4)

        if(~get_user_flags(iPlayer) & ADMIN_FLAG_W) return;
        {
        set_pev_string( iPlayer, pev_viewmodel2, giszbatModelV )
        set_pev_string( iPlayer, pev_weaponmodel2, giszbatModelP )
  }
}

please help to do it correctly, I will be very grateful.

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...