RSSy MYGO.pl Opublikowano Styczeń 16, 2021 o 22:16 RSSy Udostępnij Opublikowano Styczeń 16, 2021 o 22:16 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi