[Half-Life AMXX] / advanced_tracers.sma Repository:
ViewVC logotype

Annotation of /advanced_tracers.sma

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (view) (download)

1 : ian 1
2 :     // Ivan's Advanced Tracer Plugin 0.25 by Ivan <-g-s-ivan@web.de>
3 :     // Basing on the original Tracer Script by OLO
4 :    
5 :     /*
6 :     Changelog from 0.1 to 0.25
7 :    
8 :     * Added check for CS, now when firing tracers will go to the hitpoint, not the aimpoint
9 :     * Added Adminclientcommands for setting Tracers, amx_settracers & amx_setamplitude
10 :     * Renamed CVAR amx_ln to amx_tracers_ln
11 :     * Lightning Tracers won't start in the middle of your screen anymore (now they come from the lower end - isn't that nasty to look at)
12 :     * Now the last shot in mag makes tracers too.
13 :     * Some Speed/CPU usage tweaks.
14 :     * Better compatibilty with other Mods.
15 :    
16 :     */
17 :    
18 :     // VERY VERY CPU optimized version.
19 :    
20 :     #include <amxmod>
21 :    
22 :     #define SHOTGUN_AIMING 32
23 :    
24 :     new light;
25 :    
26 :     new tracers, ln, is_cs = 0;
27 :    
28 :     lightning(vec1[3],vec2[3])
29 :     {
30 :     //Lightning
31 :     message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
32 :     write_byte( 0 );
33 :     write_coord(vec1[0]);
34 :     write_coord(vec1[1]);
35 :     write_coord(vec1[2]);
36 :     write_coord(vec2[0]);
37 :     write_coord(vec2[1]);
38 :     write_coord(vec2[2]);
39 :     write_short( light );
40 :     write_byte( 1 ); // framestart
41 :     write_byte( 5 ); // framerate
42 :     write_byte( 2 ); // life
43 :     write_byte( 20 ); // width
44 :     //write_byte( 30 ); // noise
45 :     write_byte(ln);
46 :     write_byte( 200 ); // r, g, b
47 :     write_byte( 200 ); // r, g, b
48 :     write_byte( 200 ); // r, g, b
49 :     write_byte( 200 ); // brightness
50 :     write_byte( 200 ); // speed
51 :     message_end();
52 :    
53 :     }
54 :    
55 :     tracer(vec1[3],vec2[3]) {
56 :     message_begin(MSG_PAS, SVC_TEMPENTITY,vec1 );
57 :     write_byte( 6 ) /* TE_TRACER - see commo/const.h in HLSDK */
58 :     write_coord(vec1[0]);
59 :     write_coord(vec1[1]);
60 :     write_coord(vec1[2]);
61 :     write_coord(vec2[0]);
62 :     write_coord(vec2[1]);
63 :     write_coord(vec2[2]);
64 :     message_end();
65 :     }
66 :    
67 :     draw(vec1[3],vec2[3]) {
68 :     if(tracers==1) {
69 :     tracer(vec1,vec2);
70 :     } else {
71 :     lightning(vec1,vec2);
72 :     }
73 :     }
74 :    
75 :     new users_ammo[33];
76 :     new users_w[33]
77 :    
78 :     public drawtracer(id)
79 :     {
80 :     if(tracers==0) {
81 :     return PLUGIN_HANDLED;
82 :     }
83 :     new ammo = read_data(3), weapon = read_data(2); // I read it only once to save CPU time.
84 :     if(users_ammo[id]>ammo && ammo>=0 && users_w[id]==weapon) {
85 :    
86 :     new vec1[3], vec2[3];
87 :     if(tracers == 2) {
88 :     get_user_origin(id,vec1);
89 :     vec1[2]+=8;
90 :     // For lightnings we do it a special way, 'cause lightnings from eye positon look shit
91 :     } else {
92 :     get_user_origin(id,vec1,1);
93 :     }
94 :     if(is_cs==1) {
95 :     get_user_origin(id,vec2,4);
96 :     } else {
97 :     get_user_origin(id,vec2,3);
98 :     }
99 :     if(is_cs == 1 && (weapon==CSW_M3 || weapon==CSW_XM1014)) { // Shotguns in CS
100 :     draw(vec1,vec2);
101 :    
102 :     vec2[0]+=SHOTGUN_AIMING;
103 :     draw(vec1,vec2);
104 :     vec2[1]+=SHOTGUN_AIMING;
105 :     draw(vec1,vec2);
106 :     vec2[2]+=SHOTGUN_AIMING;
107 :     draw(vec1,vec2);
108 :     vec2[0]-=SHOTGUN_AIMING; // Repeated substraction is faster then multiplication !
109 :     vec2[0]-=SHOTGUN_AIMING; // Repeated substraction is faster then multiplication !
110 :     draw(vec1,vec2);
111 :     vec2[1]-=SHOTGUN_AIMING; // Repeated substraction is faster then multiplication !
112 :     vec2[1]-=SHOTGUN_AIMING; // Repeated substraction is faster then multiplication !
113 :     draw(vec1,vec2);
114 :     vec2[2]-=SHOTGUN_AIMING; // Repeated substraction is faster then multiplication !
115 :     vec2[2]-=SHOTGUN_AIMING; // Repeated substraction is faster then multiplication !
116 :     draw(vec1,vec2);
117 :     } else {
118 :     draw(vec1,vec2);
119 :     }
120 :     users_ammo[id]=ammo;
121 :     } else {
122 :     users_w[id]=weapon;
123 :     users_ammo[id]=ammo;
124 :     }
125 :     return PLUGIN_HANDLED;
126 :     }
127 :    
128 :    
129 :     public checktracervars() {
130 :     tracers = get_cvar_num("amx_tracers");
131 :     ln = get_cvar_num("amx_tracers_ln");
132 :     }
133 :    
134 :     public amx_settracers(id)
135 :     {
136 :     new arg1[32];
137 :     new nt;
138 :     read_argv(1,arg1,32);
139 :     nt = str_to_num(arg1);
140 :     if(nt == 1) {
141 :     client_print(id,print_console,"[AMX] Advanced Tracers> Tracer mode set to 1, Normal Tracers.");
142 :     } else if(nt == 2) {
143 :     client_print(id,print_console,"[AMX] Advanced Tracers> Tracer mode set to 2, Lightning Tracers.");
144 :     } else if(nt==0 && equal(arg1,"0")) {
145 :     client_print(id,print_console,"[AMX] Advanced Tracers> Tracer mode set to 0, No Tracers.");
146 :     } else {
147 :     client_print(id,print_console,"[AMX] Advanced Tracers> Please type 0, 1 or 2!");
148 :     return PLUGIN_HANDLED;
149 :     }
150 :     tracers = nt;
151 :     set_cvar_num("amx_tracers",tracers);
152 :     return PLUGIN_HANDLED;
153 :     }
154 :    
155 :     public amx_setamplitude(id)
156 :     {
157 :     new arg1[32];
158 :     new na;
159 :     read_argv(1,arg1,32);
160 :     na = str_to_num(arg1);
161 :     if(na>=0) {
162 :     client_print(id,print_console,"[AMX] Advanced Tracers> Amplitude for Lightning Tracers set to %d.",na);
163 :     ln = na;
164 :     set_cvar_num("amx_tracers_ln",ln);
165 :     }
166 :     return PLUGIN_HANDLED;
167 :     }
168 :    
169 :     public plugin_precache()
170 :     {
171 :     light = precache_model("sprites/lgtning.spr");
172 :     return PLUGIN_CONTINUE;
173 :     }
174 :    
175 :     public plugin_init()
176 :     {
177 :     new modname[32];
178 :     register_plugin("Advanced Tracers","0.25","-g-s-ivan@web.de");
179 :     register_event("CurWeapon","drawtracer","be","1=1"); //,"3>=0");
180 :     register_cvar("amx_tracers","1")
181 :     register_cvar("amx_tracers_ln","30");
182 :     register_concmd("amx_settracers","amx_settracers",ADMIN_LEVEL_A,"<0|1|2> Set tracer mode.");
183 :     register_concmd("amx_setamplitude","amx_setamplitude",ADMIN_LEVEL_A,"<noise> Noise for lightning tracers.");
184 :     set_task(5.0,"checktracervars",0,"",0,"b");
185 :     checktracervars();
186 :     get_modname(modname,32);
187 :     if(equal(modname,"cstrike")) is_cs = 1;
188 :     return PLUGIN_CONTINUE;
189 :     }

Contact
ViewVC Help
Powered by ViewVC 1.0.4