Raised This Month: $ Target: $400
 0% 

checkpoint and gocheck


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Zpoke
Senior Member
Join Date: Aug 2009
Location: Sweden
Old 10-23-2009 , 17:35   checkpoint and gocheck
Reply With Quote #1

hello, im trying to make my own Training plugin. but now i need some help with the checkpoint/gocheck code. please HELP!
Zpoke is offline
Hawk552
AMX Mod X Moderator
Join Date: Aug 2005
Old 10-23-2009 , 21:12   Re: checkpoint and gocheck
Reply With Quote #2

Check out uSurf.
__________________
Hawk552 is offline
Send a message via AIM to Hawk552
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 10-24-2009 , 05:12   Re: checkpoint and gocheck
Reply With Quote #3

Light version of the one i use on my server (no gravity bug and no stuck bug) :

PHP Code:
/*    Formatright © 2009, ConnorMcLeod

    Kz CheckPoints is free software;
    you can redistribute it and/or modify it under the terms of the
    GNU General Public License as published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Kz CheckPoints; if not, write to the
    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.
*/

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>

#define VERSION "0.0.5"

new const Float:VEC_DUCK_HULL_MIN[3]    = {-16.0, -16.0, -18.0 }
new const 
Float:VEC_DUCK_HULL_MAX[3]    = { 16.0,  16.0,  18.0 }
new const 
Float:VEC_NULL[3]    = { 0.00.00.0 }

#define MAX_PLAYERS    32

const FL_ONGROUND2   = (FL_ONGROUND FL_PARTIALGROUND FL_INWATER FL_CONVEYOR FL_FLOAT)

new 
Float:g_flCurPosition_Origin[MAX_PLAYERS+1][3]
new 
Float:g_flCurPosition_Angles[MAX_PLAYERS+1][3]

new 
Float:g_flPrevPosition_Origin[MAX_PLAYERS+1][3]
new 
Float:g_flPrevPosition_Angles[MAX_PLAYERS+1][3]

new 
Float:g_flNextCmd[MAX_PLAYERS+1]

public 
plugin_init()
{
    
register_plugin("Kz CheckPoints"VERSION"ConnorMcLeod" )

    
register_saycmd("checkpoint""ClientCommand_CheckPoint")
    
register_saycmd("cp""ClientCommand_CheckPoint")

    
register_saycmd("gocheck""ClientCommand_GoCheck")
    
register_saycmd("gc""ClientCommand_GoCheck")
    
register_saycmd("tp""ClientCommand_GoCheck")

    
register_saycmd("stuck""ClientCommand_Stuck")
}

public 
client_putinserver(id)
{
    for(new 
ii<3i++)
    {
        
g_flCurPosition_Origin[id][i] = 0.0
        g_flCurPosition_Angles
[id][i] = 0.0 _:(i==2)
        
g_flPrevPosition_Origin[id][i] = 0.0
        g_flPrevPosition_Angles
[id][i] = 0.0 _:(i==2// i use Angles[2] to store gravity
    
}
    
g_flNextCmd[id] = 0.0
}

bool:bCheckFlood(idFloat:flDelay 1.0)
{
    static 
Float:flTime
    flTime 
get_gametime()

    if(
g_flNextCmd[id] > flTime)
    {
        return 
true
    
}

    
g_flNextCmd[id] = flTime flDelay
    
return false
}

public 
ClientCommand_Stuck(id)
{
    if(    !
is_user_alive(id)
    || 
bCheckFlood(id)    )
    {
        return 
PLUGIN_HANDLED
    
}

    if(    !
g_flPrevPosition_Origin[id][0]
    &&    !
g_flPrevPosition_Origin[id][1]
    &&    !
g_flPrevPosition_Origin[id][2]    )
    {
        
client_print(idprint_center"No Previous CheckPoint !!")
        return 
PLUGIN_HANDLED
    
}

    for(new 
ii<3i++)
    {
        
g_flCurPosition_Origin[id][i] = g_flPrevPosition_Origin[id][i]
        
g_flCurPosition_Angles[id][i] = g_flPrevPosition_Angles[id][i]
        
g_flPrevPosition_Origin[id][i] = 0.0
    
}

    
g_flNextCmd[id] = get_gametime()
    
ClientCommand_GoCheck(id)

    return 
PLUGIN_HANDLED
}

public 
ClientCommand_CheckPoint(id)
{
    if(    !
is_user_alive(id)
    ||    !(
entity_get_int(idEV_INT_flags) & FL_ONGROUND2)
    ||    
bCheckFlood(id)    )
    {
        return 
PLUGIN_HANDLED
    
}

    for(new 
ii<3i++)
    {
        
g_flPrevPosition_Origin[id][i] = g_flCurPosition_Origin[id][i]
        
g_flPrevPosition_Angles[id][i] = g_flCurPosition_Angles[id][i]
    }

    
entity_get_vector(idEV_VEC_origing_flCurPosition_Origin[id])
    
entity_get_vector(idEV_VEC_v_angleg_flCurPosition_Angles[id])
    
g_flCurPosition_Angles[id][2] = get_user_gravity(id)

    return 
PLUGIN_HANDLED
}

public 
ClientCommand_GoCheck(id)
{
    if(    !
is_user_alive(id)
    ||    
bCheckFlood(id)    )
    {
        return 
PLUGIN_HANDLED
    
}

    if(    !
g_flCurPosition_Origin[id][0]
    &&    !
g_flCurPosition_Origin[id][1]
    &&    !
g_flCurPosition_Origin[id][2]    )
    {
        
client_print(idprint_center"No CheckPoint Set !!")
        return 
PLUGIN_HANDLED
    
}

    
Util_SetOrigin(idg_flCurPosition_Origin[id], g_flCurPosition_Angles[id])

    return 
PLUGIN_HANDLED
}

register_saycmd(saycommand[], function[], flags = -1info[] = ""FlagManager = -1)
{
    new 
temp[64];
    
formatex(temp63"say /%s"saycommand);
    
register_clcmd(temp, function, flagsinfoFlagManager);
    
formatex(temp63"say .%s"saycommand);
    
register_clcmd(temp, function, flagsinfoFlagManager);
    
formatex(temp63"say_team /%s"saycommandFlagManager);
    
register_clcmd(temp, function, flagsinfo);
    
formatex(temp63"say_team .%s"saycommandFlagManager);
    
register_clcmd(temp, function, flagsinfoFlagManager);
    
formatex(temp63".%s"saycommand);
    
register_clcmd(temp, function, flagsinfoFlagManager);
    
formatex(temp63"/%s"saycommand);
    
register_clcmd(temp, function, flagsinfoFlagManager);
}

Util_SetOrigin(idFloat:flOrigin[3], Float:flAngles[3])
{
    
entity_set_int(idEV_INT_flagsentity_get_int(idEV_INT_flags) | FL_DUCKING)
    
engfunc(EngFunc_SetSizeidVEC_DUCK_HULL_MINVEC_DUCK_HULL_MAX)
    
engfunc(EngFunc_SetOriginidflOrigin)

    
entity_set_vector(idEV_VEC_v_angleVEC_NULL)
    
entity_set_vector(idEV_VEC_velocityVEC_NULL)
    
entity_set_vector(idEV_VEC_anglesflAngles)
    
entity_set_vector(idEV_VEC_punchangleVEC_NULL)
    
entity_set_int(idEV_INT_fixangle1)

    
set_user_gravity(idflAngles[2])

    
entity_set_float(idEV_FL_fuser20.0)

__________________
- tired and retired -

- my plugins -

Last edited by ConnorMcLeod; 10-24-2009 at 05:14.
ConnorMcLeod 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 17:40.


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