Parent Directory
|
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 |