82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "features.h"
 | |
| #include "../include/sdk.h"
 | |
| #include "../include/globals.h"
 | |
| #include "../include/util.h"
 | |
| #include "../include/game_detection.h"
 | |
| #include "../include/settings.h"
 | |
| 
 | |
| void custom_crosshair(void) {
 | |
|     if (!g_settings.custom_crosshair)
 | |
|         return;
 | |
| 
 | |
|     /* Get window size, and then the center. */
 | |
|     int mx = game_info->m_width / 2;
 | |
|     int my = game_info->m_height / 2;
 | |
| 
 | |
|     /* The real length is sqrt(2 * (len^2)) */
 | |
|     const int len   = 5;
 | |
|     const int gap   = 1;
 | |
|     const float w   = 1;
 | |
|     const rgb_t col = { 255, 255, 255 };
 | |
| 
 | |
|     /*
 | |
|      *   1\ /2
 | |
|      *     X
 | |
|      *   3/ \4
 | |
|      */
 | |
|     gl_drawline(mx - gap, my - gap, mx - gap - len, my - gap - len, w, col);
 | |
|     gl_drawline(mx + gap, my - gap, mx + gap + len, my - gap - len, w, col);
 | |
|     gl_drawline(mx - gap, my + gap, mx - gap - len, my + gap + len, w, col);
 | |
|     gl_drawline(mx + gap, my + gap, mx + gap + len, my + gap + len, w, col);
 | |
| }
 | |
| 
 | |
| weapon_data_t g_currentWeapon;
 | |
| static double lastTracerTime = 0;
 | |
|     
 | |
| static bool attackReleased = true;
 | |
| 
 | |
| void bullet_tracers(usercmd_t* cmd) {
 | |
|     if (!g_settings.tracers || !is_alive(localplayer))
 | |
|         return;
 | |
| 
 | |
|     if (IsCS16()) {
 | |
|         if (cmd->buttons & IN_ATTACK) {
 | |
|             if (!attackReleased) {
 | |
|                 return;
 | |
|             }
 | |
|             attackReleased = false;
 | |
|         } else {
 | |
|             attackReleased = true;
 | |
|             return;
 | |
|         }
 | |
|         if (!can_shoot()) {
 | |
|             return;
 | |
|         }
 | |
|     } 
 | |
|     else {
 | |
|         if (!(cmd->buttons & IN_ATTACK) || !can_shoot()) {
 | |
|             return;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /* Get player eye pos, start of tracer */
 | |
|     vec3_t view_height;
 | |
|     i_engine->pEventAPI->EV_LocalPlayerViewheight(view_height);
 | |
|     vec3_t local_eyes = vec_add(localplayer->origin, view_height);
 | |
|     
 | |
|     /* Get forward vector from viewangles */
 | |
|     vec3_t fwd;
 | |
|     i_engine->pfnAngleVectors(cmd->viewangles, fwd, NULL, NULL);
 | |
| 
 | |
|     const int tracer_len = 3000;
 | |
|     vec3_t end;
 | |
|     end.x = local_eyes.x + fwd.x * tracer_len;
 | |
|     end.y = local_eyes.y + fwd.y * tracer_len;
 | |
|     end.z = local_eyes.z + fwd.z * tracer_len;
 | |
| 
 | |
|     /* NOTE: Change tracer settings here */
 | |
|     const float w    = 0.8;
 | |
|     const float time = 2;
 | |
|     draw_tracer(local_eyes, end, (rgb_t){ 66, 165, 245 }, 1, w, time);
 | |
| }
 |