Raised This Month: $ Target: $400
 0% 

[REQUEST] Recoil stocks in to a plugin?


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 12-27-2007 , 04:44   Re: [REQUEST] Recoil stocks in to a plugin?
Reply With Quote #3

I can't find the post, but here is VEN's method :

PHP Code:
/* 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 
0sizeof 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_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR)

    
unregister_forward(FM_PrecacheEventg_fwid1)

    
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(flagsinvokereventid) {
    if (!(
g_guns_eventids_bitsum & (1<<eventid)) || !(<= 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
(idpev_punchangleFloat:{0.00.00.0})
        return 
FMRES_HANDLED
    
}

    return 
FMRES_IGNORED
}

public 
fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monstersidptr) {
    if (!(
<= 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
(idstartptr)

    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(idpev_v_angledest)
    
engfunc(EngFunc_MakeVectorsdest)
    
global_get(glb_v_forwarddest)
    
xs_vec_mul_scalar(dest9999.0dest)
    
xs_vec_add(startdestdest)
    
engfunc(EngFunc_TraceLinestartdestDONT_IGNORE_MONSTERSidptr)

__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
 



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 11:04.


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