AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   checkpoint and gocheck (https://forums.alliedmods.net/showthread.php?t=107177)

Zpoke 10-23-2009 17:35

checkpoint and gocheck
 
hello, im trying to make my own Training plugin. but now i need some help with the checkpoint/gocheck code. :) please HELP!

Hawk552 10-23-2009 21:12

Re: checkpoint and gocheck
 
Check out uSurf.

ConnorMcLeod 10-24-2009 05:12

Re: checkpoint and gocheck
 
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)




All times are GMT -4. The time now is 17:40.

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