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

Return of the knife model Please Help


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Vaim
Member
Join Date: Feb 2019
Old 01-17-2021 , 15:13   Return of the knife model Please Help
Reply With Quote #1

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 custom model"knife_models.sma"


Help please, I will be very grateful
Vaim is offline
LondoN
Senior Member
Join Date: Dec 2015
Location: Roman, Romania.
Old 01-17-2021 , 18:21   Re: Return of the knife model Please Help
Reply With Quote #2

set knife model in the Ham_Item_Deploy
__________________
LondoN is offline
Vaim
Member
Join Date: Feb 2019
Old 01-17-2021 , 19:09   Re: Return of the knife model Please Help
Reply With Quote #3

Quote:
Originally Posted by LondoN View Post
set knife model in the Ham_Item_Deploy
I do not quite understand, can you please for more details?
Vaim is offline
Vaim
Member
Join Date: Feb 2019
Old 01-18-2021 , 02:00   Re: Return of the knife model Please Help
Reply With Quote #4

plugin "knife_models" uses 3 knife models.
I need to return one of three models to the player.
I thought it could be solved through my own, but I absolutely do not understand how to do it correctly.
Vaim is offline
Vaim
Member
Join Date: Feb 2019
Old 01-18-2021 , 08:46   Re: Return of the knife model Please Help
Reply With Quote #5

I tried like this

knife_model.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_CKnife", 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_CKnife", 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_CKnife(iItem){
        static iPlayer;
        iPlayer = get_pdata_cbase(iItem, 41, 4)

        if(get_user_flags(iPlayer) & ADMIN_FLAG_V)
        {
        set_pev_string( iPlayer, pev_viewmodel2, gisznigModelV )
        set_pev_string( iPlayer, pev_weaponmodel2, gisznigModelP )

            }else if(get_user_flags(iPlayer) & ADMIN_FLAG_X) 
                     {
                     set_pev_string( iPlayer, pev_viewmodel2, giszkerModelV )
                     set_pev_string( iPlayer, pev_weaponmodel2, giszkerModelP )

                         }else if(get_user_flags(iPlayer) & ADMIN_FLAG_W) 
                                  {
                                  set_pev_string( iPlayer, pev_viewmodel2, giszbatModelV )
                                  set_pev_string( iPlayer, pev_weaponmodel2, giszbatModelP )

                                      }else{

            return;

     }
}

injector.sma
Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#pragma semicolon 1

//Настройки
#define HEAL		25.0	//Количество здоровья, которое будет восстановлено
#define MAXHEALTH	100.0	//Порог здоровья
#define VIP_AMMO	2		//Количество шприцов для VIP'a 
#define PLR_AMMO	1		//Количество шприцов для обычного игрока
#define FLAG	ADMIN_LEVEL_H	// Флаг VIP'a

#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"; // v_ модель шприца
new const p_injectorX[]	= "models/dpinjector/p_injectorX.mdl"; // p_ модель шприца

new const v_old_knife[]	= "models/v_knife.mdl"; // v_ модель ножа, которая возвращается после использования 
new const p_old_knife[]	= "models/p_knife.mdl"; // p_ модель ножа, которая возвращается после использования
											   // Если несколько моделей ножа, то возвращайте модель через натив!
new const heal_sound[]	= { "items/medshot4.wav" };	// Звук при лечении

new shpr_ammo[33];
new g_maxplayers;

native set_knife_model(id);

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);
		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();
}

got errors in the console
Code:
L 01/18/2021 - 16:36:49: Invalid player id -1
L 01/18/2021 - 16:36:49: [AMXX] Displaying debug trace (plugin "buy_weap0n_model.amxx", version "0.1")
L 01/18/2021 - 16:36:49: [AMXX] Run time error 10: native error (native "get_user_flags")
L 01/18/2021 - 16:36:49: [AMXX]    [0] buy_weap0n_model.sma::HamItemDeploy_CKnife (line 76)
L 01/18/2021 - 16:36:49: Unhandled dynamic native error
L 01/18/2021 - 16:36:49: [AMXX] Displaying debug trace (plugin "health_injector.amxx", version "1.0")
L 01/18/2021 - 16:36:49: [AMXX] Run time error 10: native error (native "set_knife_model")
L 01/18/2021 - 16:36:49: [AMXX]    [0] health_injector.sma::use_inj2 (line 92)

tell me what I'm doing wrong?


Thank you.
Vaim is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 01-18-2021 , 10:18   Re: Return of the knife model Please Help
Reply With Quote #6

Code:
register_native("set_knife_model", "HamItemDeploy_CKnife", 1)

Code:
register_native("set_knife_model", "_set_knife_model")

Code:
public _set_knife_model(plugin_id, argc) {     new id = get_param(1)     if (!is_user_alive(id))         return 0     engclient_cmd(id, "weapon_knife")     new flags = get_user_flags(id)     if(flags & ADMIN_FLAG_V)     {         set_pev_string( id, pev_viewmodel2, gisznigModelV )         set_pev_string( id, pev_weaponmodel2, gisznigModelP )     }     else if(flags & ADMIN_FLAG_X)     {         set_pev_string( id, pev_viewmodel2, giszkerModelV )         set_pev_string( id, pev_weaponmodel2, giszkerModelP )     }     else if(flags & ADMIN_FLAG_W)     {         set_pev_string( id, pev_viewmodel2, giszbatModelV )         set_pev_string( id, pev_weaponmodel2, giszbatModelP )     }     return 1 }
__________________









