3 XavioR's Q3F/ETF Entity recognition
\r
6 // q3f_forts seems to work almost perfectly --
\r
7 //any other map will probably need a small to large amount of entity editing;
\r
8 //still, this code does do a lot of work for you so give it a look :)
\r
10 //.string allowteams;
\r
12 .string active_all_sound;
\r
13 .string carried_message;
\r
14 .string active_all_message;
\r
15 .string carried_sound;
\r
20 //.vector orig_origin;
\r
22 // Q3F/ETF Maps dont have info_tfdetects, so this calls it.
\r
23 void () DoTFDetect =
\r
27 self.display_item_status1 = 1;
\r
28 self.n_s_c = "ÅÎÅÍÙ flag: carried by";
\r
29 self.display_item_status2 = 2;
\r
31 //self.classname = "info_tfdetect";
\r
33 self.t_s_h = "ÙÏÕÒ flag: base.";
\r
34 //self.origin = '-80 -60 108';
\r
35 self.t_s_c = "ÙÏÕÒ flag: carried by";
\r
36 self.n_s_h = "ÅÎÅÍÙ flag: base.";
\r
37 self.b_t = "Amnesia\n
\9d\9e\9f CHOOSE YOUR TEAM
\9d\9e\9f\n\n
\90..
\85 BLUE TEAM\n
\90..
\85 ÒÅÄ TEAM \n\n
\90\97.
\85 AUTO TEAM\n";
\r
38 self.b_b = "TeamFortress";
\r
39 self.n_s_m = "ÅÎÅÍÙ flag: down.";
\r
40 self.t_s_m = "ÙÏÕÒ flag: down.";
\r
45 void () PossiblyDoTFDetect =
\r
50 newmis.classname = "info_tfdetect";
\r
51 newmis.nextthink = time;
\r
52 newmis.think = DoTFDetect;
\r
56 // Converts item to FLAG
\r
57 void (float tno) ConvertToFlag =
\r
59 PossiblyDoTFDetect();
\r
60 local string droppedmsg;
\r
62 if (self.allowteams == "red")
\r
64 // if (redflagexists == 1)
\r
68 self.n_b = " took the Blue Æìáç!\n";
\r
69 droppedmsg = " Dropped the Blue flag\n";
\r
70 self.netname = "Red Flag";
\r
74 self.goal_no = 200; // Temp Goal Number, can be overridden by a "goal" def in the entity
\r
76 if (self.allowteams == "blue")
\r
78 // if (blueflagexists == 1)
\r
82 self.n_b = " took the Red Æìáç!\n";
\r
83 droppedmsg = " Dropped the Red flag\n";
\r
84 self.netname = "Blue Flag";
\r
88 self.goal_no = 100; // Temp Goal Number, can be overridden by a "goal" def in the entity
\r
90 self.classname = "item_tfgoal";
\r
91 self.message = self.carried_message;
\r
93 self.d_t = "the ÅÎÅÍÙ ìïóô your flag!\n"; // The enemy stole your flag msg
\r
94 self.b_o = "Your flag has been stolen!\n";
\r
96 self.noise = self.carried_sound;
\r
97 // self.noise3 = self.inactive_all_message;
\r
98 self.noise3 = "Your flag has returned to base!\n";
\r
99 // self.noise4 = self.inactive_all_message;
\r
100 self.noise4 = "The enemy flag has returned to base!\n";
\r
102 // self.impulse = 9;
\r
103 self.items = 133701;
\r
105 self.mdl = self.model;
\r
107 // self.mdl = "models/flag.md3";
\r
110 self.delay = self.wait;
\r
112 self.d_n_n = droppedmsg;
\r
113 self.d_n_t = droppedmsg;
\r
122 // Simulate animation for converted tfgoal backpack
\r
123 // Very unorthodox -- i cant find out why self.owner.velocity has no effect
\r
124 void () PackFloat =
\r
126 self.owner.angles_y = self.owner.angles_y + 10;
\r
128 if (self.floating == -17)
\r
132 if (self.floating == 0)
\r
136 if (self.floating > 0)
\r
138 self.owner.origin_z = self.owner.origin_z + 3;
\r
139 self.floating = self.floating - 1;
\r
141 if (self.floating == 0)
\r
143 self.floating = -9;
\r
145 if (self.floating < 0)
\r
147 self.owner.origin_z = self.owner.origin_z - 3;
\r
148 self.floating = self.floating + 1;
\r
150 self.owner.movetype = 9;
\r
152 // self.nextthink = (time + 0.500000);
\r
153 self.nextthink = time + 0.01;
\r
154 self.think = PackFloat;
\r
157 // This is the function that will convert an item to a backpack
\r
158 //(happens with any item that has a "give" value).
\r
159 void () ConvertToBackPack =
\r
161 PossiblyDoTFDetect();
\r
162 if (self.give == "")
\r
165 // self.classname = "i_t_g";
\r
166 if (self.allowteams == "red")
\r
171 if (self.allowteams == "blue")
\r
177 self.message = "Resupplied!\n";
\r
178 if (self.carried_message != "")
\r
179 self.message = self.carried_message;
\r
180 if (self.active_all_message != "")
\r
181 self.message = self.active_all_message;
\r
183 self.mdl = self.model;
\r
184 self.noise = self.active_all_sound;
\r
188 self.flags = self.flags & FL_ITEM & FL_WEAPON; // makes it turn around -- much more bandwidth efficient
\r
190 /* self.orig_origin = self.origin; // old pack float code
\r
191 newmis = spawn(); // thx savagex for making me aware of cl_itembobheight
\r
192 newmis.floating = -17;
\r
193 newmis.owner = self;
\r
194 newmis.think = PackFloat;
\r
195 newmis.nextthink = (time + 1.000000);*/
\r
197 // If no ammo amount is specified in the entity, it will default to these values.
\r
198 // The reason for this is because q3f/etf uses "give" commands to add ammo, and I can't
\r
199 //convert those easily :(
\r
200 if (!(self.ammo_nails || self.ammo_cells || self.ammo_rockets || self.health))
\r
203 self.ammo_nails = 50;
\r
204 self.ammo_shells = 20;
\r
205 self.ammo_nails = 100;
\r
206 self.ammo_rockets = 15;
\r
208 self.armorvalue = 100;
\r
209 self.no_grenades_1 = 2;
\r
210 self.no_grenades_2 = 1;
\r
215 // Converts Q3F/ETF Team Spawn points to tf-recognized ones.
\r
216 /*void () info_player_start =
\r
218 if (self.allowteams == "blue")
\r
220 if (self.allowteams == "red")
\r
225 void() info_notnull =
\r
227 if (self.give != "")
\r
229 ConvertToBackPack ();
\r
231 if (self.groupname == "blueflag")
\r
233 if (self.groupname == "redflag")
\r
237 void() func_goalinfo =
\r
239 if (self.give != "")
\r
241 ConvertToBackPack ();
\r
243 if (self.groupname == "blueflag")
\r
245 if (self.groupname == "redflag")
\r
249 void() func_goalitem =
\r
251 if (self.give != "")
\r
253 ConvertToBackPack ();
\r
255 if (self.groupname == "blueflag" && self.gameindex != 3) {
\r
258 if (self.groupname == "redflag" && self.gameindex != 3) {
\r
263 // Converts trigger_multiples to Flag Goals (the point(s) where the flag is capped).
\r
264 //This works for q3f_forts and machse and a couple other ones.
\r
265 void(float tno) ConvertToGoal =
\r
267 if (!self.teamscore)
\r
272 self.axhitme = 200;
\r
273 self.items_allowed = 200;
\r
278 self.axhitme = 100;
\r
279 self.items_allowed = 100;
\r
282 self.is_converted_goal = "yes"; // used with spawn point finder, no connnection with the actual conversion
\r
284 self.goal_result = 2;
\r
285 self.noise = self.active_all_sound;
\r
286 self.frags = self.teamscore;
\r
287 self.count = self.teamscore;
\r
288 self.classname = "i_t_g";
\r
296 void() CheckIfQ3FTrigger = // Handles trigger_multiples from Q3F/ETF -- called from trigger_multiple
\r
298 if (self.holding == "blueflag")
\r
300 if (self.holding == "redflag")
\r
302 if (self.holding == "oneflag" && self.allowteams == "blue")
\r
304 if (self.holding == "oneflag" && self.allowteams == "red")
\r