Съгласен съм 1fRankkK ! Може да не съм професионалист на високо ниво като The Red Shoko ама не ми харесва фактът, че той не знае какво искам.
Съгласен съм, че и при положение, че и без пари го изисквам това не трябва да имам големи очаквания, но като специалист, който желае да помогне на хората би трябвало The Red Shoko да ми направи желания плъгин от мен. Аз не искам да ми направи плъгин на световно ниво, а плъгин съставен от 5-6 реда, които трябва да се пренесат в един пакет плъгин пак.
Заяждам се, защото забелязах, че и в плъгина
minigun има този код за no recoil, който споменах по- горе, че ми работи само той идеално.
Ето го и работещия no recoil , който ми работи:
Код за потвърждение: Избери целия код
/* AMX Mod X
* Fix Recoil
*
* (c) Copyright 2007 by VEN
*
* This file is provided as is (no warranties)
*/
// plugin's main information
#define PLUGIN_NAME "Fix Recoil"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"
#include <amxmodx>
#include <fakemeta>
#include <xs>
#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
"events/awp.sc",
"events/g3sg1.sc",
"events/ak47.sc",
"events/scout.sc",
"events/m249.sc",
"events/m4a1.sc",
"events/sg552.sc",
"events/aug.sc",
"events/sg550.sc",
"events/m3.sc",
"events/xm1014.sc",
"events/usp.sc",
"events/mac10.sc",
"events/ump45.sc",
"events/fiveseven.sc",
"events/p90.sc",
"events/deagle.sc",
"events/p228.sc",
"events/glock18.sc",
"events/mp5n.sc",
"events/tmp.sc",
"events/elite_left.sc",
"events/elite_right.sc",
"events/galil.sc",
"events/famas.sc"
}
new g_guns_eventids_bitsum
public plugin_precache() {
g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)
}
public fwPrecacheEvent(type, const name[]) {
for (new i = 0; i < sizeof g_guns_events; ++i) {
if (equal(g_guns_events[i], name)) {
g_guns_eventids_bitsum |= (1<<get_orig_retval())
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
unregister_forward(FM_PrecacheEvent, g_fwid, 1)
register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
register_forward(FM_TraceLine, "fwTraceLine")
g_max_clients = global_get(glb_maxClients)
}
public fwPlaybackEvent(flags, invoker, eventid) {
if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients))
return FMRES_IGNORED
g_fix_punchangle[invoker] = true
return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
if (g_fix_punchangle[id]) {
g_fix_punchangle[id] = false
set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
return FMRES_HANDLED
}
return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, ptr) {
if (!(1 <= id <= g_max_clients))
return FMRES_IGNORED
if (!g_normal_trace[id]) {
g_normal_trace[id] = ptr
return FMRES_HANDLED
}
if (ptr == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id))
return FMRES_IGNORED
fix_recoil_trace(id, start, ptr)
return FMRES_SUPERCEDE
}
public client_connect(id) {
g_normal_trace[id] = 0
}
fix_recoil_trace(id, const Float:start[], ptr) {
static Float:dest[3]
pev(id, pev_v_angle, dest)
engfunc(EngFunc_MakeVectors, dest)
global_get(glb_v_forward, dest)
xs_vec_mul_scalar(dest, 9999.0, dest)
xs_vec_add(start, dest, dest)
engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, ptr)
}
И искам да се редактира кодът да бъде направен само за Famas оръжие и да бъде пренесен в пакета плъгина:
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
#include <gunxpmod>
#include <engine>
#include <cstrike>
new PLUGIN_NAME[] = "UNLOCK : AK06"
new PLUGIN_AUTHOR[] = "xbatista"
new PLUGIN_VERSION[] = "1.0"
new const WEAPON_V_MDL[] = "models/gunxpmod/v_famas.mdl";
#define WEAPON_CSW CSW_FAMAS
new const weapon_n[] = "weapon_famas";
const m_pPlayer = 41;
#define IsPlayer(%1) ( 1 <= %1 <= g_maxplayers )
new g_hasZoom[33];
new damage_weapon, weapon_recoil;
new g_maxplayers;
new bool:g_Weapon[33];
new Float:cl_pushangle[33][3];
new szClip, szAmmo;
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_gxm_item("Famas packet", "+Aim +Power +Scope +Zoom", 1400)
damage_weapon = register_cvar("gxm_damage_fam","5.6"); // damage multiplier
weapon_recoil = register_cvar( "fam_recoil", "0.9" ); // weapon recoil
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");
RegisterHam( Ham_Weapon_PrimaryAttack, weapon_n, "Fwd_AttackSpeedPost" , 1 );
RegisterHam(Ham_Weapon_PrimaryAttack, weapon_n, "Fwd_AttackSpeedPre");
RegisterHam(Ham_TakeDamage, "player", "Ham_DamageWeapon");
register_forward( FM_CmdStart, "Fwd_CmdStart" );
g_maxplayers = get_maxplayers();
}
public gxm_item_enabled(id)
{
g_Weapon[id] = true;
}
public client_connect(id)
{
g_Weapon[id] = false;
}
public plugin_precache()
{
engfunc(EngFunc_PrecacheModel, WEAPON_V_MDL);
}
public Fwd_AttackSpeedPre(Ent)
{
new id = pev(Ent,pev_owner);
entity_get_vector( id, EV_VEC_punchangle, cl_pushangle[id]);
}
public Fwd_AttackSpeedPost( const Entity )
{
static id ; id = get_pdata_cbase(Entity, m_pPlayer, 4)
if (g_Weapon[id] && IsPlayer(id) )
{
new Float:push[3];
entity_get_vector( id, EV_VEC_punchangle, cl_pushangle[id]);
xs_vec_sub( push, cl_pushangle[id], push);
xs_vec_mul_scalar( push, get_pcvar_float( weapon_recoil ), push);
xs_vec_add( push, cl_pushangle[id], push);
entity_set_vector( id, EV_VEC_punchangle, push);
}
}
public Ham_DamageWeapon(id, inflictor, attacker, Float:damage, damagebits)
{
if ( !IsPlayer(attacker) || !g_Weapon[attacker] )
return HAM_IGNORED;
new weapon2 = get_user_weapon(attacker, _, _);
if( weapon2 == WEAPON_CSW)
{
SetHamParamFloat(4, damage * get_pcvar_float(damage_weapon));
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Event_CurWeapon(id)
{
if ( !g_Weapon[id] || !is_user_alive(id) )
return PLUGIN_CONTINUE;
new Gun = read_data(2)
if( Gun == WEAPON_CSW)
{
entity_set_string(id, EV_SZ_viewmodel, WEAPON_V_MDL)
}
return PLUGIN_CONTINUE;
}
public Fwd_CmdStart( id, uc_handle, seed )
{
if( !is_user_alive( id ) || !g_Weapon[id] )
return FMRES_IGNORED;
if( ( get_uc( uc_handle, UC_Buttons ) & IN_USE ) && !( pev( id, pev_oldbuttons ) & IN_USE ) )
{
new szWeapID = get_user_weapon( id, szClip, szAmmo )
if( szWeapID == WEAPON_CSW && !g_hasZoom[ id ])
{
g_hasZoom[ id ] = true
cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 )
}
else
{ if( g_hasZoom[ id ] )
{
g_hasZoom[ id ] = false
cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
}
}
return FMRES_HANDLED;
}
return FMRES_IGNORED;
}
без да нарушат кодовете и всички магии или ъпгрейти на този пакет да работят по - старо му само, че да е с точния мерник т.е. горния no recoil.
Много моля, който може и е клафициран за тази работа да го направи. Ще се реванширам по- някакъв начин! Някак ще се разберем.