Last edited by CrazY.; 01-18-2021 at 10:20.
CrazY. is offline
Vaim
Member
Join Date: Feb 2019
Old 01-18-2021 , 15:40   Re: Return of the knife model Please Help
Reply With Quote #7

Quote:
Originally Posted by CrazY. View Post
Code:
register_native("set_knife_model", "HamItemDeploy_CKnife", 1)

Code:
register_native("set_knife_model", "_set_knife_model")

Code:
public _set_knife_model(plugin_id, argc) {     new id = get_param(1)     if (!is_user_alive(id))         return 0     engclient_cmd(id, "weapon_knife")     new flags = get_user_flags(id)     if(flags & ADMIN_FLAG_V)     {         set_pev_string( id, pev_viewmodel2, gisznigModelV )         set_pev_string( id, pev_weaponmodel2, gisznigModelP )     }     else if(flags & ADMIN_FLAG_X)     {         set_pev_string( id, pev_viewmodel2, giszkerModelV )         set_pev_string( id, pev_weaponmodel2, giszkerModelP )     }     else if(flags & ADMIN_FLAG_W)     {         set_pev_string( id, pev_viewmodel2, giszbatModelV )         set_pev_string( id, pev_weaponmodel2, giszbatModelP )     }     return 1 }
does not work, the knife models are not replaced but the standard one is and the knife is not returned
Vaim is offline
Vaim
Member
Join Date: Feb 2019
Old 01-30-2021 , 07:46   Re: Return of the knife model Please Help
Reply With Quote #8

Hi, the topic is still relevant.
Tell me how to correctly implement a custom model return.

Example of incorrect work on video
https://drive.google.com/file/d/1HkY...ew?usp=sharing


Using the knife replacement plugin OciXCrom:
https://forums.alliedmods.net/showthread.php?t=293632

Last edited by Vaim; 01-30-2021 at 07:55.
Vaim is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 01-30-2021 , 08:00   Re: Return of the knife model Please Help
Reply With Quote #9

PHP 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 
v_old_knife[33][64];
new 
p_old_knife[33][64];
                                              
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_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(idm_flNextAttackTIME_ANIM_HEAL+0.15);

    
pev(idpev_viewmodel2v_old_knife[id], charsmax(v_old_knife[]));
    
pev(idpev_weaponmodel2p_old_knife[id], charsmax(p_old_knife[]));

    
set_pev(idpev_viewmodel2v_injectorX);
    
set_pev(idpev_weaponmodel2p_injectorX);

    
play_weapon_animation(idANIM_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(idpev_viewmodel2v_old_knife[id]);
        
set_pev(idpev_weaponmodel2p_old_knife[id]);
        
set_pdata_float(idm_flNextAttackTIME_DRAW_KNF5);
        
play_weapon_animation(idOLD_KN_DRAW);
        
set_hp(id);
    }
}

public 
fw_Knife_Holstered(weapon)
{
    new 
id get_pdata_cbase(weapon414);
    
    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(plrpev_health);

    if(
hp MAXHEALTH)
    {
        if(
hp HEAL MAXHEALTH)
            
set_pev(plrpev_healthMAXHEALTH);
        else 
set_pev(plrpev_healthhp HEAL);
        
emit_sound(plrCHAN_BODYheal_sound1.0ATTN_NORM0PITCH_NORM);
    }
}

stock play_weapon_animation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence);
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player);
    
write_byte(Sequence);
    
write_byte(pev(Playerpev_body));
    
message_end();

__________________

Last edited by OciXCrom; 01-30-2021 at 08:32.
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Vaim
Member
Join Date: Feb 2019
Old 01-30-2021 , 08:29   Re: Return of the knife model Please Help
Reply With Quote #10

Quote:
Originally Posted by OciXCrom View Post
PHP 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 
v_old_knife[33];
new 
p_old_knife[33];
                                              
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_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(idm_flNextAttackTIME_ANIM_HEAL+0.15);

    
pev(idpev_viewmodel2v_old_knife[id], charsmax(v_old_knife[]));
    
pev(idpev_weaponmodel2p_old_knife[id], charsmax(p_old_knife[]));

    
set_pev(idpev_viewmodel2v_injectorX);
    
set_pev(idpev_weaponmodel2p_injectorX);

    
play_weapon_animation(idANIM_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(idpev_viewmodel2v_old_knife[id]);
        
set_pev(idpev_weaponmodel2p_old_knife[id]);
        
set_pdata_float(idm_flNextAttackTIME_DRAW_KNF5);
        
play_weapon_animation(idOLD_KN_DRAW);
        
set_hp(id);
    }
}

public 
fw_Knife_Holstered(weapon)
{
    new 
id get_pdata_cbase(weapon414);
    
    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(plrpev_health);

    if(
hp MAXHEALTH)
    {
        if(
hp HEAL MAXHEALTH)
            
set_pev(plrpev_healthMAXHEALTH);
        else 
set_pev(plrpev_healthhp HEAL);
        
emit_sound(plrCHAN_BODYheal_sound1.0ATTN_NORM0PITCH_NORM);
    }
}

stock play_weapon_animation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence);
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player);
    
write_byte(Sequence);
    
write_byte(pev(Playerpev_body));
    
message_end();

After applying the injector, the returned model is not visible. There are sounds, but no model

https://drive.google.com/file/d/1HzD...ew?usp=sharing
Vaim is offline
Reply



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


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