Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <colorchat>
- #include <fakemeta>
- #include <cstrike>
- #pragma semicolon 1
- #define INFO_ONE 1
- #define INFO_ZERO 0
- #define NSTRAFES 14
- new pluginstatus;
- new strafes[33];
- new pre_type[33][32];
- new strafe_stat_sync[33][NSTRAFES][2];
- new bool:StrafeStat[33];
- new bool:fallDown[33];
- new bool:possible_lj_script[33][2];
- new bool:gHasColorChat[33];
- new bool:gHasSpeed[33];
- new bool:gHasLjStats[33];
- new bool:gInAir[33];
- new bool:cjumped[33];
- new bool:doubleducked[33];
- new bool:cducked[33];
- new bool:induck[33];
- new bool:OnGround[33];
- new bool:turning_right[33];
- new bool:turning_left[33];
- new bool:strafing_aw[33];
- new bool:strafing_sd[33];
- new Float:strafe_stat_time[33][NSTRAFES];
- new Float:strafe_stat_speed[33][NSTRAFES][2];
- new Float:TempSpeed[33];
- new Float:old_angle1[33];
- new Float:angle[3];
- new Float:vFramePos[33][2][3];
- new Float:vFrameSpeed[33][2][3];
- new Float:vDuckedAt[33][3];
- new Float:vJumpedAt[33][3];
- new Float:vJumpedAt2[3];
- new Float:xDistance;
- new Float:yDistance;
- new Float:fDistance;
- new Float:fDistance1;
- new Float:fDistance2;
- new Float:rDistance[2];
- new Float:rLandPos[3];
- new Float:vOrigin[3];
- new Float:vCurrentOrigin[33][3];
- new Float:vOldOrigin[33][3];
- new Float:vOldOrigin2[33];
- new Float:vTraceEnd[3];
- new Float:fMaxAirSpeed[33];
- new Float:fMaxGroundSpeed[33];
- new Float:vVelocity[3];
- new Float:oldvVelocity[33][3];
- new Float:fSpeed;
- new Float:gSpeed;
- new Float:OldSpeed[33];
- new Float:frame2time;
- new Float:jumptime[33];
- new Float:lasttime[33];
- new kz_ljs_enabled;
- new kz_good_lj;
- new kz_pro_lj;
- new kz_leet_lj;
- new kz_min_lj;
- new kz_max_lj;
- new kz_cj_dif;
- new kz_ljs_connectenabler;
- new kz_ljs_viscmds;
- new kz_ljs_tops;
- new edgefriction;
- new mp_footsteps;
- new sv_cheats;
- new sv_gravity;
- new sv_airaccelerate;
- new sv_stepsize;
- new sv_maxvelocity;
- public plugin_init()
- {
- register_plugin("LjStats", "5.2", "Fatalis & Numb & pcheLa");
- register_dictionary("common.txt");
- register_forward(FM_Touch, "fwdTouch", 1);
- register_forward(FM_PlayerPreThink, "fwdPlayerPreThink", 0);
- register_forward(FM_PlayerPostThink, "fwdPlayerPostThink", 0);
- register_forward(FM_StartFrame, "fwdStartFrame", 0);
- kz_ljs_enabled = register_cvar("kz_ljs_enabled", "1"); // enables/disables the plugin
- kz_good_lj = register_cvar("kz_good_lj", "240.0"); // good longjumps
- kz_pro_lj = register_cvar("kz_pro_lj", "245.0"); // professional longjumps
- kz_leet_lj = register_cvar("kz_leet_lj", "250.0"); // leet longjump
- kz_min_lj = register_cvar("kz_min_lj", "215.0"); // minimal longjump
- kz_max_lj = register_cvar("kz_max_lj", "260.0"); // maximal longjump
- kz_cj_dif = register_cvar("kz_cj_dif", "10.0"); // difrence between lj and cj
- kz_ljs_connectenabler = register_cvar("kz_ljs_connectenabler", "ab"); // What is enabled at connect (0=nothing, a=colorchat, b=ljstats, c=speed)
- kz_ljs_viscmds = register_cvar("kz_ljs_viscmds", "1"); // Do you want say commands to be apeard on the chat?
- kz_ljs_tops = register_cvar("kz_ljs_tops", "1"); // LongJump top (0=Nothing, 1=ColorChat, 2=top, 3=top+ColorChat)
- edgefriction = get_cvar_pointer("edgefriction");
- mp_footsteps = get_cvar_pointer("mp_footsteps");
- sv_cheats = get_cvar_pointer("sv_cheats");
- sv_gravity = get_cvar_pointer("sv_gravity");
- sv_airaccelerate = get_cvar_pointer("sv_airaccelerate");
- sv_stepsize = get_cvar_pointer("sv_stepsize");
- sv_maxvelocity = get_cvar_pointer("sv_maxvelocity");
- register_clcmd("say /colorchat", "cmdColorChat");
- register_clcmd("say /speed", "cmdSpeed");
- }
- public gocheck(id)
- {
- gInAir[id] = false;
- cjumped[id] = false;
- doubleducked[id] = false;
- }
- public ddend(id)
- doubleducked[id] = false;
- public testcjstart(id)
- cducked[id] = false;
- public client_putinserver(id)
- {
- if( task_exists(id+234490, 0) )
- remove_task(id+234490, 0);
- set_task(0.1, "check_prestrafe_type", id+234490, "", 0, "b", 0);
- static connectenabler[6];
- get_pcvar_string(kz_ljs_connectenabler, connectenabler, 5);
- format(connectenabler, 5, "_%s", connectenabler);
- if( contain(connectenabler, "a") > 0 )
- gHasColorChat[id] = true;
- else
- gHasColorChat[id] = false;
- if( contain(connectenabler, "b") > 0 )
- gHasLjStats[id] = true;
- else
- gHasLjStats[id] = false;
- if( contain(connectenabler, "c") > 0 )
- {
- gHasSpeed[id] = true;
- set_task(0.1, "tskSpeed", id+334490, "", 0, "b", 0);
- }
- else
- gHasSpeed[id] = false;
- StrafeStat[id] = true;
- turning_right[id] = false;
- turning_left[id] = false;
- strafing_aw[id] = false;
- strafing_sd[id] = false;
- cducked[id] = false;
- cjumped[id] = false;
- doubleducked[id]=false;
- induck[id] = false;
- OnGround[id] = false;
- possible_lj_script[id][0] = false;
- possible_lj_script[id][1] = false;
- }
- public client_disconnect(id)
- {
- if( task_exists(id+234490, 0) )
- remove_task(id+234490, 0);
- StrafeStat[id] = true;
- gHasColorChat[id] = false;
- gHasLjStats[id] = false;
- gHasSpeed[id] = false;
- turning_right[id] = false;
- turning_left[id] = false;
- strafing_aw[id] = false;
- strafing_sd[id] = false;
- OnGround[id] = false;
- cducked[id] = false;
- doubleducked[id] = false;
- cjumped[id] = false;
- induck[id] = false;
- possible_lj_script[id][0] = false;
- possible_lj_script[id][1] = false;
- if( task_exists(id+334490, 0) )
- remove_task(id+334490, 0);
- if( task_exists(id+434490, 0) )
- remove_task(id+434490, 0);
- }
- public check_prestrafe_type(id)
- {
- id -= 234490;
- if( is_user_alive(id) )
- {
- static flags, buttons, moving;
- flags = pev(id, pev_flags);
- buttons = pev(id, pev_button);
- if( flags&FL_ONGROUND && gInAir[id] && get_gametime() > (jumptime[id]+0.1) )
- fwdPlayerPreThink(id);
- if( (buttons&IN_FORWARD || buttons&IN_BACK || buttons&IN_MOVERIGHT || buttons&IN_MOVELEFT) && !(buttons&IN_DUCK) )
- moving = INFO_ONE;
- else
- moving = INFO_ZERO;
- if( moving && !(doubleducked[id]) && !(cjumped[id]) && flags&FL_ONGROUND && (turning_right[id] || turning_left[id]) )
- {
- if( buttons&IN_FORWARD && buttons&IN_BACK )
- moving = INFO_ZERO;
- if( buttons&IN_MOVELEFT && buttons&IN_MOVERIGHT )
- moving = INFO_ZERO;
- if( !(moving) )
- pre_type[id] = "key error";
- }
- else
- {
- moving = 0;
- }
- if( moving )
- {
- if( buttons&IN_FORWARD )
- {
- if( buttons&IN_MOVERIGHT )
- {
- if( turning_right[id] )
- pre_type[id] = "right";
- else
- pre_type[id] = "right sw";
- }
- else if( buttons&IN_MOVELEFT )
- {
- if( turning_left[id] )
- pre_type[id] = "left";
- else
- pre_type[id] = "left sw";
- }
- else
- {
- if( turning_right[id] )
- pre_type[id] = "right (1 key)";
- else
- pre_type[id] = "left (1 key)";
- }
- }
- else if( buttons&IN_BACK )
- {
- if( buttons&IN_MOVERIGHT )
- {
- if( turning_left[id] )
- pre_type[id] = "bw right";
- else
- pre_type[id] = "bw right sw";
- }
- else if( buttons&IN_MOVELEFT )
- {
- if( turning_right[id] )
- pre_type[id] = "bw left";
- else
- pre_type[id] = "bw left sw";
- }
- else
- {
- if( turning_left[id] )
- pre_type[id] = "bw right (1 key)";
- else
- pre_type[id] = "bw left (1 key)";
- }
- }
- else if( buttons&IN_MOVERIGHT )
- {
- if( turning_right[id] )
- pre_type[id] = "bw right sw (1 key)";
- else
- pre_type[id] = "left sw (1 key)";
- }
- else if( buttons&IN_MOVELEFT )
- {
- if( turning_left[id] )
- pre_type[id] = "bw left sw (1 key)";
- else
- pre_type[id] = "right sw (1 key)";
- }
- else
- pre_type[id] = "unknown error";
- }
- }
- }
- public tskFps(id)
- {
- id-=434490;
- client_cmd(id, "developer 0;fps_max 101");
- }
- public cmdColorChat(id)
- {
- if( get_pcvar_num(kz_ljs_enabled) && !gHasColorChat[id] )
- {
- gHasColorChat[id] = true;
- client_print(id, print_chat, "[LjStats] ColorChat enabled. To disable, enter /colorchat.");
- }
- else if( get_pcvar_num(kz_ljs_enabled) )
- {
- gHasColorChat[id] = false;
- client_print(id, print_chat, "[LjStats] Colorchat is off. To enable, type /colorchat.");
- }
- return ( (get_pcvar_num(kz_ljs_viscmds))?PLUGIN_CONTINUE:PLUGIN_HANDLED );
- }
- public cmdSpeed(id)
- {
- if( get_pcvar_num(kz_ljs_enabled) && !gHasSpeed[id] )
- {
- gHasSpeed[id] = true;
- set_task(0.1, "tskSpeed", id+334490, "", 0, "b", 0);
- client_print(id, print_chat, "[LjStats] Speedometer enabled. To disable, enter /speed.");
- }
- else if( get_pcvar_num(kz_ljs_enabled) )
- {
- gHasSpeed[id] = false;
- if( task_exists(id+334490, 0) )
- remove_task(id+334490, 0);
- client_print(id, print_chat, "[LjStats] Speedometer is off. To enable, type /speed.");
- }
- return ( (get_pcvar_num(kz_ljs_viscmds))?PLUGIN_CONTINUE:PLUGIN_HANDLED );
- }
- public tskSpeed(taskid)
- {
- taskid-=334490;
- static alive, aliveflags, spectatedplayer, specflags;
- alive = is_user_alive(taskid);
- aliveflags = pev(taskid, pev_flags);
- if( (alive > 0) && get_pcvar_num(kz_ljs_enabled) )
- {
- if( alive )
- {
- pev(taskid, pev_velocity, vVelocity);
- if( aliveflags&FL_ONGROUND && aliveflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- else
- {
- pev(spectatedplayer, pev_velocity, vVelocity);
- if( specflags&FL_ONGROUND && specflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- set_hudmessage(255, 255, 255, -1.0, 0.65, 0, 0.0, 0.2, 0.0, 0.0, 3);
- if( vVelocity[2] != 0 )
- vVelocity[2]-=vVelocity[2];
- gSpeed = vector_length(vVelocity);
- if( alive )
- {
- pev(taskid, pev_velocity, vVelocity);
- if( aliveflags&FL_ONGROUND && aliveflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- else
- {
- pev(spectatedplayer, pev_velocity, vVelocity);
- if( specflags&FL_ONGROUND && specflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- show_hudmessage(taskid, "%d units/second^n%d velocity", floatround(vector_length(vVelocity), floatround_floor), floatround(gSpeed, floatround_floor));
- }
- }
- public fwdStartFrame()
- {
- static id, spectatedplayer, alive, aliveflags, specflags;
- for( id = INFO_ONE; id < 33; id++ )
- {
- if( pev_valid(id) && pluginstatus )
- {
- alive = is_user_alive(id);
- aliveflags = pev(id, pev_flags);
- if( alive )
- {
- if( alive )
- {
- pev(id, pev_velocity, vVelocity);
- if( aliveflags&FL_ONGROUND && aliveflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- else
- {
- pev(spectatedplayer, pev_velocity, vVelocity);
- if( specflags&FL_ONGROUND && specflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- if( gHasSpeed[id] )
- {
- if( task_exists(id+334490, 0) )
- remove_task(id+334490, 0);
- if( vVelocity[2] != 0 )
- vVelocity[2]-=vVelocity[2];
- gSpeed = vector_length(vVelocity);
- if( alive )
- {
- pev(id, pev_velocity, vVelocity);
- if( aliveflags&FL_ONGROUND && aliveflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- else
- {
- pev(spectatedplayer, pev_velocity, vVelocity);
- if( specflags&FL_ONGROUND && specflags&FL_INWATER )
- vVelocity[2]-=vVelocity[2];
- }
- show_hudmessage(id, "%d units/second^n%d velocity", floatround(vector_length(vVelocity), floatround_floor), floatround(gSpeed, floatround_floor));
- }
- else if( gHasSpeed[id]
- && !task_exists(id+334490, 0) )
- {
- set_task(0.1, "tskSpeed", id+334490, "", 0, "b", 0);
- }
- }
- }
- }
- return FMRES_IGNORED;
- }
- public fwdPlayerPreThink(id)
- {
- if( is_user_alive(id) && get_pcvar_num(kz_ljs_enabled) )
- {
- if(cs_get_user_team(id) == CS_TEAM_T)
- {
- static flags, buttons, oldbuttons;
- flags = pev(id, pev_flags);
- buttons = pev(id, pev_button);
- oldbuttons = pev(id, pev_oldbuttons);
- static Float:fGravity;
- pev(id, pev_gravity, fGravity);
- pev(id, pev_angles, angle);
- old_angle1[id] = angle[1];
- if( gInAir[id] == true && !(flags&FL_ONGROUND) )
- {
- static i;
- for( i = INFO_ZERO; i < 2; i++ )
- {
- if( (vFramePos[id][i][0] == 0
- && vFramePos[id][i][1] == 0
- && vFramePos[id][i][2] == 0
- && vFrameSpeed[id][i][0] == 0
- && vFrameSpeed[id][i][1] == 0
- && vFrameSpeed[id][i][2] == 0)
- || (i == 1) )
- {
- pev(id, pev_origin, vOrigin);
- vFramePos[id][i][0] = vOrigin[0];
- vFramePos[id][i][1] = vOrigin[1];
- vFramePos[id][i][2] = vOrigin[2];
- pev(id, pev_velocity, vVelocity);
- vFrameSpeed[id][i][0] = vVelocity[0];
- vFrameSpeed[id][i][1] = vVelocity[1];
- vFrameSpeed[id][i][2] = vVelocity[2];
- i=2;
- }
- }
- }
- pev(id, pev_velocity, vVelocity);
- if( flags&FL_ONGROUND && flags&FL_INWATER )
- vVelocity[2] = 0.0;
- fSpeed = vector_length(vVelocity);
- pev(id, pev_origin, vOrigin);
- fDistance = get_distance_f(vOldOrigin[id], vOrigin);
- pev(id, pev_origin, vOldOrigin[id]);
- pev(id, pev_velocity, vVelocity);
- if( vVelocity[2] != 0 )
- vVelocity[2]-=vVelocity[2];
- if( vector_length(vVelocity) > (fMaxGroundSpeed[id] + 105.0)
- || pev(id, pev_movetype) != MOVETYPE_WALK
- || pev(id, pev_maxspeed) > 250.0
- || fGravity != 1.0
- || get_pcvar_num(edgefriction) != 2
- || get_pcvar_num(mp_footsteps) != 1
- || get_pcvar_num(sv_cheats) != 0
- || get_pcvar_num(sv_gravity) != 800
- || get_pcvar_num(sv_airaccelerate) != 100
- || get_pcvar_num(sv_stepsize) != 18
- || get_pcvar_num(sv_maxvelocity) != 2000
- || pev(id, pev_waterlevel) >= 2
- || fDistance > 20 )
- {
- gocheck(id);
- return FMRES_IGNORED;
- }
- if( !(flags&FL_ONGROUND) )
- lasttime[id] = get_gametime();
- if( gInAir[id])
- {
- if (((vOrigin[2] +18.0 - vOldOrigin2[id]) < 0)
- && !(flags&FL_ONGROUND) )
- {
- fallDown[id] = true;
- if( is_in_duck(id) )
- {
- vOrigin[2]-=18.0;
- vOldOrigin2[id]-=18.0;
- }
- static Float:koeff1;
- koeff1 = (vOldOrigin2[id]-vCurrentOrigin[id][2])/(vOrigin[2]-vCurrentOrigin[id][2]);
- vCurrentOrigin[id][2] = vOldOrigin2[id];
- vCurrentOrigin[id][0] = koeff1*(vOrigin[0]-vCurrentOrigin[id][0])+vCurrentOrigin[id][0];
- vCurrentOrigin[id][1] = koeff1*(vOrigin[1]-vCurrentOrigin[id][1])+vCurrentOrigin[id][1];
- }
- else
- {
- fallDown[id] = false;
- vCurrentOrigin[id] = vOrigin;
- }
- pev(id, pev_velocity, vVelocity);
- if( vVelocity[2] != 0 )
- vVelocity[2]-=vVelocity[2];
- gSpeed = vector_length(vVelocity);
- if( gSpeed > fMaxAirSpeed[id] )
- {
- if (strafes[id] < NSTRAFES)
- {
- strafe_stat_speed[id][strafes[id]][0] += gSpeed - fMaxAirSpeed[id];
- }
- fMaxAirSpeed[id] = gSpeed;
- }
- if ((gSpeed < TempSpeed[id]) && (strafes[id] < NSTRAFES))
- {
- strafe_stat_speed[id][strafes[id]][1] += TempSpeed[id] - gSpeed;
- }
- TempSpeed[id] = gSpeed;
- }
- if( buttons&IN_JUMP
- && !(oldbuttons&IN_JUMP)
- && flags&FL_ONGROUND
- && gInAir[id] == false )
- {
- set_task(0.8,"gocheck", id);
- jumptime[id] = get_gametime();
- gInAir[id] = true;
- pev(id, pev_origin, vOrigin);
- vOldOrigin2[id] = vOrigin[2];
- fallDown[id] = false;
- fMaxGroundSpeed[id] = fSpeed;
- OldSpeed[id] = fSpeed;
- fMaxAirSpeed[id] = fSpeed;
- pev(id, pev_velocity, oldvVelocity[id]);
- oldvVelocity[id][2]-=oldvVelocity[id][2];
- vJumpedAt[id][0] = vOrigin[0];
- vJumpedAt[id][1] = vOrigin[1];
- vJumpedAt[id][2] = vOrigin[2];
- if( doubleducked[id] && vOrigin[2] == vDuckedAt[id][2] )
- cjumped[id] = true;
- else
- cjumped[id] = false;
- doubleducked[id] = false;
- strafes[id] = INFO_ZERO;
- TempSpeed[id] = 0.0;
- static i;
- for( i = INFO_ZERO; i < NSTRAFES; i++ )
- {
- strafe_stat_speed[id][i][0] = 0.0;
- strafe_stat_speed[id][i][1] = 0.0;
- strafe_stat_sync[id][i][0] = INFO_ZERO;
- strafe_stat_sync[id][i][1] = INFO_ZERO;
- strafe_stat_time[id][i] = 0.0;
- }
- turning_right[id] = false;
- turning_left[id] = false;
- strafing_aw[id] = false;
- strafing_sd[id] = false;
- for( i = INFO_ZERO; i < 2; i++ )
- {
- vFramePos[id][i][0] = 0.0;
- vFramePos[id][i][1] = 0.0;
- vFramePos[id][i][2] = 0.0;
- vFrameSpeed[id][i][0] = 0.0;
- vFrameSpeed[id][i][1] = 0.0;
- vFrameSpeed[id][i][2] = 0.0;
- }
- }
- else if( ( fallDown[id] || flags&FL_ONGROUND ) && gInAir[id])
- {
- set_task(0.5,"gocheck", id);
- gInAir[id] = false;
- pev(id, pev_origin, vOrigin);
- if (fallDown[id] == true)
- {
- vOrigin[0]= vCurrentOrigin[id][0];
- vOrigin[1]= vCurrentOrigin[id][1];
- vOrigin[2]= vCurrentOrigin[id][2];
- }
- fDistance1 = get_distance_f(vJumpedAt[id], vOrigin)+32.0625;
- rLandPos[2] = vFrameSpeed[id][0][2] * vFrameSpeed[id][0][2] + (2 * get_pcvar_float(sv_gravity) * (vFramePos[id][0][2] - vOrigin[2]));
- rDistance[0] = (floatsqroot(rLandPos[2]) * -1) - vFrameSpeed[id][1][2];
- rDistance[1] = get_pcvar_float(sv_gravity)*-1;
- frame2time = floatdiv(rDistance[0], rDistance[1]);
- if( vFrameSpeed[id][1][0] < 0 )
- vFrameSpeed[id][1][0] = vFrameSpeed[id][1][0]*-1;
- rDistance[0] = frame2time*vFrameSpeed[id][1][0];
- if( vFrameSpeed[id][1][1] < 0 )
- vFrameSpeed[id][1][1] = vFrameSpeed[id][1][1]*-1;
- rDistance[1] = frame2time*vFrameSpeed[id][1][1];
- if( vFramePos[id][1][0] < vOrigin[0] )
- rLandPos[0] = vFramePos[id][1][0] + rDistance[0];
- else
- rLandPos[0] = vFramePos[id][1][0] - rDistance[0];
- if( vFramePos[id][1][1] < vOrigin[1] )
- rLandPos[1] = vFramePos[id][1][1] + rDistance[1];
- else
- rLandPos[1] = vFramePos[id][1][1] - rDistance[1];
- if( is_in_duck(id) )
- vOrigin[2]+=18.0;
- rLandPos[2] = vOrigin[2];
- frame2time += (lasttime[id]-jumptime[id]);
- if( vOrigin[2] == vJumpedAt[id][2] )
- {
- if( is_in_duck(id) && !(frame2time > 0.71 && frame2time < 0.77) )
- vOrigin[2] = vOrigin[2]*-1;
- else if( !(is_in_duck(id)) && !(frame2time > 0.65 && frame2time < 0.70) )
- vOrigin[2] = vOrigin[2]*-1;
- }
- fDistance2 = get_distance_f(vJumpedAt[id], rLandPos)+32.0625;
- if( fDistance1 > fDistance2 )
- {
- fDistance = fDistance2;
- vOrigin[0] = rLandPos[0];
- vOrigin[1] = rLandPos[1];
- }
- else
- fDistance = fDistance1;
- vJumpedAt2[2] = vJumpedAt[id][2]-34.0;
- vTraceEnd[2] = vOrigin[2]-34.0;
- vJumpedAt2[0] = vJumpedAt[id][0];
- vTraceEnd[0] = vOrigin[0];
- vJumpedAt2[1] = vJumpedAt[id][1]-vJumpedAt[id][1];
- vTraceEnd[1] = vOrigin[1]-vOrigin[1];
- xDistance = get_distance_f(vJumpedAt2, vTraceEnd);
- vJumpedAt2[0] = vJumpedAt[id][0]-vJumpedAt[id][0];
- vTraceEnd[0] = vOrigin[0]-vOrigin[0];
- vJumpedAt2[1] = vJumpedAt[id][1];
- vTraceEnd[1] = vOrigin[1];
- yDistance = get_distance_f(vJumpedAt2, vTraceEnd);
- if( vJumpedAt[id][0] > vOrigin[0] )
- {
- vJumpedAt2[0] = vJumpedAt[id][0]+(xDistance*16.03125/fDistance);
- vTraceEnd[0] = vOrigin[0]-(xDistance*16.03125/fDistance);
- }
- else if( vJumpedAt[id][0] < vOrigin[0] )
- {
- vJumpedAt2[0] = vJumpedAt[id][0]-(xDistance*16.03125/fDistance);
- vTraceEnd[0] = vOrigin[0]+(xDistance*16.03125/fDistance);
- }
- else
- {
- vJumpedAt2[0] = vJumpedAt[id][0];
- vTraceEnd[0] = vOrigin[0];
- }
- if( vJumpedAt[id][1] > vOrigin[1] )
- {
- vJumpedAt2[1] = vJumpedAt[id][1]+(yDistance*16.03125/fDistance);
- vTraceEnd[1] = vOrigin[1]-(yDistance*16.03125/fDistance);
- }
- else if( vJumpedAt[id][1] < vOrigin[1] )
- {
- vJumpedAt2[1] = vJumpedAt[id][1]-(yDistance*16.03125/fDistance);
- vTraceEnd[1] = vOrigin[1]+(yDistance*16.03125/fDistance);
- }
- else
- {
- vJumpedAt2[1] = vJumpedAt[id][1];
- vTraceEnd[1] = vOrigin[1];
- }
- if( ((vJumpedAt[id][2] == vOrigin[2]) || fallDown[id] )
- && fDistance > get_pcvar_float(kz_min_lj)
- && fMaxGroundSpeed[id] < 279
- && cjumped[id] == false
- && !(fDistance > get_pcvar_float(kz_max_lj)) )
- {
- static sync;
- static strLen, jj;
- static strMess[36*NSTRAFES];
- static goodSyncTemp, badSyncTemp;
- strMess[0] = '^0';
- strLen = INFO_ZERO;
- sync = INFO_ZERO;
- badSyncTemp = INFO_ZERO;
- goodSyncTemp = INFO_ZERO;
- static Float:time;
- static Float:Fulltime;
- Fulltime = lasttime[id]-jumptime[id];
- if(strafes[id] < NSTRAFES)
- {
- strafe_stat_time[id][0] = jumptime[id];
- strafe_stat_time[id][strafes[id]] = lasttime[id];
- for(jj = INFO_ONE;jj <= strafes[id]; jj++)
- {
- time = ((strafe_stat_time[id][jj] - strafe_stat_time[id][jj-1])*100) / (Fulltime);
- if ((strafe_stat_sync[id][jj][0]+strafe_stat_sync[id][jj][1]) > 0)
- {
- sync = (strafe_stat_sync[id][jj][0] * 100)/(strafe_stat_sync[id][jj][0]+strafe_stat_sync[id][jj][1]); //using like a buffer
- }
- else
- {
- sync = 0;
- }
- strLen += format(strMess[strLen],(30*NSTRAFES)-strLen-1, " %2d %4.3f %4.3f %3.0f%% %d%%^n", jj, strafe_stat_speed[id][jj][0], strafe_stat_speed[id][jj][1], time, sync);
- goodSyncTemp += strafe_stat_sync[id][jj][0];
- badSyncTemp += strafe_stat_sync[id][jj][1];
- }
- }
- //Standart Sync
- if( goodSyncTemp > 0 )
- sync = (goodSyncTemp*100/(goodSyncTemp+badSyncTemp));
- else
- sync = INFO_ZERO;
- static i, sound;
- if ( fallDown[id] || pev(id, pev_maxspeed) != 250.0)
- {
- set_hudmessage(255, 0, 109, -1.0, 0.72, 0, 0.0, 5.0, 0.1, 0.1, 2);
- }
- else
- {
- set_hudmessage(0, 127, 255, -1.0, 0.72, 0, 0.0, 5.0, 0.1, 0.1, 2);
- }
- static strdist[128];
- num_to_word(floatround(fDistance, floatround_floor), strdist, 127);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if(i == id && gHasLjStats[i])
- {
- show_hudmessage(i, "Distance: %f^nMaxSpeed: %f (%.3f)^nPreStrafe: %f^nStrafes: %d^nSync: %d%%", fDistance, fMaxAirSpeed[id], fMaxAirSpeed[id] - fMaxGroundSpeed[id], fMaxGroundSpeed[id], strafes[id], sync );
- client_print(i, print_console, "Distance: %f MaxSpeed: %f (%.3f) PreStrafe: %f Strafes: %d Sync: %d", fDistance, fMaxAirSpeed[id], fMaxAirSpeed[id] - fMaxGroundSpeed[id], fMaxGroundSpeed[id], strafes[id], sync );
- if ( StrafeStat[id] && strLen !=0 )
- {
- if ( fallDown[id] || pev(id, pev_maxspeed) != 250.0)
- {
- set_hudmessage(255, 0, 109, 0.70, 0.35, 0, 0.0, 5.0, 0.1, 0.1, 1);
- }
- else
- {
- set_hudmessage(0, 127, 255, 0.70, 0.35, 0, 0.0, 5.0, 0.1, 0.1, 1);
- }
- show_hudmessage(i,"%s",strMess);
- static strMessHalf[40];
- for(jj=INFO_ONE; (jj <= strafes[id]) && (jj < NSTRAFES);jj++)
- {
- strtok(strMess,strMessHalf,40,strMess,40*NSTRAFES,'^n');
- replace(strMessHalf,40,"^n","");
- client_print(i, print_console, "%s", strMessHalf);
- }
- }
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- {
- if( possible_lj_script[id][0] && possible_lj_script[id][1] )
- client_print(i, print_center, "No ljtop access (possible lj script)");
- else
- client_print(i, print_center, "No ljtop access (possible %s script)", (possible_lj_script[id][0])?"prestrafe":"strafe");
- }
- if( sound == 2 && gHasColorChat[i] && !(fallDown[id]) && pev(id, pev_maxspeed) == 250.0)
- client_cmd(i, "speak ^"vox/%s uniform(e30) it south(e15)^"", strdist);
- }
- }
- if (!(fallDown[id]) && pev(id, pev_maxspeed) == 250.0)
- {
- static Float:max_lj, Float:leet_lj, Float:pro_lj, Float:good_lj, ljtop;
- max_lj = get_pcvar_float(kz_max_lj);
- leet_lj = get_pcvar_float(kz_leet_lj);
- pro_lj = get_pcvar_float(kz_pro_lj);
- good_lj = get_pcvar_float(kz_good_lj);
- ljtop = get_pcvar_num(kz_ljs_tops);
- if( fDistance < max_lj
- && !(fDistance < leet_lj)
- && !(0 > leet_lj)
- && (ljtop == 1
- || ljtop == 3) )
- {
- static name[33];
- get_user_name(id, name, 31);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- break;
- if( i == id || (pev_valid(i) && is_user_connected(i) && gHasColorChat[i]) )
- ColorChat(i, GREEN, "[LjStats]^x03 %s^x01 jumped^x04 %.3f^x01 [LJ] Strefy:^x04 %d^x01 Syc:^x04 %d%%", name, fDistance, strafes[id], sync);
- }
- }
- else if( fDistance < max_lj
- && !(fDistance < pro_lj)
- && !(0 > pro_lj)
- && (ljtop == 1
- || ljtop == 3) )
- {
- static name[33];
- get_user_name(id, name, 31);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- break;
- if( i == id || (pev_valid(i) && is_user_connected(i) && gHasColorChat[i]) )
- ColorChat(i, GREEN, "[LjStats]^x03 %s^x01 jumped^x04 %.3f^x01 [LJ] Strefy:^x04 %d^x01 Syc:^x04 %d%%", name, fDistance, strafes[id], sync);
- }
- }
- else if( fDistance < max_lj
- && !(fDistance < good_lj)
- && !(0 > good_lj)
- && (ljtop == 1
- || ljtop == 3) )
- {
- static name[33];
- get_user_name(id, name, 31);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- break;
- if( i == id || (pev_valid(i) && is_user_connected(i) && gHasColorChat[i]) )
- ColorChat(i, GREEN, "[LjStats]^x03 %s^x01 jumped^x04 %.3f^x01 [LJ] Strefy:^x04 %d^x01 Syc:^x04 %d%%", name, fDistance, strafes[id], sync);
- }
- }
- }
- }
- else if( ((vJumpedAt[id][2] == vOrigin[2]) || fallDown[id] )
- && fDistance > get_pcvar_float(kz_min_lj)
- && fMaxGroundSpeed[id] < 303
- && cjumped[id] == true
- && !(fDistance > (get_pcvar_float(kz_max_lj) + 18)) )
- {
- static sync;
- static strLen, jj;
- static strMess[36*NSTRAFES];
- static goodSyncTemp, badSyncTemp;
- strMess[0] = '^0';
- strLen = INFO_ZERO;
- sync = INFO_ZERO;
- badSyncTemp = INFO_ZERO;
- goodSyncTemp = INFO_ZERO;
- static Float:time;
- static Float:Fulltime;
- Fulltime = lasttime[id]-jumptime[id];
- if(strafes[id] < NSTRAFES)
- {
- strafe_stat_time[id][0] = jumptime[id];
- strafe_stat_time[id][strafes[id]] = lasttime[id];
- for(jj = INFO_ONE;jj <= strafes[id]; jj++)
- {
- time = ((strafe_stat_time[id][jj] - strafe_stat_time[id][jj-1])*100) / (Fulltime);
- if ((strafe_stat_sync[id][jj][0]+strafe_stat_sync[id][jj][1]) > 0)
- {
- sync = (strafe_stat_sync[id][jj][0] * 100)/(strafe_stat_sync[id][jj][0]+strafe_stat_sync[id][jj][1]);
- }
- else
- {
- sync = 0;
- }
- strLen += format(strMess[strLen],(30*NSTRAFES)-strLen-1, " %2d %4.3f %4.3f %3.0f%% %d%%^n", jj, strafe_stat_speed[id][jj][0], strafe_stat_speed[id][jj][1], time, sync);
- goodSyncTemp += strafe_stat_sync[id][jj][0];
- badSyncTemp += strafe_stat_sync[id][jj][1];
- }
- }
- //Standart Sync
- if( goodSyncTemp > 0 )
- sync = (goodSyncTemp*100/(goodSyncTemp+badSyncTemp));
- else
- sync = INFO_ZERO;
- static i, sound;
- if ( fallDown[id] || pev(id, pev_maxspeed) != 250.0)
- {
- set_hudmessage(255, 0, 109, -1.0, 0.72, 0, 0.0, 5.0, 0.1, 0.1, 2);
- }
- else
- {
- set_hudmessage(0, 127, 255, -1.0, 0.72, 0, 0.0, 5.0, 0.1, 0.1, 2);
- }
- static strdist[128];
- num_to_word(floatround(fDistance, floatround_floor), strdist, 127);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if(i == id && gHasLjStats[i])
- {
- show_hudmessage(i, "Distance: %f^nMaxSpeed: %f (%.3f)^nPreStrafe: %f^nStrafes: %d^nSync: %d%%", fDistance, fMaxAirSpeed[id], fMaxAirSpeed[id] - fMaxGroundSpeed[id], fMaxGroundSpeed[id], strafes[id], sync );
- client_print(i, print_console, "Distance: %f MaxSpeed: %f (%.3f) PreStrafe: %f Strafes: %d Sync: %d", fDistance, fMaxAirSpeed[id], fMaxAirSpeed[id] - fMaxGroundSpeed[id], fMaxGroundSpeed[id], strafes[id], sync );
- if ( StrafeStat[id] && strLen !=0 )
- {
- if ( fallDown[id] || pev(id, pev_maxspeed) != 250.0)
- {
- set_hudmessage(255, 0, 109, 0.70, 0.35, 0, 0.0, 5.0, 0.1, 0.1, 1);
- }
- else
- {
- set_hudmessage(0, 127, 255, 0.70, 0.35, 0, 0.0, 5.0, 0.1, 0.1, 1);
- }
- show_hudmessage(i,"%s",strMess);
- static strMessHalf[40];
- for(jj=INFO_ONE; (jj <= strafes[id]) && (jj < NSTRAFES);jj++)
- {
- strtok(strMess,strMessHalf,40,strMess,40*NSTRAFES,'^n');
- replace(strMessHalf,40,"^n","");
- client_print(i, print_console, "%s", strMessHalf);
- }
- }
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- {
- if( possible_lj_script[id][0] && possible_lj_script[id][1] )
- client_print(i, print_center, "No ljtop access (possible cj script)");
- else
- client_print(i, print_center, "No ljtop access (possible %s script)", (possible_lj_script[id][0])?"prestrafe":"strafe");
- }
- if( sound == 2 && gHasColorChat[i] && !(fallDown[id]) && pev(id, pev_maxspeed) == 250.0)
- client_cmd(i, "speak ^"vox/%s uniform(e30) it south(e15)^"", strdist);
- }
- }
- if (!(fallDown[id]) && pev(id, pev_maxspeed) == 250.0)
- {
- static Float:cj_dif, Float:max_cj, Float:leet_cj, Float:pro_cj, Float:good_cj, ljtop;
- cj_dif = get_pcvar_float(kz_cj_dif);
- max_cj = get_pcvar_float(kz_max_lj) + 18;
- leet_cj = get_pcvar_float(kz_leet_lj) + cj_dif;
- pro_cj = get_pcvar_float(kz_pro_lj) + cj_dif;
- good_cj = get_pcvar_float(kz_good_lj) + cj_dif;
- ljtop = get_pcvar_num(kz_ljs_tops);
- if( fDistance < max_cj
- && !(fDistance < leet_cj)
- && !(cj_dif > leet_cj)
- && (ljtop == 1
- || ljtop == 3) )
- {
- static name[33];
- get_user_name(id, name, 31);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- break;
- if( i == id || (pev_valid(i) && is_user_connected(i) && gHasColorChat[i]) )
- ColorChat(i, GREEN, "[LjStats]^x03 %s^x01 skoczyl^x04 %.3f^x01 [CJ] Strefy:^x04 %d^x01 Syc:^x04 %d%%", name, fDistance, strafes[id], sync);
- }
- }
- else if( fDistance < max_cj
- && !(fDistance < pro_cj)
- && !(cj_dif > pro_cj)
- && (ljtop == 1
- || ljtop == 3) )
- {
- static name[33];
- get_user_name(id, name, 31);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- break;
- if( i == id || (pev_valid(i) && is_user_connected(i) && gHasColorChat[i]) )
- ColorChat(i, GREEN, "[LjStats]^x03 %s^x01 skoczyl^x04 %.3f^x01 [CJ] Strefy:^x04 %d^x01 Syc:^x04 %d%%", name, fDistance, strafes[id], sync);
- }
- }
- else if( fDistance < max_cj
- && !(fDistance < good_cj)
- && !(cj_dif > good_cj)
- && (ljtop == 1
- || ljtop == 3) )
- {
- static name[33];
- get_user_name(id, name, 31);
- for( i = INFO_ONE; i < 33; i++ )
- {
- if( possible_lj_script[id][0] || possible_lj_script[id][1] )
- break;
- if( i == id || (pev_valid(i) && is_user_connected(i) && gHasColorChat[i]) )
- ColorChat(i, GREEN, "[LjStats]^x03 %s^x01 skoczyl^x04 %.3f^x01 [CJ] Strefy:^x04 %d^x01 Syc:^x04 %d%%", name, fDistance, strafes[id], sync);
- }
- }
- }
- }
- fMaxAirSpeed[id] = 0.0;
- fMaxGroundSpeed[id] = 250.0;
- cjumped[id] = false;
- gInAir[id] = false;
- }
- else if( flags&FL_ONGROUND
- && gInAir[id] == false )
- {
- pev(id, pev_velocity, vVelocity);
- vVelocity[2]-=vVelocity[2];
- if( vector_length(vVelocity) >= 279
- && doubleducked[id] == false )
- set_task(0.5,"gocheck", id);
- gInAir[id] = false;
- fMaxAirSpeed[id] = 0.0;
- fMaxGroundSpeed[id] = 250.0;
- cjumped[id] = false;
- }
- if( flags&FL_ONGROUND )
- {
- static ClassName[32];
- pev(pev(id, pev_groundentity), pev_classname, ClassName, 32);
- if( equal(ClassName, "func_train") || equal(ClassName, "func_door") || equal(ClassName, "func_door_rotating") || equal(ClassName, "func_conveyor") )
- {
- gocheck(id);
- set_task(0.4,"gocheck", id);
- }
- if( OnGround[id] == false )
- {
- pev(id, pev_origin, vOrigin);
- if( doubleducked[id] == false
- && !(cjumped[id] == true
- && buttons&IN_JUMP
- && !(oldbuttons&IN_JUMP)) )
- set_task(0.4,"gocheck", id);
- else if( doubleducked[id] == true
- && vOrigin[2] != vDuckedAt[id][2] )
- set_task(0.5,"gocheck", id);
- OnGround[id] = true;
- }
- }
- if( buttons&IN_DUCK
- && flags&FL_ONGROUND
- && gInAir[id] == false )
- {
- if( induck[id] == false )
- {
- cducked[id] = true;
- induck[id] = true;
- set_task(0.1,"testcjstart", id);
- pev(id, pev_origin, vOrigin);
- vDuckedAt[id][0] = vOrigin[0];
- vDuckedAt[id][1] = vOrigin[1];
- vDuckedAt[id][2] = vOrigin[2];
- }
- }
- else if( oldbuttons&IN_DUCK )
- {
- induck[id] = false;
- if( cducked[id] == true && !is_in_duck(id) )
- {
- set_task(0.3,"ddend", id);
- doubleducked[id] = true;
- cducked[id] = false;
- }
- }
- if( !(flags&FL_ONGROUND) )
- OnGround[id] = false;
- }
- }
- return FMRES_IGNORED;
- }
- public fwdPlayerPostThink(id)
- {
- if( is_user_alive(id) && get_pcvar_num(kz_ljs_enabled) )
- {
- static buttons, flags;
- buttons = pev(id, pev_button);
- flags = pev(id, pev_flags);
- if( flags&FL_ONGROUND
- && (gInAir[id] == true
- || OnGround[id] == false) )
- fwdPlayerPreThink(id);
- pev(id, pev_angles, angle);
- if( old_angle1[id] > angle[1] )
- {
- turning_left[id] = false;
- turning_right[id] = true;
- }
- else if( old_angle1[id] < angle[1] )
- {
- turning_left[id] = true;
- turning_right[id] = false;
- }
- else
- {
- turning_left[id] = false;
- turning_right[id] = false;
- }
- if( strafing_aw[id] == false
- && (buttons&IN_MOVELEFT)
- && (turning_left[id] == true || turning_right[id] == true )
- && !(buttons&IN_MOVERIGHT || buttons&IN_BACK) )
- {
- strafing_aw[id] = true;
- strafing_sd[id] = false;
- if(strafes[id] < NSTRAFES)
- strafe_stat_time[id][strafes[id]] = get_gametime();
- strafes[id] += INFO_ONE;
- }
- else if( strafing_sd[id] == false
- && (buttons&IN_MOVERIGHT)
- && (turning_left[id] == true || turning_right[id] == true )
- && !(buttons&IN_MOVELEFT || buttons&IN_FORWARD) )
- {
- strafing_aw[id] = false;
- strafing_sd[id] = true;
- if(strafes[id] < NSTRAFES)
- strafe_stat_time[id][strafes[id]] = get_gametime();
- strafes[id] += INFO_ONE;
- }
- pev(id, pev_velocity, vVelocity);
- vVelocity[2] = 0.0;
- fSpeed = vector_length(vVelocity);
- if( buttons&IN_MOVERIGHT
- || buttons&IN_MOVELEFT
- || buttons&IN_FORWARD
- || buttons&IN_BACK )
- {
- if(strafes[id] < NSTRAFES)
- {
- if( fSpeed > OldSpeed[id])
- strafe_stat_sync[id][strafes[id]][0] += INFO_ONE;
- else
- strafe_stat_sync[id][strafes[id]][1] += INFO_ONE;
- }
- }
- OldSpeed[id] = fSpeed;
- if( buttons&IN_RIGHT
- || buttons&IN_LEFT )
- {
- if( flags&FL_ONGROUND )
- {
- possible_lj_script[id][1] = false;
- if( fSpeed > 250 )
- {
- if( task_exists(id+534490) )
- remove_task(id+534490);
- possible_lj_script[id][0] = true;
- }
- }
- else if( gInAir[id] )
- possible_lj_script[id][1] = true;
- }
- else if( flags&FL_ONGROUND )
- {
- possible_lj_script[id][1] = false;
- if( !task_exists(id+534490) && possible_lj_script[id][0] )
- set_task(1.5, "isnt_prestrafe_cheating", id+534490);
- }
- }
- }
- public isnt_prestrafe_cheating(id)
- possible_lj_script[id-534490][0] = false;
- public fwdTouch(ent, id)
- {
- static ClassName[32];
- if( pev_valid(ent) )
- {
- pev(ent, pev_classname, ClassName, 31);
- }
- static ClassName2[32];
- if( pev_valid(id) )
- {
- pev(id, pev_classname, ClassName2, 31);
- }
- if( equal(ClassName2, "player") )
- {
- if( pev(id, pev_groundentity) == ent && (gInAir[id] || !OnGround[id]) )
- {
- if( pev(id, pev_flags)&FL_ONGROUND )
- {
- if( get_gametime() > (jumptime[id]+0.1) )
- fwdPlayerPreThink(id);
- }
- }
- if( equal(ClassName, "func_train") || equal(ClassName, "func_door") || equal(ClassName, "func_door_rotating") || equal(ClassName, "func_conveyor") )
- {
- gocheck(id);
- set_task(0.4,"gocheck", id);
- }
- }
- }
- stock is_in_duck(player)
- {
- if( !pev_valid(player) )
- return 0;
- static Float:absmin[3], Float:absmax[3];
- pev(player, pev_absmin, absmin);
- pev(player, pev_absmax, absmax);
- absmin[2]+=64.0;
- if( absmin[2] < absmax[2] )
- return 0;
- return 1;
- }
- /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
- *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement